@jmp-technologies/analytics 0.1.24 → 0.1.26
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/README.md +22 -1
- package/dist/astro/client.cjs +103 -0
- package/dist/astro/client.cjs.map +1 -1
- package/dist/astro/client.d.cts +2 -2
- package/dist/astro/client.d.ts +2 -2
- package/dist/astro/client.js +5 -3
- package/dist/astro/client.js.map +1 -1
- package/dist/astro/content.cjs +185 -1
- package/dist/astro/content.cjs.map +1 -1
- package/dist/astro/content.d.cts +2 -2
- package/dist/astro/content.d.ts +2 -2
- package/dist/astro/content.js +4 -3
- package/dist/astro/integration.cjs +56 -10
- package/dist/astro/integration.cjs.map +1 -1
- package/dist/astro/integration.js +4 -3
- package/dist/astro/integration.js.map +1 -1
- package/dist/astro/middleware.cjs.map +1 -1
- package/dist/astro/middleware.d.cts +2 -2
- package/dist/astro/middleware.d.ts +2 -2
- package/dist/astro/middleware.js +2 -2
- package/dist/astro/register.cjs +56 -10
- package/dist/astro/register.cjs.map +1 -1
- package/dist/astro/register.js +4 -3
- package/dist/chunk-2KAGOVRZ.js +45 -0
- package/dist/chunk-2KAGOVRZ.js.map +1 -0
- package/dist/{chunk-MOX7RJUU.js → chunk-A4RRTY5D.js} +1 -1
- package/dist/{chunk-MOX7RJUU.js.map → chunk-A4RRTY5D.js.map} +1 -1
- package/dist/{chunk-7MLPSL6T.js → chunk-HODG4NJQ.js} +2 -2
- package/dist/{chunk-CDORZ2YJ.js → chunk-PKGUBYZR.js} +3 -24
- package/dist/chunk-PKGUBYZR.js.map +1 -0
- package/dist/{chunk-2AUF7ENL.js → chunk-RCOHQAGL.js} +160 -157
- package/dist/chunk-RCOHQAGL.js.map +1 -0
- package/dist/chunk-TCZ6TC2L.js +149 -0
- package/dist/chunk-TCZ6TC2L.js.map +1 -0
- package/dist/{chunk-WCI6VOVY.js → chunk-TFHOTBOL.js} +3 -3
- package/dist/{chunk-ZP4L5DCM.js → chunk-WFTTIRDJ.js} +2 -2
- package/dist/{chunk-GPPQ3TYI.js → chunk-XQZOGWF2.js} +3 -3
- package/dist/chunk-YCVHRMM6.js +28 -0
- package/dist/chunk-YCVHRMM6.js.map +1 -0
- package/dist/{create-jmp-analytics-BdGOgPxl.d.ts → create-jmp-analytics-JKAsJAWb.d.ts} +1 -1
- package/dist/{create-jmp-analytics-DxhHOmtR.d.cts → create-jmp-analytics-Mau-oxji.d.cts} +1 -1
- package/dist/index.cjs +157 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -7
- package/dist/index.d.ts +13 -7
- package/dist/index.js +13 -3
- package/dist/next/content.cjs +185 -1
- package/dist/next/content.cjs.map +1 -1
- package/dist/next/content.d.cts +2 -2
- package/dist/next/content.d.ts +2 -2
- package/dist/next/content.js +4 -3
- package/dist/next/content.js.map +1 -1
- package/dist/next/google-tag.cjs +80 -0
- package/dist/next/google-tag.cjs.map +1 -0
- package/dist/next/google-tag.d.cts +17 -0
- package/dist/next/google-tag.d.ts +17 -0
- package/dist/next/google-tag.js +8 -0
- package/dist/next/google-tag.js.map +1 -0
- package/dist/next/instrumentation.cjs +56 -10
- package/dist/next/instrumentation.cjs.map +1 -1
- package/dist/next/instrumentation.js +3 -2
- package/dist/next/instrumentation.js.map +1 -1
- package/dist/next/landing-capture-script-server.cjs +61 -0
- package/dist/next/landing-capture-script-server.cjs.map +1 -0
- package/dist/next/landing-capture-script-server.d.cts +14 -0
- package/dist/next/landing-capture-script-server.d.ts +14 -0
- package/dist/next/landing-capture-script-server.js +8 -0
- package/dist/next/landing-capture-script-server.js.map +1 -0
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.d.cts +2 -2
- package/dist/next/middleware.d.ts +2 -2
- package/dist/next/middleware.js +2 -2
- package/dist/next/site-root-server.cjs +351 -82
- package/dist/next/site-root-server.cjs.map +1 -1
- package/dist/next/site-root-server.d.cts +9 -1
- package/dist/next/site-root-server.d.ts +9 -1
- package/dist/next/site-root-server.js +51 -16
- package/dist/next/site-root-server.js.map +1 -1
- package/dist/next.cjs +210 -85
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +8 -15
- package/dist/next.d.ts +8 -15
- package/dist/next.js +11 -7
- package/dist/react.cjs +103 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +4 -3
- package/dist/{site-config-DpMgrfeN.d.ts → site-config-CXUdGLqw.d.cts} +6 -3
- package/dist/{site-config-BXs91Yex.d.cts → site-config-w_Db9YSk.d.ts} +6 -3
- package/dist/{track-page-view-Cr8I4Unm.d.cts → track-page-view-CkuSYuco.d.cts} +1 -1
- package/dist/{track-page-view-CcPlzQNB.d.ts → track-page-view-QRSk8vap.d.ts} +1 -1
- package/dist/{types-BtiK_Acj.d.cts → types-C1eq8E5u.d.cts} +14 -4
- package/dist/{types-BtiK_Acj.d.ts → types-C1eq8E5u.d.ts} +14 -4
- package/docs/astro-integration.md +1 -1
- package/package.json +7 -2
- package/dist/chunk-2AUF7ENL.js.map +0 -1
- package/dist/chunk-CDORZ2YJ.js.map +0 -1
- /package/dist/{chunk-7MLPSL6T.js.map → chunk-HODG4NJQ.js.map} +0 -0
- /package/dist/{chunk-WCI6VOVY.js.map → chunk-TFHOTBOL.js.map} +0 -0
- /package/dist/{chunk-ZP4L5DCM.js.map → chunk-WFTTIRDJ.js.map} +0 -0
- /package/dist/{chunk-GPPQ3TYI.js.map → chunk-XQZOGWF2.js.map} +0 -0
package/dist/next.cjs
CHANGED
|
@@ -31,7 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
// src/next.tsx
|
|
32
32
|
var next_exports = {};
|
|
33
33
|
__export(next_exports, {
|
|
34
|
-
|
|
34
|
+
JmpGoogleTag: () => JmpGoogleTag,
|
|
35
35
|
JmpNextAnalytics: () => JmpNextAnalytics,
|
|
36
36
|
JmpNextPageViewTracker: () => JmpNextPageViewTracker,
|
|
37
37
|
JmpSiteRoot: () => JmpSiteRoot,
|
|
@@ -46,9 +46,58 @@ __export(next_exports, {
|
|
|
46
46
|
useJmpAnalytics: () => useJmpAnalytics
|
|
47
47
|
});
|
|
48
48
|
module.exports = __toCommonJS(next_exports);
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
|
|
49
|
+
var import_react3 = require("react");
|
|
50
|
+
var import_navigation2 = require("next/navigation");
|
|
51
|
+
|
|
52
|
+
// src/env-public.ts
|
|
53
|
+
function firstDefined(...values) {
|
|
54
|
+
for (const v of values) {
|
|
55
|
+
if (v) return v;
|
|
56
|
+
}
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
function readJmpPublicEnvFromProcessEnv() {
|
|
60
|
+
if (typeof process === "undefined" || !process.env) {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
const { env } = process;
|
|
64
|
+
const analyticsUrl = firstDefined(
|
|
65
|
+
env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
|
|
66
|
+
env.PUBLIC_JMP_ANALYTICS_URL
|
|
67
|
+
);
|
|
68
|
+
const trackingKey = firstDefined(
|
|
69
|
+
env.NEXT_PUBLIC_JMP_TRACKING_KEY,
|
|
70
|
+
env.PUBLIC_JMP_TRACKING_KEY
|
|
71
|
+
);
|
|
72
|
+
const requireConsentRaw = firstDefined(
|
|
73
|
+
env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
|
|
74
|
+
env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
|
|
75
|
+
);
|
|
76
|
+
const autoContactRaw = firstDefined(
|
|
77
|
+
env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
|
|
78
|
+
env.PUBLIC_JMP_AUTO_CONTACT_LINKS
|
|
79
|
+
);
|
|
80
|
+
return {
|
|
81
|
+
analyticsUrl,
|
|
82
|
+
trackingKey,
|
|
83
|
+
requireConsent: requireConsentRaw === "true",
|
|
84
|
+
autoContactLinks: autoContactRaw === "true"
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function readJmpPublicEnvFromProcess(overrides) {
|
|
88
|
+
const fromEnv = readJmpPublicEnvFromProcessEnv();
|
|
89
|
+
return {
|
|
90
|
+
analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
|
|
91
|
+
trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
|
|
92
|
+
requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
|
|
93
|
+
autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// src/constants.ts
|
|
98
|
+
var JMP_ANALYTICS_SDK_VERSION = "0.1.25";
|
|
99
|
+
var JMP_TRACKING_CONSENT_STORAGE_KEY = "jmp_analytics_consent_v1";
|
|
100
|
+
var DEFAULT_JMP_BROWSER_PAGE_VIEW_DEDUPE_MS = 2500;
|
|
52
101
|
|
|
53
102
|
// src/landing-capture.ts
|
|
54
103
|
var JMP_SESSION_ID_KEY = "jmp_analytics_sid";
|
|
@@ -192,55 +241,6 @@ function buildLandingCaptureInlineScript() {
|
|
|
192
241
|
return `(function(){try{var h=location.hostname;var ref=document.referrer||'';function rh(u){try{return new URL(u).hostname.replace(/^www\\./i,'').toLowerCase()}catch(e){try{return new URL('https://'+u).hostname.replace(/^www\\./i,'').toLowerCase()}catch(e2){return null}}}function ext(r){var x=rh(r);if(!x)return false;var s=h.replace(/^www\\./i,'').toLowerCase();return x!==s&&x.slice(-('.'+s).length)!==('.'+s)}function apexDom(hn){var s=hn.replace(/^www\\./i,'').toLowerCase();if(!s||s==='localhost'||/\\.local$/i.test(s)||s.indexOf('.')<0)return null;return s}function readCk(hn){var apex=apexDom(hn);if(!apex)return '';var pre='${JMP_LANDING_REFERER_COOKIE}=';var parts=document.cookie.split(';');for(var i=0;i<parts.length;i++){var t=parts[i].trim();if(t.indexOf(pre)===0){try{return decodeURIComponent(t.slice(pre.length)).trim()}catch(e){return ''}}}return ''}function writeCk(r,hn){var apex=apexDom(hn);if(!apex)return;var sec=location.protocol==='https:'?'; Secure':'';document.cookie='${JMP_LANDING_REFERER_COOKIE}='+encodeURIComponent(r.slice(0,2048))+'; Domain=.'+apex+'; Path=/; Max-Age=${cookieMaxAge}; SameSite=Lax'+sec}var stored=sessionStorage.getItem('${JMP_LANDING_REFERER_KEY}')||'';var ck=readCk(h);var preserved=stored||ck;var lr='';if(ref&&ext(ref)){sessionStorage.setItem('${JMP_LANDING_REFERER_KEY}',ref);writeCk(ref,h);lr=ref}else{lr=preserved||'';if(lr&&!stored)sessionStorage.setItem('${JMP_LANDING_REFERER_KEY}',lr)}var sid=sessionStorage.getItem('${JMP_SESSION_ID_KEY}');if(!sid&&crypto&&crypto.randomUUID){sid=crypto.randomUUID();sessionStorage.setItem('${JMP_SESSION_ID_KEY}',sid)}try{var sp=new URLSearchParams(location.search);var utm={};var updated=false;['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(n){var v=sp.get(n);if(v){utm[n]=v;updated=true}});if(updated)sessionStorage.setItem('${JMP_UTM_SESSION_KEY}',JSON.stringify(utm))}catch(e){}}catch(e){}})();`;
|
|
193
242
|
}
|
|
194
243
|
|
|
195
|
-
// src/env-public.ts
|
|
196
|
-
function firstDefined(...values) {
|
|
197
|
-
for (const v of values) {
|
|
198
|
-
if (v) return v;
|
|
199
|
-
}
|
|
200
|
-
return void 0;
|
|
201
|
-
}
|
|
202
|
-
function readJmpPublicEnvFromProcessEnv() {
|
|
203
|
-
if (typeof process === "undefined" || !process.env) {
|
|
204
|
-
return {};
|
|
205
|
-
}
|
|
206
|
-
const { env } = process;
|
|
207
|
-
const analyticsUrl = firstDefined(
|
|
208
|
-
env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
|
|
209
|
-
env.PUBLIC_JMP_ANALYTICS_URL
|
|
210
|
-
);
|
|
211
|
-
const trackingKey = firstDefined(
|
|
212
|
-
env.NEXT_PUBLIC_JMP_TRACKING_KEY,
|
|
213
|
-
env.PUBLIC_JMP_TRACKING_KEY
|
|
214
|
-
);
|
|
215
|
-
const requireConsentRaw = firstDefined(
|
|
216
|
-
env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
|
|
217
|
-
env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
|
|
218
|
-
);
|
|
219
|
-
const autoContactRaw = firstDefined(
|
|
220
|
-
env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
|
|
221
|
-
env.PUBLIC_JMP_AUTO_CONTACT_LINKS
|
|
222
|
-
);
|
|
223
|
-
return {
|
|
224
|
-
analyticsUrl,
|
|
225
|
-
trackingKey,
|
|
226
|
-
requireConsent: requireConsentRaw === "true",
|
|
227
|
-
autoContactLinks: autoContactRaw === "true"
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
function readJmpPublicEnvFromProcess(overrides) {
|
|
231
|
-
const fromEnv = readJmpPublicEnvFromProcessEnv();
|
|
232
|
-
return {
|
|
233
|
-
analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
|
|
234
|
-
trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
|
|
235
|
-
requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
|
|
236
|
-
autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// src/constants.ts
|
|
241
|
-
var JMP_TRACKING_CONSENT_STORAGE_KEY = "jmp_analytics_consent_v1";
|
|
242
|
-
var DEFAULT_JMP_BROWSER_PAGE_VIEW_DEDUPE_MS = 2500;
|
|
243
|
-
|
|
244
244
|
// src/tracker/page-view-dedupe.ts
|
|
245
245
|
var JMP_PAGE_VIEW_DEDUPE_STORAGE_KEY = "jmp_analytics_last_pv";
|
|
246
246
|
var moduleLastPath = "";
|
|
@@ -835,6 +835,108 @@ function getJmpSiteDefinition() {
|
|
|
835
835
|
return registeredSite;
|
|
836
836
|
}
|
|
837
837
|
|
|
838
|
+
// src/content/wrapper-discovery.ts
|
|
839
|
+
var WRAPPER_SLOT_ORDER = [
|
|
840
|
+
"blog",
|
|
841
|
+
"faq",
|
|
842
|
+
"contact",
|
|
843
|
+
"trust",
|
|
844
|
+
"trust.summary",
|
|
845
|
+
"trust.testimonials",
|
|
846
|
+
"trust.reviews",
|
|
847
|
+
"trust.stats",
|
|
848
|
+
"trust.logos",
|
|
849
|
+
"trust.credentials"
|
|
850
|
+
];
|
|
851
|
+
var discovered = /* @__PURE__ */ new Set();
|
|
852
|
+
var reportedDedupeKeys = /* @__PURE__ */ new Set();
|
|
853
|
+
var syncHandler = null;
|
|
854
|
+
function getDiscoveredContentWrappers() {
|
|
855
|
+
return sortWrapperSlots([...discovered]);
|
|
856
|
+
}
|
|
857
|
+
function resolveContentWrappersForReport(config) {
|
|
858
|
+
const explicit = config.contentWrappers ?? [];
|
|
859
|
+
const auto = getDiscoveredContentWrappers();
|
|
860
|
+
if (config.contentWrapperMode === "manual") {
|
|
861
|
+
return sortWrapperSlots([...explicit]);
|
|
862
|
+
}
|
|
863
|
+
if (config.contentWrapperMode === "explicit-only") {
|
|
864
|
+
return sortWrapperSlots([...explicit]);
|
|
865
|
+
}
|
|
866
|
+
const merged = /* @__PURE__ */ new Set([...explicit, ...auto]);
|
|
867
|
+
return sortWrapperSlots([...merged]);
|
|
868
|
+
}
|
|
869
|
+
function hasReportedContentWrappers(dedupeKey) {
|
|
870
|
+
return reportedDedupeKeys.has(dedupeKey);
|
|
871
|
+
}
|
|
872
|
+
function rememberReportedContentWrappers(dedupeKey) {
|
|
873
|
+
reportedDedupeKeys.add(dedupeKey);
|
|
874
|
+
}
|
|
875
|
+
function setContentWrapperSyncHandler(handler) {
|
|
876
|
+
syncHandler = handler;
|
|
877
|
+
}
|
|
878
|
+
function sortWrapperSlots(slots) {
|
|
879
|
+
const order = new Map(WRAPPER_SLOT_ORDER.map((slot, index) => [slot, index]));
|
|
880
|
+
return [...new Set(slots)].sort((a, b) => {
|
|
881
|
+
const ai = order.get(a) ?? 999;
|
|
882
|
+
const bi = order.get(b) ?? 999;
|
|
883
|
+
if (ai !== bi) {
|
|
884
|
+
return ai - bi;
|
|
885
|
+
}
|
|
886
|
+
return a.localeCompare(b);
|
|
887
|
+
});
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
// src/content/api.ts
|
|
891
|
+
async function registerJmpContentWrappers(config) {
|
|
892
|
+
const wrappers = resolveContentWrappersForReport(config);
|
|
893
|
+
if (!wrappers.length) {
|
|
894
|
+
return { ok: false, skipped: true };
|
|
895
|
+
}
|
|
896
|
+
const dedupeKey = `${config.trackingKey}:${[...wrappers].sort().join(",")}`;
|
|
897
|
+
if (hasReportedContentWrappers(dedupeKey)) {
|
|
898
|
+
return { ok: true, wrappers };
|
|
899
|
+
}
|
|
900
|
+
const baseUrl = normalizeBaseUrl(config.baseUrl);
|
|
901
|
+
const resolvedFetch = config.fetchImpl ?? (typeof globalThis !== "undefined" && globalThis.fetch ? globalThis.fetch.bind(globalThis) : void 0);
|
|
902
|
+
if (!resolvedFetch) {
|
|
903
|
+
throw new Error(
|
|
904
|
+
"JMP content wrappers: fetch is not available; pass fetchImpl in config"
|
|
905
|
+
);
|
|
906
|
+
}
|
|
907
|
+
const url = `${baseUrl}/api/content/capabilities`;
|
|
908
|
+
if (config.debug) {
|
|
909
|
+
console.debug("[@jmp-technologies/analytics]", "POST", url, { wrappers });
|
|
910
|
+
}
|
|
911
|
+
const res = await resolvedFetch(url, {
|
|
912
|
+
method: "POST",
|
|
913
|
+
headers: {
|
|
914
|
+
"Content-Type": "application/json",
|
|
915
|
+
"X-JMP-Tracking-Key": config.trackingKey
|
|
916
|
+
},
|
|
917
|
+
body: JSON.stringify({
|
|
918
|
+
wrappers,
|
|
919
|
+
sdkVersion: JMP_ANALYTICS_SDK_VERSION
|
|
920
|
+
})
|
|
921
|
+
});
|
|
922
|
+
const text = await res.text();
|
|
923
|
+
if (!res.ok) {
|
|
924
|
+
let parsed = {};
|
|
925
|
+
try {
|
|
926
|
+
parsed = JSON.parse(text);
|
|
927
|
+
} catch {
|
|
928
|
+
parsed = { error: text };
|
|
929
|
+
}
|
|
930
|
+
throw new Error(
|
|
931
|
+
[`JMP content wrappers HTTP ${res.status}`, parsed.error, parsed.hint].filter(Boolean).join(" \u2014 ")
|
|
932
|
+
);
|
|
933
|
+
}
|
|
934
|
+
rememberReportedContentWrappers(dedupeKey);
|
|
935
|
+
const data = JSON.parse(text);
|
|
936
|
+
return { ok: true, wrappers: data.wrappers ?? wrappers };
|
|
937
|
+
}
|
|
938
|
+
setContentWrapperSyncHandler(registerJmpContentWrappers);
|
|
939
|
+
|
|
838
940
|
// src/env/browser.ts
|
|
839
941
|
function getJmpBrowserAnalyticsConfigFromEnv(overrides) {
|
|
840
942
|
const pub = readJmpPublicEnvFromProcess();
|
|
@@ -930,36 +1032,60 @@ function JmpTrackedMailtoLink({
|
|
|
930
1032
|
);
|
|
931
1033
|
}
|
|
932
1034
|
|
|
933
|
-
// src/next.tsx
|
|
1035
|
+
// src/next/google-tag.tsx
|
|
1036
|
+
var import_script = __toESM(require("next/script"), 1);
|
|
1037
|
+
var import_navigation = require("next/navigation");
|
|
1038
|
+
var import_react2 = require("react");
|
|
934
1039
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
935
|
-
function
|
|
936
|
-
return (0,
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
return null;
|
|
943
|
-
}
|
|
944
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
945
|
-
import_script.default,
|
|
946
|
-
{
|
|
947
|
-
id: "jmp-landing-capture",
|
|
948
|
-
strategy: "beforeInteractive",
|
|
949
|
-
dangerouslySetInnerHTML: {
|
|
950
|
-
__html: buildLandingCaptureInlineScript()
|
|
1040
|
+
function JmpGoogleTag({ gaId }) {
|
|
1041
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
1042
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1043
|
+
import_script.default,
|
|
1044
|
+
{
|
|
1045
|
+
src: `https://www.googletagmanager.com/gtag/js?id=${gaId}`,
|
|
1046
|
+
strategy: "lazyOnload"
|
|
951
1047
|
}
|
|
1048
|
+
),
|
|
1049
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_script.default, { id: "jmp-ga4-init", strategy: "lazyOnload", children: `
|
|
1050
|
+
window.dataLayer = window.dataLayer || [];
|
|
1051
|
+
function gtag(){dataLayer.push(arguments);}
|
|
1052
|
+
gtag('js', new Date());
|
|
1053
|
+
gtag('config', '${gaId}', { send_page_view: true });
|
|
1054
|
+
` }),
|
|
1055
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JmpGoogleTagPagePath, { gaId })
|
|
1056
|
+
] });
|
|
1057
|
+
}
|
|
1058
|
+
function JmpGoogleTagPagePath({ gaId }) {
|
|
1059
|
+
const pathname = (0, import_navigation.usePathname)();
|
|
1060
|
+
const isFirstNavigation = (0, import_react2.useRef)(true);
|
|
1061
|
+
(0, import_react2.useEffect)(() => {
|
|
1062
|
+
if (isFirstNavigation.current) {
|
|
1063
|
+
isFirstNavigation.current = false;
|
|
1064
|
+
return;
|
|
952
1065
|
}
|
|
953
|
-
|
|
1066
|
+
const report = () => {
|
|
1067
|
+
window.gtag?.("config", gaId, { page_path: pathname || "/" });
|
|
1068
|
+
};
|
|
1069
|
+
report();
|
|
1070
|
+
const timer = window.setTimeout(report, 100);
|
|
1071
|
+
return () => window.clearTimeout(timer);
|
|
1072
|
+
}, [gaId, pathname]);
|
|
1073
|
+
return null;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
// src/next.tsx
|
|
1077
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1078
|
+
function useJmpAnalytics() {
|
|
1079
|
+
return (0, import_react3.useMemo)(() => getOrCreateJmpAnalyticsForNextApp(), []);
|
|
954
1080
|
}
|
|
955
1081
|
function JmpNextPageViewTrackerInner({
|
|
956
1082
|
configOverrides
|
|
957
1083
|
}) {
|
|
958
|
-
const pathname = (0,
|
|
959
|
-
const searchParams = (0,
|
|
1084
|
+
const pathname = (0, import_navigation2.usePathname)();
|
|
1085
|
+
const searchParams = (0, import_navigation2.useSearchParams)();
|
|
960
1086
|
const query = searchParams?.toString() ?? "";
|
|
961
1087
|
const path = query ? `${pathname}?${query}` : pathname;
|
|
962
|
-
(0,
|
|
1088
|
+
(0, import_react3.useLayoutEffect)(() => {
|
|
963
1089
|
const client = getOrCreateJmpAnalyticsForNextApp(configOverrides);
|
|
964
1090
|
void client?.trackPageView({ path });
|
|
965
1091
|
}, [path, configOverrides]);
|
|
@@ -968,10 +1094,10 @@ function JmpNextPageViewTrackerInner({
|
|
|
968
1094
|
function JmpNextPageViewTracker({
|
|
969
1095
|
configOverrides
|
|
970
1096
|
}) {
|
|
971
|
-
return /* @__PURE__ */ (0,
|
|
1097
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react3.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JmpNextPageViewTrackerInner, { configOverrides }) });
|
|
972
1098
|
}
|
|
973
1099
|
function useJmpTrackingActive(deferUntilConsent) {
|
|
974
|
-
const consentGranted = (0,
|
|
1100
|
+
const consentGranted = (0, import_react3.useSyncExternalStore)(
|
|
975
1101
|
subscribeJmpTrackingConsent,
|
|
976
1102
|
() => isJmpTrackingConsentGranted(),
|
|
977
1103
|
() => false
|
|
@@ -991,7 +1117,7 @@ function jmpConfigOverridesFromProps(props) {
|
|
|
991
1117
|
function JmpNextAnalyticsBootstrap({
|
|
992
1118
|
configOverrides
|
|
993
1119
|
}) {
|
|
994
|
-
(0,
|
|
1120
|
+
(0, import_react3.useLayoutEffect)(() => {
|
|
995
1121
|
getOrCreateJmpAnalyticsForNextApp(configOverrides);
|
|
996
1122
|
}, [configOverrides]);
|
|
997
1123
|
return null;
|
|
@@ -1002,17 +1128,16 @@ function JmpNextAnalytics({
|
|
|
1002
1128
|
trackingKey
|
|
1003
1129
|
} = {}) {
|
|
1004
1130
|
const active = useJmpTrackingActive(deferUntilConsent);
|
|
1005
|
-
const configOverrides = (0,
|
|
1131
|
+
const configOverrides = (0, import_react3.useMemo)(
|
|
1006
1132
|
() => jmpConfigOverridesFromProps({ analyticsUrl, trackingKey }),
|
|
1007
1133
|
[analyticsUrl, trackingKey]
|
|
1008
1134
|
);
|
|
1009
1135
|
if (!active) {
|
|
1010
1136
|
return null;
|
|
1011
1137
|
}
|
|
1012
|
-
return /* @__PURE__ */ (0,
|
|
1013
|
-
/* @__PURE__ */ (0,
|
|
1014
|
-
/* @__PURE__ */ (0,
|
|
1015
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JmpNextPageViewTracker, { configOverrides })
|
|
1138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
1139
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JmpNextAnalyticsBootstrap, { configOverrides }),
|
|
1140
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JmpNextPageViewTracker, { configOverrides })
|
|
1016
1141
|
] });
|
|
1017
1142
|
}
|
|
1018
1143
|
function JmpSiteRoot({
|
|
@@ -1021,8 +1146,8 @@ function JmpSiteRoot({
|
|
|
1021
1146
|
analyticsUrl,
|
|
1022
1147
|
trackingKey
|
|
1023
1148
|
}) {
|
|
1024
|
-
return /* @__PURE__ */ (0,
|
|
1025
|
-
/* @__PURE__ */ (0,
|
|
1149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
1150
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1026
1151
|
JmpNextAnalytics,
|
|
1027
1152
|
{
|
|
1028
1153
|
deferUntilConsent,
|
|
@@ -1035,7 +1160,7 @@ function JmpSiteRoot({
|
|
|
1035
1160
|
}
|
|
1036
1161
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1037
1162
|
0 && (module.exports = {
|
|
1038
|
-
|
|
1163
|
+
JmpGoogleTag,
|
|
1039
1164
|
JmpNextAnalytics,
|
|
1040
1165
|
JmpNextPageViewTracker,
|
|
1041
1166
|
JmpSiteRoot,
|