@economic/taco 2.47.0-server.5 → 2.47.0-server.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +8 -10
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +4 -4
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +89 -100
- package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -1
- package/dist/taco.cjs.development.js +98 -113
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -12689,16 +12689,14 @@ function Row(props) {
|
|
|
12689
12689
|
var search = props.table.getState().globalFilter;
|
|
12690
12690
|
var hiddenColumns = getHiddenColumns(props.table.getState().columnVisibility);
|
|
12691
12691
|
var pageIndexesToFetch = [];
|
|
12692
|
-
|
|
12693
|
-
//
|
|
12694
|
-
|
|
12695
|
-
|
|
12696
|
-
|
|
12697
|
-
|
|
12698
|
-
|
|
12699
|
-
|
|
12700
|
-
}
|
|
12701
|
-
*/
|
|
12692
|
+
// if there's no direction, it means the scroll bar got dropped un unloaded pages,
|
|
12693
|
+
// in that case, load forward and backward pages to prevent skeletons
|
|
12694
|
+
if (scrollDirection === 'backward' || !scrollDirection) {
|
|
12695
|
+
var backIndex = pageIndex - 1;
|
|
12696
|
+
if (backIndex > -1) {
|
|
12697
|
+
pageIndexesToFetch.push(backIndex);
|
|
12698
|
+
}
|
|
12699
|
+
}
|
|
12702
12700
|
// always load the next page
|
|
12703
12701
|
if ((scrollDirection === 'forward' || !scrollDirection) && pageIndex + 2 < tableMeta.server.pageCount) {
|
|
12704
12702
|
pageIndexesToFetch.push(pageIndex + 1);
|
|
@@ -12808,7 +12806,7 @@ function getPaddingEndOffset(table, options) {
|
|
|
12808
12806
|
return ROW_HEIGHT_ESTIMATES.medium * ((_options$virtualiserP = options === null || options === void 0 ? void 0 : options.virtualiserPaddingEndOffset) !== null && _options$virtualiserP !== void 0 ? _options$virtualiserP : 1) * bottomRows.length;
|
|
12809
12807
|
}
|
|
12810
12808
|
function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIndex, options) {
|
|
12811
|
-
var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3,
|
|
12809
|
+
var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _virtualItems$end, _virtualItems;
|
|
12812
12810
|
var tableMeta = table.options.meta;
|
|
12813
12811
|
var isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
|
|
12814
12812
|
var rows = (_table$getCenterRows = table.getCenterRows()) !== null && _table$getCenterRows !== void 0 ? _table$getCenterRows : [];
|
|
@@ -12861,7 +12859,7 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
|
|
|
12861
12859
|
var paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
|
|
12862
12860
|
var startValue = isTableRowGrouped ? ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size) : (_virtualItems$padding3 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding3 === void 0 ? void 0 : _virtualItems$padding3.start;
|
|
12863
12861
|
// styling for offsetting rows - this "is" the virtualisation
|
|
12864
|
-
var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0,
|
|
12862
|
+
var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, totalSize - ((_virtualItems$end = (_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end) !== null && _virtualItems$end !== void 0 ? _virtualItems$end : 0))] : [0, 0],
|
|
12865
12863
|
paddingTop = _ref[0],
|
|
12866
12864
|
paddingBottom = _ref[1];
|
|
12867
12865
|
// ensure default active rows are scrolled to
|
|
@@ -12880,8 +12878,8 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
|
|
|
12880
12878
|
if (count || table.getBottomRows().length) {
|
|
12881
12879
|
style = {
|
|
12882
12880
|
height: totalSize,
|
|
12883
|
-
paddingBottom: paddingBottom,
|
|
12884
|
-
paddingTop: paddingTop
|
|
12881
|
+
paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,
|
|
12882
|
+
paddingTop: isNaN(paddingTop) ? 0 : paddingTop
|
|
12885
12883
|
};
|
|
12886
12884
|
}
|
|
12887
12885
|
// only render non sticky rows
|
|
@@ -23133,76 +23131,68 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23133
23131
|
reset = false;
|
|
23134
23132
|
}
|
|
23135
23133
|
try {
|
|
23134
|
+
// if a request is already pending for this page (and it's not a reset), skip it
|
|
23136
23135
|
if (_pendingPageRequests.current[pageIndex] && !reset) {
|
|
23137
23136
|
return Promise.resolve();
|
|
23138
23137
|
}
|
|
23139
23138
|
var hasChangedData = JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current) || search !== _lastUsedSearch.current;
|
|
23140
|
-
// set values so we can track if they changed between loads
|
|
23141
|
-
_lastUsedSorting.current = sorting;
|
|
23142
|
-
_lastUsedFilters.current = filters;
|
|
23143
|
-
_lastUsedSearch.current = search;
|
|
23144
|
-
_lastUsedHiddenColumns.current = hiddenColumns;
|
|
23145
23139
|
// if the page is already loaded and has actual rows, abort
|
|
23146
|
-
if (data.
|
|
23147
|
-
|
|
23148
|
-
if (data.rows[position * pageSize] !== undefined) {
|
|
23149
|
-
return Promise.resolve();
|
|
23150
|
-
}
|
|
23140
|
+
if (data.cache[pageIndex] && data.cache[pageIndex][0] && !hasChangedData && !reset) {
|
|
23141
|
+
return Promise.resolve();
|
|
23151
23142
|
}
|
|
23143
|
+
// create an id to track the update
|
|
23144
|
+
var requestId = uuid.v4();
|
|
23152
23145
|
// set the page as loading, so that subsequent requests don't retrigger it
|
|
23153
23146
|
_pendingPageRequests.current[pageIndex] = true;
|
|
23154
|
-
var
|
|
23155
|
-
|
|
23156
|
-
return
|
|
23157
|
-
|
|
23158
|
-
|
|
23159
|
-
|
|
23160
|
-
|
|
23161
|
-
|
|
23162
|
-
|
|
23163
|
-
|
|
23164
|
-
|
|
23165
|
-
|
|
23166
|
-
|
|
23167
|
-
|
|
23168
|
-
|
|
23169
|
-
|
|
23170
|
-
|
|
23171
|
-
|
|
23172
|
-
|
|
23173
|
-
|
|
23174
|
-
|
|
23175
|
-
|
|
23176
|
-
|
|
23177
|
-
|
|
23178
|
-
|
|
23179
|
-
|
|
23180
|
-
|
|
23181
|
-
|
|
23182
|
-
|
|
23183
|
-
|
|
23184
|
-
|
|
23185
|
-
|
|
23186
|
-
|
|
23187
|
-
|
|
23188
|
-
|
|
23189
|
-
|
|
23190
|
-
|
|
23191
|
-
|
|
23192
|
-
|
|
23147
|
+
var _temp2 = _catch(function () {
|
|
23148
|
+
_lastRequestId.current = requestId;
|
|
23149
|
+
return Promise.resolve(fetchPage(pageIndex, pageSize, sorting, filters, search, hiddenColumns)).then(function (response) {
|
|
23150
|
+
length.current = response.length;
|
|
23151
|
+
// update state, here we do some "magic" to support "load in place"
|
|
23152
|
+
setData(function (currentData) {
|
|
23153
|
+
// if this request wasn't the last one, just return the current state to prevent weird updates
|
|
23154
|
+
if (_lastRequestId.current !== requestId) {
|
|
23155
|
+
return currentData;
|
|
23156
|
+
}
|
|
23157
|
+
var direction = getDirection(pageIndex, currentData.pages);
|
|
23158
|
+
var nextPages = getPages(pageIndex, currentData.lastFetchedPage, reset ? [] : currentData.pages, direction);
|
|
23159
|
+
// set values so we can track if they changed between loads
|
|
23160
|
+
_lastUsedSorting.current = sorting;
|
|
23161
|
+
_lastUsedFilters.current = filters;
|
|
23162
|
+
_lastUsedSearch.current = search;
|
|
23163
|
+
_lastUsedHiddenColumns.current = hiddenColumns;
|
|
23164
|
+
// cache data as an object to prevent any duplicates for pages
|
|
23165
|
+
var nextCache;
|
|
23166
|
+
if (reset || hasChangedData || !direction) {
|
|
23167
|
+
nextCache = nextPages.reduce(function (acc, p) {
|
|
23168
|
+
var _extends2;
|
|
23169
|
+
return _extends({}, acc, (_extends2 = {}, _extends2[p] = Array(pageSize).fill(undefined), _extends2));
|
|
23170
|
+
}, {});
|
|
23171
|
+
} else {
|
|
23172
|
+
nextCache = _extends({}, currentData.cache);
|
|
23173
|
+
}
|
|
23174
|
+
nextCache[pageIndex] = response.data;
|
|
23175
|
+
// cleanup "unloaded" pages
|
|
23176
|
+
if (direction === 'forward' && currentData.rows.length >= DATASET_SIZE) {
|
|
23177
|
+
delete nextCache[currentData.pages[0]];
|
|
23178
|
+
} else if (direction === 'backward' && currentData.rows.length >= DATASET_SIZE) {
|
|
23179
|
+
delete nextCache[currentData.pages[currentData.pages.length - 1]];
|
|
23180
|
+
}
|
|
23181
|
+
// remap rows from the cached data - do it here and not in render to save some performance
|
|
23182
|
+
var rows = Object.values(nextCache).reduce(function (acc, p) {
|
|
23183
|
+
return acc.concat(p);
|
|
23184
|
+
}, []);
|
|
23185
|
+
return {
|
|
23186
|
+
cache: nextCache,
|
|
23187
|
+
pages: nextPages,
|
|
23188
|
+
rows: rows,
|
|
23189
|
+
lastFetchedPage: pageIndex
|
|
23190
|
+
};
|
|
23193
23191
|
});
|
|
23194
|
-
|
|
23195
|
-
|
|
23196
|
-
|
|
23197
|
-
|
|
23198
|
-
// update the last loaded page
|
|
23199
|
-
_lastFetchedPage.current = {
|
|
23200
|
-
index: pageIndex,
|
|
23201
|
-
direction: direction
|
|
23202
|
-
};
|
|
23203
|
-
if (_wasThrown2) throw _result2;
|
|
23204
|
-
return _result2;
|
|
23205
|
-
});
|
|
23192
|
+
// reset pending requests
|
|
23193
|
+
delete _pendingPageRequests.current[pageIndex];
|
|
23194
|
+
});
|
|
23195
|
+
}, function () {});
|
|
23206
23196
|
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
23207
23197
|
} catch (e) {
|
|
23208
23198
|
return Promise.reject(e);
|
|
@@ -23221,20 +23211,21 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23221
23211
|
// data will be filled after the first request
|
|
23222
23212
|
var _React$useState = React__default.useState({
|
|
23223
23213
|
rows: [],
|
|
23224
|
-
pages: []
|
|
23214
|
+
pages: [],
|
|
23215
|
+
cache: {},
|
|
23216
|
+
lastFetchedPage: undefined
|
|
23225
23217
|
}),
|
|
23226
23218
|
data = _React$useState[0],
|
|
23227
23219
|
setData = _React$useState[1];
|
|
23228
23220
|
// track which pages have been loaded to dedupe requests
|
|
23229
23221
|
var _pendingPageRequests = React__default.useRef({});
|
|
23222
|
+
// it's possible to spam updates, e.g. sort, so we don't set state if the last request wasn't the current oen
|
|
23223
|
+
var _lastRequestId = React__default.useRef();
|
|
23224
|
+
// store last used properties
|
|
23230
23225
|
var _lastUsedSorting = React__default.useRef([]);
|
|
23231
23226
|
var _lastUsedFilters = React__default.useRef([]);
|
|
23232
23227
|
var _lastUsedSearch = React__default.useRef();
|
|
23233
23228
|
var _lastUsedHiddenColumns = React__default.useRef([]);
|
|
23234
|
-
var _lastFetchedPage = React__default.useRef({
|
|
23235
|
-
index: undefined,
|
|
23236
|
-
direction: undefined
|
|
23237
|
-
});
|
|
23238
23229
|
var loadAll = function loadAll(sorting, filters, search, hiddenColumns) {
|
|
23239
23230
|
try {
|
|
23240
23231
|
// set values so we can track if they changed between loads
|
|
@@ -23246,9 +23237,18 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23246
23237
|
return _catch(function () {
|
|
23247
23238
|
return Promise.resolve(fetchAll(sorting, filters, search, hiddenColumns)).then(function (response) {
|
|
23248
23239
|
length.current = response.length;
|
|
23240
|
+
var pages = [];
|
|
23241
|
+
var cache = {};
|
|
23242
|
+
Array.from(Array(response.length / pageSize).keys()).forEach(function (index) {
|
|
23243
|
+
pages.push(index);
|
|
23244
|
+
var startIndex = index * pageSize;
|
|
23245
|
+
cache[index] = response.data.slice(startIndex, startIndex + pageSize);
|
|
23246
|
+
});
|
|
23249
23247
|
setData({
|
|
23248
|
+
cache: cache,
|
|
23249
|
+
pages: pages,
|
|
23250
23250
|
rows: response.data,
|
|
23251
|
-
|
|
23251
|
+
lastFetchedPage: undefined
|
|
23252
23252
|
});
|
|
23253
23253
|
});
|
|
23254
23254
|
}, function () {});
|
|
@@ -23265,11 +23265,10 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23265
23265
|
};
|
|
23266
23266
|
var invalidate = function invalidate() {
|
|
23267
23267
|
try {
|
|
23268
|
-
console.log('invalidate');
|
|
23269
23268
|
// reset stuff
|
|
23270
23269
|
_pendingPageRequests.current = {};
|
|
23271
23270
|
// load the current page again
|
|
23272
|
-
return loadPage(getCurrentPage(data.pages
|
|
23271
|
+
return loadPage(getCurrentPage(data.pages), _lastUsedSorting.current, _lastUsedFilters.current, _lastUsedSearch.current, _lastUsedHiddenColumns.current, true);
|
|
23273
23272
|
} catch (e) {
|
|
23274
23273
|
return Promise.reject(e);
|
|
23275
23274
|
}
|
|
@@ -23278,7 +23277,7 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23278
23277
|
try {
|
|
23279
23278
|
// reset before loading the current page
|
|
23280
23279
|
_pendingPageRequests.current = {};
|
|
23281
|
-
return loadPage(getCurrentPage(data.pages
|
|
23280
|
+
return loadPage(getCurrentPage(data.pages), sorting, _lastUsedFilters.current, _lastUsedSearch.current, _lastUsedHiddenColumns.current, true);
|
|
23282
23281
|
} catch (e) {
|
|
23283
23282
|
return Promise.reject(e);
|
|
23284
23283
|
}
|
|
@@ -23287,7 +23286,7 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23287
23286
|
try {
|
|
23288
23287
|
// reset before loading the current page
|
|
23289
23288
|
_pendingPageRequests.current = {};
|
|
23290
|
-
return loadPage(
|
|
23289
|
+
return loadPage(0, _lastUsedSorting.current, filters, _lastUsedSearch.current, hiddenColumns, true);
|
|
23291
23290
|
} catch (e) {
|
|
23292
23291
|
return Promise.reject(e);
|
|
23293
23292
|
}
|
|
@@ -23296,7 +23295,7 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23296
23295
|
try {
|
|
23297
23296
|
// reset before loading the current page
|
|
23298
23297
|
_pendingPageRequests.current = {};
|
|
23299
|
-
return loadPage(
|
|
23298
|
+
return loadPage(0, _lastUsedSorting.current, _lastUsedFilters.current, search, hiddenColumns, true);
|
|
23300
23299
|
} catch (e) {
|
|
23301
23300
|
return Promise.reject(e);
|
|
23302
23301
|
}
|
|
@@ -23314,37 +23313,27 @@ function useTableDataLoader2(fetchPage, fetchAll, options) {
|
|
|
23314
23313
|
_experimentalDataLoader2: true
|
|
23315
23314
|
}, invalidate];
|
|
23316
23315
|
}
|
|
23317
|
-
function getCurrentPage(currentPages
|
|
23316
|
+
function getCurrentPage(currentPages) {
|
|
23318
23317
|
if (currentPages.length <= 2) {
|
|
23319
|
-
|
|
23320
|
-
return (_currentPages$ = currentPages[0]) !== null && _currentPages$ !== void 0 ? _currentPages$ : 0;
|
|
23321
|
-
}
|
|
23322
|
-
var middle = Math.floor(DATASET_SIZE_MULTIPLIER / 2);
|
|
23323
|
-
if (lastFetchedPage.index) {
|
|
23324
|
-
if (!lastFetchedPage.direction) {
|
|
23325
|
-
return lastFetchedPage.index;
|
|
23326
|
-
}
|
|
23327
|
-
return lastFetchedPage.direction === 'forward' ? lastFetchedPage.index + middle : lastFetchedPage.index - middle;
|
|
23318
|
+
return currentPages[0];
|
|
23328
23319
|
}
|
|
23329
|
-
|
|
23320
|
+
// for even page lengths we can't know which is the current visible page - it could even be both
|
|
23321
|
+
// so we load one of them and rely on the "load next/previous page" functionality in row
|
|
23322
|
+
var middle = Math.floor(currentPages.length / 2);
|
|
23323
|
+
return currentPages[middle];
|
|
23330
23324
|
}
|
|
23331
|
-
function
|
|
23332
|
-
if (
|
|
23333
|
-
|
|
23334
|
-
}
|
|
23335
|
-
if (pageIndex > lastUsedPage.index) {
|
|
23336
|
-
if (lastUsedPage.index + 1 === pageIndex || lastUsedPage.index + DATASET_SIZE_MULTIPLIER === pageIndex) {
|
|
23325
|
+
function getDirection(pageIndex, currentPages) {
|
|
23326
|
+
if (currentPages.length) {
|
|
23327
|
+
if (pageIndex === currentPages[currentPages.length - 1] + 1) {
|
|
23337
23328
|
return 'forward';
|
|
23338
|
-
}
|
|
23339
|
-
} else if (pageIndex < lastUsedPage.index) {
|
|
23340
|
-
if (lastUsedPage.index - 1 === pageIndex || lastUsedPage.index - DATASET_SIZE_MULTIPLIER === pageIndex) {
|
|
23329
|
+
} else if (pageIndex === currentPages[0] - 1 || currentPages.length === 2 && currentPages[0] !== 0 && pageIndex === currentPages[0]) {
|
|
23341
23330
|
return 'backward';
|
|
23342
23331
|
}
|
|
23343
23332
|
}
|
|
23344
23333
|
return undefined;
|
|
23345
23334
|
}
|
|
23346
|
-
function getPages(pageIndex,
|
|
23347
|
-
if (currentPages.length && (pageIndex ===
|
|
23335
|
+
function getPages(pageIndex, lastUsedPageIndex, currentPages, direction) {
|
|
23336
|
+
if (currentPages.length && (pageIndex === lastUsedPageIndex || currentPages.includes(pageIndex))) {
|
|
23348
23337
|
return currentPages;
|
|
23349
23338
|
}
|
|
23350
23339
|
if (direction === 'forward') {
|
|
@@ -23355,11 +23344,7 @@ function getPages(pageIndex, lastUsedPage, currentPages, direction) {
|
|
|
23355
23344
|
var _nextPages = currentPages.length === DATASET_SIZE_MULTIPLIER ? currentPages.slice(0, -1) : currentPages;
|
|
23356
23345
|
return [pageIndex].concat(_nextPages);
|
|
23357
23346
|
}
|
|
23358
|
-
|
|
23359
|
-
return [0];
|
|
23360
|
-
}
|
|
23361
|
-
// don't go forward, the current page will trigger load of the next page
|
|
23362
|
-
return [pageIndex - 1, pageIndex];
|
|
23347
|
+
return [pageIndex];
|
|
23363
23348
|
}
|
|
23364
23349
|
|
|
23365
23350
|
var useBoundaryOverflowDetection = function useBoundaryOverflowDetection(ref, dependencies) {
|