@financial-times/cp-content-pipeline-ui 6.13.0-beta.0 → 6.14.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 +22 -0
- package/lib/client.d.ts +1 -1
- package/lib/client.js +2 -2
- package/lib/client.js.map +1 -1
- package/lib/components/Flourish/index.js +3 -3
- package/lib/components/Flourish/index.js.map +1 -1
- package/lib/components/LiveBlogWrapper/index.js +1 -1
- package/lib/components/LiveBlogWrapper/index.js.map +1 -1
- package/lib/components/Topper/client/index.d.ts +2 -2
- package/lib/components/Topper/client/index.js +3 -3
- package/lib/components/Topper/client/index.js.map +1 -1
- package/lib/components/Topper/client/{flourish-tracking.d.ts → tracking.d.ts} +6 -3
- package/lib/components/Topper/client/{flourish-tracking.js → tracking.js} +12 -13
- package/lib/components/Topper/client/tracking.js.map +1 -0
- package/lib/components/Topper/{test/client/flourish-tracking.spec.js → client/tracking.spec.js} +7 -9
- package/lib/components/Topper/client/tracking.spec.js.map +1 -0
- package/package.json +2 -2
- package/src/client.ts +1 -1
- package/src/components/Flourish/index.tsx +1 -3
- package/src/components/Flourish/test/__snapshots__/snapshot.spec.tsx.snap +0 -6
- package/src/components/LiveBlogWrapper/index.tsx +1 -1
- package/src/components/Topper/client/index.ts +2 -2
- package/src/components/Topper/{test/client/flourish-tracking.spec.ts → client/tracking.spec.ts} +6 -9
- package/src/components/Topper/client/{flourish-tracking.ts → tracking.ts} +16 -11
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/components/Topper/client/flourish-tracking.js.map +0 -1
- package/lib/components/Topper/test/client/flourish-tracking.spec.js.map +0 -1
- /package/lib/components/Topper/{test/client/flourish-tracking.spec.d.ts → client/tracking.spec.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -574,6 +574,28 @@
|
|
|
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
|
+
## [6.14.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.13.0...cp-content-pipeline-ui-v6.14.0) (2024-07-16)
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
### Features
|
|
581
|
+
|
|
582
|
+
* tracking for flourish toppers ([4c19db6](https://github.com/Financial-Times/cp-content-pipeline/commit/4c19db61bf28e3a2f04c6eae8eb7344711076ea6))
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
### Bug Fixes
|
|
586
|
+
|
|
587
|
+
* decrease amount of element needed to be seen ([ba8264a](https://github.com/Financial-Times/cp-content-pipeline/commit/ba8264aa99c75a30db7b878c64766816d1464bdc))
|
|
588
|
+
* genericise class to be used on all toppers ([1021468](https://github.com/Financial-Times/cp-content-pipeline/commit/1021468cfdd6d1f75a1d7a45ec7f7c142da6f9a8))
|
|
589
|
+
* remove unneeded data attribute ([6ce8529](https://github.com/Financial-Times/cp-content-pipeline/commit/6ce8529588984839dccf21d29375450671ad2841))
|
|
590
|
+
* return at first opportunity ([508b07c](https://github.com/Financial-Times/cp-content-pipeline/commit/508b07c7af834b6f2d02d2644ec126da195201e3))
|
|
591
|
+
|
|
592
|
+
## [6.13.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.12.0...cp-content-pipeline-ui-v6.13.0) (2024-07-10)
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
### Features
|
|
596
|
+
|
|
597
|
+
* include capability to set several sources per image ([1fbd9e1](https://github.com/Financial-Times/cp-content-pipeline/commit/1fbd9e165f4c6e3136fb0a8f2317cfaba8fdb70d))
|
|
598
|
+
|
|
577
599
|
## [6.12.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v6.11.5...cp-content-pipeline-ui-v6.12.0) (2024-07-09)
|
|
578
600
|
|
|
579
601
|
|
package/lib/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as Clip } from './components/Clip/client/index';
|
|
2
2
|
export { default as BackToTopButton } from './components/BackToTopButton/client';
|
|
3
3
|
export { default as FlourishSSREmbed } from './components/Flourish/client/index';
|
|
4
|
-
export {
|
|
4
|
+
export { TopperTracker } from './components/Topper/client/index';
|
package/lib/client.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.TopperTracker = exports.FlourishSSREmbed = exports.BackToTopButton = exports.Clip = void 0;
|
|
7
7
|
var index_1 = require("./components/Clip/client/index");
|
|
8
8
|
Object.defineProperty(exports, "Clip", { enumerable: true, get: function () { return __importDefault(index_1).default; } });
|
|
9
9
|
var client_1 = require("./components/BackToTopButton/client");
|
|
@@ -11,5 +11,5 @@ Object.defineProperty(exports, "BackToTopButton", { enumerable: true, get: funct
|
|
|
11
11
|
var index_2 = require("./components/Flourish/client/index");
|
|
12
12
|
Object.defineProperty(exports, "FlourishSSREmbed", { enumerable: true, get: function () { return __importDefault(index_2).default; } });
|
|
13
13
|
var index_3 = require("./components/Topper/client/index");
|
|
14
|
-
Object.defineProperty(exports, "
|
|
14
|
+
Object.defineProperty(exports, "TopperTracker", { enumerable: true, get: function () { return index_3.TopperTracker; } });
|
|
15
15
|
//# sourceMappingURL=client.js.map
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgE;AAAvD,8GAAA,OAAO,OAAQ;AACxB,8DAAgF;AAAvE,0HAAA,OAAO,OAAmB;AACnC,4DAAgF;AAAvE,0HAAA,OAAO,OAAoB;AACpC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgE;AAAvD,8GAAA,OAAO,OAAQ;AACxB,8DAAgF;AAAvE,0HAAA,OAAO,OAAmB;AACnC,4DAAgF;AAAvE,0HAAA,OAAO,OAAoB;AACpC,0DAAgE;AAAvD,sGAAA,aAAa,OAAA"}
|
|
@@ -10,6 +10,8 @@ const DisclaimerNotice = ({ id }) => (react_1.default.createElement("div", { id:
|
|
|
10
10
|
react_1.default.createElement("div", { className: "o-message__content" },
|
|
11
11
|
react_1.default.createElement("p", { className: "o-message__content-main" }, "You are seeing a snapshot of an interactive graphic. This is most likely due to being offline or JavaScript being disabled in your browser.")))));
|
|
12
12
|
function Flourish({ id, flourishType, description, layoutWidth, fallbackImage, iFrame = false, inArticleBody = true, }) {
|
|
13
|
+
if (!id)
|
|
14
|
+
return null;
|
|
13
15
|
const anchorHref = `#${id}`;
|
|
14
16
|
const fullGrid = layoutWidth === 'full-grid' || layoutWidth === 'grid';
|
|
15
17
|
const figureClassnames = (0, classnames_1.default)({
|
|
@@ -27,13 +29,11 @@ function Flourish({ id, flourishType, description, layoutWidth, fallbackImage, i
|
|
|
27
29
|
aspectRatio: `${fallbackImage.width}/${fallbackImage.height}`,
|
|
28
30
|
}
|
|
29
31
|
: {};
|
|
30
|
-
if (!id)
|
|
31
|
-
return null;
|
|
32
32
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
33
33
|
'n-content-layout': inArticleBody,
|
|
34
34
|
flourish: iFrame,
|
|
35
35
|
'flourish--iFrame': iFrame,
|
|
36
|
-
}), "data-layout-width": fullGrid ? 'full-grid' : null, "data-component": "flourish", "data-component-id": id, "data-component-type": inArticleBody ? 'flourish-in-article' : 'flourish-topper'
|
|
36
|
+
}), "data-layout-width": fullGrid ? 'full-grid' : null, "data-component": "flourish", "data-component-id": id, "data-component-type": inArticleBody ? 'flourish-in-article' : 'flourish-topper' },
|
|
37
37
|
iFrame && (react_1.default.createElement("iframe", { src: `https://flo.uri.sh/visualisation/${id}/embed?hideTitle=${!inArticleBody}`, style: { width: '100%', aspectRatio: iframeAspectRatio }, className: "flourish__i-frame" })),
|
|
38
38
|
react_1.default.createElement("figure", { className: figureClassnames, "data-original-image-width": fullGrid ? fallbackImage?.width : null, "data-original-image-height": fullGrid ? fallbackImage?.height : null },
|
|
39
39
|
react_1.default.createElement("a", { href: anchorHref },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Flourish/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAAmC;AAqBnC,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CACpD,uCACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAC,mEAAmE,sBAC5D,WAAW;IAE5B,uCAAK,SAAS,EAAC,sBAAsB;QACnC,uCAAK,SAAS,EAAC,oBAAoB;YACjC,qCAAG,SAAS,EAAC,yBAAyB,kJAIlC,CACA,CACF,CACF,CACP,CAAA;AACD,SAAwB,QAAQ,CAAC,EAC/B,EAAE,EACF,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,MAAM,GAAG,KAAK,EACd,aAAa,GAAG,IAAI,GACN;IACd,MAAM,UAAU,GAAG,IAAI,EAAE,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,MAAM,CAAA;IACtE,MAAM,gBAAgB,GAAG,IAAA,oBAAU,EAAC;QAClC,mBAAmB,EAAE,IAAI;QACzB,6BAA6B,EAAE,IAAI;QACnC,yBAAyB,EAAE,QAAQ;QACnC,gBAAgB,EAAE,MAAM;KACzB,CAAC,CAAA;IAEF,MAAM,iBAAiB,GACrB,MAAM,IAAI,aAAa,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM;QACrD,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;QAClD,CAAC,CAAC,MAAM,CAAA;IAEZ,MAAM,gBAAgB,GACpB,CAAC,aAAa,IAAI,aAAa,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM;QAC7D,CAAC,CAAC;YACE,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;SAC9D;QACH,CAAC,CAAC,EAAE,CAAA;IAER,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Flourish/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAAmC;AAqBnC,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CACpD,uCACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAC,mEAAmE,sBAC5D,WAAW;IAE5B,uCAAK,SAAS,EAAC,sBAAsB;QACnC,uCAAK,SAAS,EAAC,oBAAoB;YACjC,qCAAG,SAAS,EAAC,yBAAyB,kJAIlC,CACA,CACF,CACF,CACP,CAAA;AACD,SAAwB,QAAQ,CAAC,EAC/B,EAAE,EACF,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,MAAM,GAAG,KAAK,EACd,aAAa,GAAG,IAAI,GACN;IACd,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,UAAU,GAAG,IAAI,EAAE,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,MAAM,CAAA;IACtE,MAAM,gBAAgB,GAAG,IAAA,oBAAU,EAAC;QAClC,mBAAmB,EAAE,IAAI;QACzB,6BAA6B,EAAE,IAAI;QACnC,yBAAyB,EAAE,QAAQ;QACnC,gBAAgB,EAAE,MAAM;KACzB,CAAC,CAAA;IAEF,MAAM,iBAAiB,GACrB,MAAM,IAAI,aAAa,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM;QACrD,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;QAClD,CAAC,CAAC,MAAM,CAAA;IAEZ,MAAM,gBAAgB,GACpB,CAAC,aAAa,IAAI,aAAa,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM;QAC7D,CAAC,CAAC;YACE,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;SAC9D;QACH,CAAC,CAAC,EAAE,CAAA;IAER,OAAO,CACL,uCACE,SAAS,EAAE,IAAA,oBAAU,EAAC;YACpB,kBAAkB,EAAE,aAAa;YACjC,QAAQ,EAAE,MAAM;YAChB,kBAAkB,EAAE,MAAM;SAC3B,CAAC,uBACiB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,oBACjC,UAAU,uBACN,EAAE,yBAEnB,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB;QAG1D,MAAM,IAAI,CACT,0CACE,GAAG,EAAE,oCAAoC,EAAE,oBAAoB,CAAC,aAAa,EAAE,EAC/E,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,EACxD,SAAS,EAAC,mBAAmB,GACrB,CACX;QACD,0CACE,SAAS,EAAE,gBAAgB,+BACA,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,gCACrC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI;YAEnE,qCAAG,IAAI,EAAE,UAAU;gBACjB,8DAGmB,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,sBACrC,EAAE,wBACA,YAAY;oBAEhC,8BAAC,gBAAgB,IAAC,EAAE,EAAE,EAAE,GAAI;oBAC5B,uCACE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,EAC7B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,gBAAgB,GACvB,CACM,CACR,CACG,CACL,CACP,CAAA;AACH,CAAC;AA7ED,2BA6EC"}
|
|
@@ -100,7 +100,7 @@ class BaseLiveBlogWrapper extends react_1.Component {
|
|
|
100
100
|
* @type {import('./post-tracker').PostTrackerConfig}
|
|
101
101
|
*/
|
|
102
102
|
const config = {
|
|
103
|
-
query: 'article[data-trackable="live-post"],article[data-trackable="pinned-post"]
|
|
103
|
+
query: 'article[data-trackable="live-post"],article[data-trackable="pinned-post"]',
|
|
104
104
|
minMillisecondsToReport: 5000,
|
|
105
105
|
returnVisibleElement: true,
|
|
106
106
|
observerUpdateEventString: 'LiveBlogWrapper.INSERT_POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogWrapper/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,kEAA+E;AAC/E,mDAA+C;AAC/C,mDAA+C;AAC/C,iDAA4C;AAC5C,kDAA8C;AAE9C,uDAAuD;AACvD,kCAAkC;AAClC,kHAAkH;AAElH,4FAA4F;AAC5F,MAAM,0BAA0B,GAAG,IAAA,2BAAW,EAAC;IAC7C,UAAU,CAAC,OAAY,EAAE,OAAY;QACnC,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,MAAM,iBAAiB,GAAG,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAA;YAChD,MAAM,oBAAoB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAC3C,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CAChD,CAAA;YACD,IAAI,CAAC,oBAAoB,EAAE;gBACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;gBACtC,IAAA,6BAAa,EAAC,OAAO,EAAE,6BAA6B,EAAE;oBACpD,IAAI,EAAE,iBAAiB;iBACxB,CAAC,CAAA;aACH;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAeF,MAAM,mBAAoB,SAAQ,iBAGjC;IAHD;;QAIE,UAAK,GAAyB,EAAE,CAAA;IA0JlC,CAAC;IAxJC,kBAAkB;QAChB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtE,IAAI,CAAC,KAAK,EAAE,CAAA;SACb;QACD,IACE,IAAI,CAAC,KAAK,CAAC,OAAO;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAChD;YACA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAA;YACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;SACtD;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;SAC7B;IACH,CAAC;IAED,KAAK;QACH,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAA;QAEpC,IAAI,CAAC,cAAc,EAAE;YACnB,OAAM;SACP;QAED,IACE,OAAO,gBAAgB,KAAK,UAAU;YACtC,OAAO,MAAM,KAAK,UAAU;YAC5B,OAAO,OAAO,KAAK,UAAU,EAC7B;YACA,sCAAsC;YACtC,OAAO,CAAC,KAAK,CACX,0FAA0F,CAC3F,CAAA;YACD,OAAM;SACP;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CACpC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,EACrC,IAAI,CAAC,KAAK,CAAC,EAAE,CACd,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC;YACZ,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAc,EAAE,EAAU;QAC1C;;WAEG;QACH,MAAM,MAAM,GAAG;YACb,KAAK,EACH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LiveBlogWrapper/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { TopperTracker } from './tracking';
|
|
2
|
+
export { TopperTracker };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
Object.defineProperty(exports, "
|
|
3
|
+
exports.TopperTracker = void 0;
|
|
4
|
+
const tracking_1 = require("./tracking");
|
|
5
|
+
Object.defineProperty(exports, "TopperTracker", { enumerable: true, get: function () { return tracking_1.TopperTracker; } });
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Topper/client/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Topper/client/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAEjC,8FAFA,wBAAa,OAEA"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
declare class
|
|
1
|
+
declare class TopperTracker {
|
|
2
2
|
private startTime;
|
|
3
3
|
private totalVisibleTime;
|
|
4
4
|
private timeElapsedSeconds;
|
|
5
|
+
private type;
|
|
5
6
|
private component;
|
|
6
7
|
private id;
|
|
7
8
|
private observer;
|
|
8
|
-
constructor(
|
|
9
|
+
constructor({ type }?: {
|
|
10
|
+
type?: string | undefined;
|
|
11
|
+
});
|
|
9
12
|
init(): void;
|
|
10
13
|
private dispatchEvent;
|
|
11
14
|
private onChange;
|
|
12
15
|
disconnect(): void;
|
|
13
16
|
}
|
|
14
|
-
export {
|
|
17
|
+
export { TopperTracker };
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
class
|
|
5
|
-
constructor() {
|
|
3
|
+
exports.TopperTracker = void 0;
|
|
4
|
+
class TopperTracker {
|
|
5
|
+
constructor({ type = 'flourish-topper' } = {}) {
|
|
6
6
|
this.startTime = 0;
|
|
7
7
|
this.totalVisibleTime = 0;
|
|
8
8
|
this.timeElapsedSeconds = null;
|
|
9
|
-
this.
|
|
9
|
+
this.type = type;
|
|
10
|
+
this.component = document.querySelector(`[data-component-type="${this.type}"]`);
|
|
10
11
|
this.id = this.component?.getAttribute('data-component-id') || null;
|
|
11
12
|
this.observer = null;
|
|
12
13
|
}
|
|
@@ -14,21 +15,19 @@ class FlourishTopperTracker {
|
|
|
14
15
|
if (!window.IntersectionObserver || !this.component) {
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
this.dispatchEvent('mount');
|
|
19
|
-
}
|
|
18
|
+
this.dispatchEvent('mount');
|
|
20
19
|
this.observer = new IntersectionObserver(this.onChange.bind(this), {
|
|
21
|
-
threshold: [
|
|
20
|
+
threshold: [0.75],
|
|
22
21
|
});
|
|
23
22
|
this.observer.observe(this.component);
|
|
24
23
|
}
|
|
25
24
|
dispatchEvent(action) {
|
|
26
|
-
|
|
27
|
-
name:
|
|
25
|
+
const component = {
|
|
26
|
+
name: this.type,
|
|
28
27
|
id: this.id,
|
|
29
28
|
};
|
|
30
29
|
if (this.timeElapsedSeconds) {
|
|
31
|
-
component =
|
|
30
|
+
component.timeElapsedSeconds = this.timeElapsedSeconds;
|
|
32
31
|
}
|
|
33
32
|
const event = new CustomEvent('oTracking.event', {
|
|
34
33
|
detail: {
|
|
@@ -65,5 +64,5 @@ class FlourishTopperTracker {
|
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
|
-
exports.
|
|
69
|
-
//# sourceMappingURL=
|
|
67
|
+
exports.TopperTracker = TopperTracker;
|
|
68
|
+
//# sourceMappingURL=tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../../../src/components/Topper/client/tracking.ts"],"names":[],"mappings":"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"}
|
package/lib/components/Topper/{test/client/flourish-tracking.spec.js → client/tracking.spec.js}
RENAMED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
// global.CustomEvent = CustomEventMock
|
|
6
|
-
describe('FlourishTopperTracker', () => {
|
|
3
|
+
const index_1 = require("./index");
|
|
4
|
+
describe('TopperTracker', () => {
|
|
7
5
|
let mockIntersectionObserver;
|
|
8
6
|
let mockObserve;
|
|
9
7
|
let mockUnobserve;
|
|
@@ -38,13 +36,13 @@ describe('FlourishTopperTracker', () => {
|
|
|
38
36
|
document.body.removeChild(mockComponent);
|
|
39
37
|
});
|
|
40
38
|
it('should initialise and observe the component', () => {
|
|
41
|
-
const tracker = new
|
|
39
|
+
const tracker = new index_1.TopperTracker();
|
|
42
40
|
tracker.init();
|
|
43
41
|
expect(mockIntersectionObserver).toHaveBeenCalled();
|
|
44
42
|
expect(mockObserve).toHaveBeenCalledWith(mockComponent);
|
|
45
43
|
});
|
|
46
44
|
it('should dispatch a mount event on intialisation', () => {
|
|
47
|
-
const tracker = new
|
|
45
|
+
const tracker = new index_1.TopperTracker();
|
|
48
46
|
tracker.init();
|
|
49
47
|
const mountEvent = dispatchEventSpy.mock.calls[0][0];
|
|
50
48
|
expect(mountEvent.type).toBe('oTracking.event');
|
|
@@ -58,7 +56,7 @@ describe('FlourishTopperTracker', () => {
|
|
|
58
56
|
});
|
|
59
57
|
});
|
|
60
58
|
it('should handle component visibility changes', () => {
|
|
61
|
-
const tracker = new
|
|
59
|
+
const tracker = new index_1.TopperTracker();
|
|
62
60
|
tracker.init();
|
|
63
61
|
const mockChanges = [
|
|
64
62
|
{
|
|
@@ -107,11 +105,11 @@ describe('FlourishTopperTracker', () => {
|
|
|
107
105
|
});
|
|
108
106
|
});
|
|
109
107
|
it('should disconnect the observer', () => {
|
|
110
|
-
const tracker = new
|
|
108
|
+
const tracker = new index_1.TopperTracker();
|
|
111
109
|
tracker.init();
|
|
112
110
|
tracker.disconnect();
|
|
113
111
|
expect(mockUnobserve).toHaveBeenCalledWith(mockComponent);
|
|
114
112
|
expect(mockDisconnect).toHaveBeenCalled();
|
|
115
113
|
});
|
|
116
114
|
});
|
|
117
|
-
//# sourceMappingURL=
|
|
115
|
+
//# sourceMappingURL=tracking.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.spec.js","sourceRoot":"","sources":["../../../../src/components/Topper/client/tracking.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@financial-times/cp-content-pipeline-ui",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.14.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@babel/preset-env": "^7.22.5",
|
|
17
17
|
"@babel/preset-react": "^7.22.5",
|
|
18
|
-
"@dotcom-tool-kit/npm": "^3.
|
|
18
|
+
"@dotcom-tool-kit/npm": "^3.3.2",
|
|
19
19
|
"@financial-times/content-tree": "github:financial-times/content-tree#14370e3",
|
|
20
20
|
"@financial-times/n-scrollytelling-image": "^1.1.0",
|
|
21
21
|
"@financial-times/o-colors": "^6.6.2",
|
package/src/client.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as Clip } from './components/Clip/client/index'
|
|
2
2
|
export { default as BackToTopButton } from './components/BackToTopButton/client'
|
|
3
3
|
export { default as FlourishSSREmbed } from './components/Flourish/client/index'
|
|
4
|
-
export {
|
|
4
|
+
export { TopperTracker } from './components/Topper/client/index'
|
|
@@ -46,6 +46,7 @@ export default function Flourish({
|
|
|
46
46
|
iFrame = false,
|
|
47
47
|
inArticleBody = true,
|
|
48
48
|
}: FlourishProps) {
|
|
49
|
+
if (!id) return null
|
|
49
50
|
const anchorHref = `#${id}`
|
|
50
51
|
const fullGrid = layoutWidth === 'full-grid' || layoutWidth === 'grid'
|
|
51
52
|
const figureClassnames = classnames({
|
|
@@ -68,8 +69,6 @@ export default function Flourish({
|
|
|
68
69
|
}
|
|
69
70
|
: {}
|
|
70
71
|
|
|
71
|
-
if (!id) return null
|
|
72
|
-
|
|
73
72
|
return (
|
|
74
73
|
<div
|
|
75
74
|
className={classnames({
|
|
@@ -83,7 +82,6 @@ export default function Flourish({
|
|
|
83
82
|
data-component-type={
|
|
84
83
|
inArticleBody ? 'flourish-in-article' : 'flourish-topper'
|
|
85
84
|
}
|
|
86
|
-
data-o-tracking-view="true"
|
|
87
85
|
>
|
|
88
86
|
{iFrame && (
|
|
89
87
|
<iframe
|
|
@@ -7,7 +7,6 @@ exports[`Flourish component renders ignoring layout different from full-grid 1`]
|
|
|
7
7
|
data-component="flourish"
|
|
8
8
|
data-component-id="123"
|
|
9
9
|
data-component-type="flourish-in-article"
|
|
10
|
-
data-o-tracking-view="true"
|
|
11
10
|
>
|
|
12
11
|
<figure
|
|
13
12
|
class="n-content-picture n-content-layout__container"
|
|
@@ -58,7 +57,6 @@ exports[`Flourish component renders with a full-grid layout and fallback image 1
|
|
|
58
57
|
data-component-id="123"
|
|
59
58
|
data-component-type="flourish-in-article"
|
|
60
59
|
data-layout-width="full-grid"
|
|
61
|
-
data-o-tracking-view="true"
|
|
62
60
|
>
|
|
63
61
|
<figure
|
|
64
62
|
class="n-content-picture n-content-layout__container n-content-picture--wide"
|
|
@@ -111,7 +109,6 @@ exports[`Flourish component renders with an iframe rather than using the embed s
|
|
|
111
109
|
data-component-id="123"
|
|
112
110
|
data-component-type="flourish-in-article"
|
|
113
111
|
data-layout-width="full-grid"
|
|
114
|
-
data-o-tracking-view="true"
|
|
115
112
|
>
|
|
116
113
|
<iframe
|
|
117
114
|
class="flourish__i-frame"
|
|
@@ -169,7 +166,6 @@ exports[`Flourish component renders without n-content-layout class for charts no
|
|
|
169
166
|
data-component-id="123"
|
|
170
167
|
data-component-type="flourish-topper"
|
|
171
168
|
data-layout-width="full-grid"
|
|
172
|
-
data-o-tracking-view="true"
|
|
173
169
|
>
|
|
174
170
|
<figure
|
|
175
171
|
class="n-content-picture n-content-layout__container n-content-picture--wide"
|
|
@@ -223,7 +219,6 @@ exports[`does not set aspect ratios when in article body 1`] = `
|
|
|
223
219
|
data-component-id="123"
|
|
224
220
|
data-component-type="flourish-in-article"
|
|
225
221
|
data-layout-width="full-grid"
|
|
226
|
-
data-o-tracking-view="true"
|
|
227
222
|
>
|
|
228
223
|
<figure
|
|
229
224
|
class="n-content-picture n-content-layout__container n-content-picture--wide"
|
|
@@ -276,7 +271,6 @@ exports[`sets the hideTitle param in the iframe url to true when not in article
|
|
|
276
271
|
data-component-id="123"
|
|
277
272
|
data-component-type="flourish-topper"
|
|
278
273
|
data-layout-width="full-grid"
|
|
279
|
-
data-o-tracking-view="true"
|
|
280
274
|
>
|
|
281
275
|
<iframe
|
|
282
276
|
class="flourish__i-frame"
|
|
@@ -111,7 +111,7 @@ class BaseLiveBlogWrapper extends Component<
|
|
|
111
111
|
*/
|
|
112
112
|
const config = {
|
|
113
113
|
query:
|
|
114
|
-
'article[data-trackable="live-post"],article[data-trackable="pinned-post"]
|
|
114
|
+
'article[data-trackable="live-post"],article[data-trackable="pinned-post"]',
|
|
115
115
|
minMillisecondsToReport: 5000,
|
|
116
116
|
returnVisibleElement: true,
|
|
117
117
|
observerUpdateEventString: 'LiveBlogWrapper.INSERT_POST',
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TopperTracker } from './tracking'
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { TopperTracker }
|
package/src/components/Topper/{test/client/flourish-tracking.spec.ts → client/tracking.spec.ts}
RENAMED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TopperTracker } from './index'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
// global.CustomEvent = CustomEventMock
|
|
5
|
-
|
|
6
|
-
describe('FlourishTopperTracker', () => {
|
|
3
|
+
describe('TopperTracker', () => {
|
|
7
4
|
let mockIntersectionObserver: jest.Mock
|
|
8
5
|
let mockObserve: jest.Mock
|
|
9
6
|
let mockUnobserve: jest.Mock
|
|
@@ -45,7 +42,7 @@ describe('FlourishTopperTracker', () => {
|
|
|
45
42
|
})
|
|
46
43
|
|
|
47
44
|
it('should initialise and observe the component', () => {
|
|
48
|
-
const tracker = new
|
|
45
|
+
const tracker = new TopperTracker()
|
|
49
46
|
tracker.init()
|
|
50
47
|
|
|
51
48
|
expect(mockIntersectionObserver).toHaveBeenCalled()
|
|
@@ -53,7 +50,7 @@ describe('FlourishTopperTracker', () => {
|
|
|
53
50
|
})
|
|
54
51
|
|
|
55
52
|
it('should dispatch a mount event on intialisation', () => {
|
|
56
|
-
const tracker = new
|
|
53
|
+
const tracker = new TopperTracker()
|
|
57
54
|
tracker.init()
|
|
58
55
|
|
|
59
56
|
const mountEvent = dispatchEventSpy.mock.calls[0][0] as CustomEvent
|
|
@@ -69,7 +66,7 @@ describe('FlourishTopperTracker', () => {
|
|
|
69
66
|
})
|
|
70
67
|
|
|
71
68
|
it('should handle component visibility changes', () => {
|
|
72
|
-
const tracker = new
|
|
69
|
+
const tracker = new TopperTracker()
|
|
73
70
|
tracker.init()
|
|
74
71
|
|
|
75
72
|
const mockChanges: IntersectionObserverEntry[] = [
|
|
@@ -125,7 +122,7 @@ describe('FlourishTopperTracker', () => {
|
|
|
125
122
|
})
|
|
126
123
|
|
|
127
124
|
it('should disconnect the observer', () => {
|
|
128
|
-
const tracker = new
|
|
125
|
+
const tracker = new TopperTracker()
|
|
129
126
|
tracker.init()
|
|
130
127
|
tracker.disconnect()
|
|
131
128
|
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
interface Component {
|
|
2
|
+
name: string
|
|
3
|
+
id: string | null
|
|
4
|
+
timeElapsedSeconds?: number
|
|
5
|
+
}
|
|
6
|
+
class TopperTracker {
|
|
2
7
|
private startTime: number
|
|
3
8
|
private totalVisibleTime: number
|
|
4
9
|
private timeElapsedSeconds: number | null
|
|
10
|
+
private type: string
|
|
5
11
|
private component: Element | null
|
|
6
12
|
private id: string | null
|
|
7
13
|
private observer: IntersectionObserver | null
|
|
8
14
|
|
|
9
|
-
constructor() {
|
|
15
|
+
constructor({ type = 'flourish-topper' } = {}) {
|
|
10
16
|
this.startTime = 0
|
|
11
17
|
this.totalVisibleTime = 0
|
|
12
18
|
this.timeElapsedSeconds = null
|
|
19
|
+
this.type = type
|
|
13
20
|
this.component = document.querySelector(
|
|
14
|
-
|
|
21
|
+
`[data-component-type="${this.type}"]`
|
|
15
22
|
)
|
|
16
23
|
this.id = this.component?.getAttribute('data-component-id') || null
|
|
17
24
|
this.observer = null
|
|
@@ -22,23 +29,21 @@ class FlourishTopperTracker {
|
|
|
22
29
|
return
|
|
23
30
|
}
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
this.dispatchEvent('mount')
|
|
27
|
-
}
|
|
32
|
+
this.dispatchEvent('mount')
|
|
28
33
|
|
|
29
34
|
this.observer = new IntersectionObserver(this.onChange.bind(this), {
|
|
30
|
-
threshold: [
|
|
35
|
+
threshold: [0.75],
|
|
31
36
|
})
|
|
32
37
|
this.observer.observe(this.component)
|
|
33
38
|
}
|
|
34
39
|
|
|
35
40
|
private dispatchEvent(action: string): void {
|
|
36
|
-
|
|
37
|
-
name:
|
|
41
|
+
const component: Component = {
|
|
42
|
+
name: this.type,
|
|
38
43
|
id: this.id,
|
|
39
44
|
}
|
|
40
45
|
if (this.timeElapsedSeconds) {
|
|
41
|
-
component =
|
|
46
|
+
component.timeElapsedSeconds = this.timeElapsedSeconds
|
|
42
47
|
}
|
|
43
48
|
const event = new CustomEvent('oTracking.event', {
|
|
44
49
|
detail: {
|
|
@@ -80,4 +85,4 @@ class FlourishTopperTracker {
|
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
export {
|
|
88
|
+
export { TopperTracker }
|