@remkoj/optimizely-cms-nextjs 6.0.0-pre9 → 6.0.0-rc.3
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/AGENTS.md +134 -0
- package/README.md +5 -1
- package/dist/cms-page/_base.js +1 -10
- package/dist/cms-page/_base.js.map +1 -1
- package/dist/cms-page/layout.js +1 -1
- package/dist/cms-page/layout.js.map +1 -1
- package/dist/cms-page/middleware.d.ts +4 -2
- package/dist/cms-page/middleware.js +23 -7
- package/dist/cms-page/middleware.js.map +1 -1
- package/dist/cms-page/page.d.ts +2 -2
- package/dist/cms-page/page.js +23 -115
- package/dist/cms-page/page.js.map +1 -1
- package/dist/cms-page/utils.js +3 -3
- package/dist/cms-page/utils.js.map +1 -1
- package/dist/components/on-page-edit.js +1 -1
- package/dist/components/on-page-edit.js.map +1 -1
- package/dist/components/shared/CmsContentLink.d.ts +5 -5
- package/dist/components/shared/CmsContentLink.js.map +1 -1
- package/dist/components/shared/CmsLink.js.map +1 -1
- package/dist/components/shared/helpers.js.map +1 -1
- package/dist/metadata.d.ts +8 -8
- package/dist/metadata.js +9 -8
- package/dist/metadata.js.map +1 -1
- package/dist/ope/load-content.d.ts +21 -0
- package/dist/ope/load-content.js +69 -0
- package/dist/ope/load-content.js.map +1 -0
- package/dist/ope/page.js +15 -50
- package/dist/ope/page.js.map +1 -1
- package/dist/ope/tools.d.ts +1 -1
- package/dist/ope/tools.js +7 -7
- package/dist/ope/tools.js.map +1 -1
- package/dist/ope/types.d.ts +7 -5
- package/dist/page.js.map +1 -1
- package/dist/publish/index.js +1 -1
- package/dist/publish/index.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/package.json +29 -20
- package/dist/ope/data.d.ts +0 -2
- package/dist/ope/data.js +0 -31
- package/dist/ope/data.js.map +0 -1
package/AGENTS.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# @remkoj/optimizely-cms-nextjs — usage
|
|
2
|
+
|
|
3
|
+
Next.js integration for Optimizely SaaS CMS.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @remkoj/optimizely-cms-nextjs
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Node `>=24.0.0 <25.0.0`.
|
|
12
|
+
|
|
13
|
+
## Subpath exports
|
|
14
|
+
|
|
15
|
+
| Import path | Contents |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `@remkoj/optimizely-cms-nextjs` | `OptimizelyNextPage`, `OnPageEdit`, `CmsPage` namespaces |
|
|
18
|
+
| `@remkoj/optimizely-cms-nextjs/rsc` | RSC-specific utilities |
|
|
19
|
+
| `@remkoj/optimizely-cms-nextjs/publish` | Content publish webhook helpers (`createPublishApi`) |
|
|
20
|
+
| `@remkoj/optimizely-cms-nextjs/types` | Shared TypeScript types |
|
|
21
|
+
| `@remkoj/optimizely-cms-nextjs/components` | CMS-aware Next.js components |
|
|
22
|
+
| `@remkoj/optimizely-cms-nextjs/preview` | On-Page Editing / preview mode (`createEditPageComponent`) |
|
|
23
|
+
| `@remkoj/optimizely-cms-nextjs/page` | Page-level CMS route helpers (`createPage`, `createLayout`) |
|
|
24
|
+
|
|
25
|
+
## Page components
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import type { OptimizelyNextPage } from '@remkoj/optimizely-cms-nextjs'
|
|
29
|
+
import { MyPageDataFragmentDoc, type MyPageDataFragment } from '@/gql/graphql'
|
|
30
|
+
|
|
31
|
+
// Extends CmsComponent with optional metadata generation
|
|
32
|
+
const MyPage: OptimizelyNextPage<MyPageDataFragment> = ({ data, contentLink, ctx }) => { ... }
|
|
33
|
+
|
|
34
|
+
// Static fragment declaration — required for data loading
|
|
35
|
+
MyPage.getDataFragment = () => ['MyPageData', MyPageDataFragmentDoc]
|
|
36
|
+
|
|
37
|
+
// Optional: generate Next.js metadata
|
|
38
|
+
MyPage.getMetaData = async (contentLink, locale, client) => {
|
|
39
|
+
return { title: '...' }
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## `app/[[...path]]/page.tsx` — CMS page route
|
|
44
|
+
|
|
45
|
+
Use `createPage()` to generate the three Next.js exports (`generateStaticParams`, `generateMetadata`, `CmsPage`) for the catch-all route.
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import 'server-only'
|
|
49
|
+
import { createClient, AuthMode } from '@remkoj/optimizely-graph-client'
|
|
50
|
+
import { createPage } from '@remkoj/optimizely-cms-nextjs/page'
|
|
51
|
+
import { getContentByPath } from '@gql/functions'
|
|
52
|
+
import { factory } from '@/components/factory'
|
|
53
|
+
import { draftMode } from 'next/headers'
|
|
54
|
+
|
|
55
|
+
const { generateMetadata, generateStaticParams, CmsPage: Page } = createPage(factory, {
|
|
56
|
+
// Inject the generated master query to load all page content in one request
|
|
57
|
+
getContentByPath,
|
|
58
|
+
|
|
59
|
+
// Required: factory function that creates the GraphQL client
|
|
60
|
+
client: (_, scope) => {
|
|
61
|
+
const client = createClient(undefined, undefined, {
|
|
62
|
+
nextJsFetchDirectives: true,
|
|
63
|
+
cache: true,
|
|
64
|
+
queryCache: true,
|
|
65
|
+
})
|
|
66
|
+
if (scope === 'request' && draftMode().isEnabled) {
|
|
67
|
+
client.updateAuthentication(AuthMode.HMAC)
|
|
68
|
+
client.enablePreview()
|
|
69
|
+
}
|
|
70
|
+
return client
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
// Optional: map params to a single locale (omit for multi-lingual with [lang] segment)
|
|
74
|
+
// paramsToLocale: () => 'en',
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
export const dynamic = 'error' // fail loudly if the route becomes dynamic
|
|
78
|
+
export const dynamicParams = true // allow new pages without rebuild
|
|
79
|
+
export const revalidate = false // keep cache until webhook revalidates
|
|
80
|
+
export { generateMetadata, generateStaticParams }
|
|
81
|
+
export default Page
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The `client` option is **required**. The `scope` argument is `'request'` when rendering a page and `'metadata'` when generating metadata.
|
|
85
|
+
|
|
86
|
+
## `app/preview/page.tsx` — On-Page Editing route
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import 'server-only'
|
|
90
|
+
import { createEditPageComponent } from '@remkoj/optimizely-cms-nextjs/preview'
|
|
91
|
+
import { getContentById } from '@gql/functions'
|
|
92
|
+
import { factory } from '@/components/factory'
|
|
93
|
+
import { createClient } from '@remkoj/optimizely-graph-client'
|
|
94
|
+
|
|
95
|
+
export default createEditPageComponent(factory, {
|
|
96
|
+
loader: getContentById,
|
|
97
|
+
clientFactory: (token?: string) => createClient(undefined, token, {
|
|
98
|
+
nextJsFetchDirectives: true,
|
|
99
|
+
cache: false,
|
|
100
|
+
queryCache: false,
|
|
101
|
+
}),
|
|
102
|
+
refreshTimeout: 500, // ms between polling for content updates
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
export const dynamic = 'force-dynamic'
|
|
106
|
+
export const fetchCache = 'force-no-store'
|
|
107
|
+
export const revalidate = 0
|
|
108
|
+
export const runtime = 'nodejs'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## `app/api/content/publish/route.ts` — Publish webhook
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import createPublishApi from '@remkoj/optimizely-cms-nextjs/publish'
|
|
115
|
+
import { createClient } from '@remkoj/optimizely-graph-client'
|
|
116
|
+
|
|
117
|
+
const handler = createPublishApi({
|
|
118
|
+
additionalPaths: ['/api/content/search', '/sitemap.xml'],
|
|
119
|
+
optimizePublish: true, // resolve and revalidate only the changed path
|
|
120
|
+
client: () => createClient(undefined, undefined, { nextJsFetchDirectives: true, cache: false, queryCache: false }),
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
export const dynamic = 'force-dynamic'
|
|
124
|
+
export const runtime = 'nodejs'
|
|
125
|
+
export const GET = handler
|
|
126
|
+
export const POST = handler
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Constraints
|
|
130
|
+
|
|
131
|
+
- All files using these helpers must include `import 'server-only'`.
|
|
132
|
+
- Use `createClient` from `@remkoj/optimizely-graph-client` directly; do not import it from this package.
|
|
133
|
+
- Set `dynamic = 'error'` on the `[[...path]]` route to detect unintended dynamic rendering early.
|
|
134
|
+
- `createPublishApi` is the default export of `./publish`.
|
package/README.md
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
# Optimizely SaaS CMS - Next.js Integration
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> There'll be an update of Optimizely SaaS CMS that is incompatible with all SDK versions prior to 5.1.6. If you don't upgrade, you will see empty pages (main website) and "Component not found" messages (preview).
|
|
5
|
+
|
|
2
6
|
[](./LICENSE)
|
|
3
7
|
|
|
4
8
|
> [!TIP]
|
|
@@ -76,4 +80,4 @@ The package provides the following enhancements for Next.js middleware:
|
|
|
76
80
|
| withEditFallback | `@remkoj/optimizely-cms-nextjs/preview` | Rewrite incoming Optimizely CMS 12 preview / on-page-edit URLs to Optimizely SaaS CMS preview URLs |
|
|
77
81
|
| withLanguagePrefix | `@remkoj/optimizely-cms-nextjs/page` | Handle the redirect of the homepage `/` to the locale that best matches the incoming request, such as `/en`. The locales and their URLs are taken from the second parameter - the ChannelDefinition.
|
|
78
82
|
|
|
79
|
-
If you use both wrappers, the `withEditFallback` wrapper must wrap the `withLanguagePrefix` wrapper, to ensure that the edit mode URL is rewritten before the language prefix is applied.
|
|
83
|
+
If you use both wrappers, the `withEditFallback` wrapper must wrap the `withLanguagePrefix` wrapper, to ensure that the edit mode URL is rewritten before the language prefix is applied.
|
package/dist/cms-page/_base.js
CHANGED
|
@@ -11,16 +11,7 @@ export function getChannelId(client, channel) {
|
|
|
11
11
|
return channel;
|
|
12
12
|
return client.currentOptiCmsSchema == OptiCmsSchema.CMS12
|
|
13
13
|
? channel.id
|
|
14
|
-
:
|
|
15
|
-
}
|
|
16
|
-
function getPrimaryURL(chnl) {
|
|
17
|
-
const dd = chnl.domains.filter((x) => x.isPrimary).at(0) ?? chnl.domains.at(0);
|
|
18
|
-
if (!dd)
|
|
19
|
-
return chnl.getPrimaryDomain();
|
|
20
|
-
const s = dd.name.startsWith('localhost') || dd.name.indexOf('.local') > 0
|
|
21
|
-
? 'http:'
|
|
22
|
-
: 'https:';
|
|
23
|
-
return new URL(`${s}//${dd.name}`);
|
|
14
|
+
: channel.getPrimaryDomain().origin;
|
|
24
15
|
}
|
|
25
16
|
function isString(toTest) {
|
|
26
17
|
return typeof toTest === 'string';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_base.js","sourceRoot":"","sources":["../../src/cms-page/_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,wCAAwC,CAAA;AAK7F,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAUD,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,OAAoC;IACzF,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAA;IAClB,IAAI,QAAQ,CAAC,OAAO,CAAC;QACnB,OAAO,OAAO,CAAA;IAChB,OAAO,MAAM,CAAC,oBAAoB,IAAI,aAAa,CAAC,KAAK;QACvD,CAAC,CAAC,OAAO,CAAC,EAAE;QACZ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"_base.js","sourceRoot":"","sources":["../../src/cms-page/_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,wCAAwC,CAAA;AAK7F,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAUD,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,OAAoC;IACzF,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAA;IAClB,IAAI,QAAQ,CAAC,OAAO,CAAC;QACnB,OAAO,OAAO,CAAA;IAChB,OAAO,MAAM,CAAC,oBAAoB,IAAI,aAAa,CAAC,KAAK;QACvD,CAAC,CAAC,OAAO,CAAC,EAAE;QACZ,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAA;AACvC,CAAC;AAED,SAAS,QAAQ,CAAC,MAAW;IAC3B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC;AACpC,CAAC"}
|
package/dist/cms-page/layout.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/cms-page/layout.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAA;AAmBjE,MAAM,0BAA0B,GAAwB;IACtD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,YAAY;CACrB,CAAA;AAED,MAAM,UAAU,YAAY,CAC1B,OAAsC;IAEtC,MAAM,EACJ,aAAa,EACb,iBAAiB,EACjB,MAAM,EAAE,aAAa,EACrB,OAAO,GACR,GAAwB;QACvB,GAAG,0BAA0B;QAC7B,GAAG,OAAO;KACX,CAAA;IAED,MAAM,oBAAoB,GAAkB;QAC1C;;;;;;WAMG;QACH,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE;YAC7D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAA;YAChC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YAEzE,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,GAAG,CACT,8CAA8C,YAAY,EAAE,CAC7D,CAAA;YAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,GAAG,CACT,0DAA0D,CAC3D,CAAA;gBACH,OAAO,EAAE,CAAA;YACX,CAAC;YACD,MAAM,SAAS,GAAG;gBAChB,IAAI,EAAE,YAAY;aACnB,CAAA;YACD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAC9B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtE,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAA;gBACnD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,GAAG,CACT,qDAAqD,YAAY,EAAE,CACpE,CAAA;gBACH,OAAO,EAAE,CAAA;YACX,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAA;YAC5B,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ;gBACjC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/cms-page/layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
-
import { type
|
|
2
|
+
import { type NextProxy } from "next/server.js";
|
|
3
3
|
import { type ChannelDefinition } from "@remkoj/optimizely-graph-client";
|
|
4
4
|
/**
|
|
5
5
|
* Wrap the provided middleware with enforcement of the language code as the first
|
|
@@ -7,6 +7,8 @@ import { type ChannelDefinition } from "@remkoj/optimizely-graph-client";
|
|
|
7
7
|
*
|
|
8
8
|
* @param next The Next.JS Middleware to wrap, will be invoked if there's no redirect needed
|
|
9
9
|
* @param channel The Optimizely CMS Application definition
|
|
10
|
+
* @param debug When set to debug, redirects will be temporary (302) and information will be
|
|
11
|
+
* logged. If omitted, it will determine debug mode based upon the NODE_ENV value.
|
|
10
12
|
* @returns The newly constructed Next.JS Middleware
|
|
11
13
|
*/
|
|
12
|
-
export declare function withLanguagePrefix<T extends
|
|
14
|
+
export declare function withLanguagePrefix<T extends NextProxy>(next: T, channel: ChannelDefinition, enableDebug?: boolean): T;
|
|
@@ -8,9 +8,12 @@ import Negotiator from 'negotiator';
|
|
|
8
8
|
*
|
|
9
9
|
* @param next The Next.JS Middleware to wrap, will be invoked if there's no redirect needed
|
|
10
10
|
* @param channel The Optimizely CMS Application definition
|
|
11
|
+
* @param debug When set to debug, redirects will be temporary (302) and information will be
|
|
12
|
+
* logged. If omitted, it will determine debug mode based upon the NODE_ENV value.
|
|
11
13
|
* @returns The newly constructed Next.JS Middleware
|
|
12
14
|
*/
|
|
13
|
-
export function withLanguagePrefix(next, channel) {
|
|
15
|
+
export function withLanguagePrefix(next, channel, enableDebug) {
|
|
16
|
+
const debug = enableDebug === undefined ? process.env.NODE_ENV === 'development' : enableDebug;
|
|
14
17
|
if (!channel)
|
|
15
18
|
throw new Error("The language prefix handling requires a CMS Channel Definition");
|
|
16
19
|
const defaultLocale = channel.defaultLocale;
|
|
@@ -24,21 +27,34 @@ export function withLanguagePrefix(next, channel) {
|
|
|
24
27
|
}
|
|
25
28
|
const newMiddleware = (request, ...params) => {
|
|
26
29
|
const pathname = request.nextUrl.pathname;
|
|
30
|
+
// Only process non internal routes
|
|
27
31
|
if (pathname.startsWith("/_") || pathname.startsWith("/."))
|
|
28
32
|
return next(request, ...params);
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
33
|
+
// Get the locale slug from the URL
|
|
34
|
+
const pathSlugs = pathname.split('/').filter(x => x);
|
|
35
|
+
const localeSlug = pathSlugs.length >= 1 && slugs.includes(pathSlugs.at(0) ?? '-') ? pathSlugs.at(0) : undefined;
|
|
36
|
+
if (!localeSlug) {
|
|
37
|
+
// We don't have a locale, so we're going to redirect to the best matching
|
|
38
|
+
// locale.
|
|
32
39
|
const locale = getLocale(request);
|
|
33
40
|
const slug = channel.resolveSlug(locale);
|
|
34
|
-
if (
|
|
35
|
-
console.log(`💬 [Middleware] Detected locale missing in ${pathname}, redirecting to /${slug}${pathname}`);
|
|
41
|
+
if (debug)
|
|
42
|
+
console.log(`💬 [Language Prefix Middleware] Detected locale missing in ${pathname}, redirecting to /${slug}${pathname}`);
|
|
36
43
|
const newUrl = request.nextUrl.clone();
|
|
37
44
|
newUrl.pathname = `/${slug}${pathname}`;
|
|
38
45
|
return NextResponse.redirect(newUrl, {
|
|
39
|
-
status:
|
|
46
|
+
status: debug ? 302 : 301
|
|
40
47
|
});
|
|
41
48
|
}
|
|
49
|
+
else {
|
|
50
|
+
// We have a locale, so we're going to make it available to the application
|
|
51
|
+
// using request headers.
|
|
52
|
+
const locale = channel.slugToLocale(localeSlug);
|
|
53
|
+
request.headers.append("x-app-locale", locale ?? channel.defaultLocale);
|
|
54
|
+
request.headers.append("x-app-locale-slug", localeSlug);
|
|
55
|
+
if (debug)
|
|
56
|
+
console.log(`💬 [Language Prefix Middleware] Detected locale ${locale}`);
|
|
57
|
+
}
|
|
42
58
|
return next(request, ...params);
|
|
43
59
|
};
|
|
44
60
|
return newMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/cms-page/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/cms-page/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/cms-page/page.d.ts
CHANGED
|
@@ -84,7 +84,7 @@ export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record
|
|
|
84
84
|
* @return The path to be retrieved from Router or getContentByPath
|
|
85
85
|
* function
|
|
86
86
|
*/
|
|
87
|
-
propsToCmsPath: (props: DefaultCmsPageProps<TParams, TSearchParams
|
|
87
|
+
propsToCmsPath: (props: DefaultCmsPageProps<TParams, TSearchParams>, channel?: ChannelDefinition) => Promise<string | null>;
|
|
88
88
|
/**
|
|
89
89
|
* Take the props received by the CmsPage from Next.JS and tranform those
|
|
90
90
|
* into a the page variant used by the CMS.
|
|
@@ -94,7 +94,7 @@ export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record
|
|
|
94
94
|
* @return The path to be retrieved from Router or getContentByPath
|
|
95
95
|
* function
|
|
96
96
|
*/
|
|
97
|
-
propsToVariant: (props: DefaultCmsPageProps<TParams, TSearchParams
|
|
97
|
+
propsToVariant: (props: DefaultCmsPageProps<TParams, TSearchParams>, channel?: ChannelDefinition) => Promise<string | null | undefined>;
|
|
98
98
|
/**
|
|
99
99
|
* Take the route from the Routing Service and transform that to the route
|
|
100
100
|
* params used by Next.JS. The default implementation assumes that the CMS
|
package/dist/cms-page/page.js
CHANGED
|
@@ -6,7 +6,7 @@ import { cache } from 'react';
|
|
|
6
6
|
import { RouteResolver, } from '@remkoj/optimizely-graph-client/router';
|
|
7
7
|
import { ifChannelDefinition, } from '@remkoj/optimizely-graph-client/channels';
|
|
8
8
|
// React Support
|
|
9
|
-
import { CmsContent, ServerContext, } from '@remkoj/optimizely-cms-react/rsc';
|
|
9
|
+
import { CmsContent, ServerContext, isNonEmptyString, } from '@remkoj/optimizely-cms-react/rsc';
|
|
10
10
|
// Within package
|
|
11
11
|
import { MetaDataResolver } from '../metadata.js';
|
|
12
12
|
import { urlToPath } from './utils.js';
|
|
@@ -20,20 +20,31 @@ export { SystemLocales } from './_base.js';
|
|
|
20
20
|
const CreatePageOptionDefaults = {
|
|
21
21
|
client: createClient,
|
|
22
22
|
routerFactory: (client) => new RouteResolver(client),
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
async propsToCmsPath(props) {
|
|
24
|
+
const params = await props.params; // Read the parameters
|
|
25
|
+
const slugs = [params.lang, ...(params.path ?? [])] // Build the full set of slugs for the path
|
|
26
|
+
.filter(isNonEmptyString) // Remove empty values
|
|
27
|
+
.filter((x) => !x.startsWith(encodeURIComponent('var:'))) // Remove any variant specification
|
|
28
|
+
.map((x) => decodeURIComponent(x)); // Decode the URI components
|
|
29
|
+
if (slugs.length === 0)
|
|
30
|
+
return '/'; // We're requesting the homepage, so just return that path
|
|
31
|
+
// Build the URL
|
|
32
|
+
const fullPath = !slugs[slugs.length - 1].includes('.') ? '/' + slugs.join('/') + '/' : '/' + slugs.join('/');
|
|
33
|
+
return fullPath;
|
|
34
|
+
},
|
|
35
|
+
async propsToVariant({ params }) {
|
|
25
36
|
const pathSegments = (await params).path;
|
|
26
37
|
const variantPrefix = encodeURIComponent('var:');
|
|
27
38
|
const variantSegment = Array.isArray(pathSegments) ? pathSegments.filter(x => typeof x === 'string' && x.startsWith(variantPrefix)).at(0) : undefined;
|
|
28
39
|
return variantSegment ? variantSegment.substring(variantPrefix.length) : undefined;
|
|
29
40
|
},
|
|
30
|
-
routeToParams
|
|
41
|
+
routeToParams(route) {
|
|
31
42
|
const pathSegments = urlToPath(route.url);
|
|
32
43
|
if (route.variation)
|
|
33
44
|
pathSegments.push(`var:${route.variation}`);
|
|
34
45
|
return { path: pathSegments, lang: route.locale };
|
|
35
46
|
},
|
|
36
|
-
|
|
47
|
+
async paramsToLocale(params, channel) {
|
|
37
48
|
// If there's no channel, just return undefined
|
|
38
49
|
if (!channel)
|
|
39
50
|
return undefined;
|
|
@@ -87,9 +98,9 @@ export function createPage(factory, options) {
|
|
|
87
98
|
const context = await buildContext();
|
|
88
99
|
// Analyze the Next.JS Request props
|
|
89
100
|
const [requestPath, initialLocale, variation] = await Promise.all([
|
|
90
|
-
propsToCmsPath({ params, searchParams }),
|
|
101
|
+
propsToCmsPath({ params, searchParams }, ifChannelDefinition(channel)),
|
|
91
102
|
paramsToLocale(params, ifChannelDefinition(channel)),
|
|
92
|
-
|
|
103
|
+
propsToVariant({ params, searchParams }, ifChannelDefinition(channel)).then(variant => variant || undefined)
|
|
93
104
|
]);
|
|
94
105
|
// Valdiate path
|
|
95
106
|
if (!requestPath)
|
|
@@ -98,7 +109,10 @@ export function createPage(factory, options) {
|
|
|
98
109
|
if (initialLocale)
|
|
99
110
|
context.setLocale(initialLocale);
|
|
100
111
|
// Resolve route
|
|
101
|
-
const
|
|
112
|
+
const pathInfo = await getInfoByPath(context.client, routerFactory, requestPath, channel, variation);
|
|
113
|
+
if (!pathInfo)
|
|
114
|
+
return {};
|
|
115
|
+
const [route, contentLink, contentType, graphLocale] = pathInfo;
|
|
102
116
|
if (!contentLink || !contentType)
|
|
103
117
|
return {};
|
|
104
118
|
// Update context from route
|
|
@@ -111,93 +125,13 @@ export function createPage(factory, options) {
|
|
|
111
125
|
resolvingMetadata,
|
|
112
126
|
]);
|
|
113
127
|
return pageMetadata;
|
|
114
|
-
/*// Get context
|
|
115
|
-
const context = await buildContext()
|
|
116
|
-
const channelId = getChannelId(context.client, channel)
|
|
117
|
-
|
|
118
|
-
// Read variables from request
|
|
119
|
-
const [requestPath, initialLocale] = await Promise.all([
|
|
120
|
-
propsToCmsPath({ params, searchParams }),
|
|
121
|
-
paramsToLocale(params, ifChannelDefinition(channel)),
|
|
122
|
-
])
|
|
123
|
-
if (!requestPath) return {}
|
|
124
|
-
if (initialLocale) context.setLocale(initialLocale)
|
|
125
|
-
|
|
126
|
-
const awaitedParams = await params
|
|
127
|
-
|
|
128
|
-
// Debug output
|
|
129
|
-
if (context.isDebug)
|
|
130
|
-
console.log(
|
|
131
|
-
`⚪ [CmsPage.generateMetadata] Processed Next.JS route: ${JSON.stringify(awaitedParams)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath, siteId: channelId })}`
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
// Resolve the route to a content link
|
|
135
|
-
const routeInfo = await getInfoByPath(
|
|
136
|
-
context.client,
|
|
137
|
-
routerFactory,
|
|
138
|
-
requestPath,
|
|
139
|
-
channel
|
|
140
|
-
)
|
|
141
|
-
if (!routeInfo || !routeInfo[0]) {
|
|
142
|
-
if (context.isDebug)
|
|
143
|
-
console.log('⚪ [CmsPage.generateMetadata] No data received')
|
|
144
|
-
return {}
|
|
145
|
-
}
|
|
146
|
-
const [route, contentLink, contentType, graphLocale] = routeInfo
|
|
147
|
-
if (context.isDebug)
|
|
148
|
-
console.log(
|
|
149
|
-
`⚪ [CmsPage.generateMetadata] Retrieved content info:`,
|
|
150
|
-
route
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
// Update context from route
|
|
154
|
-
context.setLocale(route.locale)
|
|
155
|
-
|
|
156
|
-
// Fetch the metadata based upon the actual content type and resolve parent
|
|
157
|
-
const metaResolver = new MetaDataResolver(context.client)
|
|
158
|
-
const [pageMetadata, baseMetadata] = await Promise.all([
|
|
159
|
-
metaResolver.resolve(factory, contentLink, contentType, graphLocale),
|
|
160
|
-
parent,
|
|
161
|
-
])
|
|
162
|
-
|
|
163
|
-
if (context.isDebug)
|
|
164
|
-
console.log(
|
|
165
|
-
`⚪ [CmsPage.generateMetadata] Component yielded metadata:`,
|
|
166
|
-
pageMetadata
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
// Make sure merging of objects goes correctly
|
|
170
|
-
for (const metaKey of Object.getOwnPropertyNames(
|
|
171
|
-
pageMetadata
|
|
172
|
-
) as (keyof Metadata)[]) {
|
|
173
|
-
if (
|
|
174
|
-
isObject(pageMetadata[metaKey]) &&
|
|
175
|
-
isObject(baseMetadata[metaKey])
|
|
176
|
-
) {
|
|
177
|
-
//@ts-expect-error Silence error due to failed introspection...
|
|
178
|
-
pageMetadata[metaKey] = deepmerge<object>(
|
|
179
|
-
baseMetadata[metaKey],
|
|
180
|
-
pageMetadata[metaKey],
|
|
181
|
-
{ arrayMerge: (target, source) => [...source] }
|
|
182
|
-
)
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Not sure, but needed somehow...
|
|
187
|
-
if (
|
|
188
|
-
typeof baseMetadata.metadataBase == 'string' &&
|
|
189
|
-
(baseMetadata.metadataBase as string).length > 1
|
|
190
|
-
) {
|
|
191
|
-
pageMetadata.metadataBase = new URL(baseMetadata.metadataBase)
|
|
192
|
-
}
|
|
193
|
-
return pageMetadata*/
|
|
194
128
|
},
|
|
195
129
|
CmsPage: async ({ params, searchParams }) => {
|
|
196
130
|
// Prepare the context
|
|
197
131
|
const context = await buildContext();
|
|
198
132
|
// Analyze the Next.JS Request props
|
|
199
133
|
const [requestPath, initialLocale, requestVariant] = await Promise.all([
|
|
200
|
-
propsToCmsPath({ params, searchParams }),
|
|
134
|
+
propsToCmsPath({ params, searchParams }, ifChannelDefinition(channel)),
|
|
201
135
|
paramsToLocale(params, ifChannelDefinition(channel)),
|
|
202
136
|
(await propsToVariant({ params, searchParams })) ?? undefined
|
|
203
137
|
]);
|
|
@@ -226,30 +160,4 @@ export function createPage(factory, options) {
|
|
|
226
160
|
};
|
|
227
161
|
return pageDefintion;
|
|
228
162
|
}
|
|
229
|
-
/**
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* @param param0 The URL parameters
|
|
233
|
-
* @returns The request path as understood by Graph
|
|
234
|
-
*/
|
|
235
|
-
function buildRequestPath({ lang, path, }) {
|
|
236
|
-
const slugs = [];
|
|
237
|
-
if (path)
|
|
238
|
-
slugs.push(...path.filter((x) => x));
|
|
239
|
-
if (lang)
|
|
240
|
-
slugs.unshift(lang);
|
|
241
|
-
if (slugs.length == 0)
|
|
242
|
-
return '/';
|
|
243
|
-
const fullPath = '/' +
|
|
244
|
-
slugs
|
|
245
|
-
.filter((x) => x && x.length > 0 && !x.startsWith(encodeURIComponent('var:')))
|
|
246
|
-
.map((x) => decodeURIComponent(x))
|
|
247
|
-
.join('/');
|
|
248
|
-
if (!slugs[slugs.length - 1].includes('.'))
|
|
249
|
-
return fullPath + '/';
|
|
250
|
-
return fullPath;
|
|
251
|
-
}
|
|
252
|
-
function isObject(toTest) {
|
|
253
|
-
return typeof toTest == 'object' && toTest != null && toTest != undefined;
|
|
254
|
-
}
|
|
255
163
|
//# sourceMappingURL=page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
|
package/dist/cms-page/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { localeToGraphLocale as coreLocaleToGraphLocale } from "@remkoj/optimizely-graph-client/utils";
|
|
2
2
|
// Extract the path as string array from a given URL
|
|
3
3
|
export function urlToPath(baseUrl, language) {
|
|
4
|
-
|
|
4
|
+
const slugs = baseUrl.pathname.split('/').filter(s => s);
|
|
5
5
|
if (language && slugs[0] == language)
|
|
6
6
|
return slugs.slice(1);
|
|
7
7
|
return slugs;
|
|
@@ -22,7 +22,7 @@ export function slugToLocale(channel, slug, defaultValue) {
|
|
|
22
22
|
if (!slug)
|
|
23
23
|
return defaultValue;
|
|
24
24
|
if (!channel) {
|
|
25
|
-
|
|
25
|
+
const parsedSlug = slug.replaceAll('_', '-').split('-').map((x, i) => i == 1 ? x.toUpperCase() : x.toLowerCase()).join('-');
|
|
26
26
|
return parsedSlug;
|
|
27
27
|
}
|
|
28
28
|
const locale = channel.slugToLocale(slug);
|
|
@@ -32,7 +32,7 @@ export function slugToGraphLocale(channel, slug, defaultValue) {
|
|
|
32
32
|
if (!slug)
|
|
33
33
|
return defaultValue;
|
|
34
34
|
if (!channel) {
|
|
35
|
-
|
|
35
|
+
const parsedSlug = slug.replaceAll('_', '-').split('-').map((x, i) => i == 1 ? x.toUpperCase() : x.toLowerCase()).join('_');
|
|
36
36
|
return parsedSlug;
|
|
37
37
|
}
|
|
38
38
|
const graphLocale = channel.slugToGraphLocale(slug);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cms-page/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAEtG,oDAAoD;AACpD,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,QAAiB;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cms-page/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAEtG,oDAAoD;AACpD,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,QAAiB;IACvD,MAAM,KAAK,GAAc,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnE,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;QAClC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAA2B;IAE7E,OAAO,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAsC,OAAsC,EAAE,IAAmB,EAAE,YAAe;IAE5I,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAA;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzH,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,MAAM,IAAI,YAAY,EAAE,UAAU,CAAC,GAAG,EAAC,GAAG,CAAM,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAsC,OAAsC,EAAE,IAAmB,EAAE,YAAe;IAEjJ,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAA;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzH,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACnD,OAAO,WAAW,IAAI,YAAY,EAAE,UAAU,CAAC,GAAG,EAAC,GAAG,CAAM,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,OAAsC,EAAE,MAAS;IAE/E,MAAM,QAAQ,GAAI,MAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAA;IACrE,IAAI,CAAC,OAAO;QACV,OAAO,QAAQ,CAAA;IACjB,OAAO,OAAO,CAAC,YAAY,CAAC,MAAgB,CAAC,IAAI,QAAQ,CAAA;AAC3D,CAAC"}
|
|
@@ -40,7 +40,7 @@ export const OnPageEdit = ({ children, refreshTimeout = false }) => {
|
|
|
40
40
|
.then((epi) => {
|
|
41
41
|
if (!cancelled) {
|
|
42
42
|
console.log(`⚪ Enabling ContentSaved event handler`);
|
|
43
|
-
|
|
43
|
+
const r = epi.subscribe('contentSaved', onContentSaved);
|
|
44
44
|
unsub = r.remove;
|
|
45
45
|
}
|
|
46
46
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-page-edit.js","sourceRoot":"","sources":["../../src/components/on-page-edit.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EACL,QAAQ,EACR,SAAS,EACT,MAAM,GAGP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAS9C,MAAM,CAAC,MAAM,UAAU,GAEnB,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,KAAK,EAAE,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IACxD,MAAM,WAAW,GAAG,MAAM,CAAsC,SAAS,CAAC,CAAA;IAE1E,SAAS,cAAc,CAAC,SAAyC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;QAEvC,WAAW,CAAC,IAAI,CAAC,CAAA;QAEjB,IAAI,WAAW,CAAC,OAAO;YAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAE1D,IAAI,SAAS,EAAE,UAAU,IAAI,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAChE,mDAAmD;YACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CACT,wCAAwC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAC1E,CAAA;YACD,IAAI,cAAc;gBAChB,WAAW,CAAC,OAAO,GAAG,UAAU,CAC9B,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAClD,cAAc,CACf,CAAA;;gBACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YACpE,sBAAsB;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;YAC3D,IAAI,cAAc;gBAChB,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAA;;gBACrE,MAAM,CAAC,OAAO,EAAE,CAAA;QACvB,CAAC;QACD,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7D,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;QACrD,MAAM,CAAC,gBAAgB,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAA;QAEhE,IAAI,KAAK,GAA6B,SAAS,CAAA;QAC/C,IAAI,SAAS,GAAY,KAAK,CAAA;QAE9B,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;aACtB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;gBACpD,
|
|
1
|
+
{"version":3,"file":"on-page-edit.js","sourceRoot":"","sources":["../../src/components/on-page-edit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@ type LinkType = ForwardRefExoticComponent<Omit<AnchorHTMLAttributes<HTMLAnchorEl
|
|
|
7
7
|
type LinkTypeProps = ComponentPropsWithRef<LinkType>;
|
|
8
8
|
export type CmsContentLinkProps = {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
* The Link target as retrieved from Optimizely Graph
|
|
11
|
+
*/
|
|
12
12
|
href?: CmsContentLinkDataType | null;
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
* If set to a valid base URL, it will make all links targetting
|
|
15
|
+
* this base a same site link instead of an absolute link
|
|
16
|
+
*/
|
|
17
17
|
base?: string;
|
|
18
18
|
} & Omit<LinkTypeProps, 'href'>;
|
|
19
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsContentLink.js","sourceRoot":"","sources":["../../../src/components/shared/CmsContentLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,MAAqB,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMrK,MAAM,IAAI,GAAc,MAA6B,CAAA;AAerD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"CmsContentLink.js","sourceRoot":"","sources":["../../../src/components/shared/CmsContentLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,MAAqB,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMrK,MAAM,IAAI,GAAc,MAA6B,CAAA;AAerD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,QAAQ,GAAG,GAAG,CAAA;QAClB,IAAI,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ;YAC1B,QAAQ,GAAG,IAAI,CAAA;aACZ,IAAI,cAAc,CAAC,IAAI,CAAC;YAC3B,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACtC,IAAI,cAAc,CAAC,IAAI,CAAC;YAC3B,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACtC,IAAI,UAAU,CAAC,IAAI,CAAC;YACvB,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aAClC,IAAI,cAAc,CAAC,IAAI,CAAC;YAC3B,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3C,OAAO,QAAQ,CAAA;IACjB,CAAC,EAAE,CAAE,IAAI,CAAE,CAAC,CAAA;IAEZ,OAAO,KAAC,IAAI,IAAC,IAAI,EAAG,QAAQ,KAAQ,KAAK,YAAK,QAAQ,GAAS,CAAA;AACjE,CAAC,CAAA"}
|