UNPKG

@coveord/plasma-mantine

Version:

A Plasma flavoured Mantine theme

123 lines (122 loc) 4.57 kB
"use strict"; 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