matomo-tracker-for-react 1.0.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 (75) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +194 -0
  3. package/es/MatomoContext.d.ts +5 -0
  4. package/es/MatomoContext.d.ts.map +1 -0
  5. package/es/MatomoContext.js +4 -0
  6. package/es/MatomoContext.js.map +1 -0
  7. package/es/MatomoProvider.d.ts +5 -0
  8. package/es/MatomoProvider.d.ts.map +1 -0
  9. package/es/MatomoProvider.js +94 -0
  10. package/es/MatomoProvider.js.map +1 -0
  11. package/es/MatomoTracker.d.ts +49 -0
  12. package/es/MatomoTracker.d.ts.map +1 -0
  13. package/es/MatomoTracker.js +330 -0
  14. package/es/MatomoTracker.js.map +1 -0
  15. package/es/constants.d.ts +11 -0
  16. package/es/constants.d.ts.map +1 -0
  17. package/es/constants.js +13 -0
  18. package/es/constants.js.map +1 -0
  19. package/es/index.d.ts +15 -0
  20. package/es/index.d.ts.map +1 -0
  21. package/es/index.js +6 -0
  22. package/es/index.js.map +1 -0
  23. package/es/tracker-types.d.ts +76 -0
  24. package/es/tracker-types.d.ts.map +1 -0
  25. package/es/tracker-types.js +2 -0
  26. package/es/tracker-types.js.map +1 -0
  27. package/es/types.d.ts +19 -0
  28. package/es/types.d.ts.map +1 -0
  29. package/es/types.js +3 -0
  30. package/es/types.js.map +1 -0
  31. package/es/useMatomo.d.ts +4 -0
  32. package/es/useMatomo.d.ts.map +1 -0
  33. package/es/useMatomo.js +30 -0
  34. package/es/useMatomo.js.map +1 -0
  35. package/lib/MatomoContext.d.ts +5 -0
  36. package/lib/MatomoContext.d.ts.map +1 -0
  37. package/lib/MatomoContext.js +6 -0
  38. package/lib/MatomoContext.js.map +1 -0
  39. package/lib/MatomoProvider.d.ts +5 -0
  40. package/lib/MatomoProvider.d.ts.map +1 -0
  41. package/lib/MatomoProvider.js +122 -0
  42. package/lib/MatomoProvider.js.map +1 -0
  43. package/lib/MatomoTracker.d.ts +49 -0
  44. package/lib/MatomoTracker.d.ts.map +1 -0
  45. package/lib/MatomoTracker.js +332 -0
  46. package/lib/MatomoTracker.js.map +1 -0
  47. package/lib/constants.d.ts +11 -0
  48. package/lib/constants.d.ts.map +1 -0
  49. package/lib/constants.js +16 -0
  50. package/lib/constants.js.map +1 -0
  51. package/lib/index.d.ts +15 -0
  52. package/lib/index.d.ts.map +1 -0
  53. package/lib/index.js +29 -0
  54. package/lib/index.js.map +1 -0
  55. package/lib/tracker-types.d.ts +76 -0
  56. package/lib/tracker-types.d.ts.map +1 -0
  57. package/lib/tracker-types.js +3 -0
  58. package/lib/tracker-types.js.map +1 -0
  59. package/lib/types.d.ts +19 -0
  60. package/lib/types.d.ts.map +1 -0
  61. package/lib/types.js +19 -0
  62. package/lib/types.js.map +1 -0
  63. package/lib/useMatomo.d.ts +4 -0
  64. package/lib/useMatomo.d.ts.map +1 -0
  65. package/lib/useMatomo.js +35 -0
  66. package/lib/useMatomo.js.map +1 -0
  67. package/package.json +58 -0
  68. package/src/MatomoContext.tsx +6 -0
  69. package/src/MatomoProvider.tsx +93 -0
  70. package/src/MatomoTracker.ts +415 -0
  71. package/src/constants.ts +12 -0
  72. package/src/index.ts +20 -0
  73. package/src/tracker-types.ts +89 -0
  74. package/src/types.ts +29 -0
  75. package/src/useMatomo.ts +55 -0
@@ -0,0 +1,94 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ import React, { useEffect, useMemo, useRef } from 'react';
11
+ import { useLocation } from 'react-router-dom'; // For automatic page view tracking
12
+ import MatomoContext from './MatomoContext';
13
+ import MatomoTracker from './MatomoTracker';
14
+ import { TRACK_TYPES } from './constants';
15
+ var MatomoProvider = function (_a) {
16
+ var children = _a.children, urlBase = _a.urlBase, siteId = _a.siteId, _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.trackCookies, trackCookies = _c === void 0 ? true : _c;
17
+ var matomoInstanceRef = useRef(null);
18
+ var location = useLocation(); // From react-router-dom
19
+ // Initialize MatomoTracker instance
20
+ if (!matomoInstanceRef.current && typeof window !== 'undefined' && !disabled) {
21
+ var matomoSiteId = typeof siteId === 'string' ? parseInt(siteId, 10) : siteId;
22
+ if (isNaN(matomoSiteId)) {
23
+ console.error("Matomo siteId must be a number or a string parseable to a number.");
24
+ }
25
+ else {
26
+ var effectiveConfigurations = {};
27
+ if (!trackCookies) {
28
+ effectiveConfigurations.disableCookies = true;
29
+ }
30
+ var trackerOptions = {
31
+ urlBase: urlBase,
32
+ siteId: matomoSiteId,
33
+ disabled: disabled,
34
+ configurations: effectiveConfigurations, // Pass only relevant configurations
35
+ };
36
+ matomoInstanceRef.current = new MatomoTracker(trackerOptions);
37
+ }
38
+ }
39
+ var matomoActions = useMemo(function () {
40
+ var currentInstance = matomoInstanceRef.current; // Use a variable for the dependency array
41
+ if (!currentInstance || disabled) {
42
+ var noOp = function () { };
43
+ var noOpInstance = {
44
+ trackEvent: noOp,
45
+ trackPageView: noOp,
46
+ trackGoal: noOp,
47
+ setUserId: noOp,
48
+ trackLink: noOp,
49
+ pushInstruction: function () {
50
+ var _args = [];
51
+ for (var _i = 0; _i < arguments.length; _i++) {
52
+ _args[_i] = arguments[_i];
53
+ }
54
+ },
55
+ };
56
+ return noOpInstance;
57
+ }
58
+ return {
59
+ trackEvent: function (category, action, name, value) {
60
+ return currentInstance.trackEvent({ category: category, action: action, name: name, value: value });
61
+ },
62
+ trackPageView: function (customTitle) {
63
+ return currentInstance.trackPageView(customTitle ? { documentTitle: customTitle } : undefined);
64
+ },
65
+ trackGoal: function (goalId, revenue) {
66
+ return currentInstance.pushInstruction(TRACK_TYPES.TRACK_GOAL, goalId, revenue);
67
+ },
68
+ setUserId: function (uid) { return currentInstance.pushInstruction(TRACK_TYPES.SET_USER_ID, uid); },
69
+ trackLink: function (url, linkType) {
70
+ return currentInstance.trackLink({ href: url, linkType: linkType });
71
+ },
72
+ pushInstruction: function (instruction) {
73
+ if (Array.isArray(instruction) && instruction.length > 0) {
74
+ var name_1 = instruction[0], args = instruction.slice(1);
75
+ currentInstance.pushInstruction.apply(currentInstance, __spreadArray([name_1], args, false));
76
+ }
77
+ else {
78
+ console.warn('pushInstruction expects a non-empty array.');
79
+ }
80
+ },
81
+ };
82
+ }, [disabled, matomoInstanceRef.current]); // Use matomoInstanceRef.current here
83
+ // Effect for automatic page view tracking on route change
84
+ useEffect(function () {
85
+ if (matomoActions && matomoActions.trackPageView && !disabled) {
86
+ var currentPath = location.pathname + location.search + location.hash;
87
+ matomoActions.pushInstruction(['setCustomUrl', window.location.origin + currentPath]);
88
+ matomoActions.trackPageView(); // Track with potentially new document.title or default
89
+ }
90
+ }, [location, matomoActions, disabled]);
91
+ return (React.createElement(MatomoContext.Provider, { value: matomoActions }, children));
92
+ };
93
+ export default MatomoProvider;
94
+ //# sourceMappingURL=MatomoProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatomoProvider.js","sourceRoot":"","sources":["../src/MatomoProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { AddEcommerceItemParams, RemoveEcommerceItemParams, SetEcommerceViewParams, TrackEcommerceOrderParams, TrackEventParams, TrackLinkParams, TrackPageViewParams, TrackSiteSearchParams, UserOptions } from "./tracker-types";
2
+ declare global {
3
+ interface Window {
4
+ _paq?: Array<any[]>;
5
+ }
6
+ }
7
+ declare class MatomoTracker {
8
+ private mutationObserver?;
9
+ private isInitialized;
10
+ constructor(userOptions: UserOptions);
11
+ private initialize;
12
+ enableHeartBeatTimer(seconds: number): void;
13
+ enableLinkTracking(active: boolean): void;
14
+ private trackEventsForElements;
15
+ trackEvents(): void;
16
+ stopObserving(): void;
17
+ trackEvent({ category, action, name, value, ...otherParams }: TrackEventParams): void;
18
+ trackSiteSearch({ keyword, category, count, ...otherParams }: TrackSiteSearchParams): void;
19
+ trackLink({ href, linkType, customDimensions, }: TrackLinkParams): void;
20
+ trackPageView(params?: TrackPageViewParams): void;
21
+ addEcommerceItem({ sku, productName, productCategory, productPrice, productQuantity, }: AddEcommerceItemParams): void;
22
+ removeEcommerceItem({ sku }: RemoveEcommerceItemParams): void;
23
+ clearEcommerceCart(): void;
24
+ trackEcommerceOrder({ orderId, orderRevenue, orderSubTotal, taxAmount, shippingAmount, discountOffered, }: TrackEcommerceOrderParams): void;
25
+ trackEcommerceCartUpdate(amount: number): void;
26
+ setEcommerceView({ sku, productName, productCategory, productPrice, }: SetEcommerceViewParams): void;
27
+ setEcommerceCategoryView(productCategory: string): void;
28
+ private track;
29
+ /**
30
+ * Pushes an instruction to Matomo for execution, this is equivalent to pushing entries into the `_paq` array.
31
+ *
32
+ * For example:
33
+ *
34
+ * ```ts
35
+ * pushInstruction('setDocumentTitle', document.title)
36
+ * ```
37
+ * Is the equivalent of:
38
+ *
39
+ * ```ts
40
+ * _paq.push(['setDocumentTitle', document.title]);
41
+ * ```
42
+ *
43
+ * @param name The name of the instruction to be executed.
44
+ * @param args The arguments to pass along with the instruction.
45
+ */
46
+ pushInstruction(name: string, ...args: any[]): MatomoTracker;
47
+ }
48
+ export default MatomoTracker;
49
+ //# sourceMappingURL=MatomoTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatomoTracker.d.ts","sourceRoot":"","sources":["../src/MatomoTracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EAEzB,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EAEnB,qBAAqB,EACrB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;KACrB;CACF;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,WAAW;IAepC,OAAO,CAAC,UAAU;IAmFlB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIzC,OAAO,CAAC,sBAAsB;IAwB9B,WAAW,IAAI,IAAI;IAqCnB,aAAa,IAAI,IAAI;IAQrB,UAAU,CAAC,EACT,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,WAAW,EACf,EAAE,gBAAgB,GAAG,IAAI;IAa1B,eAAe,CAAC,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,GAAG,WAAW,EACf,EAAE,qBAAqB,GAAG,IAAI;IAa/B,SAAS,CAAC,EACR,IAAI,EACJ,QAAiB,EACjB,gBAAgB,GACjB,EAAE,eAAe,GAAG,IAAI;IAmBzB,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAOjD,gBAAgB,CAAC,EACf,GAAG,EACH,WAAW,EACX,eAAe,EACf,YAAkB,EAClB,eAAmB,GACpB,EAAE,sBAAsB,GAAG,IAAI;IAahC,mBAAmB,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,GAAG,IAAI;IAM7D,kBAAkB,IAAI,IAAI;IAM1B,mBAAmB,CAAC,EAClB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,eAAuB,GACxB,EAAE,yBAAyB,GAAG,IAAI;IAiBnC,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9C,gBAAgB,CAAC,EACf,GAAG,EACH,WAAW,EACX,eAAe,EACf,YAAY,GACb,EAAE,sBAAsB,GAAG,IAAI;IAYhC,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAKvD,OAAO,CAAC,KAAK;IAoCb;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,aAAa;CAS7D;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,330 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
32
+ import { TRACK_TYPES } from "./constants";
33
+ var MatomoTracker = /** @class */ (function () {
34
+ function MatomoTracker(userOptions) {
35
+ this.isInitialized = false;
36
+ if (typeof window === "undefined") {
37
+ // Don't run in SSR or non-browser environments
38
+ return;
39
+ }
40
+ if (!userOptions.urlBase) {
41
+ throw new Error("Matomo urlBase is required.");
42
+ }
43
+ if (userOptions.siteId === undefined || userOptions.siteId === null) {
44
+ throw new Error("Matomo siteId is required.");
45
+ }
46
+ this.initialize(userOptions);
47
+ }
48
+ MatomoTracker.prototype.initialize = function (_a) {
49
+ var _this = this;
50
+ var _b;
51
+ var urlBase = _a.urlBase, siteId = _a.siteId, userId = _a.userId, trackerUrl = _a.trackerUrl, srcUrl = _a.srcUrl, _c = _a.disabled, disabled = _c === void 0 ? false : _c, heartBeat = _a.heartBeat, _d = _a.linkTracking, linkTracking = _d === void 0 ? true : _d, _e = _a.configurations, configurations = _e === void 0 ? {} : _e;
52
+ if (disabled) {
53
+ // If disabled, make all tracking calls no-ops by not initializing _paq or the script
54
+ this.pushInstruction = function () {
55
+ var _args = [];
56
+ for (var _i = 0; _i < arguments.length; _i++) {
57
+ _args[_i] = arguments[_i];
58
+ }
59
+ return _this;
60
+ }; // No-op
61
+ // Make other methods no-op as well
62
+ var noOp = function () { };
63
+ this.trackEvent = noOp;
64
+ this.trackPageView = noOp;
65
+ this.trackSiteSearch = noOp;
66
+ this.trackLink = noOp;
67
+ // ... and so on for all public methods
68
+ return;
69
+ }
70
+ var normalizedUrlBase = urlBase.endsWith("/") ? urlBase : "".concat(urlBase, "/");
71
+ window._paq = window._paq || [];
72
+ // Prevent re-initialization if _paq already has Matomo commands beyond simple presence
73
+ if (this.isInitialized ||
74
+ (window._paq.length > 0 &&
75
+ window._paq.some(function (cmd) { return cmd[0] === "setTrackerUrl"; }))) {
76
+ // If siteId or userId needs to be updated on an existing instance:
77
+ if (siteId)
78
+ this.pushInstruction("setSiteId", siteId);
79
+ if (userId)
80
+ this.pushInstruction("setUserId", userId);
81
+ // Potentially re-apply other configurations if needed, or assume they are sticky
82
+ this.isInitialized = true;
83
+ return;
84
+ }
85
+ this.pushInstruction("setTrackerUrl", trackerUrl !== null && trackerUrl !== void 0 ? trackerUrl : "".concat(normalizedUrlBase, "matomo.php"));
86
+ this.pushInstruction("setSiteId", siteId);
87
+ if (userId) {
88
+ this.pushInstruction("setUserId", userId);
89
+ }
90
+ Object.entries(configurations).forEach(function (_a) {
91
+ var name = _a[0], instructions = _a[1];
92
+ if (name === "disableCookies" && typeof instructions === "boolean") {
93
+ _this.pushInstruction("disableCookies"); // Matomo's disableCookies takes no arguments if called this way
94
+ }
95
+ else if (instructions instanceof Array) {
96
+ _this.pushInstruction.apply(_this, __spreadArray([name], instructions, false));
97
+ }
98
+ else {
99
+ _this.pushInstruction(name, instructions);
100
+ }
101
+ });
102
+ if (!heartBeat || (heartBeat && heartBeat.active)) {
103
+ this.enableHeartBeatTimer((_b = (heartBeat && heartBeat.seconds)) !== null && _b !== void 0 ? _b : 15);
104
+ }
105
+ this.enableLinkTracking(linkTracking);
106
+ var doc = document;
107
+ var scriptElement = doc.createElement("script");
108
+ var scripts = doc.getElementsByTagName("script")[0];
109
+ scriptElement.type = "text/javascript";
110
+ scriptElement.async = true;
111
+ scriptElement.defer = true;
112
+ scriptElement.src = srcUrl || "".concat(normalizedUrlBase, "matomo.js");
113
+ if (scripts && scripts.parentNode) {
114
+ scripts.parentNode.insertBefore(scriptElement, scripts);
115
+ }
116
+ this.isInitialized = true;
117
+ };
118
+ MatomoTracker.prototype.enableHeartBeatTimer = function (seconds) {
119
+ this.pushInstruction("enableHeartBeatTimer", seconds);
120
+ };
121
+ MatomoTracker.prototype.enableLinkTracking = function (active) {
122
+ this.pushInstruction("enableLinkTracking", active);
123
+ };
124
+ MatomoTracker.prototype.trackEventsForElements = function (elements) {
125
+ var _this = this;
126
+ if (elements.length) {
127
+ elements.forEach(function (element) {
128
+ element.addEventListener("click", function () {
129
+ var _a = element.dataset, matomoCategory = _a.matomoCategory, matomoAction = _a.matomoAction, matomoName = _a.matomoName, matomoValue = _a.matomoValue;
130
+ if (matomoCategory && matomoAction) {
131
+ _this.trackEvent({
132
+ category: matomoCategory,
133
+ action: matomoAction,
134
+ name: matomoName,
135
+ value: matomoValue ? Number(matomoValue) : undefined,
136
+ });
137
+ }
138
+ else {
139
+ throw new Error("Error: data-matomo-category and data-matomo-action are required.");
140
+ }
141
+ });
142
+ });
143
+ }
144
+ };
145
+ // Tracks events based on data attributes
146
+ MatomoTracker.prototype.trackEvents = function () {
147
+ var _this = this;
148
+ if (typeof window === "undefined" || !document)
149
+ return;
150
+ var matchString = '[data-matomo-event="click"]';
151
+ var firstTime = false;
152
+ if (!this.mutationObserver) {
153
+ firstTime = true;
154
+ this.mutationObserver = new MutationObserver(function (mutations) {
155
+ mutations.forEach(function (mutation) {
156
+ mutation.addedNodes.forEach(function (node) {
157
+ // only track HTML elements
158
+ if (!(node instanceof HTMLElement))
159
+ return;
160
+ // check the inserted element for being a code snippet
161
+ if (node.matches(matchString)) {
162
+ _this.trackEventsForElements([node]);
163
+ }
164
+ var elements = Array.from(node.querySelectorAll(matchString));
165
+ _this.trackEventsForElements(elements);
166
+ });
167
+ });
168
+ });
169
+ }
170
+ this.mutationObserver.observe(document, { childList: true, subtree: true });
171
+ // Now track all already existing elements
172
+ if (firstTime) {
173
+ var elements = Array.from(document.querySelectorAll(matchString));
174
+ this.trackEventsForElements(elements);
175
+ }
176
+ };
177
+ MatomoTracker.prototype.stopObserving = function () {
178
+ if (this.mutationObserver) {
179
+ this.mutationObserver.disconnect();
180
+ }
181
+ };
182
+ // Tracks events
183
+ // https://matomo.org/docs/event-tracking/#tracking-events
184
+ MatomoTracker.prototype.trackEvent = function (_a) {
185
+ var category = _a.category, action = _a.action, name = _a.name, value = _a.value, otherParams = __rest(_a, ["category", "action", "name", "value"]);
186
+ if (category && action) {
187
+ this.track(__assign({ data: [TRACK_TYPES.TRACK_EVENT, category, action, name, value] }, otherParams));
188
+ }
189
+ else {
190
+ throw new Error("Error: category and action are required.");
191
+ }
192
+ };
193
+ // Tracks site search
194
+ // https://developer.matomo.org/guides/tracking-javascript-guide#internal-search-tracking
195
+ MatomoTracker.prototype.trackSiteSearch = function (_a) {
196
+ var keyword = _a.keyword, category = _a.category, count = _a.count, otherParams = __rest(_a, ["keyword", "category", "count"]);
197
+ if (keyword) {
198
+ this.track(__assign({ data: [TRACK_TYPES.TRACK_SEARCH, keyword, category, count] }, otherParams));
199
+ }
200
+ else {
201
+ throw new Error("Error: keyword is required.");
202
+ }
203
+ };
204
+ // Tracks outgoing links to other sites and downloads
205
+ // https://developer.matomo.org/guides/tracking-javascript-guide#enabling-download-outlink-tracking
206
+ MatomoTracker.prototype.trackLink = function (_a) {
207
+ var _this = this;
208
+ var href = _a.href, _b = _a.linkType, linkType = _b === void 0 ? "link" : _b, customDimensions = _a.customDimensions;
209
+ if (customDimensions &&
210
+ Array.isArray(customDimensions) &&
211
+ customDimensions.length) {
212
+ customDimensions.forEach(function (customDimension) {
213
+ return _this.pushInstruction("setCustomDimension", customDimension.id, customDimension.value);
214
+ });
215
+ }
216
+ this.pushInstruction(TRACK_TYPES.TRACK_LINK, href, linkType);
217
+ };
218
+ // Tracks page views
219
+ // https://developer.matomo.org/guides/spa-tracking#tracking-a-new-page-view
220
+ MatomoTracker.prototype.trackPageView = function (params) {
221
+ this.track(__assign({ data: [TRACK_TYPES.TRACK_VIEW] }, params));
222
+ };
223
+ // Adds a product to an Ecommerce order to be tracked via trackEcommerceOrder.
224
+ // https://matomo.org/docs/ecommerce-analytics
225
+ // https://matomo.org/docs/ecommerce-analytics/#1-addecommerceitemproductsku-productname-productcategory-price-quantity
226
+ MatomoTracker.prototype.addEcommerceItem = function (_a) {
227
+ var sku = _a.sku, productName = _a.productName, productCategory = _a.productCategory, _b = _a.productPrice, productPrice = _b === void 0 ? 0.0 : _b, _c = _a.productQuantity, productQuantity = _c === void 0 ? 1 : _c;
228
+ this.pushInstruction("addEcommerceItem", sku, productName, productCategory, productPrice, productQuantity);
229
+ };
230
+ // Removes a product from an Ecommerce order to be tracked via trackEcommerceOrder.
231
+ // https://matomo.org/docs/ecommerce-analytics
232
+ MatomoTracker.prototype.removeEcommerceItem = function (_a) {
233
+ var sku = _a.sku;
234
+ this.pushInstruction("removeEcommerceItem", sku);
235
+ };
236
+ // Removes all products from an Ecommerce order to be tracked via trackEcommerceOrder.
237
+ // https://matomo.org/docs/ecommerce-analytics
238
+ MatomoTracker.prototype.clearEcommerceCart = function () {
239
+ this.pushInstruction("clearEcommerceCart");
240
+ };
241
+ // Tracks an Ecommerce order containing items added via addEcommerceItem.
242
+ // https://matomo.org/docs/ecommerce-analytics/#2-trackecommerceorderorderid-revenue-subtotal-tax-shipping-discount
243
+ MatomoTracker.prototype.trackEcommerceOrder = function (_a) {
244
+ var orderId = _a.orderId, orderRevenue = _a.orderRevenue, orderSubTotal = _a.orderSubTotal, taxAmount = _a.taxAmount, shippingAmount = _a.shippingAmount, _b = _a.discountOffered, discountOffered = _b === void 0 ? false : _b;
245
+ this.track({
246
+ data: [
247
+ TRACK_TYPES.TRACK_ECOMMERCE_ORDER,
248
+ orderId,
249
+ orderRevenue,
250
+ orderSubTotal,
251
+ taxAmount,
252
+ shippingAmount,
253
+ discountOffered,
254
+ ],
255
+ });
256
+ };
257
+ // Tracks updates to an Ecommerce Cart before an actual purchase.
258
+ // This will replace currently tracked information of the cart. Always include all items of the updated cart!
259
+ // https://matomo.org/docs/ecommerce-analytics/#example-tracking-an-ecommerce-cart-update-containing-two-products
260
+ MatomoTracker.prototype.trackEcommerceCartUpdate = function (amount) {
261
+ this.pushInstruction(TRACK_TYPES.TRACK_ECOMMERCE_CART_UPDATE, amount);
262
+ };
263
+ // Marks the next page view as an Ecommerce product page.
264
+ // https://matomo.org/docs/ecommerce-analytics/#example-tracking-a-product-page-view
265
+ MatomoTracker.prototype.setEcommerceView = function (_a) {
266
+ var sku = _a.sku, productName = _a.productName, productCategory = _a.productCategory, productPrice = _a.productPrice;
267
+ this.pushInstruction("setEcommerceView", sku, productName, productCategory, productPrice);
268
+ };
269
+ // Marks the next tracked page view as an Ecommerce category page.
270
+ // https://matomo.org/docs/ecommerce-analytics/#example-tracking-a-category-page-view
271
+ MatomoTracker.prototype.setEcommerceCategoryView = function (productCategory) {
272
+ this.setEcommerceView({ productCategory: productCategory, productName: false, sku: false });
273
+ };
274
+ // Sends the tracked page/view/search to Matomo
275
+ MatomoTracker.prototype.track = function (_a) {
276
+ var _this = this;
277
+ var _b = _a.data, data = _b === void 0 ? [] : _b, documentTitle = _a.documentTitle, // Changed: use passed documentTitle or fallback to window.document.title later
278
+ href = _a.href, _c = _a.customDimensions, customDimensions = _c === void 0 ? false : _c;
279
+ if (typeof window === "undefined")
280
+ return;
281
+ if (data.length) {
282
+ if (customDimensions &&
283
+ Array.isArray(customDimensions) &&
284
+ customDimensions.length) {
285
+ customDimensions.forEach(function (customDimension // Corrected type
286
+ ) {
287
+ return _this.pushInstruction("setCustomDimension", customDimension.id, customDimension.value);
288
+ });
289
+ }
290
+ this.pushInstruction("setCustomUrl", href !== null && href !== void 0 ? href : window.location.href);
291
+ // Use provided documentTitle, fallback to actual document.title only if not provided
292
+ this.pushInstruction("setDocumentTitle", documentTitle !== null && documentTitle !== void 0 ? documentTitle : window.document.title);
293
+ this.pushInstruction.apply(this, data);
294
+ }
295
+ };
296
+ /**
297
+ * Pushes an instruction to Matomo for execution, this is equivalent to pushing entries into the `_paq` array.
298
+ *
299
+ * For example:
300
+ *
301
+ * ```ts
302
+ * pushInstruction('setDocumentTitle', document.title)
303
+ * ```
304
+ * Is the equivalent of:
305
+ *
306
+ * ```ts
307
+ * _paq.push(['setDocumentTitle', document.title]);
308
+ * ```
309
+ *
310
+ * @param name The name of the instruction to be executed.
311
+ * @param args The arguments to pass along with the instruction.
312
+ */
313
+ MatomoTracker.prototype.pushInstruction = function (name) {
314
+ var args = [];
315
+ for (var _i = 1; _i < arguments.length; _i++) {
316
+ args[_i - 1] = arguments[_i];
317
+ }
318
+ if (typeof window !== "undefined" && window._paq) {
319
+ window._paq.push(__spreadArray([name], args, true));
320
+ }
321
+ else if (typeof window !== "undefined" && name === "setTrackerUrl") {
322
+ // Allow setting up _paq if it's the first instruction (like setTrackerUrl)
323
+ window._paq = [__spreadArray([name], args, true)];
324
+ }
325
+ return this;
326
+ };
327
+ return MatomoTracker;
328
+ }());
329
+ export default MatomoTracker;
330
+ //# sourceMappingURL=MatomoTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatomoTracker.js","sourceRoot":"","sources":["../src/MatomoTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const TRACK_TYPES: {
2
+ TRACK_EVENT: string;
3
+ TRACK_LINK: string;
4
+ TRACK_SEARCH: string;
5
+ TRACK_VIEW: string;
6
+ TRACK_ECOMMERCE_ORDER: string;
7
+ TRACK_ECOMMERCE_CART_UPDATE: string;
8
+ TRACK_GOAL: string;
9
+ SET_USER_ID: string;
10
+ };
11
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;;;;;;CAUvB,CAAC"}
@@ -0,0 +1,13 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export var TRACK_TYPES = {
3
+ TRACK_EVENT: "trackEvent",
4
+ TRACK_LINK: "trackLink",
5
+ TRACK_SEARCH: "trackSiteSearch",
6
+ TRACK_VIEW: "trackPageView",
7
+ TRACK_ECOMMERCE_ORDER: "trackEcommerceOrder",
8
+ TRACK_ECOMMERCE_CART_UPDATE: "trackEcommerceCartUpdate",
9
+ // Add other Matomo instructions if needed, e.g., for goals
10
+ TRACK_GOAL: "trackGoal",
11
+ SET_USER_ID: "setUserId",
12
+ };
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,WAAW;IACvB,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,qBAAqB,EAAE,qBAAqB;IAC5C,2BAA2B,EAAE,0BAA0B;IACvD,2DAA2D;IAC3D,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;CACzB,CAAC"}
package/es/index.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export { default as MatomoProvider } from "./MatomoProvider";
2
+ export { default as useMatomo } from "./useMatomo";
3
+ export { default as MatomoContext } from "./MatomoContext";
4
+ export * from "./types";
5
+ export type { CustomDimension, UserOptions, // This is the core UserOptions, MatomoProviderProps is different
6
+ TrackPageViewParams, // Core type
7
+ TrackEventParams, // Core type
8
+ TrackLinkParams, // Core type
9
+ TrackSiteSearchParams, // Core type, though not directly used by simplified hook
10
+ TrackEcommerceOrderParams, // Core type
11
+ AddEcommerceItemParams, // Core type
12
+ RemoveEcommerceItemParams, // Core type
13
+ SetEcommerceViewParams, // Core type
14
+ TrackGoalParams, } from "./tracker-types";
15
+ //# 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,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG3D,cAAc,SAAS,CAAC;AAExB,YAAY,EACV,eAAe,EACf,WAAW,EAAE,iEAAiE;AAC9E,mBAAmB,EAAE,YAAY;AACjC,gBAAgB,EAAE,YAAY;AAC9B,eAAe,EAAE,YAAY;AAC7B,qBAAqB,EAAE,yDAAyD;AAChF,yBAAyB,EAAE,YAAY;AACvC,sBAAsB,EAAE,YAAY;AACpC,yBAAyB,EAAE,YAAY;AACvC,sBAAsB,EAAE,YAAY;AACpC,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
package/es/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { default as MatomoProvider } from "./MatomoProvider";
2
+ export { default as useMatomo } from "./useMatomo";
3
+ export { default as MatomoContext } from "./MatomoContext"; // Optional: if users need direct context access
4
+ // Export types for consumers
5
+ export * from "./types"; // Exports React-specific types and re-exports tracker-types
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC,CAAC,gDAAgD;AAE5G,6BAA6B;AAC7B,cAAc,SAAS,CAAC,CAAC,4DAA4D"}
@@ -0,0 +1,76 @@
1
+ export interface CustomDimension {
2
+ id: number;
3
+ value: string;
4
+ }
5
+ export interface UserOptions {
6
+ urlBase: string;
7
+ siteId: number;
8
+ userId?: string;
9
+ trackerUrl?: string;
10
+ srcUrl?: string;
11
+ disabled?: boolean;
12
+ heartBeat?: {
13
+ active: boolean;
14
+ seconds?: number;
15
+ };
16
+ linkTracking?: boolean;
17
+ configurations?: {
18
+ [key: string]: any;
19
+ };
20
+ }
21
+ export interface TrackPageViewParams {
22
+ documentTitle?: string;
23
+ href?: string | Location;
24
+ customDimensions?: boolean | CustomDimension[];
25
+ }
26
+ export interface TrackParams extends TrackPageViewParams {
27
+ data: any[];
28
+ }
29
+ export interface TrackEventParams {
30
+ category: string;
31
+ action: string;
32
+ name?: string;
33
+ value?: number;
34
+ documentTitle?: string;
35
+ href?: string | Location;
36
+ customDimensions?: boolean | CustomDimension[];
37
+ }
38
+ export interface TrackLinkParams {
39
+ href: string;
40
+ linkType?: "download" | "link";
41
+ customDimensions?: boolean | CustomDimension[];
42
+ }
43
+ export interface TrackSiteSearchParams extends TrackPageViewParams {
44
+ keyword: string;
45
+ category?: string;
46
+ count?: number;
47
+ }
48
+ export interface TrackEcommerceOrderParams {
49
+ orderId: string;
50
+ orderRevenue: number;
51
+ orderSubTotal?: number;
52
+ taxAmount?: number;
53
+ shippingAmount?: number;
54
+ discountOffered?: boolean;
55
+ }
56
+ export interface AddEcommerceItemParams {
57
+ sku: string;
58
+ productName?: string;
59
+ productCategory?: string;
60
+ productPrice?: number;
61
+ productQuantity?: number;
62
+ }
63
+ export interface RemoveEcommerceItemParams {
64
+ sku: string;
65
+ }
66
+ export interface SetEcommerceViewParams {
67
+ sku: string | boolean;
68
+ productName?: string | boolean;
69
+ productCategory?: string;
70
+ productPrice?: number;
71
+ }
72
+ export interface TrackGoalParams {
73
+ goalId: number | string;
74
+ revenue?: number;
75
+ }
76
+ //# sourceMappingURL=tracker-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-types.d.ts","sourceRoot":"","sources":["../src/tracker-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,WAAY,SAAQ,mBAAmB;IACtD,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAE/B,gBAAgB,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}