@appius-fr/apx 2.6.2 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/APX.mjs +2 -0
  2. package/README.md +226 -203
  3. package/dist/2ab50e700c8fbddb45e0.svg +10 -0
  4. package/dist/2e967d8dd752e0bed703.svg +10 -0
  5. package/dist/5ddaeefe5dfbc8e09652.svg +7 -0
  6. package/dist/6dc2907ba3bbb232601d.svg +10 -0
  7. package/dist/6e1e61dfca176a885b8d.svg +3 -0
  8. package/dist/6f3a0a27a260bb2c221b.svg +9 -0
  9. package/dist/8b07a8bf719a38262b7d.svg +10 -0
  10. package/dist/APX.dev.mjs +1167 -227
  11. package/dist/APX.mjs +1 -1
  12. package/dist/APX.prod.mjs +1 -1
  13. package/dist/APX.standalone.js +1119 -75
  14. package/dist/APX.standalone.js.map +1 -1
  15. package/dist/bdfa755a1cdb872368c7.svg +3 -0
  16. package/dist/c9da177f7663f9fcd023.svg +10 -0
  17. package/dist/ce9ef5fceb78e17e68c9.svg +8 -0
  18. package/dist/ed5af5163957b04bc6cc.svg +7 -0
  19. package/modules/listen/README.md +242 -235
  20. package/modules/listen/listen.mjs +1 -3
  21. package/modules/scrollableTable/CHANGELOG.md +37 -0
  22. package/modules/scrollableTable/README.md +108 -0
  23. package/modules/scrollableTable/css/scrollableTable.css +67 -0
  24. package/modules/scrollableTable/scrollableTable.mjs +577 -0
  25. package/modules/toast/README.md +186 -153
  26. package/modules/tristate/CHANGELOG.md +34 -0
  27. package/modules/tristate/README.md +157 -94
  28. package/modules/tristate/assets/tristate-checked.svg +3 -0
  29. package/modules/tristate/assets/tristate-cross.svg +10 -0
  30. package/modules/tristate/assets/tristate-crossed.svg +3 -0
  31. package/modules/tristate/assets/tristate-indeterminate-dash.svg +9 -0
  32. package/modules/tristate/assets/tristate-tick.svg +10 -0
  33. package/modules/tristate/assets/tristate-unchecked.svg +7 -0
  34. package/modules/tristate/css/tristate.css +91 -24
  35. package/modules/tristate/tristate.mjs +292 -171
  36. package/package.json +5 -1
@@ -172,6 +172,100 @@ h2.APX-dialog-title{
172
172
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
173
173
 
174
174
 
175
+ /***/ }),
176
+
177
+ /***/ "./node_modules/css-loader/dist/cjs.js!./modules/scrollableTable/css/scrollableTable.css":
178
+ /*!***********************************************************************************************!*\
179
+ !*** ./node_modules/css-loader/dist/cjs.js!./modules/scrollableTable/css/scrollableTable.css ***!
180
+ \***********************************************************************************************/
181
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
182
+
183
+ "use strict";
184
+ __webpack_require__.r(__webpack_exports__);
185
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
186
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
187
+ /* harmony export */ });
188
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
189
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
190
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
191
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
192
+ // Imports
193
+
194
+
195
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
196
+ // Module
197
+ ___CSS_LOADER_EXPORT___.push([module.id, `/* APX Scrollable Table: scrollable tbody with fixed thead/tfoot and aligned columns (CSS Grid + subgrid)
198
+ Use !important so page styles (e.g. display: table) do not override the grid layout. */
199
+
200
+ /* --apx-scrollable-template-columns: set by JS (measured widths + gutter); fallback = equal columns + gutter */
201
+ /* --apx-scrollable-gutter-width: space for vertical scrollbar so it does not overlap the last column (set to 0 to allow overlap) */
202
+ /* --apx-scrollable-body-height: when class apx-scrollable-table--body-height is set, tbody row uses fixed height instead of max-height */
203
+ .apx-scrollable-table {
204
+ display: grid !important;
205
+ grid-template-columns: var(--apx-scrollable-template-columns, repeat(var(--apx-scrollable-cols, 3), minmax(0, 1fr)) minmax(var(--apx-scrollable-gutter-width, 17px), var(--apx-scrollable-gutter-width, 17px)));
206
+ grid-template-rows: auto var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px))) auto;
207
+ width: 100%;
208
+ table-layout: unset !important;
209
+ }
210
+
211
+ .apx-scrollable-table--body-height {
212
+ --apx-scrollable-body-row-size: var(--apx-scrollable-body-max-height, 200px);
213
+ }
214
+
215
+ /* Table with no tfoot: thead + tbody only */
216
+ .apx-scrollable-table:not(.apx-scrollable-table--has-tfoot) {
217
+ grid-template-rows: auto var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px)));
218
+ }
219
+
220
+ /* Table with no thead: tbody + tfoot only */
221
+ .apx-scrollable-table.apx-scrollable-table--no-thead {
222
+ grid-template-rows: var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px))) auto;
223
+ }
224
+
225
+ /* Table with neither thead nor tfoot: tbody only */
226
+ .apx-scrollable-table.apx-scrollable-table--no-thead:not(.apx-scrollable-table--has-tfoot) {
227
+ grid-template-rows: var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px)));
228
+ }
229
+
230
+ /* --apx-scrollable-*-template-rows: set by JS (measured heights) or override in CSS / via options */
231
+ .apx-scrollable-table > thead,
232
+ .apx-scrollable-table > tbody,
233
+ .apx-scrollable-table > tfoot {
234
+ display: grid !important;
235
+ grid-template-columns: subgrid;
236
+ grid-column: 1 / -1;
237
+ min-height: 0;
238
+ }
239
+
240
+ .apx-scrollable-table > thead {
241
+ grid-template-rows: var(--apx-scrollable-thead-template-rows, repeat(var(--apx-scrollable-thead-rows, 1), auto));
242
+ }
243
+
244
+ .apx-scrollable-table > tbody {
245
+ grid-template-rows: var(--apx-scrollable-tbody-template-rows, repeat(var(--apx-scrollable-tbody-rows, 1), auto));
246
+ overflow: auto;
247
+ }
248
+
249
+ .apx-scrollable-table > tfoot {
250
+ grid-template-rows: var(--apx-scrollable-tfoot-template-rows, repeat(var(--apx-scrollable-tfoot-rows, 1), auto));
251
+ }
252
+
253
+ .apx-scrollable-table > thead > tr,
254
+ .apx-scrollable-table > tbody > tr,
255
+ .apx-scrollable-table > tfoot > tr {
256
+ display: contents !important;
257
+ }
258
+
259
+ .apx-scrollable-table th,
260
+ .apx-scrollable-table td {
261
+ min-width: 0;
262
+ box-sizing: border-box;
263
+ }
264
+ `, "",{"version":3,"sources":["webpack://./modules/scrollableTable/css/scrollableTable.css"],"names":[],"mappings":"AAAA;yFACyF;;AAEzF,+GAA+G;AAC/G,mIAAmI;AACnI,yIAAyI;AACzI;IACI,wBAAwB;IACxB,+MAA+M;IAC/M,4HAA4H;IAC5H,WAAW;IACX,8BAA8B;AAClC;;AAEA;IACI,4EAA4E;AAChF;;AAEA,4CAA4C;AAC5C;IACI,uHAAuH;AAC3H;;AAEA,4CAA4C;AAC5C;IACI,uHAAuH;AAC3H;;AAEA,mDAAmD;AACnD;IACI,kHAAkH;AACtH;;AAEA,oGAAoG;AACpG;;;IAGI,wBAAwB;IACxB,8BAA8B;IAC9B,mBAAmB;IACnB,aAAa;AACjB;;AAEA;IACI,gHAAgH;AACpH;;AAEA;IACI,gHAAgH;IAChH,cAAc;AAClB;;AAEA;IACI,gHAAgH;AACpH;;AAEA;;;IAGI,4BAA4B;AAChC;;AAEA;;IAEI,YAAY;IACZ,sBAAsB;AAC1B","sourcesContent":["/* APX Scrollable Table: scrollable tbody with fixed thead/tfoot and aligned columns (CSS Grid + subgrid)\r\n Use !important so page styles (e.g. display: table) do not override the grid layout. */\r\n\r\n/* --apx-scrollable-template-columns: set by JS (measured widths + gutter); fallback = equal columns + gutter */\r\n/* --apx-scrollable-gutter-width: space for vertical scrollbar so it does not overlap the last column (set to 0 to allow overlap) */\r\n/* --apx-scrollable-body-height: when class apx-scrollable-table--body-height is set, tbody row uses fixed height instead of max-height */\r\n.apx-scrollable-table {\r\n display: grid !important;\r\n grid-template-columns: var(--apx-scrollable-template-columns, repeat(var(--apx-scrollable-cols, 3), minmax(0, 1fr)) minmax(var(--apx-scrollable-gutter-width, 17px), var(--apx-scrollable-gutter-width, 17px)));\r\n grid-template-rows: auto var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px))) auto;\r\n width: 100%;\r\n table-layout: unset !important;\r\n}\r\n\r\n.apx-scrollable-table--body-height {\r\n --apx-scrollable-body-row-size: var(--apx-scrollable-body-max-height, 200px);\r\n}\r\n\r\n/* Table with no tfoot: thead + tbody only */\r\n.apx-scrollable-table:not(.apx-scrollable-table--has-tfoot) {\r\n grid-template-rows: auto var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px)));\r\n}\r\n\r\n/* Table with no thead: tbody + tfoot only */\r\n.apx-scrollable-table.apx-scrollable-table--no-thead {\r\n grid-template-rows: var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px))) auto;\r\n}\r\n\r\n/* Table with neither thead nor tfoot: tbody only */\r\n.apx-scrollable-table.apx-scrollable-table--no-thead:not(.apx-scrollable-table--has-tfoot) {\r\n grid-template-rows: var(--apx-scrollable-body-row-size, fit-content(var(--apx-scrollable-body-max-height, 200px)));\r\n}\r\n\r\n/* --apx-scrollable-*-template-rows: set by JS (measured heights) or override in CSS / via options */\r\n.apx-scrollable-table > thead,\r\n.apx-scrollable-table > tbody,\r\n.apx-scrollable-table > tfoot {\r\n display: grid !important;\r\n grid-template-columns: subgrid;\r\n grid-column: 1 / -1;\r\n min-height: 0;\r\n}\r\n\r\n.apx-scrollable-table > thead {\r\n grid-template-rows: var(--apx-scrollable-thead-template-rows, repeat(var(--apx-scrollable-thead-rows, 1), auto));\r\n}\r\n\r\n.apx-scrollable-table > tbody {\r\n grid-template-rows: var(--apx-scrollable-tbody-template-rows, repeat(var(--apx-scrollable-tbody-rows, 1), auto));\r\n overflow: auto;\r\n}\r\n\r\n.apx-scrollable-table > tfoot {\r\n grid-template-rows: var(--apx-scrollable-tfoot-template-rows, repeat(var(--apx-scrollable-tfoot-rows, 1), auto));\r\n}\r\n\r\n.apx-scrollable-table > thead > tr,\r\n.apx-scrollable-table > tbody > tr,\r\n.apx-scrollable-table > tfoot > tr {\r\n display: contents !important;\r\n}\r\n\r\n.apx-scrollable-table th,\r\n.apx-scrollable-table td {\r\n min-width: 0;\r\n box-sizing: border-box;\r\n}\r\n"],"sourceRoot":""}]);
265
+ // Exports
266
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
267
+
268
+
175
269
  /***/ }),
176
270
 
177
271
  /***/ "./node_modules/css-loader/dist/cjs.js!./modules/toast/css/toast.css":
@@ -367,39 +461,108 @@ __webpack_require__.r(__webpack_exports__);
367
461
 
368
462
 
369
463
 
370
- var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E"), __webpack_require__.b);
371
- var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E"), __webpack_require__.b);
372
- var ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E */ "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E"), __webpack_require__.b);
464
+ var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cmask id=%27frame-cutout%27%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23fff%27/%3E%3Crect x=%273%27 y=%273%27 width=%2726%27 height=%2726%27 rx=%274%27 ry=%274%27 fill=%27%23000%27/%3E%3C/mask%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23cccccc%27 mask=%27url%28%23frame-cutout%29%27/%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cmask id=%27frame-cutout%27%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23fff%27/%3E%3Crect x=%273%27 y=%273%27 width=%2726%27 height=%2726%27 rx=%274%27 ry=%274%27 fill=%27%23000%27/%3E%3C/mask%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23cccccc%27 mask=%27url%28%23frame-cutout%29%27/%3E%3C/svg%3E"), __webpack_require__.b);
465
+ var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 16h16%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27/%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 16h16%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27/%3E%3C/svg%3E"), __webpack_require__.b);
466
+ var ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M6 17L12 23L26 9%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M6 17L12 23L26 9%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E"), __webpack_require__.b);
467
+ var ___CSS_LOADER_URL_IMPORT_3___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 8L24 24M24 8L8 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 8L24 24M24 8L8 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E"), __webpack_require__.b);
373
468
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
374
469
  var ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
375
470
  var ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
376
471
  var ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);
472
+ var ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___);
377
473
  // Module
378
- ___CSS_LOADER_EXPORT___.push([module.id, `.apx-tristate {
379
- display: inline-block;
380
- vertical-align: middle;
381
- text-align: center;
382
- cursor: pointer;
383
- position: relative;
384
- min-width:13px;
385
- min-height:13px;
386
- background-size: contain;
387
- background-color: white;
388
- border-radius:3px;
389
- }
390
- .apx-tristate.unchecked {
391
- background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});
392
- }
393
- .apx-tristate.checked {
394
- background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});
395
- background-repeat: no-repeat;
396
- background-position: center;
397
- }
398
- .apx-tristate.crossed {
399
- background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});
400
- background-repeat: no-repeat;
401
- background-position: center;
402
- }`, "",{"version":3,"sources":["webpack://./modules/tristate/css/tristate.css"],"names":[],"mappings":"AAAA;IACI,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;AACrB;AACA;IACI,yDAAylB;AAC7lB;AACA;IACI,yDAA6e;IAC7e,4BAA4B;IAC5B,2BAA2B;AAC/B;AACA;IACI,yDAAsnB;IACtnB,4BAA4B;IAC5B,2BAA2B;AAC/B","sourcesContent":[".apx-tristate {\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n cursor: pointer;\r\n position: relative;\r\n min-width:13px;\r\n min-height:13px;\r\n background-size: contain;\r\n background-color: white;\r\n border-radius:3px;\r\n}\r\n.apx-tristate.unchecked {\r\n background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E');\r\n}\r\n.apx-tristate.checked {\r\n background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n}\r\n.apx-tristate.crossed {\r\n background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n}"],"sourceRoot":""}]);
474
+ ___CSS_LOADER_EXPORT___.push([module.id, `.apx-tristate {
475
+ display: inline-block;
476
+ vertical-align: middle;
477
+ text-align: center;
478
+ cursor: pointer;
479
+ position: relative;
480
+ min-width:13px;
481
+ min-height:13px;
482
+ background-size: contain;
483
+ background-color: transparent;
484
+ border-radius:3px;
485
+ --apx-tristate-tick-color: transparent;
486
+ --apx-tristate-checked-color: #0654ba;
487
+ --apx-tristate-crossed-color: #f00;
488
+ }
489
+ .apx-tristate.unchecked {
490
+ background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});
491
+ }
492
+ .apx-tristate.unchecked.apx-tristate--unchecked-indeterminate::after {
493
+ content: '';
494
+ position: absolute;
495
+ inset: 0;
496
+ display: block;
497
+ pointer-events: none;
498
+ }
499
+ /* When --mixed is used (e.g. parent + sub-checkboxes), dash shows only when children are mixed */
500
+ .apx-tristate.unchecked.apx-tristate--indeterminate-dash:not(.apx-tristate--mixed)::before,
501
+ .apx-tristate.unchecked.apx-tristate--indeterminate-dash:not(.apx-tristate--mixed)::after {
502
+ display: none;
503
+ }
504
+ .apx-tristate.unchecked.apx-tristate--indeterminate-dash::before {
505
+ content: '';
506
+ position: absolute;
507
+ inset: 0;
508
+ display: block;
509
+ pointer-events: none;
510
+ background-color: var(--apx-tristate-checked-color);
511
+ border-radius: inherit;
512
+ }
513
+ .apx-tristate.unchecked.apx-tristate--indeterminate-dash::after {
514
+ background-color: var(--apx-tristate-tick-color);
515
+ -webkit-mask-repeat: no-repeat;
516
+ -webkit-mask-position: center;
517
+ -webkit-mask-size: 100% 100%;
518
+ -webkit-mask-mode: alpha;
519
+ mask-repeat: no-repeat;
520
+ mask-position: center;
521
+ mask-size: 100% 100%;
522
+ mask-mode: alpha;
523
+ -webkit-mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});
524
+ mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});
525
+ }
526
+ .apx-tristate.unchecked.apx-tristate--indeterminate-filled-check::after {
527
+ background-color: var(--apx-tristate-checked-color);
528
+ border-radius: inherit;
529
+ }
530
+ .apx-tristate.checked {
531
+ background-image: none;
532
+ background-color: var(--apx-tristate-checked-color);
533
+ }
534
+ .apx-tristate.crossed {
535
+ background-image: none;
536
+ background-color: var(--apx-tristate-crossed-color);
537
+ }
538
+
539
+ .apx-tristate.checked::after,
540
+ .apx-tristate.crossed::after {
541
+ content: '';
542
+ position: absolute;
543
+ inset: 0;
544
+ display: block;
545
+ background-color: var(--apx-tristate-tick-color);
546
+ -webkit-mask-repeat: no-repeat;
547
+ -webkit-mask-position: center;
548
+ -webkit-mask-size: 100% 100%;
549
+ -webkit-mask-mode: alpha;
550
+ mask-repeat: no-repeat;
551
+ mask-position: center;
552
+ mask-size: 100% 100%;
553
+ mask-mode: alpha;
554
+ pointer-events: none;
555
+ }
556
+
557
+ .apx-tristate.checked::after {
558
+ -webkit-mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});
559
+ mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});
560
+ }
561
+
562
+ .apx-tristate.crossed::after {
563
+ -webkit-mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});
564
+ mask-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});
565
+ }`, "",{"version":3,"sources":["webpack://./modules/tristate/css/tristate.css"],"names":[],"mappings":"AAAA;IACI,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,wBAAwB;IACxB,6BAA6B;IAC7B,iBAAiB;IACjB,sCAAsC;IACtC,qCAAqC;IACrC,kCAAkC;AACtC;AACA;IACI,yDAA6X;AACjY;AACA;IACI,WAAW;IACX,kBAAkB;IAClB,QAAQ;IACR,cAAc;IACd,oBAAoB;AACxB;AACA,iGAAiG;AACjG;;IAEI,aAAa;AACjB;AACA;IACI,WAAW;IACX,kBAAkB;IAClB,QAAQ;IACR,cAAc;IACd,oBAAoB;IACpB,mDAAmD;IACnD,sBAAsB;AAC1B;AACA;IACI,gDAAgD;IAChD,8BAA8B;IAC9B,6BAA6B;IAC7B,4BAA4B;IAC5B,wBAAwB;IACxB,sBAAsB;IACtB,qBAAqB;IACrB,oBAAoB;IACpB,gBAAgB;IAChB,2DAA2O;IAC3O,mDAAmO;AACvO;AACA;IACI,mDAAmD;IACnD,sBAAsB;AAC1B;AACA;IACI,sBAAsB;IACtB,mDAAmD;AACvD;AACA;IACI,sBAAsB;IACtB,mDAAmD;AACvD;;AAEA;;IAEI,WAAW;IACX,kBAAkB;IAClB,QAAQ;IACR,cAAc;IACd,gDAAgD;IAChD,8BAA8B;IAC9B,6BAA6B;IAC7B,4BAA4B;IAC5B,wBAAwB;IACxB,sBAAsB;IACtB,qBAAqB;IACrB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;AACxB;;AAEA;IACI,2DAA2Q;IAC3Q,mDAAmQ;AACvQ;;AAEA;IACI,2DAA+Q;IAC/Q,mDAAuQ;AAC3Q","sourcesContent":[".apx-tristate {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n position: relative;\n min-width:13px;\n min-height:13px;\n background-size: contain;\n background-color: transparent;\n border-radius:3px;\n --apx-tristate-tick-color: transparent;\n --apx-tristate-checked-color: #0654ba;\n --apx-tristate-crossed-color: #f00;\n}\n.apx-tristate.unchecked {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cmask id='frame-cutout'%3E%3Crect width='32' height='32' fill='%23fff'/%3E%3Crect x='3' y='3' width='26' height='26' rx='4' ry='4' fill='%23000'/%3E%3C/mask%3E%3Crect width='32' height='32' fill='%23cccccc' mask='url(%23frame-cutout)'/%3E%3C/svg%3E\");\n}\n.apx-tristate.unchecked.apx-tristate--unchecked-indeterminate::after {\n content: '';\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n}\n/* When --mixed is used (e.g. parent + sub-checkboxes), dash shows only when children are mixed */\n.apx-tristate.unchecked.apx-tristate--indeterminate-dash:not(.apx-tristate--mixed)::before,\n.apx-tristate.unchecked.apx-tristate--indeterminate-dash:not(.apx-tristate--mixed)::after {\n display: none;\n}\n.apx-tristate.unchecked.apx-tristate--indeterminate-dash::before {\n content: '';\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n background-color: var(--apx-tristate-checked-color);\n border-radius: inherit;\n}\n.apx-tristate.unchecked.apx-tristate--indeterminate-dash::after {\n background-color: var(--apx-tristate-tick-color);\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n -webkit-mask-size: 100% 100%;\n -webkit-mask-mode: alpha;\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: 100% 100%;\n mask-mode: alpha;\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M8 16h16' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M8 16h16' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E\");\n}\n.apx-tristate.unchecked.apx-tristate--indeterminate-filled-check::after {\n background-color: var(--apx-tristate-checked-color);\n border-radius: inherit;\n}\n.apx-tristate.checked {\n background-image: none;\n background-color: var(--apx-tristate-checked-color);\n}\n.apx-tristate.crossed {\n background-image: none;\n background-color: var(--apx-tristate-crossed-color);\n}\n\n.apx-tristate.checked::after,\n.apx-tristate.crossed::after {\n content: '';\n position: absolute;\n inset: 0;\n display: block;\n background-color: var(--apx-tristate-tick-color);\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n -webkit-mask-size: 100% 100%;\n -webkit-mask-mode: alpha;\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: 100% 100%;\n mask-mode: alpha;\n pointer-events: none;\n}\n\n.apx-tristate.checked::after {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M6 17L12 23L26 9' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M6 17L12 23L26 9' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n}\n\n.apx-tristate.crossed::after {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M8 8L24 24M24 8L8 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M8 8L24 24M24 8L8 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n}"],"sourceRoot":""}]);
403
566
  // Exports
404
567
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
405
568
 
@@ -629,6 +792,61 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
629
792
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
630
793
 
631
794
 
795
+ /***/ }),
796
+
797
+ /***/ "./modules/scrollableTable/css/scrollableTable.css":
798
+ /*!*********************************************************!*\
799
+ !*** ./modules/scrollableTable/css/scrollableTable.css ***!
800
+ \*********************************************************/
801
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
802
+
803
+ "use strict";
804
+ __webpack_require__.r(__webpack_exports__);
805
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
806
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
807
+ /* harmony export */ });
808
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
809
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
810
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
811
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
812
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
813
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
814
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
815
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
816
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
817
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
818
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
819
+ /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
820
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_scrollableTable_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./scrollableTable.css */ "./node_modules/css-loader/dist/cjs.js!./modules/scrollableTable/css/scrollableTable.css");
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
831
+
832
+ var options = {};
833
+
834
+ options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
835
+ options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
836
+
837
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
838
+
839
+ options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
840
+ options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
841
+
842
+ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_scrollableTable_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
843
+
844
+
845
+
846
+
847
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_scrollableTable_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_scrollableTable_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_scrollableTable_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
848
+
849
+
632
850
  /***/ }),
633
851
 
634
852
  /***/ "./modules/toast/css/toast.css":
@@ -1014,36 +1232,47 @@ module.exports = styleTagTransform;
1014
1232
 
1015
1233
  /***/ }),
1016
1234
 
1017
- /***/ "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E":
1018
- /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
1019
- !*** data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E ***!
1020
- \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
1235
+ /***/ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cmask id=%27frame-cutout%27%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23fff%27/%3E%3Crect x=%273%27 y=%273%27 width=%2726%27 height=%2726%27 rx=%274%27 ry=%274%27 fill=%27%23000%27/%3E%3C/mask%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23cccccc%27 mask=%27url%28%23frame-cutout%29%27/%3E%3C/svg%3E":
1236
+ /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
1237
+ !*** data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cmask id=%27frame-cutout%27%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23fff%27/%3E%3Crect x=%273%27 y=%273%27 width=%2726%27 height=%2726%27 rx=%274%27 ry=%274%27 fill=%27%23000%27/%3E%3C/mask%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23cccccc%27 mask=%27url%28%23frame-cutout%29%27/%3E%3C/svg%3E ***!
1238
+ \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
1239
+ /***/ ((module) => {
1240
+
1241
+ "use strict";
1242
+ module.exports = "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cmask id=%27frame-cutout%27%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23fff%27/%3E%3Crect x=%273%27 y=%273%27 width=%2726%27 height=%2726%27 rx=%274%27 ry=%274%27 fill=%27%23000%27/%3E%3C/mask%3E%3Crect width=%2732%27 height=%2732%27 fill=%27%23cccccc%27 mask=%27url%28%23frame-cutout%29%27/%3E%3C/svg%3E";
1243
+
1244
+ /***/ }),
1245
+
1246
+ /***/ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M6 17L12 23L26 9%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E":
1247
+ /*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
1248
+ !*** data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M6 17L12 23L26 9%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E ***!
1249
+ \************************************************************************************************************************************************************************************************************************************************************************************************/
1021
1250
  /***/ ((module) => {
1022
1251
 
1023
1252
  "use strict";
1024
- module.exports = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E";
1253
+ module.exports = "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M6 17L12 23L26 9%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E";
1025
1254
 
1026
1255
  /***/ }),
1027
1256
 
1028
- /***/ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E":
1029
- /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
1030
- !*** data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E ***!
1031
- \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
1257
+ /***/ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 16h16%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27/%3E%3C/svg%3E":
1258
+ /*!************************************************************************************************************************************************************************************************************************************************************!*\
1259
+ !*** data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 16h16%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27/%3E%3C/svg%3E ***!
1260
+ \************************************************************************************************************************************************************************************************************************************************************/
1032
1261
  /***/ ((module) => {
1033
1262
 
1034
1263
  "use strict";
1035
- module.exports = "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E";
1264
+ module.exports = "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 16h16%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27/%3E%3C/svg%3E";
1036
1265
 
1037
1266
  /***/ }),
1038
1267
 
1039
- /***/ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E":
1040
- /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
1041
- !*** data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E ***!
1042
- \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
1268
+ /***/ "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 8L24 24M24 8L8 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E":
1269
+ /*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
1270
+ !*** data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 8L24 24M24 8L8 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E ***!
1271
+ \****************************************************************************************************************************************************************************************************************************************************************************************************/
1043
1272
  /***/ ((module) => {
1044
1273
 
1045
1274
  "use strict";
1046
- module.exports = "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E";
1275
+ module.exports = "data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2732%27 height=%2732%27 viewBox=%270 0 32 32%27%3E%3Cpath d=%27M8 8L24 24M24 8L8 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E";
1047
1276
 
1048
1277
  /***/ }),
1049
1278
 
@@ -1650,9 +1879,7 @@ function executeCallbacks(event, uniqueId, timeoutDuration) {
1650
1879
  }
1651
1880
  });
1652
1881
  });
1653
- }, Promise.resolve())["catch"](function (error) {
1654
- console.error('Error in callback chain:', error);
1655
- });
1882
+ }, Promise.resolve())["catch"](function () {});
1656
1883
  }
1657
1884
  }
1658
1885
 
@@ -1682,6 +1909,684 @@ function closest(element, selector) {
1682
1909
 
1683
1910
  /***/ }),
1684
1911
 
1912
+ /***/ "./modules/scrollableTable/scrollableTable.mjs":
1913
+ /*!*****************************************************!*\
1914
+ !*** ./modules/scrollableTable/scrollableTable.mjs ***!
1915
+ \*****************************************************/
1916
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1917
+
1918
+ "use strict";
1919
+ __webpack_require__.r(__webpack_exports__);
1920
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1921
+ /* harmony export */ "default": () => (/* binding */ augmentWithScrollableTable)
1922
+ /* harmony export */ });
1923
+ /* harmony import */ var _css_scrollableTable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/scrollableTable.css */ "./modules/scrollableTable/css/scrollableTable.css");
1924
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1925
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1926
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1927
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
1928
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1929
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
1930
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
1931
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1932
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
1933
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
1934
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
1935
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
1936
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
1937
+
1938
+ var DATA_KEY = '_apxScrollableTable';
1939
+ var CLASS_TABLE = 'apx-scrollable-table';
1940
+ var DEFAULT_MAX_HEIGHT = '200px';
1941
+ var THROTTLE_MS = 16;
1942
+
1943
+ /** @type {Set<HTMLTableElement>} */
1944
+ var dynamicTables = new Set();
1945
+ /** @type {Map<Element, Set<HTMLTableElement>>} */
1946
+ var scrollSourceToTables = new Map();
1947
+ /** @type {Map<Element, Set<HTMLTableElement>>} */
1948
+ var resizeSourceToTables = new Map();
1949
+ /** @type {boolean} */
1950
+ var resizeWindowAttached = false;
1951
+ /** @type {ResizeObserver|null} */
1952
+ var resizeObserver = null;
1953
+ /** @type {number} */
1954
+ var throttleLast = 0;
1955
+ /** @type {number|null} */
1956
+ var throttleRaf = null;
1957
+
1958
+ /**
1959
+ * Sum of colspans for one row (direct th/td children of tr).
1960
+ * @param {HTMLTableRowElement} tr
1961
+ * @returns {number}
1962
+ */
1963
+ function getRowColumnCount(tr) {
1964
+ var cols = 0;
1965
+ tr.querySelectorAll(':scope > th, :scope > td').forEach(function (cell) {
1966
+ cols += parseInt(cell.getAttribute('colspan'), 10) || 1;
1967
+ });
1968
+ return cols;
1969
+ }
1970
+
1971
+ /**
1972
+ * Get maximum column count in a section (max sum of colspans across all rows).
1973
+ * @param {HTMLTableSectionElement} section - thead, tbody, or tfoot
1974
+ * @returns {number}
1975
+ */
1976
+ function getColumnCountFromSection(section) {
1977
+ if (!section) return 0;
1978
+ var rows = section.querySelectorAll(':scope > tr');
1979
+ var maxCols = 0;
1980
+ rows.forEach(function (tr) {
1981
+ var sum = getRowColumnCount(tr);
1982
+ if (sum > maxCols) maxCols = sum;
1983
+ });
1984
+ return maxCols;
1985
+ }
1986
+
1987
+ /**
1988
+ * Get total column count for the table (max across thead, tbody, tfoot).
1989
+ * @param {HTMLTableElement} table
1990
+ * @returns {number}
1991
+ */
1992
+ function getTableColumnCount(table) {
1993
+ var thead = table.querySelector('thead');
1994
+ var tbody = table.querySelector('tbody');
1995
+ var tfoot = table.querySelector('tfoot');
1996
+ var countThead = thead ? getColumnCountFromSection(thead) : 0;
1997
+ var countTbody = tbody ? getColumnCountFromSection(tbody) : 0;
1998
+ var countTfoot = tfoot ? getColumnCountFromSection(tfoot) : 0;
1999
+ return Math.max(countThead, countTbody, countTfoot, 1);
2000
+ }
2001
+
2002
+ /**
2003
+ * Measure current column widths from the table in its natural layout (before applying scrollable class).
2004
+ * Prefers a row where each cell has colspan 1 so we get one width per column; otherwise splits cell widths by colspan.
2005
+ * @param {HTMLTableElement} table - table not yet with scrollable class
2006
+ * @param {number} numCols
2007
+ * @returns {number[]} pixel widths per column
2008
+ */
2009
+ function measureColumnWidths(table, numCols) {
2010
+ var thead = table.querySelector('thead');
2011
+ var tbody = table.querySelector('tbody');
2012
+ var sections = [thead, tbody].filter(Boolean);
2013
+ /** @type {HTMLTableRowElement|null} */
2014
+ var bestRow = null;
2015
+ var _iterator = _createForOfIteratorHelper(sections),
2016
+ _step;
2017
+ try {
2018
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
2019
+ var section = _step.value;
2020
+ var rows = section.querySelectorAll(':scope > tr');
2021
+ var _iterator3 = _createForOfIteratorHelper(rows),
2022
+ _step3;
2023
+ try {
2024
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
2025
+ var tr = _step3.value;
2026
+ var _cells = tr.querySelectorAll(':scope > th, :scope > td');
2027
+ if (getRowColumnCount(tr) !== numCols) continue;
2028
+ var allSingle = Array.from(_cells).every(function (c) {
2029
+ return (parseInt(c.getAttribute('colspan'), 10) || 1) === 1;
2030
+ });
2031
+ if (allSingle && _cells.length === numCols) {
2032
+ bestRow = tr;
2033
+ break;
2034
+ }
2035
+ if (!bestRow) bestRow = tr;
2036
+ }
2037
+ } catch (err) {
2038
+ _iterator3.e(err);
2039
+ } finally {
2040
+ _iterator3.f();
2041
+ }
2042
+ if (bestRow && Array.from(bestRow.querySelectorAll(':scope > th, :scope > td')).every(function (c) {
2043
+ return (parseInt(c.getAttribute('colspan'), 10) || 1) === 1;
2044
+ })) break;
2045
+ }
2046
+ } catch (err) {
2047
+ _iterator.e(err);
2048
+ } finally {
2049
+ _iterator.f();
2050
+ }
2051
+ if (!bestRow) return [];
2052
+ var widths = new Array(numCols).fill(0);
2053
+ var cells = bestRow.querySelectorAll(':scope > th, :scope > td');
2054
+ var col = 0;
2055
+ var _iterator2 = _createForOfIteratorHelper(cells),
2056
+ _step2;
2057
+ try {
2058
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
2059
+ var cell = _step2.value;
2060
+ var span = Math.min(parseInt(cell.getAttribute('colspan'), 10) || 1, numCols - col);
2061
+ if (span <= 0) break;
2062
+ var w = cell.getBoundingClientRect().width;
2063
+ var perCol = w / span;
2064
+ for (var _i = 0; _i < span; _i++) widths[col + _i] = perCol;
2065
+ col += span;
2066
+ }
2067
+ } catch (err) {
2068
+ _iterator2.e(err);
2069
+ } finally {
2070
+ _iterator2.f();
2071
+ }
2072
+ if (col === 0) return [];
2073
+ var fallback = widths.some(function (w) {
2074
+ return w > 0;
2075
+ }) ? Math.max.apply(Math, [80].concat(_toConsumableArray(widths.filter(function (w) {
2076
+ return w > 0;
2077
+ })))) / 2 : 80;
2078
+ for (var i = 0; i < numCols; i++) if (widths[i] <= 0) widths[i] = fallback;
2079
+ return widths.slice(0, numCols);
2080
+ }
2081
+
2082
+ /**
2083
+ * Count direct tr children in a section.
2084
+ * @param {HTMLTableSectionElement} section
2085
+ * @returns {number}
2086
+ */
2087
+ function getRowCount(section) {
2088
+ if (!section) return 0;
2089
+ return section.querySelectorAll(':scope > tr').length;
2090
+ }
2091
+
2092
+ /**
2093
+ * Build a 2D grid of occupied slots for a section (for rowspan/colspan placement).
2094
+ * Place each cell in DOM order; return a list of { cell, row, col, colspan, rowspan }.
2095
+ * @param {HTMLTableSectionElement} section
2096
+ * @param {number} numRows
2097
+ * @param {number} numCols
2098
+ * @returns {{ cell: HTMLTableCellElement, row: number, col: number, colspan: number, rowspan: number }[]}
2099
+ */
2100
+ function computeCellPlacements(section, numRows, numCols) {
2101
+ if (!section || numRows === 0 || numCols === 0) return [];
2102
+ var occupied = Array.from({
2103
+ length: numRows
2104
+ }, function () {
2105
+ return Array(numCols).fill(false);
2106
+ });
2107
+ var placements = [];
2108
+ var rows = section.querySelectorAll(':scope > tr');
2109
+ for (var r = 0; r < rows.length; r++) {
2110
+ var tr = rows[r];
2111
+ var cells = tr.querySelectorAll(':scope > th, :scope > td');
2112
+ var _iterator4 = _createForOfIteratorHelper(cells),
2113
+ _step4;
2114
+ try {
2115
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2116
+ var cell = _step4.value;
2117
+ var colspan = Math.min(parseInt(cell.getAttribute('colspan'), 10) || 1, numCols);
2118
+ var rowspan = Math.min(parseInt(cell.getAttribute('rowspan'), 10) || 1, numRows - r);
2119
+ var col = 0;
2120
+ while (col < numCols) {
2121
+ var free = true;
2122
+ for (var rr = r; rr < r + rowspan && free; rr++) {
2123
+ for (var cc = col; cc < col + colspan && free; cc++) {
2124
+ var _occupied$rr;
2125
+ if ((_occupied$rr = occupied[rr]) !== null && _occupied$rr !== void 0 && _occupied$rr[cc]) free = false;
2126
+ }
2127
+ }
2128
+ if (free) break;
2129
+ col++;
2130
+ }
2131
+ if (col + colspan > numCols) continue;
2132
+ for (var _rr = r; _rr < r + rowspan; _rr++) {
2133
+ for (var _cc = col; _cc < col + colspan; _cc++) {
2134
+ if (occupied[_rr]) occupied[_rr][_cc] = true;
2135
+ }
2136
+ }
2137
+ placements.push({
2138
+ cell: cell,
2139
+ row: r,
2140
+ col: col,
2141
+ colspan: colspan,
2142
+ rowspan: rowspan
2143
+ });
2144
+ }
2145
+ } catch (err) {
2146
+ _iterator4.e(err);
2147
+ } finally {
2148
+ _iterator4.f();
2149
+ }
2150
+ }
2151
+ return placements;
2152
+ }
2153
+
2154
+ /**
2155
+ * Apply grid placement styles to a list of placements (1-based line numbers for CSS Grid).
2156
+ */
2157
+ function applyPlacements(placements) {
2158
+ placements.forEach(function (_ref) {
2159
+ var cell = _ref.cell,
2160
+ row = _ref.row,
2161
+ col = _ref.col,
2162
+ colspan = _ref.colspan,
2163
+ rowspan = _ref.rowspan;
2164
+ cell.style.gridRow = "".concat(row + 1, " / span ").concat(rowspan);
2165
+ cell.style.gridColumn = "".concat(col + 1, " / span ").concat(colspan);
2166
+ });
2167
+ }
2168
+
2169
+ /**
2170
+ * Clear grid placement styles from all th/td in a table (for refresh).
2171
+ * @param {HTMLTableElement} table
2172
+ */
2173
+ function clearPlacements(table) {
2174
+ table.querySelectorAll('th, td').forEach(function (cell) {
2175
+ cell.style.gridRow = '';
2176
+ cell.style.gridColumn = '';
2177
+ });
2178
+ }
2179
+
2180
+ /**
2181
+ * Normalize height/maxHeight option to a CSS length string.
2182
+ * @param {number|string} value
2183
+ * @returns {string}
2184
+ */
2185
+ function normalizeHeight(value) {
2186
+ if (value == null) return DEFAULT_MAX_HEIGHT;
2187
+ if (typeof value === 'number') return "".concat(value, "px");
2188
+ return String(value);
2189
+ }
2190
+
2191
+ /**
2192
+ * Resolve current body height from options: either bodyHeightDynamic.get(table) or static height/maxHeight.
2193
+ * @param {Object} options - scrollableTable options (may include bodyHeightDynamic, height, maxHeight)
2194
+ * @param {HTMLTableElement} table
2195
+ * @returns {{ bodySize: string, useFixedHeight: boolean }}
2196
+ */
2197
+ function resolveBodyHeight(options, table) {
2198
+ var dyn = options.bodyHeightDynamic;
2199
+ if (dyn && typeof dyn.get === 'function') {
2200
+ var value = dyn.get(table);
2201
+ var _bodySize = normalizeHeight(value);
2202
+ var _useFixedHeight = dyn.useAs === 'height';
2203
+ return {
2204
+ bodySize: _bodySize,
2205
+ useFixedHeight: _useFixedHeight
2206
+ };
2207
+ }
2208
+ var useFixedHeight = options.height != null;
2209
+ var raw = useFixedHeight ? options.height : options.maxHeight;
2210
+ var bodySize = normalizeHeight(raw);
2211
+ return {
2212
+ bodySize: bodySize,
2213
+ useFixedHeight: useFixedHeight
2214
+ };
2215
+ }
2216
+
2217
+ /**
2218
+ * Update only the tbody height CSS variable and class (used on scroll/resize for dynamic height).
2219
+ * @param {HTMLTableElement} table
2220
+ * @param {Object} options - full scrollableTable options (with ref.options when called from throttle)
2221
+ */
2222
+ function updateTableBodyHeight(table, options) {
2223
+ var _resolveBodyHeight = resolveBodyHeight(options, table),
2224
+ bodySize = _resolveBodyHeight.bodySize,
2225
+ useFixedHeight = _resolveBodyHeight.useFixedHeight;
2226
+ table.style.setProperty('--apx-scrollable-body-max-height', bodySize);
2227
+ table.classList.toggle('apx-scrollable-table--body-height', useFixedHeight);
2228
+ }
2229
+
2230
+ /**
2231
+ * Run lazy cleanup then updateTableBodyHeight for all tables still in dynamicTables. (Called by throttled entry point or RAF.)
2232
+ */
2233
+ function flushDynamicHeightUpdate() {
2234
+ var toRemove = [];
2235
+ dynamicTables.forEach(function (table) {
2236
+ if (!table.isConnected) toRemove.push(table);
2237
+ });
2238
+ toRemove.forEach(function (table) {
2239
+ return removeTableFromDynamicSources(table);
2240
+ });
2241
+ dynamicTables.forEach(function (table) {
2242
+ var ref = table[DATA_KEY];
2243
+ if (ref !== null && ref !== void 0 && ref.options) updateTableBodyHeight(table, ref.options);
2244
+ });
2245
+ }
2246
+
2247
+ /**
2248
+ * Throttled entry: run flushDynamicHeightUpdate now or schedule with RAF.
2249
+ */
2250
+ function runDynamicHeightUpdate() {
2251
+ var now = Date.now();
2252
+ if (now - throttleLast < THROTTLE_MS) {
2253
+ if (!throttleRaf) {
2254
+ throttleRaf = requestAnimationFrame(function () {
2255
+ throttleRaf = null;
2256
+ throttleLast = Date.now();
2257
+ flushDynamicHeightUpdate();
2258
+ });
2259
+ }
2260
+ return;
2261
+ }
2262
+ throttleLast = now;
2263
+ flushDynamicHeightUpdate();
2264
+ }
2265
+
2266
+ /**
2267
+ * Resolve updateOn into scroll targets (Element[]) and resize: { window: boolean, elements: Element[] }.
2268
+ * @param {Object} options - options.bodyHeightDynamic.updateOn
2269
+ * @returns {{ scrollTargets: Element[], resizeWindow: boolean, resizeElements: Element[] }}
2270
+ */
2271
+ function resolveUpdateOn(options) {
2272
+ var _options$bodyHeightDy;
2273
+ var u = options === null || options === void 0 || (_options$bodyHeightDy = options.bodyHeightDynamic) === null || _options$bodyHeightDy === void 0 ? void 0 : _options$bodyHeightDy.updateOn;
2274
+ var scrollOn = u === null || u === void 0 ? void 0 : u.scrollOn;
2275
+ var resizeOn = u === null || u === void 0 ? void 0 : u.resizeOn;
2276
+ var scrollTargets = [];
2277
+ if (scrollOn != null && Array.isArray(scrollOn) && scrollOn.length > 0) {
2278
+ scrollOn.forEach(function (x) {
2279
+ if (x === 'document') scrollTargets.push(document.documentElement);else if (x && typeof x.addEventListener === 'function') scrollTargets.push(x);
2280
+ });
2281
+ } else if ((u === null || u === void 0 ? void 0 : u.scroll) === true) {
2282
+ scrollTargets.push(document.documentElement);
2283
+ scrollTargets.push(typeof window !== 'undefined' ? window : document.documentElement);
2284
+ }
2285
+ var resizeWindow = false;
2286
+ var resizeElements = [];
2287
+ if (resizeOn != null && Array.isArray(resizeOn) && resizeOn.length > 0) {
2288
+ resizeOn.forEach(function (x) {
2289
+ if (x === 'window') resizeWindow = true;else if (x && typeof x.addEventListener === 'function') resizeElements.push(x);
2290
+ });
2291
+ } else if ((u === null || u === void 0 ? void 0 : u.resize) !== false) {
2292
+ resizeWindow = true;
2293
+ resizeElements.push(document.documentElement);
2294
+ }
2295
+ return {
2296
+ scrollTargets: scrollTargets,
2297
+ resizeWindow: resizeWindow,
2298
+ resizeElements: resizeElements
2299
+ };
2300
+ }
2301
+
2302
+ /**
2303
+ * Remove table from dynamicTables and from all scroll/resize Maps; detach listeners if Set becomes empty.
2304
+ * @param {HTMLTableElement} table
2305
+ */
2306
+ function removeTableFromDynamicSources(table) {
2307
+ dynamicTables["delete"](table);
2308
+ scrollSourceToTables.forEach(function (set, el) {
2309
+ set["delete"](table);
2310
+ if (set.size === 0) {
2311
+ scrollSourceToTables["delete"](el);
2312
+ el.removeEventListener('scroll', onScrollThrottled);
2313
+ }
2314
+ });
2315
+ resizeSourceToTables.forEach(function (set, el) {
2316
+ set["delete"](table);
2317
+ if (set.size === 0) {
2318
+ resizeSourceToTables["delete"](el);
2319
+ if (resizeObserver) resizeObserver.unobserve(el);
2320
+ }
2321
+ });
2322
+ if (resizeWindowAttached && dynamicTables.size === 0) {
2323
+ window.removeEventListener('resize', onResizeThrottled);
2324
+ resizeWindowAttached = false;
2325
+ }
2326
+ }
2327
+ function onScrollThrottled() {
2328
+ runDynamicHeightUpdate();
2329
+ }
2330
+ function onResizeThrottled() {
2331
+ runDynamicHeightUpdate();
2332
+ }
2333
+
2334
+ /**
2335
+ * Register a table with bodyHeightDynamic: add to Set and attach scroll/resize listeners per updateOn.
2336
+ * @param {HTMLTableElement} table
2337
+ * @param {Object} options - full options (ref.options)
2338
+ */
2339
+ function registerDynamicTable(table, options) {
2340
+ var _resolveUpdateOn = resolveUpdateOn(options),
2341
+ scrollTargets = _resolveUpdateOn.scrollTargets,
2342
+ resizeWindow = _resolveUpdateOn.resizeWindow,
2343
+ resizeElements = _resolveUpdateOn.resizeElements;
2344
+ dynamicTables.add(table);
2345
+ scrollTargets.forEach(function (el) {
2346
+ var set = scrollSourceToTables.get(el);
2347
+ if (!set) {
2348
+ set = new Set();
2349
+ scrollSourceToTables.set(el, set);
2350
+ el.addEventListener('scroll', onScrollThrottled, {
2351
+ passive: true
2352
+ });
2353
+ }
2354
+ set.add(table);
2355
+ });
2356
+ if (resizeWindow) {
2357
+ if (!resizeWindowAttached) {
2358
+ resizeWindowAttached = true;
2359
+ window.addEventListener('resize', onResizeThrottled, {
2360
+ passive: true
2361
+ });
2362
+ }
2363
+ }
2364
+ resizeElements.forEach(function (el) {
2365
+ var set = resizeSourceToTables.get(el);
2366
+ if (!set) {
2367
+ set = new Set();
2368
+ resizeSourceToTables.set(el, set);
2369
+ if (!resizeObserver) resizeObserver = new ResizeObserver(onResizeThrottled);
2370
+ resizeObserver.observe(el);
2371
+ }
2372
+ set.add(table);
2373
+ });
2374
+ }
2375
+
2376
+ /**
2377
+ * Build grid-template-columns from measured widths and optional overrides per column.
2378
+ * @param {number} numCols
2379
+ * @param {number[]} columnWidths
2380
+ * @param {Object<number, string>|(string|null)[]} columnOverrides - map column index → CSS value (e.g. '2fr'), or array; null/empty = use measured
2381
+ * @returns {string}
2382
+ */
2383
+ function buildTemplateColumns(numCols, columnWidths, columnOverrides) {
2384
+ if (!columnWidths || columnWidths.length !== numCols) return '';
2385
+ var get = function get(i) {
2386
+ return Array.isArray(columnOverrides) ? columnOverrides[i] : columnOverrides[i];
2387
+ };
2388
+ var parts = [];
2389
+ for (var i = 0; i < numCols; i++) {
2390
+ var ov = get(i);
2391
+ if (ov != null && typeof ov === 'string' && ov.trim() !== '') {
2392
+ parts.push(ov.trim());
2393
+ } else {
2394
+ parts.push("".concat(Math.round(columnWidths[i]), "fr"));
2395
+ }
2396
+ }
2397
+ return parts.join(' ');
2398
+ }
2399
+
2400
+ /**
2401
+ * Build grid-template-rows from measured heights and optional overrides per row.
2402
+ * @param {number} numRows
2403
+ * @param {number[]} rowHeights
2404
+ * @param {Object<number, string>|(string|null)[]} rowOverrides - map row index → CSS value (e.g. '48px', '2fr'), or array; null/empty = use measured
2405
+ * @returns {string}
2406
+ */
2407
+ function buildTemplateRows(numRows, rowHeights, rowOverrides) {
2408
+ if (!rowHeights || rowHeights.length < numRows) return '';
2409
+ var get = function get(i) {
2410
+ return Array.isArray(rowOverrides) ? rowOverrides[i] : rowOverrides === null || rowOverrides === void 0 ? void 0 : rowOverrides[i];
2411
+ };
2412
+ var parts = [];
2413
+ for (var i = 0; i < numRows; i++) {
2414
+ var ov = get(i);
2415
+ if (ov != null && typeof ov === 'string' && ov.trim() !== '') {
2416
+ parts.push(ov.trim());
2417
+ } else {
2418
+ var _rowHeights$i;
2419
+ parts.push("".concat(Math.round((_rowHeights$i = rowHeights[i]) !== null && _rowHeights$i !== void 0 ? _rowHeights$i : 0), "px"));
2420
+ }
2421
+ }
2422
+ return parts.join(' ');
2423
+ }
2424
+
2425
+ /**
2426
+ * Measure each tr height in a section (table must not yet have scrollable class).
2427
+ * @param {HTMLTableSectionElement|null} section
2428
+ * @returns {number[]}
2429
+ */
2430
+ function measureRowHeights(section) {
2431
+ if (!section) return [];
2432
+ var rows = section.querySelectorAll(':scope > tr');
2433
+ return Array.from(rows).map(function (tr) {
2434
+ return tr.getBoundingClientRect().height;
2435
+ });
2436
+ }
2437
+
2438
+ /**
2439
+ * Apply scrollable table layout to a single table.
2440
+ * @param {HTMLTableElement} table
2441
+ * @param {Object} options - scrollableTable options
2442
+ * @param {number|string} [options.maxHeight] - Max height of tbody (default '200px'). Ignored when height or bodyHeightDynamic is set.
2443
+ * @param {number|string} [options.height] - Fixed height of tbody. Ignored when bodyHeightDynamic is set.
2444
+ * @param {{ get: (function(HTMLTableElement): number|string), useAs: 'height'|'maxHeight', updateOn?: { scroll?: boolean, resize?: boolean, scrollOn?: ('document'|Element)[], resizeOn?: ('window'|Element)[] } }} [options.bodyHeightDynamic] - When set, body size is computed by get(table) and re-applied when scroll/resize sources fire. updateOn: scrollOn/resizeOn list elements (sentinels 'document'/'window'); or use scroll (default false) / resize (default true) booleans.
2445
+ * @param {string} [options.gridTemplateColumns]
2446
+ * @param {{ thead?: string, tbody?: string, tfoot?: string }} [options.gridTemplateRows]
2447
+ * @param {{ thead?: Object<number, string>|(string|null)[], tbody?: Object<number, string>|(string|null)[], tfoot?: Object<number, string>|(string|null)[] }} [options.rowOverrides]
2448
+ * @param {Object<number, string>|(string|null)[]} [options.columnOverrides]
2449
+ * @param {{ columnWidths?: number[], rowHeights?: { thead?: number[], tbody?: number[], tfoot?: number[] } } | undefined} ref - existing ref when refreshing
2450
+ */
2451
+ function applyScrollableTable(table, options, ref) {
2452
+ var _ref$columnWidths, _ref$rowHeights;
2453
+ var thead = table.querySelector('thead');
2454
+ var tbody = table.querySelector('tbody');
2455
+ var tfoot = table.querySelector('tfoot');
2456
+ var numCols = getTableColumnCount(table);
2457
+ if (numCols === 0) return;
2458
+ var alreadyScrollable = table.classList.contains(CLASS_TABLE);
2459
+ var customTemplate = typeof options.gridTemplateColumns === 'string' && options.gridTemplateColumns.trim().length > 0;
2460
+ var columnWidths = customTemplate ? null : (_ref$columnWidths = ref === null || ref === void 0 ? void 0 : ref.columnWidths) !== null && _ref$columnWidths !== void 0 ? _ref$columnWidths : alreadyScrollable ? null : measureColumnWidths(table, numCols);
2461
+ var theadRows = getRowCount(thead);
2462
+ var tbodyRows = getRowCount(tbody);
2463
+ var tfootRows = getRowCount(tfoot);
2464
+ var rowHeights = (_ref$rowHeights = ref === null || ref === void 0 ? void 0 : ref.rowHeights) !== null && _ref$rowHeights !== void 0 ? _ref$rowHeights : alreadyScrollable ? null : {
2465
+ thead: measureRowHeights(thead),
2466
+ tbody: measureRowHeights(tbody),
2467
+ tfoot: measureRowHeights(tfoot)
2468
+ };
2469
+ table.style.setProperty('--apx-scrollable-cols', String(numCols));
2470
+ table.style.setProperty('--apx-scrollable-thead-rows', String(Math.max(1, theadRows)));
2471
+ table.style.setProperty('--apx-scrollable-tbody-rows', String(Math.max(1, tbodyRows)));
2472
+ table.style.setProperty('--apx-scrollable-tfoot-rows', String(Math.max(1, tfootRows)));
2473
+ var _resolveBodyHeight2 = resolveBodyHeight(options, table),
2474
+ bodySize = _resolveBodyHeight2.bodySize,
2475
+ useFixedHeight = _resolveBodyHeight2.useFixedHeight;
2476
+ table.style.setProperty('--apx-scrollable-body-max-height', bodySize);
2477
+ table.classList.toggle('apx-scrollable-table--body-height', useFixedHeight);
2478
+ table.classList.add(CLASS_TABLE);
2479
+ table.classList.toggle('apx-scrollable-table--has-tfoot', !!(tfoot && tfootRows > 0));
2480
+ table.classList.toggle('apx-scrollable-table--no-thead', !(thead && theadRows > 0));
2481
+
2482
+ // Force reflow so the grid layout is established before setting measured template-columns.
2483
+ // Without this, the browser batches class + template into one pass and the tbody overflows horizontally.
2484
+ table.offsetHeight; // eslint-disable-line no-unused-expressions
2485
+
2486
+ var gutterSuffix = ' minmax(var(--apx-scrollable-gutter-width, 17px), var(--apx-scrollable-gutter-width, 17px))';
2487
+ if (customTemplate) {
2488
+ table.style.setProperty('--apx-scrollable-template-columns', options.gridTemplateColumns.trim() + gutterSuffix);
2489
+ } else if (columnWidths && columnWidths.length === numCols) {
2490
+ var template = options.columnOverrides != null ? buildTemplateColumns(numCols, columnWidths, options.columnOverrides) : columnWidths.map(function (w) {
2491
+ return "".concat(Math.round(w), "fr");
2492
+ }).join(' ');
2493
+ table.style.setProperty('--apx-scrollable-template-columns', template + gutterSuffix);
2494
+ } else {
2495
+ table.style.removeProperty('--apx-scrollable-template-columns');
2496
+ }
2497
+ clearPlacements(table);
2498
+ var sections = [{
2499
+ section: thead,
2500
+ rows: Math.max(1, theadRows),
2501
+ heights: rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.thead,
2502
+ key: 'thead'
2503
+ }, {
2504
+ section: tbody,
2505
+ rows: Math.max(1, tbodyRows),
2506
+ heights: rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.tbody,
2507
+ key: 'tbody'
2508
+ }, {
2509
+ section: tfoot,
2510
+ rows: Math.max(1, tfootRows),
2511
+ heights: rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.tfoot,
2512
+ key: 'tfoot'
2513
+ }];
2514
+ var customRows = options.gridTemplateRows && _typeof(options.gridTemplateRows) === 'object' ? options.gridTemplateRows : null;
2515
+ var rowOverrides = options.rowOverrides && _typeof(options.rowOverrides) === 'object' ? options.rowOverrides : null;
2516
+ sections.forEach(function (_ref2) {
2517
+ var section = _ref2.section,
2518
+ rows = _ref2.rows,
2519
+ heights = _ref2.heights,
2520
+ key = _ref2.key;
2521
+ if (!section) return;
2522
+ var varName = "--apx-scrollable-".concat(key, "-template-rows");
2523
+ var custom = customRows === null || customRows === void 0 ? void 0 : customRows[key];
2524
+ var overrides = rowOverrides === null || rowOverrides === void 0 ? void 0 : rowOverrides[key];
2525
+ if (typeof custom === 'string' && custom.trim().length > 0) {
2526
+ section.style.setProperty(varName, custom.trim());
2527
+ } else if (heights && heights.length >= rows) {
2528
+ var _template = overrides != null ? buildTemplateRows(rows, heights.slice(0, rows), overrides) : heights.slice(0, rows).map(function (h) {
2529
+ return "".concat(Math.round(h), "px");
2530
+ }).join(' ');
2531
+ section.style.setProperty(varName, _template);
2532
+ } else {
2533
+ section.style.removeProperty(varName);
2534
+ }
2535
+ var placements = computeCellPlacements(section, rows, numCols);
2536
+ applyPlacements(placements);
2537
+ });
2538
+ return {
2539
+ columnWidths: columnWidths,
2540
+ rowHeights: rowHeights
2541
+ };
2542
+ }
2543
+
2544
+ /**
2545
+ * Augments the APX object with scrollableTable(options | 'refresh').
2546
+ * Makes the tbody of a table scrollable while keeping thead/tfoot fixed and columns aligned (CSS Grid + subgrid).
2547
+ *
2548
+ * @param {Object} apx - The APX object to augment.
2549
+ * @example
2550
+ * APX('table.data-grid').scrollableTable({ maxHeight: 300 });
2551
+ * APX('table.data-grid').scrollableTable('refresh');
2552
+ */
2553
+ function augmentWithScrollableTable(apx) {
2554
+ apx.scrollableTable = function (optionsOrAction) {
2555
+ var isRefresh = optionsOrAction === 'refresh';
2556
+ var options = isRefresh ? null : optionsOrAction && _typeof(optionsOrAction) === 'object' ? optionsOrAction : {};
2557
+ apx.elements.forEach(function (element) {
2558
+ if (element.tagName !== 'TABLE') return;
2559
+ var table = /** @type {HTMLTableElement} */element;
2560
+ var ref = table[DATA_KEY];
2561
+ if (ref) {
2562
+ if (isRefresh) {
2563
+ applyScrollableTable(table, ref.options, ref);
2564
+ } else if (options && Object.keys(options).length > 0) {
2565
+ ref.options = _objectSpread(_objectSpread({}, ref.options), options);
2566
+ var _result = applyScrollableTable(table, ref.options, ref);
2567
+ if (_result !== null && _result !== void 0 && _result.columnWidths) ref.columnWidths = _result.columnWidths;
2568
+ if (_result !== null && _result !== void 0 && _result.rowHeights) ref.rowHeights = _result.rowHeights;
2569
+ }
2570
+ var currentOptions = ref.options;
2571
+ if (currentOptions !== null && currentOptions !== void 0 && currentOptions.bodyHeightDynamic) registerDynamicTable(table, currentOptions);else removeTableFromDynamicSources(table);
2572
+ return;
2573
+ }
2574
+ if (isRefresh) return;
2575
+ console.log('[APX scrollableTable] create', table);
2576
+ var result = applyScrollableTable(table, options, undefined);
2577
+ table[DATA_KEY] = {
2578
+ options: _objectSpread({}, options),
2579
+ columnWidths: (result === null || result === void 0 ? void 0 : result.columnWidths) || undefined,
2580
+ rowHeights: (result === null || result === void 0 ? void 0 : result.rowHeights) || undefined
2581
+ };
2582
+ if (options !== null && options !== void 0 && options.bodyHeightDynamic) registerDynamicTable(table, options);
2583
+ });
2584
+ return apx;
2585
+ };
2586
+ }
2587
+
2588
+ /***/ }),
2589
+
1685
2590
  /***/ "./modules/toast/toast.mjs":
1686
2591
  /*!*********************************!*\
1687
2592
  !*** ./modules/toast/toast.mjs ***!
@@ -3756,10 +4661,16 @@ __webpack_require__.r(__webpack_exports__);
3756
4661
  /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
3757
4662
  /* harmony export */ });
3758
4663
  /* harmony import */ var _css_tristate_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/tristate.css */ "./modules/tristate/css/tristate.css");
4664
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3759
4665
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3760
4666
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3761
4667
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
3762
4668
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
4669
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4670
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4671
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4672
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
4673
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
3763
4674
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3764
4675
  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."); }
3765
4676
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -3768,12 +4679,12 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
3768
4679
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
3769
4680
 
3770
4681
 
3771
- /**
3772
- * Creates a tri-state checkbox for each checkbox element in the apx.elements array.
3773
- * @param {Array<HTMLElement>} apx - An array of HTMLElements which is returned by APX()
3774
- * @example
3775
- * // Call the tristate function on an array of checkbox elements
3776
- * apx.tristate();
4682
+ /**
4683
+ * Creates a tri-state checkbox for each checkbox element in the apx.elements array.
4684
+ * @param {Array<HTMLElement>} apx - An array of HTMLElements which is returned by APX()
4685
+ * @example
4686
+ * // Call the tristate function on an array of checkbox elements
4687
+ * apx.tristate();
3777
4688
  */
3778
4689
  /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(apx) {
3779
4690
  apx.tristate = function () {
@@ -3785,27 +4696,139 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
3785
4696
  originalCheckbox = _createTriStateCheckb2[0],
3786
4697
  tristateDom = _createTriStateCheckb2[1],
3787
4698
  hiddenInput = _createTriStateCheckb2[2];
3788
- //If there is a "options.callbacks.after" callback in options call it
4699
+ originalCheckbox._apxTristate = {
4700
+ dom: tristateDom,
4701
+ hiddenInput: hiddenInput
4702
+ };
3789
4703
  if (options.callbacks && options.callbacks.after && typeof options.callbacks.after === 'function') {
3790
4704
  options.callbacks.after(originalCheckbox, tristateDom, hiddenInput);
3791
4705
  }
3792
4706
  }
3793
4707
  });
4708
+ return {
4709
+ setChildren: function setChildren(childrenApx) {
4710
+ return _setChildren(apx, childrenApx, options);
4711
+ }
4712
+ };
3794
4713
  };
3795
4714
  }
4715
+
4716
+ /**
4717
+ * Link parent tristate(s) to child checkboxes. When exactly one parent: that parent gets
4718
+ * indeterminate-dash automatically and shows dash when children are mixed; click parent to apply its state to all children.
4719
+ * @param {Object} parentApx - APX instance whose elements are the parent checkbox(es)
4720
+ * @param {Object} childrenApx - APX instance whose elements are the child checkbox(es)
4721
+ * @param {Object} options - Options used for the parent (and applied to children when initializing them)
4722
+ */
4723
+ function _setChildren(parentApx, childrenApx, options) {
4724
+ var parents = parentApx.all().filter(function (el) {
4725
+ return el.type === 'checkbox';
4726
+ });
4727
+ if (parents.length === 0) return;
4728
+ if (parents.length > 1) {
4729
+ console.warn('APX tristate setChildren: only the first parent is linked to all children.');
4730
+ }
4731
+ var parentCheckbox = parents[0];
4732
+ var parentRef = parentCheckbox._apxTristate;
4733
+ if (!parentRef) return;
4734
+ var parentDom = parentRef.dom;
4735
+ var parentHiddenInput = parentRef.hiddenInput;
4736
+
4737
+ // Automatically enable indeterminate (dash) on parent when it has children: dash shows only when children are mixed (--mixed)
4738
+ parentDom.classList.add('apx-tristate--unchecked-indeterminate', 'apx-tristate--indeterminate-dash');
4739
+ var childCheckboxes = childrenApx.all().filter(function (el) {
4740
+ return el.type === 'checkbox';
4741
+ });
4742
+ var childRefs = [];
4743
+ function syncParentFromChildren() {
4744
+ if (childRefs.length === 0) return;
4745
+ var states = childRefs.map(function (ref) {
4746
+ return getTristateState(ref.dom);
4747
+ });
4748
+ var allChecked = states.every(function (s) {
4749
+ return s === 'checked';
4750
+ });
4751
+ var allCrossed = states.every(function (s) {
4752
+ return s === 'crossed';
4753
+ });
4754
+ var allUnchecked = states.every(function (s) {
4755
+ return s === 'unchecked';
4756
+ });
4757
+ var mixed = !allChecked && !allCrossed && !allUnchecked;
4758
+ parentDom.classList.remove('unchecked', 'checked', 'crossed');
4759
+ if (mixed) parentDom.classList.add('apx-tristate--mixed');else parentDom.classList.remove('apx-tristate--mixed');
4760
+ if (allChecked) {
4761
+ parentDom.classList.add('checked');
4762
+ parentHiddenInput.value = 'true';
4763
+ } else if (allCrossed) {
4764
+ parentDom.classList.add('crossed');
4765
+ parentHiddenInput.value = 'false';
4766
+ } else {
4767
+ parentDom.classList.add('unchecked');
4768
+ parentHiddenInput.removeAttribute('name');
4769
+ parentHiddenInput.removeAttribute('value');
4770
+ }
4771
+ }
4772
+ function applyParentToChildren() {
4773
+ var parentState = getTristateState(parentDom);
4774
+ childRefs.forEach(function (ref) {
4775
+ return setTristateState(ref.checkbox, ref.dom, ref.hiddenInput, parentState);
4776
+ });
4777
+ }
4778
+ var childOptions = _objectSpread(_objectSpread({}, options), {}, {
4779
+ callbacks: {
4780
+ after: function after(checkbox, dom, hiddenInput) {
4781
+ childRefs.push({
4782
+ checkbox: checkbox,
4783
+ dom: dom,
4784
+ hiddenInput: hiddenInput
4785
+ });
4786
+ },
4787
+ change: syncParentFromChildren
4788
+ }
4789
+ });
4790
+ childrenApx.tristate(childOptions);
4791
+ syncParentFromChildren();
4792
+ parentDom.addEventListener('click', function () {
4793
+ return setTimeout(applyParentToChildren, 0);
4794
+ });
4795
+ }
4796
+ function getTristateState(dom) {
4797
+ if (dom.classList.contains('checked')) return 'checked';
4798
+ if (dom.classList.contains('crossed')) return 'crossed';
4799
+ return 'unchecked';
4800
+ }
4801
+ function setTristateState(checkbox, dom, hiddenInput, state) {
4802
+ dom.classList.remove('unchecked', 'checked', 'crossed');
4803
+ dom.classList.add(state);
4804
+ var name = checkbox.dataset.name || checkbox.getAttribute('data-name') || checkbox.name || '';
4805
+ if (state === 'checked') {
4806
+ hiddenInput.value = 'true';
4807
+ if (name) hiddenInput.setAttribute('name', name);
4808
+ checkbox.checked = true;
4809
+ } else if (state === 'crossed') {
4810
+ hiddenInput.value = 'false';
4811
+ if (name) hiddenInput.setAttribute('name', name);
4812
+ checkbox.checked = false;
4813
+ } else {
4814
+ hiddenInput.removeAttribute('name');
4815
+ hiddenInput.removeAttribute('value');
4816
+ checkbox.checked = false;
4817
+ }
4818
+ }
3796
4819
  function toggleTriStateCheckboxState(customCheckbox, actualCheckbox, hiddenInput) {
3797
- if (customCheckbox.classList.contains('checked')) {
3798
- customCheckbox.classList.remove('checked');
4820
+ var wasChecked = customCheckbox.classList.contains('checked');
4821
+ var wasCrossed = customCheckbox.classList.contains('crossed');
4822
+ customCheckbox.classList.remove('unchecked', 'checked', 'crossed');
4823
+ if (wasChecked) {
3799
4824
  customCheckbox.classList.add('crossed');
3800
4825
  actualCheckbox.checked = false;
3801
4826
  hiddenInput.value = 'false';
3802
- } else if (customCheckbox.classList.contains('crossed')) {
3803
- customCheckbox.classList.remove('crossed');
4827
+ } else if (wasCrossed) {
3804
4828
  customCheckbox.classList.add('unchecked');
3805
4829
  hiddenInput.removeAttribute('name'); // Ensure the hidden input doesn't post any value
3806
4830
  hiddenInput.removeAttribute('value'); // Ensure the hidden input doesn't post any value
3807
4831
  } else {
3808
- customCheckbox.classList.remove('unchecked');
3809
4832
  customCheckbox.classList.add('checked');
3810
4833
  actualCheckbox.checked = true;
3811
4834
  hiddenInput.value = 'true';
@@ -3824,14 +4847,26 @@ function createTriStateCheckbox(checkboxElement, options) {
3824
4847
  var tristateDom = document.createElement('div');
3825
4848
  tristateDom.classList.add('apx-tristate');
3826
4849
  if (options.size) {
3827
- if (options.size.width) {
3828
- tristateDom.style.width = options.size.width + 'px';
4850
+ if (options.size.width != null) {
4851
+ var w = options.size.width;
4852
+ if (typeof w !== 'number' && typeof w !== 'string') {
4853
+ throw new TypeError('tristate size.width must be a number (px) or a string (CSS length).');
4854
+ }
4855
+ tristateDom.style.width = typeof w === 'number' ? w + 'px' : String(w);
3829
4856
  }
3830
- if (options.size.height) {
3831
- tristateDom.style.height = options.size.height + 'px';
4857
+ if (options.size.height != null) {
4858
+ var h = options.size.height;
4859
+ if (typeof h !== 'number' && typeof h !== 'string') {
4860
+ throw new TypeError('tristate size.height must be a number (px) or a string (CSS length).');
4861
+ }
4862
+ tristateDom.style.height = typeof h === 'number' ? h + 'px' : String(h);
3832
4863
  }
3833
4864
  }
3834
4865
  if (options.classes) (_tristateDom$classLis = tristateDom.classList).add.apply(_tristateDom$classLis, _toConsumableArray(computeClasses(options.classes)));
4866
+ var colors = resolveColors(options);
4867
+ if (colors.tick != null) tristateDom.style.setProperty('--apx-tristate-tick-color', String(colors.tick));
4868
+ if (colors.checked != null) tristateDom.style.setProperty('--apx-tristate-checked-color', String(colors.checked));
4869
+ if (colors.crossed != null) tristateDom.style.setProperty('--apx-tristate-crossed-color', String(colors.crossed));
3835
4870
  tristateDom.style.margin = checkboxStyle.margin;
3836
4871
  if (checkboxElement.checked) {
3837
4872
  tristateDom.classList.add('checked');
@@ -3874,18 +4909,16 @@ function createTriStateCheckbox(checkboxElement, options) {
3874
4909
  return [checkboxElement, tristateDom, hiddenInput];
3875
4910
  }
3876
4911
  function setDefaultState(options, tristateDom, hiddenInput) {
3877
- //for all values possible for defaultState, set the initial state of the checkbox
4912
+ // Ensure only one state class is set (uncheckedAppearance modifiers must not affect checked/crossed)
4913
+ tristateDom.classList.remove('unchecked', 'checked', 'crossed');
3878
4914
  if (options.defaultState === 'checked') {
3879
- tristateDom.classList.remove('unchecked');
3880
4915
  tristateDom.classList.add('checked');
3881
4916
  hiddenInput.value = 'true';
3882
4917
  } else if (options.defaultState === 'unchecked') {
3883
- tristateDom.classList.remove('checked');
3884
4918
  tristateDom.classList.add('unchecked');
3885
4919
  hiddenInput.removeAttribute('name'); // Ensure the hidden input doesn't post any value
3886
4920
  hiddenInput.removeAttribute('value'); // Ensure the hidden input doesn't post any value
3887
4921
  } else if (options.defaultState === 'crossed') {
3888
- tristateDom.classList.remove('checked');
3889
4922
  tristateDom.classList.add('crossed');
3890
4923
  hiddenInput.value = 'false';
3891
4924
  }
@@ -3901,6 +4934,14 @@ function computeClasses(classes) {
3901
4934
  }
3902
4935
  return computedClasses;
3903
4936
  }
4937
+ function resolveColors(options) {
4938
+ var c = options.colors || {};
4939
+ return {
4940
+ tick: c.tick != null ? c.tick : options.tickColor,
4941
+ checked: c.checked != null ? c.checked : options.checkedColor,
4942
+ crossed: c.crossed != null ? c.crossed : options.crossedColor
4943
+ };
4944
+ }
3904
4945
  function bubbleEventsToOriginalCheckbox(options, checkboxElement, tristateDom, hiddenInput, event) {
3905
4946
  //if options.callbacks.change is set, call it
3906
4947
  if (options.callbacks && options.callbacks.change && typeof options.callbacks.change === 'function') {
@@ -4050,10 +5091,12 @@ __webpack_require__.r(__webpack_exports__);
4050
5091
  /* harmony export */ });
4051
5092
  /* harmony import */ var _modules_listen_listen_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/listen/listen.mjs */ "./modules/listen/listen.mjs");
4052
5093
  /* harmony import */ var _modules_tristate_tristate_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/tristate/tristate.mjs */ "./modules/tristate/tristate.mjs");
4053
- /* harmony import */ var _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dialog/dialog.mjs */ "./modules/dialog/dialog.mjs");
4054
- /* harmony import */ var _modules_toast_toast_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/toast/toast.mjs */ "./modules/toast/toast.mjs");
4055
- /* harmony import */ var _modules_common_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/common.mjs */ "./modules/common.mjs");
4056
- /* harmony import */ var _modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/tools/exports.mjs */ "./modules/tools/exports.mjs");
5094
+ /* harmony import */ var _modules_scrollableTable_scrollableTable_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/scrollableTable/scrollableTable.mjs */ "./modules/scrollableTable/scrollableTable.mjs");
5095
+ /* harmony import */ var _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/dialog/dialog.mjs */ "./modules/dialog/dialog.mjs");
5096
+ /* harmony import */ var _modules_toast_toast_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/toast/toast.mjs */ "./modules/toast/toast.mjs");
5097
+ /* harmony import */ var _modules_common_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/common.mjs */ "./modules/common.mjs");
5098
+ /* harmony import */ var _modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/tools/exports.mjs */ "./modules/tools/exports.mjs");
5099
+
4057
5100
 
4058
5101
 
4059
5102
 
@@ -4166,13 +5209,14 @@ var APX = function APX(input) {
4166
5209
  };
4167
5210
  (0,_modules_listen_listen_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(apx);
4168
5211
  (0,_modules_tristate_tristate_mjs__WEBPACK_IMPORTED_MODULE_1__["default"])(apx);
4169
- (0,_modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_5__.augmentWithPack)(apx);
5212
+ (0,_modules_scrollableTable_scrollableTable_mjs__WEBPACK_IMPORTED_MODULE_2__["default"])(apx);
5213
+ (0,_modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_6__.augmentWithPack)(apx);
4170
5214
  return apx;
4171
5215
  };
4172
- APX.loadCss = _modules_common_mjs__WEBPACK_IMPORTED_MODULE_4__.loadCss;
4173
- APX.dialog = _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_2__["default"];
4174
- APX.toast = _modules_toast_toast_mjs__WEBPACK_IMPORTED_MODULE_3__["default"];
4175
- APX.tools = _modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_5__.tools;
5216
+ APX.loadCss = _modules_common_mjs__WEBPACK_IMPORTED_MODULE_5__.loadCss;
5217
+ APX.dialog = _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_3__["default"];
5218
+ APX.toast = _modules_toast_toast_mjs__WEBPACK_IMPORTED_MODULE_4__["default"];
5219
+ APX.tools = _modules_tools_exports_mjs__WEBPACK_IMPORTED_MODULE_6__.tools;
4176
5220
  APX.isAPXObject = function (obj) {
4177
5221
  return obj && obj._isAPXObject === true;
4178
5222
  };