@enonic/nextjs-adapter 3.2.2 → 3.3.0-B1

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.
Files changed (288) hide show
  1. package/package.json +41 -22
  2. package/src/baseMappings.ts +9 -9
  3. package/src/common/ComponentRegistry.ts +2 -5
  4. package/src/common/constants.ts +4 -4
  5. package/src/common/env.ts +1 -1
  6. package/src/guillotine/applyProcessors.ts +3 -7
  7. package/src/guillotine/buildComponentTree.ts +1 -1
  8. package/src/guillotine/buildErrorResponse.ts +3 -3
  9. package/src/guillotine/buildPage.ts +2 -2
  10. package/src/guillotine/collectComponentDescriptors.ts +6 -13
  11. package/src/guillotine/combineMultipleQueries.ts +3 -6
  12. package/src/guillotine/createMetaData.ts +2 -2
  13. package/src/guillotine/fetchContent.ts +8 -14
  14. package/src/guillotine/fetchContentData.ts +4 -10
  15. package/src/guillotine/fetchContentPathsForAllLocales.ts +3 -3
  16. package/src/guillotine/fetchContentPathsForLocale.ts +7 -7
  17. package/src/guillotine/fetchFromApi.ts +8 -8
  18. package/src/guillotine/fetchGuillotine.ts +8 -8
  19. package/src/guillotine/fetchMetaData.ts +5 -5
  20. package/src/guillotine/getCleanContentPathArrayOrThrow400.ts +2 -2
  21. package/src/guillotine/getParentRegion.ts +2 -2
  22. package/src/guillotine/getQueryAndVariables.ts +5 -9
  23. package/src/guillotine/metadata/configQuery.ts +2 -2
  24. package/src/guillotine/parseComponentPath.ts +4 -7
  25. package/src/guillotine/processComponentConfig.ts +1 -1
  26. package/src/guillotine/restrictComponentsToPath.ts +1 -1
  27. package/src/i18n/LocaleContext.tsx +3 -3
  28. package/src/index.ts +3 -3
  29. package/src/types/component.ts +1 -1
  30. package/src/types/componentProps.ts +4 -3
  31. package/src/types/guillotine.ts +1 -1
  32. package/src/types/index.ts +3 -3
  33. package/src/utils/buildGuillotineRequestHeaders.ts +4 -7
  34. package/src/utils/fixDoubleSlashes.ts +1 -1
  35. package/src/utils/getLocaleMappings.ts +1 -1
  36. package/src/utils/getRenderMode.ts +2 -5
  37. package/src/views/BaseComponent.tsx +5 -5
  38. package/src/views/BaseContent.tsx +1 -1
  39. package/src/views/BaseMacro.tsx +1 -1
  40. package/src/views/PropsView.tsx +1 -1
  41. package/src/views/RichTextView.tsx +68 -25
  42. package/src/views/StaticContent.tsx +1 -1
  43. package/baseMappings.d.ts +0 -1
  44. package/baseMappings.js +0 -43
  45. package/baseMappings.js.map +0 -1
  46. package/client/getClientHydratedHtml.d.ts +0 -1
  47. package/client/getClientHydratedHtml.jsx +0 -9
  48. package/client/getClientHydratedHtml.jsx.map +0 -1
  49. package/client.d.ts +0 -1
  50. package/client.js +0 -3
  51. package/client.js.map +0 -1
  52. package/common/ComponentRegistry.d.ts +0 -34
  53. package/common/ComponentRegistry.js +0 -121
  54. package/common/ComponentRegistry.js.map +0 -1
  55. package/common/UrlProcessor.d.ts +0 -25
  56. package/common/UrlProcessor.js +0 -151
  57. package/common/UrlProcessor.js.map +0 -1
  58. package/common/constants.d.ts +0 -51
  59. package/common/constants.js +0 -86
  60. package/common/constants.js.map +0 -1
  61. package/common/env.d.ts +0 -12
  62. package/common/env.js +0 -30
  63. package/common/env.js.map +0 -1
  64. package/guillotine/applyProcessors.d.ts +0 -2
  65. package/guillotine/applyProcessors.js +0 -33
  66. package/guillotine/applyProcessors.js.map +0 -1
  67. package/guillotine/buildComponentTree.d.ts +0 -2
  68. package/guillotine/buildComponentTree.js +0 -45
  69. package/guillotine/buildComponentTree.js.map +0 -1
  70. package/guillotine/buildErrorResponse.d.ts +0 -3
  71. package/guillotine/buildErrorResponse.js +0 -27
  72. package/guillotine/buildErrorResponse.js.map +0 -1
  73. package/guillotine/buildPage.d.ts +0 -2
  74. package/guillotine/buildPage.js +0 -10
  75. package/guillotine/buildPage.js.map +0 -1
  76. package/guillotine/collectComponentDescriptors.d.ts +0 -6
  77. package/guillotine/collectComponentDescriptors.js +0 -43
  78. package/guillotine/collectComponentDescriptors.js.map +0 -1
  79. package/guillotine/combineMultipleQueries.d.ts +0 -2
  80. package/guillotine/combineMultipleQueries.js +0 -58
  81. package/guillotine/combineMultipleQueries.js.map +0 -1
  82. package/guillotine/createMetaData.d.ts +0 -18
  83. package/guillotine/createMetaData.js +0 -45
  84. package/guillotine/createMetaData.js.map +0 -1
  85. package/guillotine/fetchContent.d.ts +0 -9
  86. package/guillotine/fetchContent.js +0 -222
  87. package/guillotine/fetchContent.js.map +0 -1
  88. package/guillotine/fetchContentData.d.ts +0 -2
  89. package/guillotine/fetchContentData.js +0 -30
  90. package/guillotine/fetchContentData.js.map +0 -1
  91. package/guillotine/fetchContentPathsForAllLocales.d.ts +0 -2
  92. package/guillotine/fetchContentPathsForAllLocales.js +0 -21
  93. package/guillotine/fetchContentPathsForAllLocales.js.map +0 -1
  94. package/guillotine/fetchContentPathsForLocale.d.ts +0 -2
  95. package/guillotine/fetchContentPathsForLocale.js +0 -41
  96. package/guillotine/fetchContentPathsForLocale.js.map +0 -1
  97. package/guillotine/fetchFromApi.d.ts +0 -3
  98. package/guillotine/fetchFromApi.js +0 -76
  99. package/guillotine/fetchFromApi.js.map +0 -1
  100. package/guillotine/fetchGuillotine.d.ts +0 -3
  101. package/guillotine/fetchGuillotine.js +0 -75
  102. package/guillotine/fetchGuillotine.js.map +0 -1
  103. package/guillotine/fetchMetaData.d.ts +0 -2
  104. package/guillotine/fetchMetaData.js +0 -33
  105. package/guillotine/fetchMetaData.js.map +0 -1
  106. package/guillotine/getCleanContentPathArrayOrThrow400.d.ts +0 -2
  107. package/guillotine/getCleanContentPathArrayOrThrow400.js +0 -20
  108. package/guillotine/getCleanContentPathArrayOrThrow400.js.map +0 -1
  109. package/guillotine/getComponentConfig.d.ts +0 -2
  110. package/guillotine/getComponentConfig.js +0 -5
  111. package/guillotine/getComponentConfig.js.map +0 -1
  112. package/guillotine/getContentAndComponentPaths.d.ts +0 -1
  113. package/guillotine/getContentAndComponentPaths.js +0 -12
  114. package/guillotine/getContentAndComponentPaths.js.map +0 -1
  115. package/guillotine/getMetaData.d.ts +0 -2
  116. package/guillotine/getMetaData.js +0 -67
  117. package/guillotine/getMetaData.js.map +0 -1
  118. package/guillotine/getParentRegion.d.ts +0 -2
  119. package/guillotine/getParentRegion.js +0 -40
  120. package/guillotine/getParentRegion.js.map +0 -1
  121. package/guillotine/getQueryAndVariables.d.ts +0 -2
  122. package/guillotine/getQueryAndVariables.js +0 -32
  123. package/guillotine/getQueryAndVariables.js.map +0 -1
  124. package/guillotine/metadata/configQuery.d.ts +0 -2
  125. package/guillotine/metadata/configQuery.js +0 -36
  126. package/guillotine/metadata/configQuery.js.map +0 -1
  127. package/guillotine/metadata/richTextQuery.d.ts +0 -1
  128. package/guillotine/metadata/richTextQuery.js +0 -47
  129. package/guillotine/metadata/richTextQuery.js.map +0 -1
  130. package/guillotine/parseComponentPath.d.ts +0 -2
  131. package/guillotine/parseComponentPath.js +0 -22
  132. package/guillotine/parseComponentPath.js.map +0 -1
  133. package/guillotine/prefixFragmentCmpPath.d.ts +0 -1
  134. package/guillotine/prefixFragmentCmpPath.js +0 -13
  135. package/guillotine/prefixFragmentCmpPath.js.map +0 -1
  136. package/guillotine/processComponentConfig.d.ts +0 -2
  137. package/guillotine/processComponentConfig.js +0 -30
  138. package/guillotine/processComponentConfig.js.map +0 -1
  139. package/guillotine/restrictComponentsToPath.d.ts +0 -2
  140. package/guillotine/restrictComponentsToPath.js +0 -38
  141. package/guillotine/restrictComponentsToPath.js.map +0 -1
  142. package/guillotine/validateData.d.ts +0 -2
  143. package/guillotine/validateData.js +0 -7
  144. package/guillotine/validateData.js.map +0 -1
  145. package/guillotine/validateNotFound.d.ts +0 -2
  146. package/guillotine/validateNotFound.js +0 -16
  147. package/guillotine/validateNotFound.js.map +0 -1
  148. package/guillotine/validateShortcut.d.ts +0 -2
  149. package/guillotine/validateShortcut.js +0 -35
  150. package/guillotine/validateShortcut.js.map +0 -1
  151. package/i18n/LocaleContext.d.ts +0 -7
  152. package/i18n/LocaleContext.jsx +0 -50
  153. package/i18n/LocaleContext.jsx.map +0 -1
  154. package/i18n/i18n.d.ts +0 -12
  155. package/i18n/i18n.js +0 -59
  156. package/i18n/i18n.js.map +0 -1
  157. package/index.d.ts +0 -14
  158. package/index.js +0 -14
  159. package/index.js.map +0 -1
  160. package/query/Shortcut.d.ts +0 -1
  161. package/query/Shortcut.js +0 -19
  162. package/query/Shortcut.js.map +0 -1
  163. package/server/getServerRenderedHtml.d.ts +0 -1
  164. package/server/getServerRenderedHtml.js +0 -4
  165. package/server/getServerRenderedHtml.js.map +0 -1
  166. package/server.d.ts +0 -5
  167. package/server.js +0 -6
  168. package/server.js.map +0 -1
  169. package/types/component.d.ts +0 -92
  170. package/types/component.js +0 -2
  171. package/types/component.js.map +0 -1
  172. package/types/componentProps.d.ts +0 -106
  173. package/types/componentProps.js +0 -2
  174. package/types/componentProps.js.map +0 -1
  175. package/types/guillotine.d.ts +0 -344
  176. package/types/guillotine.js +0 -2
  177. package/types/guillotine.js.map +0 -1
  178. package/types/i18n.d.ts +0 -7
  179. package/types/i18n.js +0 -2
  180. package/types/i18n.js.map +0 -1
  181. package/types/index.d.ts +0 -47
  182. package/types/index.js +0 -3
  183. package/types/index.js.map +0 -1
  184. package/types/next.d.ts +0 -6
  185. package/types/next.js +0 -2
  186. package/types/next.js.map +0 -1
  187. package/types/util.d.ts +0 -3
  188. package/types/util.js +0 -3
  189. package/types/util.js.map +0 -1
  190. package/utils/addLineNumbers.d.ts +0 -1
  191. package/utils/addLineNumbers.js +0 -4
  192. package/utils/addLineNumbers.js.map +0 -1
  193. package/utils/buildGuillotineRequestHeaders.d.ts +0 -7
  194. package/utils/buildGuillotineRequestHeaders.js +0 -16
  195. package/utils/buildGuillotineRequestHeaders.js.map +0 -1
  196. package/utils/commonChars.d.ts +0 -1
  197. package/utils/commonChars.js +0 -17
  198. package/utils/commonChars.js.map +0 -1
  199. package/utils/enonicLog.d.ts +0 -5
  200. package/utils/enonicLog.js +0 -23
  201. package/utils/enonicLog.js.map +0 -1
  202. package/utils/fixDoubleSlashes.d.ts +0 -1
  203. package/utils/fixDoubleSlashes.js +0 -4
  204. package/utils/fixDoubleSlashes.js.map +0 -1
  205. package/utils/getAllLocales.d.ts +0 -1
  206. package/utils/getAllLocales.js +0 -5
  207. package/utils/getAllLocales.js.map +0 -1
  208. package/utils/getContentApiUrl.d.ts +0 -2
  209. package/utils/getContentApiUrl.js +0 -15
  210. package/utils/getContentApiUrl.js.map +0 -1
  211. package/utils/getLocaleMapping.d.ts +0 -2
  212. package/utils/getLocaleMapping.js +0 -19
  213. package/utils/getLocaleMapping.js.map +0 -1
  214. package/utils/getLocaleMappingByLocale.d.ts +0 -2
  215. package/utils/getLocaleMappingByLocale.js +0 -13
  216. package/utils/getLocaleMappingByLocale.js.map +0 -1
  217. package/utils/getLocaleMappingByProjectId.d.ts +0 -2
  218. package/utils/getLocaleMappingByProjectId.js +0 -16
  219. package/utils/getLocaleMappingByProjectId.js.map +0 -1
  220. package/utils/getLocaleMappings.d.ts +0 -2
  221. package/utils/getLocaleMappings.js +0 -30
  222. package/utils/getLocaleMappings.js.map +0 -1
  223. package/utils/getRenderMode.d.ts +0 -3
  224. package/utils/getRenderMode.js +0 -8
  225. package/utils/getRenderMode.js.map +0 -1
  226. package/utils/getRequestLocaleInfo.d.ts +0 -6
  227. package/utils/getRequestLocaleInfo.js +0 -29
  228. package/utils/getRequestLocaleInfo.js.map +0 -1
  229. package/utils/getXpBaseUrl.d.ts +0 -2
  230. package/utils/getXpBaseUrl.js +0 -8
  231. package/utils/getXpBaseUrl.js.map +0 -1
  232. package/utils/indent.d.ts +0 -1
  233. package/utils/indent.js +0 -5
  234. package/utils/indent.js.map +0 -1
  235. package/utils/sanitizeGraphqlName.d.ts +0 -1
  236. package/utils/sanitizeGraphqlName.js +0 -12
  237. package/utils/sanitizeGraphqlName.js.map +0 -1
  238. package/views/BaseComponent.d.ts +0 -20
  239. package/views/BaseComponent.jsx +0 -129
  240. package/views/BaseComponent.jsx.map +0 -1
  241. package/views/BaseContent.d.ts +0 -3
  242. package/views/BaseContent.jsx +0 -38
  243. package/views/BaseContent.jsx.map +0 -1
  244. package/views/BaseLayout.d.ts +0 -3
  245. package/views/BaseLayout.jsx +0 -24
  246. package/views/BaseLayout.jsx.map +0 -1
  247. package/views/BaseMacro.d.ts +0 -6
  248. package/views/BaseMacro.jsx +0 -100
  249. package/views/BaseMacro.jsx.map +0 -1
  250. package/views/BasePage.d.ts +0 -3
  251. package/views/BasePage.jsx +0 -34
  252. package/views/BasePage.jsx.map +0 -1
  253. package/views/BasePart.d.ts +0 -3
  254. package/views/BasePart.jsx +0 -24
  255. package/views/BasePart.jsx.map +0 -1
  256. package/views/Empty.d.ts +0 -2
  257. package/views/Empty.jsx +0 -4
  258. package/views/Empty.jsx.map +0 -1
  259. package/views/Fragment.d.ts +0 -3
  260. package/views/Fragment.jsx +0 -30
  261. package/views/Fragment.jsx.map +0 -1
  262. package/views/MainView.d.ts +0 -3
  263. package/views/MainView.jsx +0 -14
  264. package/views/MainView.jsx.map +0 -1
  265. package/views/PropsView.d.ts +0 -2
  266. package/views/PropsView.jsx +0 -21
  267. package/views/PropsView.jsx.map +0 -1
  268. package/views/Region.d.ts +0 -6
  269. package/views/Region.jsx +0 -52
  270. package/views/Region.jsx.map +0 -1
  271. package/views/RichTextView.d.ts +0 -3
  272. package/views/RichTextView.jsx +0 -39
  273. package/views/RichTextView.jsx.map +0 -1
  274. package/views/SingleComponent.d.ts +0 -4
  275. package/views/SingleComponent.jsx +0 -10
  276. package/views/SingleComponent.jsx.map +0 -1
  277. package/views/StaticContent.d.ts +0 -10
  278. package/views/StaticContent.jsx +0 -37
  279. package/views/StaticContent.jsx.map +0 -1
  280. package/views/Text.d.ts +0 -8
  281. package/views/Text.jsx +0 -4
  282. package/views/Text.jsx.map +0 -1
  283. package/views/macros/DefaultMacro.d.ts +0 -3
  284. package/views/macros/DefaultMacro.jsx +0 -4
  285. package/views/macros/DefaultMacro.jsx.map +0 -1
  286. package/views/macros/DisableMacro.d.ts +0 -3
  287. package/views/macros/DisableMacro.jsx +0 -3
  288. package/views/macros/DisableMacro.jsx.map +0 -1
@@ -9,23 +9,23 @@ export const fetchMetaData = async (
9
9
  contentApiUrl: string,
10
10
  xpContentPath: string,
11
11
  mapping: LocaleMapping,
12
- headers?: GuillotineRequestHeaders,
12
+ headers?: GuillotineRequestHeaders
13
13
  ): Promise<MetaResult> => {
14
14
  const body: ContentApiBaseBody = {
15
15
  query: getMetaQuery(pageFragmentQuery()),
16
16
  variables: {
17
- path: xpContentPath,
18
- },
17
+ path: xpContentPath
18
+ }
19
19
  };
20
20
  const metaResult = await fetchGuillotine<MetaResult>(contentApiUrl, mapping, {
21
21
  body,
22
- headers,
22
+ headers
23
23
  });
24
24
  if (metaResult.error) {
25
25
  return metaResult;
26
26
  } else {
27
27
  return {
28
- meta: metaResult?.guillotine?.get,
28
+ meta: metaResult?.guillotine?.get
29
29
  };
30
30
  }
31
31
  };
@@ -10,7 +10,7 @@ export const getCleanContentPathArrayOrThrow400 = (contentPath: string | string[
10
10
  throw Error(JSON.stringify({
11
11
  code: 400,
12
12
  message: `Unexpected target content _path: contentPath must be a string or pure string array (contentPath=${JSON.stringify(
13
- contentPath)})`,
13
+ contentPath)})`
14
14
  }));
15
15
  }
16
16
 
@@ -19,4 +19,4 @@ export const getCleanContentPathArrayOrThrow400 = (contentPath: string | string[
19
19
  } else {
20
20
  return (contentPath).join('/');
21
21
  }
22
- };
22
+ };
@@ -10,7 +10,7 @@ export function getParentRegion(
10
10
  contentType: string,
11
11
  cmpPath: PathFragment[],
12
12
  components: PageComponent[] = [],
13
- createMissing ? : boolean,
13
+ createMissing ?: boolean
14
14
  ): PageRegion | undefined {
15
15
  let currentTree: RegionTree = source;
16
16
  let currentRegion: PageRegion | undefined;
@@ -26,7 +26,7 @@ export function getParentRegion(
26
26
  if (createMissing) {
27
27
  currentRegion = {
28
28
  name: regionName,
29
- components: [],
29
+ components: []
30
30
  };
31
31
  currentTree[regionName] = currentRegion;
32
32
  } else {
@@ -1,8 +1,4 @@
1
- import type {
2
- Context,
3
- QueryAndVariables,
4
- SelectedQueryMaybeVariablesFunc,
5
- } from '../types';
1
+ import type {Context, QueryAndVariables, SelectedQueryMaybeVariablesFunc} from '../types';
6
2
 
7
3
 
8
4
  export function getQueryAndVariables(
@@ -10,7 +6,7 @@ export function getQueryAndVariables(
10
6
  path: string,
11
7
  context: Context,
12
8
  selectedQuery?: SelectedQueryMaybeVariablesFunc,
13
- config?: any,
9
+ config?: any
14
10
  ): QueryAndVariables | undefined {
15
11
 
16
12
  let query, getVariables;
@@ -45,8 +41,8 @@ export function getQueryAndVariables(
45
41
  return {
46
42
  query,
47
43
  variables: getVariables ? getVariables(path, context, config) : {
48
- path,
49
- },
44
+ path
45
+ }
50
46
  };
51
47
  }
52
- }
48
+ }
@@ -7,7 +7,7 @@ import {sanitizeGraphqlName} from '../../utils/sanitizeGraphqlName';
7
7
  export const configQuery = (
8
8
  list: [string, ComponentDefinition][],
9
9
  includeAppName = true,
10
- canUseConfigAsJson = true,
10
+ canUseConfigAsJson = true
11
11
  ): string => {
12
12
  const hasQueryList = list?.filter(([key, def]) => def.configQuery) || [];
13
13
  if (hasQueryList.length === 0) {
@@ -43,4 +43,4 @@ export const configQuery = (
43
43
  ${Object.entries(configsByApp).map(entry => entry[0] + '{\n' + entry[1].join('\n') + '\n}')}
44
44
  }`;
45
45
  }
46
- };
46
+ };
@@ -1,10 +1,7 @@
1
1
  import type {PathFragment} from '../types';
2
2
 
3
3
 
4
- import {
5
- FRAGMENT_CONTENTTYPE_NAME,
6
- FRAGMENT_DEFAULT_REGION_NAME,
7
- } from '../common/constants';
4
+ import {FRAGMENT_CONTENTTYPE_NAME, FRAGMENT_DEFAULT_REGION_NAME} from '../common/constants';
8
5
 
9
6
 
10
7
  export function parseComponentPath(contentType: string, path: string): PathFragment[] {
@@ -14,7 +11,7 @@ export function parseComponentPath(contentType: string, path: string): PathFragm
14
11
  while ((match = myRegexp.exec(path)) !== null) {
15
12
  matches.push({
16
13
  region: match[1],
17
- index: +match[2],
14
+ index: +match[2]
18
15
  });
19
16
  }
20
17
  if (contentType === FRAGMENT_CONTENTTYPE_NAME) {
@@ -22,8 +19,8 @@ export function parseComponentPath(contentType: string, path: string): PathFragm
22
19
  // prepend FRAGMENT_DEFAULT_REGION_NAME to path to conform to page structure
23
20
  matches.unshift({
24
21
  region: FRAGMENT_DEFAULT_REGION_NAME,
25
- index: 0,
22
+ index: 0
26
23
  });
27
24
  }
28
25
  return matches;
29
- }
26
+ }
@@ -7,7 +7,7 @@ import {sanitizeGraphqlName} from '../utils/sanitizeGraphqlName';
7
7
  export function processComponentConfig(
8
8
  myAppName: string,
9
9
  myAppNameDashed: string,
10
- cmp: PageComponent,
10
+ cmp: PageComponent
11
11
  ): void {
12
12
  const cmpData = cmp[cmp.type];
13
13
  if (cmpData && 'descriptor' in cmpData && cmpData.descriptor) {
@@ -9,7 +9,7 @@ import {prefixFragmentCmpPath} from './prefixFragmentCmpPath';
9
9
  export function restrictComponentsToPath(
10
10
  contentType: string,
11
11
  components?: PageComponent[],
12
- componentPath?: string,
12
+ componentPath?: string
13
13
  ): PageComponent[] {
14
14
  if (!componentPath || !components?.length) {
15
15
  return components || [];
@@ -9,14 +9,14 @@ const LocaleContext = createContext<LocaleContextType>({
9
9
  dictionary: {},
10
10
  locale: '',
11
11
  localize: (key: string, ...args: any[]) => key,
12
- setLocale: (locale: string) => Promise.resolve({}),
12
+ setLocale: (locale: string) => Promise.resolve({})
13
13
  });
14
14
 
15
15
  export const useLocaleContext = () => useContext(LocaleContext);
16
16
 
17
17
  export const LocaleContextProvider = ({
18
18
  children,
19
- locale: localeProps = '',
19
+ locale: localeProps = ''
20
20
  }: {
21
21
  children: any
22
22
  locale?: string
@@ -51,7 +51,7 @@ export const LocaleContextProvider = ({
51
51
  setLocale,
52
52
  locale: currentLocale,
53
53
  dictionary,
54
- localize,
54
+ localize
55
55
  }}>
56
56
  {children}
57
57
  </LocaleContext.Provider>
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@ export {
2
2
  APP_NAME,
3
3
  APP_NAME_DASHED,
4
4
  APP_NAME_UNDERSCORED,
5
- IS_DEV_MODE,
5
+ IS_DEV_MODE
6
6
  } from './common/env';
7
7
 
8
8
  export type * from './types';
@@ -19,7 +19,7 @@ export {
19
19
  RENDER_MODE_HEADER,
20
20
  XP_BASE_URL_HEADER,
21
21
  XP_COMPONENT_TYPE,
22
- XP_REQUEST_TYPE,
22
+ XP_REQUEST_TYPE
23
23
  } from './common/constants';
24
24
 
25
25
 
@@ -38,5 +38,5 @@ export {sanitizeGraphqlName} from './utils/sanitizeGraphqlName';
38
38
  export {
39
39
  UrlProcessor,
40
40
  getAsset,
41
- getUrl,
41
+ getUrl
42
42
  } from './common/UrlProcessor';
@@ -4,7 +4,7 @@ import type {
4
4
  RichTextData as CompsRichTextData,
5
5
  LinkData as CompsLinkData,
6
6
  ImageData as CompsImageData,
7
- MacroData as CompsMacroData,
7
+ MacroData as CompsMacroData
8
8
  } from '@enonic/react-components';
9
9
 
10
10
  // Differs from ComponentDefinition to avoid storing catchAll on all components
@@ -9,8 +9,9 @@ import type {
9
9
  PageData,
10
10
  PartData,
11
11
  RichTextData,
12
- RegionTree,
12
+ RegionTree
13
13
  } from './component';
14
+ import type {ReactNode} from 'react';
14
15
 
15
16
 
16
17
  export interface BaseComponentProps {
@@ -29,7 +30,7 @@ export interface BaseLayoutProps {
29
30
  }
30
31
 
31
32
  export interface BaseMacroProps {
32
- children: string | React.ReactNode;
33
+ children: ReactNode;
33
34
  data: Omit<MacroData, 'ref'>;
34
35
  meta: MetaData;
35
36
  renderInEditMode?: boolean;
@@ -86,7 +87,7 @@ export interface MetaData {
86
87
  apiUrl: string,
87
88
  baseUrl: string,
88
89
  locale: string,
89
- defaultLocale: string,
90
+ defaultLocale: string
90
91
  }
91
92
 
92
93
  export interface PageProps {
@@ -65,7 +65,7 @@ export interface FetchContentResult extends Result {
65
65
  // Seems like NodeJS.fetch lowercases all headers, so we need to lowercase the
66
66
  // header names here.
67
67
  export interface GuillotineRequestHeaders {
68
- [key: string]: string;
68
+ [key: string]: string | undefined;
69
69
  Cookie?: string
70
70
  locale: string
71
71
  locales: string
@@ -16,12 +16,12 @@ export interface ContentApiBaseBody {
16
16
 
17
17
  export interface ContentApiBaseBodyVariables {
18
18
  path?: string, // Full content item _path
19
- [key: string]: string | number | undefined,
19
+ [key: string]: string | number | undefined
20
20
  }
21
21
 
22
22
  export interface ContentPathItem {
23
23
  contentPath: string[]
24
- locale: string,
24
+ locale: string
25
25
  }
26
26
 
27
27
  export interface PathFragment {
@@ -51,7 +51,7 @@ export type FetchOptions = Omit<RequestInit, 'body'> & {
51
51
  body?: ContentApiBaseBody,
52
52
  next?: {
53
53
  revalidate?: boolean | number,
54
- tags?: string[],
54
+ tags?: string[]
55
55
  }
56
56
  };
57
57
 
@@ -1,17 +1,14 @@
1
1
  import type {Context, GuillotineRequestHeaders} from '../types';
2
2
 
3
3
 
4
- import {
5
- GUILLOTINE_REQUEST_HEADERS,
6
- JSESSIONID_HEADER,
7
- } from '../common/constants';
4
+ import {GUILLOTINE_REQUEST_HEADERS, JSESSIONID_HEADER} from '../common/constants';
8
5
 
9
6
 
10
7
  export function buildGuillotineRequestHeaders({
11
8
  context,
12
9
  defaultLocale,
13
10
  locale,
14
- locales,
11
+ locales
15
12
  }: {
16
13
  context: Context
17
14
  defaultLocale: string
@@ -21,7 +18,7 @@ export function buildGuillotineRequestHeaders({
21
18
  const guillotineRequestHeaders: GuillotineRequestHeaders = {
22
19
  [GUILLOTINE_REQUEST_HEADERS.DEFAULT_LOCALE]: defaultLocale,
23
20
  [GUILLOTINE_REQUEST_HEADERS.LOCALE]: locale,
24
- [GUILLOTINE_REQUEST_HEADERS.LOCALES]: JSON.stringify(locales),
21
+ [GUILLOTINE_REQUEST_HEADERS.LOCALES]: JSON.stringify(locales)
25
22
  };
26
23
  const jsessionid = context.headers?.get(JSESSIONID_HEADER);
27
24
  if (jsessionid) {
@@ -29,4 +26,4 @@ export function buildGuillotineRequestHeaders({
29
26
  `${JSESSIONID_HEADER}=${jsessionid}`;
30
27
  }
31
28
  return guillotineRequestHeaders;
32
- }
29
+ }
@@ -1,3 +1,3 @@
1
1
  export function fixDoubleSlashes(str: string) {
2
2
  return str.replace(/(^|[^:/])\/{2,}/g, '$1/');
3
- }
3
+ }
@@ -29,7 +29,7 @@ export function getLocaleMappings(): LocaleMappings {
29
29
  default: index === 0,
30
30
  project,
31
31
  site,
32
- locale: lang,
32
+ locale: lang
33
33
  };
34
34
  return config;
35
35
  }, {});
@@ -1,14 +1,11 @@
1
1
  import type {Context} from '../types';
2
2
 
3
3
 
4
- import {
5
- RENDER_MODE,
6
- RENDER_MODE_HEADER,
7
- } from '../common/constants';
4
+ import {RENDER_MODE, RENDER_MODE_HEADER} from '../common/constants';
8
5
 
9
6
 
10
7
  export const getRenderMode = (context: Context): RENDER_MODE => {
11
8
  const value = context.headers?.get(RENDER_MODE_HEADER);
12
9
  const enumValue = RENDER_MODE[(value as keyof typeof RENDER_MODE)?.toUpperCase()];
13
10
  return enumValue || RENDER_MODE[process.env.RENDER_MODE] || RENDER_MODE.NEXT;
14
- };
11
+ };
@@ -64,7 +64,7 @@ export const MissingComponent = ({descriptor, type}: { descriptor?: string, type
64
64
  return (
65
65
  <div style={{
66
66
  border: '2px dashed lightgrey',
67
- padding: '16px',
67
+ padding: '16px'
68
68
  }}>
69
69
  <h3 style={{margin: 0}}>Missing component</h3>
70
70
  <p style={{marginBottom: 0, color: 'grey'}}>
@@ -96,7 +96,7 @@ export const ErrorComponent = ({type, descriptor, reason}: { type?: string, desc
96
96
  return (
97
97
  <div style={{
98
98
  border: '2px solid red',
99
- padding: '16px',
99
+ padding: '16px'
100
100
  }}>
101
101
  <h3 style={{margin: 0, textTransform: 'capitalize'}}>{reason ? reason : 'Unknown error'}</h3>
102
102
  {descriptor && <p style={{color: 'grey'}}>{`${type}: ${descriptor}`}</p>}
@@ -110,7 +110,7 @@ export function shouldShowErrorView(meta: MetaData): boolean {
110
110
 
111
111
  function createEditorAttrs(type: XP_COMPONENT_TYPE): Record<string,string> {
112
112
  return {
113
- [PORTAL_COMPONENT_ATTRIBUTE]: type,
113
+ [PORTAL_COMPONENT_ATTRIBUTE]: type
114
114
  };
115
115
  }
116
116
 
@@ -120,7 +120,7 @@ function createComponentAttrs(component: PageComponent, meta: MetaData, common?:
120
120
  component: component[type],
121
121
  path: component.path,
122
122
  meta,
123
- common,
123
+ common
124
124
  };
125
125
 
126
126
  if (data) {
@@ -142,7 +142,7 @@ export const PlaceholderComponent = ({type, descriptor}: { type?: string, descri
142
142
  return (
143
143
  <div style={{
144
144
  border: '2px solid lightgrey',
145
- padding: '16px',
145
+ padding: '16px'
146
146
  }}>
147
147
  <h3 style={{margin: 0, textTransform: 'capitalize'}}>Empty output</h3>
148
148
  {descriptor && <p style={{color: 'grey'}}>{`${type} '${descriptor}' output is empty`}</p>}
@@ -26,7 +26,7 @@ const BaseContent = (props: FetchContentResult) => {
26
26
  component: pageData,
27
27
  path: page?.path,
28
28
  meta,
29
- common,
29
+ common
30
30
  };
31
31
  if (page?.data) {
32
32
  pageAttrs.data = page.data;
@@ -31,7 +31,7 @@ const BaseMacro = (props: BaseMacroProps) => {
31
31
  // do not parse system macros (embed, disable) in edit mode
32
32
  // but parse others because panel macros (for instance) wants its content to be html, not string
33
33
  // TODO: should we make this behavior configurable ?
34
- const bodyString = !data.descriptor.startsWith('system:') ? HTMLReactParser(config.body) : config.body;
34
+ const bodyString = !data.descriptor.startsWith('system:') ? HTMLReactParser(config.body as string) : config.body;
35
35
  return <>
36
36
  {`[${data.name}${attrs}]`}
37
37
  {bodyString}
@@ -30,7 +30,7 @@ const DataDump = ({label, data}: Props) => (
30
30
  fontSize: '.8em',
31
31
  width: '100%',
32
32
  whiteSpace: 'pre-wrap',
33
- wordWrap: 'break-word',
33
+ wordWrap: 'break-word'
34
34
  }}>{JSON.stringify(data, null, 2)}</pre>
35
35
  </>
36
36
  )
@@ -1,23 +1,39 @@
1
- /// <reference types="react" />
2
- import type {MetaData, RichTextViewProps, Replacer as OldReplacer, MacroConfig, RichTextData} from '../types';
1
+ import type {MetaData, RichTextViewProps, Replacer as NextReplacer, RichTextData, MacroData} from '../types';
3
2
 
4
3
  import {getUrl, UrlProcessor} from '../common/UrlProcessor';
5
4
  import BaseMacro from './BaseMacro';
6
5
  import Link from 'next/link';
7
- import type {MacroComponentParams, LinkComponentParams, ImageComponentParams, Replacer as NewReplacer} from '@enonic/react-components';
8
- import {RichText} from '@enonic/react-components';
6
+ import {useMemo} from 'react';
7
+ import type {
8
+ MacroComponentParams,
9
+ LinkComponentParams,
10
+ ImageComponentParams,
11
+ Replacer as ComponentsReplacer,
12
+ ExtendedRichTextData,
13
+ ComponentDataAndProps,
14
+ MacroComponentData
15
+ } from '@enonic/react-components';
16
+ import {RichText, RichTextMetaData} from '@enonic/react-components';
9
17
  import type {DOMNode} from 'html-react-parser';
10
- import {sanitizeGraphqlName} from '../utils/sanitizeGraphqlName';
18
+ import {LiteralUnion, TextComponent} from '@enonic-types/core';
11
19
 
12
20
  interface ExtraRichTextProps {
13
- meta: MetaData;
21
+ nextMeta: MetaData;
14
22
  renderInEditMode?: boolean;
15
23
  }
16
24
 
17
25
  const RichTextView = (props: RichTextViewProps) => {
26
+ const component: TextComponent = useMemo(() => ({
27
+ type: 'text',
28
+ path: props.meta.path,
29
+ text: props.data.processedHtml
30
+ }), [props.meta.path, props.data.processedHtml]);
31
+
18
32
  return <RichText<ExtraRichTextProps>
19
- data={props.data}
20
- meta={props.meta}
33
+ data={wrapData(props.data)}
34
+ meta={toRichTextMetaData(props.meta)}
35
+ nextMeta={props.meta}
36
+ component={component}
21
37
  className={props.className}
22
38
  tag={props.tag}
23
39
  replacer={wrapReplacer(props.customReplacer, props.meta, props.renderMacroInEditMode)}
@@ -28,36 +44,63 @@ const RichTextView = (props: RichTextViewProps) => {
28
44
  />;
29
45
  };
30
46
 
31
- function wrapReplacer(oldReplacer: OldReplacer | undefined, meta: MetaData, renderMacroInEditMode: boolean): NewReplacer {
32
- if (!oldReplacer) {
47
+ function wrapReplacer(nextReplacer: NextReplacer | undefined, meta: MetaData,
48
+ renderMacroInEditMode: boolean): ComponentsReplacer<ExtraRichTextProps> {
49
+ if (!nextReplacer) {
33
50
  return null;
34
51
  }
35
- return (element: DOMNode, data: RichTextData) => {
36
- return oldReplacer(element, data, meta, renderMacroInEditMode);
52
+ return ({el, data}: { el: DOMNode, data: RichTextData, mode?: LiteralUnion<RequestMode> }) => {
53
+ return nextReplacer(el, data, meta, renderMacroInEditMode);
37
54
  };
38
55
  }
39
56
 
40
- function MacroAdapter(props: MacroComponentParams<ExtraRichTextProps>) {
41
- const {children, descriptor, config, meta, renderInEditMode} = props;
42
- const name = descriptor.substring(descriptor.indexOf(':') + 1);
43
- const data = {
44
- name: name,
45
- descriptor: descriptor,
46
- config: {
47
- [sanitizeGraphqlName(name)]: config as Record<string, MacroConfig>,
48
- },
57
+ function wrapData(data: RichTextData): ExtendedRichTextData {
58
+ if (!data.macros || !data.macros.length) {
59
+ return data as ExtendedRichTextData;
60
+ }
61
+ const macroComponents = data.macros.map(macroData => {
62
+ return {
63
+ component: {
64
+ type: 'macro',
65
+ ref: macroData.ref,
66
+ name: macroData.name,
67
+ descriptor: macroData.descriptor
68
+ },
69
+ data: {
70
+ name: macroData.name,
71
+ descriptor: macroData.descriptor,
72
+ config: macroData.config || {}
73
+ }
74
+ } as ComponentDataAndProps<MacroComponentData>;
75
+ });
76
+ return {
77
+ ...data,
78
+ macroComponents
49
79
  };
80
+ }
50
81
 
51
- return <BaseMacro data={data} meta={meta} renderInEditMode={renderInEditMode}>{children}</BaseMacro>;
82
+ function MacroAdapter(props: MacroComponentParams<ExtraRichTextProps>) {
83
+ const {children, component, data, common, meta, nextMeta, renderInEditMode} = props;
84
+
85
+ return <BaseMacro data={data as Omit<MacroData, 'ref'>} meta={nextMeta} renderInEditMode={renderInEditMode}>{children}</BaseMacro>;
52
86
  }
53
87
 
54
88
  function LinkAdapter(props: LinkComponentParams<ExtraRichTextProps>) {
55
- return <Link href={getUrl(props.href, props.meta)}>{props.children}</Link>;
89
+ return <Link href={getUrl(props.href, props.nextMeta)}>{props.children}</Link>;
56
90
  }
57
91
 
58
92
  function ImageAdapter(props: ImageComponentParams<ExtraRichTextProps>) {
59
- const srcSet = props.srcSet?.length ? UrlProcessor.processSrcSet(props.srcSet, props.meta) : undefined;
60
- return <img src={getUrl(props.src, props.meta)} style={props.style} alt={props.alt} sizes={props.sizes} srcSet={srcSet}/>;
93
+ const srcSet = props.srcSet?.length ? UrlProcessor.processSrcSet(props.srcSet, props.nextMeta) : undefined;
94
+ return <img src={getUrl(props.src, props.nextMeta)} style={props.style} alt={props.alt} sizes={props.sizes} srcSet={srcSet}/>;
95
+ }
96
+
97
+ function toRichTextMetaData(meta: MetaData): RichTextMetaData {
98
+ return {
99
+ type: meta.type,
100
+ mode: meta.renderMode,
101
+ path: meta.path,
102
+ id: meta.id
103
+ }
61
104
  }
62
105
 
63
106
  export default RichTextView;
@@ -28,7 +28,7 @@ export default function StaticContent({children, element = 'div', condition = tr
28
28
  ...props,
29
29
  ref,
30
30
  suppressHydrationWarning: true,
31
- dangerouslySetInnerHTML: {__html: ''},
31
+ dangerouslySetInnerHTML: {__html: ''}
32
32
  });
33
33
  }
34
34
 
package/baseMappings.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/baseMappings.js DELETED
@@ -1,43 +0,0 @@
1
- import { ComponentRegistry } from './common/ComponentRegistry';
2
- import { FRAGMENT_CONTENTTYPE_NAME, XP_COMPONENT_TYPE } from './common/constants';
3
- import FragmentView from './views/Fragment';
4
- import BasePage from './views/BasePage';
5
- import BasePart from './views/BasePart';
6
- import BaseLayout from './views/BaseLayout';
7
- import TextView from './views/Text';
8
- import DefaultMacro from './views/macros/DefaultMacro';
9
- import DisableMacro from './views/macros/DisableMacro';
10
- import { getShortcutQuery } from './query/Shortcut';
11
- // Base Content Types
12
- ComponentRegistry.addContentType(FRAGMENT_CONTENTTYPE_NAME, {
13
- view: FragmentView,
14
- });
15
- ComponentRegistry.addContentType('base:shortcut', {
16
- query: getShortcutQuery,
17
- });
18
- // Base Components
19
- ComponentRegistry.addComponent(XP_COMPONENT_TYPE.PAGE, {
20
- view: BasePage,
21
- });
22
- ComponentRegistry.addComponent(XP_COMPONENT_TYPE.PART, {
23
- view: BasePart,
24
- });
25
- ComponentRegistry.addComponent(XP_COMPONENT_TYPE.LAYOUT, {
26
- view: BaseLayout,
27
- });
28
- ComponentRegistry.addComponent(XP_COMPONENT_TYPE.FRAGMENT, {
29
- view: FragmentView,
30
- });
31
- ComponentRegistry.addComponent(XP_COMPONENT_TYPE.TEXT, {
32
- view: TextView,
33
- });
34
- // Macro mappings
35
- ComponentRegistry.addMacro('system:embed', {
36
- view: DefaultMacro,
37
- configQuery: '{body}',
38
- });
39
- ComponentRegistry.addMacro('system:disable', {
40
- view: DisableMacro,
41
- configQuery: '{body}',
42
- });
43
- //# sourceMappingURL=baseMappings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseMappings.js","sourceRoot":"","sources":["src/baseMappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAC,yBAAyB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAC5C,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGlD,qBAAqB;AAErB,iBAAiB,CAAC,cAAc,CAAC,yBAAyB,EAAE;IACxD,IAAI,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,iBAAiB,CAAC,cAAc,CAAC,eAAe,EAAE;IAC9C,KAAK,EAAE,gBAAgB;CAC1B,CAAC,CAAC;AAEH,kBAAkB;AAElB,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACnD,IAAI,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACnD,IAAI,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE;IACrD,IAAI,EAAE,UAAU;CACnB,CAAC,CAAC;AAEH,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,EAAE;IACvD,IAAI,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACnD,IAAI,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,iBAAiB;AACjB,iBAAiB,CAAC,QAAQ,CAAC,cAAc,EAAE;IACvC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,QAAQ;CACxB,CAAC,CAAC;AACH,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,EAAE;IACzC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,QAAQ;CACxB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export default function getClientHydratedHtml(component: React.ReactNode): string;
@@ -1,9 +0,0 @@
1
- 'use client';
2
- /// <reference types="react" />
3
- import { hydrateRoot } from 'react-dom/client';
4
- export default function getClientHydratedHtml(component) {
5
- const root = document.createElement('div');
6
- hydrateRoot(root, component);
7
- return root.innerHTML;
8
- }
9
- //# sourceMappingURL=getClientHydratedHtml.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getClientHydratedHtml.jsx","sourceRoot":"","sources":["../src/client/getClientHydratedHtml.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,+BAA+B;AAG/B,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,SAA0B;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,CAAC"}
package/client.d.ts DELETED
@@ -1 +0,0 @@
1
- export { LocaleContextProvider, useLocaleContext } from './i18n/LocaleContext';
package/client.js DELETED
@@ -1,3 +0,0 @@
1
- 'use client';
2
- export { LocaleContextProvider, useLocaleContext } from './i18n/LocaleContext';
3
- //# sourceMappingURL=client.js.map
package/client.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["src/client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAC,qBAAqB,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC"}