@enonic/nextjs-adapter 6.0.0-beta.2 → 6.0.0-beta.4

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 (77) hide show
  1. package/README.md +65 -106
  2. package/dist/client/DraftModeButton.d.ts +2 -0
  3. package/dist/client/DraftModeButton.jsx +28 -0
  4. package/dist/client/DraftModeButton.jsx.map +1 -0
  5. package/dist/client/DraftModeButton.module.css +43 -0
  6. package/dist/client/replaceLocation.d.ts +1 -0
  7. package/dist/client/replaceLocation.js +5 -0
  8. package/dist/client/replaceLocation.js.map +1 -0
  9. package/dist/common/constants.d.ts +4 -0
  10. package/dist/common/constants.js +4 -0
  11. package/dist/common/constants.js.map +1 -1
  12. package/dist/common/env.d.ts +8 -3
  13. package/dist/common/env.js +26 -20
  14. package/dist/common/env.js.map +1 -1
  15. package/dist/guillotine/applyProcessors.js +18 -29
  16. package/dist/guillotine/applyProcessors.js.map +1 -1
  17. package/dist/guillotine/fetchContent.js +180 -191
  18. package/dist/guillotine/fetchContent.js.map +1 -1
  19. package/dist/guillotine/fetchContentData.js +3 -12
  20. package/dist/guillotine/fetchContentData.js.map +1 -1
  21. package/dist/guillotine/fetchContentPathsForAllLocales.js +4 -15
  22. package/dist/guillotine/fetchContentPathsForAllLocales.js.map +1 -1
  23. package/dist/guillotine/fetchContentPathsForLocale.js +25 -36
  24. package/dist/guillotine/fetchContentPathsForLocale.js.map +1 -1
  25. package/dist/guillotine/fetchFromApi.js +48 -59
  26. package/dist/guillotine/fetchFromApi.js.map +1 -1
  27. package/dist/guillotine/fetchGuillotine.js +49 -60
  28. package/dist/guillotine/fetchGuillotine.js.map +1 -1
  29. package/dist/guillotine/fetchMetaData.js +3 -12
  30. package/dist/guillotine/fetchMetaData.js.map +1 -1
  31. package/dist/guillotine/getMetaData.js +3 -1
  32. package/dist/guillotine/getMetaData.js.map +1 -1
  33. package/dist/guillotine/metadata/richTextQuery.js +5 -3
  34. package/dist/guillotine/metadata/richTextQuery.js.map +1 -1
  35. package/dist/guillotine/urlQueries.d.ts +5 -0
  36. package/dist/guillotine/urlQueries.js +23 -0
  37. package/dist/guillotine/urlQueries.js.map +1 -0
  38. package/dist/guillotine/urls.d.ts +9 -0
  39. package/dist/guillotine/urls.js +18 -0
  40. package/dist/guillotine/urls.js.map +1 -0
  41. package/dist/guillotine/validateShortcut.js +3 -4
  42. package/dist/guillotine/validateShortcut.js.map +1 -1
  43. package/dist/i18n/LocaleContext.jsx +2 -11
  44. package/dist/i18n/LocaleContext.jsx.map +1 -1
  45. package/dist/i18n/i18n.js +9 -20
  46. package/dist/i18n/i18n.js.map +1 -1
  47. package/dist/index.d.ts +4 -2
  48. package/dist/index.js +4 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/query/Shortcut.js +2 -1
  51. package/dist/query/Shortcut.js.map +1 -1
  52. package/dist/server/disableDraftMode.d.ts +1 -0
  53. package/dist/server/disableDraftMode.js +7 -0
  54. package/dist/server/disableDraftMode.js.map +1 -0
  55. package/dist/types/guillotine.d.ts +28 -2
  56. package/dist/types/index.d.ts +6 -0
  57. package/dist/types/urls.d.ts +34 -0
  58. package/dist/types/urls.js +2 -0
  59. package/dist/types/urls.js.map +1 -0
  60. package/dist/utils/getMediaUrl.d.ts +3 -0
  61. package/dist/utils/getMediaUrl.js +17 -0
  62. package/dist/utils/getMediaUrl.js.map +1 -0
  63. package/dist/utils/getPageUrl.d.ts +3 -0
  64. package/dist/utils/getPageUrl.js +8 -0
  65. package/dist/utils/getPageUrl.js.map +1 -0
  66. package/dist/utils/localizeMappings.d.ts +3 -0
  67. package/dist/utils/localizeMappings.js +6 -0
  68. package/dist/utils/localizeMappings.js.map +1 -0
  69. package/dist/views/DraftModeIndicator.d.ts +2 -0
  70. package/dist/views/DraftModeIndicator.jsx +12 -0
  71. package/dist/views/DraftModeIndicator.jsx.map +1 -0
  72. package/dist/views/RichTextView.jsx +11 -6
  73. package/dist/views/RichTextView.jsx.map +1 -1
  74. package/package.json +18 -18
  75. package/dist/common/UrlProcessor.d.ts +0 -19
  76. package/dist/common/UrlProcessor.js +0 -97
  77. package/dist/common/UrlProcessor.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { APP_NAME, APP_NAME_DASHED, APP_NAME_UNDERSCORED, IS_DEV_MODE } from './common/env';
2
2
  export { ComponentRegistry } from './common/ComponentRegistry';
3
- export { CATCH_ALL, JSESSIONID_HEADER, PORTAL_COMPONENT_ATTRIBUTE, PORTAL_REGION_ATTRIBUTE, PROJECT_ID_HEADER, RENDER_MODE, RENDER_MODE_HEADER, XP_BASE_URL_HEADER, XP_COMPONENT_TYPE, XP_REQUEST_TYPE } from './common/constants';
3
+ export { CATCH_ALL, FROM_XP_PARAM, JSESSIONID_HEADER, PORTAL_COMPONENT_ATTRIBUTE, PORTAL_REGION_ATTRIBUTE, PROJECT_ID_HEADER, RENDER_MODE, RENDER_MODE_HEADER, XP_BASE_URL_HEADER, XP_COMPONENT_TYPE, XP_REQUEST_TYPE } from './common/constants';
4
4
  export { richTextQuery } from './guillotine/metadata/richTextQuery';
5
5
  export { validateData } from './guillotine/validateData';
6
6
  export { I18n } from './i18n/i18n';
@@ -12,5 +12,7 @@ export { getRequestLocaleInfo } from './utils/getRequestLocaleInfo';
12
12
  export { sanitizeGraphqlName } from './utils/sanitizeGraphqlName';
13
13
  export { encryptParams } from './utils/encryptParams';
14
14
  export { decryptParams } from './utils/decryptParams';
15
- export { UrlProcessor, getUrl } from './common/UrlProcessor';
15
+ export { attachmentUrlQuery, imageUrlQuery, mediaUrlQuery, pageUrlQuery } from './guillotine/urlQueries';
16
+ export { attachmentUrl, imageUrl, mediaUrl, pageUrl } from './guillotine/urls';
17
+ export { localizeMappings } from './utils/localizeMappings';
16
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,WAAW,EACd,MAAM,cAAc,CAAC;AAItB,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EACH,SAAS,EACT,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,2BAA2B,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EACH,YAAY,EACZ,MAAM,EACT,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,WAAW,EACd,MAAM,cAAc,CAAC;AAItB,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EACH,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,2BAA2B,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { queryGuillotineWithPath } from '../guillotine/getMetaData';
2
+ import { pageUrlQuery } from '../guillotine/urlQueries';
2
3
  export const getShortcutQuery = queryGuillotineWithPath(`get(key:$path) {
3
4
  ... on base_Shortcut {
4
5
  data {
5
6
  target {
6
- _path
7
+ ${pageUrlQuery()}
7
8
  }
8
9
  parameters {
9
10
  name
@@ -1 +1 @@
1
- {"version":3,"file":"Shortcut.js","sourceRoot":"","sources":["../../src/query/Shortcut.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAElE,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;;;;;;;;;;;;IAYpD,CAAC,CAAC"}
1
+ {"version":3,"file":"Shortcut.js","sourceRoot":"","sources":["../../src/query/Shortcut.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;;;;YAI5C,YAAY,EAAE;;;;;;;;IAQtB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function disableDraftMode(): Promise<void>;
@@ -0,0 +1,7 @@
1
+ 'use server';
2
+ import { draftMode } from 'next/headers';
3
+ // Keep this file to async exports only: Next.js rejects anything else in a 'use server' module
4
+ export async function disableDraftMode() {
5
+ (await draftMode()).disable();
6
+ }
7
+ //# sourceMappingURL=disableDraftMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disableDraftMode.js","sourceRoot":"","sources":["../../src/server/disableDraftMode.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAEvC,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC"}
@@ -84,6 +84,11 @@ export interface Component {
84
84
  fragment?: FragmentComponentData | null;
85
85
  }
86
86
  type ComponentType = 'page' | 'layout' | 'image' | 'part' | 'text' | 'fragment';
87
+ export interface PageUrl {
88
+ url: string;
89
+ path: string;
90
+ queryString: string;
91
+ }
87
92
  interface Content {
88
93
  _id: string;
89
94
  _name: string;
@@ -105,6 +110,7 @@ interface Content {
105
110
  x?: ExtraData;
106
111
  xAsJson?: JSON;
107
112
  pageAsJson?: JSON;
113
+ pageUrl?: PageUrl;
108
114
  pageTemplate?: Content;
109
115
  components?: Component[];
110
116
  attachments?: Attachment[];
@@ -225,9 +231,29 @@ interface Media {
225
231
  intent: MediaIntentType;
226
232
  }
227
233
  type MediaIntentType = 'download' | 'inline';
234
+ export interface AttachmentUrl {
235
+ url: string;
236
+ path: string;
237
+ queryString: string;
238
+ context: string;
239
+ id: string;
240
+ fingerprint: string;
241
+ name: string;
242
+ intent: MediaIntentType;
243
+ }
244
+ export interface ImageUrl {
245
+ url: string;
246
+ path: string;
247
+ queryString: string;
248
+ context: string;
249
+ id: string;
250
+ fingerprint: string;
251
+ scale: string;
252
+ name: string;
253
+ }
228
254
  interface media_Image extends Content {
229
- mediaUrl: string;
230
- imageUrl: string;
255
+ mediaUrl: AttachmentUrl;
256
+ imageUrl: ImageUrl;
231
257
  data: media_Image_Data;
232
258
  }
233
259
  interface media_Image_Data {
@@ -3,6 +3,7 @@ export type * from './componentProps';
3
3
  export type * from './guillotine';
4
4
  export type * from './i18n';
5
5
  export type * from './next';
6
+ export type * from './urls';
6
7
  export type * from './util';
7
8
  export interface ContentApiBaseBody {
8
9
  query?: string;
@@ -45,3 +46,8 @@ export interface StaticContentProps extends Record<string, any> {
45
46
  element?: string;
46
47
  condition: boolean;
47
48
  }
49
+ export interface DraftModeButtonProps {
50
+ action: () => Promise<void>;
51
+ label: string;
52
+ }
53
+ export type DraftModeIndicatorProps = Partial<Omit<DraftModeButtonProps, 'action'>>;
@@ -0,0 +1,34 @@
1
+ import type { MetaData } from './componentProps';
2
+ import type { AttachmentUrl, ImageUrl, PageUrl } from './guillotine';
3
+ export type GraphqlJson = Record<string, unknown>;
4
+ export interface ImageUrlArgs {
5
+ scale: string;
6
+ quality?: number;
7
+ background?: string;
8
+ format?: string;
9
+ filter?: string;
10
+ params?: GraphqlJson;
11
+ }
12
+ export interface MediaUrlArgs {
13
+ download?: boolean;
14
+ params?: GraphqlJson;
15
+ }
16
+ export interface PageUrlArgs {
17
+ params?: GraphqlJson;
18
+ }
19
+ /** Object returned by imageUrlQuery(), mediaUrlQuery() and attachmentUrlQuery(): every field of the Guillotine URL type */
20
+ export type MediaUrlResult = ImageUrl | AttachmentUrl;
21
+ /** Object returned by pageUrlQuery() */
22
+ export type PageUrlResult = PageUrl;
23
+ /** Meta for pageUrl(): the locale prefix is omitted when `locale` equals `defaultLocale`; without `defaultLocale` it is always added */
24
+ export type PageUrlMeta = Pick<MetaData, 'locale'> & Partial<Pick<MetaData, 'defaultLocale'>>;
25
+ /** Minimal input for the *Url() functions: `path` is required, `queryString` optional */
26
+ export type UrlParts<T extends {
27
+ path: string;
28
+ queryString: string;
29
+ }> = Pick<T, 'path'> & Partial<Pick<T, 'queryString'>>;
30
+ export interface UrlMappingRule {
31
+ sources: string[];
32
+ target: string;
33
+ matchAny?: boolean;
34
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/types/urls.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Absolute media URL from a Guillotine `path` or any XP media `url` (server-side only, passthrough on the client) */
2
+ export declare function getMediaUrl(urlOrPath: string): string;
3
+ export declare function getMediaSrcSet(srcSet: string): string;
@@ -0,0 +1,17 @@
1
+ import { MEDIA_URL } from '../common/env';
2
+ const MEDIA_MARKER = '/media:';
3
+ /** Absolute media URL from a Guillotine `path` or any XP media `url` (server-side only, passthrough on the client) */
4
+ export function getMediaUrl(urlOrPath) {
5
+ const index = urlOrPath.indexOf(MEDIA_MARKER);
6
+ if (!MEDIA_URL || index < 0) {
7
+ return urlOrPath;
8
+ }
9
+ return MEDIA_URL + urlOrPath.slice(index);
10
+ }
11
+ export function getMediaSrcSet(srcSet) {
12
+ return srcSet.split(',').map((candidate) => {
13
+ const [url, ...descriptors] = candidate.trim().split(/\s+/);
14
+ return [getMediaUrl(url), ...descriptors].join(' ');
15
+ }).join(', ');
16
+ }
17
+ //# sourceMappingURL=getMediaUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMediaUrl.js","sourceRoot":"","sources":["../../src/utils/getMediaUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAExC,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B,sHAAsH;AACtH,MAAM,UAAU,WAAW,CAAC,SAAiB;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PageUrlMeta } from '../types';
2
+ /** Relative URL for a site-relative content path, prefixed with the locale unless it is the default locale */
3
+ export declare function getPageUrl(path: string | null | undefined, meta: PageUrlMeta): string;
@@ -0,0 +1,8 @@
1
+ import { stripOutsideSlashes } from './fixDoubleSlashes';
2
+ /** Relative URL for a site-relative content path, prefixed with the locale unless it is the default locale */
3
+ export function getPageUrl(path, meta) {
4
+ const relative = stripOutsideSlashes(path || '');
5
+ const prefix = meta.locale === meta.defaultLocale ? '' : `/${meta.locale}`;
6
+ return relative ? `${prefix}/${relative}` : prefix || '/';
7
+ }
8
+ //# sourceMappingURL=getPageUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPageUrl.js","sourceRoot":"","sources":["../../src/utils/getPageUrl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAEvD,8GAA8G;AAC9G,MAAM,UAAU,UAAU,CAAC,IAA+B,EAAE,IAAiB;IACzE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3E,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LocaleMapping, UrlMappingRule } from '../types';
2
+ /** Prefixes mapping targets with the locale, except for the default locale whose URLs carry no prefix; sources stay site-relative */
3
+ export declare function localizeMappings(mappings: UrlMappingRule[], mapping: Pick<LocaleMapping, 'locale' | 'default'>): UrlMappingRule[];
@@ -0,0 +1,6 @@
1
+ import { stripLeadingSlashes } from './fixDoubleSlashes';
2
+ /** Prefixes mapping targets with the locale, except for the default locale whose URLs carry no prefix; sources stay site-relative */
3
+ export function localizeMappings(mappings, mapping) {
4
+ return mappings.map((rule) => (Object.assign(Object.assign({}, rule), { target: mapping.default ? rule.target : `/${mapping.locale}/${stripLeadingSlashes(rule.target)}` })));
5
+ }
6
+ //# sourceMappingURL=localizeMappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizeMappings.js","sourceRoot":"","sources":["../../src/utils/localizeMappings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAEvD,qIAAqI;AACrI,MAAM,UAAU,gBAAgB,CAAC,QAA0B,EAAE,OAAkD;IAC3G,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCACvB,IAAI,KACP,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAClG,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { DraftModeIndicatorProps } from '../types';
2
+ export default function DraftModeIndicator({ label }: DraftModeIndicatorProps): Promise<import("react").JSX.Element>;
@@ -0,0 +1,12 @@
1
+ import { draftMode } from 'next/headers';
2
+ import DraftModeButton from '../client/DraftModeButton';
3
+ import { disableDraftMode } from '../server/disableDraftMode';
4
+ const DEFAULT_LABEL = 'Draft Mode';
5
+ export default async function DraftModeIndicator({ label }) {
6
+ const { isEnabled } = await draftMode();
7
+ if (!isEnabled) {
8
+ return null;
9
+ }
10
+ return <DraftModeButton action={disableDraftMode} label={label || DEFAULT_LABEL}/>;
11
+ }
12
+ //# sourceMappingURL=DraftModeIndicator.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraftModeIndicator.jsx","sourceRoot":"","sources":["../../src/views/DraftModeIndicator.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAC,KAAK,EAA0B;IAC7E,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,SAAS,EAAE,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC;AACvF,CAAC"}
@@ -1,6 +1,7 @@
1
- import { getUrl, UrlProcessor } from '../common/UrlProcessor';
2
1
  import BaseMacro from './BaseMacro';
3
2
  import Link from 'next/link';
3
+ import { pageUrl } from '../guillotine/urls';
4
+ import { getMediaSrcSet, getMediaUrl } from '../utils/getMediaUrl';
4
5
  import { useMemo } from 'react';
5
6
  import { RichText } from '@enonic/react-components';
6
7
  const RichTextView = (props) => {
@@ -45,13 +46,17 @@ function MacroAdapter(props) {
45
46
  return <BaseMacro data={data} meta={nextMeta}>{children}</BaseMacro>;
46
47
  }
47
48
  function LinkAdapter(props) {
48
- var _a;
49
- return <Link href={getUrl(((_a = props.content) === null || _a === void 0 ? void 0 : _a._path) || props.href, props.nextMeta)}>{props.children}</Link>;
49
+ var _a, _b;
50
+ const contentUrl = pageUrl((_a = props.content) === null || _a === void 0 ? void 0 : _a.pageUrl, props.nextMeta);
51
+ if (contentUrl) {
52
+ return <Link href={contentUrl} data-content-path={(_b = props.content) === null || _b === void 0 ? void 0 : _b._path}>{props.children}</Link>;
53
+ }
54
+ // media and external links keep the href from processedHtml, media ones get the media base URL
55
+ return <a href={getMediaUrl(props.href)} target={props.target} title={props.title}>{props.children}</a>;
50
56
  }
51
57
  function ImageAdapter(props) {
52
- var _a;
53
- const srcSet = ((_a = props.srcSet) === null || _a === void 0 ? void 0 : _a.length) ? UrlProcessor.processSrcSet(props.srcSet, props.nextMeta) : undefined;
54
- return <img src={getUrl(props.src, props.nextMeta)} style={props.style} alt={props.alt} sizes={props.sizes} srcSet={srcSet}/>;
58
+ const srcSet = props.srcSet && getMediaSrcSet(props.srcSet);
59
+ return <img src={getMediaUrl(props.src)} style={props.style} alt={props.alt} sizes={props.sizes} srcSet={srcSet}/>;
55
60
  }
56
61
  function toRichTextMetaData(meta) {
57
62
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextView.jsx","sourceRoot":"","sources":["../../src/views/RichTextView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RichTextView.jsx","sourceRoot":"","sources":["../../src/views/RichTextView.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enonic/nextjs-adapter",
3
- "version": "6.0.0-beta.2",
3
+ "version": "6.0.0-beta.4",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "author": "Pavel Milkevich <pmi@enonic.com>",
@@ -41,7 +41,7 @@
41
41
  "access": "public"
42
42
  },
43
43
  "scripts": {
44
- "build": "tsc",
44
+ "build": "tsc && cpy '**/*.module.css' ../dist --cwd=src",
45
45
  "clean": "del-cli dist/ enonic-nextjs-adapter-*.tgz",
46
46
  "check:types": "tsc --noEmit",
47
47
  "madge": "madge -i docs/madge.png -x '(constants|env)\\.ts' src/index.ts",
@@ -55,40 +55,40 @@
55
55
  "test": "jest --no-cache --coverage"
56
56
  },
57
57
  "dependencies": {
58
- "@enonic/react-components": "^7.0.0-B1",
59
- "@formatjs/intl-localematcher": "^0.8.5",
58
+ "@enonic/react-components": "^7.0.0",
59
+ "@formatjs/intl-localematcher": "^0.8.13",
60
60
  "gqlmin": "^0.3.2",
61
- "negotiator": "^1.0.0",
61
+ "negotiator": "^1.1.0",
62
62
  "unescape": "^1.0.1"
63
63
  },
64
64
  "devDependencies": {
65
- "@babel/core": "^7.29.0",
66
- "@babel/preset-env": "^7.29.3",
65
+ "@babel/core": "^7.29.7",
66
+ "@babel/preset-env": "^7.29.7",
67
67
  "@edge-runtime/jest-environment": "^4.0.0",
68
- "@enonic-types/core": "^8.0.0-B4",
68
+ "@enonic-types/core": "^8.0.4",
69
69
  "@enonic/eslint-config": "^2.3.0",
70
70
  "@testing-library/dom": "^10.4.1",
71
- "@testing-library/jest-dom": "^6.9.1",
72
- "@testing-library/react": "^16.3.2",
73
- "@types/negotiator": "^0.6.4",
74
- "@types/node": "^25.6.2",
71
+ "@testing-library/jest-dom": "^7.0.1",
72
+ "@testing-library/react": "^16.3.3",
73
+ "@types/negotiator": "^0.6.5",
74
+ "@types/node": "^26.5.1",
75
75
  "@types/react": "^19",
76
76
  "@types/react-dom": "^19",
77
- "babel-jest": "^30.4.1",
78
- "concurrently": "^9.2.1",
77
+ "babel-jest": "^30.5.1",
78
+ "concurrently": "^10.0.5",
79
79
  "cpy-cli": "^7.0.0",
80
80
  "del-cli": "^7.0.0",
81
81
  "eslint": "^9.39.2",
82
82
  "eslint-plugin-react": "^7.37.5",
83
83
  "html-react-parser": "^5.2.6",
84
- "jest": "^30.3.0",
85
- "jest-environment-jsdom": "^30.4.1",
84
+ "jest": "^30.5.1",
85
+ "jest-environment-jsdom": "^30.5.1",
86
86
  "madge": "^8.0.0",
87
87
  "mkdirp": "^3.0.1",
88
- "ts-jest": "^29.4.9",
88
+ "ts-jest": "^29.4.12",
89
89
  "ts-node": "^10.9.2",
90
90
  "typescript": "^5.9.3",
91
- "typescript-eslint": "^8.58.2"
91
+ "typescript-eslint": "^8.70.0"
92
92
  },
93
93
  "types": "index.d.ts",
94
94
  "peerDependencies": {
@@ -1,19 +0,0 @@
1
- import type { ImageData, LinkData, MetaData } from '../types';
2
- export declare class UrlProcessor {
3
- static IMG_TAG: string;
4
- static LINK_TAG: string;
5
- static MACRO_TAG: string;
6
- static IMG_ATTR: string;
7
- static LINK_ATTR: string;
8
- static MACRO_ATTR: string;
9
- private static IMG_ATMT_REGEXP;
10
- static process(url: string, meta: MetaData, serverSide?: boolean, isResource?: boolean): string;
11
- private static normalizeBaseUrl;
12
- static isMediaLink(ref: string, linkData: LinkData[]): boolean;
13
- static isContentImage(ref: string, imageData: ImageData[]): boolean;
14
- static processSrcSet(srcset: string, meta: MetaData): string;
15
- private static isAttachmentUrl;
16
- private static startsWithHash;
17
- private static isAbsolute;
18
- }
19
- export declare function getUrl(url: string, meta: MetaData): string;
@@ -1,97 +0,0 @@
1
- import { RENDER_MODE } from './constants';
2
- import { fixDoubleSlashes } from '../utils/fixDoubleSlashes';
3
- import { addBasePath } from 'next/dist/client/add-base-path';
4
- import { API_URL } from './env';
5
- export class UrlProcessor {
6
- static process(url, meta, serverSide = false, isResource = false) {
7
- if (this.startsWithHash(url) || this.isAbsolute(url) || !meta) {
8
- // do not process if:
9
- // - url starts with #
10
- // - url is absolute
11
- // - meta is absent
12
- return url;
13
- }
14
- if (this.isAttachmentUrl(url)) {
15
- // XP resource, add api url host and base url
16
- const apiUrl = new URL(API_URL);
17
- return `${apiUrl.origin}${url}`;
18
- }
19
- let result = this.normalizeBaseUrl(url, meta, isResource);
20
- if (!isResource && meta.locale !== meta.defaultLocale) {
21
- // append locale if it's not the default one
22
- // to avoid additional middleware redirection
23
- // NB: don't add locale to resource urls
24
- result = `/${meta.locale}${result}`;
25
- }
26
- // only add basePath and locale in next mode
27
- if (meta.renderMode === RENDER_MODE.NEXT) {
28
- if (!serverSide) {
29
- // no need for baseurl and basepath on server
30
- result = addBasePath(result);
31
- }
32
- }
33
- return fixDoubleSlashes(result);
34
- }
35
- static normalizeBaseUrl(url, meta, isResource) {
36
- if (isResource) {
37
- return url;
38
- }
39
- let result = url;
40
- if (result.charAt(0) !== '/') {
41
- result = '/' + result;
42
- }
43
- // Drop the site-name prefix so urls are site-relative
44
- // (e.g. /sitename/content/path -> /content/path)
45
- if (meta.site && meta.site !== '/'
46
- && (result === meta.site || result.startsWith(`${meta.site}/`))) {
47
- result = result.substring(meta.site.length) || '/';
48
- }
49
- return result;
50
- }
51
- static isMediaLink(ref, linkData) {
52
- var _a;
53
- // Assuming linkData can't contain more than one entry with the same ref
54
- return Array.isArray(linkData) && !!((_a = linkData.find(data => (data === null || data === void 0 ? void 0 : data.ref) === ref)) === null || _a === void 0 ? void 0 : _a.media);
55
- }
56
- static isContentImage(ref, imageData) {
57
- var _a;
58
- // Assuming imageData can't contain more than one entry with the same ref
59
- return Array.isArray(imageData) && !!((_a = imageData.find(data => data.ref === ref)) === null || _a === void 0 ? void 0 : _a.image);
60
- }
61
- static processSrcSet(srcset, meta) {
62
- return srcset.split(/, */g).map(src => {
63
- const srcParts = src.trim().split(' ');
64
- switch (srcParts.length) {
65
- case 1: // src only
66
- return UrlProcessor.process(src, meta, false, true);
67
- case 2: // width descriptor
68
- return `${UrlProcessor.process(srcParts[0], meta, false, true)} ${srcParts[1]}`;
69
- case 3: // pixel density descriptor
70
- return `${UrlProcessor.process(srcParts[0], meta, false, true)} ${srcParts[1]} ${srcParts[2]}`;
71
- default:
72
- console.warn('Can not process image srcset: ' + src);
73
- return src;
74
- }
75
- }).join(', ');
76
- }
77
- static isAttachmentUrl(url) {
78
- return this.IMG_ATMT_REGEXP.test(url);
79
- }
80
- static startsWithHash(url) {
81
- return (url === null || url === void 0 ? void 0 : url.charAt(0)) == '#';
82
- }
83
- static isAbsolute(url) {
84
- return /^(?:ht|f)tps?:\/\/[^ :\r\n\t]+/.test(url);
85
- }
86
- }
87
- UrlProcessor.IMG_TAG = 'img';
88
- UrlProcessor.LINK_TAG = 'a';
89
- UrlProcessor.MACRO_TAG = 'editor-macro';
90
- UrlProcessor.IMG_ATTR = 'data-image-ref';
91
- UrlProcessor.LINK_ATTR = 'data-link-ref';
92
- UrlProcessor.MACRO_ATTR = 'data-macro-ref';
93
- UrlProcessor.IMG_ATMT_REGEXP = /\/_\/media:(image|attachment)\//;
94
- export function getUrl(url, meta) {
95
- return UrlProcessor.process(url, meta, false, false);
96
- }
97
- //# sourceMappingURL=UrlProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UrlProcessor.js","sourceRoot":"","sources":["../../src/common/UrlProcessor.ts"],"names":[],"mappings":"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"}