@jmp-technologies/analytics 0.1.21 → 0.1.23
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 +7 -7
- package/dist/astro/client.cjs +36 -18
- package/dist/astro/client.cjs.map +1 -1
- package/dist/astro/client.d.cts +1 -11
- package/dist/astro/client.d.ts +1 -11
- package/dist/astro/client.js +2 -2
- package/dist/astro/content.cjs +22 -18
- package/dist/astro/content.cjs.map +1 -1
- package/dist/astro/content.js +3 -3
- package/dist/astro/integration.cjs +23 -19
- package/dist/astro/integration.cjs.map +1 -1
- package/dist/astro/integration.js +3 -3
- package/dist/astro/middleware.cjs +61 -18
- package/dist/astro/middleware.cjs.map +1 -1
- package/dist/astro/middleware.d.cts +1 -1
- package/dist/astro/middleware.d.ts +1 -1
- package/dist/astro/middleware.js +2 -2
- package/dist/astro/register.cjs +23 -19
- package/dist/astro/register.cjs.map +1 -1
- package/dist/astro/register.js +3 -3
- package/dist/chunk-776LXUWH.js +59 -0
- package/dist/chunk-776LXUWH.js.map +1 -0
- package/dist/{chunk-GLEOJIKL.js → chunk-B3FYJIXY.js} +24 -19
- package/dist/chunk-B3FYJIXY.js.map +1 -0
- package/dist/{chunk-DXHJGKIL.js → chunk-G3SNRG7J.js} +14 -8
- package/dist/chunk-G3SNRG7J.js.map +1 -0
- package/dist/{chunk-6TDPOZMJ.js → chunk-HIJ6OV4S.js} +3 -3
- package/dist/{chunk-XA55GBSU.js → chunk-QUNCGUEE.js} +3 -3
- package/dist/{chunk-PDOQ2XBW.js → chunk-W6VYMD2P.js} +48 -26
- package/dist/chunk-W6VYMD2P.js.map +1 -0
- package/dist/env-public-B6Y0DG68.d.cts +14 -0
- package/dist/env-public-B6Y0DG68.d.ts +14 -0
- package/dist/index.cjs +70 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/next/content.cjs +22 -18
- package/dist/next/content.cjs.map +1 -1
- package/dist/next/content.js +3 -3
- package/dist/next/instrumentation.cjs +23 -19
- package/dist/next/instrumentation.cjs.map +1 -1
- package/dist/next/instrumentation.js +2 -2
- package/dist/next/middleware.cjs +61 -18
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.d.cts +1 -1
- package/dist/next/middleware.d.ts +1 -1
- package/dist/next/middleware.js +2 -2
- package/dist/next.cjs +138 -76
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +13 -3
- package/dist/next.d.ts +13 -3
- package/dist/next.js +45 -8
- package/dist/next.js.map +1 -1
- package/dist/react.cjs +75 -45
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +3 -3
- package/dist/{track-page-view-BLS0YfL-.d.ts → track-page-view-CcPlzQNB.d.ts} +3 -0
- package/dist/{track-page-view-DfCyWHqe.d.cts → track-page-view-Cr8I4Unm.d.cts} +3 -0
- package/package.json +1 -1
- package/dist/chunk-DXHJGKIL.js.map +0 -1
- package/dist/chunk-GLEOJIKL.js.map +0 -1
- package/dist/chunk-PDOQ2XBW.js.map +0 -1
- package/dist/chunk-TK4VRDMO.js +0 -19
- package/dist/chunk-TK4VRDMO.js.map +0 -1
- /package/dist/{chunk-6TDPOZMJ.js.map → chunk-HIJ6OV4S.js.map} +0 -0
- /package/dist/{chunk-XA55GBSU.js.map → chunk-QUNCGUEE.js.map} +0 -0
package/dist/next/middleware.js
CHANGED
package/dist/next.cjs
CHANGED
|
@@ -38,7 +38,9 @@ __export(next_exports, {
|
|
|
38
38
|
JmpTrackedMailtoLink: () => JmpTrackedMailtoLink,
|
|
39
39
|
JmpTrackedTelLink: () => JmpTrackedTelLink,
|
|
40
40
|
buildLandingCaptureInlineScript: () => buildLandingCaptureInlineScript,
|
|
41
|
+
getOrCreateJmpAnalyticsForNextApp: () => getOrCreateJmpAnalyticsForNextApp,
|
|
41
42
|
isJmpTrackingConsentGranted: () => isJmpTrackingConsentGranted,
|
|
43
|
+
readJmpPublicEnvFromProcess: () => readJmpPublicEnvFromProcess,
|
|
42
44
|
setJmpTrackingConsent: () => setJmpTrackingConsent,
|
|
43
45
|
subscribeJmpTrackingConsent: () => subscribeJmpTrackingConsent,
|
|
44
46
|
useJmpAnalytics: () => useJmpAnalytics
|
|
@@ -190,6 +192,86 @@ function buildLandingCaptureInlineScript() {
|
|
|
190
192
|
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){}})();`;
|
|
191
193
|
}
|
|
192
194
|
|
|
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
|
+
// src/tracker/page-view-dedupe.ts
|
|
245
|
+
var JMP_PAGE_VIEW_DEDUPE_STORAGE_KEY = "jmp_analytics_last_pv";
|
|
246
|
+
var moduleLastPath = "";
|
|
247
|
+
var moduleLastAt = 0;
|
|
248
|
+
function shouldDedupeBrowserPageView(pathname, dedupeMs, storage = null) {
|
|
249
|
+
if (dedupeMs <= 0) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
const now = Date.now();
|
|
253
|
+
if (pathname === moduleLastPath && now - moduleLastAt < dedupeMs) {
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
const raw = storage?.getItem(JMP_PAGE_VIEW_DEDUPE_STORAGE_KEY);
|
|
258
|
+
if (raw) {
|
|
259
|
+
const prev = JSON.parse(raw);
|
|
260
|
+
if (prev.path === pathname && now - prev.at < dedupeMs) {
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
storage?.setItem(
|
|
265
|
+
JMP_PAGE_VIEW_DEDUPE_STORAGE_KEY,
|
|
266
|
+
JSON.stringify({ path: pathname, at: now })
|
|
267
|
+
);
|
|
268
|
+
} catch {
|
|
269
|
+
}
|
|
270
|
+
moduleLastPath = pathname;
|
|
271
|
+
moduleLastAt = now;
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
|
|
193
275
|
// src/contact-link-classifier.ts
|
|
194
276
|
var BOOKING_LINK_HOSTS = [
|
|
195
277
|
"calendly.com",
|
|
@@ -309,10 +391,6 @@ function classifyContactHref(href) {
|
|
|
309
391
|
return null;
|
|
310
392
|
}
|
|
311
393
|
|
|
312
|
-
// src/constants.ts
|
|
313
|
-
var JMP_TRACKING_CONSENT_STORAGE_KEY = "jmp_analytics_consent_v1";
|
|
314
|
-
var DEFAULT_JMP_BROWSER_PAGE_VIEW_DEDUPE_MS = 800;
|
|
315
|
-
|
|
316
394
|
// src/consent.ts
|
|
317
395
|
var moduleTrackingConsentGranted = true;
|
|
318
396
|
var trackingConsentListeners = /* @__PURE__ */ new Set();
|
|
@@ -438,8 +516,6 @@ function createJmpAnalytics(config) {
|
|
|
438
516
|
function canSend() {
|
|
439
517
|
return isJmpTrackingConsentGranted();
|
|
440
518
|
}
|
|
441
|
-
let lastDedupePath = "";
|
|
442
|
-
let lastDedupeAt = 0;
|
|
443
519
|
async function send(body) {
|
|
444
520
|
if (!canSend()) {
|
|
445
521
|
return;
|
|
@@ -504,19 +580,6 @@ function createJmpAnalytics(config) {
|
|
|
504
580
|
throw new Error(message);
|
|
505
581
|
}
|
|
506
582
|
}
|
|
507
|
-
function shouldDedupePageView(path) {
|
|
508
|
-
const ms = config.pageViewDedupeMs ?? 0;
|
|
509
|
-
if (ms <= 0 || typeof window === "undefined") {
|
|
510
|
-
return false;
|
|
511
|
-
}
|
|
512
|
-
const now = Date.now();
|
|
513
|
-
if (path === lastDedupePath && now - lastDedupeAt < ms) {
|
|
514
|
-
return true;
|
|
515
|
-
}
|
|
516
|
-
lastDedupePath = path;
|
|
517
|
-
lastDedupeAt = now;
|
|
518
|
-
return false;
|
|
519
|
-
}
|
|
520
583
|
function trackPageView(options) {
|
|
521
584
|
if (!canSend()) {
|
|
522
585
|
return Promise.resolve();
|
|
@@ -536,7 +599,9 @@ function createJmpAnalytics(config) {
|
|
|
536
599
|
search = window.location.search.replace(/^\?/, "");
|
|
537
600
|
}
|
|
538
601
|
const path = search ? `${pathname}?${search}` : pathname;
|
|
539
|
-
|
|
602
|
+
const dedupeMs = config.pageViewDedupeMs ?? DEFAULT_JMP_BROWSER_PAGE_VIEW_DEDUPE_MS;
|
|
603
|
+
const storage = typeof window !== "undefined" ? window.sessionStorage : null;
|
|
604
|
+
if (shouldDedupeBrowserPageView(pathname, dedupeMs, storage)) {
|
|
540
605
|
return Promise.resolve();
|
|
541
606
|
}
|
|
542
607
|
const metadata = options?.metadata && typeof options.metadata === "object" ? { ...options.metadata } : {};
|
|
@@ -698,7 +763,7 @@ function createJmpAnalytics(config) {
|
|
|
698
763
|
if (!(anchor instanceof HTMLAnchorElement)) {
|
|
699
764
|
return;
|
|
700
765
|
}
|
|
701
|
-
if (anchor.closest("[data-jmp-no-track]")) {
|
|
766
|
+
if (anchor.closest("[data-jmp-no-track]") || anchor.closest("[data-jmp-tracked]")) {
|
|
702
767
|
return;
|
|
703
768
|
}
|
|
704
769
|
const href = anchor.getAttribute("href") ?? "";
|
|
@@ -764,54 +829,15 @@ function createJmpAnalytics(config) {
|
|
|
764
829
|
};
|
|
765
830
|
}
|
|
766
831
|
|
|
767
|
-
// src/env-public.ts
|
|
768
|
-
function readProcessEnv(name) {
|
|
769
|
-
if (typeof process === "undefined" || !process.env) return void 0;
|
|
770
|
-
const v = process.env[name];
|
|
771
|
-
return typeof v === "string" && v.length > 0 ? v : void 0;
|
|
772
|
-
}
|
|
773
|
-
function firstDefined(...values) {
|
|
774
|
-
for (const v of values) {
|
|
775
|
-
if (v) return v;
|
|
776
|
-
}
|
|
777
|
-
return void 0;
|
|
778
|
-
}
|
|
779
|
-
function readJmpPublicEnvFromProcess(overrides) {
|
|
780
|
-
const analyticsUrl = firstDefined(
|
|
781
|
-
overrides?.analyticsUrl,
|
|
782
|
-
readProcessEnv("NEXT_PUBLIC_JMP_ANALYTICS_URL"),
|
|
783
|
-
readProcessEnv("PUBLIC_JMP_ANALYTICS_URL")
|
|
784
|
-
);
|
|
785
|
-
const trackingKey = firstDefined(
|
|
786
|
-
overrides?.trackingKey,
|
|
787
|
-
readProcessEnv("NEXT_PUBLIC_JMP_TRACKING_KEY"),
|
|
788
|
-
readProcessEnv("PUBLIC_JMP_TRACKING_KEY")
|
|
789
|
-
);
|
|
790
|
-
const requireConsentRaw = firstDefined(
|
|
791
|
-
overrides?.requireConsent !== void 0 ? String(overrides.requireConsent) : void 0,
|
|
792
|
-
readProcessEnv("NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT"),
|
|
793
|
-
readProcessEnv("PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT")
|
|
794
|
-
);
|
|
795
|
-
const autoContactRaw = firstDefined(
|
|
796
|
-
overrides?.autoContactLinks !== void 0 ? String(overrides.autoContactLinks) : void 0,
|
|
797
|
-
readProcessEnv("NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS"),
|
|
798
|
-
readProcessEnv("PUBLIC_JMP_AUTO_CONTACT_LINKS")
|
|
799
|
-
);
|
|
800
|
-
return {
|
|
801
|
-
analyticsUrl,
|
|
802
|
-
trackingKey,
|
|
803
|
-
requireConsent: requireConsentRaw === "true",
|
|
804
|
-
autoContactLinks: autoContactRaw === "true"
|
|
805
|
-
};
|
|
806
|
-
}
|
|
807
|
-
|
|
808
832
|
// src/env/browser.ts
|
|
809
833
|
function getJmpBrowserAnalyticsConfigFromEnv(overrides) {
|
|
810
834
|
const pub = readJmpPublicEnvFromProcess();
|
|
811
|
-
|
|
835
|
+
const baseUrl = overrides?.baseUrl ?? pub.analyticsUrl;
|
|
836
|
+
const trackingKey = overrides?.trackingKey ?? pub.trackingKey;
|
|
837
|
+
if (!baseUrl || !trackingKey) return null;
|
|
812
838
|
return {
|
|
813
|
-
baseUrl
|
|
814
|
-
trackingKey
|
|
839
|
+
baseUrl,
|
|
840
|
+
trackingKey,
|
|
815
841
|
pageViewDedupeMs: DEFAULT_JMP_BROWSER_PAGE_VIEW_DEDUPE_MS,
|
|
816
842
|
...overrides,
|
|
817
843
|
requireConsent: overrides?.requireConsent ?? pub.requireConsent,
|
|
@@ -828,11 +854,37 @@ function getOrCreateJmpAnalyticsFromBrowserEnv(overrides) {
|
|
|
828
854
|
return jmpAnalyticsBrowserSingleton;
|
|
829
855
|
}
|
|
830
856
|
|
|
857
|
+
// src/env/browser-next.ts
|
|
858
|
+
function readNextAutoContactLinksEnv() {
|
|
859
|
+
if (typeof process === "undefined" || !process.env) {
|
|
860
|
+
return void 0;
|
|
861
|
+
}
|
|
862
|
+
const { env } = process;
|
|
863
|
+
const raw = env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS ?? env.PUBLIC_JMP_AUTO_CONTACT_LINKS;
|
|
864
|
+
return typeof raw === "string" && raw.length > 0 ? raw : void 0;
|
|
865
|
+
}
|
|
866
|
+
function getJmpNextAnalyticsConfigOverrides() {
|
|
867
|
+
const autoEnv = readNextAutoContactLinksEnv();
|
|
868
|
+
const autoContactLinks = autoEnv === "false" ? false : autoEnv === "true" ? true : true;
|
|
869
|
+
return { autoTrackContactLinks: autoContactLinks };
|
|
870
|
+
}
|
|
871
|
+
function getOrCreateJmpAnalyticsForNextApp(overrides) {
|
|
872
|
+
return getOrCreateJmpAnalyticsFromBrowserEnv({
|
|
873
|
+
...getJmpNextAnalyticsConfigOverrides(),
|
|
874
|
+
...overrides
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
|
|
831
878
|
// src/react.tsx
|
|
832
879
|
var import_react = require("react");
|
|
833
880
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
834
|
-
function
|
|
835
|
-
|
|
881
|
+
function trackCallClickFromCurrentPath() {
|
|
882
|
+
const path = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
883
|
+
void getOrCreateJmpAnalyticsFromBrowserEnv()?.trackCallClick(path);
|
|
884
|
+
}
|
|
885
|
+
function trackEmailClickFromCurrentPath() {
|
|
886
|
+
const path = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
887
|
+
void getOrCreateJmpAnalyticsFromBrowserEnv()?.trackEmailClick(path);
|
|
836
888
|
}
|
|
837
889
|
function JmpTrackedTelLink({
|
|
838
890
|
href,
|
|
@@ -843,11 +895,10 @@ function JmpTrackedTelLink({
|
|
|
843
895
|
"a",
|
|
844
896
|
{
|
|
845
897
|
href,
|
|
898
|
+
"data-jmp-tracked": "true",
|
|
846
899
|
...rest,
|
|
847
900
|
onClick: (e) => {
|
|
848
|
-
|
|
849
|
-
const path = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
850
|
-
void client?.trackCallClick(path);
|
|
901
|
+
trackCallClickFromCurrentPath();
|
|
851
902
|
onClick?.(e);
|
|
852
903
|
}
|
|
853
904
|
}
|
|
@@ -862,11 +913,10 @@ function JmpTrackedMailtoLink({
|
|
|
862
913
|
"a",
|
|
863
914
|
{
|
|
864
915
|
href,
|
|
916
|
+
"data-jmp-tracked": "true",
|
|
865
917
|
...rest,
|
|
866
918
|
onClick: (e) => {
|
|
867
|
-
|
|
868
|
-
const path = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
869
|
-
void client?.trackEmailClick(path);
|
|
919
|
+
trackEmailClickFromCurrentPath();
|
|
870
920
|
onClick?.(e);
|
|
871
921
|
}
|
|
872
922
|
}
|
|
@@ -875,8 +925,11 @@ function JmpTrackedMailtoLink({
|
|
|
875
925
|
|
|
876
926
|
// src/next.tsx
|
|
877
927
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
928
|
+
function useJmpAnalytics() {
|
|
929
|
+
return (0, import_react2.useMemo)(() => getOrCreateJmpAnalyticsForNextApp(), []);
|
|
930
|
+
}
|
|
878
931
|
function JmpLandingCaptureScript({
|
|
879
|
-
trackingKey =
|
|
932
|
+
trackingKey = readJmpPublicEnvFromProcess().trackingKey
|
|
880
933
|
} = {}) {
|
|
881
934
|
if (!trackingKey?.trim()) {
|
|
882
935
|
return null;
|
|
@@ -898,7 +951,7 @@ function JmpNextPageViewTrackerInner() {
|
|
|
898
951
|
const query = searchParams?.toString() ?? "";
|
|
899
952
|
const path = query ? `${pathname}?${query}` : pathname;
|
|
900
953
|
(0, import_react2.useLayoutEffect)(() => {
|
|
901
|
-
const client =
|
|
954
|
+
const client = getOrCreateJmpAnalyticsForNextApp();
|
|
902
955
|
void client?.trackPageView({ path });
|
|
903
956
|
}, [path]);
|
|
904
957
|
return null;
|
|
@@ -914,14 +967,21 @@ function useJmpTrackingActive(deferUntilConsent) {
|
|
|
914
967
|
);
|
|
915
968
|
return !deferUntilConsent || consentGranted;
|
|
916
969
|
}
|
|
970
|
+
function JmpNextAnalyticsBootstrap() {
|
|
971
|
+
(0, import_react2.useLayoutEffect)(() => {
|
|
972
|
+
getOrCreateJmpAnalyticsForNextApp();
|
|
973
|
+
}, []);
|
|
974
|
+
return null;
|
|
975
|
+
}
|
|
917
976
|
function JmpNextAnalytics({
|
|
918
|
-
deferUntilConsent =
|
|
977
|
+
deferUntilConsent = readJmpPublicEnvFromProcess().requireConsent === true
|
|
919
978
|
} = {}) {
|
|
920
979
|
const active = useJmpTrackingActive(deferUntilConsent);
|
|
921
980
|
if (!active) {
|
|
922
981
|
return null;
|
|
923
982
|
}
|
|
924
983
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
984
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JmpNextAnalyticsBootstrap, {}),
|
|
925
985
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JmpLandingCaptureScript, {}),
|
|
926
986
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JmpNextPageViewTracker, {})
|
|
927
987
|
] });
|
|
@@ -944,7 +1004,9 @@ function JmpSiteRoot({
|
|
|
944
1004
|
JmpTrackedMailtoLink,
|
|
945
1005
|
JmpTrackedTelLink,
|
|
946
1006
|
buildLandingCaptureInlineScript,
|
|
1007
|
+
getOrCreateJmpAnalyticsForNextApp,
|
|
947
1008
|
isJmpTrackingConsentGranted,
|
|
1009
|
+
readJmpPublicEnvFromProcess,
|
|
948
1010
|
setJmpTrackingConsent,
|
|
949
1011
|
subscribeJmpTrackingConsent,
|
|
950
1012
|
useJmpAnalytics
|