UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

220 lines (219 loc) • 17.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { SelectAllStatus: function() { return SelectAllStatus; }, SelectionProvider: function() { return SelectionProvider; }, useSelection: function() { return useSelection; } }); const _qs = /*#__PURE__*/ _interop_require_default(require("qs")); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reactrouterdom = require("react-router-dom"); const _Locale = require("../../../../utilities/Locale"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var SelectAllStatus; (function(SelectAllStatus) { SelectAllStatus["AllAvailable"] = "allAvailable"; SelectAllStatus["AllInPage"] = "allInPage"; SelectAllStatus["None"] = "none"; SelectAllStatus["Some"] = "some"; })(SelectAllStatus || (SelectAllStatus = {})); const Context = /*#__PURE__*/ (0, _react.createContext)({}); const SelectionProvider = ({ children, docs = [], totalDocs })=>{ const contextRef = (0, _react.useRef)({}); const history = (0, _reactrouterdom.useHistory)(); const { code: locale } = (0, _Locale.useLocale)(); const [selected, setSelected] = (0, _react.useState)({}); const [selectAll, setSelectAll] = (0, _react.useState)("none"); const [count, setCount] = (0, _react.useState)(0); const toggleAll = (0, _react.useCallback)((allAvailable = false)=>{ const rows = {}; if (allAvailable) { setSelectAll("allAvailable"); docs.forEach(({ id })=>{ rows[id] = true; }); } else if (selectAll === "allAvailable" || selectAll === "allInPage") { setSelectAll("none"); docs.forEach(({ id })=>{ rows[id] = false; }); } else { docs.forEach(({ id })=>{ rows[id] = selectAll !== "some"; }); } setSelected(rows); }, [ docs, selectAll ]); const setSelection = (0, _react.useCallback)((id)=>{ const isSelected = !selected[id]; const newSelected = { ...selected, [id]: isSelected }; if (!isSelected) { setSelectAll("some"); } setSelected(newSelected); }, [ selected ]); const getQueryParams = (0, _react.useCallback)((additionalParams)=>{ let where; if (selectAll === "allAvailable") { const params = _qs.default.parse(history.location.search, { ignoreQueryPrefix: true }).where; where = params || { id: { not_equals: '' } }; } else { where = { id: { in: Object.keys(selected).filter((id)=>selected[id]).map((id)=>id) } }; } if (additionalParams) { where = { and: [ { ...additionalParams }, where ] }; } return _qs.default.stringify({ locale, where }, { addQueryPrefix: true }); }, [ history.location.search, selectAll, selected, locale ]); (0, _react.useEffect)(()=>{ if (selectAll === "allAvailable") { return; } let some = false; let all = true; Object.values(selected).forEach((val)=>{ all = all && val; some = some || val; }); if (all) { setSelectAll("allInPage"); } else if (some) { setSelectAll("some"); } else { setSelectAll("none"); } }, [ docs, selectAll, selected ]); (0, _react.useEffect)(()=>{ const rows = {}; if (docs.length) { docs.forEach(({ id })=>{ rows[id] = false; }); setSelected(rows); } setSelectAll("none"); }, [ docs, history ]); (0, _react.useEffect)(()=>{ const newCount = selectAll === "allAvailable" ? totalDocs : Object.keys(selected).filter((id)=>selected[id]).length; setCount(newCount); }, [ selectAll, selected, totalDocs ]); contextRef.current = { count, getQueryParams, selectAll, selected, setSelection, toggleAll, totalDocs }; return /*#__PURE__*/ _react.default.createElement(Context.Provider, { value: contextRef.current }, children); }; const useSelection = ()=>(0, _react.useContext)(Context); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0xpc3QvU2VsZWN0aW9uUHJvdmlkZXIvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcblxuaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvTG9jYWxlJ1xuXG5leHBvcnQgZW51bSBTZWxlY3RBbGxTdGF0dXMge1xuICBBbGxBdmFpbGFibGUgPSAnYWxsQXZhaWxhYmxlJyxcbiAgQWxsSW5QYWdlID0gJ2FsbEluUGFnZScsXG4gIE5vbmUgPSAnbm9uZScsXG4gIFNvbWUgPSAnc29tZScsXG59XG5cbnR5cGUgU2VsZWN0aW9uQ29udGV4dCA9IHtcbiAgY291bnQ6IG51bWJlclxuICBnZXRRdWVyeVBhcmFtczogKGFkZGl0aW9uYWxQYXJhbXM/OiBXaGVyZSkgPT4gc3RyaW5nXG4gIHNlbGVjdEFsbDogU2VsZWN0QWxsU3RhdHVzXG4gIHNlbGVjdGVkOiBSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBib29sZWFuPlxuICBzZXRTZWxlY3Rpb246IChpZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkXG4gIHRvZ2dsZUFsbDogKGFsbEF2YWlsYWJsZT86IGJvb2xlYW4pID0+IHZvaWRcbiAgdG90YWxEb2NzOiBudW1iZXJcbn1cblxuY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe30gYXMgU2VsZWN0aW9uQ29udGV4dClcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBkb2NzOiBhbnlbXVxuICB0b3RhbERvY3M6IG51bWJlclxufVxuZXhwb3J0IGNvbnN0IFNlbGVjdGlvblByb3ZpZGVyOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBjaGlsZHJlbiwgZG9jcyA9IFtdLCB0b3RhbERvY3MgfSkgPT4ge1xuICBjb25zdCBjb250ZXh0UmVmID0gdXNlUmVmKHt9IGFzIFNlbGVjdGlvbkNvbnRleHQpXG5cbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VTdGF0ZTxTZWxlY3Rpb25Db250ZXh0WydzZWxlY3RlZCddPih7fSlcbiAgY29uc3QgW3NlbGVjdEFsbCwgc2V0U2VsZWN0QWxsXSA9IHVzZVN0YXRlPFNlbGVjdEFsbFN0YXR1cz4oU2VsZWN0QWxsU3RhdHVzLk5vbmUpXG4gIGNvbnN0IFtjb3VudCwgc2V0Q291bnRdID0gdXNlU3RhdGUoMClcblxuICBjb25zdCB0b2dnbGVBbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoYWxsQXZhaWxhYmxlID0gZmFsc2UpID0+IHtcbiAgICAgIGNvbnN0IHJvd3MgPSB7fVxuICAgICAgaWYgKGFsbEF2YWlsYWJsZSkge1xuICAgICAgICBzZXRTZWxlY3RBbGwoU2VsZWN0QWxsU3RhdHVzLkFsbEF2YWlsYWJsZSlcbiAgICAgICAgZG9jcy5mb3JFYWNoKCh7IGlkIH0pID0+IHtcbiAgICAgICAgICByb3dzW2lkXSA9IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHNlbGVjdEFsbCA9PT0gU2VsZWN0QWxsU3RhdHVzLkFsbEF2YWlsYWJsZSB8fFxuICAgICAgICBzZWxlY3RBbGwgPT09IFNlbGVjdEFsbFN0YXR1cy5BbGxJblBhZ2VcbiAgICAgICkge1xuICAgICAgICBzZXRTZWxlY3RBbGwoU2VsZWN0QWxsU3RhdHVzLk5vbmUpXG4gICAgICAgIGRvY3MuZm9yRWFjaCgoeyBpZCB9KSA9PiB7XG4gICAgICAgICAgcm93c1tpZF0gPSBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jcy5mb3JFYWNoKCh7IGlkIH0pID0+IHtcbiAgICAgICAgICByb3dzW2lkXSA9IHNlbGVjdEFsbCAhPT0gU2VsZWN0QWxsU3RhdHVzLlNvbWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHNldFNlbGVjdGVkKHJvd3MpXG4gICAgfSxcbiAgICBbZG9jcywgc2VsZWN0QWxsXSxcbiAgKVxuXG4gIGNvbnN0IHNldFNlbGVjdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChpZCkgPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9ICFzZWxlY3RlZFtpZF1cbiAgICAgIGNvbnN0IG5ld1NlbGVjdGVkID0ge1xuICAgICAgICAuLi5zZWxlY3RlZCxcbiAgICAgICAgW2lkXTogaXNTZWxlY3RlZCxcbiAgICAgIH1cbiAgICAgIGlmICghaXNTZWxlY3RlZCkge1xuICAgICAgICBzZXRTZWxlY3RBbGwoU2VsZWN0QWxsU3RhdHVzLlNvbWUpXG4gICAgICB9XG4gICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZClcbiAgICB9LFxuICAgIFtzZWxlY3RlZF0sXG4gIClcblxuICBjb25zdCBnZXRRdWVyeVBhcmFtcyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZGRpdGlvbmFsUGFyYW1zPzogV2hlcmUpOiBzdHJpbmcgPT4ge1xuICAgICAgbGV0IHdoZXJlOiBXaGVyZVxuICAgICAgaWYgKHNlbGVjdEFsbCA9PT0gU2VsZWN0QWxsU3RhdHVzLkFsbEF2YWlsYWJsZSkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBxdWVyeVN0cmluZy5wYXJzZShoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCwgeyBpZ25vcmVRdWVyeVByZWZpeDogdHJ1ZSB9KVxuICAgICAgICAgIC53aGVyZSBhcyBXaGVyZVxuICAgICAgICB3aGVyZSA9IHBhcmFtcyB8fCB7XG4gICAgICAgICAgaWQ6IHsgbm90X2VxdWFsczogJycgfSxcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2hlcmUgPSB7XG4gICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgIGluOiBPYmplY3Qua2V5cyhzZWxlY3RlZClcbiAgICAgICAgICAgICAgLmZpbHRlcigoaWQpID0+IHNlbGVjdGVkW2lkXSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IGlkKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYWRkaXRpb25hbFBhcmFtcykge1xuICAgICAgICB3aGVyZSA9IHtcbiAgICAgICAgICBhbmQ6IFt7IC4uLmFkZGl0aW9uYWxQYXJhbXMgfSwgd2hlcmVdLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHdoZXJlLFxuICAgICAgICB9LFxuICAgICAgICB7IGFkZFF1ZXJ5UHJlZml4OiB0cnVlIH0sXG4gICAgICApXG4gICAgfSxcbiAgICBbaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gsIHNlbGVjdEFsbCwgc2VsZWN0ZWQsIGxvY2FsZV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RBbGwgPT09IFNlbGVjdEFsbFN0YXR1cy5BbGxBdmFpbGFibGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsZXQgc29tZSA9IGZhbHNlXG4gICAgbGV0IGFsbCA9IHRydWVcbiAgICBPYmplY3QudmFsdWVzKHNlbGVjdGVkKS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGFsbCA9IGFsbCAmJiB2YWxcbiAgICAgIHNvbWUgPSBzb21lIHx8IHZhbFxuICAgIH0pXG5cbiAgICBpZiAoYWxsKSB7XG4gICAgICBzZXRTZWxlY3RBbGwoU2VsZWN0QWxsU3RhdHVzLkFsbEluUGFnZSlcbiAgICB9IGVsc2UgaWYgKHNvbWUpIHtcbiAgICAgIHNldFNlbGVjdEFsbChTZWxlY3RBbGxTdGF0dXMuU29tZSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U2VsZWN0QWxsKFNlbGVjdEFsbFN0YXR1cy5Ob25lKVxuICAgIH1cbiAgfSwgW2RvY3MsIHNlbGVjdEFsbCwgc2VsZWN0ZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHt9XG4gICAgaWYgKGRvY3MubGVuZ3RoKSB7XG4gICAgICBkb2NzLmZvckVhY2goKHsgaWQgfSkgPT4ge1xuICAgICAgICByb3dzW2lkXSA9IGZhbHNlXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWQocm93cylcbiAgICB9XG4gICAgc2V0U2VsZWN0QWxsKFNlbGVjdEFsbFN0YXR1cy5Ob25lKVxuICB9LCBbZG9jcywgaGlzdG9yeV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdDb3VudCA9XG4gICAgICBzZWxlY3RBbGwgPT09IFNlbGVjdEFsbFN0YXR1cy5BbGxBdmFpbGFibGVcbiAgICAgICAgPyB0b3RhbERvY3NcbiAgICAgICAgOiBPYmplY3Qua2V5cyhzZWxlY3RlZCkuZmlsdGVyKChpZCkgPT4gc2VsZWN0ZWRbaWRdKS5sZW5ndGhcbiAgICBzZXRDb3VudChuZXdDb3VudClcbiAgfSwgW3NlbGVjdEFsbCwgc2VsZWN0ZWQsIHRvdGFsRG9jc10pXG5cbiAgY29udGV4dFJlZi5jdXJyZW50ID0ge1xuICAgIGNvdW50LFxuICAgIGdldFF1ZXJ5UGFyYW1zLFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RlZCxcbiAgICBzZXRTZWxlY3Rpb24sXG4gICAgdG9nZ2xlQWxsLFxuICAgIHRvdGFsRG9jcyxcbiAgfVxuXG4gIHJldHVybiA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFJlZi5jdXJyZW50fT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPlxufVxuXG5leHBvcnQgY29uc3QgdXNlU2VsZWN0aW9uID0gKCk6IFNlbGVjdGlvbkNvbnRleHQgPT4gdXNlQ29udGV4dChDb250ZXh0KVxuIl0sIm5hbWVzIjpbIlNlbGVjdGlvblByb3ZpZGVyIiwidXNlU2VsZWN0aW9uIiwiU2VsZWN0QWxsU3RhdHVzIiwiQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJjaGlsZHJlbiIsImRvY3MiLCJ0b3RhbERvY3MiLCJjb250ZXh0UmVmIiwidXNlUmVmIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJjb2RlIiwibG9jYWxlIiwidXNlTG9jYWxlIiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsInVzZVN0YXRlIiwic2VsZWN0QWxsIiwic2V0U2VsZWN0QWxsIiwiY291bnQiLCJzZXRDb3VudCIsInRvZ2dsZUFsbCIsInVzZUNhbGxiYWNrIiwiYWxsQXZhaWxhYmxlIiwicm93cyIsImZvckVhY2giLCJpZCIsInNldFNlbGVjdGlvbiIsImlzU2VsZWN0ZWQiLCJuZXdTZWxlY3RlZCIsImdldFF1ZXJ5UGFyYW1zIiwiYWRkaXRpb25hbFBhcmFtcyIsIndoZXJlIiwicGFyYW1zIiwicXVlcnlTdHJpbmciLCJwYXJzZSIsImxvY2F0aW9uIiwic2VhcmNoIiwiaWdub3JlUXVlcnlQcmVmaXgiLCJub3RfZXF1YWxzIiwiaW4iLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwibWFwIiwiYW5kIiwic3RyaW5naWZ5IiwiYWRkUXVlcnlQcmVmaXgiLCJ1c2VFZmZlY3QiLCJzb21lIiwiYWxsIiwidmFsdWVzIiwidmFsIiwibGVuZ3RoIiwibmV3Q291bnQiLCJjdXJyZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0lBZ0NhQSxpQkFBaUI7ZUFBakJBOztJQXdJQUMsWUFBWTtlQUFaQTs7OzJEQXhLVzsrREFDbUU7Z0NBQ2hFO3dCQUlEOzs7Ozs7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