@times-components/tracking 2.26.17 → 2.27.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 CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.27.0](https://github.com/newsuk/times-components/compare/@times-components/tracking@2.26.17...@times-components/tracking@2.27.0) (2025-11-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * **TMC-542:** Article page sections for utag_data ([#4238](https://github.com/newsuk/times-components/issues/4238)) ([06fc2ad](https://github.com/newsuk/times-components/commit/06fc2ad53bf44a1c8120393bd0c16fe5606b5622))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [2.26.17](https://github.com/newsuk/times-components/compare/@times-components/tracking@2.26.16...@times-components/tracking@2.26.17) (2025-11-20)
7
18
 
8
19
  **Note:** Version bump only for package @times-components/tracking
@@ -46,13 +46,17 @@ const withTrackingContext = (WrappedComponent, {
46
46
  action,
47
47
  attrs
48
48
  }) => {
49
+ const resolved = (0, _resolveAttrs.default)(getAttrs, this.props) || {};
50
+ const combinedAttrs = { ...resolved,
51
+ ...attrs
52
+ };
53
+ const pageSectionAttrs = Object.fromEntries(Object.entries(combinedAttrs).filter(([key]) => key.startsWith("page_section")));
49
54
  const decoratedEvent = {
50
55
  action,
51
- attrs: { ...(0, _resolveAttrs.default)(getAttrs, this.props),
52
- ...attrs
53
- },
56
+ attrs: combinedAttrs,
54
57
  component,
55
- object: trackingObjectName
58
+ object: trackingObjectName,
59
+ ...pageSectionAttrs
56
60
  };
57
61
 
58
62
  if (object || trackingObjectName) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@times-components/tracking",
3
- "version": "2.26.17",
3
+ "version": "2.27.0",
4
4
  "main": "dist/tracking",
5
5
  "dev": "src/tracking",
6
6
  "description": "Tracking",
@@ -36,7 +36,7 @@
36
36
  "@times-components/eslint-config-thetimes": "0.8.18",
37
37
  "@times-components/jest-configurator-web": "0.8.2",
38
38
  "@times-components/jest-serializer": "3.18.9",
39
- "@times-components/storybook": "4.16.17",
39
+ "@times-components/storybook": "4.16.18",
40
40
  "@times-components/tealium-utils": "0.9.1",
41
41
  "babel-jest": "24.8.0",
42
42
  "babel-loader": "8.0.5",
@@ -72,5 +72,5 @@
72
72
  "react-app/jest"
73
73
  ]
74
74
  },
75
- "gitHead": "8de922b4c21300c3d67b7b1ca31216ae0cf8d834"
75
+ "gitHead": "27d7929bc91bd0a59afdf88084830b42efd36378"
76
76
  }
package/rnw.js CHANGED
@@ -1 +1 @@
1
- module.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e){t.exports=require("react")},function(t,e){t.exports=require("react-display-name")},function(t,e){t.exports=require("hoist-non-react-statics")},function(t,e){t.exports=require("prop-types")},function(t,e){var n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/,i=/^\./,o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,s=/^\[object .+?Constructor\]$/,c="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,u=c||l||Function("return this")();var h,p=Array.prototype,d=Function.prototype,f=Object.prototype,v=u["__core-js_shared__"],y=(h=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+h:"",g=d.toString,m=f.hasOwnProperty,_=f.toString,b=RegExp("^"+g.call(m).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),w=u.Symbol,x=p.splice,k=D(u,"Map"),O=D(Object,"create"),E=w?w.prototype:void 0,T=E?E.toString:void 0;function S(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function j(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function C(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function N(t,e){for(var n,r,i=t.length;i--;)if((n=t[i][0])===(r=e)||n!=n&&r!=r)return i;return-1}function P(t,e){for(var i,o=0,a=(e=function(t,e){if(I(t))return!1;var i=typeof t;if("number"==i||"symbol"==i||"boolean"==i||null==t||q(t))return!0;return r.test(t)||!n.test(t)||null!=e&&t in Object(e)}(e,t)?[e]:I(i=e)?i:M(i)).length;null!=t&&o<a;)t=t[A(e[o++])];return o&&o==a?t:void 0}function $(t){return!(!R(t)||(e=t,y&&y in e))&&(function(t){var e=R(t)?_.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(t){}return e}(t)?b:s).test(function(t){if(null!=t){try{return g.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t));var e}function L(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function D(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return $(n)?n:void 0}S.prototype.clear=function(){this.__data__=O?O(null):{}},S.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},S.prototype.get=function(t){var e=this.__data__;if(O){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return m.call(e,t)?e[t]:void 0},S.prototype.has=function(t){var e=this.__data__;return O?void 0!==e[t]:m.call(e,t)},S.prototype.set=function(t,e){return this.__data__[t]=O&&void 0===e?"__lodash_hash_undefined__":e,this},j.prototype.clear=function(){this.__data__=[]},j.prototype.delete=function(t){var e=this.__data__,n=N(e,t);return!(n<0)&&(n==e.length-1?e.pop():x.call(e,n,1),!0)},j.prototype.get=function(t){var e=this.__data__,n=N(e,t);return n<0?void 0:e[n][1]},j.prototype.has=function(t){return N(this.__data__,t)>-1},j.prototype.set=function(t,e){var n=this.__data__,r=N(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},C.prototype.clear=function(){this.__data__={hash:new S,map:new(k||j),string:new S}},C.prototype.delete=function(t){return L(this,t).delete(t)},C.prototype.get=function(t){return L(this,t).get(t)},C.prototype.has=function(t){return L(this,t).has(t)},C.prototype.set=function(t,e){return L(this,t).set(t,e),this};var M=W((function(t){var e;t=null==(e=t)?"":function(t){if("string"==typeof t)return t;if(q(t))return T?T.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(e);var n=[];return i.test(t)&&n.push(""),t.replace(o,(function(t,e,r,i){n.push(r?i.replace(a,"$1"):e||t)})),n}));function A(t){if("string"==typeof t||q(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function W(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new(W.Cache||C),n}W.Cache=C;var I=Array.isArray;function R(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function q(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==_.call(t)}t.exports=function(t,e,n){var r=null==t?void 0:P(t,e);return void 0===r?n:r}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n.n(r),o=n(3),a=n.n(o),s=n(1),c=n.n(s),l=n(4),u=n.n(l),h=n(2),p=n.n(h),d={tracking:a.a.shape({analytics:a.a.func})},f=(t=(()=>({})),e={},n=[])=>"function"==typeof t?t(e,n):{};function v(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var y=(t,{getAttrs:e=(()=>({})),trackingObjectName:n="",isDataReady:o=(({isLoading:t})=>!t)}={})=>{const a=c()(t);class s extends r.Component{constructor(t,r){super(t,r),v(this,"fireAnalyticsEvent",({object:t,component:r,action:i,attrs:o})=>{const a={action:i,attrs:{...f(e,this.props),...o},component:r,object:n};(t||n)&&(a.object=t||n),this.isRootTrackingContext()&&(a.attrs.eventTime=(new Date).toISOString()),o&&o.isLocked&&(a.article_locked_status=o.isLocked),this.analyticsStream(a)});const{analyticsStream:i}=this.props;if(this.pageEventTriggered=!1,this.isRootTrackingContext()){if(!n)throw new TypeError("Missing argument trackingObjectName of withTrackingContext()");if(!i)throw new TypeError("Missing prop analyticsStream of WithTrackingContext")}}getChildContext(){return{tracking:{analytics:this.fireAnalyticsEvent}}}componentDidMount(){this.attemptTrackPageEvent(this.props)}componentDidUpdate(){this.attemptTrackPageEvent(this.props)}attemptTrackPageEvent(t){o(t)&&(this.isRootTrackingContext()||t.enforceTracking)&&!1===this.pageEventTriggered&&(this.pageEventTriggered=!0,this.fireAnalyticsEvent({action:"Viewed",attrs:f(e,t),component:"Page"}))}isRootTrackingContext(){const{tracking:t}=this.context;return!this.context||!t}analyticsStream(t){const{analyticsStream:e}=this.props,n=u()(this.context,"tracking.analytics")||e;return n&&n(t)}render(){return i.a.createElement(t,this.props)}}return v(s,"defaultProps",{...t.defaultProps}),s.displayName=`WithTrackingContext(${a})`,s.contextTypes=d,s.childContextTypes=d,p()(s,t),s};var g=(t,{analyticsEvents:e=[]}={})=>{const n=c()(t);((t,e)=>{const n=new Set;t.forEach((t,r)=>{if(void 0===t.eventName)throw new Error(`WithTrackEvents(${e}): Missing eventName at position ${r}, actionName ${t.actionName}`);if(void 0===t.actionName)throw new Error(`WithTrackEvents(${e}): Missing actionName at position ${r}, eventName ${t.eventName}`);if(n.has(t.eventName))throw new Error(`WithTrackEvents(${e}): Event ${t.eventName} was tracked multiple times`);n.add(t.eventName)})})(e,n);class o extends r.Component{get wrappedAnalyticsEvents(){const{tracking:t}=this.context;return this.wrapWithTracking(e,(e,r,i)=>t&&t.analytics({action:r,attrs:e,component:i||n}))}wrapWithTracking(t,e){return t.reduce((t,{eventName:n,actionName:r,getAttrs:i,trackingName:o})=>({...t,[n]:(...t)=>{const a=f(i,this.props,t);return e(a,r,o),this.props[n]&&this.props[n](...t)}}),{})}render(){const e={...this.props,...this.wrappedAnalyticsEvents};return i.a.createElement(t,e)}}return o.contextTypes=d,o.displayName=`WithTrackEvents(${n})`,o.defaultProps=t.defaultProps,p()(o,t),o};function m(){return(m=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var _=(t,{trackingName:e,getAttrs:n=(()=>({}))}={})=>{const o=c()(t);class a extends r.Component{constructor(t,e){super(t,e),this.receiveChildList=this.receiveChildList.bind(this),this.updateOnScroll=this.updateOnScroll.bind(this),this.childData={},this.isOnScroll=!1,this.viewed=new Set,"undefined"!=typeof window&&window.IntersectionObserver&&(this.observer=new window.IntersectionObserver(this.onObserved.bind(this),{root:null,rootMargin:"0px",threshold:.5})),this.childList=[]}componentDidMount(){window.addEventListener("scroll",this.updateOnScroll),this.observeChildren()}componentDidUpdate(){this.observeChildren()}componentWillUnmount(){window.removeEventListener("scroll",this.updateOnScroll),this.observer&&this.observer.disconnect()}onObserved(t=[]){const{tracking:e}=this.context;e&&t.forEach(({isIntersecting:t,target:e})=>{this.isOnScroll&&t&&!this.viewed.has(e.id)&&(this.viewed.add(e.id),this.onChildView(this.childData[e.id]))})}onChildView(t){const{tracking:r}=this.context;r.analytics({action:"Scrolled",attrs:{...f(n,t),scrollDepth:{itemNumber:t.index+1,name:t.name,total:t.total}},component:t.eventNavigationName?t.eventNavigationName:(e||o)+"Child"})}updateOnScroll(){this.isOnScroll=!0}receiveChildList(t){this.childList=t}observeChildren(){this.observer&&this.childList&&this.childList.forEach((t,e)=>{this.childData[t.elementId]||this.observeChild({...t,index:e,total:this.childList.length})})}observeChild(t){const e=document.getElementById(t.elementId);e&&(this.observer.observe(e),this.childData[t.elementId]=t)}render(){return i.a.createElement(t,m({},this.props,{receiveChildList:this.receiveChildList}))}}return a.contextTypes=d,a.displayName=`WithTrackScrollDepth(${o})`,a.defaultProps=t.defaultProps,p()(a,t),a};n.d(e,"withTrackingContext",(function(){return y})),n.d(e,"withTrackEvents",(function(){return g})),n.d(e,"withTrackScrollDepth",(function(){return _}))}]);
1
+ module.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e){t.exports=require("react")},function(t,e){t.exports=require("react-display-name")},function(t,e){t.exports=require("hoist-non-react-statics")},function(t,e){t.exports=require("prop-types")},function(t,e){var n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/,i=/^\./,o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,s=/^\[object .+?Constructor\]$/,c="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,u=c||l||Function("return this")();var h,p=Array.prototype,d=Function.prototype,f=Object.prototype,v=u["__core-js_shared__"],y=(h=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+h:"",g=d.toString,m=f.hasOwnProperty,_=f.toString,b=RegExp("^"+g.call(m).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),w=u.Symbol,x=p.splice,O=D(u,"Map"),k=D(Object,"create"),E=w?w.prototype:void 0,T=E?E.toString:void 0;function j(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function S(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function C(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function N(t,e){for(var n,r,i=t.length;i--;)if((n=t[i][0])===(r=e)||n!=n&&r!=r)return i;return-1}function P(t,e){for(var i,o=0,a=(e=function(t,e){if(I(t))return!1;var i=typeof t;if("number"==i||"symbol"==i||"boolean"==i||null==t||q(t))return!0;return r.test(t)||!n.test(t)||null!=e&&t in Object(e)}(e,t)?[e]:I(i=e)?i:M(i)).length;null!=t&&o<a;)t=t[A(e[o++])];return o&&o==a?t:void 0}function $(t){return!(!R(t)||(e=t,y&&y in e))&&(function(t){var e=R(t)?_.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(t){}return e}(t)?b:s).test(function(t){if(null!=t){try{return g.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t));var e}function L(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function D(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return $(n)?n:void 0}j.prototype.clear=function(){this.__data__=k?k(null):{}},j.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},j.prototype.get=function(t){var e=this.__data__;if(k){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return m.call(e,t)?e[t]:void 0},j.prototype.has=function(t){var e=this.__data__;return k?void 0!==e[t]:m.call(e,t)},j.prototype.set=function(t,e){return this.__data__[t]=k&&void 0===e?"__lodash_hash_undefined__":e,this},S.prototype.clear=function(){this.__data__=[]},S.prototype.delete=function(t){var e=this.__data__,n=N(e,t);return!(n<0)&&(n==e.length-1?e.pop():x.call(e,n,1),!0)},S.prototype.get=function(t){var e=this.__data__,n=N(e,t);return n<0?void 0:e[n][1]},S.prototype.has=function(t){return N(this.__data__,t)>-1},S.prototype.set=function(t,e){var n=this.__data__,r=N(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},C.prototype.clear=function(){this.__data__={hash:new j,map:new(O||S),string:new j}},C.prototype.delete=function(t){return L(this,t).delete(t)},C.prototype.get=function(t){return L(this,t).get(t)},C.prototype.has=function(t){return L(this,t).has(t)},C.prototype.set=function(t,e){return L(this,t).set(t,e),this};var M=W((function(t){var e;t=null==(e=t)?"":function(t){if("string"==typeof t)return t;if(q(t))return T?T.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(e);var n=[];return i.test(t)&&n.push(""),t.replace(o,(function(t,e,r,i){n.push(r?i.replace(a,"$1"):e||t)})),n}));function A(t){if("string"==typeof t||q(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function W(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new(W.Cache||C),n}W.Cache=C;var I=Array.isArray;function R(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function q(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==_.call(t)}t.exports=function(t,e,n){var r=null==t?void 0:P(t,e);return void 0===r?n:r}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n.n(r),o=n(3),a=n.n(o),s=n(1),c=n.n(s),l=n(4),u=n.n(l),h=n(2),p=n.n(h),d={tracking:a.a.shape({analytics:a.a.func})},f=(t=(()=>({})),e={},n=[])=>"function"==typeof t?t(e,n):{};function v(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var y=(t,{getAttrs:e=(()=>({})),trackingObjectName:n="",isDataReady:o=(({isLoading:t})=>!t)}={})=>{const a=c()(t);class s extends r.Component{constructor(t,r){super(t,r),v(this,"fireAnalyticsEvent",({object:t,component:r,action:i,attrs:o})=>{const a={...f(e,this.props)||{},...o},s=Object.fromEntries(Object.entries(a).filter(([t])=>t.startsWith("page_section"))),c={action:i,attrs:a,component:r,object:n,...s};(t||n)&&(c.object=t||n),this.isRootTrackingContext()&&(c.attrs.eventTime=(new Date).toISOString()),o&&o.isLocked&&(c.article_locked_status=o.isLocked),this.analyticsStream(c)});const{analyticsStream:i}=this.props;if(this.pageEventTriggered=!1,this.isRootTrackingContext()){if(!n)throw new TypeError("Missing argument trackingObjectName of withTrackingContext()");if(!i)throw new TypeError("Missing prop analyticsStream of WithTrackingContext")}}getChildContext(){return{tracking:{analytics:this.fireAnalyticsEvent}}}componentDidMount(){this.attemptTrackPageEvent(this.props)}componentDidUpdate(){this.attemptTrackPageEvent(this.props)}attemptTrackPageEvent(t){o(t)&&(this.isRootTrackingContext()||t.enforceTracking)&&!1===this.pageEventTriggered&&(this.pageEventTriggered=!0,this.fireAnalyticsEvent({action:"Viewed",attrs:f(e,t),component:"Page"}))}isRootTrackingContext(){const{tracking:t}=this.context;return!this.context||!t}analyticsStream(t){const{analyticsStream:e}=this.props,n=u()(this.context,"tracking.analytics")||e;return n&&n(t)}render(){return i.a.createElement(t,this.props)}}return v(s,"defaultProps",{...t.defaultProps}),s.displayName=`WithTrackingContext(${a})`,s.contextTypes=d,s.childContextTypes=d,p()(s,t),s};var g=(t,{analyticsEvents:e=[]}={})=>{const n=c()(t);((t,e)=>{const n=new Set;t.forEach((t,r)=>{if(void 0===t.eventName)throw new Error(`WithTrackEvents(${e}): Missing eventName at position ${r}, actionName ${t.actionName}`);if(void 0===t.actionName)throw new Error(`WithTrackEvents(${e}): Missing actionName at position ${r}, eventName ${t.eventName}`);if(n.has(t.eventName))throw new Error(`WithTrackEvents(${e}): Event ${t.eventName} was tracked multiple times`);n.add(t.eventName)})})(e,n);class o extends r.Component{get wrappedAnalyticsEvents(){const{tracking:t}=this.context;return this.wrapWithTracking(e,(e,r,i)=>t&&t.analytics({action:r,attrs:e,component:i||n}))}wrapWithTracking(t,e){return t.reduce((t,{eventName:n,actionName:r,getAttrs:i,trackingName:o})=>({...t,[n]:(...t)=>{const a=f(i,this.props,t);return e(a,r,o),this.props[n]&&this.props[n](...t)}}),{})}render(){const e={...this.props,...this.wrappedAnalyticsEvents};return i.a.createElement(t,e)}}return o.contextTypes=d,o.displayName=`WithTrackEvents(${n})`,o.defaultProps=t.defaultProps,p()(o,t),o};function m(){return(m=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var _=(t,{trackingName:e,getAttrs:n=(()=>({}))}={})=>{const o=c()(t);class a extends r.Component{constructor(t,e){super(t,e),this.receiveChildList=this.receiveChildList.bind(this),this.updateOnScroll=this.updateOnScroll.bind(this),this.childData={},this.isOnScroll=!1,this.viewed=new Set,"undefined"!=typeof window&&window.IntersectionObserver&&(this.observer=new window.IntersectionObserver(this.onObserved.bind(this),{root:null,rootMargin:"0px",threshold:.5})),this.childList=[]}componentDidMount(){window.addEventListener("scroll",this.updateOnScroll),this.observeChildren()}componentDidUpdate(){this.observeChildren()}componentWillUnmount(){window.removeEventListener("scroll",this.updateOnScroll),this.observer&&this.observer.disconnect()}onObserved(t=[]){const{tracking:e}=this.context;e&&t.forEach(({isIntersecting:t,target:e})=>{this.isOnScroll&&t&&!this.viewed.has(e.id)&&(this.viewed.add(e.id),this.onChildView(this.childData[e.id]))})}onChildView(t){const{tracking:r}=this.context;r.analytics({action:"Scrolled",attrs:{...f(n,t),scrollDepth:{itemNumber:t.index+1,name:t.name,total:t.total}},component:t.eventNavigationName?t.eventNavigationName:(e||o)+"Child"})}updateOnScroll(){this.isOnScroll=!0}receiveChildList(t){this.childList=t}observeChildren(){this.observer&&this.childList&&this.childList.forEach((t,e)=>{this.childData[t.elementId]||this.observeChild({...t,index:e,total:this.childList.length})})}observeChild(t){const e=document.getElementById(t.elementId);e&&(this.observer.observe(e),this.childData[t.elementId]=t)}render(){return i.a.createElement(t,m({},this.props,{receiveChildList:this.receiveChildList}))}}return a.contextTypes=d,a.displayName=`WithTrackScrollDepth(${o})`,a.defaultProps=t.defaultProps,p()(a,t),a};n.d(e,"withTrackingContext",(function(){return y})),n.d(e,"withTrackEvents",(function(){return g})),n.d(e,"withTrackScrollDepth",(function(){return _}))}]);