@phantomstudios/ft-lib 0.2.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/.babelrc +6 -0
- package/.eslintrc +58 -0
- package/.github/CODEOWNERS +1 -0
- package/.github/workflows/pr.yml +31 -0
- package/.github/workflows/release.yml +44 -0
- package/.nvmrc +1 -0
- package/.prettierignore +5 -0
- package/CODE_OF_CONDUCT.md +76 -0
- package/CONTRIBUTING.md +48 -0
- package/LICENSE +21 -0
- package/README.md +158 -0
- package/SUPPORT.md +4 -0
- package/jest.config.js +24 -0
- package/lib/FTTracking/index.d.ts +24 -0
- package/lib/FTTracking/index.d.ts.map +1 -0
- package/lib/FTTracking/index.js +69 -0
- package/lib/FTTracking/index.js.map +1 -0
- package/lib/consentMonitor/index.d.ts +19 -0
- package/lib/consentMonitor/index.d.ts.map +1 -0
- package/lib/consentMonitor/index.js +117 -0
- package/lib/consentMonitor/index.js.map +1 -0
- package/lib/gaTracker/index.d.ts +13 -0
- package/lib/gaTracker/index.d.ts.map +1 -0
- package/lib/gaTracker/index.js +120 -0
- package/lib/gaTracker/index.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -0
- package/lib/oTracker/index.d.ts +14 -0
- package/lib/oTracker/index.d.ts.map +1 -0
- package/lib/oTracker/index.js +114 -0
- package/lib/oTracker/index.js.map +1 -0
- package/lib/permutiveVideoUtils/index.d.ts +12 -0
- package/lib/permutiveVideoUtils/index.d.ts.map +1 -0
- package/lib/permutiveVideoUtils/index.js +59 -0
- package/lib/permutiveVideoUtils/index.js.map +1 -0
- package/lib/reactPlayerTracking/index.d.ts +30 -0
- package/lib/reactPlayerTracking/index.d.ts.map +1 -0
- package/lib/reactPlayerTracking/index.js +85 -0
- package/lib/reactPlayerTracking/index.js.map +1 -0
- package/lib/utils/attention.d.ts +20 -0
- package/lib/utils/attention.d.ts.map +1 -0
- package/lib/utils/attention.js +142 -0
- package/lib/utils/attention.js.map +1 -0
- package/lib/utils/cookies.d.ts +2 -0
- package/lib/utils/cookies.d.ts.map +1 -0
- package/lib/utils/cookies.js +14 -0
- package/lib/utils/cookies.js.map +1 -0
- package/lib/utils/getTrace.d.ts +6 -0
- package/lib/utils/getTrace.d.ts.map +1 -0
- package/lib/utils/getTrace.js +109 -0
- package/lib/utils/getTrace.js.map +1 -0
- package/lib/utils/intersectionObserverPolyfill.d.ts +1 -0
- package/lib/utils/intersectionObserverPolyfill.d.ts.map +1 -0
- package/lib/utils/intersectionObserverPolyfill.js +421 -0
- package/lib/utils/intersectionObserverPolyfill.js.map +1 -0
- package/lib/utils/scroll.d.ts +18 -0
- package/lib/utils/scroll.d.ts.map +1 -0
- package/lib/utils/scroll.js +75 -0
- package/lib/utils/scroll.js.map +1 -0
- package/lib/utils/yupValidator.d.ts +87 -0
- package/lib/utils/yupValidator.d.ts.map +1 -0
- package/lib/utils/yupValidator.js +189 -0
- package/lib/utils/yupValidator.js.map +1 -0
- package/lib/ytIframeTracking/index.d.ts +27 -0
- package/lib/ytIframeTracking/index.d.ts.map +1 -0
- package/lib/ytIframeTracking/index.js +165 -0
- package/lib/ytIframeTracking/index.js.map +1 -0
- package/package.json +75 -0
- package/src/FTTracking/index.ts +74 -0
- package/src/consentMonitor/index.ts +120 -0
- package/src/gaTracker/index.ts +136 -0
- package/src/index.ts +12 -0
- package/src/oTracker/index.ts +122 -0
- package/src/permutiveVideoUtils/index.ts +53 -0
- package/src/reactPlayerTracking/index.ts +105 -0
- package/src/types.d.ts +33 -0
- package/src/utils/attention.js +138 -0
- package/src/utils/cookies.js +9 -0
- package/src/utils/getTrace.js +122 -0
- package/src/utils/intersectionObserverPolyfill.js +470 -0
- package/src/utils/scroll.ts +94 -0
- package/src/utils/yupValidator.ts +205 -0
- package/src/ytIframeTracking/index.ts +210 -0
- package/test/index.test.tsx +63 -0
- package/tsconfig.json +26 -0
- package/tsconfig.test.json +6 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.consentMonitor = void 0;
|
|
7
|
+
var debug_1 = __importDefault(require("debug"));
|
|
8
|
+
var debug = (0, debug_1.default)("@phntms/ft-lib");
|
|
9
|
+
var DEFAULT_DEV_HOSTS = ["localhost", "phq", ".app", "preview"];
|
|
10
|
+
var consentMonitor = /** @class */ (function () {
|
|
11
|
+
function consentMonitor(hostname, devHosts) {
|
|
12
|
+
var _this = this;
|
|
13
|
+
this._consent = false;
|
|
14
|
+
this._isDevEnvironment = false;
|
|
15
|
+
this._isInitialized = false;
|
|
16
|
+
this.getCookieValue = function (name) { var _a; return ((_a = document.cookie.match("(^|;)\\s*" + name + "\\s*=\\s*([^;]+)")) === null || _a === void 0 ? void 0 : _a.pop()) || ""; };
|
|
17
|
+
this.init = function () {
|
|
18
|
+
_this.cookieConsentTest();
|
|
19
|
+
setInterval(_this.cookieConsentTest, 3000);
|
|
20
|
+
//Simulate cookie consent behaviour in non-prod environments
|
|
21
|
+
_this._devHosts.map(function (devHost) {
|
|
22
|
+
return _this._hostname.includes(devHost) && _this.setDevCookieHandler();
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
this.cookieConsentTest = function () {
|
|
26
|
+
if (window.permutive) {
|
|
27
|
+
if (!_this._isInitialized) {
|
|
28
|
+
if (_this.getCookieValue("FTConsent").includes("behaviouraladsOnsite%3Aon")) {
|
|
29
|
+
_this.permutiveConsentOn();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
_this.permutiveConsentOff();
|
|
33
|
+
}
|
|
34
|
+
_this._isInitialized = true;
|
|
35
|
+
}
|
|
36
|
+
else if (_this.getCookieValue("FTConsent").includes("behaviouraladsOnsite%3Aon") &&
|
|
37
|
+
!_this.consent) {
|
|
38
|
+
debug("setting permutive tracking consent: on");
|
|
39
|
+
_this.permutiveConsentOn();
|
|
40
|
+
}
|
|
41
|
+
else if (!_this.getCookieValue("FTConsent").includes("behaviouraladsOnsite%3Aon") &&
|
|
42
|
+
_this.consent) {
|
|
43
|
+
debug("setting permutive tracking consent: off");
|
|
44
|
+
_this.permutiveConsentOff();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
this.setDevCookieHandler = function () {
|
|
49
|
+
_this._isDevEnvironment = true;
|
|
50
|
+
debug("setting development environment from host match");
|
|
51
|
+
var oCookieMessage = document.getElementsByClassName("o-cookie-message")[0];
|
|
52
|
+
if (oCookieMessage) {
|
|
53
|
+
var onCookieMessageAct_1 = function () {
|
|
54
|
+
debug("setting development FT consent cookies");
|
|
55
|
+
document.cookie = "FTConsent=behaviouraladsOnsite%3Aon";
|
|
56
|
+
document.cookie = "FTCookieConsentGDPR=true";
|
|
57
|
+
oCookieMessage.removeEventListener("oCookieMessage.act", onCookieMessageAct_1, false);
|
|
58
|
+
};
|
|
59
|
+
oCookieMessage.addEventListener("oCookieMessage.act", onCookieMessageAct_1);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
this.permutiveConsentOn = function () {
|
|
63
|
+
window.permutive.consent({
|
|
64
|
+
opt_in: true,
|
|
65
|
+
token: "behaviouraladsOnsite:on",
|
|
66
|
+
});
|
|
67
|
+
_this._consent = true;
|
|
68
|
+
};
|
|
69
|
+
this.permutiveConsentOff = function () {
|
|
70
|
+
window.permutive.consent({ opt_in: false });
|
|
71
|
+
_this._consent = false;
|
|
72
|
+
};
|
|
73
|
+
if (Array.isArray(devHosts)) {
|
|
74
|
+
this._devHosts = devHosts.concat(DEFAULT_DEV_HOSTS);
|
|
75
|
+
}
|
|
76
|
+
else if (devHosts === undefined) {
|
|
77
|
+
this._devHosts = DEFAULT_DEV_HOSTS;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this._devHosts = DEFAULT_DEV_HOSTS;
|
|
81
|
+
this._devHosts.push(devHosts);
|
|
82
|
+
}
|
|
83
|
+
this._hostname = hostname || window.location.hostname;
|
|
84
|
+
this.init();
|
|
85
|
+
}
|
|
86
|
+
Object.defineProperty(consentMonitor.prototype, "consent", {
|
|
87
|
+
get: function () {
|
|
88
|
+
return this._consent;
|
|
89
|
+
},
|
|
90
|
+
enumerable: false,
|
|
91
|
+
configurable: true
|
|
92
|
+
});
|
|
93
|
+
Object.defineProperty(consentMonitor.prototype, "devHosts", {
|
|
94
|
+
get: function () {
|
|
95
|
+
return this._devHosts;
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
100
|
+
Object.defineProperty(consentMonitor.prototype, "isDevEnvironment", {
|
|
101
|
+
get: function () {
|
|
102
|
+
return this._isDevEnvironment;
|
|
103
|
+
},
|
|
104
|
+
enumerable: false,
|
|
105
|
+
configurable: true
|
|
106
|
+
});
|
|
107
|
+
Object.defineProperty(consentMonitor.prototype, "isInitialized", {
|
|
108
|
+
get: function () {
|
|
109
|
+
return this._isInitialized;
|
|
110
|
+
},
|
|
111
|
+
enumerable: false,
|
|
112
|
+
configurable: true
|
|
113
|
+
});
|
|
114
|
+
return consentMonitor;
|
|
115
|
+
}());
|
|
116
|
+
exports.consentMonitor = consentMonitor;
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consentMonitor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TrackingOptions } from "../FTTracking";
|
|
2
|
+
export declare class gaTracker {
|
|
3
|
+
options: TrackingOptions;
|
|
4
|
+
constructor(options: TrackingOptions);
|
|
5
|
+
GTMEventDispatcher(category: string, action: string, label: string): void;
|
|
6
|
+
GTMVirtualPageView(pageUrl: string, pageTitle: string): void;
|
|
7
|
+
GtagEventDispatcher(category: string, action: string, label: string): void;
|
|
8
|
+
addDataAttributesListener(): void;
|
|
9
|
+
setUpFTNavigationLinksTracking(): void;
|
|
10
|
+
setUpFTNavigationSearchTracking(category: string, action: string): void;
|
|
11
|
+
setupFooterLinksTracking(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKhD,qBAAa,SAAS;IACpB,OAAO,kBAAC;gBACI,OAAO,EAAE,eAAe;IAQ7B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAclE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQrD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQ1E,yBAAyB;IA4BzB,8BAA8B;IAc9B,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAmChE,wBAAwB;CAazB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gaTracker = void 0;
|
|
4
|
+
var yupValidator_1 = require("../utils/yupValidator");
|
|
5
|
+
var HEADER_CATEGORY = "Header";
|
|
6
|
+
var HEADER_SEARCH_ACTION = "Engagement - Search";
|
|
7
|
+
var gaTracker = /** @class */ (function () {
|
|
8
|
+
function gaTracker(options) {
|
|
9
|
+
this.options = options;
|
|
10
|
+
this.setUpFTNavigationLinksTracking();
|
|
11
|
+
this.addDataAttributesListener();
|
|
12
|
+
this.setUpFTNavigationSearchTracking(HEADER_CATEGORY, HEADER_SEARCH_ACTION);
|
|
13
|
+
this.setupFooterLinksTracking();
|
|
14
|
+
}
|
|
15
|
+
gaTracker.prototype.GTMEventDispatcher = function (category, action, label) {
|
|
16
|
+
(0, yupValidator_1.validateGTMCustomEvent)({ category: category, action: action, label: label });
|
|
17
|
+
//from channels - sets event categories on window on certain pages..replace?
|
|
18
|
+
if (category === "<category>" && window.gtmCategory) {
|
|
19
|
+
category = window.gtmCategory;
|
|
20
|
+
}
|
|
21
|
+
window.dataLayer.push({
|
|
22
|
+
event: "customEvent",
|
|
23
|
+
category: category,
|
|
24
|
+
action: action,
|
|
25
|
+
label: label,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
gaTracker.prototype.GTMVirtualPageView = function (pageUrl, pageTitle) {
|
|
29
|
+
window.dataLayer.push({
|
|
30
|
+
event: "virtualPageView",
|
|
31
|
+
pageUrl: pageUrl,
|
|
32
|
+
pageTitle: pageTitle,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
gaTracker.prototype.GtagEventDispatcher = function (category, action, label) {
|
|
36
|
+
(0, yupValidator_1.validateGTMCustomEvent)({ category: category, action: action, label: label });
|
|
37
|
+
window.gtag("event", action, {
|
|
38
|
+
event_category: category,
|
|
39
|
+
event_label: label,
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
gaTracker.prototype.addDataAttributesListener = function () {
|
|
43
|
+
var _this = this;
|
|
44
|
+
document.body.addEventListener("click", function (evt) {
|
|
45
|
+
//get nearest element with data-gadl attribute
|
|
46
|
+
var elm = evt.target.closest("[data-gadl]");
|
|
47
|
+
var gaEventString = elm === null || elm === void 0 ? void 0 : elm.getAttribute("data-gadl");
|
|
48
|
+
if (!gaEventString)
|
|
49
|
+
return;
|
|
50
|
+
var _a = gaEventString.split("|"), category = _a[0], action = _a[1], label = _a[2];
|
|
51
|
+
//TODO validate event fields
|
|
52
|
+
if (typeof window !== "undefined") {
|
|
53
|
+
//TBC - GTM customEvent tag vs standard UA event push?
|
|
54
|
+
if (_this.options.isCustomGTMEvent) {
|
|
55
|
+
_this.GTMEventDispatcher(category, action, label || window.location.pathname //use pathname if label section has not been defined
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
_this.GtagEventDispatcher(category, action, label || window.location.pathname);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
gaTracker.prototype.setUpFTNavigationLinksTracking = function () {
|
|
65
|
+
var FTNavigationLinks = Array.from(document.querySelectorAll(".o-header__drawer-menu-link"));
|
|
66
|
+
if (FTNavigationLinks) {
|
|
67
|
+
FTNavigationLinks.map(function (navLink) {
|
|
68
|
+
var trackingValue = "Header|Engagement - Hamburger|".concat(document.URL, " - ").concat(navLink.href);
|
|
69
|
+
navLink.setAttribute("data-gadl", trackingValue);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
gaTracker.prototype.setUpFTNavigationSearchTracking = function (category, action) {
|
|
74
|
+
var _this = this;
|
|
75
|
+
var searchForm = document.querySelector(".o-header__search-form");
|
|
76
|
+
if (searchForm) {
|
|
77
|
+
searchForm.addEventListener("submit", function (event) {
|
|
78
|
+
var _a;
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
var searchBarContent = (_a = document.querySelector(".o-header__search-term")) === null || _a === void 0 ? void 0 : _a.value;
|
|
81
|
+
if (typeof window !== "undefined") {
|
|
82
|
+
if (_this.options.isCustomGTMEvent) {
|
|
83
|
+
window.dataLayer.push({
|
|
84
|
+
event: "customEvent",
|
|
85
|
+
category: category,
|
|
86
|
+
action: "".concat(action, ": ").concat(searchBarContent),
|
|
87
|
+
label: window.location.pathname,
|
|
88
|
+
eventCallback: function () {
|
|
89
|
+
searchForm.submit();
|
|
90
|
+
},
|
|
91
|
+
eventTimeout: 2000,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
window.gtag("event", action, {
|
|
96
|
+
event_category: category,
|
|
97
|
+
event_label: searchBarContent,
|
|
98
|
+
event_callback: function () {
|
|
99
|
+
searchForm.submit();
|
|
100
|
+
},
|
|
101
|
+
event_timeout: 2000,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
gaTracker.prototype.setupFooterLinksTracking = function () {
|
|
109
|
+
var FTFooterLinks = Array.from(document.querySelectorAll(".o-footer__legal-links li a"));
|
|
110
|
+
if (FTFooterLinks) {
|
|
111
|
+
FTFooterLinks.forEach(function (footerLink) {
|
|
112
|
+
var trackingValue = "Footer|Click - Footer Nav - ".concat(footerLink.href, "|").concat(document.URL);
|
|
113
|
+
footerLink.setAttribute("data-gadl", trackingValue);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
return gaTracker;
|
|
118
|
+
}());
|
|
119
|
+
exports.gaTracker = gaTracker;
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { consentMonitor } from "./consentMonitor";
|
|
2
|
+
export { permutiveVideoUtils } from "./permutiveVideoUtils";
|
|
3
|
+
export { reactPlayerTracking } from "./reactPlayerTracking";
|
|
4
|
+
export { gaTracker } from "./gaTracker";
|
|
5
|
+
export { oTracker } from "./oTracker";
|
|
6
|
+
export { ytIframeTracking } from "./ytIframeTracking";
|
|
7
|
+
export { FTTracking, TrackingOptions } from "./FTTracking";
|
|
8
|
+
export { ConfigType, OrigamiEventType, GTMCustomEventType, } from "./utils/yupValidator";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FTTracking = exports.ytIframeTracking = exports.oTracker = exports.gaTracker = exports.reactPlayerTracking = exports.permutiveVideoUtils = exports.consentMonitor = void 0;
|
|
4
|
+
var consentMonitor_1 = require("./consentMonitor");
|
|
5
|
+
Object.defineProperty(exports, "consentMonitor", { enumerable: true, get: function () { return consentMonitor_1.consentMonitor; } });
|
|
6
|
+
var permutiveVideoUtils_1 = require("./permutiveVideoUtils");
|
|
7
|
+
Object.defineProperty(exports, "permutiveVideoUtils", { enumerable: true, get: function () { return permutiveVideoUtils_1.permutiveVideoUtils; } });
|
|
8
|
+
var reactPlayerTracking_1 = require("./reactPlayerTracking");
|
|
9
|
+
Object.defineProperty(exports, "reactPlayerTracking", { enumerable: true, get: function () { return reactPlayerTracking_1.reactPlayerTracking; } });
|
|
10
|
+
var gaTracker_1 = require("./gaTracker");
|
|
11
|
+
Object.defineProperty(exports, "gaTracker", { enumerable: true, get: function () { return gaTracker_1.gaTracker; } });
|
|
12
|
+
var oTracker_1 = require("./oTracker");
|
|
13
|
+
Object.defineProperty(exports, "oTracker", { enumerable: true, get: function () { return oTracker_1.oTracker; } });
|
|
14
|
+
var ytIframeTracking_1 = require("./ytIframeTracking");
|
|
15
|
+
Object.defineProperty(exports, "ytIframeTracking", { enumerable: true, get: function () { return ytIframeTracking_1.ytIframeTracking; } });
|
|
16
|
+
var FTTracking_1 = require("./FTTracking");
|
|
17
|
+
Object.defineProperty(exports, "FTTracking", { enumerable: true, get: function () { return FTTracking_1.FTTracking; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,2CAA2D;AAAlD,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TrackingOptions } from "../FTTracking";
|
|
2
|
+
import { ConfigType, OrigamiEventType } from "../utils/yupValidator";
|
|
3
|
+
export declare class oTracker {
|
|
4
|
+
private _config;
|
|
5
|
+
options: TrackingOptions;
|
|
6
|
+
constructor(config: ConfigType, options: TrackingOptions);
|
|
7
|
+
set config(c: ConfigType);
|
|
8
|
+
get config(): ConfigType;
|
|
9
|
+
eventDispatcher(detail: OrigamiEventType): void;
|
|
10
|
+
broadcastPageView(): void;
|
|
11
|
+
broadcastBrandedContent(): void;
|
|
12
|
+
OTrackingHandler(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAIL,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAK/B,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;gBAEb,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;IA4BxD,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,EAEvB;IACD,IAAI,MAAM,IAHI,UAAU,CAKvB;IAEM,eAAe,CAAC,MAAM,EAAE,gBAAgB;IAaxC,iBAAiB;IAQjB,uBAAuB;IAa9B,gBAAgB;CAgCjB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.oTracker = void 0;
|
|
18
|
+
var o_tracking_1 = __importDefault(require("@financial-times/o-tracking"));
|
|
19
|
+
var cookies_1 = require("../utils/cookies");
|
|
20
|
+
var getTrace_1 = __importDefault(require("../utils/getTrace"));
|
|
21
|
+
var yupValidator_1 = require("../utils/yupValidator");
|
|
22
|
+
/* oTracking setup for server-rendered (i.e. Wagtail) sites
|
|
23
|
+
The config object is read from the server-rendered o-tracking-data element
|
|
24
|
+
*/
|
|
25
|
+
var oTracker = /** @class */ (function () {
|
|
26
|
+
function oTracker(config, options) {
|
|
27
|
+
this._config = (0, yupValidator_1.parseConfig)(config);
|
|
28
|
+
(0, yupValidator_1.validateConfig)(this._config);
|
|
29
|
+
this._config.source_id = o_tracking_1.default.getRootID();
|
|
30
|
+
this.options = options;
|
|
31
|
+
//init config data
|
|
32
|
+
var configData = {
|
|
33
|
+
server: "https://spoor-api.ft.com/px.gif",
|
|
34
|
+
context: __assign({}, this._config),
|
|
35
|
+
user: {
|
|
36
|
+
ft_session: (0, cookies_1.getValueFromCookie)(/FTSession=([^;]+)/),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
o_tracking_1.default.init(configData);
|
|
40
|
+
//setup listeners
|
|
41
|
+
this.OTrackingHandler();
|
|
42
|
+
//send Origami DomLoaded event
|
|
43
|
+
//document.dispatchEvent(new CustomEvent("o.DOMContentLoaded")); //TODO this isnt needed on next and breaks the cookie-message eventhandlers - is it needed for the server sites?
|
|
44
|
+
//send page hits
|
|
45
|
+
this.broadcastPageView();
|
|
46
|
+
this.broadcastBrandedContent();
|
|
47
|
+
}
|
|
48
|
+
Object.defineProperty(oTracker.prototype, "config", {
|
|
49
|
+
get: function () {
|
|
50
|
+
return this._config;
|
|
51
|
+
},
|
|
52
|
+
set: function (c) {
|
|
53
|
+
this._config = c;
|
|
54
|
+
},
|
|
55
|
+
enumerable: false,
|
|
56
|
+
configurable: true
|
|
57
|
+
});
|
|
58
|
+
oTracker.prototype.eventDispatcher = function (detail) {
|
|
59
|
+
if (typeof detail === "object" && detail.category && detail.action) {
|
|
60
|
+
(0, yupValidator_1.validateOrigamiEvent)(detail);
|
|
61
|
+
detail.app = this.config.app;
|
|
62
|
+
detail.product = this.config.product;
|
|
63
|
+
document.body.dispatchEvent(new CustomEvent("oTracking.event", { detail: detail, bubbles: true }));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw "Invalid event type";
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
oTracker.prototype.broadcastPageView = function () {
|
|
70
|
+
o_tracking_1.default.page({
|
|
71
|
+
app: this.config.app,
|
|
72
|
+
product: this.config.product,
|
|
73
|
+
title: document.title,
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
oTracker.prototype.broadcastBrandedContent = function () {
|
|
77
|
+
document.body.dispatchEvent(new CustomEvent("oTracking.event", {
|
|
78
|
+
detail: __assign(__assign({}, this.config), { action: "view", category: "brandedContent" }),
|
|
79
|
+
bubbles: true,
|
|
80
|
+
}));
|
|
81
|
+
};
|
|
82
|
+
oTracker.prototype.OTrackingHandler = function () {
|
|
83
|
+
var _this = this;
|
|
84
|
+
document.body.addEventListener("click", function (event) {
|
|
85
|
+
var trackableElement = event
|
|
86
|
+
.composedPath()
|
|
87
|
+
.find(function (elm) {
|
|
88
|
+
return elm instanceof HTMLElement &&
|
|
89
|
+
elm.hasAttribute &&
|
|
90
|
+
elm.hasAttribute("data-o-event");
|
|
91
|
+
});
|
|
92
|
+
if (trackableElement && trackableElement instanceof HTMLElement) {
|
|
93
|
+
var data = trackableElement.getAttribute("data-o-event");
|
|
94
|
+
var detail_1 = {};
|
|
95
|
+
var trace = (0, getTrace_1.default)(trackableElement).trace;
|
|
96
|
+
if (data) {
|
|
97
|
+
data.split("|").forEach(function (item) {
|
|
98
|
+
var kv = item.split(":");
|
|
99
|
+
//TODO
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
detail_1[kv[0]] = kv[1];
|
|
102
|
+
});
|
|
103
|
+
//TODO
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
detail_1.domPathTokens = trace;
|
|
106
|
+
}
|
|
107
|
+
_this.eventDispatcher(detail_1);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
return oTracker;
|
|
112
|
+
}());
|
|
113
|
+
exports.oTracker = oTracker;
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class permutiveVideoUtils {
|
|
2
|
+
protected progressPermutiveMilestones: number[];
|
|
3
|
+
protected _campaign: string;
|
|
4
|
+
protected _title: string;
|
|
5
|
+
protected _videoId: string;
|
|
6
|
+
constructor(campaign: string, title: string, videoId?: string);
|
|
7
|
+
set videoId(vid: string);
|
|
8
|
+
get videoId(): string;
|
|
9
|
+
get remainingProgress(): number[];
|
|
10
|
+
emitPermutiveProgressEvent: (duration: number, currentTime: number, interval?: any) => void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permutiveVideoUtils/index.ts"],"names":[],"mappings":"AAEA,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAA2B;IAC1E,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,SAAC;gBAEP,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,SAAK;IAMzD,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,EAEtB;IACD,IAAI,OAAO,IAHM,MAAM,CAKtB;IAED,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAEhC;IAED,0BAA0B,aACd,MAAM,eACH,MAAM,aACT,GAAG,UAuBb;CACH"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.permutiveVideoUtils = void 0;
|
|
7
|
+
var debug_1 = __importDefault(require("debug"));
|
|
8
|
+
var debug = (0, debug_1.default)("@phntms/ft-lib");
|
|
9
|
+
var permutiveVideoUtils = /** @class */ (function () {
|
|
10
|
+
function permutiveVideoUtils(campaign, title, videoId) {
|
|
11
|
+
if (videoId === void 0) { videoId = ""; }
|
|
12
|
+
var _this = this;
|
|
13
|
+
this.progressPermutiveMilestones = [0, 0.25, 0.5, 0.75, 1];
|
|
14
|
+
this.emitPermutiveProgressEvent = function (duration, currentTime, interval) {
|
|
15
|
+
if (interval === void 0) { interval = undefined; }
|
|
16
|
+
var progress = currentTime / (Math.floor(duration) - 1);
|
|
17
|
+
while (progress >= _this.progressPermutiveMilestones[0] &&
|
|
18
|
+
currentTime > 0 &&
|
|
19
|
+
window.permutive) {
|
|
20
|
+
debug("Emit videoEngagement permutive event");
|
|
21
|
+
window.permutive.track("VideoEngagement", {
|
|
22
|
+
campaign: _this._campaign,
|
|
23
|
+
createdAt: new Date().toISOString(),
|
|
24
|
+
duration: Math.floor(duration),
|
|
25
|
+
title: _this._title,
|
|
26
|
+
videoId: _this._videoId,
|
|
27
|
+
progress: _this.progressPermutiveMilestones[0],
|
|
28
|
+
});
|
|
29
|
+
_this.progressPermutiveMilestones.shift();
|
|
30
|
+
if (_this.progressPermutiveMilestones.length === 0 && interval) {
|
|
31
|
+
window.clearInterval(interval);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this._campaign = campaign;
|
|
36
|
+
this._title = title;
|
|
37
|
+
this._videoId = videoId;
|
|
38
|
+
}
|
|
39
|
+
Object.defineProperty(permutiveVideoUtils.prototype, "videoId", {
|
|
40
|
+
get: function () {
|
|
41
|
+
return this._videoId;
|
|
42
|
+
},
|
|
43
|
+
set: function (vid) {
|
|
44
|
+
this._videoId = vid;
|
|
45
|
+
},
|
|
46
|
+
enumerable: false,
|
|
47
|
+
configurable: true
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(permutiveVideoUtils.prototype, "remainingProgress", {
|
|
50
|
+
get: function () {
|
|
51
|
+
return this.progressPermutiveMilestones;
|
|
52
|
+
},
|
|
53
|
+
enumerable: false,
|
|
54
|
+
configurable: true
|
|
55
|
+
});
|
|
56
|
+
return permutiveVideoUtils;
|
|
57
|
+
}());
|
|
58
|
+
exports.permutiveVideoUtils = permutiveVideoUtils;
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permutiveVideoUtils/index.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAC1B,IAAM,KAAK,GAAG,IAAA,eAAK,EAAC,gBAAgB,CAAC,CAAC;AACtC;IAME,6BAAY,QAAgB,EAAE,KAAa,EAAE,OAAY;QAAZ,wBAAA,EAAA,YAAY;QAAzD,iBAIC;QATS,gCAA2B,GAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAsB1E,+BAA0B,GAAG,UAC3B,QAAgB,EAChB,WAAmB,EACnB,QAAyB;YAAzB,yBAAA,EAAA,oBAAyB;YAEzB,IAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1D,OACE,QAAQ,IAAI,KAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAC/C,WAAW,GAAG,CAAC;gBACf,MAAM,CAAC,SAAS,EAChB;gBACA,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBACxC,QAAQ,EAAE,KAAI,CAAC,SAAS;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC9B,KAAK,EAAE,KAAI,CAAC,MAAM;oBAClB,OAAO,EAAE,KAAI,CAAC,QAAQ;oBACtB,QAAQ,EAAE,KAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;gBACH,KAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,KAAI,CAAC,2BAA2B,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,EAAE;oBAC7D,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;iBAChC;aACF;QACH,CAAC,CAAC;QA1CA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,sBAAI,wCAAO;aAGX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aALD,UAAY,GAAW;YACrB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACtB,CAAC;;;OAAA;IAKD,sBAAI,kDAAiB;aAArB;YACE,OAAO,IAAI,CAAC,2BAA2B,CAAC;QAC1C,CAAC;;;OAAA;IA6BH,0BAAC;AAAD,CAAC,AAlDD,IAkDC;AAlDY,kDAAmB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FTTracking } from "../FTTracking";
|
|
2
|
+
import { permutiveVideoUtils } from "../permutiveVideoUtils";
|
|
3
|
+
interface PlayerProgressEvent {
|
|
4
|
+
played: number;
|
|
5
|
+
loaded: number;
|
|
6
|
+
playedSeconds: number;
|
|
7
|
+
loadedSeconds: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class reactPlayerTracking {
|
|
10
|
+
duration: number;
|
|
11
|
+
playedSeconds: number;
|
|
12
|
+
playedPercent: number;
|
|
13
|
+
videoTitle: string;
|
|
14
|
+
videoUrl: string;
|
|
15
|
+
/** 100% is fired with ended event */
|
|
16
|
+
GA_milestones: number[];
|
|
17
|
+
oTracking_milestones: number[];
|
|
18
|
+
FTTracker: FTTracking;
|
|
19
|
+
permutiveTracker: permutiveVideoUtils | undefined;
|
|
20
|
+
constructor(FTTracker: FTTracking, videoTitle: string, videoUrl: string);
|
|
21
|
+
setDuration: (duration: number) => void;
|
|
22
|
+
sendGAEvent: (action: string) => void;
|
|
23
|
+
sendoTrackingEvent: (action: string, progress?: number) => void;
|
|
24
|
+
trackPlay: () => void;
|
|
25
|
+
trackPause: () => void;
|
|
26
|
+
trackEnded: () => void;
|
|
27
|
+
trackProgress: (reactPlayerProgress: PlayerProgressEvent) => void;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reactPlayerTracking/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AACD,qBAAa,mBAAmB;IAC9B,QAAQ,SAAK;IACb,aAAa,SAAK;IAClB,aAAa,SAAK;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,aAAa,EAAE,MAAM,EAAE,CAAmB;IAC1C,oBAAoB,EAAE,MAAM,EAAE,CAAgB;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,gBAAgB,EAAE,mBAAmB,GAAG,SAAS,CAAC;gBAEtC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYvE,WAAW,aAAc,MAAM,UAE7B;IAEF,WAAW,WAAY,MAAM,UAG3B;IAEF,kBAAkB,WAAY,MAAM,aAAa,MAAM,UAUrD;IAEF,SAAS,aAGP;IAEF,UAAU,aAGR;IAEF,UAAU,aAOR;IAEF,aAAa,wBAAyB,mBAAmB,UA0BvD;CACH"}
|