@flamingo-stack/openframe-frontend-core 0.0.766 → 0.0.767
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/dist/build/export-map.json +1 -1
- package/dist/{chunk-NJMZ3N7Q.cjs → chunk-7TJVYRHR.cjs} +5 -5
- package/dist/{chunk-X7ECVSVN.cjs → chunk-7ZU3AVEX.cjs} +11 -11
- package/dist/{chunk-F7R3U5EN.cjs → chunk-BXMDLQUA.cjs} +2 -2
- package/dist/{chunk-VRDHAR3X.cjs → chunk-FVH53QZJ.cjs} +100 -88
- package/dist/{chunk-7XFVUUVZ.cjs → chunk-GJ5DHDFQ.cjs} +2 -2
- package/dist/{chunk-JKQVKWLB.cjs → chunk-GQ7RGD4Y.cjs} +43 -43
- package/dist/{chunk-K3IHNXR4.cjs → chunk-I7A5MPXA.cjs} +3 -3
- package/dist/{chunk-VYYLYZUC.cjs → chunk-IKXUJUXC.cjs} +2 -2
- package/dist/{chunk-7VI7TOGI.cjs → chunk-JBJVUQVH.cjs} +134 -96
- package/dist/{chunk-JGWN6GH5.cjs → chunk-KHISVNNH.cjs} +4 -4
- package/dist/{chunk-WO3XO27C.cjs → chunk-M2UU3CWX.cjs} +3 -3
- package/dist/{chunk-INI4ADPT.cjs → chunk-MNIMYGFR.cjs} +13 -13
- package/dist/{chunk-NF3PBWDJ.cjs → chunk-NO2DEFAP.cjs} +43 -43
- package/dist/{chunk-UW7UWUZU.cjs → chunk-TPOLNGOW.cjs} +35 -35
- package/dist/{chunk-HNQRY6RU.cjs → chunk-UHDBMKJB.cjs} +3 -3
- package/dist/{chunk-7U3ELNGC.cjs → chunk-WEPIWJGR.cjs} +10 -10
- package/dist/{chunk-RTBYQWAV.cjs → chunk-XIXR6BHI.cjs} +27 -27
- package/dist/{cloud-tenants-U2KMEIO7.cjs → cloud-tenants-WXK5RDSY.cjs} +3 -3
- package/dist/components/case-studies/index.cjs +13 -13
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +18 -4
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/rich-markdown-runtime.d.ts +4 -1
- package/dist/components/embeds/rich-markdown-runtime.d.ts.map +1 -1
- package/dist/components/embeds/rich-markdown-runtime.js +6 -5
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/features/index.cjs +3 -3
- package/dist/components/features/walkthrough-video.d.ts.map +1 -1
- package/dist/components/features/walkthrough-video.js +3 -1
- package/dist/components/help-center-pages/index.cjs +58 -58
- package/dist/components/index.cjs +33 -33
- package/dist/components/meeting-scheduler/index.cjs +24 -24
- package/dist/components/navigation/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/product-demo/index.cjs +12 -12
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -1
- package/dist/components/ui/markdown/rich/embed-overrides.js +10 -1
- package/dist/{devices-2D3XSIIE.cjs → devices-UHHHTCJF.cjs} +4 -4
- package/dist/index.cjs +9 -7
- package/dist/{knowledge-AJ36PMK2.cjs → knowledge-TJKHM7W4.cjs} +3 -3
- package/dist/{logs-DNE44ACE.cjs → logs-B3KCCMPE.cjs} +11 -11
- package/dist/{policies-AJHSP6ZY.cjs → policies-ZTUIXSYZ.cjs} +7 -7
- package/dist/{scripts-4YO2QL36.cjs → scripts-FIFAHBS6.cjs} +8 -8
- package/dist/{software-update-KMI2EOO3.cjs → software-update-62PLASQU.cjs} +6 -6
- package/dist/utils/after-page-load.d.ts +8 -0
- package/dist/utils/after-page-load.d.ts.map +1 -0
- package/dist/utils/after-page-load.js +24 -0
- package/dist/utils/index.cjs +24 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/package.json +1 -1
- package/src/components/chat/index.ts +22 -5
- package/src/components/embeds/rich-markdown-runtime.tsx +10 -6
- package/src/components/features/walkthrough-video.tsx +8 -1
- package/src/components/ui/markdown/rich/embed-overrides.tsx +11 -1
- package/src/utils/after-page-load.ts +30 -0
- package/src/utils/index.ts +1 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkUHDBMKJBcjs = require('./chunk-UHDBMKJB.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkFVH53QZJcjs = require('./chunk-FVH53QZJ.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
var _chunkZV45VS6Kcjs = require('./chunk-ZV45VS6K.cjs');
|
|
@@ -37,7 +37,7 @@ function FaqDocumentPage({
|
|
|
37
37
|
onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _2 => _2.href]), () => ( "/")))
|
|
38
38
|
};
|
|
39
39
|
const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZV45VS6Kcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
40
|
-
|
|
40
|
+
_chunkUHDBMKJBcjs.FaqSection,
|
|
41
41
|
{
|
|
42
42
|
initialFaqs,
|
|
43
43
|
heading: null,
|
|
@@ -53,7 +53,7 @@ function FaqDocumentPage({
|
|
|
53
53
|
skeletonNav
|
|
54
54
|
}
|
|
55
55
|
) });
|
|
56
|
-
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
56
|
+
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkFVH53QZJcjs = require('./chunk-FVH53QZJ.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkCKR42OBKcjs = require('./chunk-CKR42OBK.cjs');
|
|
@@ -48,7 +48,7 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
|
|
|
48
48
|
] });
|
|
49
49
|
}
|
|
50
50
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
51
|
-
|
|
51
|
+
_chunkFVH53QZJcjs.EmbedViewerFrame,
|
|
52
52
|
{
|
|
53
53
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCKR42OBKcjs.GoogleSheetsIcon, { className: "h-5 w-5 shrink-0" }),
|
|
54
54
|
title: displayName,
|
|
@@ -83,7 +83,7 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
|
|
|
83
83
|
] });
|
|
84
84
|
}
|
|
85
85
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
86
|
-
|
|
86
|
+
_chunkFVH53QZJcjs.EmbedViewerFrame,
|
|
87
87
|
{
|
|
88
88
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM7ZSKWT3cjs.AdobePdfIcon, { className: "h-5 w-5 shrink-0" }),
|
|
89
89
|
title: displayName,
|
|
@@ -5,20 +5,20 @@ var _chunkRMUSPTJNcjs = require('./chunk-RMUSPTJN.cjs');
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkGJ5DHDFQcjs = require('./chunk-GJ5DHDFQ.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkFVH53QZJcjs = require('./chunk-FVH53QZJ.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
var _chunkZV45VS6Kcjs = require('./chunk-ZV45VS6K.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _chunkJBJVUQVHcjs = require('./chunk-JBJVUQVH.cjs');
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -152,14 +152,14 @@ function OnboardingGuidesCatalogView({
|
|
|
152
152
|
});
|
|
153
153
|
};
|
|
154
154
|
const source = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _6 => _6.source]), () => ( "openframe"));
|
|
155
|
-
const docSearch =
|
|
155
|
+
const docSearch = _chunkGJ5DHDFQcjs.useDocSearch.call(void 0, {
|
|
156
156
|
source,
|
|
157
157
|
baseRoute: basePath,
|
|
158
158
|
onNavigate: (path) => router.push(path),
|
|
159
159
|
tableIds: ["onboarding-guides"]
|
|
160
160
|
});
|
|
161
161
|
const defaultRenderCard = (guide) => {
|
|
162
|
-
const cta =
|
|
162
|
+
const cta = _chunkJBJVUQVHcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
|
|
163
163
|
type: "onboarding_guide",
|
|
164
164
|
slug: guide.slug,
|
|
165
165
|
basePath,
|
|
@@ -170,7 +170,7 @@ function OnboardingGuidesCatalogView({
|
|
|
170
170
|
const renderCardFn = _nullishCoalesce(renderCard, () => ( defaultRenderCard));
|
|
171
171
|
const preControls = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_CONTROLS_CLASS, children: [
|
|
172
172
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
173
|
-
|
|
173
|
+
_chunkGJ5DHDFQcjs.DocSearchBar,
|
|
174
174
|
{
|
|
175
175
|
placeholder: "Search onboarding guides, releases, case studies\u2026",
|
|
176
176
|
query: docSearch.query,
|
|
@@ -182,7 +182,7 @@ function OnboardingGuidesCatalogView({
|
|
|
182
182
|
}
|
|
183
183
|
),
|
|
184
184
|
(loading || sections.length > 0) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
185
|
-
|
|
185
|
+
_chunkFVH53QZJcjs.FilterPillRow,
|
|
186
186
|
{
|
|
187
187
|
label: "Section",
|
|
188
188
|
selectedValue: activeSection,
|
|
@@ -193,7 +193,7 @@ function OnboardingGuidesCatalogView({
|
|
|
193
193
|
)
|
|
194
194
|
] });
|
|
195
195
|
if (!loading && selfFetch && guidesRes.error) {
|
|
196
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
196
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
|
|
197
197
|
}
|
|
198
198
|
const view = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_VIEW_CLASS, children: [
|
|
199
199
|
preControls,
|
|
@@ -313,7 +313,7 @@ function OnboardingGuideDetailView({
|
|
|
313
313
|
slug,
|
|
314
314
|
guideEndpoint,
|
|
315
315
|
related = [],
|
|
316
|
-
MarkdownRenderer =
|
|
316
|
+
MarkdownRenderer = _chunkFVH53QZJcjs.RichMarkdownRenderer,
|
|
317
317
|
renderRelatedCard,
|
|
318
318
|
backHref,
|
|
319
319
|
backLabel = "Back to Getting Started",
|
|
@@ -325,7 +325,7 @@ function OnboardingGuideDetailView({
|
|
|
325
325
|
const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
|
|
326
326
|
const captions = _chunkYL6ZB2SRcjs.useCaptions.call(void 0, );
|
|
327
327
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
328
|
-
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
328
|
+
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
|
|
329
329
|
const url = initialData ? null : slug && guideEndpoint ? guideEndpoint(slug) : null;
|
|
330
330
|
const scoped = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
|
|
331
331
|
const {
|
|
@@ -343,7 +343,7 @@ function OnboardingGuideDetailView({
|
|
|
343
343
|
const backCfg = { label: backLabel, onClick: () => router.push(resolvedBackHref) };
|
|
344
344
|
const loading = scoped || !guide && isLoading;
|
|
345
345
|
if (!loading && (error || !guide)) {
|
|
346
|
-
return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
346
|
+
return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.LoadError, { message: "Guide not found.", onRetry: reload }));
|
|
347
347
|
}
|
|
348
348
|
const view = _nullishCoalesce(guide, () => ( EMPTY_ONBOARDING_GUIDE));
|
|
349
349
|
const { captionsUrl, highlightCaptionsUrl } = captions.forEntity("onboarding_guide", view);
|
|
@@ -351,7 +351,7 @@ function OnboardingGuideDetailView({
|
|
|
351
351
|
// worst), so it's the terminal fallback — no trailing `|| undefined` needed.
|
|
352
352
|
_chunk3LW5TD54cjs.buildOgPlaceholderUrl.call(void 0, _optionalChain([runtime, 'optionalAccess', _11 => _11.endpoints]), view.title, { aspect: "wide" });
|
|
353
353
|
const defaultRenderRelatedCard = (g) => {
|
|
354
|
-
const cta =
|
|
354
|
+
const cta = _chunkJBJVUQVHcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
|
|
355
355
|
type: "onboarding_guide",
|
|
356
356
|
slug: g.slug,
|
|
357
357
|
basePath,
|
|
@@ -361,7 +361,7 @@ function OnboardingGuideDetailView({
|
|
|
361
361
|
};
|
|
362
362
|
const renderRelatedCardFn = _nullishCoalesce(renderRelatedCard, () => ( defaultRenderRelatedCard));
|
|
363
363
|
const page = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkZV45VS6Kcjs.PageLayout, { title: view.title, loading, titleSize: "h1", titleWrap: true, backButton: backCfg, children: [
|
|
364
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
364
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.EntityTagBadges, { tags: view.onboarding_guide_tags }),
|
|
365
365
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
366
366
|
_chunkDGNBXZXTcjs.EntityAuthorCard,
|
|
367
367
|
{
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkWEPIWJGRcjs = require('./chunk-WEPIWJGR.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ var _chunkYRFWOJF4cjs = require('./chunk-YRFWOJF4.cjs');
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkUHDBMKJBcjs = require('./chunk-UHDBMKJB.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
@@ -26,7 +26,7 @@ var _chunkHNQRY6RUcjs = require('./chunk-HNQRY6RU.cjs');
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
var
|
|
29
|
+
var _chunkFVH53QZJcjs = require('./chunk-FVH53QZJ.cjs');
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
var _chunkZV45VS6Kcjs = require('./chunk-ZV45VS6K.cjs');
|
|
@@ -38,7 +38,7 @@ var _chunkXVFM6SJAcjs = require('./chunk-XVFM6SJA.cjs');
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
var
|
|
41
|
+
var _chunkJBJVUQVHcjs = require('./chunk-JBJVUQVH.cjs');
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -109,8 +109,8 @@ var _chunk65VVJSQZcjs = require('./chunk-65VVJSQZ.cjs');
|
|
|
109
109
|
var _jsxruntime = require('react/jsx-runtime');
|
|
110
110
|
var DEFAULT_ENDPOINT = "/api/releases";
|
|
111
111
|
var PAGER_ROW_CLASS = "flex w-full justify-center";
|
|
112
|
-
var DEFAULT_SEARCH_PARAM_KEY =
|
|
113
|
-
var DEFAULT_STATUS_PARAM_KEY =
|
|
112
|
+
var DEFAULT_SEARCH_PARAM_KEY = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.search;
|
|
113
|
+
var DEFAULT_STATUS_PARAM_KEY = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
|
|
114
114
|
var DEFAULT_PAGE_PARAM_KEY = "page";
|
|
115
115
|
function ReleaseRow({
|
|
116
116
|
release,
|
|
@@ -119,7 +119,7 @@ function ReleaseRow({
|
|
|
119
119
|
}) {
|
|
120
120
|
const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
|
|
121
121
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
122
|
-
const cta =
|
|
122
|
+
const cta = _chunkJBJVUQVHcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
|
|
123
123
|
type: "product_release",
|
|
124
124
|
slug: release.slug,
|
|
125
125
|
basePath,
|
|
@@ -179,7 +179,7 @@ function ProductReleasesView({
|
|
|
179
179
|
initialData
|
|
180
180
|
});
|
|
181
181
|
const isLoading = inScope || fetching;
|
|
182
|
-
|
|
182
|
+
_chunkWEPIWJGRcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _3 => _3.sync]), isLoading && !data);
|
|
183
183
|
const releases = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _4 => _4.data]), () => ( []));
|
|
184
184
|
const totalCount = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _5 => _5.count]), () => ( 0));
|
|
185
185
|
const totalPages = _chunkBLH2SFOOcjs.pageCount.call(void 0, totalCount, itemsPerPage);
|
|
@@ -198,10 +198,10 @@ function ProductReleasesView({
|
|
|
198
198
|
router.replace(`${pathname}?${params.toString()}`, { scroll: false });
|
|
199
199
|
};
|
|
200
200
|
if (error) {
|
|
201
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
201
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
|
|
202
202
|
}
|
|
203
203
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex w-full flex-col gap-[40px]", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[600px]", children: showEmpty ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[600px] items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
204
|
-
|
|
204
|
+
_chunkWEPIWJGRcjs.ListEmptyState,
|
|
205
205
|
{
|
|
206
206
|
isFiltered: hasActiveFilters,
|
|
207
207
|
filtered: {
|
|
@@ -314,7 +314,7 @@ function MediaGalleryStripSkeleton({
|
|
|
314
314
|
var _lucidereact = require('lucide-react');
|
|
315
315
|
|
|
316
316
|
|
|
317
|
-
var DefaultMarkdownRenderer =
|
|
317
|
+
var DefaultMarkdownRenderer = _chunkFVH53QZJcjs.RichMarkdownRenderer;
|
|
318
318
|
var CONTENT_STACK_CLASS = "space-y-6 content-md:space-y-8";
|
|
319
319
|
var RELEASE_TITLE_SKELETON_LINES = { phone: 7, md: 4, lg: 2 };
|
|
320
320
|
var METADATA_GRID_CLASS = "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4";
|
|
@@ -364,7 +364,7 @@ function ReleaseDetailPage({
|
|
|
364
364
|
}) {
|
|
365
365
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
366
366
|
const captions = _chunkYL6ZB2SRcjs.useCaptions.call(void 0, );
|
|
367
|
-
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
367
|
+
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
|
|
368
368
|
const seed = initialData == null ? void 0 : initialData;
|
|
369
369
|
const {
|
|
370
370
|
data: release,
|
|
@@ -470,7 +470,7 @@ function ReleaseDetailPage({
|
|
|
470
470
|
children: [
|
|
471
471
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CONTENT_STACK_CLASS, children: [
|
|
472
472
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
473
|
-
|
|
473
|
+
_chunkFVH53QZJcjs.EntityTagBadges,
|
|
474
474
|
{
|
|
475
475
|
tags: view.product_release_tags,
|
|
476
476
|
max: RELEASE_TAG_ROW_FOLD,
|
|
@@ -551,7 +551,7 @@ function ReleaseDetailPage({
|
|
|
551
551
|
] })
|
|
552
552
|
] }) }) }),
|
|
553
553
|
loading ? null : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
554
|
-
|
|
554
|
+
_chunkFVH53QZJcjs.ReleaseChangelogSection,
|
|
555
555
|
{
|
|
556
556
|
title: "Breaking Changes",
|
|
557
557
|
entries: breakingChanges || [],
|
|
@@ -563,7 +563,7 @@ function ReleaseDetailPage({
|
|
|
563
563
|
}
|
|
564
564
|
),
|
|
565
565
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
566
|
-
|
|
566
|
+
_chunkFVH53QZJcjs.ReleaseChangelogSection,
|
|
567
567
|
{
|
|
568
568
|
title: "Features Added",
|
|
569
569
|
entries: featuresAdded || [],
|
|
@@ -573,7 +573,7 @@ function ReleaseDetailPage({
|
|
|
573
573
|
}
|
|
574
574
|
),
|
|
575
575
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
576
|
-
|
|
576
|
+
_chunkFVH53QZJcjs.ReleaseChangelogSection,
|
|
577
577
|
{
|
|
578
578
|
title: "Bugs Fixed",
|
|
579
579
|
entries: bugFixed || [],
|
|
@@ -583,7 +583,7 @@ function ReleaseDetailPage({
|
|
|
583
583
|
}
|
|
584
584
|
),
|
|
585
585
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
586
|
-
|
|
586
|
+
_chunkFVH53QZJcjs.ReleaseChangelogSection,
|
|
587
587
|
{
|
|
588
588
|
title: "Improvements",
|
|
589
589
|
entries: improvements || [],
|
|
@@ -612,9 +612,9 @@ function ReleaseDetailPage({
|
|
|
612
612
|
return deliveryLoading ? (
|
|
613
613
|
// The loaded preview's frame, its height written into the markup (`fixedHeight`), so the tables'
|
|
614
614
|
// loading state takes the collapsed preview's place, toggle row included. Inert: nothing to open yet.
|
|
615
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { inert: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
615
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { inert: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.FadePreview, { fixedHeight: true, collapsedHeight: DELIVERY_PREVIEW_HEIGHT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DELIVERY_TABLES_STACK_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) }) }) })
|
|
616
616
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
617
|
-
|
|
617
|
+
_chunkFVH53QZJcjs.FadePreview,
|
|
618
618
|
{
|
|
619
619
|
hiddenCount: deliveryCount - 1,
|
|
620
620
|
collapsedHeight: DELIVERY_PREVIEW_HEIGHT,
|
|
@@ -878,7 +878,7 @@ function RoadmapGridSingle({
|
|
|
878
878
|
_chunkDGNBXZXTcjs.RoadmapCard,
|
|
879
879
|
{
|
|
880
880
|
item,
|
|
881
|
-
id:
|
|
881
|
+
id: _chunkJBJVUQVHcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
|
|
882
882
|
userVote: getVote(item.id),
|
|
883
883
|
onVote: (voteType) => onVote(item.id, voteType),
|
|
884
884
|
isVoting: votingTasks.has(item.id)
|
|
@@ -1013,7 +1013,7 @@ function RoadmapGrid({
|
|
|
1013
1013
|
);
|
|
1014
1014
|
}
|
|
1015
1015
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1016
|
-
|
|
1016
|
+
_chunkFVH53QZJcjs.Accordion,
|
|
1017
1017
|
{
|
|
1018
1018
|
type: "multiple",
|
|
1019
1019
|
value: expandedQuarters,
|
|
@@ -1023,13 +1023,13 @@ function RoadmapGrid({
|
|
|
1023
1023
|
const itemCount = _optionalChain([itemsByQuarter, 'access', _20 => _20[quarter], 'optionalAccess', _21 => _21.length]) || 0;
|
|
1024
1024
|
const isExpanded = expandedQuarters.includes(quarter);
|
|
1025
1025
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1026
|
-
|
|
1026
|
+
_chunkFVH53QZJcjs.AccordionItem,
|
|
1027
1027
|
{
|
|
1028
1028
|
value: quarter,
|
|
1029
1029
|
id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
|
|
1030
1030
|
className: "border-0",
|
|
1031
1031
|
children: [
|
|
1032
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1032
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:ml-auto [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0 [&>svg]:text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: QUARTER_HEAD_CLASS, children: [
|
|
1033
1033
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1034
1034
|
"h3",
|
|
1035
1035
|
{
|
|
@@ -1059,7 +1059,7 @@ function RoadmapGrid({
|
|
|
1059
1059
|
}
|
|
1060
1060
|
)
|
|
1061
1061
|
] }) }),
|
|
1062
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1062
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.AccordionContent, { className: "overflow-hidden pb-0 pt-4 data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1063
1063
|
RoadmapGridSingle,
|
|
1064
1064
|
{
|
|
1065
1065
|
items: itemsByQuarter[quarter],
|
|
@@ -1084,8 +1084,8 @@ function RoadmapGrid({
|
|
|
1084
1084
|
|
|
1085
1085
|
var DEFAULT_ENDPOINT3 = "/api/roadmap";
|
|
1086
1086
|
var SYNCED_LIST_CLASS = "flex w-full flex-col gap-[var(--spacing-system-lf)]";
|
|
1087
|
-
var DEFAULT_SEARCH_PARAM_KEY2 =
|
|
1088
|
-
var DEFAULT_STATUS_PARAM_KEY2 =
|
|
1087
|
+
var DEFAULT_SEARCH_PARAM_KEY2 = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.search;
|
|
1088
|
+
var DEFAULT_STATUS_PARAM_KEY2 = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.status;
|
|
1089
1089
|
function RoadmapView({
|
|
1090
1090
|
endpoint = DEFAULT_ENDPOINT3,
|
|
1091
1091
|
initialItems,
|
|
@@ -1109,18 +1109,18 @@ function RoadmapView({
|
|
|
1109
1109
|
});
|
|
1110
1110
|
const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _22 => _22.items]), () => ( []));
|
|
1111
1111
|
_chunkXVFM6SJAcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkXXJL5GY3cjs.STICKY_HEADER_OFFSET_PX });
|
|
1112
|
-
const syncInPage =
|
|
1112
|
+
const syncInPage = _chunkWEPIWJGRcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _23 => _23.sync]), isLoading && !data);
|
|
1113
1113
|
if (error) {
|
|
1114
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1114
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
|
|
1115
1115
|
}
|
|
1116
1116
|
if (isLoading && !data) {
|
|
1117
1117
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
|
|
1118
|
-
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1118
|
+
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.DataSyncLine, { loading: true }),
|
|
1119
1119
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridQuarterSkeleton, { showLeftMargin })
|
|
1120
1120
|
] });
|
|
1121
1121
|
}
|
|
1122
1122
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
|
|
1123
|
-
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1123
|
+
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.DataSyncLine, { sync: _optionalChain([data, 'optionalAccess', _24 => _24.sync]) }),
|
|
1124
1124
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1125
1125
|
RoadmapGrid,
|
|
1126
1126
|
{
|
|
@@ -1144,7 +1144,7 @@ var TABLE_FRAME_CLASS = `w-full ${_chunkDGNBXZXTcjs.CONTENT_CARD_SKELETON_FRAME_
|
|
|
1144
1144
|
var ROW_SEPARATOR_CLASS = "border-b border-ods-border last:border-b-0";
|
|
1145
1145
|
var DELIVERY_TABLE_SKELETON_ROWS = 5;
|
|
1146
1146
|
function DeliveryTableSkeleton() {
|
|
1147
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TABLE_FRAME_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: Array.from({ length: DELIVERY_TABLE_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1147
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TABLE_FRAME_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: Array.from({ length: DELIVERY_TABLE_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEPIWJGRcjs.DeliveryRowSkeleton, {}) }, i)) }) });
|
|
1148
1148
|
}
|
|
1149
1149
|
function DeliveryTable({ items, isLoading = false }) {
|
|
1150
1150
|
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliveryTableSkeleton, {});
|
|
@@ -1157,7 +1157,7 @@ function DeliveryTable({ items, isLoading = false }) {
|
|
|
1157
1157
|
// → `#delivery-<external_id>`; `useScrollToHash` in
|
|
1158
1158
|
// `delivery-lists.tsx` finds the row by id and scrolls. The
|
|
1159
1159
|
// outer wrapper here ONLY exists for the row separators.
|
|
1160
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1160
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEPIWJGRcjs.DeliveryRow, { item, id: _chunkJBJVUQVHcjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
|
|
1161
1161
|
)) }) });
|
|
1162
1162
|
}
|
|
1163
1163
|
|
|
@@ -1166,8 +1166,8 @@ function DeliveryTable({ items, isLoading = false }) {
|
|
|
1166
1166
|
|
|
1167
1167
|
var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
|
|
1168
1168
|
var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
|
|
1169
|
-
var DEFAULT_SEARCH_PARAM_KEY3 =
|
|
1170
|
-
var DEFAULT_TASK_TYPE_PARAM_KEY =
|
|
1169
|
+
var DEFAULT_SEARCH_PARAM_KEY3 = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.search;
|
|
1170
|
+
var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkJBJVUQVHcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
|
|
1171
1171
|
function DeliveryLists({
|
|
1172
1172
|
completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
|
|
1173
1173
|
inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
|
|
@@ -1242,18 +1242,18 @@ function DeliveryLists({
|
|
|
1242
1242
|
const filteredCompleted = _optionalChain([data, 'optionalAccess', _25 => _25.completed]) || [];
|
|
1243
1243
|
const filteredInProgress = _optionalChain([data, 'optionalAccess', _26 => _26.inProgress]) || [];
|
|
1244
1244
|
_chunkXVFM6SJAcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkXXJL5GY3cjs.STICKY_HEADER_OFFSET_PX });
|
|
1245
|
-
const syncInPage =
|
|
1245
|
+
const syncInPage = _chunkWEPIWJGRcjs.usePageDataSync.call(void 0, sync, isLoading && !data);
|
|
1246
1246
|
const showCompleted = true;
|
|
1247
1247
|
const showInProgress = true;
|
|
1248
1248
|
const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
|
|
1249
1249
|
const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
|
|
1250
1250
|
if (error) {
|
|
1251
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1251
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
|
|
1252
1252
|
}
|
|
1253
1253
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[40px]", children: [
|
|
1254
|
-
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1254
|
+
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.DataSyncLine, { sync, loading: isLoading && !data }),
|
|
1255
1255
|
!isLoading && !hasResults && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1256
|
-
|
|
1256
|
+
_chunkWEPIWJGRcjs.ListEmptyState,
|
|
1257
1257
|
{
|
|
1258
1258
|
isFiltered: hasActiveFilters,
|
|
1259
1259
|
filtered: {
|
|
@@ -1478,7 +1478,7 @@ function legalDocumentStampLabel(doc) {
|
|
|
1478
1478
|
}
|
|
1479
1479
|
var LEGAL_DOCUMENT_SKELETON_SECTIONS = 3;
|
|
1480
1480
|
function LegalDocumentSkeleton({ sections = LEGAL_DOCUMENT_SKELETON_SECTIONS }) {
|
|
1481
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the document", className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1481
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the document", className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.RichMarkdownRendererSkeleton, { title: true, sections }) });
|
|
1482
1482
|
}
|
|
1483
1483
|
function LegalDocumentPage({
|
|
1484
1484
|
docType,
|
|
@@ -1490,7 +1490,7 @@ function LegalDocumentPage({
|
|
|
1490
1490
|
emptyStateMessage: emptyStateMessageProp,
|
|
1491
1491
|
initialData = null,
|
|
1492
1492
|
apiEndpoint,
|
|
1493
|
-
MarkdownRenderer =
|
|
1493
|
+
MarkdownRenderer = _chunkFVH53QZJcjs.RichMarkdownRenderer,
|
|
1494
1494
|
documentsEndpoint,
|
|
1495
1495
|
backButton,
|
|
1496
1496
|
faq,
|
|
@@ -1521,7 +1521,7 @@ function LegalDocumentPage({
|
|
|
1521
1521
|
titleSize: "h1",
|
|
1522
1522
|
titleWrap: true,
|
|
1523
1523
|
children: [
|
|
1524
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1524
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.DataSyncLine, { sync: data ? { source: "github", syncedAt: data.lastSynced } : null, loading: isLoading }),
|
|
1525
1525
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 lg:flex-row lg:gap-10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex-1", isLoading && "w-full"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LegalDocumentSkeleton, {}) : error ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4 text-center", children: [
|
|
1526
1526
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rounded-lg border border-ods-error bg-ods-error-secondary p-6", children: [
|
|
1527
1527
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mb-2 text-ods-error", children: errorTitle }),
|
|
@@ -1541,11 +1541,11 @@ function LegalDocumentPage({
|
|
|
1541
1541
|
"for more information."
|
|
1542
1542
|
] })
|
|
1543
1543
|
] }) }) }) }) }),
|
|
1544
|
-
faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1544
|
+
faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUHDBMKJBcjs.FaqSection, { ..._chunkUHDBMKJBcjs.pageFaqProps.call(void 0, faqSlot) })
|
|
1545
1545
|
]
|
|
1546
1546
|
}
|
|
1547
1547
|
);
|
|
1548
|
-
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1548
|
+
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFVH53QZJcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
|
|
1549
1549
|
}
|
|
1550
1550
|
|
|
1551
1551
|
|