@prezly/theme-kit-nextjs 2.0.1-0 → 2.0.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/global.d.js +1 -1
- package/build/adapter-nextjs/api-handlers/fetchGalleries.js +9 -3
- package/build/adapter-nextjs/api-handlers/fetchStories.js +9 -3
- package/build/adapter-nextjs/api-handlers/index.js +19 -2
- package/build/adapter-nextjs/getNewsroomServerSideProps.js +9 -3
- package/build/adapter-nextjs/getNewsroomStaticProps.js +9 -3
- package/build/adapter-nextjs/index.js +71 -6
- package/build/adapter-nextjs/page-props/category.js +27 -19
- package/build/adapter-nextjs/page-props/gallery.js +20 -13
- package/build/adapter-nextjs/page-props/galleryAlbum.js +21 -13
- package/build/adapter-nextjs/page-props/home.js +20 -13
- package/build/adapter-nextjs/page-props/index.js +138 -8
- package/build/adapter-nextjs/page-props/lib/types.js +1 -1
- package/build/adapter-nextjs/page-props/search.js +17 -10
- package/build/adapter-nextjs/page-props/sitemap/SitemapBuilder.js +9 -2
- package/build/adapter-nextjs/page-props/sitemap/createPaths.js +7 -1
- package/build/adapter-nextjs/page-props/sitemap/getServerSideProps.js +13 -7
- package/build/adapter-nextjs/page-props/sitemap/index.js +43 -4
- package/build/adapter-nextjs/page-props/sitemap/types.js +1 -1
- package/build/adapter-nextjs/page-props/story.js +25 -17
- package/build/adapter-nextjs/page-props/storyPreview.js +13 -7
- package/build/adapter-nextjs/processRequest.js +11 -5
- package/build/adapter-nextjs/processStaticRequest.js +7 -1
- package/build/components-nextjs/PageSeo/PageSeo.js +30 -24
- package/build/components-nextjs/PageSeo/index.js +27 -2
- package/build/components-nextjs/PageSeo/lib/getAbsoluteUrl.js +7 -1
- package/build/components-nextjs/PageSeo/lib/types.js +1 -1
- package/build/components-nextjs/StorySeo/StorySeo.js +12 -6
- package/build/components-nextjs/StorySeo/index.js +12 -1
- package/build/components-nextjs/document.js +19 -10
- package/build/components-nextjs/index.js +26 -3
- package/build/data-fetching/api/PrezlyApi.js +37 -30
- package/build/data-fetching/api/getPrezlyApi.js +11 -5
- package/build/data-fetching/api/index.js +16 -1
- package/build/data-fetching/api/queries.js +15 -5
- package/build/data-fetching/index.js +38 -3
- package/build/data-fetching/lib/getAlgoliaSettings.js +9 -3
- package/build/data-fetching/lib/getEnvVariables.js +10 -3
- package/build/data-fetching/lib/index.js +33 -4
- package/build/data-fetching/lib/isSdkError.js +7 -1
- package/build/data-fetching/lib/isUuid.js +7 -1
- package/build/data-fetching/types.js +1 -1
- package/build/index.js +104 -9
- package/build/infinite-loading/index.js +43 -4
- package/build/infinite-loading/types.js +1 -1
- package/build/infinite-loading/useInfiniteGalleriesLoading.js +9 -3
- package/build/infinite-loading/useInfiniteLoading.js +15 -9
- package/build/infinite-loading/useInfiniteStoriesLoading.js +13 -7
- package/build/intl/index.js +49 -4
- package/build/intl/languages.js +39 -23
- package/build/intl/locale.js +20 -10
- package/build/intl/localeConfig.js +14 -5
- package/build/intl/localeList.js +8 -1
- package/build/intl/localeObject.js +11 -4
- package/build/newsroom-context/context.js +13 -5
- package/build/newsroom-context/hooks/index.js +126 -11
- package/build/newsroom-context/hooks/useAlgoliaSettings.js +9 -3
- package/build/newsroom-context/hooks/useCategories.js +9 -3
- package/build/newsroom-context/hooks/useCompanyInformation.js +9 -3
- package/build/newsroom-context/hooks/useCurrentCategory.js +9 -3
- package/build/newsroom-context/hooks/useCurrentLocale.js +9 -3
- package/build/newsroom-context/hooks/useCurrentStory.js +9 -3
- package/build/newsroom-context/hooks/useGetLinkLocaleSlug.js +16 -10
- package/build/newsroom-context/hooks/useGetTranslationUrl.js +26 -20
- package/build/newsroom-context/hooks/useLanguages.js +9 -3
- package/build/newsroom-context/hooks/useNewsroom.js +9 -3
- package/build/newsroom-context/hooks/useNewsroomContext.js +10 -4
- package/build/newsroom-context/index.js +34 -2
- package/build/sentry/client.js +9 -3
- package/build/sentry/common.js +7 -1
- package/build/sentry/index.js +19 -2
- package/build/sentry/server.js +9 -3
- package/build/types.js +1 -1
- package/build/utils/boilerplate.js +11 -3
- package/build/utils/constants.js +12 -3
- package/build/utils/getAssetsUrl.js +9 -3
- package/build/utils/getDataRequestLink.js +9 -3
- package/build/utils/getLocalizedCategoryData.js +11 -3
- package/build/utils/getNewsroomLogoUrl.js +12 -5
- package/build/utils/getPrivacyPortalUrl.js +7 -1
- package/build/utils/getStoryPublicationDate.js +7 -1
- package/build/utils/getUploadcareGroupUrl.js +9 -3
- package/build/utils/index.js +115 -10
- package/build/utils/isEmbargoStory.js +7 -1
- package/package.json +2 -3
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useInfiniteLoading = useInfiniteLoading;
|
|
7
|
+
var _web = require("@react-hookz/web");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
function useInfiniteLoading({
|
|
4
10
|
fetchingFn,
|
|
5
11
|
initialData,
|
|
6
12
|
pagination
|
|
7
13
|
}) {
|
|
8
|
-
const [data, setData] = useState(initialData);
|
|
9
|
-
const [currentPage, setCurrentPage] = useState(pagination.currentPage);
|
|
14
|
+
const [data, setData] = (0, _react.useState)(initialData);
|
|
15
|
+
const [currentPage, setCurrentPage] = (0, _react.useState)(pagination.currentPage);
|
|
10
16
|
const {
|
|
11
17
|
itemsTotal,
|
|
12
18
|
pageSize
|
|
@@ -18,22 +24,22 @@ export function useInfiniteLoading({
|
|
|
18
24
|
status
|
|
19
25
|
}, {
|
|
20
26
|
execute: loadMoreFn
|
|
21
|
-
}] = useAsync(async () => {
|
|
27
|
+
}] = (0, _web.useAsync)(async () => {
|
|
22
28
|
const nextPage = currentPage + 1;
|
|
23
29
|
const newData = await fetchingFn(nextPage, pageSize);
|
|
24
30
|
setCurrentPage(nextPage);
|
|
25
31
|
setData(currentData => [...currentData, ...newData]);
|
|
26
32
|
});
|
|
27
|
-
const loadMore = useCallback(() => {
|
|
33
|
+
const loadMore = (0, _react.useCallback)(() => {
|
|
28
34
|
if (canLoadMore) {
|
|
29
35
|
loadMoreFn();
|
|
30
36
|
}
|
|
31
37
|
}, [canLoadMore, loadMoreFn]);
|
|
32
|
-
const resetData = useCallback(() => {
|
|
38
|
+
const resetData = (0, _react.useCallback)(() => {
|
|
33
39
|
setData(initialData);
|
|
34
40
|
setCurrentPage(pagination.currentPage);
|
|
35
41
|
}, [pagination.currentPage, initialData]);
|
|
36
|
-
useEffect(() => {
|
|
42
|
+
(0, _react.useEffect)(() => {
|
|
37
43
|
if (error) {
|
|
38
44
|
// eslint-disable-next-line no-console
|
|
39
45
|
console.error(error);
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useInfiniteStoriesLoading = useInfiniteStoriesLoading;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _index = require("../newsroom-context/index.js");
|
|
9
|
+
var _useInfiniteLoading = require("./useInfiniteLoading.js");
|
|
4
10
|
async function fetchStories(page, pageSize, category, locale, include) {
|
|
5
11
|
const result = await fetch('/api/fetch-stories', {
|
|
6
12
|
method: 'POST',
|
|
@@ -31,15 +37,15 @@ async function fetchStories(page, pageSize, category, locale, include) {
|
|
|
31
37
|
* The handler for this route is exported from `apiHandlers/fetchStories.ts` file.
|
|
32
38
|
* See https://github.com/prezly/theme-nextjs-bea/blob/d381e9878187ca98815d240d3ffdf10a75993c14/pages/index.tsx#L24 for usage example
|
|
33
39
|
*/
|
|
34
|
-
|
|
35
|
-
const currentLocale = useCurrentLocale();
|
|
40
|
+
function useInfiniteStoriesLoading(initialStories, pagination, category, include) {
|
|
41
|
+
const currentLocale = (0, _index.useCurrentLocale)();
|
|
36
42
|
const {
|
|
37
43
|
canLoadMore,
|
|
38
44
|
data,
|
|
39
45
|
isLoading,
|
|
40
46
|
loadMore,
|
|
41
47
|
resetData
|
|
42
|
-
} = useInfiniteLoading({
|
|
48
|
+
} = (0, _useInfiniteLoading.useInfiniteLoading)({
|
|
43
49
|
fetchingFn: async (nextPage, pageSize) => {
|
|
44
50
|
const {
|
|
45
51
|
stories
|
|
@@ -49,7 +55,7 @@ export function useInfiniteStoriesLoading(initialStories, pagination, category,
|
|
|
49
55
|
initialData: initialStories,
|
|
50
56
|
pagination
|
|
51
57
|
});
|
|
52
|
-
useEffect(() => {
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
53
59
|
if (category?.id) {
|
|
54
60
|
resetData();
|
|
55
61
|
}
|
package/build/intl/index.js
CHANGED
|
@@ -1,4 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _languages = require("./languages.js");
|
|
7
|
+
Object.keys(_languages).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _languages[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _languages[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _locale = require("./locale.js");
|
|
18
|
+
Object.keys(_locale).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _locale[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _locale[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _localeConfig = require("./localeConfig.js");
|
|
29
|
+
Object.keys(_localeConfig).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _localeConfig[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _localeConfig[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _localeObject = require("./localeObject.js");
|
|
40
|
+
Object.keys(_localeObject).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _localeObject[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _localeObject[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
package/build/intl/languages.js
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getCompanyInformation = getCompanyInformation;
|
|
7
|
+
exports.getDefaultLanguage = getDefaultLanguage;
|
|
8
|
+
exports.getLanguageByExactLocaleCode = getLanguageByExactLocaleCode;
|
|
9
|
+
exports.getLanguageByNeutralLocaleCode = getLanguageByNeutralLocaleCode;
|
|
10
|
+
exports.getLanguageByShortRegionCode = getLanguageByShortRegionCode;
|
|
11
|
+
exports.getLanguageDisplayName = getLanguageDisplayName;
|
|
12
|
+
exports.getLanguageFromNextLocaleIsoCode = getLanguageFromNextLocaleIsoCode;
|
|
13
|
+
exports.getLanguageFromStory = getLanguageFromStory;
|
|
14
|
+
exports.getNotifications = getNotifications;
|
|
15
|
+
exports.getShortestLocaleCode = getShortestLocaleCode;
|
|
16
|
+
exports.getUsedLanguages = getUsedLanguages;
|
|
17
|
+
var _localeConfig = require("./localeConfig.js");
|
|
18
|
+
var _localeObject = require("./localeObject.js");
|
|
3
19
|
function isOnlyCulture(culture, languages) {
|
|
4
20
|
const numberOfLanguages = languages.filter(({
|
|
5
21
|
locale: {
|
|
@@ -21,7 +37,7 @@ function isOnlyCulture(culture, languages) {
|
|
|
21
37
|
* - English (Global), English (UK), Spanish (Spain)
|
|
22
38
|
* - -> English (Global), English (UK), Spanish
|
|
23
39
|
*/
|
|
24
|
-
|
|
40
|
+
function getLanguageDisplayName(language, languages) {
|
|
25
41
|
const {
|
|
26
42
|
locale
|
|
27
43
|
} = language;
|
|
@@ -37,7 +53,7 @@ export function getLanguageDisplayName(language, languages) {
|
|
|
37
53
|
/**
|
|
38
54
|
* @returns Language set as default in the Newsroom Settings.
|
|
39
55
|
*/
|
|
40
|
-
|
|
56
|
+
function getDefaultLanguage(languages) {
|
|
41
57
|
return languages.find(({
|
|
42
58
|
is_default
|
|
43
59
|
}) => is_default) || languages[0];
|
|
@@ -46,10 +62,10 @@ export function getDefaultLanguage(languages) {
|
|
|
46
62
|
/**
|
|
47
63
|
* @returns Only languages having at least one published story
|
|
48
64
|
*/
|
|
49
|
-
|
|
65
|
+
function getUsedLanguages(languages) {
|
|
50
66
|
return languages.filter(language => language.public_stories_count > 0);
|
|
51
67
|
}
|
|
52
|
-
|
|
68
|
+
function getLanguageByExactLocaleCode(languages, locale) {
|
|
53
69
|
const localeCode = locale.toUnderscoreCode();
|
|
54
70
|
return languages.find(({
|
|
55
71
|
code
|
|
@@ -57,7 +73,7 @@ export function getLanguageByExactLocaleCode(languages, locale) {
|
|
|
57
73
|
}
|
|
58
74
|
|
|
59
75
|
// See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L123
|
|
60
|
-
|
|
76
|
+
function getLanguageByNeutralLocaleCode(languages, locale) {
|
|
61
77
|
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
62
78
|
|
|
63
79
|
// Prefer default language
|
|
@@ -71,7 +87,7 @@ export function getLanguageByNeutralLocaleCode(languages, locale) {
|
|
|
71
87
|
const usedLanguages = getUsedLanguages(languages);
|
|
72
88
|
const usedLanguage = usedLanguages.find(({
|
|
73
89
|
code
|
|
74
|
-
}) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
90
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
75
91
|
if (usedLanguage) {
|
|
76
92
|
return usedLanguage;
|
|
77
93
|
}
|
|
@@ -79,16 +95,16 @@ export function getLanguageByNeutralLocaleCode(languages, locale) {
|
|
|
79
95
|
// Search in all languages
|
|
80
96
|
return languages.find(({
|
|
81
97
|
code
|
|
82
|
-
}) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
98
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
83
99
|
}
|
|
84
100
|
|
|
85
101
|
// See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L159
|
|
86
|
-
|
|
102
|
+
function getLanguageByShortRegionCode(languages, locale) {
|
|
87
103
|
const shortRegionCode = locale.toRegionCode();
|
|
88
104
|
|
|
89
105
|
// Prefer default language
|
|
90
106
|
const defaultLanguage = getDefaultLanguage(languages);
|
|
91
|
-
if (LocaleObject.fromAnyCode(defaultLanguage.code).toRegionCode() === shortRegionCode) {
|
|
107
|
+
if (_localeObject.LocaleObject.fromAnyCode(defaultLanguage.code).toRegionCode() === shortRegionCode) {
|
|
92
108
|
return defaultLanguage;
|
|
93
109
|
}
|
|
94
110
|
|
|
@@ -96,7 +112,7 @@ export function getLanguageByShortRegionCode(languages, locale) {
|
|
|
96
112
|
const usedLanguages = getUsedLanguages(languages);
|
|
97
113
|
const usedLanguage = usedLanguages.find(({
|
|
98
114
|
code
|
|
99
|
-
}) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
115
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
100
116
|
if (usedLanguage) {
|
|
101
117
|
return usedLanguage;
|
|
102
118
|
}
|
|
@@ -104,19 +120,19 @@ export function getLanguageByShortRegionCode(languages, locale) {
|
|
|
104
120
|
// Search in all languages
|
|
105
121
|
return languages.find(({
|
|
106
122
|
code
|
|
107
|
-
}) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
123
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
108
124
|
}
|
|
109
125
|
|
|
110
126
|
/**
|
|
111
127
|
* Retrieve a culture with fallback to legacy codes support.
|
|
112
128
|
* Pulled from https://github.com/prezly/prezly/blob/de9900d9890a33502780494aa3fb85c9a732b3c3/lib/model/CulturePeer.php#L91-L114
|
|
113
129
|
*/
|
|
114
|
-
|
|
130
|
+
function getLanguageFromNextLocaleIsoCode(languages, nextLocaleIsoCode) {
|
|
115
131
|
const defaultLanguage = getDefaultLanguage(languages);
|
|
116
|
-
if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
|
|
132
|
+
if (!nextLocaleIsoCode || nextLocaleIsoCode === _localeConfig.DUMMY_DEFAULT_LOCALE) {
|
|
117
133
|
return defaultLanguage;
|
|
118
134
|
}
|
|
119
|
-
const locale = LocaleObject.fromAnyCode(nextLocaleIsoCode);
|
|
135
|
+
const locale = _localeObject.LocaleObject.fromAnyCode(nextLocaleIsoCode);
|
|
120
136
|
let targetLanguage;
|
|
121
137
|
if (nextLocaleIsoCode.length >= 2 && nextLocaleIsoCode.length <= 4) {
|
|
122
138
|
// The order of methods here is reversed from `getShortestLocaleCode`, so that the logic "unwraps" the possible variants with no collisions
|
|
@@ -126,7 +142,7 @@ export function getLanguageFromNextLocaleIsoCode(languages, nextLocaleIsoCode) {
|
|
|
126
142
|
}
|
|
127
143
|
return targetLanguage;
|
|
128
144
|
}
|
|
129
|
-
|
|
145
|
+
function getLanguageFromStory(languages, story) {
|
|
130
146
|
const {
|
|
131
147
|
code: storyLocaleCode
|
|
132
148
|
} = story.culture;
|
|
@@ -138,7 +154,7 @@ export function getLanguageFromStory(languages, story) {
|
|
|
138
154
|
/**
|
|
139
155
|
* Extracts company information for the selected locale
|
|
140
156
|
*/
|
|
141
|
-
|
|
157
|
+
function getCompanyInformation(languages, locale) {
|
|
142
158
|
const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
|
|
143
159
|
return currentLanguage.company_information;
|
|
144
160
|
}
|
|
@@ -146,7 +162,7 @@ export function getCompanyInformation(languages, locale) {
|
|
|
146
162
|
/**
|
|
147
163
|
* Get newsroom notifications for the selected locale
|
|
148
164
|
*/
|
|
149
|
-
|
|
165
|
+
function getNotifications(languages, locale) {
|
|
150
166
|
const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
|
|
151
167
|
return currentLanguage.notifications;
|
|
152
168
|
}
|
|
@@ -159,7 +175,7 @@ export function getNotifications(languages, locale) {
|
|
|
159
175
|
*
|
|
160
176
|
* @param locale A LocaleObject constructed from FULL locale code (taken straight from the selected language)
|
|
161
177
|
*/
|
|
162
|
-
|
|
178
|
+
function getShortestLocaleCode(languages, locale) {
|
|
163
179
|
const localeCode = locale.toUnderscoreCode();
|
|
164
180
|
const defaultLanguage = getDefaultLanguage(languages);
|
|
165
181
|
// If it's a default locale, return false (no locale needed in URL)
|
|
@@ -171,7 +187,7 @@ export function getShortestLocaleCode(languages, locale) {
|
|
|
171
187
|
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
172
188
|
const matchingLanguagesByNeutralCode = languages.filter(({
|
|
173
189
|
code
|
|
174
|
-
}) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode || code === neutralLanguageCode);
|
|
190
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode || code === neutralLanguageCode);
|
|
175
191
|
if (matchingLanguagesByNeutralCode.length === 1) {
|
|
176
192
|
return neutralLanguageCode;
|
|
177
193
|
}
|
|
@@ -180,12 +196,12 @@ export function getShortestLocaleCode(languages, locale) {
|
|
|
180
196
|
const shortRegionCode = locale.toRegionCode();
|
|
181
197
|
const matchingLanguagesByRegionCode = languages.filter(({
|
|
182
198
|
code
|
|
183
|
-
}) => LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
199
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
184
200
|
// Prevent collision with neutral language codes
|
|
185
201
|
const lowerCasedShortRegionCode = shortRegionCode.toLowerCase();
|
|
186
202
|
const mathchingNeutralLanguagesByRegionCode = languages.filter(({
|
|
187
203
|
code
|
|
188
|
-
}) => LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === lowerCasedShortRegionCode || code === lowerCasedShortRegionCode);
|
|
204
|
+
}) => _localeObject.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === lowerCasedShortRegionCode || code === lowerCasedShortRegionCode);
|
|
189
205
|
if (matchingLanguagesByRegionCode.length === 1 &&
|
|
190
206
|
// If there are 2 or more matching neutral languages, it means that there are no languages that can be shortened to neutral code
|
|
191
207
|
mathchingNeutralLanguagesByRegionCode.length !== 1 &&
|
package/build/intl/locale.js
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_LOCALE = void 0;
|
|
7
|
+
exports.getLocaleDirection = getLocaleDirection;
|
|
8
|
+
exports.getRedirectToCanonicalLocale = getRedirectToCanonicalLocale;
|
|
9
|
+
exports.getSupportedLocaleIsoCode = getSupportedLocaleIsoCode;
|
|
10
|
+
var _querystring = require("querystring");
|
|
11
|
+
var _localeConfig = require("./localeConfig.js");
|
|
12
|
+
var _localeObject = require("./localeObject.js");
|
|
13
|
+
const DEFAULT_LOCALE = 'en';
|
|
5
14
|
|
|
6
15
|
/**
|
|
7
16
|
* This a list of locales that Prezly has translations for. Each code represents a language file in the `@prezly/themes-intl-messages` package.
|
|
8
17
|
* See https://github.com/prezly/themes-intl-messages for more info.
|
|
9
18
|
*/
|
|
19
|
+
exports.DEFAULT_LOCALE = DEFAULT_LOCALE;
|
|
10
20
|
const SUPPORTED_LOCALES = ['af', 'ar', 'az', 'be', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fil', 'fr', 'ga', 'he', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kk', 'ko', 'lt', 'lv', 'mt', 'nl', 'no', 'pl', 'pt-BR', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'sw', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'zh-CN', 'zh-TW'];
|
|
11
21
|
|
|
12
22
|
/**
|
|
13
23
|
* Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
|
|
14
24
|
* See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
|
|
15
25
|
*/
|
|
16
|
-
|
|
26
|
+
function getSupportedLocaleIsoCode(locale) {
|
|
17
27
|
const localeIsoCode = locale.toHyphenCode();
|
|
18
28
|
const isSupportedLocale = localeIsoCode.length >= 2 && SUPPORTED_LOCALES.includes(localeIsoCode);
|
|
19
29
|
if (isSupportedLocale) {
|
|
@@ -38,15 +48,15 @@ export function getSupportedLocaleIsoCode(locale) {
|
|
|
38
48
|
console.warn('Unsupported locale provided. Please use `LocaleObject.fromAnyCode` to ensure you are using a correct language code');
|
|
39
49
|
return DEFAULT_LOCALE;
|
|
40
50
|
}
|
|
41
|
-
|
|
51
|
+
function getRedirectToCanonicalLocale(shortestLocaleCode, nextLocaleIsoCode, redirectPath, query) {
|
|
42
52
|
// No need to redirect if no particular locale was requested by the application
|
|
43
|
-
if (!nextLocaleIsoCode || nextLocaleIsoCode === DUMMY_DEFAULT_LOCALE) {
|
|
53
|
+
if (!nextLocaleIsoCode || nextLocaleIsoCode === _localeConfig.DUMMY_DEFAULT_LOCALE) {
|
|
44
54
|
return undefined;
|
|
45
55
|
}
|
|
46
|
-
const shortestLocaleSlug = shortestLocaleCode ? LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug() : shortestLocaleCode;
|
|
56
|
+
const shortestLocaleSlug = shortestLocaleCode ? _localeObject.LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug() : shortestLocaleCode;
|
|
47
57
|
if (shortestLocaleSlug !== nextLocaleIsoCode) {
|
|
48
58
|
const prefixedPath = redirectPath && !redirectPath.startsWith('/') ? `/${redirectPath}` : redirectPath;
|
|
49
|
-
const urlQuery = query ? `?${stringify(query)}` : '';
|
|
59
|
+
const urlQuery = query ? `?${(0, _querystring.stringify)(query)}` : '';
|
|
50
60
|
return {
|
|
51
61
|
destination: shortestLocaleSlug ? `/${shortestLocaleSlug}${prefixedPath}${urlQuery}` : `${prefixedPath}${urlQuery}`,
|
|
52
62
|
permanent: false
|
|
@@ -54,7 +64,7 @@ export function getRedirectToCanonicalLocale(shortestLocaleCode, nextLocaleIsoCo
|
|
|
54
64
|
}
|
|
55
65
|
return undefined;
|
|
56
66
|
}
|
|
57
|
-
|
|
67
|
+
function getLocaleDirection(locale) {
|
|
58
68
|
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
59
69
|
if (['ar', 'he', 'ur'].includes(neutralLanguageCode)) {
|
|
60
70
|
return 'rtl';
|
|
@@ -1,19 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.localeConfig = exports.DUMMY_DEFAULT_LOCALE = void 0;
|
|
7
|
+
var _localeList = require("./localeList.js");
|
|
1
8
|
/**
|
|
2
9
|
* This list is pulled from the main Prezly application. The underscores are replaced with dashes.
|
|
3
10
|
* Together with permutation performed lower in the code,
|
|
4
11
|
* the exported list represents all of the possible locale codes that Next.js theme application might accept.
|
|
5
12
|
*/
|
|
6
|
-
|
|
7
|
-
const lowercaseLocales = localeList.map(l => l.toLowerCase());
|
|
13
|
+
|
|
14
|
+
const lowercaseLocales = _localeList.localeList.map(l => l.toLowerCase());
|
|
8
15
|
|
|
9
16
|
// We use pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
|
|
10
|
-
|
|
17
|
+
const DUMMY_DEFAULT_LOCALE = 'qps-ploc';
|
|
11
18
|
|
|
12
19
|
// Get all permutations for the shorter locale codes supported by Prezly (e.g. short region codes and neutral language codes)
|
|
20
|
+
exports.DUMMY_DEFAULT_LOCALE = DUMMY_DEFAULT_LOCALE;
|
|
13
21
|
const lowercaseLocalPermutations = Array.from(new Set([...lowercaseLocales, ...lowercaseLocales.map(code => code.split('-')[0]), ...lowercaseLocales.map(code => code.split('-')[1]).filter(Boolean)
|
|
14
22
|
// Remove number-only codes from possible permutations (like `419` for `es-419`)
|
|
15
23
|
.filter(code => Number.isNaN(Number(code)))])).sort();
|
|
16
|
-
|
|
24
|
+
const localeConfig = {
|
|
17
25
|
// These are all the locales you want to support in
|
|
18
26
|
// your application
|
|
19
27
|
locales: [DUMMY_DEFAULT_LOCALE, ...lowercaseLocalPermutations],
|
|
@@ -23,4 +31,5 @@ export const localeConfig = {
|
|
|
23
31
|
defaultLocale: DUMMY_DEFAULT_LOCALE,
|
|
24
32
|
// Default locale detection is disabled, since the locales would be determined by Prezly API
|
|
25
33
|
localeDetection: false
|
|
26
|
-
};
|
|
34
|
+
};
|
|
35
|
+
exports.localeConfig = localeConfig;
|
package/build/intl/localeList.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.localeList = void 0;
|
|
1
7
|
/**
|
|
2
8
|
* This list is pulled from the main Prezly application. The underscores are replaced with dashes.
|
|
3
9
|
*/
|
|
4
|
-
|
|
10
|
+
const localeList = ['af-ZA', 'ar', 'ar-AE', 'ar-BH', 'ar-QA', 'ar-SA', 'az', 'be', 'bg-BG', 'ca', 'cs-CZ', 'da-DK', 'de', 'de-DE', 'de-BE', 'de-AT', 'de-CH', 'el-GR', 'en', 'en-US', 'en-AE', 'en-AU', 'en-BD', 'en-BE', 'en-BH', 'en-CA', 'en-CN', 'en-DE', 'en-DK', 'en-GB', 'en-HK', 'en-ID', 'en-IE', 'en-IL', 'en-IN', 'en-JM', 'en-JP', 'en-KH', 'en-KR', 'en-LK', 'en-MV', 'en-MM', 'en-MY', 'en-NP', 'en-NZ', 'en-PH', 'en-PK', 'en-QA', 'en-SA', 'en-SG', 'en-TH', 'en-TW', 'en-VN', 'en-ZA', 'es', 'es-ES', 'es-MX', 'et-EE', 'es-419', 'fi-FI', 'fil', 'fr', 'fr-BE', 'fr-FR', 'fr-CA', 'fr-LU', 'ga-IE', 'he-IL', 'hi-IN', 'hr-HR', 'hu-HU', 'id-ID', 'it-IT', 'ja-JP', 'kk', 'ko-KR', 'ky', 'lt-LT', 'lv-LV', 'mt-MT', 'ms-MY', 'nb-NO', 'nl', 'nl-BE', 'nl-NL', 'pl-PL', 'pt', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sk-SK', 'sl-SI', 'sv-SE', 'sw', 'th-TH', 'tr-TR', 'uk-UA', 'ur-PK', 'uz', 'vi-VN', 'zh-Hant', 'zh-HK', 'zh-TW', 'zh-CN'];
|
|
11
|
+
exports.localeList = localeList;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LocaleObject = void 0;
|
|
7
|
+
var _localeConfig = require("./localeConfig.js");
|
|
2
8
|
/**
|
|
3
9
|
* This class is created to simplify working with locales and transforming between different locale code formats.
|
|
4
10
|
* Prezly API uses underscore-codes, while most frontend application tend to use hyphen-codes or slugs.
|
|
5
11
|
* Note that `fromAnyCode` constructor only accepts locales supported by Prezly backend. See `localeConfig` for reference.
|
|
6
12
|
*/
|
|
7
|
-
|
|
13
|
+
class LocaleObject {
|
|
8
14
|
/**
|
|
9
15
|
* Hyphen-separated locale code.
|
|
10
16
|
* Examples: `nl-BE`, `en-US`, `fr`, `fil`
|
|
@@ -33,7 +39,7 @@ export class LocaleObject {
|
|
|
33
39
|
*/
|
|
34
40
|
static fromAnyCode(localeCode) {
|
|
35
41
|
const lowercaseCode = localeCode.toLowerCase().replace('_', '-');
|
|
36
|
-
const foundCode = localeConfig.locales.find(code => code === lowercaseCode);
|
|
42
|
+
const foundCode = _localeConfig.localeConfig.locales.find(code => code === lowercaseCode);
|
|
37
43
|
if (!foundCode) {
|
|
38
44
|
throw new Error(`Unsupported locale code provided: "${lowercaseCode}"`);
|
|
39
45
|
}
|
|
@@ -86,4 +92,5 @@ export class LocaleObject {
|
|
|
86
92
|
isEqual(anotherLocale) {
|
|
87
93
|
return anotherLocale.toHyphenCode() === this.localeCode;
|
|
88
94
|
}
|
|
89
|
-
}
|
|
95
|
+
}
|
|
96
|
+
exports.LocaleObject = LocaleObject;
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NewsroomContext = void 0;
|
|
7
|
+
exports.NewsroomContextProvider = NewsroomContextProvider;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _index = require("../intl/index.js");
|
|
10
|
+
const NewsroomContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
4
11
|
|
|
5
12
|
/**
|
|
6
13
|
* This context provides common Newsroom information retrieved by `getNewsroomServerSideProps` helper.
|
|
7
14
|
* Please refer to the `NewsroomContextType` definition for more info on what's exposed from the context.
|
|
8
15
|
*/
|
|
9
|
-
|
|
16
|
+
exports.NewsroomContext = NewsroomContext;
|
|
17
|
+
function NewsroomContextProvider({
|
|
10
18
|
categories,
|
|
11
19
|
contacts,
|
|
12
20
|
newsroom,
|
|
@@ -20,7 +28,7 @@ export function NewsroomContextProvider({
|
|
|
20
28
|
algoliaSettings,
|
|
21
29
|
children
|
|
22
30
|
}) {
|
|
23
|
-
const locale = useMemo(() => LocaleObject.fromAnyCode(localeCode || DEFAULT_LOCALE), [localeCode]);
|
|
31
|
+
const locale = (0, _react.useMemo)(() => _index.LocaleObject.fromAnyCode(localeCode || _index.DEFAULT_LOCALE), [localeCode]);
|
|
24
32
|
return /*#__PURE__*/React.createElement(NewsroomContext.Provider, {
|
|
25
33
|
value: {
|
|
26
34
|
categories,
|
|
@@ -1,11 +1,126 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _useAlgoliaSettings = require("./useAlgoliaSettings.js");
|
|
7
|
+
Object.keys(_useAlgoliaSettings).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _useAlgoliaSettings[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _useAlgoliaSettings[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _useCategories = require("./useCategories.js");
|
|
18
|
+
Object.keys(_useCategories).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _useCategories[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _useCategories[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _useCompanyInformation = require("./useCompanyInformation.js");
|
|
29
|
+
Object.keys(_useCompanyInformation).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _useCompanyInformation[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _useCompanyInformation[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _useCurrentCategory = require("./useCurrentCategory.js");
|
|
40
|
+
Object.keys(_useCurrentCategory).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _useCurrentCategory[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _useCurrentCategory[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
var _useCurrentLocale = require("./useCurrentLocale.js");
|
|
51
|
+
Object.keys(_useCurrentLocale).forEach(function (key) {
|
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (key in exports && exports[key] === _useCurrentLocale[key]) return;
|
|
54
|
+
Object.defineProperty(exports, key, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _useCurrentLocale[key];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
var _useCurrentStory = require("./useCurrentStory.js");
|
|
62
|
+
Object.keys(_useCurrentStory).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _useCurrentStory[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return _useCurrentStory[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
var _useGetLinkLocaleSlug = require("./useGetLinkLocaleSlug.js");
|
|
73
|
+
Object.keys(_useGetLinkLocaleSlug).forEach(function (key) {
|
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
|
75
|
+
if (key in exports && exports[key] === _useGetLinkLocaleSlug[key]) return;
|
|
76
|
+
Object.defineProperty(exports, key, {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () {
|
|
79
|
+
return _useGetLinkLocaleSlug[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
var _useGetTranslationUrl = require("./useGetTranslationUrl.js");
|
|
84
|
+
Object.keys(_useGetTranslationUrl).forEach(function (key) {
|
|
85
|
+
if (key === "default" || key === "__esModule") return;
|
|
86
|
+
if (key in exports && exports[key] === _useGetTranslationUrl[key]) return;
|
|
87
|
+
Object.defineProperty(exports, key, {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function () {
|
|
90
|
+
return _useGetTranslationUrl[key];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
var _useLanguages = require("./useLanguages.js");
|
|
95
|
+
Object.keys(_useLanguages).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _useLanguages[key]) return;
|
|
98
|
+
Object.defineProperty(exports, key, {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () {
|
|
101
|
+
return _useLanguages[key];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
var _useNewsroom = require("./useNewsroom.js");
|
|
106
|
+
Object.keys(_useNewsroom).forEach(function (key) {
|
|
107
|
+
if (key === "default" || key === "__esModule") return;
|
|
108
|
+
if (key in exports && exports[key] === _useNewsroom[key]) return;
|
|
109
|
+
Object.defineProperty(exports, key, {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function () {
|
|
112
|
+
return _useNewsroom[key];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
var _useNewsroomContext = require("./useNewsroomContext.js");
|
|
117
|
+
Object.keys(_useNewsroomContext).forEach(function (key) {
|
|
118
|
+
if (key === "default" || key === "__esModule") return;
|
|
119
|
+
if (key in exports && exports[key] === _useNewsroomContext[key]) return;
|
|
120
|
+
Object.defineProperty(exports, key, {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: function () {
|
|
123
|
+
return _useNewsroomContext[key];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|