UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

155 lines (154 loc) • 13.5 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, { RelationshipProvider: function() { return RelationshipProvider; }, useListRelationships: function() { return useListRelationships; } }); const _qs = /*#__PURE__*/ _interop_require_default(require("qs")); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _useDebounce = /*#__PURE__*/ _interop_require_default(require("../../../../../hooks/useDebounce")); const _Config = require("../../../../utilities/Config"); const _Locale = require("../../../../utilities/Locale"); const _reducer = require("./reducer"); 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; } const Context = /*#__PURE__*/ (0, _react.createContext)({}); const RelationshipProvider = ({ children })=>{ const [documents, dispatchDocuments] = (0, _react.useReducer)(_reducer.reducer, {}); const debouncedDocuments = (0, _useDebounce.default)(documents, 100); const config = (0, _Config.useConfig)(); const { i18n } = (0, _reacti18next.useTranslation)(); const { code: locale } = (0, _Locale.useLocale)(); const prevLocale = (0, _react.useRef)(locale); const { routes: { api }, serverURL } = config; const loadRelationshipDocs = (0, _react.useCallback)(async (reloadAll = false)=>{ Object.entries(debouncedDocuments).forEach(async ([slug, docs])=>{ const idsToLoad = []; Object.entries(docs).forEach(([id, value])=>{ if (value === null || reloadAll) { idsToLoad.push(id); } }); if (idsToLoad.length > 0) { const url = `${serverURL}${api}/${slug}`; const params = { depth: 0, limit: 250, locale, 'where[id][in]': idsToLoad }; const query = _qs.default.stringify(params, { addQueryPrefix: true }); const result = await fetch(`${url}${query}`, { credentials: 'include', headers: { 'Accept-Language': i18n.language } }); if (result.ok) { const json = await result.json(); if (json.docs) { dispatchDocuments({ docs: json.docs, idsToLoad, relationTo: slug, type: 'ADD_LOADED' }); } } else { dispatchDocuments({ docs: [], idsToLoad, relationTo: slug, type: 'ADD_LOADED' }); } } }); }, [ debouncedDocuments, serverURL, api, i18n, locale ]); (0, _react.useEffect)(()=>{ loadRelationshipDocs(locale && prevLocale.current !== locale); prevLocale.current = locale; }, [ locale, loadRelationshipDocs ]); const getRelationships = (0, _react.useCallback)(async (relationships)=>{ dispatchDocuments({ docs: relationships, type: 'REQUEST' }); }, []); return /*#__PURE__*/ _react.default.createElement(Context.Provider, { value: { documents, getRelationships } }, children); }; const useListRelationships = ()=>(0, _react.useContext)(Context); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0xpc3QvUmVsYXRpb25zaGlwUHJvdmlkZXIvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeXN0cmluZyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aElEIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL0xvY2FsZSdcbmltcG9ydCB7IHJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXInXG5cbi8vIGRvY3VtZW50cyBhcmUgZmlyc3Qgc2V0IHRvIG51bGwgd2hlbiByZXF1ZXN0ZWRcbi8vIHNldCB0byBmYWxzZSB3aGVuIG5vIGRvYyBpcyByZXR1cm5lZFxuLy8gb3Igc2V0IHRvIHRoZSBkb2N1bWVudCByZXR1cm5lZFxuZXhwb3J0IHR5cGUgRG9jdW1lbnRzID0ge1xuICBbc2x1Zzogc3RyaW5nXToge1xuICAgIFtpZDogbnVtYmVyIHwgc3RyaW5nXTogVHlwZVdpdGhJRCB8IGZhbHNlIHwgbnVsbFxuICB9XG59XG5cbnR5cGUgTGlzdFJlbGF0aW9uc2hpcENvbnRleHQgPSB7XG4gIGRvY3VtZW50czogRG9jdW1lbnRzXG4gIGdldFJlbGF0aW9uc2hpcHM6IChcbiAgICBkb2NzOiB7XG4gICAgICByZWxhdGlvblRvOiBzdHJpbmdcbiAgICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmdcbiAgICB9W10sXG4gICkgPT4gdm9pZFxufVxuXG5jb25zdCBDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSBhcyBMaXN0UmVsYXRpb25zaGlwQ29udGV4dClcblxuZXhwb3J0IGNvbnN0IFJlbGF0aW9uc2hpcFByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbZG9jdW1lbnRzLCBkaXNwYXRjaERvY3VtZW50c10gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIHt9KVxuICBjb25zdCBkZWJvdW5jZWREb2N1bWVudHMgPSB1c2VEZWJvdW5jZShkb2N1bWVudHMsIDEwMClcbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBwcmV2TG9jYWxlID0gdXNlUmVmKGxvY2FsZSlcblxuICBjb25zdCB7XG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IGxvYWRSZWxhdGlvbnNoaXBEb2NzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlbG9hZEFsbCA9IGZhbHNlKSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhkZWJvdW5jZWREb2N1bWVudHMpLmZvckVhY2goYXN5bmMgKFtzbHVnLCBkb2NzXSkgPT4ge1xuICAgICAgICBjb25zdCBpZHNUb0xvYWQ6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGRvY3MpLmZvckVhY2goKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHJlbG9hZEFsbCkge1xuICAgICAgICAgICAgaWRzVG9Mb2FkLnB1c2goaWQpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChpZHNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHVybCA9IGAke3NlcnZlclVSTH0ke2FwaX0vJHtzbHVnfWBcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGxpbWl0OiAyNTAsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAnd2hlcmVbaWRdW2luXSc6IGlkc1RvTG9hZCxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBxdWVyeSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMsIHsgYWRkUXVlcnlQcmVmaXg6IHRydWUgfSlcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaChgJHt1cmx9JHtxdWVyeX1gLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChyZXN1bHQub2spIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXN1bHQuanNvbigpXG4gICAgICAgICAgICBpZiAoanNvbi5kb2NzKSB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoRG9jdW1lbnRzKHtcbiAgICAgICAgICAgICAgICBkb2NzOiBqc29uLmRvY3MsXG4gICAgICAgICAgICAgICAgaWRzVG9Mb2FkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHNsdWcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ0FERF9MT0FERUQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaXNwYXRjaERvY3VtZW50cyh7IGRvY3M6IFtdLCBpZHNUb0xvYWQsIHJlbGF0aW9uVG86IHNsdWcsIHR5cGU6ICdBRERfTE9BREVEJyB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtkZWJvdW5jZWREb2N1bWVudHMsIHNlcnZlclVSTCwgYXBpLCBpMThuLCBsb2NhbGVdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkUmVsYXRpb25zaGlwRG9jcyhsb2NhbGUgJiYgcHJldkxvY2FsZS5jdXJyZW50ICE9PSBsb2NhbGUpXG4gICAgcHJldkxvY2FsZS5jdXJyZW50ID0gbG9jYWxlXG4gIH0sIFtsb2NhbGUsIGxvYWRSZWxhdGlvbnNoaXBEb2NzXSlcblxuICBjb25zdCBnZXRSZWxhdGlvbnNoaXBzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlbGF0aW9uc2hpcHM6IHsgcmVsYXRpb25Ubzogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIH1bXSkgPT4ge1xuICAgICAgZGlzcGF0Y2hEb2N1bWVudHMoeyBkb2NzOiByZWxhdGlvbnNoaXBzLCB0eXBlOiAnUkVRVUVTVCcgfSlcbiAgICB9LFxuICAgIFtdLFxuICApXG5cbiAgcmV0dXJuIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IGRvY3VtZW50cywgZ2V0UmVsYXRpb25zaGlwcyB9fT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPlxufVxuXG5leHBvcnQgY29uc3QgdXNlTGlzdFJlbGF0aW9uc2hpcHMgPSAoKTogTGlzdFJlbGF0aW9uc2hpcENvbnRleHQgPT4gdXNlQ29udGV4dChDb250ZXh0KVxuIl0sIm5hbWVzIjpbIlJlbGF0aW9uc2hpcFByb3ZpZGVyIiwidXNlTGlzdFJlbGF0aW9uc2hpcHMiLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNoaWxkcmVuIiwiZG9jdW1lbnRzIiwiZGlzcGF0Y2hEb2N1bWVudHMiLCJ1c2VSZWR1Y2VyIiwicmVkdWNlciIsImRlYm91bmNlZERvY3VtZW50cyIsInVzZURlYm91bmNlIiwiY29uZmlnIiwidXNlQ29uZmlnIiwiaTE4biIsInVzZVRyYW5zbGF0aW9uIiwiY29kZSIsImxvY2FsZSIsInVzZUxvY2FsZSIsInByZXZMb2NhbGUiLCJ1c2VSZWYiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJsb2FkUmVsYXRpb25zaGlwRG9jcyIsInVzZUNhbGxiYWNrIiwicmVsb2FkQWxsIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJzbHVnIiwiZG9jcyIsImlkc1RvTG9hZCIsImlkIiwidmFsdWUiLCJwdXNoIiwibGVuZ3RoIiwidXJsIiwicGFyYW1zIiwiZGVwdGgiLCJsaW1pdCIsInF1ZXJ5IiwicXVlcnlzdHJpbmciLCJzdHJpbmdpZnkiLCJhZGRRdWVyeVByZWZpeCIsInJlc3VsdCIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJvayIsImpzb24iLCJyZWxhdGlvblRvIiwidHlwZSIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJnZXRSZWxhdGlvbnNoaXBzIiwicmVsYXRpb25zaGlwcyIsIlByb3ZpZGVyIiwidXNlQ29udGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFnQ2FBLG9CQUFvQjtlQUFwQkE7O0lBMkVBQyxvQkFBb0I7ZUFBcEJBOzs7MkRBM0dXOytEQUNxRTs4QkFDOUQ7b0VBSVA7d0JBQ0U7d0JBQ0E7eUJBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJ4QixNQUFNQyx3QkFBVUMsSUFBQUEsb0JBQWEsRUFBQyxDQUFDO0FBRXhCLE1BQU1ILHVCQUFpRSxDQUFDLEVBQUVJLFFBQVEsRUFBRTtJQUN6RixNQUFNLENBQUNDLFdBQVdDLGtCQUFrQixHQUFHQyxJQUFBQSxpQkFBVSxF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