UNPKG

@everdome_io/next-js-helper

Version:

``` npm install @uig/uig-nextjs-helper ``` or ``` yarn add -D @uig/uig-nextjs-helper ```

254 lines (213 loc) 7.04 kB
var react = require('react'); var nextI18next = require('next-i18next'); function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var initialApiError = { statusCode: 500, error: 'Error', message: 'Unknown error' }; var parseApiError = function parseApiError(error) { var _error$message; switch (typeof error) { case 'string': return _extends({}, initialApiError, { message: error }); case 'object': return _extends({}, initialApiError, (error == null ? void 0 : error.message) || error, { message: (error == null ? void 0 : (_error$message = error.message) == null ? void 0 : _error$message.message) || (error == null ? void 0 : error.message) }, (error == null ? void 0 : error.statusCode) && { statusCode: error.statusCode }); default: return initialApiError; } }; var PREVIEW_ID_PREFIX = 'preview_'; var HOMEPAGE_SLUG = 'homepage'; // export const BLOG_PREFIX = 'blog'; var objectEntries = function objectEntries(obj) { // Object.entries typings error // @ts-ignore return Object.entries(obj); }; var objectHas = function objectHas(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); }; var createUrl = function createUrl(baseUrl, path) { if (/https?:/.test(path)) { return path; } return [(baseUrl || process.env.NEXT_PUBLIC_API || '').replace(/\/$/, ''), path.replace(/^\//, '')].join('/'); }; var resolveUrl = function resolveUrl(baseUrl, path, queryParams, bindParams) { if (queryParams === void 0) { queryParams = {}; } if (bindParams === void 0) { bindParams = {}; } var url = new URL(createUrl(baseUrl, bindUrlParams(path, bindParams))); if (queryParams) { Object.entries(queryParams).forEach(function (_ref) { var name = _ref[0], value = _ref[1]; if (value !== undefined && value !== null) { url.searchParams.append(name, value.toString()); } }); } return url.href; }; var bindUrlParams = function bindUrlParams(route, params) { return route.replace(/:(\w+)/g, function (_, key) { var _params$key; return objectHas(params, key) ? ((_params$key = params[key]) == null ? void 0 : _params$key.toString()) || '' : ''; }); }; var slugToData = function slugToData(ctx, items, defaultSlug, blockList) { var _ctx$params, _ctx$params2, _ctx$params3; var slug = "" + ((_ctx$params = ctx.params) == null ? void 0 : _ctx$params.slug); if (!((_ctx$params2 = ctx.params) != null && _ctx$params2.slug) && !defaultSlug || (blockList || []).includes(slug)) { return undefined; } if (!((_ctx$params3 = ctx.params) != null && _ctx$params3.slug) && defaultSlug) { slug = "" + defaultSlug; } if (slug.startsWith(PREVIEW_ID_PREFIX)) { var _slug$split = slug.split('_'), id = _slug$split[1]; return { slug: '', id: Number(id) }; } return items.find(function (p) { return p.slug === slug; }); }; var absoluteUrl = function absoluteUrl() { return ["" + process.env.NEXT_PUBLIC_URL].concat([].slice.call(arguments)).filter(function (p) { return !!p; }).map(function (p) { return p.replace(/^\//, '').replace(/\/$/, ''); }).join('/'); }; var queryPage = function queryPage(ctx) { var page = queryParam(ctx, 'page', '1'); return /\d+/.test(page) ? Number(page) : 1; }; var queryParam = function queryParam(ctx, key, defaultValue) { var _ctx$query, _ctx$query2; return (_ctx$query = ctx.query) != null && _ctx$query[key] ? "" + ((_ctx$query2 = ctx.query) == null ? void 0 : _ctx$query2[key]) : defaultValue; }; var imageProps = function imageProps(image) { var _image$data; // @ts-ignore var attributes = (image == null ? void 0 : (_image$data = image.data) == null ? void 0 : _image$data.attributes) || (image == null ? void 0 : image.attributes); var src = (attributes == null ? void 0 : attributes.url) || ''; return { src: src.startsWith('http') ? src : createUrl(process.env.NEXT_PUBLIC_MEDIA_URL, src), alt: (attributes == null ? void 0 : attributes.alternativeText) || '' }; }; function safeJsonParse(string, returnRaw) { try { return JSON.parse(string); } catch (err) { return returnRaw ? string : {}; } } var formatNumber = function formatNumber(value) { return Number("" + value).toLocaleString('en', { useGrouping: true }); }; var formatPrice = function formatPrice(value) { return "$" + formatNumber(value); }; var minMax = function minMax(min, value, max) { return Math.max(min, Math.min(value, max)); }; function linkTarget(target) { if (target === void 0) { target = '_self'; } return target[0] === '_' ? target : "_" + target; } function linkRel(target) { if (linkTarget(target) === '_blank') { return { rel: 'nofollow noopener noreferrer' }; } return {}; } function slugToUrl(seo, prefix) { var slug = [prefix, HOMEPAGE_SLUG === seo.slug ? '' : seo.slug].filter(function (e) { return !!e; }).join('/'); return "/" + slug; } function useCurrentRef(value) { var valueRef = react.useRef(value); react.useEffect(function () { valueRef.current = value; }, [value]); return valueRef; } function useRefState(initValue) { var valueRef = react.useRef(initValue); var _useState = react.useState(initValue), value = _useState[0], setValue = _useState[1]; return [value, valueRef, function (val) { valueRef.current = val; setValue(val); }]; } var useScopeTranslation = function useScopeTranslation(namespace) { var scopes = [].slice.call(arguments, 1); var _useTranslation = nextI18next.useTranslation(namespace), t = _useTranslation.t; var finalScope = scopes && scopes.length ? scopes.join('.') + "." : ''; return function (key, option) { return t("" + finalScope + key, option); }; }; exports.HOMEPAGE_SLUG = HOMEPAGE_SLUG; exports.PREVIEW_ID_PREFIX = PREVIEW_ID_PREFIX; exports.absoluteUrl = absoluteUrl; exports.bindUrlParams = bindUrlParams; exports.createUrl = createUrl; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.imageProps = imageProps; exports.linkRel = linkRel; exports.linkTarget = linkTarget; exports.minMax = minMax; exports.objectEntries = objectEntries; exports.objectHas = objectHas; exports.parseApiError = parseApiError; exports.queryPage = queryPage; exports.queryParam = queryParam; exports.resolveUrl = resolveUrl; exports.safeJsonParse = safeJsonParse; exports.slugToData = slugToData; exports.slugToUrl = slugToUrl; exports.useCurrentRef = useCurrentRef; exports.useRefState = useRefState; exports.useScopeTranslation = useScopeTranslation; //# sourceMappingURL=index.js.map