@prezly/theme-kit-nextjs 2.0.1-1 → 2.1.0
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/README.md +15 -15
- package/build/adapter-nextjs/api-handlers/fetchGalleries.js +21 -31
- package/build/adapter-nextjs/api-handlers/fetchGalleries.js.map +1 -1
- package/build/adapter-nextjs/api-handlers/fetchStories.js +23 -41
- package/build/adapter-nextjs/api-handlers/fetchStories.js.map +1 -1
- package/build/adapter-nextjs/api-handlers/index.js +7 -18
- package/build/adapter-nextjs/api-handlers/index.js.map +1 -1
- package/build/adapter-nextjs/getNewsroomServerSideProps.js +13 -20
- package/build/adapter-nextjs/getNewsroomServerSideProps.js.map +1 -1
- package/build/adapter-nextjs/getNewsroomStaticProps.js +13 -19
- package/build/adapter-nextjs/getNewsroomStaticProps.js.map +1 -1
- package/build/adapter-nextjs/index.js +21 -69
- package/build/adapter-nextjs/index.js.map +1 -1
- package/build/adapter-nextjs/page-props/category.js +96 -122
- package/build/adapter-nextjs/page-props/category.js.map +1 -1
- package/build/adapter-nextjs/page-props/gallery.js +65 -91
- package/build/adapter-nextjs/page-props/gallery.js.map +1 -1
- package/build/adapter-nextjs/page-props/galleryAlbum.js +49 -68
- package/build/adapter-nextjs/page-props/galleryAlbum.js.map +1 -1
- package/build/adapter-nextjs/page-props/home.js +66 -87
- package/build/adapter-nextjs/page-props/home.js.map +1 -1
- package/build/adapter-nextjs/page-props/index.js +40 -136
- package/build/adapter-nextjs/page-props/index.js.map +1 -1
- package/build/adapter-nextjs/page-props/lib/types.js +3 -1
- package/build/adapter-nextjs/page-props/search.js +28 -29
- package/build/adapter-nextjs/page-props/search.js.map +1 -1
- package/build/adapter-nextjs/page-props/sitemap/SitemapBuilder.js +46 -32
- package/build/adapter-nextjs/page-props/sitemap/SitemapBuilder.js.map +1 -1
- package/build/adapter-nextjs/page-props/sitemap/createPaths.js +17 -17
- package/build/adapter-nextjs/page-props/sitemap/createPaths.js.map +1 -1
- package/build/adapter-nextjs/page-props/sitemap/getServerSideProps.js +33 -37
- package/build/adapter-nextjs/page-props/sitemap/getServerSideProps.js.map +1 -1
- package/build/adapter-nextjs/page-props/sitemap/index.js +23 -41
- package/build/adapter-nextjs/page-props/sitemap/index.js.map +1 -1
- package/build/adapter-nextjs/page-props/sitemap/types.js +3 -1
- package/build/adapter-nextjs/page-props/story.js +60 -81
- package/build/adapter-nextjs/page-props/story.js.map +1 -1
- package/build/adapter-nextjs/page-props/storyPreview.js +24 -31
- package/build/adapter-nextjs/page-props/storyPreview.js.map +1 -1
- package/build/adapter-nextjs/processRequest.js +23 -38
- package/build/adapter-nextjs/processRequest.js.map +1 -1
- package/build/adapter-nextjs/processStaticRequest.js +14 -23
- package/build/adapter-nextjs/processStaticRequest.js.map +1 -1
- package/build/components-nextjs/PageSeo/PageSeo.js +77 -89
- package/build/components-nextjs/PageSeo/PageSeo.js.map +1 -1
- package/build/components-nextjs/PageSeo/index.js +19 -25
- package/build/components-nextjs/PageSeo/index.js.map +1 -1
- package/build/components-nextjs/PageSeo/lib/getAbsoluteUrl.js +8 -9
- package/build/components-nextjs/PageSeo/lib/getAbsoluteUrl.js.map +1 -1
- package/build/components-nextjs/PageSeo/lib/types.js +3 -1
- package/build/components-nextjs/StorySeo/StorySeo.js +46 -74
- package/build/components-nextjs/StorySeo/StorySeo.js.map +1 -1
- package/build/components-nextjs/StorySeo/index.js +5 -11
- package/build/components-nextjs/StorySeo/index.js.map +1 -1
- package/build/components-nextjs/document.js +44 -36
- package/build/components-nextjs/document.js.map +1 -1
- package/build/components-nextjs/index.js +9 -25
- package/build/components-nextjs/index.js.map +1 -1
- package/build/data-fetching/api/PrezlyApi.js +187 -210
- package/build/data-fetching/api/PrezlyApi.js.map +1 -1
- package/build/data-fetching/api/getPrezlyApi.js +19 -25
- package/build/data-fetching/api/getPrezlyApi.js.map +1 -1
- package/build/data-fetching/api/index.js +16 -14
- package/build/data-fetching/api/index.js.map +1 -1
- package/build/data-fetching/api/queries.js +41 -80
- package/build/data-fetching/api/queries.js.map +1 -1
- package/build/data-fetching/index.js +18 -36
- package/build/data-fetching/index.js.map +1 -1
- package/build/data-fetching/lib/getAlgoliaSettings.js +20 -26
- package/build/data-fetching/lib/getAlgoliaSettings.js.map +1 -1
- package/build/data-fetching/lib/getEnvVariables.js +36 -40
- package/build/data-fetching/lib/getEnvVariables.js.map +1 -1
- package/build/data-fetching/lib/index.js +11 -32
- package/build/data-fetching/lib/index.js.map +1 -1
- package/build/data-fetching/lib/isSdkError.js +6 -7
- package/build/data-fetching/lib/isSdkError.js.map +1 -1
- package/build/data-fetching/lib/isUuid.js +6 -7
- package/build/data-fetching/lib/isUuid.js.map +1 -1
- package/build/data-fetching/types.js +3 -1
- package/build/index.js +25 -103
- package/build/index.js.map +1 -1
- package/build/infinite-loading/index.js +23 -41
- package/build/infinite-loading/index.js.map +1 -1
- package/build/infinite-loading/types.js +3 -1
- package/build/infinite-loading/useInfiniteGalleriesLoading.js +35 -46
- package/build/infinite-loading/useInfiniteGalleriesLoading.js.map +1 -1
- package/build/infinite-loading/useInfiniteLoading.js +41 -54
- package/build/infinite-loading/useInfiniteLoading.js.map +1 -1
- package/build/infinite-loading/useInfiniteStoriesLoading.js +48 -60
- package/build/infinite-loading/useInfiniteStoriesLoading.js.map +1 -1
- package/build/intl/index.d.ts +1 -1
- package/build/intl/index.js +24 -47
- package/build/intl/index.js.map +1 -1
- package/build/intl/languages.js +110 -150
- package/build/intl/languages.js.map +1 -1
- package/build/intl/locale.d.ts +1 -0
- package/build/intl/locale.js +104 -58
- package/build/intl/locale.js.map +1 -1
- package/build/intl/localeConfig.d.ts +2 -3
- package/build/intl/localeConfig.js +13 -28
- package/build/intl/localeConfig.js.map +1 -1
- package/build/intl/localeList.d.ts +2 -4
- package/build/intl/localeList.js +108 -7
- package/build/intl/localeList.js.map +1 -1
- package/build/intl/localeObject.js +78 -83
- package/build/intl/localeObject.js.map +1 -1
- package/build/newsroom-context/context.js +24 -42
- package/build/newsroom-context/context.js.map +1 -1
- package/build/newsroom-context/hooks/index.js +27 -125
- package/build/newsroom-context/hooks/index.js.map +1 -1
- package/build/newsroom-context/hooks/useAlgoliaSettings.js +8 -9
- package/build/newsroom-context/hooks/useAlgoliaSettings.js.map +1 -1
- package/build/newsroom-context/hooks/useCategories.js +8 -9
- package/build/newsroom-context/hooks/useCategories.js.map +1 -1
- package/build/newsroom-context/hooks/useCompanyInformation.js +8 -9
- package/build/newsroom-context/hooks/useCompanyInformation.js.map +1 -1
- package/build/newsroom-context/hooks/useCurrentCategory.js +8 -9
- package/build/newsroom-context/hooks/useCurrentCategory.js.map +1 -1
- package/build/newsroom-context/hooks/useCurrentLocale.js +8 -9
- package/build/newsroom-context/hooks/useCurrentLocale.js.map +1 -1
- package/build/newsroom-context/hooks/useCurrentStory.js +8 -9
- package/build/newsroom-context/hooks/useCurrentStory.js.map +1 -1
- package/build/newsroom-context/hooks/useGetLinkLocaleSlug.js +19 -21
- package/build/newsroom-context/hooks/useGetLinkLocaleSlug.js.map +1 -1
- package/build/newsroom-context/hooks/useGetTranslationUrl.js +54 -56
- package/build/newsroom-context/hooks/useGetTranslationUrl.js.map +1 -1
- package/build/newsroom-context/hooks/useLanguages.js +8 -9
- package/build/newsroom-context/hooks/useLanguages.js.map +1 -1
- package/build/newsroom-context/hooks/useNewsroom.js +8 -9
- package/build/newsroom-context/hooks/useNewsroom.js.map +1 -1
- package/build/newsroom-context/hooks/useNewsroomContext.js +14 -15
- package/build/newsroom-context/hooks/useNewsroomContext.js.map +1 -1
- package/build/newsroom-context/index.d.ts +1 -2
- package/build/newsroom-context/index.js +20 -32
- package/build/newsroom-context/index.js.map +1 -1
- package/build/sentry/client.js +7 -8
- package/build/sentry/client.js.map +1 -1
- package/build/sentry/common.js +27 -30
- package/build/sentry/common.js.map +1 -1
- package/build/sentry/index.js +7 -18
- package/build/sentry/index.js.map +1 -1
- package/build/sentry/server.js +7 -8
- package/build/sentry/server.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/types.js +3 -1
- package/build/utils/boilerplate.js +18 -11
- package/build/utils/boilerplate.js.map +1 -1
- package/build/utils/constants.js +6 -11
- package/build/utils/constants.js.map +1 -1
- package/build/utils/getAssetsUrl.js +7 -8
- package/build/utils/getAssetsUrl.js.map +1 -1
- package/build/utils/getDataRequestLink.js +10 -10
- package/build/utils/getDataRequestLink.js.map +1 -1
- package/build/utils/getLocalizedCategoryData.js +29 -37
- package/build/utils/getLocalizedCategoryData.js.map +1 -1
- package/build/utils/getNewsroomLogoUrl.js +18 -19
- package/build/utils/getNewsroomLogoUrl.js.map +1 -1
- package/build/utils/getPrivacyPortalUrl.js +11 -15
- package/build/utils/getPrivacyPortalUrl.js.map +1 -1
- package/build/utils/getStoryPublicationDate.js +12 -13
- package/build/utils/getStoryPublicationDate.js.map +1 -1
- package/build/utils/getUploadcareGroupUrl.js +8 -9
- package/build/utils/getUploadcareGroupUrl.js.map +1 -1
- package/build/utils/index.js +26 -114
- package/build/utils/index.js.map +1 -1
- package/build/utils/isEmbargoStory.js +6 -7
- package/build/utils/isEmbargoStory.js.map +1 -1
- package/package.json +12 -26
- package/src/@types/global.d.ts +7 -0
- package/src/__mocks__/languages.ts +416 -0
- package/src/__mocks__/story.ts +359 -0
- package/src/adapter-nextjs/api-handlers/fetchGalleries.ts +24 -0
- package/src/adapter-nextjs/api-handlers/fetchStories.ts +26 -0
- package/src/adapter-nextjs/api-handlers/index.ts +2 -0
- package/src/adapter-nextjs/getNewsroomServerSideProps.ts +29 -0
- package/src/adapter-nextjs/getNewsroomStaticProps.ts +29 -0
- package/src/adapter-nextjs/index.ts +6 -0
- package/src/adapter-nextjs/page-props/category.ts +157 -0
- package/src/adapter-nextjs/page-props/gallery.ts +114 -0
- package/src/adapter-nextjs/page-props/galleryAlbum.ts +89 -0
- package/src/adapter-nextjs/page-props/home.ts +113 -0
- package/src/adapter-nextjs/page-props/index.ts +26 -0
- package/src/adapter-nextjs/page-props/lib/types.ts +8 -0
- package/src/adapter-nextjs/page-props/search.ts +53 -0
- package/src/adapter-nextjs/page-props/sitemap/SitemapBuilder.ts +56 -0
- package/src/adapter-nextjs/page-props/sitemap/createPaths.ts +21 -0
- package/src/adapter-nextjs/page-props/sitemap/getServerSideProps.ts +43 -0
- package/src/adapter-nextjs/page-props/sitemap/index.ts +5 -0
- package/src/adapter-nextjs/page-props/sitemap/types.ts +5 -0
- package/src/adapter-nextjs/page-props/story.ts +94 -0
- package/src/adapter-nextjs/page-props/storyPreview.ts +33 -0
- package/src/adapter-nextjs/processRequest.ts +49 -0
- package/src/adapter-nextjs/processStaticRequest.ts +32 -0
- package/src/components-nextjs/PageSeo/PageSeo.tsx +131 -0
- package/src/components-nextjs/PageSeo/index.ts +2 -0
- package/src/components-nextjs/PageSeo/lib/getAbsoluteUrl.ts +7 -0
- package/src/components-nextjs/PageSeo/lib/types.ts +4 -0
- package/src/components-nextjs/StorySeo/StorySeo.tsx +80 -0
- package/src/components-nextjs/StorySeo/index.ts +1 -0
- package/src/components-nextjs/document.tsx +38 -0
- package/src/components-nextjs/index.ts +3 -0
- package/src/data-fetching/api/PrezlyApi.ts +304 -0
- package/src/data-fetching/api/getPrezlyApi.ts +24 -0
- package/src/data-fetching/api/index.ts +1 -0
- package/src/data-fetching/api/queries.ts +51 -0
- package/src/data-fetching/index.ts +3 -0
- package/src/data-fetching/lib/getAlgoliaSettings.ts +29 -0
- package/src/data-fetching/lib/getEnvVariables.ts +46 -0
- package/src/data-fetching/lib/index.ts +4 -0
- package/src/data-fetching/lib/isSdkError.ts +5 -0
- package/src/data-fetching/lib/isUuid.ts +5 -0
- package/src/data-fetching/types.ts +14 -0
- package/src/index.ts +9 -0
- package/src/infinite-loading/index.ts +4 -0
- package/src/infinite-loading/types.ts +5 -0
- package/src/infinite-loading/useInfiniteGalleriesLoading.ts +53 -0
- package/src/infinite-loading/useInfiniteLoading.ts +66 -0
- package/src/infinite-loading/useInfiniteStoriesLoading.ts +81 -0
- package/src/intl/index.ts +4 -0
- package/src/intl/languages.test.ts +232 -0
- package/src/intl/languages.ts +233 -0
- package/src/intl/locale.test.ts +95 -0
- package/src/intl/locale.ts +140 -0
- package/src/intl/localeConfig.js +23 -0
- package/src/intl/localeList.js +110 -0
- package/src/intl/localeObject.test.ts +81 -0
- package/src/intl/localeObject.ts +99 -0
- package/src/newsroom-context/context.tsx +115 -0
- package/src/newsroom-context/hooks/index.ts +11 -0
- package/src/newsroom-context/hooks/useAlgoliaSettings.ts +7 -0
- package/src/newsroom-context/hooks/useCategories.ts +7 -0
- package/src/newsroom-context/hooks/useCompanyInformation.ts +7 -0
- package/src/newsroom-context/hooks/useCurrentCategory.ts +7 -0
- package/src/newsroom-context/hooks/useCurrentLocale.ts +7 -0
- package/src/newsroom-context/hooks/useCurrentStory.ts +7 -0
- package/src/newsroom-context/hooks/useGetLinkLocaleSlug.ts +37 -0
- package/src/newsroom-context/hooks/useGetTranslationUrl.ts +97 -0
- package/src/newsroom-context/hooks/useLanguages.ts +7 -0
- package/src/newsroom-context/hooks/useNewsroom.ts +7 -0
- package/src/newsroom-context/hooks/useNewsroomContext.ts +15 -0
- package/src/newsroom-context/index.ts +2 -0
- package/src/sentry/client.ts +7 -0
- package/src/sentry/common.ts +27 -0
- package/src/sentry/index.ts +2 -0
- package/src/sentry/server.ts +7 -0
- package/src/types.ts +51 -0
- package/src/utils/boilerplate.ts +27 -0
- package/src/utils/constants.ts +3 -0
- package/src/utils/getAssetsUrl.test.ts +9 -0
- package/src/utils/getAssetsUrl.ts +9 -0
- package/src/utils/getDataRequestLink.ts +14 -0
- package/src/utils/getLocalizedCategoryData.ts +47 -0
- package/src/utils/getNewsroomLogoUrl.ts +22 -0
- package/src/utils/getPrivacyPortalUrl.ts +25 -0
- package/src/utils/getStoryPublicationDate.tsx +15 -0
- package/src/utils/getUploadcareGroupUrl.ts +13 -0
- package/src/utils/index.ts +10 -0
- package/src/utils/isEmbargoStory.ts +10 -0
- package/build/@types/global.d.js +0 -1
package/build/intl/languages.js
CHANGED
|
@@ -1,30 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getShortestLocaleCode = exports.getNotifications = exports.getCompanyInformation = exports.getLanguageFromStory = exports.getLanguageFromNextLocaleIsoCode = exports.getLanguageByShortRegionCode = exports.getLanguageByNeutralLocaleCode = exports.getLanguageByExactLocaleCode = exports.getUsedLanguages = exports.getDefaultLanguage = exports.getLanguageDisplayName = void 0;
|
|
4
|
+
const locale_1 = require("./locale");
|
|
5
|
+
const localeObject_1 = require("./localeObject");
|
|
19
6
|
function isOnlyCulture(culture, languages) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
language_code
|
|
23
|
-
}
|
|
24
|
-
}) => language_code === culture.language_code).length;
|
|
25
|
-
return numberOfLanguages === 1;
|
|
7
|
+
const numberOfLanguages = languages.filter(({ locale: { language_code } }) => language_code === culture.language_code).length;
|
|
8
|
+
return numberOfLanguages === 1;
|
|
26
9
|
}
|
|
27
|
-
|
|
28
10
|
/**
|
|
29
11
|
* @returns the display name of the locale in its native language
|
|
30
12
|
*
|
|
@@ -38,135 +20,117 @@ function isOnlyCulture(culture, languages) {
|
|
|
38
20
|
* - -> English (Global), English (UK), Spanish
|
|
39
21
|
*/
|
|
40
22
|
function getLanguageDisplayName(language, languages) {
|
|
41
|
-
|
|
42
|
-
locale
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return locale.native_name.slice(0, cultureNameIndex - 1);
|
|
23
|
+
const { locale } = language;
|
|
24
|
+
if (isOnlyCulture(locale, languages)) {
|
|
25
|
+
const cultureNameIndex = locale.native_name.indexOf('(');
|
|
26
|
+
if (cultureNameIndex !== -1) {
|
|
27
|
+
return locale.native_name.slice(0, cultureNameIndex - 1);
|
|
28
|
+
}
|
|
48
29
|
}
|
|
49
|
-
|
|
50
|
-
return locale.native_name;
|
|
30
|
+
return locale.native_name;
|
|
51
31
|
}
|
|
52
|
-
|
|
32
|
+
exports.getLanguageDisplayName = getLanguageDisplayName;
|
|
53
33
|
/**
|
|
54
34
|
* @returns Language set as default in the Newsroom Settings.
|
|
55
35
|
*/
|
|
56
36
|
function getDefaultLanguage(languages) {
|
|
57
|
-
|
|
58
|
-
is_default
|
|
59
|
-
}) => is_default) || languages[0];
|
|
37
|
+
return languages.find(({ is_default }) => is_default) || languages[0];
|
|
60
38
|
}
|
|
61
|
-
|
|
39
|
+
exports.getDefaultLanguage = getDefaultLanguage;
|
|
62
40
|
/**
|
|
63
41
|
* @returns Only languages having at least one published story
|
|
64
42
|
*/
|
|
65
43
|
function getUsedLanguages(languages) {
|
|
66
|
-
|
|
44
|
+
return languages.filter((language) => language.public_stories_count > 0);
|
|
67
45
|
}
|
|
46
|
+
exports.getUsedLanguages = getUsedLanguages;
|
|
68
47
|
function getLanguageByExactLocaleCode(languages, locale) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
code
|
|
72
|
-
}) => code === localeCode);
|
|
48
|
+
const localeCode = locale.toUnderscoreCode();
|
|
49
|
+
return languages.find(({ code }) => code === localeCode);
|
|
73
50
|
}
|
|
74
|
-
|
|
51
|
+
exports.getLanguageByExactLocaleCode = getLanguageByExactLocaleCode;
|
|
75
52
|
// See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L123
|
|
76
53
|
function getLanguageByNeutralLocaleCode(languages, locale) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return usedLanguage;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Search in all languages
|
|
96
|
-
return languages.find(({
|
|
97
|
-
code
|
|
98
|
-
}) => _localeObject.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
54
|
+
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
55
|
+
// Prefer default language
|
|
56
|
+
const defaultLanguage = getDefaultLanguage(languages);
|
|
57
|
+
// TODO: This doesn't align with other methods logic
|
|
58
|
+
if (defaultLanguage.code === locale.toUnderscoreCode()) {
|
|
59
|
+
return defaultLanguage;
|
|
60
|
+
}
|
|
61
|
+
// Try to look in used cultures first (giving priority to used ones)
|
|
62
|
+
const usedLanguages = getUsedLanguages(languages);
|
|
63
|
+
const usedLanguage = usedLanguages.find(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
64
|
+
if (usedLanguage) {
|
|
65
|
+
return usedLanguage;
|
|
66
|
+
}
|
|
67
|
+
// Search in all languages
|
|
68
|
+
return languages.find(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode);
|
|
99
69
|
}
|
|
100
|
-
|
|
70
|
+
exports.getLanguageByNeutralLocaleCode = getLanguageByNeutralLocaleCode;
|
|
101
71
|
// See https://github.com/prezly/prezly/blob/master/lib/model/CulturePeer.php#L159
|
|
102
72
|
function getLanguageByShortRegionCode(languages, locale) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return usedLanguage;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Search in all languages
|
|
121
|
-
return languages.find(({
|
|
122
|
-
code
|
|
123
|
-
}) => _localeObject.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
73
|
+
const shortRegionCode = locale.toRegionCode();
|
|
74
|
+
// Prefer default language
|
|
75
|
+
const defaultLanguage = getDefaultLanguage(languages);
|
|
76
|
+
if (localeObject_1.LocaleObject.fromAnyCode(defaultLanguage.code).toRegionCode() === shortRegionCode) {
|
|
77
|
+
return defaultLanguage;
|
|
78
|
+
}
|
|
79
|
+
// Try to look in used cultures first (giving priority to used ones)
|
|
80
|
+
const usedLanguages = getUsedLanguages(languages);
|
|
81
|
+
const usedLanguage = usedLanguages.find(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
82
|
+
if (usedLanguage) {
|
|
83
|
+
return usedLanguage;
|
|
84
|
+
}
|
|
85
|
+
// Search in all languages
|
|
86
|
+
return languages.find(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
124
87
|
}
|
|
125
|
-
|
|
88
|
+
exports.getLanguageByShortRegionCode = getLanguageByShortRegionCode;
|
|
126
89
|
/**
|
|
127
90
|
* Retrieve a culture with fallback to legacy codes support.
|
|
128
91
|
* Pulled from https://github.com/prezly/prezly/blob/de9900d9890a33502780494aa3fb85c9a732b3c3/lib/model/CulturePeer.php#L91-L114
|
|
129
92
|
*/
|
|
130
93
|
function getLanguageFromNextLocaleIsoCode(languages, nextLocaleIsoCode) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
94
|
+
const defaultLanguage = getDefaultLanguage(languages);
|
|
95
|
+
if (!nextLocaleIsoCode || nextLocaleIsoCode === locale_1.DUMMY_DEFAULT_LOCALE) {
|
|
96
|
+
return defaultLanguage;
|
|
97
|
+
}
|
|
98
|
+
const locale = localeObject_1.LocaleObject.fromAnyCode(nextLocaleIsoCode);
|
|
99
|
+
let targetLanguage;
|
|
100
|
+
if (nextLocaleIsoCode.length >= 2 && nextLocaleIsoCode.length <= 4) {
|
|
101
|
+
// The order of methods here is reversed from `getShortestLocaleCode`, so that the logic "unwraps" the possible variants with no collisions
|
|
102
|
+
targetLanguage =
|
|
103
|
+
getLanguageByExactLocaleCode(languages, locale) ||
|
|
104
|
+
getLanguageByShortRegionCode(languages, locale) ||
|
|
105
|
+
getLanguageByNeutralLocaleCode(languages, locale);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
targetLanguage = getLanguageByExactLocaleCode(languages, locale);
|
|
109
|
+
}
|
|
110
|
+
return targetLanguage;
|
|
144
111
|
}
|
|
112
|
+
exports.getLanguageFromNextLocaleIsoCode = getLanguageFromNextLocaleIsoCode;
|
|
145
113
|
function getLanguageFromStory(languages, story) {
|
|
146
|
-
|
|
147
|
-
code
|
|
148
|
-
} = story.culture;
|
|
149
|
-
return languages.find(({
|
|
150
|
-
code
|
|
151
|
-
}) => code === storyLocaleCode);
|
|
114
|
+
const { code: storyLocaleCode } = story.culture;
|
|
115
|
+
return languages.find(({ code }) => code === storyLocaleCode);
|
|
152
116
|
}
|
|
153
|
-
|
|
117
|
+
exports.getLanguageFromStory = getLanguageFromStory;
|
|
154
118
|
/**
|
|
155
119
|
* Extracts company information for the selected locale
|
|
156
120
|
*/
|
|
157
121
|
function getCompanyInformation(languages, locale) {
|
|
158
|
-
|
|
159
|
-
|
|
122
|
+
const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
|
|
123
|
+
return currentLanguage.company_information;
|
|
160
124
|
}
|
|
161
|
-
|
|
125
|
+
exports.getCompanyInformation = getCompanyInformation;
|
|
162
126
|
/**
|
|
163
127
|
* Get newsroom notifications for the selected locale
|
|
164
128
|
*/
|
|
165
129
|
function getNotifications(languages, locale) {
|
|
166
|
-
|
|
167
|
-
|
|
130
|
+
const currentLanguage = getLanguageByExactLocaleCode(languages, locale) || getDefaultLanguage(languages);
|
|
131
|
+
return currentLanguage.notifications;
|
|
168
132
|
}
|
|
169
|
-
|
|
133
|
+
exports.getNotifications = getNotifications;
|
|
170
134
|
/**
|
|
171
135
|
* Get the shortest locale code possible from full locale code
|
|
172
136
|
* First: try shorting to neutral language code (there should be no locales with the same language code)
|
|
@@ -176,38 +140,34 @@ function getNotifications(languages, locale) {
|
|
|
176
140
|
* @param locale A LocaleObject constructed from FULL locale code (taken straight from the selected language)
|
|
177
141
|
*/
|
|
178
142
|
function getShortestLocaleCode(languages, locale) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
return shortRegionCode;
|
|
211
|
-
}
|
|
212
|
-
return localeCode;
|
|
213
|
-
}
|
|
143
|
+
const localeCode = locale.toUnderscoreCode();
|
|
144
|
+
const defaultLanguage = getDefaultLanguage(languages);
|
|
145
|
+
// If it's a default locale, return false (no locale needed in URL)
|
|
146
|
+
if (localeCode === defaultLanguage.code) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
// Try shorting to neutral language code
|
|
150
|
+
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
151
|
+
const matchingLanguagesByNeutralCode = languages.filter(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === neutralLanguageCode ||
|
|
152
|
+
code === neutralLanguageCode);
|
|
153
|
+
if (matchingLanguagesByNeutralCode.length === 1) {
|
|
154
|
+
return neutralLanguageCode;
|
|
155
|
+
}
|
|
156
|
+
// Try shorting to region code
|
|
157
|
+
const shortRegionCode = locale.toRegionCode();
|
|
158
|
+
const matchingLanguagesByRegionCode = languages.filter(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toRegionCode() === shortRegionCode);
|
|
159
|
+
// Prevent collision with neutral language codes
|
|
160
|
+
const lowerCasedShortRegionCode = shortRegionCode.toLowerCase();
|
|
161
|
+
const mathchingNeutralLanguagesByRegionCode = languages.filter(({ code }) => localeObject_1.LocaleObject.fromAnyCode(code).toNeutralLanguageCode() === lowerCasedShortRegionCode ||
|
|
162
|
+
code === lowerCasedShortRegionCode);
|
|
163
|
+
if (matchingLanguagesByRegionCode.length === 1 &&
|
|
164
|
+
// If there are 2 or more matching neutral languages, it means that there are no languages that can be shortened to neutral code
|
|
165
|
+
mathchingNeutralLanguagesByRegionCode.length !== 1 &&
|
|
166
|
+
// We don't want just numbers in our region code
|
|
167
|
+
Number.isNaN(Number(shortRegionCode))) {
|
|
168
|
+
return shortRegionCode;
|
|
169
|
+
}
|
|
170
|
+
return localeCode;
|
|
171
|
+
}
|
|
172
|
+
exports.getShortestLocaleCode = getShortestLocaleCode;
|
|
173
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/intl/languages.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/intl/languages.ts"],"names":[],"mappings":"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"}
|
package/build/intl/locale.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { Redirect } from 'next';
|
|
|
3
3
|
import type { ParsedUrlQuery } from 'querystring';
|
|
4
4
|
import { LocaleObject } from './localeObject';
|
|
5
5
|
export declare const DEFAULT_LOCALE = "en";
|
|
6
|
+
export declare const DUMMY_DEFAULT_LOCALE = "qps-ploc";
|
|
6
7
|
/**
|
|
7
8
|
* Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
|
|
8
9
|
* See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
|
package/build/intl/locale.js
CHANGED
|
@@ -1,73 +1,119 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.DEFAULT_LOCALE =
|
|
7
|
-
|
|
8
|
-
exports.
|
|
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';
|
|
14
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLocaleDirection = exports.getRedirectToCanonicalLocale = exports.getSupportedLocaleIsoCode = exports.DUMMY_DEFAULT_LOCALE = exports.DEFAULT_LOCALE = void 0;
|
|
4
|
+
const querystring_1 = require("querystring");
|
|
5
|
+
const localeObject_1 = require("./localeObject");
|
|
6
|
+
exports.DEFAULT_LOCALE = 'en';
|
|
7
|
+
// We use pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
|
|
8
|
+
exports.DUMMY_DEFAULT_LOCALE = 'qps-ploc';
|
|
15
9
|
/**
|
|
16
10
|
* This a list of locales that Prezly has translations for. Each code represents a language file in the `@prezly/themes-intl-messages` package.
|
|
17
11
|
* See https://github.com/prezly/themes-intl-messages for more info.
|
|
18
12
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const SUPPORTED_LOCALES = [
|
|
14
|
+
'af',
|
|
15
|
+
'ar',
|
|
16
|
+
'az',
|
|
17
|
+
'be',
|
|
18
|
+
'bg',
|
|
19
|
+
'cs',
|
|
20
|
+
'da',
|
|
21
|
+
'de',
|
|
22
|
+
'el',
|
|
23
|
+
'en',
|
|
24
|
+
'es',
|
|
25
|
+
'et',
|
|
26
|
+
'fi',
|
|
27
|
+
'fil',
|
|
28
|
+
'fr',
|
|
29
|
+
'ga',
|
|
30
|
+
'he',
|
|
31
|
+
'hi',
|
|
32
|
+
'hr',
|
|
33
|
+
'hu',
|
|
34
|
+
'id',
|
|
35
|
+
'it',
|
|
36
|
+
'ja',
|
|
37
|
+
'kk',
|
|
38
|
+
'ko',
|
|
39
|
+
'lt',
|
|
40
|
+
'lv',
|
|
41
|
+
'mt',
|
|
42
|
+
'nl',
|
|
43
|
+
'no',
|
|
44
|
+
'pl',
|
|
45
|
+
'pt-BR',
|
|
46
|
+
'pt',
|
|
47
|
+
'ro',
|
|
48
|
+
'ru',
|
|
49
|
+
'sk',
|
|
50
|
+
'sl',
|
|
51
|
+
'sv',
|
|
52
|
+
'sw',
|
|
53
|
+
'th',
|
|
54
|
+
'tr',
|
|
55
|
+
'uk',
|
|
56
|
+
'ur',
|
|
57
|
+
'uz',
|
|
58
|
+
'vi',
|
|
59
|
+
'zh-CN',
|
|
60
|
+
'zh-TW',
|
|
61
|
+
];
|
|
22
62
|
/**
|
|
23
63
|
* Use this function to determine which translations file you should load from `@prezly/themes-intl-mesages` package.
|
|
24
64
|
* See https://github.com/prezly/theme-nextjs-bea/blob/main/utils/lang.ts for a usage example.
|
|
25
65
|
*/
|
|
26
66
|
function getSupportedLocaleIsoCode(locale) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
console.warn('Unsupported locale provided. Please use `LocaleObject.fromAnyCode` to ensure you are using a correct language code');
|
|
49
|
-
return DEFAULT_LOCALE;
|
|
67
|
+
const localeIsoCode = locale.toHyphenCode();
|
|
68
|
+
const isSupportedLocale = localeIsoCode.length >= 2 && SUPPORTED_LOCALES.includes(localeIsoCode);
|
|
69
|
+
if (isSupportedLocale) {
|
|
70
|
+
return localeIsoCode;
|
|
71
|
+
}
|
|
72
|
+
const language = locale.toNeutralLanguageCode();
|
|
73
|
+
const isSupportedLanguage = SUPPORTED_LOCALES.includes(language);
|
|
74
|
+
if (isSupportedLanguage) {
|
|
75
|
+
return language;
|
|
76
|
+
}
|
|
77
|
+
// Custom mapping for Chinese locales
|
|
78
|
+
if (localeIsoCode.toLowerCase() === 'zh-hant') {
|
|
79
|
+
return 'zh-TW';
|
|
80
|
+
}
|
|
81
|
+
if (localeIsoCode.toLowerCase() === 'zh-hk') {
|
|
82
|
+
return 'zh-CN';
|
|
83
|
+
}
|
|
84
|
+
// This code should never be reached, because locale code check is happening in `LocaleObject.fromAnyCode`
|
|
85
|
+
// eslint-disable-next-line no-console
|
|
86
|
+
console.warn('Unsupported locale provided. Please use `LocaleObject.fromAnyCode` to ensure you are using a correct language code');
|
|
87
|
+
return exports.DEFAULT_LOCALE;
|
|
50
88
|
}
|
|
89
|
+
exports.getSupportedLocaleIsoCode = getSupportedLocaleIsoCode;
|
|
51
90
|
function getRedirectToCanonicalLocale(shortestLocaleCode, nextLocaleIsoCode, redirectPath, query) {
|
|
52
|
-
|
|
53
|
-
|
|
91
|
+
// No need to redirect if no particular locale was requested by the application
|
|
92
|
+
if (!nextLocaleIsoCode || nextLocaleIsoCode === exports.DUMMY_DEFAULT_LOCALE) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const shortestLocaleSlug = shortestLocaleCode
|
|
96
|
+
? localeObject_1.LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug()
|
|
97
|
+
: shortestLocaleCode;
|
|
98
|
+
if (shortestLocaleSlug !== nextLocaleIsoCode) {
|
|
99
|
+
const prefixedPath = redirectPath && !redirectPath.startsWith('/') ? `/${redirectPath}` : redirectPath;
|
|
100
|
+
const urlQuery = query ? `?${(0, querystring_1.stringify)(query)}` : '';
|
|
101
|
+
return {
|
|
102
|
+
destination: shortestLocaleSlug
|
|
103
|
+
? `/${shortestLocaleSlug}${prefixedPath}${urlQuery}`
|
|
104
|
+
: `${prefixedPath}${urlQuery}`,
|
|
105
|
+
permanent: false,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
54
108
|
return undefined;
|
|
55
|
-
}
|
|
56
|
-
const shortestLocaleSlug = shortestLocaleCode ? _localeObject.LocaleObject.fromAnyCode(shortestLocaleCode).toUrlSlug() : shortestLocaleCode;
|
|
57
|
-
if (shortestLocaleSlug !== nextLocaleIsoCode) {
|
|
58
|
-
const prefixedPath = redirectPath && !redirectPath.startsWith('/') ? `/${redirectPath}` : redirectPath;
|
|
59
|
-
const urlQuery = query ? `?${(0, _querystring.stringify)(query)}` : '';
|
|
60
|
-
return {
|
|
61
|
-
destination: shortestLocaleSlug ? `/${shortestLocaleSlug}${prefixedPath}${urlQuery}` : `${prefixedPath}${urlQuery}`,
|
|
62
|
-
permanent: false
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
return undefined;
|
|
66
109
|
}
|
|
110
|
+
exports.getRedirectToCanonicalLocale = getRedirectToCanonicalLocale;
|
|
67
111
|
function getLocaleDirection(locale) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
112
|
+
const neutralLanguageCode = locale.toNeutralLanguageCode();
|
|
113
|
+
if (['ar', 'he', 'ur'].includes(neutralLanguageCode)) {
|
|
114
|
+
return 'rtl';
|
|
115
|
+
}
|
|
116
|
+
return 'ltr';
|
|
117
|
+
}
|
|
118
|
+
exports.getLocaleDirection = getLocaleDirection;
|
|
119
|
+
//# sourceMappingURL=locale.js.map
|
package/build/intl/locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/intl/locale.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/intl/locale.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const localeConfig: I18NConfig;
|
|
1
|
+
export = lowercaseLocalPermutations;
|
|
2
|
+
declare const lowercaseLocalPermutations: string[];
|
|
@@ -1,35 +1,20 @@
|
|
|
1
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");
|
|
8
2
|
/**
|
|
9
3
|
* This list is pulled from the main Prezly application. The underscores are replaced with dashes.
|
|
10
4
|
* Together with permutation performed lower in the code,
|
|
11
5
|
* the exported list represents all of the possible locale codes that Next.js theme application might accept.
|
|
12
6
|
*/
|
|
13
|
-
|
|
14
|
-
const lowercaseLocales =
|
|
15
|
-
|
|
16
|
-
// We use pseudo locale used for localization testing, to reliably determine if we need to fallback to the default newsroom language
|
|
17
|
-
const DUMMY_DEFAULT_LOCALE = 'qps-ploc';
|
|
18
|
-
|
|
7
|
+
const supportedLocales = require('./localeList');
|
|
8
|
+
const lowercaseLocales = supportedLocales.map((l) => l.toLowerCase());
|
|
19
9
|
// Get all permutations for the shorter locale codes supported by Prezly (e.g. short region codes and neutral language codes)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
defaultLocale: DUMMY_DEFAULT_LOCALE,
|
|
32
|
-
// Default locale detection is disabled, since the locales would be determined by Prezly API
|
|
33
|
-
localeDetection: false
|
|
34
|
-
};
|
|
35
|
-
exports.localeConfig = localeConfig;
|
|
10
|
+
const lowercaseLocalPermutations = Array.from(new Set([
|
|
11
|
+
...lowercaseLocales,
|
|
12
|
+
...lowercaseLocales.map((code) => code.split('-')[0]),
|
|
13
|
+
...lowercaseLocales
|
|
14
|
+
.map((code) => code.split('-')[1])
|
|
15
|
+
.filter(Boolean)
|
|
16
|
+
// Remove number-only codes from possible permutations (like `419` for `es-419`)
|
|
17
|
+
.filter((code) => Number.isNaN(Number(code))),
|
|
18
|
+
])).sort();
|
|
19
|
+
module.exports = lowercaseLocalPermutations;
|
|
20
|
+
//# sourceMappingURL=localeConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localeConfig.js","sourceRoot":"","sources":["../../src/intl/localeConfig.
|
|
1
|
+
{"version":3,"file":"localeConfig.js","sourceRoot":"","sources":["../../src/intl/localeConfig.js"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEjD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAEtE,6HAA6H;AAC7H,MAAM,0BAA0B,GAAG,KAAK,CAAC,IAAI,CACzC,IAAI,GAAG,CAAC;IACJ,GAAG,gBAAgB;IACnB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,gBAAgB;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,MAAM,CAAC,OAAO,CAAC;QAChB,gFAAgF;SAC/E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CACpD,CAAC,CACL,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC"}
|