@sonordev/site-kit 5.1.0 → 5.3.1
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 +15 -0
- package/agent-manifest.json +23 -2
- package/dist/AnalyticsProvider-NA7EMJCA.mjs +10 -0
- package/dist/{AnalyticsProvider-2LCSA6G3.mjs.map → AnalyticsProvider-NA7EMJCA.mjs.map} +1 -1
- package/dist/AnalyticsProvider-XE3ADUUH.js +31 -0
- package/dist/{AnalyticsProvider-V2U3TQMH.js.map → AnalyticsProvider-XE3ADUUH.js.map} +1 -1
- package/dist/{BlogViewTracker-COTPD7WL.js → BlogViewTracker-DVJHZ7CM.js} +6 -6
- package/dist/{BlogViewTracker-COTPD7WL.js.map → BlogViewTracker-DVJHZ7CM.js.map} +1 -1
- package/dist/{BlogViewTracker-HG25ONRP.mjs → BlogViewTracker-MKJYTTJQ.mjs} +5 -5
- package/dist/{BlogViewTracker-HG25ONRP.mjs.map → BlogViewTracker-MKJYTTJQ.mjs.map} +1 -1
- package/dist/ChatWidget-BD4F4XLD.mjs +11 -0
- package/dist/{ChatWidget-RWO7R7EJ.mjs.map → ChatWidget-BD4F4XLD.mjs.map} +1 -1
- package/dist/ChatWidget-BZ3KOSXG.js +20 -0
- package/dist/{ChatWidget-4QUJYFXU.js.map → ChatWidget-BZ3KOSXG.js.map} +1 -1
- package/dist/EngageWidget-JPP6EDCJ.js +18 -0
- package/dist/{EngageWidget-RSOXB3YM.js.map → EngageWidget-JPP6EDCJ.js.map} +1 -1
- package/dist/EngageWidget-L7B6PCM3.mjs +9 -0
- package/dist/{EngageWidget-LF4AC4QN.mjs.map → EngageWidget-L7B6PCM3.mjs.map} +1 -1
- package/dist/{FileField-YJ7DZXC3.mjs → FileField-7WPRONDS.mjs} +5 -5
- package/dist/{FileField-YJ7DZXC3.mjs.map → FileField-7WPRONDS.mjs.map} +1 -1
- package/dist/{FileField-S2GUM3QB.js → FileField-GHT7444Y.js} +6 -6
- package/dist/{FileField-S2GUM3QB.js.map → FileField-GHT7444Y.js.map} +1 -1
- package/dist/{FormSpotlight-7WAXLXZA.js → FormSpotlight-BB2IB7IX.js} +18 -18
- package/dist/{FormSpotlight-7WAXLXZA.js.map → FormSpotlight-BB2IB7IX.js.map} +1 -1
- package/dist/{FormSpotlight-HLH5LQKI.mjs → FormSpotlight-WZVS6HHR.mjs} +4 -4
- package/dist/{FormSpotlight-HLH5LQKI.mjs.map → FormSpotlight-WZVS6HHR.mjs.map} +1 -1
- package/dist/{FormStage-LEZYERJB.js → FormStage-FLBLXENZ.js} +15 -15
- package/dist/{FormStage-LEZYERJB.js.map → FormStage-FLBLXENZ.js.map} +1 -1
- package/dist/{FormStage-Q5JW75AF.mjs → FormStage-Y3NHHMV2.mjs} +4 -4
- package/dist/{FormStage-Q5JW75AF.mjs.map → FormStage-Y3NHHMV2.mjs.map} +1 -1
- package/dist/ManagedForm-2OPCHDNJ.js +23 -0
- package/dist/{ManagedForm-H4SEFSAF.js.map → ManagedForm-2OPCHDNJ.js.map} +1 -1
- package/dist/ManagedForm-AJM6D4SK.mjs +14 -0
- package/dist/{ManagedForm-U3NFIVEC.mjs.map → ManagedForm-AJM6D4SK.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-KT2NGUNW.js → ManagedNewsletterForm-L2ZHJ7F4.js} +8 -8
- package/dist/{ManagedNewsletterForm-KT2NGUNW.js.map → ManagedNewsletterForm-L2ZHJ7F4.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-YKYW7B6P.mjs → ManagedNewsletterForm-MJI2JXIB.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-YKYW7B6P.mjs.map → ManagedNewsletterForm-MJI2JXIB.mjs.map} +1 -1
- package/dist/{SignalCore-2BH5PUGS.mjs → SignalCore-23YDDSWO.mjs} +5 -5
- package/dist/{SignalCore-2BH5PUGS.mjs.map → SignalCore-23YDDSWO.mjs.map} +1 -1
- package/dist/{SignalCore-JM4ODFL2.js → SignalCore-G2VM7NUP.js} +11 -11
- package/dist/{SignalCore-JM4ODFL2.js.map → SignalCore-G2VM7NUP.js.map} +1 -1
- package/dist/SitemapSync-T2N3TCWF.js +17 -0
- package/dist/{SitemapSync-J4UMJRTO.js.map → SitemapSync-T2N3TCWF.js.map} +1 -1
- package/dist/SitemapSync-YLWMU6J3.mjs +8 -0
- package/dist/{SitemapSync-5CXS2JGB.mjs.map → SitemapSync-YLWMU6J3.mjs.map} +1 -1
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/blog/index.js +20 -20
- package/dist/blog/index.mjs +3 -3
- package/dist/blog/server-ui.js +14 -14
- package/dist/blog/server-ui.mjs +2 -2
- package/dist/{chunk-44ZTBQH4.js → chunk-2MPOO6QJ.js} +3 -3
- package/dist/{chunk-44ZTBQH4.js.map → chunk-2MPOO6QJ.js.map} +1 -1
- package/dist/{chunk-E3GHVAMK.js → chunk-2VQ5YXOD.js} +23 -23
- package/dist/{chunk-E3GHVAMK.js.map → chunk-2VQ5YXOD.js.map} +1 -1
- package/dist/{chunk-CGQO7MFO.js → chunk-47566YF4.js} +14 -14
- package/dist/{chunk-CGQO7MFO.js.map → chunk-47566YF4.js.map} +1 -1
- package/dist/{chunk-ADOGOLYO.mjs → chunk-4HL6CAZ7.mjs} +4 -4
- package/dist/{chunk-ADOGOLYO.mjs.map → chunk-4HL6CAZ7.mjs.map} +1 -1
- package/dist/{chunk-DTNNZJYM.mjs → chunk-4IMZ45YA.mjs} +5 -5
- package/dist/{chunk-DTNNZJYM.mjs.map → chunk-4IMZ45YA.mjs.map} +1 -1
- package/dist/{chunk-ACLBRIYD.js → chunk-4S7BHFGT.js} +3 -3
- package/dist/{chunk-ACLBRIYD.js.map → chunk-4S7BHFGT.js.map} +1 -1
- package/dist/{chunk-FMOOQKZU.js → chunk-5HMN3FXL.js} +10 -10
- package/dist/{chunk-FMOOQKZU.js.map → chunk-5HMN3FXL.js.map} +1 -1
- package/dist/{chunk-TAM2D54C.js → chunk-5TGSM5EQ.js} +14 -14
- package/dist/{chunk-TAM2D54C.js.map → chunk-5TGSM5EQ.js.map} +1 -1
- package/dist/{chunk-BVLGJ2CZ.mjs → chunk-77HT6TYK.mjs} +3 -3
- package/dist/{chunk-BVLGJ2CZ.mjs.map → chunk-77HT6TYK.mjs.map} +1 -1
- package/dist/{chunk-2XHEUWHV.mjs → chunk-7UPPYERC.mjs} +4 -4
- package/dist/{chunk-2XHEUWHV.mjs.map → chunk-7UPPYERC.mjs.map} +1 -1
- package/dist/chunk-AEW7EFYU.js +147 -0
- package/dist/chunk-AEW7EFYU.js.map +1 -0
- package/dist/{chunk-OAJVITNO.mjs → chunk-AJBJH3BA.mjs} +3 -3
- package/dist/{chunk-OAJVITNO.mjs.map → chunk-AJBJH3BA.mjs.map} +1 -1
- package/dist/{chunk-SXNKLHOX.mjs → chunk-AKQA5ZYZ.mjs} +3 -3
- package/dist/{chunk-SXNKLHOX.mjs.map → chunk-AKQA5ZYZ.mjs.map} +1 -1
- package/dist/{chunk-WZMM57R2.js → chunk-APL44ZVK.js} +5 -5
- package/dist/{chunk-WZMM57R2.js.map → chunk-APL44ZVK.js.map} +1 -1
- package/dist/{chunk-JEI3CSY4.js → chunk-AVPMSJCQ.js} +4 -4
- package/dist/{chunk-JEI3CSY4.js.map → chunk-AVPMSJCQ.js.map} +1 -1
- package/dist/{chunk-TECD4AP7.mjs → chunk-COAVBUMS.mjs} +3 -3
- package/dist/{chunk-TECD4AP7.mjs.map → chunk-COAVBUMS.mjs.map} +1 -1
- package/dist/{chunk-BUDV7QHH.mjs → chunk-DBJRJ2Q2.mjs} +4 -4
- package/dist/{chunk-BUDV7QHH.mjs.map → chunk-DBJRJ2Q2.mjs.map} +1 -1
- package/dist/{chunk-OTHKWMDB.mjs → chunk-DN6A6KXH.mjs} +3 -3
- package/dist/{chunk-OTHKWMDB.mjs.map → chunk-DN6A6KXH.mjs.map} +1 -1
- package/dist/{chunk-GYAH4KFC.js → chunk-DTX4R45S.js} +40 -4
- package/dist/chunk-DTX4R45S.js.map +1 -0
- package/dist/{chunk-UMWVTIIZ.mjs → chunk-FH4LLJFL.mjs} +8 -8
- package/dist/{chunk-UMWVTIIZ.mjs.map → chunk-FH4LLJFL.mjs.map} +1 -1
- package/dist/{chunk-ZFZMN4LT.mjs → chunk-GM5E6R5W.mjs} +39 -3
- package/dist/chunk-GM5E6R5W.mjs.map +1 -0
- package/dist/{chunk-GZVSGQKT.js → chunk-GPH3VVLP.js} +3 -3
- package/dist/{chunk-GZVSGQKT.js.map → chunk-GPH3VVLP.js.map} +1 -1
- package/dist/{chunk-CBMHJPR7.js → chunk-GQTSQR63.js} +5 -5
- package/dist/{chunk-CBMHJPR7.js.map → chunk-GQTSQR63.js.map} +1 -1
- package/dist/{chunk-BGBJSMXT.js → chunk-GTK3CGWF.js} +6 -6
- package/dist/{chunk-BGBJSMXT.js.map → chunk-GTK3CGWF.js.map} +1 -1
- package/dist/{chunk-LB7LHVWI.mjs → chunk-H7274TKR.mjs} +9 -3
- package/dist/chunk-H7274TKR.mjs.map +1 -0
- package/dist/{chunk-MCXHQHIX.js → chunk-HIV5YK5G.js} +4 -4
- package/dist/{chunk-MCXHQHIX.js.map → chunk-HIV5YK5G.js.map} +1 -1
- package/dist/chunk-HRQ4367C.mjs +6 -0
- package/dist/{chunk-4SQ6PROR.mjs.map → chunk-HRQ4367C.mjs.map} +1 -1
- package/dist/{chunk-A3VGZAZQ.mjs → chunk-I72AUITZ.mjs} +3 -3
- package/dist/{chunk-A3VGZAZQ.mjs.map → chunk-I72AUITZ.mjs.map} +1 -1
- package/dist/{chunk-2ACKOMAL.js → chunk-IPV2TUAT.js} +9 -3
- package/dist/chunk-IPV2TUAT.js.map +1 -0
- package/dist/{chunk-CYQB5GLU.mjs → chunk-ISKJLXB4.mjs} +4 -4
- package/dist/{chunk-CYQB5GLU.mjs.map → chunk-ISKJLXB4.mjs.map} +1 -1
- package/dist/{chunk-HPIY7AR3.js → chunk-KP56C66Z.js} +14 -14
- package/dist/{chunk-HPIY7AR3.js.map → chunk-KP56C66Z.js.map} +1 -1
- package/dist/{chunk-PXAALKTP.js → chunk-KP5BFPGT.js} +5 -3
- package/dist/chunk-KP5BFPGT.js.map +1 -0
- package/dist/{chunk-VCNPTLK2.js → chunk-LFJRMY4V.js} +12 -12
- package/dist/{chunk-VCNPTLK2.js.map → chunk-LFJRMY4V.js.map} +1 -1
- package/dist/{chunk-2EJX56YJ.js → chunk-LHD45PGP.js} +8 -8
- package/dist/{chunk-2EJX56YJ.js.map → chunk-LHD45PGP.js.map} +1 -1
- package/dist/chunk-MLXUMVBK.mjs +142 -0
- package/dist/chunk-MLXUMVBK.mjs.map +1 -0
- package/dist/{chunk-ROJ25QM3.mjs → chunk-NW5CBNRU.mjs} +3 -3
- package/dist/{chunk-ROJ25QM3.mjs.map → chunk-NW5CBNRU.mjs.map} +1 -1
- package/dist/{chunk-5G2ZRQMO.mjs → chunk-PA5ZVCW2.mjs} +3 -3
- package/dist/{chunk-5G2ZRQMO.mjs.map → chunk-PA5ZVCW2.mjs.map} +1 -1
- package/dist/{chunk-IQLYFQKZ.js → chunk-QG7WHAGD.js} +15 -15
- package/dist/{chunk-IQLYFQKZ.js.map → chunk-QG7WHAGD.js.map} +1 -1
- package/dist/{chunk-FZISCIJV.mjs → chunk-R4PFWVGZ.mjs} +4 -4
- package/dist/{chunk-FZISCIJV.mjs.map → chunk-R4PFWVGZ.mjs.map} +1 -1
- package/dist/{chunk-5YKMHPJL.mjs → chunk-R5F2JQVX.mjs} +5 -3
- package/dist/chunk-R5F2JQVX.mjs.map +1 -0
- package/dist/{chunk-CKPFETIO.js → chunk-SHZXSIRH.js} +4 -4
- package/dist/{chunk-CKPFETIO.js.map → chunk-SHZXSIRH.js.map} +1 -1
- package/dist/{chunk-NSTY7ZZA.mjs → chunk-SI7R3IJX.mjs} +8 -8
- package/dist/{chunk-NSTY7ZZA.mjs.map → chunk-SI7R3IJX.mjs.map} +1 -1
- package/dist/{chunk-ACWGG4VW.js → chunk-TAIGHH5J.js} +9 -9
- package/dist/{chunk-ACWGG4VW.js.map → chunk-TAIGHH5J.js.map} +1 -1
- package/dist/chunk-TMQKZ4DO.js +8 -0
- package/dist/{chunk-YPEX4RDE.js.map → chunk-TMQKZ4DO.js.map} +1 -1
- package/dist/{chunk-VIIGOCX4.js → chunk-UJOEN4X6.js} +15 -15
- package/dist/{chunk-VIIGOCX4.js.map → chunk-UJOEN4X6.js.map} +1 -1
- package/dist/{chunk-EZLK2OQL.js → chunk-UYR22S67.js} +7 -7
- package/dist/{chunk-EZLK2OQL.js.map → chunk-UYR22S67.js.map} +1 -1
- package/dist/{chunk-5W56B52Z.mjs → chunk-VGX6G3TA.mjs} +3 -3
- package/dist/{chunk-5W56B52Z.mjs.map → chunk-VGX6G3TA.mjs.map} +1 -1
- package/dist/{chunk-WMNRTCYY.js → chunk-VLR2UYO4.js} +11 -11
- package/dist/{chunk-WMNRTCYY.js.map → chunk-VLR2UYO4.js.map} +1 -1
- package/dist/{chunk-VWVUYL5J.mjs → chunk-W47J6ZZG.mjs} +4 -4
- package/dist/{chunk-VWVUYL5J.mjs.map → chunk-W47J6ZZG.mjs.map} +1 -1
- package/dist/{chunk-NIJVVW4G.mjs → chunk-WD57YWY5.mjs} +3 -3
- package/dist/{chunk-NIJVVW4G.mjs.map → chunk-WD57YWY5.mjs.map} +1 -1
- package/dist/{chunk-ADBLBGCQ.mjs → chunk-WZZYTFDV.mjs} +3 -3
- package/dist/{chunk-ADBLBGCQ.mjs.map → chunk-WZZYTFDV.mjs.map} +1 -1
- package/dist/{chunk-EKTMXHBI.mjs → chunk-X4PL7R63.mjs} +3 -3
- package/dist/{chunk-EKTMXHBI.mjs.map → chunk-X4PL7R63.mjs.map} +1 -1
- package/dist/{chunk-6YKNDQYJ.mjs → chunk-XR47TOGW.mjs} +3 -3
- package/dist/{chunk-6YKNDQYJ.mjs.map → chunk-XR47TOGW.mjs.map} +1 -1
- package/dist/{chunk-DKRXPXOR.js → chunk-ZMFJXFUY.js} +3 -3
- package/dist/{chunk-DKRXPXOR.js.map → chunk-ZMFJXFUY.js.map} +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.mjs +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +56 -56
- package/dist/commerce/index.mjs +5 -5
- package/dist/config/index.js +2 -2
- package/dist/config/index.mjs +1 -1
- package/dist/engage/index.js +13 -13
- package/dist/engage/index.mjs +7 -7
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/FormField.d.ts +2 -1
- package/dist/forms/FormField.d.ts.map +1 -1
- package/dist/forms/ga4-identity.d.ts +31 -0
- package/dist/forms/ga4-identity.d.ts.map +1 -0
- package/dist/forms/ga4-identity.test.d.ts +2 -0
- package/dist/forms/ga4-identity.test.d.ts.map +1 -0
- package/dist/forms/index.js +24 -24
- package/dist/forms/index.mjs +10 -10
- package/dist/forms/server.js +11 -11
- package/dist/forms/server.mjs +9 -9
- package/dist/forms/static.js +8 -8
- package/dist/forms/static.mjs +7 -7
- package/dist/forms/styles.css +21 -0
- package/dist/forms/submitForm.d.ts.map +1 -1
- package/dist/forms/types.d.ts +13 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +63 -63
- package/dist/index.mjs +9 -9
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/motion/Parallax.d.ts +42 -0
- package/dist/motion/Parallax.d.ts.map +1 -0
- package/dist/motion/Reveal.d.ts +59 -0
- package/dist/motion/Reveal.d.ts.map +1 -0
- package/dist/motion/ScrollScene.d.ts +42 -0
- package/dist/motion/ScrollScene.d.ts.map +1 -0
- package/dist/motion/engine.d.ts +74 -0
- package/dist/motion/engine.d.ts.map +1 -0
- package/dist/motion/failsafe.d.ts +20 -0
- package/dist/motion/failsafe.d.ts.map +1 -0
- package/dist/motion/gsap.d.ts +84 -0
- package/dist/motion/gsap.d.ts.map +1 -0
- package/dist/motion/gsap.js +103 -0
- package/dist/motion/gsap.js.map +1 -0
- package/dist/motion/gsap.mjs +99 -0
- package/dist/motion/gsap.mjs.map +1 -0
- package/dist/motion/index.d.ts +31 -0
- package/dist/motion/index.d.ts.map +1 -0
- package/dist/motion/index.js +252 -0
- package/dist/motion/index.js.map +1 -0
- package/dist/motion/index.mjs +230 -0
- package/dist/motion/index.mjs.map +1 -0
- package/dist/motion/motion.test.d.ts +16 -0
- package/dist/motion/motion.test.d.ts.map +1 -0
- package/dist/motion/three.d.ts +105 -0
- package/dist/motion/three.d.ts.map +1 -0
- package/dist/motion/three.js +150 -0
- package/dist/motion/three.js.map +1 -0
- package/dist/motion/three.mjs +145 -0
- package/dist/motion/three.mjs.map +1 -0
- package/dist/proxy/index.js +3 -3
- package/dist/proxy/index.mjs +2 -2
- package/dist/proxy/securityHeaders.d.ts +21 -6
- package/dist/proxy/securityHeaders.d.ts.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/client.js +5 -5
- package/dist/seo/client.mjs +4 -4
- package/dist/seo/index.js +5 -5
- package/dist/seo/index.mjs +4 -4
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/build-entries.d.ts +7 -1
- package/dist/shared/build-entries.d.ts.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sync/index.js +16 -16
- package/dist/sync/index.mjs +4 -4
- package/package.json +28 -2
- package/skills/site-kit/SKILL.md +6 -0
- package/dist/AnalyticsProvider-2LCSA6G3.mjs +0 -10
- package/dist/AnalyticsProvider-V2U3TQMH.js +0 -31
- package/dist/ChatWidget-4QUJYFXU.js +0 -20
- package/dist/ChatWidget-RWO7R7EJ.mjs +0 -11
- package/dist/EngageWidget-LF4AC4QN.mjs +0 -9
- package/dist/EngageWidget-RSOXB3YM.js +0 -18
- package/dist/ManagedForm-H4SEFSAF.js +0 -23
- package/dist/ManagedForm-U3NFIVEC.mjs +0 -14
- package/dist/SitemapSync-5CXS2JGB.mjs +0 -8
- package/dist/SitemapSync-J4UMJRTO.js +0 -17
- package/dist/chunk-2ACKOMAL.js.map +0 -1
- package/dist/chunk-4SQ6PROR.mjs +0 -6
- package/dist/chunk-5YKMHPJL.mjs.map +0 -1
- package/dist/chunk-GYAH4KFC.js.map +0 -1
- package/dist/chunk-LB7LHVWI.mjs.map +0 -1
- package/dist/chunk-PXAALKTP.js.map +0 -1
- package/dist/chunk-YPEX4RDE.js +0 -8
- package/dist/chunk-ZFZMN4LT.mjs.map +0 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/motion/engine.ts
|
|
4
|
+
var scenes = /* @__PURE__ */ new Set();
|
|
5
|
+
var rafId = 0;
|
|
6
|
+
var io = null;
|
|
7
|
+
var initialized = false;
|
|
8
|
+
var reduced = false;
|
|
9
|
+
var measureTimer;
|
|
10
|
+
var clamp01 = (v) => Math.min(1, Math.max(0, v));
|
|
11
|
+
function sceneProgress(mode, top, height, scrollY, viewportHeight) {
|
|
12
|
+
if (mode === "view") {
|
|
13
|
+
return clamp01((scrollY + viewportHeight - top) / (viewportHeight + height));
|
|
14
|
+
}
|
|
15
|
+
return clamp01((scrollY - top) / Math.max(1, height - viewportHeight));
|
|
16
|
+
}
|
|
17
|
+
function measureAll() {
|
|
18
|
+
const sy = window.scrollY;
|
|
19
|
+
for (const s of scenes) {
|
|
20
|
+
const r = s.pin.getBoundingClientRect();
|
|
21
|
+
s.top = r.top + sy;
|
|
22
|
+
s.height = s.pin.offsetHeight;
|
|
23
|
+
s.settled = false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function targetFor(s, sy, vh) {
|
|
27
|
+
return sceneProgress(s.mode, s.top, s.height, sy, vh);
|
|
28
|
+
}
|
|
29
|
+
function frame() {
|
|
30
|
+
rafId = 0;
|
|
31
|
+
const sy = window.scrollY;
|
|
32
|
+
const vh = window.innerHeight;
|
|
33
|
+
let active = false;
|
|
34
|
+
for (const s of scenes) {
|
|
35
|
+
if (!s.visible) continue;
|
|
36
|
+
s.target = reduced ? s.reducedP : targetFor(s, sy, vh);
|
|
37
|
+
const d = s.target - s.p;
|
|
38
|
+
if (Math.abs(d) > 6e-4) {
|
|
39
|
+
s.p += d * s.lerp;
|
|
40
|
+
s.settled = false;
|
|
41
|
+
active = true;
|
|
42
|
+
} else if (!s.settled) {
|
|
43
|
+
s.p = s.target;
|
|
44
|
+
s.settled = true;
|
|
45
|
+
} else if (!s.continuous) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (s.continuous) active = true;
|
|
49
|
+
s.cb(s.p, { target: s.target, visible: s.visible });
|
|
50
|
+
}
|
|
51
|
+
if (active) schedule();
|
|
52
|
+
}
|
|
53
|
+
function schedule() {
|
|
54
|
+
if (!rafId) rafId = requestAnimationFrame(frame);
|
|
55
|
+
}
|
|
56
|
+
function wake() {
|
|
57
|
+
for (const s of scenes) s.settled = false;
|
|
58
|
+
schedule();
|
|
59
|
+
}
|
|
60
|
+
function init() {
|
|
61
|
+
if (initialized || typeof window === "undefined") return;
|
|
62
|
+
initialized = true;
|
|
63
|
+
const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
64
|
+
reduced = mq.matches;
|
|
65
|
+
mq.addEventListener?.("change", (e) => {
|
|
66
|
+
reduced = e.matches;
|
|
67
|
+
wake();
|
|
68
|
+
});
|
|
69
|
+
io = new IntersectionObserver(
|
|
70
|
+
(entries) => {
|
|
71
|
+
const sy = window.scrollY;
|
|
72
|
+
const vh = window.innerHeight;
|
|
73
|
+
for (const entry of entries) {
|
|
74
|
+
for (const s of scenes) {
|
|
75
|
+
if (s.pin !== entry.target) continue;
|
|
76
|
+
s.visible = entry.isIntersecting;
|
|
77
|
+
if (!entry.isIntersecting) {
|
|
78
|
+
s.p = reduced ? s.reducedP : targetFor(s, sy, vh);
|
|
79
|
+
s.settled = true;
|
|
80
|
+
s.cb(s.p, { target: s.p, visible: false });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
schedule();
|
|
85
|
+
},
|
|
86
|
+
{ rootMargin: "35% 0px 35% 0px" }
|
|
87
|
+
);
|
|
88
|
+
window.addEventListener("scroll", wake, { passive: true });
|
|
89
|
+
window.addEventListener("resize", () => {
|
|
90
|
+
clearTimeout(measureTimer);
|
|
91
|
+
measureTimer = setTimeout(() => {
|
|
92
|
+
measureAll();
|
|
93
|
+
wake();
|
|
94
|
+
}, 120);
|
|
95
|
+
});
|
|
96
|
+
document.fonts?.ready?.then(() => {
|
|
97
|
+
measureAll();
|
|
98
|
+
wake();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function prefersReducedMotion() {
|
|
102
|
+
if (typeof window === "undefined") return false;
|
|
103
|
+
init();
|
|
104
|
+
return reduced;
|
|
105
|
+
}
|
|
106
|
+
function refreshScenes() {
|
|
107
|
+
if (typeof window === "undefined" || !initialized) return;
|
|
108
|
+
measureAll();
|
|
109
|
+
wake();
|
|
110
|
+
}
|
|
111
|
+
function registerScene(pin, cb, opts = {}) {
|
|
112
|
+
if (typeof window === "undefined") return () => {
|
|
113
|
+
};
|
|
114
|
+
init();
|
|
115
|
+
const s = {
|
|
116
|
+
pin,
|
|
117
|
+
cb,
|
|
118
|
+
p: 0,
|
|
119
|
+
target: 0,
|
|
120
|
+
top: 0,
|
|
121
|
+
height: 1,
|
|
122
|
+
visible: false,
|
|
123
|
+
settled: false,
|
|
124
|
+
continuous: !!opts.continuous,
|
|
125
|
+
reducedP: opts.reducedP ?? 0.55,
|
|
126
|
+
mode: opts.mode ?? "pin",
|
|
127
|
+
lerp: Math.min(1, Math.max(0.01, opts.lerp ?? 0.16))
|
|
128
|
+
};
|
|
129
|
+
scenes.add(s);
|
|
130
|
+
io?.observe(pin);
|
|
131
|
+
const r = pin.getBoundingClientRect();
|
|
132
|
+
const margin = window.innerHeight * 0.35;
|
|
133
|
+
s.visible = r.bottom > -margin && r.top < window.innerHeight + margin;
|
|
134
|
+
measureAll();
|
|
135
|
+
schedule();
|
|
136
|
+
return () => {
|
|
137
|
+
scenes.delete(s);
|
|
138
|
+
io?.unobserve(pin);
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
exports.prefersReducedMotion = prefersReducedMotion;
|
|
143
|
+
exports.refreshScenes = refreshScenes;
|
|
144
|
+
exports.registerScene = registerScene;
|
|
145
|
+
exports.sceneProgress = sceneProgress;
|
|
146
|
+
//# sourceMappingURL=chunk-AEW7EFYU.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-AEW7EFYU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/motion/engine.ts"],"names":[],"mappings":";;;AAuEA,IAAM,MAAA,uBAAa,GAAA,EAAW;AAC9B,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAI,EAAA,GAAkC,IAAA;AACtC,IAAI,WAAA,GAAc,KAAA;AAClB,IAAI,OAAA,GAAU,KAAA;AACd,IAAI,YAAA;AAEJ,IAAM,OAAA,GAAU,CAAC,CAAA,KAAc,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAMlD,SAAS,aAAA,CACd,IAAA,EACA,GAAA,EACA,MAAA,EACA,SACA,cAAA,EACQ;AACR,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,OAAO,OAAA,CAAA,CAAS,OAAA,GAAU,cAAA,GAAiB,GAAA,KAAQ,iBAAiB,MAAA,CAAO,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,OAAA,CAAA,CAAS,UAAU,GAAA,IAAO,IAAA,CAAK,IAAI,CAAA,EAAG,MAAA,GAAS,cAAc,CAAC,CAAA;AACvE;AAEA,SAAS,UAAA,GAAa;AACpB,EAAA,MAAM,KAAK,MAAA,CAAO,OAAA;AAClB,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,CAAI,qBAAA,EAAsB;AACtC,IAAA,CAAA,CAAE,GAAA,GAAM,EAAE,GAAA,GAAM,EAAA;AAChB,IAAA,CAAA,CAAE,MAAA,GAAS,EAAE,GAAA,CAAI,YAAA;AACjB,IAAA,CAAA,CAAE,OAAA,GAAU,KAAA;AAAA,EACd;AACF;AAEA,SAAS,SAAA,CAAU,CAAA,EAAU,EAAA,EAAY,EAAA,EAAoB;AAC3D,EAAA,OAAO,aAAA,CAAc,EAAE,IAAA,EAAM,CAAA,CAAE,KAAK,CAAA,CAAE,MAAA,EAAQ,IAAI,EAAE,CAAA;AACtD;AAEA,SAAS,KAAA,GAAQ;AACf,EAAA,KAAA,GAAQ,CAAA;AACR,EAAA,MAAM,KAAK,MAAA,CAAO,OAAA;AAClB,EAAA,MAAM,KAAK,MAAA,CAAO,WAAA;AAClB,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,IAAI,CAAC,EAAE,OAAA,EAAS;AAChB,IAAA,CAAA,CAAE,SAAS,OAAA,GAAU,CAAA,CAAE,WAAW,SAAA,CAAU,CAAA,EAAG,IAAI,EAAE,CAAA;AACrD,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,CAAA;AACvB,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,EAAQ;AACxB,MAAA,CAAA,CAAE,CAAA,IAAK,IAAI,CAAA,CAAE,IAAA;AACb,MAAA,CAAA,CAAE,OAAA,GAAU,KAAA;AACZ,MAAA,MAAA,GAAS,IAAA;AAAA,IACX,CAAA,MAAA,IAAW,CAAC,CAAA,CAAE,OAAA,EAAS;AACrB,MAAA,CAAA,CAAE,IAAI,CAAA,CAAE,MAAA;AACR,MAAA,CAAA,CAAE,OAAA,GAAU,IAAA;AAAA,IACd,CAAA,MAAA,IAAW,CAAC,CAAA,CAAE,UAAA,EAAY;AACxB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAA,CAAE,YAAY,MAAA,GAAS,IAAA;AAC3B,IAAA,CAAA,CAAE,EAAA,CAAG,CAAA,CAAE,CAAA,EAAG,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACpD;AACA,EAAA,IAAI,QAAQ,QAAA,EAAS;AACvB;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,IAAI,CAAC,KAAA,EAAO,KAAA,GAAQ,qBAAA,CAAsB,KAAK,CAAA;AACjD;AAEA,SAAS,IAAA,GAAO;AACd,EAAA,KAAA,MAAW,CAAA,IAAK,MAAA,EAAQ,CAAA,CAAE,OAAA,GAAU,KAAA;AACpC,EAAA,QAAA,EAAS;AACX;AAEA,SAAS,IAAA,GAAO;AACd,EAAA,IAAI,WAAA,IAAe,OAAO,MAAA,KAAW,WAAA,EAAa;AAClD,EAAA,WAAA,GAAc,IAAA;AAEd,EAAA,MAAM,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA;AAC/D,EAAA,OAAA,GAAU,EAAA,CAAG,OAAA;AACb,EAAA,EAAA,CAAG,gBAAA,GAAmB,QAAA,EAAU,CAAC,CAAA,KAAM;AACrC,IAAA,OAAA,GAAU,CAAA,CAAE,OAAA;AACZ,IAAA,IAAA,EAAK;AAAA,EACP,CAAC,CAAA;AAED,EAAA,EAAA,GAAK,IAAI,oBAAA;AAAA,IACP,CAAC,OAAA,KAAY;AACX,MAAA,MAAM,KAAK,MAAA,CAAO,OAAA;AAClB,MAAA,MAAM,KAAK,MAAA,CAAO,WAAA;AAClB,MAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,QAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,UAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,KAAA,CAAM,MAAA,EAAQ;AAC5B,UAAA,CAAA,CAAE,UAAU,KAAA,CAAM,cAAA;AAClB,UAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAGzB,YAAA,CAAA,CAAE,IAAI,OAAA,GAAU,CAAA,CAAE,WAAW,SAAA,CAAU,CAAA,EAAG,IAAI,EAAE,CAAA;AAChD,YAAA,CAAA,CAAE,OAAA,GAAU,IAAA;AACZ,YAAA,CAAA,CAAE,EAAA,CAAG,EAAE,CAAA,EAAG,EAAE,QAAQ,CAAA,CAAE,CAAA,EAAG,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AACA,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AAAA,IACA,EAAE,YAAY,iBAAA;AAAkB,GAClC;AAEA,EAAA,MAAA,CAAO,iBAAiB,QAAA,EAAU,IAAA,EAAM,EAAE,OAAA,EAAS,MAAM,CAAA;AACzD,EAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,MAAM;AACtC,IAAA,YAAA,CAAa,YAAY,CAAA;AACzB,IAAA,YAAA,GAAe,WAAW,MAAM;AAC9B,MAAA,UAAA,EAAW;AACX,MAAA,IAAA,EAAK;AAAA,IACP,GAAG,GAAG,CAAA;AAAA,EACR,CAAC,CAAA;AACD,EAAA,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,MAAM;AAChC,IAAA,UAAA,EAAW;AACX,IAAA,IAAA,EAAK;AAAA,EACP,CAAC,CAAA;AACH;AAGO,SAAS,oBAAA,GAAgC;AAC9C,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,EAAA,IAAA,EAAK;AACL,EAAA,OAAO,OAAA;AACT;AAOO,SAAS,aAAA,GAAsB;AACpC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,WAAA,EAAa;AACnD,EAAA,UAAA,EAAW;AACX,EAAA,IAAA,EAAK;AACP;AAUO,SAAS,aAAA,CACd,GAAA,EACA,EAAA,EACA,IAAA,GAAqB,EAAC,EACV;AACZ,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAM;AAAA,EAAC,CAAA;AACjD,EAAA,IAAA,EAAK;AACL,EAAA,MAAM,CAAA,GAAW;AAAA,IACf,GAAA;AAAA,IACA,EAAA;AAAA,IACA,CAAA,EAAG,CAAA;AAAA,IACH,MAAA,EAAQ,CAAA;AAAA,IACR,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ,CAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,UAAA,EAAY,CAAC,CAAC,IAAA,CAAK,UAAA;AAAA,IACnB,QAAA,EAAU,KAAK,QAAA,IAAY,IAAA;AAAA,IAC3B,IAAA,EAAM,KAAK,IAAA,IAAQ,KAAA;AAAA,IACnB,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,IAAI,CAAC;AAAA,GACrD;AACA,EAAA,MAAA,CAAO,IAAI,CAAC,CAAA;AACZ,EAAA,EAAA,EAAI,QAAQ,GAAG,CAAA;AAIf,EAAA,MAAM,CAAA,GAAI,IAAI,qBAAA,EAAsB;AACpC,EAAA,MAAM,MAAA,GAAS,OAAO,WAAA,GAAc,IAAA;AACpC,EAAA,CAAA,CAAE,OAAA,GAAU,EAAE,MAAA,GAAS,CAAC,UAAU,CAAA,CAAE,GAAA,GAAM,OAAO,WAAA,GAAc,MAAA;AAC/D,EAAA,UAAA,EAAW;AACX,EAAA,QAAA,EAAS;AACT,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AACf,IAAA,EAAA,EAAI,UAAU,GAAG,CAAA;AAAA,EACnB,CAAA;AACF","file":"chunk-AEW7EFYU.js","sourcesContent":["/**\n * @sonordev/site-kit/motion — the scroll engine.\n *\n * One idea, applied everywhere: pin a scene, turn scroll into p in [0,1],\n * render(p). Every motion primitive in this module (Reveal, Parallax,\n * ScrollScene, the GSAP and three.js tiers) sits on this loop.\n *\n * Rules the engine enforces so every site inherits them:\n *\n * - Native scroll only. The wheel is never hijacked and the body is never\n * transformed; the liquid feel comes from each scene lerping its rendered\n * p toward the real scroll position.\n * - One shared requestAnimationFrame loop drives every visible scene and\n * sleeps when everything has settled. A page with thirty parallax layers\n * costs one rAF, not thirty.\n * - Offscreen scenes (beyond a 35% viewport margin) are not rendered at all.\n * - prefers-reduced-motion holds each scene at a fixed representative frame\n * instead of scrubbing, and the loop stays asleep.\n * - Nothing here touches the DOM at import time, so it is safe in any module\n * graph a server component reaches; scenes register from effects.\n *\n * Zero dependencies, ~2KB. Extracted from the upforgelabs.com engine\n * (components/cinema/engine.ts) — that repo's docs/SCROLL-CINEMA.md is the\n * full playbook for building scenes on top of it.\n */\n\nexport type SceneMode = 'pin' | 'view'\n\nexport interface SceneInfo {\n /** The un-smoothed progress the scene is easing toward. */\n target: number\n /** False on the single frame rendered as the scene leaves the margin. */\n visible: boolean\n}\n\nexport type SceneRender = (p: number, info: SceneInfo) => void\n\nexport interface SceneOptions {\n /** Keep rendering every frame while visible (shader time, particles). */\n continuous?: boolean\n /** Frame to hold under prefers-reduced-motion. Default 0.55. */\n reducedP?: number\n /**\n * \"pin\": progress across a tall sticky wrapper — 0 when its top reaches\n * the top of the viewport, 1 when its bottom does (default).\n * \"view\": progress of a normal block traveling through the viewport —\n * 0 as its top enters at the bottom, 1 as its bottom leaves at the top.\n */\n mode?: SceneMode\n /**\n * Per-frame interpolation toward the real scroll position, in (0, 1].\n * Lower is more liquid, 1 is locked to the scrollbar. Default 0.16.\n */\n lerp?: number\n}\n\ninterface Scene {\n pin: HTMLElement\n cb: SceneRender\n p: number\n target: number\n top: number\n height: number\n visible: boolean\n settled: boolean\n continuous: boolean\n reducedP: number\n mode: SceneMode\n lerp: number\n}\n\nconst scenes = new Set<Scene>()\nlet rafId = 0\nlet io: IntersectionObserver | null = null\nlet initialized = false\nlet reduced = false\nlet measureTimer: ReturnType<typeof setTimeout> | undefined\n\nconst clamp01 = (v: number) => Math.min(1, Math.max(0, v))\n\n/**\n * Pure progress math, exported so it can be unit-tested and reused by\n * anything that wants the same mapping without registering a scene.\n */\nexport function sceneProgress(\n mode: SceneMode,\n top: number,\n height: number,\n scrollY: number,\n viewportHeight: number,\n): number {\n if (mode === 'view') {\n return clamp01((scrollY + viewportHeight - top) / (viewportHeight + height))\n }\n return clamp01((scrollY - top) / Math.max(1, height - viewportHeight))\n}\n\nfunction measureAll() {\n const sy = window.scrollY\n for (const s of scenes) {\n const r = s.pin.getBoundingClientRect()\n s.top = r.top + sy\n s.height = s.pin.offsetHeight\n s.settled = false\n }\n}\n\nfunction targetFor(s: Scene, sy: number, vh: number): number {\n return sceneProgress(s.mode, s.top, s.height, sy, vh)\n}\n\nfunction frame() {\n rafId = 0\n const sy = window.scrollY\n const vh = window.innerHeight\n let active = false\n for (const s of scenes) {\n if (!s.visible) continue\n s.target = reduced ? s.reducedP : targetFor(s, sy, vh)\n const d = s.target - s.p\n if (Math.abs(d) > 0.0006) {\n s.p += d * s.lerp\n s.settled = false\n active = true\n } else if (!s.settled) {\n s.p = s.target\n s.settled = true\n } else if (!s.continuous) {\n continue\n }\n if (s.continuous) active = true\n s.cb(s.p, { target: s.target, visible: s.visible })\n }\n if (active) schedule()\n}\n\nfunction schedule() {\n if (!rafId) rafId = requestAnimationFrame(frame)\n}\n\nfunction wake() {\n for (const s of scenes) s.settled = false\n schedule()\n}\n\nfunction init() {\n if (initialized || typeof window === 'undefined') return\n initialized = true\n\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)')\n reduced = mq.matches\n mq.addEventListener?.('change', (e) => {\n reduced = e.matches\n wake()\n })\n\n io = new IntersectionObserver(\n (entries) => {\n const sy = window.scrollY\n const vh = window.innerHeight\n for (const entry of entries) {\n for (const s of scenes) {\n if (s.pin !== entry.target) continue\n s.visible = entry.isIntersecting\n if (!entry.isIntersecting) {\n // Leaving mid-lerp would freeze a stale in-between frame. Snap\n // to the resting state on exit and tell the scene it is gone.\n s.p = reduced ? s.reducedP : targetFor(s, sy, vh)\n s.settled = true\n s.cb(s.p, { target: s.p, visible: false })\n }\n }\n }\n schedule()\n },\n { rootMargin: '35% 0px 35% 0px' },\n )\n\n window.addEventListener('scroll', wake, { passive: true })\n window.addEventListener('resize', () => {\n clearTimeout(measureTimer)\n measureTimer = setTimeout(() => {\n measureAll()\n wake()\n }, 120)\n })\n document.fonts?.ready?.then(() => {\n measureAll()\n wake()\n })\n}\n\n/** True when the visitor asked for reduced motion. Always false on the server. */\nexport function prefersReducedMotion(): boolean {\n if (typeof window === 'undefined') return false\n init()\n return reduced\n}\n\n/**\n * Re-measure every scene and redraw. Call after a layout change the engine\n * cannot see — an accordion opening above a scene, images without\n * dimensions settling, a font swap outside document.fonts.\n */\nexport function refreshScenes(): void {\n if (typeof window === 'undefined' || !initialized) return\n measureAll()\n wake()\n}\n\n/**\n * Register a scene. Returns an unregister function for effect cleanup.\n *\n * `pin` is the element whose position drives progress: the tall wrapper of\n * a sticky stage in \"pin\" mode, or the block itself in \"view\" mode. The\n * callback runs only while the pin is within 35% of the viewport, plus one\n * final frame as it leaves.\n */\nexport function registerScene(\n pin: HTMLElement,\n cb: SceneRender,\n opts: SceneOptions = {},\n): () => void {\n if (typeof window === 'undefined') return () => {}\n init()\n const s: Scene = {\n pin,\n cb,\n p: 0,\n target: 0,\n top: 0,\n height: 1,\n visible: false,\n settled: false,\n continuous: !!opts.continuous,\n reducedP: opts.reducedP ?? 0.55,\n mode: opts.mode ?? 'pin',\n lerp: Math.min(1, Math.max(0.01, opts.lerp ?? 0.16)),\n }\n scenes.add(s)\n io?.observe(pin)\n // A pin the observer already watches fires no new entry for a scene that\n // registers late (after a lazy import, say), so seed visibility from the\n // current geometry instead of waiting for a change that never comes.\n const r = pin.getBoundingClientRect()\n const margin = window.innerHeight * 0.35\n s.visible = r.bottom > -margin && r.top < window.innerHeight + margin\n measureAll()\n schedule()\n return () => {\n scenes.delete(s)\n io?.unobserve(pin)\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { registerAnalyticsDispatcher } from './chunk-3DPXOZAU.mjs';
|
|
3
3
|
import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-ZZQAGCSI.mjs';
|
|
4
|
-
import { sonorFetch, sonorBeacon } from './chunk-
|
|
4
|
+
import { sonorFetch, sonorBeacon } from './chunk-4HL6CAZ7.mjs';
|
|
5
5
|
import { createContext, useRef, useEffect, useState, useCallback, useMemo, useContext } from 'react';
|
|
6
6
|
import { usePathname } from 'next/navigation';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1098,5 +1098,5 @@ function useTrackEvent() {
|
|
|
1098
1098
|
}
|
|
1099
1099
|
|
|
1100
1100
|
export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent };
|
|
1101
|
-
//# sourceMappingURL=chunk-
|
|
1102
|
-
//# sourceMappingURL=chunk-
|
|
1101
|
+
//# sourceMappingURL=chunk-AJBJH3BA.mjs.map
|
|
1102
|
+
//# sourceMappingURL=chunk-AJBJH3BA.mjs.map
|