@coveord/plasma-mantine
Version:
A Plasma flavoured Mantine theme
123 lines (122 loc) • 4.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "usePersistedColumnVisibility", {
enumerable: true,
get: function() {
return usePersistedColumnVisibility;
}
});
var _object_spread = require("@swc/helpers/_/_object_spread");
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
var _type_of = require("@swc/helpers/_/_type_of");
var _react = require("react");
var _localstorage = require("../../utils/local-storage.js");
var storagePath = function storagePath(tableId) {
return [
'table',
tableId,
'columnVisibility'
];
};
var capVisibleColumns = function capVisibleColumns(visibility, max) {
var visibleCount = 0;
var result = {};
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
for(var _iterator = Object.entries(visibility)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
var _step_value = _sliced_to_array._(_step.value, 2), key = _step_value[0], isVisible = _step_value[1];
var shouldShow = isVisible && visibleCount < max;
result[key] = shouldShow;
if (shouldShow) {
visibleCount++;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return result;
};
var sanitizeFromStorage = function sanitizeFromStorage(raw, validColumnIds) {
var result = {};
if ((typeof raw === "undefined" ? "undefined" : _type_of._(raw)) !== 'object' || raw === null || Array.isArray(raw)) {
return result;
}
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
for(var _iterator = Object.entries(raw)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
var _step_value = _sliced_to_array._(_step.value, 2), key = _step_value[0], value = _step_value[1];
if (validColumnIds.has(key) && typeof value === 'boolean') {
result[key] = value;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return result;
};
var usePersistedColumnVisibility = function usePersistedColumnVisibility(defaultVisibleColumns, maxSelectableColumns, tableId) {
var path = tableId ? storagePath(tableId) : null;
var validIds = (0, _react.useMemo)(function() {
return new Set(Object.keys(defaultVisibleColumns));
}, [
defaultVisibleColumns
]);
var hasValidIds = validIds.size > 0;
var initialColumnVisibility = (0, _react.useMemo)(function() {
if (!path || !hasValidIds) {
return defaultVisibleColumns;
}
var stored = (0, _localstorage.getStorageItem)(_to_consumable_array._(path));
if (stored !== null) {
var sanitized = sanitizeFromStorage(stored, validIds);
if (Object.keys(sanitized).length > 0) {
return capVisibleColumns(_object_spread._({}, defaultVisibleColumns, sanitized), maxSelectableColumns);
}
}
return capVisibleColumns(defaultVisibleColumns, maxSelectableColumns);
}, [
path,
validIds,
defaultVisibleColumns,
maxSelectableColumns
]);
var persistColumnVisibility = (0, _react.useCallback)(function(visibility) {
if (!path || !hasValidIds) {
return;
}
(0, _localstorage.setStorageItem)(_to_consumable_array._(path), visibility);
}, [
path,
hasValidIds
]);
return {
initialColumnVisibility: initialColumnVisibility,
persistColumnVisibility: persistColumnVisibility
};
};
//# sourceMappingURL=use-persisted-column-visibility.js.map