@laconius/cms 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +73 -0
- package/README.md +26 -0
- package/lib/module/adapter.js +136 -0
- package/lib/module/adapter.js.map +1 -0
- package/lib/module/config.js +105 -0
- package/lib/module/config.js.map +1 -0
- package/lib/module/defaults.js +282 -0
- package/lib/module/defaults.js.map +1 -0
- package/lib/module/index.js +10 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models.js +29 -0
- package/lib/module/models.js.map +1 -0
- package/lib/module/normalizer.js +114 -0
- package/lib/module/normalizer.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/page.js +223 -0
- package/lib/module/page.js.map +1 -0
- package/lib/module/queries.js +54 -0
- package/lib/module/queries.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/adapter.d.ts +25 -0
- package/lib/typescript/src/adapter.d.ts.map +1 -0
- package/lib/typescript/src/config.d.ts +84 -0
- package/lib/typescript/src/config.d.ts.map +1 -0
- package/lib/typescript/src/defaults.d.ts +64 -0
- package/lib/typescript/src/defaults.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/models.d.ts +123 -0
- package/lib/typescript/src/models.d.ts.map +1 -0
- package/lib/typescript/src/normalizer.d.ts +70 -0
- package/lib/typescript/src/normalizer.d.ts.map +1 -0
- package/lib/typescript/src/page.d.ts +62 -0
- package/lib/typescript/src/page.d.ts.map +1 -0
- package/lib/typescript/src/queries.d.ts +193 -0
- package/lib/typescript/src/queries.d.ts.map +1 -0
- package/package.json +69 -0
- package/src/adapter.ts +159 -0
- package/src/config.ts +119 -0
- package/src/defaults.tsx +281 -0
- package/src/index.ts +82 -0
- package/src/models.ts +120 -0
- package/src/normalizer.ts +159 -0
- package/src/page.tsx +228 -0
- package/src/queries.ts +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useLaconiusConfig","Media","Text","useStyles","useTheme","useUiComponent","useCallback","FlatList","Pressable","StyleSheet","View","resolveLinkTarget","stripHtml","CmsComponentByUid","useCmsComponentData","jsx","_jsx","jsxs","_jsxs","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","useCmsNavigate","config","onNavigate","cms","target","CmsHtml","html","style","Renderer","htmlRenderer","children","Banner","title","subtitle","media","onPress","styles","sheet","createStyles","body","banner","container","mediaRole","aspectRatio","decorative","variant","bannerTitle","muted","accessibilityRole","accessibilityLabel","Link","label","link","hitSlop","Paragraph","content","paragraph","NavigationList","node","onSelect","length","navigation","map","child","index","undefined","uid","Carousel","items","renderItem","itemWidth","theme","carouselTitle","horizontal","data","keyExtractor","_item","String","item","width","showsHorizontalScrollIndicator","snapToInterval","decelerationRate","contentContainerStyle","gap","spacing","md","paddingHorizontal","CmsBanner","navigate","Component","headline","CmsLink","linkName","name","CmsParagraph","CmsNavigation","navigationNode","entryTarget","entry","entries","itemId","itemSuperType","kind","code","CmsBannerCarousel","uids","banners","split","filter","Boolean","create","sm","padding","marginTop","xs","paddingVertical","minHeight","justifyContent","marginBottom"],"sourceRoot":"../../src","sources":["defaults.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { HOME_PAGE_CONTEXT } from "./models.js";
|
|
4
|
+
export { getComponentKey, normalizeCmsPage, resolveLinkTarget, stripHtml } from "./normalizer.js";
|
|
5
|
+
export { MAX_COMPONENTS_PER_REQUEST, defaultCmsAdapter, defaultCmsConverters, loadCmsComponent } from "./adapter.js";
|
|
6
|
+
export { cmsQueries, useCmsComponent, useCmsNavigation, useCmsPage } from "./queries.js";
|
|
7
|
+
export { CmsComponentByUid, CmsComponentOutlet, CmsPage, CmsPageProvider, CmsSlot, useCmsComponentData, useCmsComponentUid, useCmsPageStructure } from "./page.js";
|
|
8
|
+
export { Banner, Carousel, CmsBanner, CmsBannerCarousel, CmsHtml, CmsLink, CmsNavigation, CmsParagraph, Link, NavigationList, Paragraph, useCmsNavigate } from "./defaults.js";
|
|
9
|
+
export { defaultCmsComponents, defaultCmsConfig, defaultCmsEndpoints, defaultCmsLayouts } from "./config.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["HOME_PAGE_CONTEXT","getComponentKey","normalizeCmsPage","resolveLinkTarget","stripHtml","MAX_COMPONENTS_PER_REQUEST","defaultCmsAdapter","defaultCmsConverters","loadCmsComponent","cmsQueries","useCmsComponent","useCmsNavigation","useCmsPage","CmsComponentByUid","CmsComponentOutlet","CmsPage","CmsPageProvider","CmsSlot","useCmsComponentData","useCmsComponentUid","useCmsPageStructure","Banner","Carousel","CmsBanner","CmsBannerCarousel","CmsHtml","CmsLink","CmsNavigation","CmsParagraph","Link","NavigationList","Paragraph","useCmsNavigate","defaultCmsComponents","defaultCmsConfig","defaultCmsEndpoints","defaultCmsLayouts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SACEA,iBAAiB,QAeZ,aAAU;AAEjB,SACEC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,SAAS,QAEJ,iBAAc;AAErB,SACEC,0BAA0B,EAC1BC,iBAAiB,EACjBC,oBAAoB,EACpBC,gBAAgB,QAEX,cAAW;AAElB,SACEC,UAAU,EACVC,eAAe,EACfC,gBAAgB,EAChBC,UAAU,QACL,cAAW;AAElB,SACEC,iBAAiB,EACjBC,kBAAkB,EAClBC,OAAO,EACPC,eAAe,EACfC,OAAO,EACPC,mBAAmB,EACnBC,kBAAkB,EAClBC,mBAAmB,QAId,WAAQ;AAEf,SACEC,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,iBAAiB,EACjBC,OAAO,EACPC,OAAO,EACPC,aAAa,EACbC,YAAY,EACZC,IAAI,EACJC,cAAc,EACdC,SAAS,EACTC,cAAc,QAMT,eAAY;AAEnB,SACEC,oBAAoB,EACpBC,gBAAgB,EAChBC,mBAAmB,EACnBC,iBAAiB,QAEZ,aAAU","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CMS models, ported from Spartacus `core-libs/core/src/model/cms.model.ts` and
|
|
5
|
+
* `core-libs/core/src/cms/model/*` (Apache-2.0, see NOTICE). Divergences:
|
|
6
|
+
* - `enum` becomes a string union, so this module emits nothing at runtime.
|
|
7
|
+
* - `CmsStructure.components` is a record keyed by `uid`, not an array: Laconius looks components
|
|
8
|
+
* up by uid at render time instead of feeding an NgRx entity reducer.
|
|
9
|
+
* - `robots` and the rest of the SEO emitters are dropped ([chapter 06](../../../docs/spec/06-cms-engine.md)).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** The sentinel the backend answers to for the base site's homepage. */
|
|
13
|
+
export const HOME_PAGE_CONTEXT = '__HOMEPAGE__';
|
|
14
|
+
|
|
15
|
+
/** What identifies a page to OCC: a content-page label, or a product / category code. */
|
|
16
|
+
|
|
17
|
+
/** The component reference a slot carries. `key` is the *computed* registry key. */
|
|
18
|
+
|
|
19
|
+
/** What the page endpoint normalizes to: the structure plus whatever component data came inlined. */
|
|
20
|
+
|
|
21
|
+
/** Every component payload carries these; the rest is per type. */
|
|
22
|
+
|
|
23
|
+
/** `RotatingImagesComponent`: a space-separated list of banner uids. */
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Where a CMS link points, resolved from the four mutually exclusive fields OCC uses. Laconius
|
|
27
|
+
* hands this to `cms.onNavigate`; no Laconius package navigates ([chapter 01](../../../docs/spec/01-packages.md)).
|
|
28
|
+
*/
|
|
29
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["HOME_PAGE_CONTEXT"],"sourceRoot":"../../src","sources":["models.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA,OAAO,MAAMA,iBAAiB,GAAG,cAAc;;AAE/C;;AAGA;;AA4BA;;AAMA;;AAoDA;;AAMA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const CMS_FLEX_COMPONENT_TYPE = 'CMSFlexComponent';
|
|
4
|
+
const JSP_INCLUDE_COMPONENT_TYPE = 'JspIncludeComponent';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The registry key, **computed** — not `typeCode`
|
|
8
|
+
* (`core-libs/core/src/occ/adapters/cms/converters/occ-cms-page-normalizer.ts:151`). Miss this and
|
|
9
|
+
* every account page renders blank, because those pages are all `CMSFlexComponent`.
|
|
10
|
+
*/
|
|
11
|
+
export function getComponentKey(component) {
|
|
12
|
+
if (component.typeCode === CMS_FLEX_COMPONENT_TYPE) return component.flexType ?? '';
|
|
13
|
+
if (component.typeCode === JSP_INCLUDE_COMPONENT_TYPE) return component.uid ?? '';
|
|
14
|
+
return component.typeCode ?? '';
|
|
15
|
+
}
|
|
16
|
+
function asArray(value) {
|
|
17
|
+
if (value === undefined) return [];
|
|
18
|
+
return Array.isArray(value) ? value : [value];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Flattens the OCC page payload into `{ page, components }`.
|
|
23
|
+
*
|
|
24
|
+
* Slot *order* here is backend order, which the layout config overrides
|
|
25
|
+
* ([chapter 06](../../../docs/spec/06-cms-engine.md)). Component `properties` stay on the slot
|
|
26
|
+
* entry and are stripped from the component payload, as in Spartacus.
|
|
27
|
+
*/
|
|
28
|
+
export function normalizeCmsPage(source) {
|
|
29
|
+
const slots = {};
|
|
30
|
+
const components = {};
|
|
31
|
+
for (const slot of asArray(source?.contentSlots?.contentSlot)) {
|
|
32
|
+
if (!slot.position) continue;
|
|
33
|
+
const entries = [];
|
|
34
|
+
for (const occComponent of asArray(slot.components?.component)) {
|
|
35
|
+
if (!occComponent.uid) continue;
|
|
36
|
+
entries.push({
|
|
37
|
+
uid: occComponent.uid,
|
|
38
|
+
typeCode: occComponent.typeCode,
|
|
39
|
+
key: getComponentKey(occComponent),
|
|
40
|
+
properties: occComponent.properties
|
|
41
|
+
});
|
|
42
|
+
const {
|
|
43
|
+
properties: _properties,
|
|
44
|
+
modifiedtime,
|
|
45
|
+
...rest
|
|
46
|
+
} = occComponent;
|
|
47
|
+
components[occComponent.uid] = {
|
|
48
|
+
...rest,
|
|
49
|
+
// OCC is out of sync with its own model here, and answers `modifiedtime`.
|
|
50
|
+
modifiedTime: occComponent.modifiedTime ?? modifiedtime
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
slots[slot.position] = {
|
|
54
|
+
position: slot.position,
|
|
55
|
+
properties: slot.properties,
|
|
56
|
+
components: entries
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
page: {
|
|
61
|
+
pageId: source?.uid,
|
|
62
|
+
name: source?.name,
|
|
63
|
+
type: source?.typeCode,
|
|
64
|
+
label: source?.label,
|
|
65
|
+
template: source?.template,
|
|
66
|
+
title: source?.title,
|
|
67
|
+
description: source?.description,
|
|
68
|
+
properties: source?.properties,
|
|
69
|
+
slots
|
|
70
|
+
},
|
|
71
|
+
components
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The four mutually exclusive link fields OCC uses, in Spartacus' own precedence
|
|
77
|
+
* (`cms-components/content/banner/banner.component.ts:64`). `external` arrives as the string
|
|
78
|
+
* `'true'` about as often as a boolean.
|
|
79
|
+
*/
|
|
80
|
+
export function resolveLinkTarget(data) {
|
|
81
|
+
const url = data.urlLink ?? data.url;
|
|
82
|
+
if (url) {
|
|
83
|
+
return {
|
|
84
|
+
kind: 'url',
|
|
85
|
+
url,
|
|
86
|
+
external: data.external === true || data.external === 'true'
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const label = data.contentPage ?? data.contentPageLabelOrId;
|
|
90
|
+
if (label) return {
|
|
91
|
+
kind: 'contentPage',
|
|
92
|
+
label
|
|
93
|
+
};
|
|
94
|
+
if (data.product) return {
|
|
95
|
+
kind: 'product',
|
|
96
|
+
code: data.product
|
|
97
|
+
};
|
|
98
|
+
if (data.category) return {
|
|
99
|
+
kind: 'category',
|
|
100
|
+
code: data.category
|
|
101
|
+
};
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The default HTML story: strip tags, decode the five named entities OCC actually emits, collapse
|
|
107
|
+
* whitespace. Laconius ships no parser — rich text is `cms.htmlRenderer`
|
|
108
|
+
* ([chapter 06](../../../docs/spec/06-cms-engine.md)).
|
|
109
|
+
*/
|
|
110
|
+
export function stripHtml(html) {
|
|
111
|
+
if (!html) return '';
|
|
112
|
+
return html.replace(/<br\s*\/?>|<\/(p|div|li|h[1-6])>/gi, '\n').replace(/<[^>]*>/g, '').replace(/ /g, ' ').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, "'").replace(/[ \t]+/g, ' ').replace(/\n{3,}/g, '\n\n').trim();
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CMS_FLEX_COMPONENT_TYPE","JSP_INCLUDE_COMPONENT_TYPE","getComponentKey","component","typeCode","flexType","uid","asArray","value","undefined","Array","isArray","normalizeCmsPage","source","slots","components","slot","contentSlots","contentSlot","position","entries","occComponent","push","key","properties","_properties","modifiedtime","rest","modifiedTime","page","pageId","name","type","label","template","title","description","resolveLinkTarget","data","url","urlLink","kind","external","contentPage","contentPageLabelOrId","product","code","category","stripHtml","html","replace","trim"],"sourceRoot":"../../src","sources":["normalizer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useLaconiusConfig } from '@laconius/core';
|
|
4
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
5
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
6
|
+
import { getComponentKey } from "./normalizer.js";
|
|
7
|
+
import { useCmsComponent, useCmsPage } from "./queries.js";
|
|
8
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const warned = new Set();
|
|
10
|
+
function warnOnce(message) {
|
|
11
|
+
if (process.env.NODE_ENV === 'production' || warned.has(message)) return;
|
|
12
|
+
warned.add(message);
|
|
13
|
+
console.warn(`[laconius] ${message}`);
|
|
14
|
+
}
|
|
15
|
+
const PageStructureContext = /*#__PURE__*/createContext(undefined);
|
|
16
|
+
const ComponentContext = /*#__PURE__*/createContext(undefined);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The whole component contract: typed data through a hook, never props
|
|
20
|
+
* ([ADR-0007](../../../docs/adr/0007-two-registries-two-contracts.md)). Props would make a
|
|
21
|
+
* registered replacement depend on what Laconius happens to pass it, and substitutability dies.
|
|
22
|
+
*/
|
|
23
|
+
export function useCmsComponentData() {
|
|
24
|
+
const entry = useContext(ComponentContext);
|
|
25
|
+
if (!entry) {
|
|
26
|
+
throw new Error('[laconius] useCmsComponentData must be used inside a component rendered by the CMS registry.');
|
|
27
|
+
}
|
|
28
|
+
return entry.data;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** The uid of the component being rendered, for components that key their own state on it. */
|
|
32
|
+
export function useCmsComponentUid() {
|
|
33
|
+
const entry = useContext(ComponentContext);
|
|
34
|
+
if (!entry) {
|
|
35
|
+
throw new Error('[laconius] useCmsComponentUid must be used inside a component rendered by the CMS registry.');
|
|
36
|
+
}
|
|
37
|
+
return entry.uid;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The page a `<CmsSlot>` reads from, and the context its components are scoped to. */
|
|
41
|
+
export function useCmsPageStructure() {
|
|
42
|
+
return useContext(PageStructureContext);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Fetches a page and provides it to the `<CmsSlot>`s inside. Suspends: wrap it in `<Suspense>`
|
|
46
|
+
* and an error boundary.
|
|
47
|
+
*
|
|
48
|
+
* A native screen that only *hosts* CMS slots — a PDP, the cart — mounts this around its own
|
|
49
|
+
* layout and places slots where it wants them.
|
|
50
|
+
*/
|
|
51
|
+
export function CmsPageProvider({
|
|
52
|
+
context,
|
|
53
|
+
children
|
|
54
|
+
}) {
|
|
55
|
+
const {
|
|
56
|
+
data
|
|
57
|
+
} = useCmsPage(context);
|
|
58
|
+
const value = useMemo(() => ({
|
|
59
|
+
structure: data,
|
|
60
|
+
context
|
|
61
|
+
}), [data, context]);
|
|
62
|
+
return /*#__PURE__*/_jsx(PageStructureContext.Provider, {
|
|
63
|
+
value: value,
|
|
64
|
+
children: children
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function CmsSlot({
|
|
68
|
+
position,
|
|
69
|
+
style,
|
|
70
|
+
fallback = null
|
|
71
|
+
}) {
|
|
72
|
+
const page = useCmsPageStructure();
|
|
73
|
+
const slot = page?.structure.page.slots[position];
|
|
74
|
+
if (!page) {
|
|
75
|
+
warnOnce(`<CmsSlot position="${position}"> rendered outside a page. Wrap the screen in <CmsPageProvider> or <CmsPage>.`);
|
|
76
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
77
|
+
children: fallback
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (!slot || slot.components.length === 0) return /*#__PURE__*/_jsx(_Fragment, {
|
|
81
|
+
children: fallback
|
|
82
|
+
});
|
|
83
|
+
return /*#__PURE__*/_jsx(View, {
|
|
84
|
+
style: style,
|
|
85
|
+
children: slot.components.map(entry => /*#__PURE__*/_jsx(CmsComponentOutlet, {
|
|
86
|
+
entry: entry
|
|
87
|
+
}, entry.uid))
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A whole page, top to bottom, in the slot order of `cms.layouts[template]`. It renders no scroll
|
|
92
|
+
* container: the screen owns scrolling, safe areas and refresh control.
|
|
93
|
+
*/
|
|
94
|
+
export function CmsPage({
|
|
95
|
+
pageLabel,
|
|
96
|
+
context,
|
|
97
|
+
style,
|
|
98
|
+
slotStyle
|
|
99
|
+
}) {
|
|
100
|
+
const resolved = useMemo(() => context ?? {
|
|
101
|
+
id: pageLabel ?? '/',
|
|
102
|
+
type: 'ContentPage'
|
|
103
|
+
}, [context, pageLabel]);
|
|
104
|
+
return /*#__PURE__*/_jsx(CmsPageProvider, {
|
|
105
|
+
context: resolved,
|
|
106
|
+
children: /*#__PURE__*/_jsx(CmsPageSlots, {
|
|
107
|
+
style: style,
|
|
108
|
+
slotStyle: slotStyle
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function CmsPageSlots({
|
|
113
|
+
style,
|
|
114
|
+
slotStyle
|
|
115
|
+
}) {
|
|
116
|
+
const config = useLaconiusConfig();
|
|
117
|
+
const page = useCmsPageStructure();
|
|
118
|
+
const template = page?.structure.page.template;
|
|
119
|
+
const configured = template ? config.cms?.layouts?.[template]?.slots : undefined;
|
|
120
|
+
if (!page) return null;
|
|
121
|
+
if (!configured && template) {
|
|
122
|
+
// Slot order is client configuration; backend key order is a fallback, not the contract.
|
|
123
|
+
warnOnce(`No cms.layouts entry for template "${template}"; falling back to the backend slot order.`);
|
|
124
|
+
}
|
|
125
|
+
const positions = configured ?? Object.keys(page.structure.page.slots);
|
|
126
|
+
return /*#__PURE__*/_jsx(View, {
|
|
127
|
+
style: style,
|
|
128
|
+
children: positions.map(position => /*#__PURE__*/_jsx(CmsSlot, {
|
|
129
|
+
position: position,
|
|
130
|
+
style: slotStyle
|
|
131
|
+
}, position))
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Renders one slot entry through the registry, loading its data if the page did not inline it. */
|
|
136
|
+
export function CmsComponentOutlet({
|
|
137
|
+
entry
|
|
138
|
+
}) {
|
|
139
|
+
const config = useLaconiusConfig();
|
|
140
|
+
const page = useCmsPageStructure();
|
|
141
|
+
const inlined = page?.structure.components[entry.uid];
|
|
142
|
+
const query = useCmsComponent(entry.uid, {
|
|
143
|
+
context: page?.context,
|
|
144
|
+
enabled: !inlined
|
|
145
|
+
});
|
|
146
|
+
const data = inlined ?? query.data;
|
|
147
|
+
const mapping = config.cms?.components?.[entry.key];
|
|
148
|
+
if (!mapping) return /*#__PURE__*/_jsx(UnregisteredComponent, {
|
|
149
|
+
typeCode: entry.key,
|
|
150
|
+
uid: entry.uid
|
|
151
|
+
});
|
|
152
|
+
if (!data) return null;
|
|
153
|
+
const Component = mapping.component;
|
|
154
|
+
return /*#__PURE__*/_jsx(ComponentContext.Provider, {
|
|
155
|
+
value: {
|
|
156
|
+
uid: entry.uid,
|
|
157
|
+
typeCode: entry.typeCode,
|
|
158
|
+
data
|
|
159
|
+
},
|
|
160
|
+
children: /*#__PURE__*/_jsx(Component, {})
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Renders a component addressed only by uid — what a carousel does with the banner uids it holds.
|
|
166
|
+
* The registry key comes from the loaded payload, not from a slot entry.
|
|
167
|
+
*/
|
|
168
|
+
export function CmsComponentByUid({
|
|
169
|
+
uid
|
|
170
|
+
}) {
|
|
171
|
+
const page = useCmsPageStructure();
|
|
172
|
+
const inlined = page?.structure.components[uid];
|
|
173
|
+
const query = useCmsComponent(uid, {
|
|
174
|
+
context: page?.context,
|
|
175
|
+
enabled: !inlined
|
|
176
|
+
});
|
|
177
|
+
const data = inlined ?? query.data;
|
|
178
|
+
if (!data) return null;
|
|
179
|
+
return /*#__PURE__*/_jsx(CmsComponentOutlet, {
|
|
180
|
+
entry: {
|
|
181
|
+
uid,
|
|
182
|
+
typeCode: data.typeCode,
|
|
183
|
+
key: getComponentKey(data)
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Dev: a visible placeholder plus one warning per type. Prod: silent skip.
|
|
190
|
+
*
|
|
191
|
+
* Spartacus only warns, which is survivable on the web where the gap is visible in a layout. On
|
|
192
|
+
* native an unregistered type is invisible — the prototype hit it on its first run, against the
|
|
193
|
+
* stock homepage's `ProductCarouselComponent`.
|
|
194
|
+
*/
|
|
195
|
+
function UnregisteredComponent({
|
|
196
|
+
typeCode,
|
|
197
|
+
uid
|
|
198
|
+
}) {
|
|
199
|
+
if (process.env.NODE_ENV === 'production') return null;
|
|
200
|
+
warnOnce(`No CMS component registered for "${typeCode}". Add it to cms.components.`);
|
|
201
|
+
return /*#__PURE__*/_jsx(View, {
|
|
202
|
+
style: placeholderStyles.root,
|
|
203
|
+
children: /*#__PURE__*/_jsxs(Text, {
|
|
204
|
+
style: placeholderStyles.text,
|
|
205
|
+
children: [typeCode || '(no type code)', '\n', uid]
|
|
206
|
+
})
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const placeholderStyles = StyleSheet.create({
|
|
210
|
+
root: {
|
|
211
|
+
padding: 12,
|
|
212
|
+
margin: 4,
|
|
213
|
+
borderWidth: 1,
|
|
214
|
+
borderStyle: 'dashed',
|
|
215
|
+
borderColor: '#B00020',
|
|
216
|
+
borderRadius: 4
|
|
217
|
+
},
|
|
218
|
+
text: {
|
|
219
|
+
fontSize: 12,
|
|
220
|
+
color: '#B00020'
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useLaconiusConfig","createContext","useContext","useMemo","StyleSheet","Text","View","getComponentKey","useCmsComponent","useCmsPage","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","PageStructureContext","undefined","ComponentContext","useCmsComponentData","entry","Error","data","useCmsComponentUid","uid","useCmsPageStructure","CmsPageProvider","context","children","value","structure","Provider","CmsSlot","position","style","fallback","page","slot","slots","components","length","map","CmsComponentOutlet","CmsPage","pageLabel","slotStyle","resolved","id","type","CmsPageSlots","config","template","configured","cms","layouts","positions","Object","keys","inlined","query","enabled","mapping","key","UnregisteredComponent","typeCode","Component","component","CmsComponentByUid","placeholderStyles","root","text","create","padding","margin","borderWidth","borderStyle","borderColor","borderRadius","fontSize","color"],"sourceRoot":"../../src","sources":["page.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { getRuntime, laconiusQueryKey } from '@laconius/core';
|
|
4
|
+
import { queryOptions, useQuery, useSuspenseQuery } from '@tanstack/react-query';
|
|
5
|
+
import { cmsAdapter, loadCmsComponent } from "./adapter.js";
|
|
6
|
+
/**
|
|
7
|
+
* `queryOptions` factories, so an app can `prefetchQuery` a page without forking Laconius.
|
|
8
|
+
*
|
|
9
|
+
* The page key is **per page**, deliberately unlike Spartacus, which collapses every content page
|
|
10
|
+
* under one `ContentPage` key (`core-libs/core/src/cms/utils/cms-utils.ts:29-31`).
|
|
11
|
+
*/
|
|
12
|
+
export const cmsQueries = {
|
|
13
|
+
page: context => queryOptions({
|
|
14
|
+
queryKey: laconiusQueryKey('cms', 'page', context),
|
|
15
|
+
queryFn: () => {
|
|
16
|
+
const runtime = getRuntime();
|
|
17
|
+
return cmsAdapter(runtime).loadPage(runtime, context);
|
|
18
|
+
}
|
|
19
|
+
}),
|
|
20
|
+
component: (uid, context) => queryOptions({
|
|
21
|
+
queryKey: laconiusQueryKey('cms', 'component', uid),
|
|
22
|
+
queryFn: () => loadCmsComponent(getRuntime(), uid, context)
|
|
23
|
+
})
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Suspends. There is no blocking guard: Spartacus' `CmsPageGuard` becomes a non-blocking fetch
|
|
28
|
+
* plus a suspending screen, so the native chrome is on screen while the page loads.
|
|
29
|
+
*/
|
|
30
|
+
export function useCmsPage(context) {
|
|
31
|
+
return useSuspenseQuery(cmsQueries.page(context));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** One component by uid. Requests made in the same frame go out as one batched call. */
|
|
35
|
+
export function useCmsComponent(uid, options = {}) {
|
|
36
|
+
return useQuery({
|
|
37
|
+
...cmsQueries.component(uid, options.context),
|
|
38
|
+
enabled: options.enabled ?? true,
|
|
39
|
+
select: component => component
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The `navigationNode` tree of a `NavigationComponent` / `FooterNavigationComponent` /
|
|
45
|
+
* `CategoryNavigationComponent`, for apps rendering their own chrome from CMS navigation.
|
|
46
|
+
*/
|
|
47
|
+
export function useCmsNavigation(uid) {
|
|
48
|
+
const query = useCmsComponent(uid);
|
|
49
|
+
return {
|
|
50
|
+
...query,
|
|
51
|
+
node: query.data?.navigationNode
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getRuntime","laconiusQueryKey","queryOptions","useQuery","useSuspenseQuery","cmsAdapter","loadCmsComponent","cmsQueries","page","context","queryKey","queryFn","runtime","loadPage","component","uid","useCmsPage","useCmsComponent","options","enabled","select","useCmsNavigation","query","node","data","navigationNode"],"sourceRoot":"../../src","sources":["queries.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,gBAAgB,QAAQ,gBAAgB;AAC7D,SAASC,YAAY,EAAEC,QAAQ,EAAEC,gBAAgB,QAAQ,uBAAuB;AAEhF,SAASC,UAAU,EAAEC,gBAAgB,QAAQ,cAAW;AAGxD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG;EACxBC,IAAI,EAAGC,OAAoB,IACzBP,YAAY,CAAC;IACXQ,QAAQ,EAAET,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAEQ,OAAO,CAAC;IAClDE,OAAO,EAAEA,CAAA,KAAM;MACb,MAAMC,OAAO,GAAGZ,UAAU,CAAC,CAAC;MAC5B,OAAOK,UAAU,CAACO,OAAO,CAAC,CAACC,QAAQ,CAACD,OAAO,EAAEH,OAAO,CAAC;IACvD;EACF,CAAC,CAAC;EACJK,SAAS,EAAEA,CAACC,GAAW,EAAEN,OAAqB,KAC5CP,YAAY,CAAC;IACXQ,QAAQ,EAAET,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAEc,GAAG,CAAC;IACnDJ,OAAO,EAAEA,CAAA,KAAML,gBAAgB,CAACN,UAAU,CAAC,CAAC,EAAEe,GAAG,EAAEN,OAAO;EAC5D,CAAC;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASO,UAAUA,CAACP,OAAoB,EAAE;EAC/C,OAAOL,gBAAgB,CAACG,UAAU,CAACC,IAAI,CAACC,OAAO,CAAC,CAAC;AACnD;;AAEA;AACA,OAAO,SAASQ,eAAeA,CAC7BF,GAAW,EACXG,OAAqD,GAAG,CAAC,CAAC,EAC1D;EACA,OAAOf,QAAQ,CAAC;IACd,GAAGI,UAAU,CAACO,SAAS,CAACC,GAAG,EAAEG,OAAO,CAACT,OAAO,CAAC;IAC7CU,OAAO,EAAED,OAAO,CAACC,OAAO,IAAI,IAAI;IAChCC,MAAM,EAAGN,SAAS,IAAKA;EACzB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,gBAAgBA,CAACN,GAAW,EAAE;EAC5C,MAAMO,KAAK,GAAGL,eAAe,CAAoBF,GAAG,CAAC;EACrD,OAAO;IAAE,GAAGO,KAAK;IAAEC,IAAI,EAAED,KAAK,CAACE,IAAI,EAAEC;EAAe,CAAC;AACvD","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Converter, type LaconiusRuntime } from '@laconius/core';
|
|
2
|
+
import type { CmsComponent, CmsStructure, PageContext } from './models.js';
|
|
3
|
+
import { type OccCmsPage } from './normalizer.js';
|
|
4
|
+
/** OCC's own ceiling for one `componentIds` request. */
|
|
5
|
+
export declare const MAX_COMPONENTS_PER_REQUEST = 50;
|
|
6
|
+
export type CmsAdapter = {
|
|
7
|
+
loadPage(runtime: LaconiusRuntime, context: PageContext): Promise<CmsStructure>;
|
|
8
|
+
loadComponents(runtime: LaconiusRuntime, ids: string[], context?: PageContext): Promise<CmsComponent[]>;
|
|
9
|
+
};
|
|
10
|
+
export declare const defaultCmsAdapter: CmsAdapter;
|
|
11
|
+
export declare function cmsAdapter(runtime: LaconiusRuntime): CmsAdapter;
|
|
12
|
+
/**
|
|
13
|
+
* Debounce-batched component loading, chunked at OCC's limit.
|
|
14
|
+
*
|
|
15
|
+
* A slot with twelve unloaded components issues one request, not twelve — the reason Spartacus
|
|
16
|
+
* batches too. The batch is keyed by nothing: components are page-independent once the page
|
|
17
|
+
* context is applied, and the queue only ever lives for one frame.
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadCmsComponent(runtime: LaconiusRuntime, uid: string, context?: PageContext): Promise<CmsComponent>;
|
|
20
|
+
/** Converters are registered by explicit spread, so a default can be dropped by not spreading it. */
|
|
21
|
+
export declare const defaultCmsConverters: {
|
|
22
|
+
cmsPage: Converter<OccCmsPage, CmsStructure>[];
|
|
23
|
+
cmsComponent: Converter<unknown, CmsComponent>[];
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAU,CAAC;AAExE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAc,CAAC;AAEjE,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAK7C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChF,cAAc,CACZ,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC5B,CAAC;AAiCF,eAAO,MAAM,iBAAiB,EAAE,UAoC/B,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,UAAU,CAE/D;AAWD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAUvB;AAyBD,qGAAqG;AACrG,eAAO,MAAM,oBAAoB;;kBAEX,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE;CACvD,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { LaconiusConfigChunk } from '@laconius/core';
|
|
2
|
+
import type { ComponentType } from 'react';
|
|
3
|
+
import { type CmsAdapter } from './adapter.js';
|
|
4
|
+
import type { CmsLinkTarget } from './models.js';
|
|
5
|
+
/** The registry value. Spartacus' `guards`, `i18nKeys`, `deferLoading` and `childRoutes` are dropped. */
|
|
6
|
+
export type CmsComponentMapping = {
|
|
7
|
+
component: ComponentType<any>;
|
|
8
|
+
};
|
|
9
|
+
declare module '@laconius/ui' {
|
|
10
|
+
/** The CMS defaults are replaceable through the UI registry like every other component. */
|
|
11
|
+
interface LaconiusUiComponents {
|
|
12
|
+
Banner: unknown;
|
|
13
|
+
Link: unknown;
|
|
14
|
+
Paragraph: unknown;
|
|
15
|
+
NavigationList: unknown;
|
|
16
|
+
Carousel: unknown;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
declare module '@laconius/core' {
|
|
20
|
+
interface LaconiusCmsConfig {
|
|
21
|
+
/**
|
|
22
|
+
* Backend type code -> component. The key space is **open**, unlike `ui.components`: these
|
|
23
|
+
* keys are whatever the content catalog contains
|
|
24
|
+
* ([ADR-0007](../../../docs/adr/0007-two-registries-two-contracts.md)).
|
|
25
|
+
*/
|
|
26
|
+
components?: Record<string, CmsComponentMapping>;
|
|
27
|
+
/** Slot order per page template. Client configuration, not backend data. */
|
|
28
|
+
layouts?: Record<string, {
|
|
29
|
+
slots: string[];
|
|
30
|
+
}>;
|
|
31
|
+
/** Where a pressed CMS link goes. Without it, the default components warn and do nothing. */
|
|
32
|
+
onNavigate?: (target: CmsLinkTarget) => void;
|
|
33
|
+
}
|
|
34
|
+
interface LaconiusEndpoints {
|
|
35
|
+
cmsPages: string | Record<string, string>;
|
|
36
|
+
cmsPage: string | Record<string, string>;
|
|
37
|
+
cmsComponents: string | Record<string, string>;
|
|
38
|
+
cmsComponent: string | Record<string, string>;
|
|
39
|
+
}
|
|
40
|
+
interface LaconiusConverters {
|
|
41
|
+
cmsPage: unknown;
|
|
42
|
+
cmsComponent: unknown;
|
|
43
|
+
}
|
|
44
|
+
interface LaconiusAdapters {
|
|
45
|
+
cms: CmsAdapter;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The `default` scope is the user-scoped form, mandatory from 221121.7; `legacy` is selected by
|
|
50
|
+
* `capabilities.userScopedCms: false` ([chapter 03](../../../docs/spec/03-occ-layer.md)).
|
|
51
|
+
*/
|
|
52
|
+
export declare const defaultCmsEndpoints: {
|
|
53
|
+
cmsPages: {
|
|
54
|
+
default: string;
|
|
55
|
+
legacy: string;
|
|
56
|
+
};
|
|
57
|
+
cmsPage: {
|
|
58
|
+
default: string;
|
|
59
|
+
legacy: string;
|
|
60
|
+
};
|
|
61
|
+
cmsComponents: {
|
|
62
|
+
default: string;
|
|
63
|
+
legacy: string;
|
|
64
|
+
};
|
|
65
|
+
cmsComponent: {
|
|
66
|
+
default: string;
|
|
67
|
+
legacy: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Tier-1 content types. `@laconius/product`, `@laconius/cart` and `@laconius/user` register the
|
|
72
|
+
* ones that read their domain data, through this same chunk.
|
|
73
|
+
*/
|
|
74
|
+
export declare const defaultCmsComponents: Record<string, CmsComponentMapping>;
|
|
75
|
+
/**
|
|
76
|
+
* Slot order for the stock templates, ported from
|
|
77
|
+
* `core-libs/storefront/recipes/config/layout-config.ts:32` minus the web chrome slots (header,
|
|
78
|
+
* navigation, footer) — the app's chrome is native. `app-site.impex` adds its own templates at M7.
|
|
79
|
+
*/
|
|
80
|
+
export declare const defaultCmsLayouts: Record<string, {
|
|
81
|
+
slots: string[];
|
|
82
|
+
}>;
|
|
83
|
+
export declare const defaultCmsConfig: LaconiusConfigChunk;
|
|
84
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,cAAW,CAAC;AAQlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAU,CAAC;AAE9C,yGAAyG;AACzG,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC;AAEpE,OAAO,QAAQ,cAAc,CAAC;IAC5B,2FAA2F;IAC3F,UAAU,oBAAoB;QAC5B,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB;CACF;AAED,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,iBAAiB;QACzB;;;;WAIG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACjD,4EAA4E;QAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QAC9C,6FAA6F;QAC7F,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;KAC9C;IAED,UAAU,iBAAiB;QACzB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/C;IAED,UAAU,kBAAkB;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;KACvB;IAED,UAAU,gBAAgB;QACxB,GAAG,EAAE,UAAU,CAAC;KACjB;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;CAiB/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAWpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CASjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,mBAI9B,CAAC"}
|