@financial-times/cp-content-pipeline-ui 9.11.0 → 9.12.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/CHANGELOG.md +20 -0
- package/lib/components/content-tree/Clip/components/ClipTag.d.ts +1 -0
- package/lib/components/content-tree/Clip/components/ClipTag.js +2 -2
- package/lib/components/content-tree/Clip/components/ClipTag.js.map +1 -1
- package/lib/components/content-tree/Clip/template/component.js +1 -1
- package/lib/components/content-tree/Clip/template/component.js.map +1 -1
- package/lib/components/content-tree/RecommendedList/index.js +6 -5
- package/lib/components/content-tree/RecommendedList/index.js.map +1 -1
- package/lib/components/content-tree/Workarounds.d.ts +1 -0
- package/package.json +3 -3
- package/src/components/content-tree/Clip/components/ClipTag.tsx +3 -0
- package/src/components/content-tree/Clip/template/component.tsx +1 -0
- package/src/components/content-tree/Clip/test/__snapshots__/snapshot.spec.tsx.snap +8 -0
- package/src/components/content-tree/RecommendedList/index.tsx +9 -10
- package/src/components/content-tree/Workarounds.ts +5 -5
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -574,6 +574,26 @@
|
|
|
574
574
|
* @financial-times/cp-content-pipeline-client bumped from ^3.7.2 to ^3.7.3
|
|
575
575
|
* @financial-times/cp-content-pipeline-schema bumped from ^2.10.1 to ^2.10.2
|
|
576
576
|
|
|
577
|
+
## [9.12.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.11.0...cp-content-pipeline-ui-v9.12.0) (2025-11-21)
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
### Features
|
|
581
|
+
|
|
582
|
+
* anchor links in clips ([f753082](https://github.com/Financial-Times/cp-content-pipeline/commit/f753082b61b1e5aa989cd1db901546eeee71fe83))
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
### Bug Fixes
|
|
586
|
+
|
|
587
|
+
* avoid fetching teaser data from RecommendedList resolver ([54bc53f](https://github.com/Financial-Times/cp-content-pipeline/commit/54bc53f9a40446667a9f93b85d710cd6a943157d))
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
### Dependencies
|
|
591
|
+
|
|
592
|
+
* The following workspace dependencies were updated
|
|
593
|
+
* devDependencies
|
|
594
|
+
* @financial-times/cp-content-pipeline-client bumped from ^4.20.0 to ^4.20.1
|
|
595
|
+
* @financial-times/cp-content-pipeline-schema bumped from ^3.19.0 to ^3.20.0
|
|
596
|
+
|
|
577
597
|
## [9.11.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.10.0...cp-content-pipeline-ui-v9.11.0) (2025-11-11)
|
|
578
598
|
|
|
579
599
|
|
|
@@ -7,7 +7,7 @@ exports.ClipTag = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const index_1 = require("./index");
|
|
9
9
|
const FixedAspectRatio_1 = require("../../../FixedAspectRatio/FixedAspectRatio");
|
|
10
|
-
const ClipTag = ({ id, dataLayout, description, poster, autoplay, noAudio, loop, muted, clip, credits, caption, accessibility, preload, noDescription = false, noInfoBox = false, noCaption = false, maxClipWidth = 0, dataTrackable, systemTitle, }) => {
|
|
10
|
+
const ClipTag = ({ id, dataLayout, description, poster, autoplay, noAudio, loop, muted, clip, credits, caption, accessibility, preload, noDescription = false, noInfoBox = false, noCaption = false, maxClipWidth = 0, dataTrackable, systemTitle, fragmentIdentifier, }) => {
|
|
11
11
|
const { pixelWidth, pixelHeight } = clip?.dataSource?.[0]
|
|
12
12
|
? clip.dataSource[0]
|
|
13
13
|
: { pixelWidth: 0, pixelHeight: 0 };
|
|
@@ -33,7 +33,7 @@ const ClipTag = ({ id, dataLayout, description, poster, autoplay, noAudio, loop,
|
|
|
33
33
|
return 0;
|
|
34
34
|
};
|
|
35
35
|
const lastVideoIndex = getLastVideoIndex();
|
|
36
|
-
return (react_1.default.createElement("div", { "data-cp-clip-layout": dataLayout, "data-cp-clip-poster": poster, "data-cp-clip-autoplay": autoplay, "data-cp-clip-no-audio": noAudio, "data-cp-clip-no-description": noDescription, "data-cp-clip-caption": caption, "data-cp-clip-no-info-box": noInfoBox, "data-cp-clip-no-caption": noCaption, "data-cp-clip-closed-caption": Boolean(accessibility?.captions?.[0]?.url), "data-cp-clip-loop": loop, className: "cp-clip", "data-trackable": dataTrackable, "data-o-component": "cp-clip", "data-cp-clip-id": id, "data-cp-clip-system-title": systemTitle },
|
|
36
|
+
return (react_1.default.createElement("div", { "data-cp-clip-layout": dataLayout, "data-cp-clip-poster": poster, "data-cp-clip-autoplay": autoplay, "data-cp-clip-no-audio": noAudio, "data-cp-clip-no-description": noDescription, "data-cp-clip-caption": caption, "data-cp-clip-no-info-box": noInfoBox, "data-cp-clip-no-caption": noCaption, "data-cp-clip-closed-caption": Boolean(accessibility?.captions?.[0]?.url), "data-cp-clip-loop": loop, className: "cp-clip", "data-trackable": dataTrackable, "data-o-component": "cp-clip", "data-cp-clip-id": id, "data-cp-clip-system-title": systemTitle, id: fragmentIdentifier },
|
|
37
37
|
!noInfoBox && react_1.default.createElement(index_1.VideoInfoBox, null),
|
|
38
38
|
react_1.default.createElement("div", { className: "cp-clip__video-container" },
|
|
39
39
|
react_1.default.createElement(FixedAspectRatio_1.FixedAspectRatio, { width: pixelWidth, height: pixelHeight, element: "video", className: "cp-clip__video", controls: true, controlsList: "nodownload noremoteplayback noplaybackrate", disablePictureInPicture: true, disableRemotePlayback: true, playsInline: true, muted: muted, loop: loop, poster: poster, preload: preload, id: `clip-${id}`, crossOrigin: "anonymous" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipTag.js","sourceRoot":"","sources":["../../../../../src/components/content-tree/Clip/components/ClipTag.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,mCAKgB;AAChB,iFAA6E;
|
|
1
|
+
{"version":3,"file":"ClipTag.js","sourceRoot":"","sources":["../../../../../src/components/content-tree/Clip/components/ClipTag.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const ClipComponent = ({ content, preset = 'full-player', preload = 'auto', maxC
|
|
|
40
40
|
}
|
|
41
41
|
return (react_1.default.createElement(components_1.ContentLayout, { dataLayout: content.dataLayout },
|
|
42
42
|
react_1.default.createElement(components_1.Container, { dataLayout: content.dataLayout },
|
|
43
|
-
react_1.default.createElement(components_1.ClipTag, { id: id, dataLayout: content.dataLayout, description: content.description ?? '', poster: posterAttribute, autoplay: content.autoplay, noAudio: noAudio, loop: content.loop, muted: content.muted, clip: clip, credits: content.credits ?? '', caption: content.caption ?? '', systemTitle: systemTitle, accessibility: accessibility, preload: preload, dataTrackable: "next-article-cp-clip", maxClipWidth: maxClipWidth }))));
|
|
43
|
+
react_1.default.createElement(components_1.ClipTag, { id: id, dataLayout: content.dataLayout, description: content.description ?? '', poster: posterAttribute, autoplay: content.autoplay, noAudio: noAudio, loop: content.loop, muted: content.muted, clip: clip, credits: content.credits ?? '', caption: content.caption ?? '', systemTitle: systemTitle, accessibility: accessibility, preload: preload, dataTrackable: "next-article-cp-clip", maxClipWidth: maxClipWidth, fragmentIdentifier: content.fragmentIdentifier ?? '' }))));
|
|
44
44
|
};
|
|
45
45
|
exports.default = ClipComponent;
|
|
46
46
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../../src/components/content-tree/Clip/template/component.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../../src/components/content-tree/Clip/template/component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,18 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
//HACK: worked around missing Teaser type by declaring a module x-teaser.d.ts
|
|
8
8
|
const x_teaser_1 = require("@financial-times/x-teaser");
|
|
9
|
-
const RecommendedList = ({ content
|
|
10
|
-
|
|
9
|
+
const RecommendedList = ({ content }) => {
|
|
10
|
+
const { heading, children } = content;
|
|
11
|
+
if (!children || children.length === 0) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
13
14
|
return (react_1.default.createElement("aside", { "aria-labelledby": "aside-label", className: "n-content-recommended-list", "data-component": "recommended-list" },
|
|
14
15
|
react_1.default.createElement("p", { className: "n-content-recommended-list__title o3-type-title-lg" }, heading),
|
|
15
|
-
react_1.default.createElement("div", { className: "n-content-recommended-list__teasers" },
|
|
16
|
-
prefLabel: teaser?.clientName,
|
|
16
|
+
react_1.default.createElement("div", { className: "n-content-recommended-list__teasers" }, children.map((child, index) => (react_1.default.createElement(x_teaser_1.Teaser, { key: child?.id || index, modifiers: ['stacked'], ...x_teaser_1.presets.SmallHeavy, ...child.teaser, metaPrefixText: 'By', metaLink: {
|
|
17
|
+
prefLabel: child.teaser?.clientName,
|
|
17
18
|
// clientName is a free form text field. Currently, there is no way to map it to an organisation
|
|
18
19
|
// from the annotations. For now, we're linking it to the article url.
|
|
19
20
|
// A property like isSponsoredBy could be added in future to support this properly.
|
|
20
|
-
url: teaser?.url,
|
|
21
|
+
url: child.teaser?.url,
|
|
21
22
|
} }))))));
|
|
22
23
|
};
|
|
23
24
|
exports.default = RecommendedList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/content-tree/RecommendedList/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,6EAA6E;AAC7E,wDAA2D;AAW3D,MAAM,eAAe,GAAmC,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/content-tree/RecommendedList/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,6EAA6E;AAC7E,wDAA2D;AAW3D,MAAM,eAAe,GAAmC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACtE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,4DACkB,aAAa,EAC7B,SAAS,EAAC,4BAA4B,oBACvB,kBAAkB;QAEjC,qCAAG,SAAS,EAAC,oDAAoD,IAC9D,OAAO,CACN;QACJ,uCAAK,SAAS,EAAC,qCAAqC,IACjD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,8BAAC,iBAAM,IACL,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,EACvB,SAAS,EAAE,CAAC,SAAS,CAAC,KAClB,kBAAO,CAAC,UAAU,KAClB,KAAK,CAAC,MAAM,EAChB,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE;gBACR,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU;gBACnC,gGAAgG;gBAChG,sEAAsE;gBACtE,mFAAmF;gBACnF,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;aACvB,GACD,CACH,CAAC,CACE,CACA,CACT,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,eAAe,CAAA"}
|
|
@@ -83,6 +83,7 @@ interface ClipSetReferences {
|
|
|
83
83
|
subtitle?: string;
|
|
84
84
|
publishedDate?: string;
|
|
85
85
|
clips?: Clip[];
|
|
86
|
+
fragmentIdentifier?: string | undefined;
|
|
86
87
|
}
|
|
87
88
|
export type ClipSet = PartialToMaybeDeep<ReadonlyArrays<(ContentTreeWorkarounds.OldClip | ContentTreeWorkarounds.ClipSet) & ClipSetReferences>>;
|
|
88
89
|
export type RawImage = ContentTreeWorkarounds.RawImage & {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@financial-times/cp-content-pipeline-ui",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.12.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"@babel/preset-env": "^7.22.5",
|
|
17
17
|
"@babel/preset-react": "^7.22.5",
|
|
18
18
|
"@financial-times/content-tree": "github:financial-times/content-tree#3f77ec4",
|
|
19
|
-
"@financial-times/cp-content-pipeline-client": "^4.20.
|
|
20
|
-
"@financial-times/cp-content-pipeline-schema": "^3.
|
|
19
|
+
"@financial-times/cp-content-pipeline-client": "^4.20.1",
|
|
20
|
+
"@financial-times/cp-content-pipeline-schema": "^3.20.0",
|
|
21
21
|
"@financial-times/cp-content-pipeline-styles": "^4.5.0",
|
|
22
22
|
"@financial-times/n-scrollytelling-image": "^1.1.0",
|
|
23
23
|
"@financial-times/o-grid": "^6.1.8",
|
|
@@ -29,6 +29,7 @@ interface ClipTagProps {
|
|
|
29
29
|
caption?: string
|
|
30
30
|
preload?: string
|
|
31
31
|
systemTitle?: string
|
|
32
|
+
fragmentIdentifier?: string //a unique identifier used to locate the component inside a page for features like scrolling to it
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export const ClipTag: React.FC<ClipTagProps> = ({
|
|
@@ -51,6 +52,7 @@ export const ClipTag: React.FC<ClipTagProps> = ({
|
|
|
51
52
|
maxClipWidth = 0,
|
|
52
53
|
dataTrackable,
|
|
53
54
|
systemTitle,
|
|
55
|
+
fragmentIdentifier,
|
|
54
56
|
}) => {
|
|
55
57
|
const { pixelWidth, pixelHeight } = clip?.dataSource?.[0]
|
|
56
58
|
? clip.dataSource[0]
|
|
@@ -104,6 +106,7 @@ export const ClipTag: React.FC<ClipTagProps> = ({
|
|
|
104
106
|
data-o-component="cp-clip"
|
|
105
107
|
data-cp-clip-id={id}
|
|
106
108
|
data-cp-clip-system-title={systemTitle}
|
|
109
|
+
id={fragmentIdentifier}
|
|
107
110
|
>
|
|
108
111
|
{!noInfoBox && <VideoInfoBox />}
|
|
109
112
|
<div className="cp-clip__video-container">
|
|
@@ -17,6 +17,7 @@ exports[`Clip Snapshot component rendered on server full-grid default render 1`]
|
|
|
17
17
|
data-o-component="cp-clip"
|
|
18
18
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
19
19
|
data-cp-clip-system-title=""
|
|
20
|
+
id=""
|
|
20
21
|
>
|
|
21
22
|
<div
|
|
22
23
|
data-o-component="o-expander"
|
|
@@ -87,6 +88,7 @@ exports[`Clip Snapshot component rendered on server full-grid render with attrib
|
|
|
87
88
|
data-o-component="cp-clip"
|
|
88
89
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
89
90
|
data-cp-clip-system-title=""
|
|
91
|
+
id=""
|
|
90
92
|
>
|
|
91
93
|
<div
|
|
92
94
|
data-o-component="o-expander"
|
|
@@ -188,6 +190,7 @@ exports[`Clip Snapshot component rendered on server in-line render 1`] = `
|
|
|
188
190
|
data-o-component="cp-clip"
|
|
189
191
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
190
192
|
data-cp-clip-system-title=""
|
|
193
|
+
id=""
|
|
191
194
|
>
|
|
192
195
|
<div
|
|
193
196
|
data-o-component="o-expander"
|
|
@@ -256,6 +259,7 @@ exports[`Clip Snapshot component rendered on server in-line render with attribut
|
|
|
256
259
|
data-o-component="cp-clip"
|
|
257
260
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
258
261
|
data-cp-clip-system-title=""
|
|
262
|
+
id=""
|
|
259
263
|
>
|
|
260
264
|
<div
|
|
261
265
|
data-o-component="o-expander"
|
|
@@ -361,6 +365,7 @@ exports[`Clip Snapshot component rendered on server mid-grid default render 1`]
|
|
|
361
365
|
data-o-component="cp-clip"
|
|
362
366
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
363
367
|
data-cp-clip-system-title=""
|
|
368
|
+
id=""
|
|
364
369
|
>
|
|
365
370
|
<div
|
|
366
371
|
data-o-component="o-expander"
|
|
@@ -436,6 +441,7 @@ exports[`Clip Snapshot component rendered on server mid-grid render with attribu
|
|
|
436
441
|
data-o-component="cp-clip"
|
|
437
442
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
438
443
|
data-cp-clip-system-title=""
|
|
444
|
+
id=""
|
|
439
445
|
>
|
|
440
446
|
<div
|
|
441
447
|
data-o-component="o-expander"
|
|
@@ -544,6 +550,7 @@ exports[`Clip Snapshot component rendered on server renders multiple video sourc
|
|
|
544
550
|
data-o-component="cp-clip"
|
|
545
551
|
data-cp-clip-id="84d7e1b0-e8b2-4ffc-a798-306f29dc9d52"
|
|
546
552
|
data-cp-clip-system-title=""
|
|
553
|
+
id=""
|
|
547
554
|
>
|
|
548
555
|
<div
|
|
549
556
|
data-o-component="o-expander"
|
|
@@ -655,6 +662,7 @@ exports[`Clip Snapshot component rendered on server supports new Origami images,
|
|
|
655
662
|
data-o-component="cp-clip"
|
|
656
663
|
data-cp-clip-id="localhost:8080/fakevideo.mpg"
|
|
657
664
|
data-cp-clip-system-title=""
|
|
665
|
+
id=""
|
|
658
666
|
>
|
|
659
667
|
<div
|
|
660
668
|
data-o-component="o-expander"
|
|
@@ -5,17 +5,16 @@ import { presets, Teaser } from '@financial-times/x-teaser'
|
|
|
5
5
|
import { ContentProps } from '../../types'
|
|
6
6
|
import type * as ComponentWorkarounds from '../Workarounds'
|
|
7
7
|
|
|
8
|
-
// Renders a Recommended teaser
|
|
8
|
+
// Renders a Recommended teaser componentx
|
|
9
9
|
// `<Teaser>` is imported from x-dash
|
|
10
10
|
// https://github.com/Financial-Times/x-dash/tree/main/components/x-teaser)
|
|
11
11
|
|
|
12
12
|
interface RecommendedListProps
|
|
13
13
|
extends ContentProps<ComponentWorkarounds.RecommendedList> {}
|
|
14
14
|
|
|
15
|
-
const RecommendedList: React.FC<RecommendedListProps> = ({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!teasers || teasers.length === 0) {
|
|
15
|
+
const RecommendedList: React.FC<RecommendedListProps> = ({ content }) => {
|
|
16
|
+
const { heading, children } = content
|
|
17
|
+
if (!children || children.length === 0) {
|
|
19
18
|
return null
|
|
20
19
|
}
|
|
21
20
|
|
|
@@ -29,19 +28,19 @@ const RecommendedList: React.FC<RecommendedListProps> = ({
|
|
|
29
28
|
{heading}
|
|
30
29
|
</p>
|
|
31
30
|
<div className="n-content-recommended-list__teasers">
|
|
32
|
-
{
|
|
31
|
+
{children.map((child, index) => (
|
|
33
32
|
<Teaser
|
|
34
|
-
key={
|
|
33
|
+
key={child?.id || index}
|
|
35
34
|
modifiers={['stacked']}
|
|
36
35
|
{...presets.SmallHeavy}
|
|
37
|
-
{...teaser}
|
|
36
|
+
{...child.teaser}
|
|
38
37
|
metaPrefixText={'By'}
|
|
39
38
|
metaLink={{
|
|
40
|
-
prefLabel: teaser?.clientName,
|
|
39
|
+
prefLabel: child.teaser?.clientName,
|
|
41
40
|
// clientName is a free form text field. Currently, there is no way to map it to an organisation
|
|
42
41
|
// from the annotations. For now, we're linking it to the article url.
|
|
43
42
|
// A property like isSponsoredBy could be added in future to support this properly.
|
|
44
|
-
url: teaser?.url,
|
|
43
|
+
url: child.teaser?.url,
|
|
45
44
|
}}
|
|
46
45
|
/>
|
|
47
46
|
))}
|
|
@@ -87,7 +87,7 @@ export type Teaser = PartialToMaybeDeep<
|
|
|
87
87
|
>
|
|
88
88
|
|
|
89
89
|
export type Recommended = PartialToMaybe<
|
|
90
|
-
ContentTreeWorkarounds.Recommended & {
|
|
90
|
+
ContentTreeWorkarounds.Recommended & {
|
|
91
91
|
teaser?: Teaser
|
|
92
92
|
}
|
|
93
93
|
>
|
|
@@ -95,11 +95,10 @@ ContentTreeWorkarounds.Recommended & {
|
|
|
95
95
|
export type RecommendedList = PartialToMaybe<
|
|
96
96
|
ReadonlyArrays<
|
|
97
97
|
Omit<ContentTree.RecommendedList, 'children'> & {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
teasers?: (Teaser | null)[]
|
|
99
|
+
children: Recommended[]
|
|
100
|
+
}
|
|
101
101
|
>
|
|
102
|
-
|
|
103
102
|
>
|
|
104
103
|
|
|
105
104
|
export type ImageSetPicture = PartialToMaybe<
|
|
@@ -181,6 +180,7 @@ interface ClipSetReferences {
|
|
|
181
180
|
subtitle?: string
|
|
182
181
|
publishedDate?: string
|
|
183
182
|
clips?: Clip[]
|
|
183
|
+
fragmentIdentifier?: string | undefined
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
export type ClipSet = PartialToMaybeDeep<
|