@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.
Files changed (28) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/lib/client.d.ts +1 -1
  3. package/lib/client.js +2 -2
  4. package/lib/client.js.map +1 -1
  5. package/lib/components/Flourish/index.js +3 -3
  6. package/lib/components/Flourish/index.js.map +1 -1
  7. package/lib/components/LiveBlogWrapper/index.js +1 -1
  8. package/lib/components/LiveBlogWrapper/index.js.map +1 -1
  9. package/lib/components/Topper/client/index.d.ts +2 -2
  10. package/lib/components/Topper/client/index.js +3 -3
  11. package/lib/components/Topper/client/index.js.map +1 -1
  12. package/lib/components/Topper/client/{flourish-tracking.d.ts → tracking.d.ts} +6 -3
  13. package/lib/components/Topper/client/{flourish-tracking.js → tracking.js} +12 -13
  14. package/lib/components/Topper/client/tracking.js.map +1 -0
  15. package/lib/components/Topper/{test/client/flourish-tracking.spec.js → client/tracking.spec.js} +7 -9
  16. package/lib/components/Topper/client/tracking.spec.js.map +1 -0
  17. package/package.json +2 -2
  18. package/src/client.ts +1 -1
  19. package/src/components/Flourish/index.tsx +1 -3
  20. package/src/components/Flourish/test/__snapshots__/snapshot.spec.tsx.snap +0 -6
  21. package/src/components/LiveBlogWrapper/index.tsx +1 -1
  22. package/src/components/Topper/client/index.ts +2 -2
  23. package/src/components/Topper/{test/client/flourish-tracking.spec.ts → client/tracking.spec.ts} +6 -9
  24. package/src/components/Topper/client/{flourish-tracking.ts → tracking.ts} +16 -11
  25. package/tsconfig.tsbuildinfo +1 -1
  26. package/lib/components/Topper/client/flourish-tracking.js.map +0 -1
  27. package/lib/components/Topper/test/client/flourish-tracking.spec.js.map +0 -1
  28. /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 { FlourishTopperTracker } from './components/Topper/client/index';
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.FlourishTopperTracker = exports.FlourishSSREmbed = exports.BackToTopButton = exports.Clip = void 0;
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, "FlourishTopperTracker", { enumerable: true, get: function () { return index_3.FlourishTopperTracker; } });
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,0DAAwE;AAA/D,8GAAA,qBAAqB,OAAA"}
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', "data-o-tracking-view": "true" },
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,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IAEpB,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,0BAEtC,MAAM;QAE1B,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;AA/ED,2BA+EC"}
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"],[data-component-type="flourish-topper"]',
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":"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"}
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 { FlourishTopperTracker } from './flourish-tracking';
2
- export { FlourishTopperTracker };
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.FlourishTopperTracker = void 0;
4
- const flourish_tracking_1 = require("./flourish-tracking");
5
- Object.defineProperty(exports, "FlourishTopperTracker", { enumerable: true, get: function () { return flourish_tracking_1.FlourishTopperTracker; } });
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,2DAA2D;AAElD,sGAFA,yCAAqB,OAEA"}
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 FlourishTopperTracker {
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 { FlourishTopperTracker };
17
+ export { TopperTracker };
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlourishTopperTracker = void 0;
4
- class FlourishTopperTracker {
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.component = document.querySelector('[data-component-type="flourish-topper"]');
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
- if (this.component) {
18
- this.dispatchEvent('mount');
19
- }
18
+ this.dispatchEvent('mount');
20
19
  this.observer = new IntersectionObserver(this.onChange.bind(this), {
21
- threshold: [1.0],
20
+ threshold: [0.75],
22
21
  });
23
22
  this.observer.observe(this.component);
24
23
  }
25
24
  dispatchEvent(action) {
26
- let component = {
27
- name: 'flourish-topper',
25
+ const component = {
26
+ name: this.type,
28
27
  id: this.id,
29
28
  };
30
29
  if (this.timeElapsedSeconds) {
31
- component = { ...component, timeElapsedSeconds: this.timeElapsedSeconds };
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.FlourishTopperTracker = FlourishTopperTracker;
69
- //# sourceMappingURL=flourish-tracking.js.map
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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"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const client_1 = require("../../client");
4
- // const CustomEventMock = jest.fn()
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 client_1.FlourishTopperTracker();
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 client_1.FlourishTopperTracker();
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 client_1.FlourishTopperTracker();
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 client_1.FlourishTopperTracker();
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=flourish-tracking.spec.js.map
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.13.0-beta.0",
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.1.4",
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 { FlourishTopperTracker } from './components/Topper/client/index'
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"],[data-component-type="flourish-topper"]',
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 { FlourishTopperTracker } from './flourish-tracking'
1
+ import { TopperTracker } from './tracking'
2
2
 
3
- export { FlourishTopperTracker }
3
+ export { TopperTracker }
@@ -1,9 +1,6 @@
1
- import { FlourishTopperTracker } from '../../client'
1
+ import { TopperTracker } from './index'
2
2
 
3
- // const CustomEventMock = jest.fn()
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 FlourishTopperTracker()
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 FlourishTopperTracker()
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 FlourishTopperTracker()
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 FlourishTopperTracker()
125
+ const tracker = new TopperTracker()
129
126
  tracker.init()
130
127
  tracker.disconnect()
131
128
 
@@ -1,17 +1,24 @@
1
- class FlourishTopperTracker {
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
- '[data-component-type="flourish-topper"]'
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
- if (this.component) {
26
- this.dispatchEvent('mount')
27
- }
32
+ this.dispatchEvent('mount')
28
33
 
29
34
  this.observer = new IntersectionObserver(this.onChange.bind(this), {
30
- threshold: [1.0],
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
- let component: object = {
37
- name: 'flourish-topper',
41
+ const component: Component = {
42
+ name: this.type,
38
43
  id: this.id,
39
44
  }
40
45
  if (this.timeElapsedSeconds) {
41
- component = { ...component, timeElapsedSeconds: this.timeElapsedSeconds }
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 { FlourishTopperTracker }
88
+ export { TopperTracker }