@prezly/theme-kit-nextjs
Version:
Data layer and utility library for developing Prezly themes with NextJS
48 lines (46 loc) • 1.81 kB
JavaScript
'use client';
var _excluded = ["children"];
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
import { Routing } from '@prezly/theme-kit-core';
import React, { createContext, useCallback, useContext } from 'react';
export function connect() {
var context = /*#__PURE__*/createContext(undefined);
function RoutingContextProvider(props) {
var {
children
} = props,
value = _objectWithoutProperties(props, _excluded);
return /*#__PURE__*/React.createElement(context.Provider, {
value: value
}, props.children);
}
function useRouting() {
var value = useContext(context);
if (!value) {
throw new Error('`useRouting()` requires a RoutingContextProvider defined above the tree, but there is no context provided.');
}
var {
routes,
locales,
defaultLocale,
toLocaleSlug
} = value;
var generateUrl = useCallback(function (routeName) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return Routing.generateUrlFromPattern(routes[routeName], params, {
defaultLocale,
locales,
toLocaleSlug
});
}, [routes, locales, defaultLocale, toLocaleSlug]);
// @ts-ignore
return {
generateUrl
};
}
return {
useRouting,
RoutingContextProvider
};
}