@sonordev/site-kit 5.6.0 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/agent-manifest.json +24 -4
- package/dist/AnalyticsProvider-OCXRNIVE.js +33 -0
- package/dist/{AnalyticsProvider-6PXC7UDP.js.map → AnalyticsProvider-OCXRNIVE.js.map} +1 -1
- package/dist/AnalyticsProvider-ZAUONQCX.mjs +12 -0
- package/dist/{AnalyticsProvider-FVQIYSLY.mjs.map → AnalyticsProvider-ZAUONQCX.mjs.map} +1 -1
- package/dist/{BlogViewTracker-S4HSRCW7.js → BlogViewTracker-HK5C7PU6.js} +14 -11
- package/dist/BlogViewTracker-HK5C7PU6.js.map +1 -0
- package/dist/{BlogViewTracker-ZUGLBOVI.mjs → BlogViewTracker-KXRZHN3U.mjs} +13 -10
- package/dist/BlogViewTracker-KXRZHN3U.mjs.map +1 -0
- package/dist/ChatWidget-3OW5LY37.js +24 -0
- package/dist/{ChatWidget-2TQWCXWP.js.map → ChatWidget-3OW5LY37.js.map} +1 -1
- package/dist/ChatWidget-54GVS27I.mjs +15 -0
- package/dist/{ChatWidget-DG52ZIE6.mjs.map → ChatWidget-54GVS27I.mjs.map} +1 -1
- package/dist/EngageWidget-7EUP76WE.mjs +12 -0
- package/dist/{EngageWidget-2VUJADIU.mjs.map → EngageWidget-7EUP76WE.mjs.map} +1 -1
- package/dist/EngageWidget-DDP5UFA4.js +21 -0
- package/dist/{EngageWidget-Z7RC2INM.js.map → EngageWidget-DDP5UFA4.js.map} +1 -1
- package/dist/{FileField-FSQ7W3A5.mjs → FileField-IQLN6E3C.mjs} +5 -5
- package/dist/{FileField-FSQ7W3A5.mjs.map → FileField-IQLN6E3C.mjs.map} +1 -1
- package/dist/{FileField-UOQHL25J.js → FileField-SBPL4JHP.js} +6 -6
- package/dist/{FileField-UOQHL25J.js.map → FileField-SBPL4JHP.js.map} +1 -1
- package/dist/{FormSpotlight-RHL5FWM2.mjs → FormSpotlight-E2LKKHGV.mjs} +11 -7
- package/dist/FormSpotlight-E2LKKHGV.mjs.map +1 -0
- package/dist/{FormSpotlight-TED32NHP.js → FormSpotlight-YTACNE57.js} +25 -21
- package/dist/FormSpotlight-YTACNE57.js.map +1 -0
- package/dist/{FormStage-PFEBKHGY.js → FormStage-S277U2CP.js} +20 -15
- package/dist/FormStage-S277U2CP.js.map +1 -0
- package/dist/{FormStage-DINIRFOX.mjs → FormStage-YSBN5XKL.mjs} +9 -4
- package/dist/FormStage-YSBN5XKL.mjs.map +1 -0
- package/dist/ManagedForm-I3QVRQ53.mjs +16 -0
- package/dist/{ManagedForm-545YAUFC.mjs.map → ManagedForm-I3QVRQ53.mjs.map} +1 -1
- package/dist/ManagedForm-TSYKQFLJ.js +25 -0
- package/dist/{ManagedForm-43WLCUAK.js.map → ManagedForm-TSYKQFLJ.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-ZPY5RRKX.mjs → ManagedNewsletterForm-T3YRAWKZ.mjs} +9 -7
- package/dist/ManagedNewsletterForm-T3YRAWKZ.mjs.map +1 -0
- package/dist/{ManagedNewsletterForm-I3QN57HB.js → ManagedNewsletterForm-YSOPPKS6.js} +10 -8
- package/dist/ManagedNewsletterForm-YSOPPKS6.js.map +1 -0
- package/dist/{SignalCore-EEH5IM4U.mjs → SignalCore-PPSIQ4BW.mjs} +8 -14
- package/dist/SignalCore-PPSIQ4BW.mjs.map +1 -0
- package/dist/{SignalCore-M4AXIMV4.js → SignalCore-SUZH3XWZ.js} +14 -20
- package/dist/SignalCore-SUZH3XWZ.js.map +1 -0
- package/dist/SitemapSync-HSHCOKCL.mjs +9 -0
- package/dist/{SitemapSync-46G7LVZS.mjs.map → SitemapSync-HSHCOKCL.mjs.map} +1 -1
- package/dist/SitemapSync-LH6UVP4P.js +18 -0
- package/dist/{SitemapSync-XK4JKCS7.js.map → SitemapSync-LH6UVP4P.js.map} +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
- package/dist/analytics/index.js +10 -9
- package/dist/analytics/index.mjs +5 -4
- package/dist/blog/BlogLayout.d.ts +3 -1
- package/dist/blog/BlogLayout.d.ts.map +1 -1
- package/dist/blog/BlogList.d.ts +7 -1
- package/dist/blog/BlogList.d.ts.map +1 -1
- package/dist/blog/BlogPost.d.ts +20 -1
- package/dist/blog/BlogPost.d.ts.map +1 -1
- package/dist/blog/BlogSidebar.d.ts +3 -1
- package/dist/blog/BlogSidebar.d.ts.map +1 -1
- package/dist/blog/BlogViewTracker.d.ts +8 -2
- package/dist/blog/BlogViewTracker.d.ts.map +1 -1
- package/dist/blog/ClusterLandingPage.d.ts +3 -1
- package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
- package/dist/blog/ClusterNavigation.d.ts +5 -2
- package/dist/blog/ClusterNavigation.d.ts.map +1 -1
- package/dist/blog/RelatedPosts.d.ts +3 -1
- package/dist/blog/RelatedPosts.d.ts.map +1 -1
- package/dist/blog/index.d.ts +1 -1
- package/dist/blog/index.d.ts.map +1 -1
- package/dist/blog/index.js +40 -31
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +11 -6
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/metadata-images.test.d.ts +2 -0
- package/dist/blog/metadata-images.test.d.ts.map +1 -0
- package/dist/blog/not-found.test.d.ts +2 -0
- package/dist/blog/not-found.test.d.ts.map +1 -0
- package/dist/blog/processBlogHtml.d.ts +19 -2
- package/dist/blog/processBlogHtml.d.ts.map +1 -1
- package/dist/blog/public-reads.d.ts +27 -0
- package/dist/blog/public-reads.d.ts.map +1 -0
- package/dist/blog/server-core.d.ts +107 -16
- package/dist/blog/server-core.d.ts.map +1 -1
- package/dist/blog/server-ui.js +29 -23
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +12 -6
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.ts +107 -16
- package/dist/blog/server.d.ts.map +1 -1
- package/dist/blog/server.js +54 -47
- package/dist/blog/server.mjs +5 -2
- package/dist/blog/site-scope.test.d.ts +2 -0
- package/dist/blog/site-scope.test.d.ts.map +1 -0
- package/dist/blog/static-params.test.d.ts +2 -0
- package/dist/blog/static-params.test.d.ts.map +1 -0
- package/dist/brand/extract-brand-profile.d.ts +36 -2
- package/dist/brand/extract-brand-profile.d.ts.map +1 -1
- package/dist/brand/extract-brand-profile.test.d.ts +2 -0
- package/dist/brand/extract-brand-profile.test.d.ts.map +1 -0
- package/dist/{chunk-B64AZC6P.js → chunk-2FQG2AHJ.js} +60 -35
- package/dist/chunk-2FQG2AHJ.js.map +1 -0
- package/dist/{chunk-N2PGTPWN.js → chunk-2OQWLXDO.js} +13 -13
- package/dist/{chunk-N2PGTPWN.js.map → chunk-2OQWLXDO.js.map} +1 -1
- package/dist/{chunk-T5VTQUNF.js → chunk-2SCDUVFJ.js} +10 -10
- package/dist/{chunk-T5VTQUNF.js.map → chunk-2SCDUVFJ.js.map} +1 -1
- package/dist/{chunk-S4RC6VAQ.js → chunk-35ERUUH3.js} +6 -6
- package/dist/{chunk-S4RC6VAQ.js.map → chunk-35ERUUH3.js.map} +1 -1
- package/dist/{chunk-VHZ4LHQT.mjs → chunk-3AUFD7KR.mjs} +3 -3
- package/dist/{chunk-VHZ4LHQT.mjs.map → chunk-3AUFD7KR.mjs.map} +1 -1
- package/dist/{chunk-DHIWR7CG.js → chunk-3BVCF4ZF.js} +4 -4
- package/dist/{chunk-DHIWR7CG.js.map → chunk-3BVCF4ZF.js.map} +1 -1
- package/dist/{chunk-EEQYKMGH.mjs → chunk-3EY5E35M.mjs} +57 -86
- package/dist/chunk-3EY5E35M.mjs.map +1 -0
- package/dist/{chunk-JNABXCLY.mjs → chunk-3SLFT453.mjs} +5 -5
- package/dist/{chunk-JNABXCLY.mjs.map → chunk-3SLFT453.mjs.map} +1 -1
- package/dist/{chunk-AJQI3WTN.mjs → chunk-4L7OHRWB.mjs} +12 -9
- package/dist/chunk-4L7OHRWB.mjs.map +1 -0
- package/dist/chunk-4LYW6PMU.mjs +72 -0
- package/dist/chunk-4LYW6PMU.mjs.map +1 -0
- package/dist/{chunk-R3KTBKSW.js → chunk-4OS6M3V4.js} +6 -12
- package/dist/chunk-4OS6M3V4.js.map +1 -0
- package/dist/{chunk-AY7JBGYC.js → chunk-4RY7JETY.js} +14 -14
- package/dist/{chunk-AY7JBGYC.js.map → chunk-4RY7JETY.js.map} +1 -1
- package/dist/chunk-4TLFZ6NR.mjs +16 -0
- package/dist/chunk-4TLFZ6NR.mjs.map +1 -0
- package/dist/{chunk-4B4S56WJ.mjs → chunk-5B4J3IBX.mjs} +75 -21
- package/dist/chunk-5B4J3IBX.mjs.map +1 -0
- package/dist/chunk-5O7JSWT6.js +8 -0
- package/dist/{chunk-KSL3WA2I.js.map → chunk-5O7JSWT6.js.map} +1 -1
- package/dist/chunk-5SANRSX3.mjs +17 -0
- package/dist/chunk-5SANRSX3.mjs.map +1 -0
- package/dist/{chunk-LCSYJXIO.mjs → chunk-5WGMXSCB.mjs} +3 -3
- package/dist/{chunk-LCSYJXIO.mjs.map → chunk-5WGMXSCB.mjs.map} +1 -1
- package/dist/chunk-5XFFUP6D.js +100 -0
- package/dist/chunk-5XFFUP6D.js.map +1 -0
- package/dist/{chunk-AHZR4VGY.mjs → chunk-6HFFTGFP.mjs} +50 -26
- package/dist/chunk-6HFFTGFP.mjs.map +1 -0
- package/dist/{chunk-USKIL6V6.mjs → chunk-6SBTHS6C.mjs} +3 -3
- package/dist/{chunk-USKIL6V6.mjs.map → chunk-6SBTHS6C.mjs.map} +1 -1
- package/dist/{chunk-NZSFOZJV.js → chunk-7TC3GRXQ.js} +73 -38
- package/dist/chunk-7TC3GRXQ.js.map +1 -0
- package/dist/{chunk-HIHAXEPD.mjs → chunk-7THZOAUR.mjs} +4 -4
- package/dist/{chunk-HIHAXEPD.mjs.map → chunk-7THZOAUR.mjs.map} +1 -1
- package/dist/{chunk-YCI36ZUS.mjs → chunk-AOWJP25J.mjs} +4 -4
- package/dist/{chunk-YCI36ZUS.mjs.map → chunk-AOWJP25J.mjs.map} +1 -1
- package/dist/{chunk-H44XZUOV.mjs → chunk-B2VFMPVJ.mjs} +4 -4
- package/dist/{chunk-H44XZUOV.mjs.map → chunk-B2VFMPVJ.mjs.map} +1 -1
- package/dist/{chunk-OA7KKOAK.mjs → chunk-B35OJ7FR.mjs} +4 -4
- package/dist/{chunk-OA7KKOAK.mjs.map → chunk-B35OJ7FR.mjs.map} +1 -1
- package/dist/{chunk-XR32C47O.js → chunk-BER36QXU.js} +9 -9
- package/dist/{chunk-XR32C47O.js.map → chunk-BER36QXU.js.map} +1 -1
- package/dist/{chunk-7C7XO5HX.mjs → chunk-BFZNLTWK.mjs} +3 -3
- package/dist/{chunk-7C7XO5HX.mjs.map → chunk-BFZNLTWK.mjs.map} +1 -1
- package/dist/chunk-BQP6JIE2.mjs +28 -0
- package/dist/chunk-BQP6JIE2.mjs.map +1 -0
- package/dist/{chunk-5KIO6FXE.js → chunk-C3WU45JT.js} +7 -7
- package/dist/{chunk-5KIO6FXE.js.map → chunk-C3WU45JT.js.map} +1 -1
- package/dist/chunk-CUNZAD46.js +53 -0
- package/dist/chunk-CUNZAD46.js.map +1 -0
- package/dist/chunk-CXAXZFFW.js +157 -0
- package/dist/chunk-CXAXZFFW.js.map +1 -0
- package/dist/{chunk-H4OBGC43.mjs → chunk-DA7IANFG.mjs} +14 -3
- package/dist/chunk-DA7IANFG.mjs.map +1 -0
- package/dist/{chunk-BWSMUSDB.js → chunk-EIW6YEPY.js} +8 -8
- package/dist/{chunk-BWSMUSDB.js.map → chunk-EIW6YEPY.js.map} +1 -1
- package/dist/{chunk-UU47DGHE.js → chunk-F6SKG34N.js} +8 -13
- package/dist/chunk-F6SKG34N.js.map +1 -0
- package/dist/{chunk-LC7AM4J5.js → chunk-FHPW7XVH.js} +77 -20
- package/dist/chunk-FHPW7XVH.js.map +1 -0
- package/dist/{chunk-JNRHTZL4.js → chunk-FVW6FT6L.js} +73 -29
- package/dist/chunk-FVW6FT6L.js.map +1 -0
- package/dist/{chunk-KY6M76JW.js → chunk-GNDWTXLU.js} +56 -177
- package/dist/chunk-GNDWTXLU.js.map +1 -0
- package/dist/{chunk-OZ3FU4BT.js → chunk-H5NBFNND.js} +2 -2
- package/dist/chunk-H5NBFNND.js.map +1 -0
- package/dist/{chunk-SYGGZZMU.js → chunk-HAKD27AZ.js} +7 -7
- package/dist/{chunk-SYGGZZMU.js.map → chunk-HAKD27AZ.js.map} +1 -1
- package/dist/chunk-HCN3IKMW.mjs +106 -0
- package/dist/chunk-HCN3IKMW.mjs.map +1 -0
- package/dist/{chunk-QNPVVWR7.mjs → chunk-HCX343AS.mjs} +4 -4
- package/dist/{chunk-QNPVVWR7.mjs.map → chunk-HCX343AS.mjs.map} +1 -1
- package/dist/{chunk-C2MSD2UM.mjs → chunk-HEOQT5SM.mjs} +216 -103
- package/dist/chunk-HEOQT5SM.mjs.map +1 -0
- package/dist/{chunk-RU54J2PY.mjs → chunk-HOJ4J4X2.mjs} +30 -12
- package/dist/chunk-HOJ4J4X2.mjs.map +1 -0
- package/dist/{chunk-H3D3ZGOJ.js → chunk-HQOHB6QF.js} +15 -15
- package/dist/{chunk-H3D3ZGOJ.js.map → chunk-HQOHB6QF.js.map} +1 -1
- package/dist/chunk-HRMGITUZ.mjs +6 -0
- package/dist/{chunk-DQUBETXH.mjs.map → chunk-HRMGITUZ.mjs.map} +1 -1
- package/dist/{chunk-7AUDKXY5.mjs → chunk-HYVEIP2N.mjs} +3 -3
- package/dist/{chunk-7AUDKXY5.mjs.map → chunk-HYVEIP2N.mjs.map} +1 -1
- package/dist/{chunk-46BMNWE6.js → chunk-I3ND4XYW.js} +12 -9
- package/dist/chunk-I3ND4XYW.js.map +1 -0
- package/dist/{chunk-53KMRZT7.js → chunk-JDTU2RWC.js} +3 -3
- package/dist/{chunk-53KMRZT7.js.map → chunk-JDTU2RWC.js.map} +1 -1
- package/dist/{chunk-GZJE23Y5.mjs → chunk-JLVCWC6A.mjs} +2 -2
- package/dist/chunk-JLVCWC6A.mjs.map +1 -0
- package/dist/chunk-K4TCEAUX.js +52 -0
- package/dist/chunk-K4TCEAUX.js.map +1 -0
- package/dist/chunk-KV7XXLJV.mjs +30 -0
- package/dist/chunk-KV7XXLJV.mjs.map +1 -0
- package/dist/{chunk-5UFDHGFE.mjs → chunk-L24RDT6Q.mjs} +3 -3
- package/dist/{chunk-5UFDHGFE.mjs.map → chunk-L24RDT6Q.mjs.map} +1 -1
- package/dist/{chunk-JE5DWAE6.js → chunk-LBZGYF3B.js} +4 -4
- package/dist/{chunk-JE5DWAE6.js.map → chunk-LBZGYF3B.js.map} +1 -1
- package/dist/{chunk-746RKQHA.js → chunk-LMEUYRRR.js} +93 -121
- package/dist/chunk-LMEUYRRR.js.map +1 -0
- package/dist/chunk-LVGSOW2F.js +32 -0
- package/dist/chunk-LVGSOW2F.js.map +1 -0
- package/dist/{chunk-KPKQKFT4.js → chunk-M45AL7EA.js} +37 -19
- package/dist/chunk-M45AL7EA.js.map +1 -0
- package/dist/{chunk-XK5AIWQG.js → chunk-MHX6TOAS.js} +3 -3
- package/dist/{chunk-XK5AIWQG.js.map → chunk-MHX6TOAS.js.map} +1 -1
- package/dist/chunk-MLVHVKFT.mjs +148 -0
- package/dist/chunk-MLVHVKFT.mjs.map +1 -0
- package/dist/{chunk-RIYAMYLV.mjs → chunk-N2NZBPQ5.mjs} +4 -10
- package/dist/chunk-N2NZBPQ5.mjs.map +1 -0
- package/dist/chunk-NRBITVDK.js +114 -0
- package/dist/chunk-NRBITVDK.js.map +1 -0
- package/dist/{chunk-IYCLN3XS.mjs → chunk-O4YBWJHP.mjs} +6 -11
- package/dist/chunk-O4YBWJHP.mjs.map +1 -0
- package/dist/{chunk-5KIEZHVK.mjs → chunk-O5ZSGBQD.mjs} +4 -4
- package/dist/{chunk-5KIEZHVK.mjs.map → chunk-O5ZSGBQD.mjs.map} +1 -1
- package/dist/{chunk-TP7H6BSK.mjs → chunk-OE7CTIOU.mjs} +73 -30
- package/dist/chunk-OE7CTIOU.mjs.map +1 -0
- package/dist/{chunk-UJ6CHZAI.mjs → chunk-OEW2LFOV.js} +169 -25
- package/dist/chunk-OEW2LFOV.js.map +1 -0
- package/dist/chunk-P4Y75QSU.js +19 -0
- package/dist/chunk-P4Y75QSU.js.map +1 -0
- package/dist/{chunk-6OP5XSMM.mjs → chunk-PK2OTGW5.mjs} +6 -12
- package/dist/chunk-PK2OTGW5.mjs.map +1 -0
- package/dist/{chunk-OC7AO7XS.js → chunk-PRTXAIIC.js} +15 -15
- package/dist/{chunk-OC7AO7XS.js.map → chunk-PRTXAIIC.js.map} +1 -1
- package/dist/{chunk-K2V3ZW36.mjs → chunk-PUAXHYBL.mjs} +3 -3
- package/dist/{chunk-K2V3ZW36.mjs.map → chunk-PUAXHYBL.mjs.map} +1 -1
- package/dist/chunk-QRHVMTHF.mjs +94 -0
- package/dist/chunk-QRHVMTHF.mjs.map +1 -0
- package/dist/{chunk-BZLIOT7Q.js → chunk-QTJTDQYR.js} +76 -111
- package/dist/chunk-QTJTDQYR.js.map +1 -0
- package/dist/{chunk-GJ6NOLGC.mjs → chunk-QVHVL7EX.mjs} +3 -3
- package/dist/{chunk-GJ6NOLGC.mjs.map → chunk-QVHVL7EX.mjs.map} +1 -1
- package/dist/chunk-R7GHP3FY.js +81 -0
- package/dist/chunk-R7GHP3FY.js.map +1 -0
- package/dist/chunk-SEP5D4MI.js +116 -0
- package/dist/chunk-SEP5D4MI.js.map +1 -0
- package/dist/{chunk-GPLCPMVD.mjs → chunk-TXMVU4EY.mjs} +62 -97
- package/dist/chunk-TXMVU4EY.mjs.map +1 -0
- package/dist/chunk-U2V542EO.mjs +98 -0
- package/dist/chunk-U2V542EO.mjs.map +1 -0
- package/dist/{chunk-YYN4YZYZ.js → chunk-UWHCHYCX.js} +4 -4
- package/dist/{chunk-YYN4YZYZ.js.map → chunk-UWHCHYCX.js.map} +1 -1
- package/dist/{chunk-473WDGQZ.mjs → chunk-VJ74275U.mjs} +38 -156
- package/dist/chunk-VJ74275U.mjs.map +1 -0
- package/dist/{chunk-H7274TKR.mjs → chunk-VJV7WUR2.mjs} +12 -4
- package/dist/chunk-VJV7WUR2.mjs.map +1 -0
- package/dist/{chunk-CQS5ZYI6.mjs → chunk-VYL6IHJA.mjs} +9 -9
- package/dist/{chunk-CQS5ZYI6.mjs.map → chunk-VYL6IHJA.mjs.map} +1 -1
- package/dist/{chunk-5B4FABFK.js → chunk-WS7MH3GD.js} +14 -2
- package/dist/chunk-WS7MH3GD.js.map +1 -0
- package/dist/{chunk-IPV2TUAT.js → chunk-XA2GJFVM.js} +12 -4
- package/dist/chunk-XA2GJFVM.js.map +1 -0
- package/dist/chunk-XBX2K3GA.js +33 -0
- package/dist/chunk-XBX2K3GA.js.map +1 -0
- package/dist/{chunk-X5TCH7VZ.js → chunk-XCYKM2SA.js} +6 -13
- package/dist/chunk-XCYKM2SA.js.map +1 -0
- package/dist/{chunk-6CJP7BFM.js → chunk-XZO5I4RS.mjs} +147 -20
- package/dist/chunk-XZO5I4RS.mjs.map +1 -0
- package/dist/chunk-Y5QZPUL3.mjs +47 -0
- package/dist/chunk-Y5QZPUL3.mjs.map +1 -0
- package/dist/{chunk-B6O7D5U4.js → chunk-YECDJDDD.js} +10 -10
- package/dist/{chunk-B6O7D5U4.js.map → chunk-YECDJDDD.js.map} +1 -1
- package/dist/chunk-YN7QHLWF.js +19 -0
- package/dist/chunk-YN7QHLWF.js.map +1 -0
- package/dist/chunk-YU7QZ3PP.mjs +45 -0
- package/dist/chunk-YU7QZ3PP.mjs.map +1 -0
- package/dist/{chunk-CQRLKNHQ.js → chunk-ZEOC26LZ.js} +223 -110
- package/dist/chunk-ZEOC26LZ.js.map +1 -0
- package/dist/{chunk-AEARU24Q.mjs → chunk-ZVI7MBVF.mjs} +73 -38
- package/dist/chunk-ZVI7MBVF.mjs.map +1 -0
- package/dist/cli/agent/checks.d.ts +15 -1
- package/dist/cli/agent/checks.d.ts.map +1 -1
- package/dist/cli/agent/sitemap-trailing-slash.test.d.ts +2 -0
- package/dist/cli/agent/sitemap-trailing-slash.test.d.ts.map +1 -0
- package/dist/cli/commands/api-routes.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/geo.d.ts +4 -0
- package/dist/cli/commands/geo.d.ts.map +1 -1
- package/dist/cli/commands/geo.test.d.ts +2 -0
- package/dist/cli/commands/geo.test.d.ts.map +1 -0
- package/dist/cli/commands/og.d.ts +31 -4
- package/dist/cli/commands/og.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.d.ts +1 -2
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/generators/index.d.ts +5 -0
- package/dist/cli/generators/index.d.ts.map +1 -1
- package/dist/cli/generators/index.test.d.ts +2 -0
- package/dist/cli/generators/index.test.d.ts.map +1 -0
- package/dist/cli/index.js +921 -466
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +862 -407
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.js +6 -6
- package/dist/client/index.mjs +5 -5
- package/dist/commerce/CheckoutForm.d.ts.map +1 -1
- package/dist/commerce/ProductDetail.d.ts.map +1 -1
- package/dist/commerce/api.d.ts +14 -0
- package/dist/commerce/api.d.ts.map +1 -1
- package/dist/commerce/discount-checkout.test.d.ts +2 -0
- package/dist/commerce/discount-checkout.test.d.ts.map +1 -0
- package/dist/commerce/index.d.ts +1 -1
- package/dist/commerce/index.d.ts.map +1 -1
- package/dist/commerce/index.js +61 -56
- package/dist/commerce/index.mjs +6 -5
- package/dist/config/index.js +3 -3
- package/dist/config/index.mjs +1 -1
- package/dist/discover-CYXYKHZ2.mjs +4 -0
- package/dist/{discover-BEJRYNFF.mjs.map → discover-CYXYKHZ2.mjs.map} +1 -1
- package/dist/discover-NGEPXZOD.js +21 -0
- package/dist/{discover-WVDYDUJX.js.map → discover-NGEPXZOD.js.map} +1 -1
- package/dist/engage/index.js +12 -10
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +9 -7
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/FormClient.d.ts.map +1 -1
- package/dist/forms/FormField.d.ts +7 -1
- package/dist/forms/FormField.d.ts.map +1 -1
- package/dist/forms/FormSpotlight.d.ts +1 -1
- package/dist/forms/FormSpotlight.d.ts.map +1 -1
- package/dist/forms/FormStage.d.ts +1 -1
- package/dist/forms/FormStage.d.ts.map +1 -1
- package/dist/forms/experience-plan.d.ts +0 -1
- package/dist/forms/experience-plan.d.ts.map +1 -1
- package/dist/forms/field-interactions.d.ts +63 -0
- package/dist/forms/field-interactions.d.ts.map +1 -0
- package/dist/forms/field-interactions.test.d.ts +8 -0
- package/dist/forms/field-interactions.test.d.ts.map +1 -0
- package/dist/forms/field-rules.d.ts +41 -0
- package/dist/forms/field-rules.d.ts.map +1 -0
- package/dist/forms/field-rules.test.d.ts +8 -0
- package/dist/forms/field-rules.test.d.ts.map +1 -0
- package/dist/forms/form-field-focus.test.d.ts +8 -0
- package/dist/forms/form-field-focus.test.d.ts.map +1 -0
- package/dist/forms/index.js +25 -23
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +13 -11
- package/dist/forms/index.mjs.map +1 -1
- 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/tracking-session.d.ts +48 -3
- package/dist/forms/tracking-session.d.ts.map +1 -1
- package/dist/forms/types.d.ts +11 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/useForm.d.ts +8 -0
- package/dist/forms/useForm.d.ts.map +1 -1
- package/dist/forms/useFormTracking.d.ts +29 -4
- package/dist/forms/useFormTracking.d.ts.map +1 -1
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +72 -68
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -10
- package/dist/index.mjs.map +1 -1
- package/dist/layout/client.js +10 -10
- package/dist/layout/client.mjs +9 -9
- package/dist/layout/index.js +13 -12
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +11 -10
- package/dist/layout/index.mjs.map +1 -1
- package/dist/llms/aiRobots.d.ts +24 -5
- package/dist/llms/aiRobots.d.ts.map +1 -1
- package/dist/llms/api.d.ts +8 -3
- package/dist/llms/api.d.ts.map +1 -1
- package/dist/llms/discovery-headers.d.ts +24 -0
- package/dist/llms/discovery-headers.d.ts.map +1 -1
- package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
- package/dist/llms/handlers.d.ts +20 -2
- package/dist/llms/handlers.d.ts.map +1 -1
- package/dist/llms/index.d.ts +2 -2
- package/dist/llms/index.d.ts.map +1 -1
- package/dist/llms/index.js +54 -98
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +20 -83
- package/dist/llms/index.mjs.map +1 -1
- package/dist/llms/links.d.ts +26 -0
- package/dist/llms/links.d.ts.map +1 -0
- package/dist/llms/links.test.d.ts +2 -0
- package/dist/llms/links.test.d.ts.map +1 -0
- package/dist/llms/types.d.ts +15 -0
- package/dist/llms/types.d.ts.map +1 -1
- package/dist/llms/wiring.d.ts +103 -0
- package/dist/llms/wiring.d.ts.map +1 -0
- package/dist/llms/wiring.test.d.ts +2 -0
- package/dist/llms/wiring.test.d.ts.map +1 -0
- package/dist/llms/writeLLMsTxt.d.ts +9 -0
- package/dist/llms/writeLLMsTxt.d.ts.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/motion/gsap.d.ts +54 -0
- package/dist/motion/gsap.d.ts.map +1 -1
- package/dist/motion/gsap.js +34 -4
- package/dist/motion/gsap.js.map +1 -1
- package/dist/motion/gsap.mjs +33 -5
- package/dist/motion/gsap.mjs.map +1 -1
- package/dist/motion/gsap.test.d.ts +2 -0
- package/dist/motion/gsap.test.d.ts.map +1 -0
- package/dist/og/config.d.ts +6 -0
- package/dist/og/config.d.ts.map +1 -1
- package/dist/og/contrast.d.ts +33 -0
- package/dist/og/contrast.d.ts.map +1 -0
- package/dist/og/index.d.ts +2 -0
- package/dist/og/index.d.ts.map +1 -1
- package/dist/og/index.js +26 -8
- package/dist/og/index.mjs +3 -1
- package/dist/og/pages.d.ts +101 -0
- package/dist/og/pages.d.ts.map +1 -1
- package/dist/og/route-copy.d.ts +34 -0
- package/dist/og/route-copy.d.ts.map +1 -0
- package/dist/og/route-fit.d.ts +77 -0
- package/dist/og/route-fit.d.ts.map +1 -0
- package/dist/og/route.d.ts +80 -20
- package/dist/og/route.d.ts.map +1 -1
- package/dist/og/route.js +195 -25
- package/dist/og/route.js.map +1 -1
- package/dist/og/route.mjs +193 -26
- package/dist/og/route.mjs.map +1 -1
- package/dist/og/route.test.d.ts +2 -0
- package/dist/og/route.test.d.ts.map +1 -0
- package/dist/og/template.d.ts.map +1 -1
- package/dist/og/wiring.d.ts +48 -4
- package/dist/og/wiring.d.ts.map +1 -1
- package/dist/proxy/index.d.ts +16 -11
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +15 -10
- package/dist/proxy/index.js.map +1 -1
- package/dist/proxy/index.mjs +12 -7
- package/dist/proxy/index.mjs.map +1 -1
- package/dist/proxy/llms-discovery.test.d.ts +2 -0
- package/dist/proxy/llms-discovery.test.d.ts.map +1 -0
- package/dist/redirects/index.d.ts +25 -1
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +11 -8
- package/dist/redirects/index.mjs +4 -1
- package/dist/redirects/index.test.d.ts +2 -0
- package/dist/redirects/index.test.d.ts.map +1 -0
- package/dist/redirects/not-found.d.ts +14 -29
- package/dist/redirects/not-found.d.ts.map +1 -1
- package/dist/redirects/not-found.js +15 -5
- package/dist/redirects/not-found.js.map +1 -1
- package/dist/redirects/not-found.mjs +11 -1
- package/dist/redirects/not-found.mjs.map +1 -1
- package/dist/robots/index.d.ts +7 -1
- package/dist/robots/index.d.ts.map +1 -1
- package/dist/robots/index.js +27 -1
- package/dist/robots/index.js.map +1 -1
- package/dist/robots/index.mjs +4 -1
- package/dist/robots/index.mjs.map +1 -1
- package/dist/robots/index.test.d.ts +2 -0
- package/dist/robots/index.test.d.ts.map +1 -0
- package/dist/robots/next-internals.d.ts +22 -0
- package/dist/robots/next-internals.d.ts.map +1 -0
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/ManagedContent.d.ts +4 -2
- package/dist/seo/ManagedContent.d.ts.map +1 -1
- package/dist/seo/ManagedFAQ.d.ts.map +1 -1
- package/dist/seo/ManagedInternalLinks.d.ts.map +1 -1
- package/dist/seo/ManagedSchema.d.ts.map +1 -1
- package/dist/seo/client.js +6 -6
- package/dist/seo/client.mjs +5 -5
- package/dist/seo/getManagedMetadata.d.ts.map +1 -1
- package/dist/seo/getManagedMetadata.test.d.ts +2 -0
- package/dist/seo/getManagedMetadata.test.d.ts.map +1 -0
- package/dist/seo/index.js +59 -49
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +29 -19
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo/managed-schema-filter.test.d.ts +2 -0
- package/dist/seo/managed-schema-filter.test.d.ts.map +1 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts +32 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.d.ts +7 -0
- package/dist/seo/register-sitemap-cli.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.js +273 -56
- package/dist/seo/register-sitemap-cli.js.map +1 -1
- package/dist/seo/register-sitemap-cli.mjs +269 -52
- package/dist/seo/register-sitemap-cli.mjs.map +1 -1
- package/dist/seo/register-sitemap-request.d.ts +36 -0
- package/dist/seo/register-sitemap-request.d.ts.map +1 -0
- package/dist/seo/register-sitemap-request.test.d.ts +2 -0
- package/dist/seo/register-sitemap-request.test.d.ts.map +1 -0
- package/dist/seo/routing.d.ts +2 -0
- package/dist/seo/routing.d.ts.map +1 -1
- package/dist/seo/schema-filter.d.ts +43 -0
- package/dist/seo/schema-filter.d.ts.map +1 -0
- package/dist/seo/schema-filter.test.d.ts +2 -0
- package/dist/seo/schema-filter.test.d.ts.map +1 -0
- package/dist/seo/server-api.d.ts +15 -2
- package/dist/seo/server-api.d.ts.map +1 -1
- package/dist/seo/server.js +23 -18
- package/dist/seo/server.mjs +7 -2
- package/dist/seo/site-scope.test.d.ts +2 -0
- package/dist/seo/site-scope.test.d.ts.map +1 -0
- package/dist/seo/types.d.ts +30 -0
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo-meta/contract.d.ts +60 -0
- package/dist/seo-meta/contract.d.ts.map +1 -0
- package/dist/seo-meta/contract.js +41 -0
- package/dist/seo-meta/contract.js.map +1 -0
- package/dist/seo-meta/contract.mjs +4 -0
- package/dist/seo-meta/contract.mjs.map +1 -0
- package/dist/seo-meta/contract.test.d.ts +2 -0
- package/dist/seo-meta/contract.test.d.ts.map +1 -0
- package/dist/server/index.js +4 -3
- package/dist/server/index.mjs +3 -2
- package/dist/server/mint-site-token.d.ts +2 -32
- package/dist/server/mint-site-token.d.ts.map +1 -1
- package/dist/{server-api-RG3ZL3DV.mjs → server-api-A2EFCTZX.mjs} +7 -3
- package/dist/{server-api-RG3ZL3DV.mjs.map → server-api-A2EFCTZX.mjs.map} +1 -1
- package/dist/{server-api-RYJQAUGO.js → server-api-IWTZ7C3O.js} +25 -21
- package/dist/{server-api-RYJQAUGO.js.map → server-api-IWTZ7C3O.js.map} +1 -1
- package/dist/shared/build-entries.d.ts +2 -0
- package/dist/shared/build-entries.d.ts.map +1 -1
- package/dist/shared/fresh-fetch.d.ts +64 -0
- package/dist/shared/fresh-fetch.d.ts.map +1 -0
- package/dist/shared/fresh-fetch.test.d.ts +2 -0
- package/dist/shared/fresh-fetch.test.d.ts.map +1 -0
- package/dist/shared/next-files.d.ts +42 -0
- package/dist/shared/next-files.d.ts.map +1 -0
- package/dist/shared/next-files.test.d.ts +2 -0
- package/dist/shared/next-files.test.d.ts.map +1 -0
- package/dist/shared/page-leave.d.ts +27 -0
- package/dist/shared/page-leave.d.ts.map +1 -0
- package/dist/shared/page-leave.test.d.ts +2 -0
- package/dist/shared/page-leave.test.d.ts.map +1 -0
- package/dist/shared/source-graph.d.ts +63 -0
- package/dist/shared/source-graph.d.ts.map +1 -0
- package/dist/shared/source-graph.test.d.ts +2 -0
- package/dist/shared/source-graph.test.d.ts.map +1 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/SignalCore.d.ts.map +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/discover.d.ts.map +1 -1
- package/dist/sitemap/index.d.ts +25 -5
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +54 -51
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +39 -36
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/sitemap/shared.d.ts +65 -0
- package/dist/sitemap/shared.d.ts.map +1 -1
- package/dist/sitemap/trailing-slash.test.d.ts +2 -0
- package/dist/sitemap/trailing-slash.test.d.ts.map +1 -0
- package/dist/sites/resolve.d.ts.map +1 -1
- package/dist/sites/site-param.d.ts +16 -0
- package/dist/sites/site-param.d.ts.map +1 -0
- package/dist/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/dist/writeLLMsTxt-CQ7A4AAL.js +20 -0
- package/dist/writeLLMsTxt-CQ7A4AAL.js.map +1 -0
- package/dist/writeLLMsTxt-NX5MSPYX.mjs +11 -0
- package/dist/writeLLMsTxt-NX5MSPYX.mjs.map +1 -0
- package/package.json +25 -22
- package/dist/AnalyticsProvider-6PXC7UDP.js +0 -32
- package/dist/AnalyticsProvider-FVQIYSLY.mjs +0 -11
- package/dist/BlogViewTracker-S4HSRCW7.js.map +0 -1
- package/dist/BlogViewTracker-ZUGLBOVI.mjs.map +0 -1
- package/dist/ChatWidget-2TQWCXWP.js +0 -22
- package/dist/ChatWidget-DG52ZIE6.mjs +0 -13
- package/dist/EngageWidget-2VUJADIU.mjs +0 -12
- package/dist/EngageWidget-Z7RC2INM.js +0 -21
- package/dist/FormSpotlight-RHL5FWM2.mjs.map +0 -1
- package/dist/FormSpotlight-TED32NHP.js.map +0 -1
- package/dist/FormStage-DINIRFOX.mjs.map +0 -1
- package/dist/FormStage-PFEBKHGY.js.map +0 -1
- package/dist/ManagedForm-43WLCUAK.js +0 -23
- package/dist/ManagedForm-545YAUFC.mjs +0 -14
- package/dist/ManagedNewsletterForm-I3QN57HB.js.map +0 -1
- package/dist/ManagedNewsletterForm-ZPY5RRKX.mjs.map +0 -1
- package/dist/SignalCore-EEH5IM4U.mjs.map +0 -1
- package/dist/SignalCore-M4AXIMV4.js.map +0 -1
- package/dist/SitemapSync-46G7LVZS.mjs +0 -9
- package/dist/SitemapSync-XK4JKCS7.js +0 -18
- package/dist/chunk-46BMNWE6.js.map +0 -1
- package/dist/chunk-473WDGQZ.mjs.map +0 -1
- package/dist/chunk-4B4S56WJ.mjs.map +0 -1
- package/dist/chunk-5B4FABFK.js.map +0 -1
- package/dist/chunk-6CJP7BFM.js.map +0 -1
- package/dist/chunk-6OP5XSMM.mjs.map +0 -1
- package/dist/chunk-746RKQHA.js.map +0 -1
- package/dist/chunk-AEARU24Q.mjs.map +0 -1
- package/dist/chunk-AHZR4VGY.mjs.map +0 -1
- package/dist/chunk-AJQI3WTN.mjs.map +0 -1
- package/dist/chunk-B64AZC6P.js.map +0 -1
- package/dist/chunk-BZLIOT7Q.js.map +0 -1
- package/dist/chunk-C2MSD2UM.mjs.map +0 -1
- package/dist/chunk-CQRLKNHQ.js.map +0 -1
- package/dist/chunk-DQUBETXH.mjs +0 -6
- package/dist/chunk-EEQYKMGH.mjs.map +0 -1
- package/dist/chunk-GPLCPMVD.mjs.map +0 -1
- package/dist/chunk-GZJE23Y5.mjs.map +0 -1
- package/dist/chunk-H4OBGC43.mjs.map +0 -1
- package/dist/chunk-H7274TKR.mjs.map +0 -1
- package/dist/chunk-IPV2TUAT.js.map +0 -1
- package/dist/chunk-IYCLN3XS.mjs.map +0 -1
- package/dist/chunk-JEOKDUPQ.js +0 -45
- package/dist/chunk-JEOKDUPQ.js.map +0 -1
- package/dist/chunk-JNRHTZL4.js.map +0 -1
- package/dist/chunk-KPKQKFT4.js.map +0 -1
- package/dist/chunk-KSL3WA2I.js +0 -8
- package/dist/chunk-KY6M76JW.js.map +0 -1
- package/dist/chunk-LC7AM4J5.js.map +0 -1
- package/dist/chunk-LOS5D6B3.js +0 -72
- package/dist/chunk-LOS5D6B3.js.map +0 -1
- package/dist/chunk-NZSFOZJV.js.map +0 -1
- package/dist/chunk-OZ3FU4BT.js.map +0 -1
- package/dist/chunk-QJU6HBSK.mjs +0 -39
- package/dist/chunk-QJU6HBSK.mjs.map +0 -1
- package/dist/chunk-R3KTBKSW.js.map +0 -1
- package/dist/chunk-RIYAMYLV.mjs.map +0 -1
- package/dist/chunk-RU54J2PY.mjs.map +0 -1
- package/dist/chunk-TP7H6BSK.mjs.map +0 -1
- package/dist/chunk-UJ6CHZAI.mjs.map +0 -1
- package/dist/chunk-UU47DGHE.js.map +0 -1
- package/dist/chunk-X5TCH7VZ.js.map +0 -1
- package/dist/chunk-XIJ4F6IE.mjs +0 -63
- package/dist/chunk-XIJ4F6IE.mjs.map +0 -1
- package/dist/discover-BEJRYNFF.mjs +0 -4
- package/dist/discover-WVDYDUJX.js +0 -21
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkH5NBFNND_js = require('./chunk-H5NBFNND.js');
|
|
4
|
+
|
|
5
|
+
// src/sites/site-param.ts
|
|
6
|
+
function withSiteParam(url, site) {
|
|
7
|
+
const host = chunkH5NBFNND_js.resolveSiteHost(site);
|
|
8
|
+
if (!host) return url;
|
|
9
|
+
return `${url}${url.includes("?") ? "&" : "?"}site=${encodeURIComponent(host)}`;
|
|
10
|
+
}
|
|
11
|
+
function withSiteBody(body, site) {
|
|
12
|
+
const host = chunkH5NBFNND_js.resolveSiteHost(site);
|
|
13
|
+
return host ? { ...body, site: host } : body;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.withSiteBody = withSiteBody;
|
|
17
|
+
exports.withSiteParam = withSiteParam;
|
|
18
|
+
//# sourceMappingURL=chunk-YN7QHLWF.js.map
|
|
19
|
+
//# sourceMappingURL=chunk-YN7QHLWF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sites/site-param.ts"],"names":["resolveSiteHost"],"mappings":";;;;;AAiCO,SAAS,aAAA,CAAc,KAAa,IAAA,EAAuB;AAChE,EAAA,MAAM,IAAA,GAAOA,iCAAgB,IAAI,CAAA;AACjC,EAAA,IAAI,CAAC,MAAM,OAAO,GAAA;AAClB,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,EAAG,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,GAAI,GAAA,GAAM,GAAG,CAAA,KAAA,EAAQ,kBAAA,CAAmB,IAAI,CAAC,CAAA,CAAA;AAC/E;AAMO,SAAS,YAAA,CAA+B,MAAS,IAAA,EAAsC;AAC5F,EAAA,MAAM,IAAA,GAAOA,iCAAgB,IAAI,CAAA;AACjC,EAAA,OAAO,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,MAAK,GAAI,IAAA;AAC1C","file":"chunk-YN7QHLWF.js","sourcesContent":["/**\n * @sonordev/site-kit/sites — withSiteParam / withSiteBody (leaf module)\n *\n * SINGLE SOURCE OF TRUTH for \"tell the Sonor API which sub-site is asking\".\n * Every site-scoped read goes through one of these two: the llms reads\n * (`llms/api`, FAQ items included), every blog read (`blog/server-core` and\n * the blog server-ui components, plus the client `BlogViewTracker`), the\n * managed FAQ, internal-link and content-block reads (`seo/server-api`\n * getFAQData / getInternalLinks / getContentBlock), and the managed redirect\n * rules and hit tracking (`redirects`). Do not re-fork the\n * append-or-omit rule into a module of its own — the llms copy of it is where\n * this came from, and two copies drift.\n *\n * The host comes from `resolveSiteHost` (explicit → NEXT_PUBLIC_SITE_URL host\n * → window.location.host), already normalized, so it matches what the API\n * stores. When nothing resolves, the param/field is OMITTED rather than sent\n * empty: an absent `site` is how single-site projects (and older API servers)\n * keep their project-wide behavior.\n *\n * A leaf on purpose. It imports only `./resolve` (→ `./normalize`), both pure\n * string logic, so the client-stamped `blog` barrel and `BlogViewTracker` can\n * use it without reaching `server-only` code or the sites contract's JSON\n * schema.\n */\nimport { resolveSiteHost } from './resolve'\n\n/**\n * Append `site=<host>` to an API URL or endpoint path. Returns the input\n * unchanged when the host resolves empty.\n *\n * withSiteParam('/public/blog/posts?page=2', 'bd-charlotte.com')\n * → '/public/blog/posts?page=2&site=bd-charlotte.com'\n */\nexport function withSiteParam(url: string, site?: string): string {\n const host = resolveSiteHost(site)\n if (!host) return url\n return `${url}${url.includes('?') ? '&' : '?'}site=${encodeURIComponent(host)}`\n}\n\n/**\n * Add `site: <host>` to a JSON request body. Returns the body unchanged (no\n * `site` key at all) when the host resolves empty.\n */\nexport function withSiteBody<T extends object>(body: T, site?: string): T & { site?: string } {\n const host = resolveSiteHost(site)\n return host ? { ...body, site: host } : body\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/og/config.ts
|
|
2
|
+
function defineOgCard(config) {
|
|
3
|
+
return config;
|
|
4
|
+
}
|
|
5
|
+
var OG_WIDTH = 1200;
|
|
6
|
+
var OG_HEIGHT = 630;
|
|
7
|
+
var TITLE_MAX_PX = 104;
|
|
8
|
+
var TITLE_MIN_PX = 56;
|
|
9
|
+
var OG_REPORT_ATTR = "data-og-report";
|
|
10
|
+
|
|
11
|
+
// src/og/contrast.ts
|
|
12
|
+
var AA_LARGE = 3;
|
|
13
|
+
function parseHexColor(color) {
|
|
14
|
+
const hex = color.trim().replace(/^#/, "");
|
|
15
|
+
if (!/^([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(hex)) return null;
|
|
16
|
+
const full = hex.length === 3 ? hex.replace(/./g, (c) => c + c) : hex.slice(0, 6);
|
|
17
|
+
return [0, 2, 4].map((i) => parseInt(full.slice(i, i + 2), 16));
|
|
18
|
+
}
|
|
19
|
+
function luminance([r, g, b]) {
|
|
20
|
+
const channel = (v) => {
|
|
21
|
+
const s = v / 255;
|
|
22
|
+
return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
|
|
23
|
+
};
|
|
24
|
+
return 0.2126 * channel(r) + 0.7152 * channel(g) + 0.0722 * channel(b);
|
|
25
|
+
}
|
|
26
|
+
function contrastRatio(a, b) {
|
|
27
|
+
const ca = parseHexColor(a);
|
|
28
|
+
const cb = parseHexColor(b);
|
|
29
|
+
if (!ca || !cb) return null;
|
|
30
|
+
const [hi, lo] = [luminance(ca), luminance(cb)].sort((x, y) => y - x);
|
|
31
|
+
return (hi + 0.05) / (lo + 0.05);
|
|
32
|
+
}
|
|
33
|
+
function barTextColor(theme) {
|
|
34
|
+
if (theme.barText) return theme.barText;
|
|
35
|
+
const candidates = [theme.surface, theme.bg, theme.text].filter((c) => !!c);
|
|
36
|
+
const scored = candidates.map((color) => ({ color, ratio: contrastRatio(color, theme.accent) }));
|
|
37
|
+
const passing = scored.find((s) => s.ratio !== null && s.ratio >= AA_LARGE);
|
|
38
|
+
if (passing) return passing.color;
|
|
39
|
+
const measurable = scored.filter((s) => s.ratio !== null).sort((a, b) => b.ratio - a.ratio);
|
|
40
|
+
return measurable[0]?.color ?? candidates[0];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { OG_HEIGHT, OG_REPORT_ATTR, OG_WIDTH, TITLE_MAX_PX, TITLE_MIN_PX, barTextColor, defineOgCard };
|
|
44
|
+
//# sourceMappingURL=chunk-YU7QZ3PP.mjs.map
|
|
45
|
+
//# sourceMappingURL=chunk-YU7QZ3PP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/og/config.ts","../src/og/contrast.ts"],"names":[],"mappings":";AA0IO,SAAS,aAAa,MAAA,EAAoC;AAC/D,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,QAAA,GAAW;AACjB,IAAM,SAAA,GAAY;AAWlB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AAOrB,IAAM,cAAA,GAAiB;;;AC1I9B,IAAM,QAAA,GAAW,CAAA;AAGV,SAAS,cAAc,KAAA,EAAgD;AAC5E,EAAA,MAAM,MAAM,KAAA,CAAM,IAAA,EAAK,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AACzC,EAAA,IAAI,CAAC,0CAAA,CAA2C,IAAA,CAAK,GAAG,GAAG,OAAO,IAAA;AAClE,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,IAAI,OAAA,CAAQ,IAAA,EAAM,CAAA,CAAA,KAAK,CAAA,GAAI,CAAC,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,GAAG,CAAC,CAAA;AAC9E,EAAA,OAAO,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAC9D;AAEA,SAAS,SAAA,CAAU,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAqC;AAC9D,EAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAc;AAC7B,IAAA,MAAM,IAAI,CAAA,GAAI,GAAA;AACd,IAAA,OAAO,KAAK,OAAA,GAAU,CAAA,GAAI,KAAA,GAAA,CAAA,CAAU,CAAA,GAAI,SAAS,KAAA,KAAU,GAAA;AAAA,EAC7D,CAAA;AACA,EAAA,OAAO,MAAA,GAAS,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA,GAAS,QAAQ,CAAC,CAAA,GAAI,MAAA,GAAS,OAAA,CAAQ,CAAC,CAAA;AACvE;AAGO,SAAS,aAAA,CAAc,GAAW,CAAA,EAA0B;AACjE,EAAA,MAAM,EAAA,GAAK,cAAc,CAAC,CAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,cAAc,CAAC,CAAA;AAC1B,EAAA,IAAI,CAAC,EAAA,IAAM,CAAC,EAAA,EAAI,OAAO,IAAA;AACvB,EAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAA,CAAU,EAAE,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AACpE,EAAA,OAAA,CAAQ,EAAA,GAAK,SAAS,EAAA,GAAK,IAAA,CAAA;AAC7B;AAYO,SAAS,aAAa,KAAA,EAAyB;AACpD,EAAA,IAAI,KAAA,CAAM,OAAA,EAAS,OAAO,KAAA,CAAM,OAAA;AAChC,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,CAAM,OAAA,EAAS,MAAM,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAmB,CAAC,CAAC,CAAC,CAAA;AACvF,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,CAAA,KAAA,MAAU,EAAE,KAAA,EAAO,KAAA,EAAO,aAAA,CAAc,KAAA,EAAO,KAAA,CAAM,MAAM,CAAA,EAAE,CAAE,CAAA;AAC7F,EAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,KAAA,KAAU,IAAA,IAAQ,CAAA,CAAE,KAAA,IAAS,QAAQ,CAAA;AACxE,EAAA,IAAI,OAAA,SAAgB,OAAA,CAAQ,KAAA;AAC5B,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,KAAA,KAAU,IAAI,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,KAAA,GAAS,EAAE,KAAM,CAAA;AAG1F,EAAA,OAAO,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,IAAS,WAAW,CAAC,CAAA;AAC7C","file":"chunk-YU7QZ3PP.mjs","sourcesContent":["/**\n * @sonordev/site-kit/og — OG card config contract.\n *\n * THE SITE OWNS THE THEME. Sonor stores one brand_primary/secondary per\n * project; real sites have full palettes (Ludlow: red, ink, cream, scrim —\n * four tokens where Sonor stores two). So the card's colors, fonts, and\n * layout come from a repo-owned og.config.ts, typically importing the same\n * constants the site itself uses. Sonor brand data is only the zero-config\n * seed used by `sonor-setup og` when no og.config.ts exists.\n *\n * Rendering is BUILD-TIME via headless Chrome (`sonor-setup og`), writing a\n * static public/og.png: full real CSS (no Satori subset), Google Fonts load\n * in the template (no font vendoring), zero runtime cost — the right shape\n * for a force-static fleet. Per-entity runtime cards are a future tier.\n */\n\nexport interface OgTheme {\n /** Page background behind everything. */\n bg: string\n /** Primary text color. */\n text: string\n /** Accent (kicker, bar). */\n accent: string\n /** Plate/surface color behind the logo. */\n surface: string\n /** Muted text (subtitle). Defaults derived from `text` when omitted. */\n muted?: string\n /**\n * Bottom-bar text, set on `accent`. Defaults to the first of `surface`,\n * `bg`, `text` that reaches WCAG AA for large text (3:1) against the\n * accent (see og/contrast.ts).\n */\n barText?: string\n}\n\nexport interface OgFont {\n /** Google Fonts family name, e.g. 'Barlow Condensed'. */\n family: string\n weights?: number[]\n}\n\nexport interface OgBackground {\n /** Path under public/, e.g. '/hero-frost.avif'. */\n image: string\n /** CSS blur radius in px. */\n blur?: number\n /** Overlay color, e.g. 'rgba(17,17,16,.68)'. */\n scrim?: string\n}\n\nexport interface OgPhoto {\n /** Path under public/ ('/team.jpg') or an absolute https URL. */\n src: string\n /** Pane width in px (default 430). */\n width?: number\n /** Corner radius in px (default 24). */\n radius?: number\n}\n\nexport interface OgContent {\n /** Small all-caps line above the title. */\n kicker?: string\n /** The big line. `\\n` for a manual break. Keep it short — previews truncate. */\n title: string\n /** One supporting line. */\n subtitle?: string\n /** Handwritten-style accent line (rendered in the last configured font). */\n hand?: string\n /** Bottom bar segments, e.g. ['Give an hour', 'ludlowpto.org']. */\n bar?: string[]\n}\n\n/**\n * A per-route entry in `cards`. Layered over the derived card, so it only\n * states what differs — including inside `content`: a route can override just\n * the subtitle and keep the title Sonor derived. The runtime always merged\n * field by field; this type used to demand a full OgContent, which forced\n * casts in every site that used the documented pattern.\n */\nexport type OgCardOverride = Partial<Omit<OgCardConfig, 'cards' | 'content'>> & {\n content?: Partial<OgContent>\n}\n\nexport interface OgCardConfig {\n theme: OgTheme\n /** First font = display face, second (optional) = hand/accent face. */\n fonts?: OgFont[]\n /** Path under public/ to the logo shown on the plate, e.g. '/logo-mark.svg'. */\n logo?: string\n background?: OgBackground\n /**\n * 'plate-left': logo plate left, copy right (the Ludlow layout).\n * 'centered': stacked, logo above title.\n * 'banner': no plate, full-bleed copy.\n * 'split': copy left, content photo right — for cards that show the page's\n * own imagery (a project photo, a product, the storefront).\n */\n layout?: 'plate-left' | 'centered' | 'banner' | 'split'\n /** Content photo for the 'split' layout (also rendered in 'plate-left' when set, replacing the plate). */\n photo?: OgPhoto\n content: OgContent\n /**\n * Per-page overrides, keyed by route path (`/services/garage`) or its slug\n * (`services-garage`). Every static route already gets its own card built\n * from its managed title and description; this is for the handful worth\n * writing by hand — a campaign landing page, the flagship service.\n *\n * A dynamic route is keyed by its pattern, one `*` per dynamic level:\n * `/services/*` for `[slug]`, plus another star for each nested `[param]`\n * (slug form `services-any`, `services-any-any`). Nested patterns are worth\n * writing by hand — they all derive from the same static ancestor otherwise.\n * `sonor-setup og` warns about any key that matches no route.\n *\n * Each entry is layered over the site card, so it only states what differs.\n * Build-time only: never rendered as part of a card.\n */\n cards?: Record<string, OgCardOverride>\n /**\n * MIDDLE escape hatch: keep the loader/renderer/verifier pipeline but\n * produce your own document. Receives the config and the same helpers the\n * stock template uses (esc, fontLink). Root-relative src attributes are\n * still rewritten to public/ files automatically.\n */\n template?: (config: OgCardConfig, helpers: OgTemplateHelpers) => string\n /** FULL escape hatch: raw HTML replaces everything, no helpers. */\n html?: string\n}\n\nexport interface OgTemplateHelpers {\n /** HTML-escape user text. */\n esc: (s: string) => string\n /** <link> tag loading the config's Google Fonts. */\n fontLink: string\n width: number\n height: number\n}\n\n/** Identity helper for typed configs: `export default defineOgCard({...})`. */\nexport function defineOgCard(config: OgCardConfig): OgCardConfig {\n return config\n}\n\nexport const OG_WIDTH = 1200\nexport const OG_HEIGHT = 630\n\n/**\n * Title type scale. The card opens at TITLE_MAX and the in-page fitter steps\n * down until the copy column fits, stopping at TITLE_MIN.\n *\n * The floor is a legibility floor, not a layout one: below ~56px the headline\n * stops reading at the ~300px thumbnail width platforms actually show. A card\n * that would need to go under it is a card whose copy is too long, so the\n * renderer reports that rather than shrinking into mush.\n */\nexport const TITLE_MAX_PX = 104\nexport const TITLE_MIN_PX = 56\n\n/**\n * The attribute the in-page fitter writes its findings to, read back by\n * `sonor-setup og` via Chrome's --dump-dom. Shared so the template and the CLI\n * cannot drift on the name.\n */\nexport const OG_REPORT_ATTR = 'data-og-report'\n\n/** What the in-page fitter reports back about a rendered card. */\nexport interface OgRenderReport {\n /** Did everything land inside the frame, at or above the legibility floor? */\n fits: boolean\n /** Final title size after fitting. Below TITLE_MAX means the copy ran long. */\n titlePx: number\n /** Human-readable problems, each naming the element and the overflow. */\n issues: string[]\n}\n","/**\n * @sonordev/site-kit/og — text color for the card's bottom bar.\n *\n * SINGLE SOURCE OF TRUTH for \"what color is the bar text\", shared by the\n * build-time template (template.ts) and the runtime card (route.tsx). The two\n * disagreed: the template set the bar in `theme.surface`, the runtime card in\n * `theme.text`, and on a site whose text and accent are both strong colors the\n * runtime bar came out unreadable (navy on crimson on watsonhac.com, ink on\n * green on reinhart). Both sites dropped the bar rather than ship it.\n *\n * `theme.barText` always wins. Otherwise the first candidate that reaches\n * WCAG AA for large text against the accent is used, in the order the\n * template always preferred (surface, then bg, then text), so every card\n * that already read well keeps its color. Failing that, the highest-contrast\n * candidate.\n *\n * Pure: no DOM, no Node built-ins.\n */\n\n/**\n * WCAG AA for LARGE text: the bar is bold and 30px or more on both cards,\n * well past the 18.66px-bold line. 4.5:1 (normal text) would flip readable\n * fleet bars like abbeyglenapts.com's white on orange (3.3:1) for no gain.\n */\nconst AA_LARGE = 3\n\n/** `#abc`, `#aabbcc`, `#aabbccdd` → [r, g, b] in 0-255, or null for anything else. */\nexport function parseHexColor(color: string): [number, number, number] | null {\n const hex = color.trim().replace(/^#/, '')\n if (!/^([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(hex)) return null\n const full = hex.length === 3 ? hex.replace(/./g, c => c + c) : hex.slice(0, 6)\n return [0, 2, 4].map(i => parseInt(full.slice(i, i + 2), 16)) as [number, number, number]\n}\n\nfunction luminance([r, g, b]: [number, number, number]): number {\n const channel = (v: number) => {\n const s = v / 255\n return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4\n }\n return 0.2126 * channel(r) + 0.7152 * channel(g) + 0.0722 * channel(b)\n}\n\n/** WCAG contrast ratio of two hex colors, or null when either isn't hex. */\nexport function contrastRatio(a: string, b: string): number | null {\n const ca = parseHexColor(a)\n const cb = parseHexColor(b)\n if (!ca || !cb) return null\n const [hi, lo] = [luminance(ca), luminance(cb)].sort((x, y) => y - x)\n return (hi + 0.05) / (lo + 0.05)\n}\n\nexport interface BarTheme {\n bg: string\n text: string\n accent: string\n surface?: string\n /** Explicit bar text color. Always wins. */\n barText?: string\n}\n\n/** The color to set the bottom bar's text in, on `theme.accent`. */\nexport function barTextColor(theme: BarTheme): string {\n if (theme.barText) return theme.barText\n const candidates = [theme.surface, theme.bg, theme.text].filter((c): c is string => !!c)\n const scored = candidates.map(color => ({ color, ratio: contrastRatio(color, theme.accent) }))\n const passing = scored.find(s => s.ratio !== null && s.ratio >= AA_LARGE)\n if (passing) return passing.color\n const measurable = scored.filter(s => s.ratio !== null).sort((a, b) => b.ratio! - a.ratio!)\n // Non-hex colors (rgb(), names) can't be scored; keep the template's old\n // choice for them rather than guess.\n return measurable[0]?.color ?? candidates[0]\n}\n"]}
|
|
@@ -1,11 +1,102 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunk5XFFUP6D_js = require('./chunk-5XFFUP6D.js');
|
|
5
|
+
var chunkLBZGYF3B_js = require('./chunk-LBZGYF3B.js');
|
|
6
|
+
var chunkP4Y75QSU_js = require('./chunk-P4Y75QSU.js');
|
|
5
7
|
var chunkVJMPIRSD_js = require('./chunk-VJMPIRSD.js');
|
|
6
|
-
var
|
|
8
|
+
var chunkPRTXAIIC_js = require('./chunk-PRTXAIIC.js');
|
|
7
9
|
var react = require('react');
|
|
8
10
|
|
|
11
|
+
// src/forms/field-interactions.ts
|
|
12
|
+
var MAX_TRACKED_FIELDS = 100;
|
|
13
|
+
var MAX_FIELD_SLUG_LENGTH = 100;
|
|
14
|
+
var FieldInteractionLog = class {
|
|
15
|
+
constructor() {
|
|
16
|
+
/**
|
|
17
|
+
* The field the visitor was on, reported as `abandonment_field` when they
|
|
18
|
+
* leave. The last FOCUSED field once the form reports focus; a headless form
|
|
19
|
+
* that never wires focus falls back to the last field whose value changed.
|
|
20
|
+
*/
|
|
21
|
+
this.lastField = null;
|
|
22
|
+
this.entries = /* @__PURE__ */ new Map();
|
|
23
|
+
this.focusReported = false;
|
|
24
|
+
/** The one field holding focus, if any. Only one can, so this is a slot, not a flag per field. */
|
|
25
|
+
this.open = null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Visitor moved focus into `slug`. Returns true when that's a new visit to
|
|
29
|
+
* the field; false for an untrackable slug or a field that already has focus.
|
|
30
|
+
*/
|
|
31
|
+
focus(slug, now = Date.now()) {
|
|
32
|
+
if (this.open?.slug === slug) return false;
|
|
33
|
+
const entry = this.entry(slug);
|
|
34
|
+
if (!entry) return false;
|
|
35
|
+
this.close(now);
|
|
36
|
+
entry.focusCount++;
|
|
37
|
+
this.open = { slug, since: now };
|
|
38
|
+
this.focusReported = true;
|
|
39
|
+
this.lastField = slug;
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
/** Visitor moved focus out of `slug`. */
|
|
43
|
+
blur(slug, now = Date.now()) {
|
|
44
|
+
if (this.open?.slug === slug) this.close(now);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* `slug`'s value changed. Counts as reaching the field even without a focus
|
|
48
|
+
* event: autofill, a custom renderer that doesn't report focus, a picker
|
|
49
|
+
* that sets the value from outside the input.
|
|
50
|
+
*/
|
|
51
|
+
change(slug) {
|
|
52
|
+
if (!this.entry(slug)) return false;
|
|
53
|
+
if (!this.focusReported) this.lastField = slug;
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
get size() {
|
|
57
|
+
return this.entries.size;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Every field reached so far. Time for a field that still has focus counts
|
|
61
|
+
* up to `now`, so a report built as the page hides includes the field the
|
|
62
|
+
* visitor was sitting in.
|
|
63
|
+
*/
|
|
64
|
+
snapshot(isComplete, now = Date.now()) {
|
|
65
|
+
const out = {};
|
|
66
|
+
for (const [slug, entry] of this.entries) {
|
|
67
|
+
const openMs = this.open?.slug === slug ? Math.max(0, now - this.open.since) : 0;
|
|
68
|
+
out[slug] = {
|
|
69
|
+
completed: safeIsComplete(isComplete, slug),
|
|
70
|
+
focusCount: entry.focusCount,
|
|
71
|
+
timeMs: Math.round(entry.timeMs + openMs)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
close(now) {
|
|
77
|
+
if (!this.open) return;
|
|
78
|
+
const entry = this.entries.get(this.open.slug);
|
|
79
|
+
if (entry) entry.timeMs += Math.max(0, now - this.open.since);
|
|
80
|
+
this.open = null;
|
|
81
|
+
}
|
|
82
|
+
entry(slug) {
|
|
83
|
+
if (typeof slug !== "string" || slug.length === 0 || slug.length > MAX_FIELD_SLUG_LENGTH) return null;
|
|
84
|
+
const existing = this.entries.get(slug);
|
|
85
|
+
if (existing) return existing;
|
|
86
|
+
if (this.entries.size >= MAX_TRACKED_FIELDS) return null;
|
|
87
|
+
const created = { focusCount: 0, timeMs: 0 };
|
|
88
|
+
this.entries.set(slug, created);
|
|
89
|
+
return created;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
function safeIsComplete(isComplete, slug) {
|
|
93
|
+
try {
|
|
94
|
+
return isComplete(slug) === true;
|
|
95
|
+
} catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
9
100
|
// src/forms/tracking-session.ts
|
|
10
101
|
var SESSION_GRACE_MS = 2e3;
|
|
11
102
|
var activeSessions = /* @__PURE__ */ new Map();
|
|
@@ -25,7 +116,11 @@ function acquireTrackingSession(formId, start) {
|
|
|
25
116
|
startedAt: Date.now(),
|
|
26
117
|
// Assigned below — declared here so the object shape is complete first.
|
|
27
118
|
analyticsId: null,
|
|
119
|
+
fields: new FieldInteractionLog(),
|
|
120
|
+
interacted: false,
|
|
121
|
+
completed: false,
|
|
28
122
|
abandonSent: false,
|
|
123
|
+
onEnd: null,
|
|
29
124
|
refCount: 1,
|
|
30
125
|
releaseTimer: null
|
|
31
126
|
};
|
|
@@ -41,17 +136,38 @@ function releaseTrackingSession(formId, session) {
|
|
|
41
136
|
session.releaseTimer = null;
|
|
42
137
|
if (session.refCount <= 0 && activeSessions.get(formId) === session) {
|
|
43
138
|
activeSessions.delete(formId);
|
|
139
|
+
const onEnd = session.onEnd;
|
|
140
|
+
session.onEnd = null;
|
|
141
|
+
try {
|
|
142
|
+
onEnd?.();
|
|
143
|
+
} catch {
|
|
144
|
+
}
|
|
44
145
|
}
|
|
45
146
|
}, SESSION_GRACE_MS);
|
|
46
147
|
session.releaseTimer?.unref?.();
|
|
47
148
|
}
|
|
149
|
+
function noteActivity(session) {
|
|
150
|
+
if (session.completed) return;
|
|
151
|
+
session.interacted = true;
|
|
152
|
+
session.abandonSent = false;
|
|
153
|
+
}
|
|
154
|
+
function claimAbandon(session) {
|
|
155
|
+
if (session.completed || !session.interacted || session.abandonSent) return false;
|
|
156
|
+
session.abandonSent = true;
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
function markCompleted(session) {
|
|
160
|
+
session.completed = true;
|
|
161
|
+
session.abandonSent = true;
|
|
162
|
+
}
|
|
48
163
|
|
|
49
164
|
// src/forms/useFormTracking.ts
|
|
50
165
|
function useFormTracking({
|
|
51
166
|
formId,
|
|
52
167
|
totalSteps,
|
|
53
168
|
enabled = true,
|
|
54
|
-
debug = false
|
|
169
|
+
debug = false,
|
|
170
|
+
isFieldComplete: isFieldComplete2
|
|
55
171
|
}) {
|
|
56
172
|
const sessionRef = react.useRef(null);
|
|
57
173
|
const sessionIdRef = react.useRef("");
|
|
@@ -61,6 +177,12 @@ function useFormTracking({
|
|
|
61
177
|
const currentStepRef = react.useRef(1);
|
|
62
178
|
const maxStepRef = react.useRef(1);
|
|
63
179
|
const analyticsIdRef = react.useRef(null);
|
|
180
|
+
const isFieldCompleteRef = react.useRef(isFieldComplete2);
|
|
181
|
+
isFieldCompleteRef.current = isFieldComplete2;
|
|
182
|
+
const fieldReport = react.useCallback((session, now) => {
|
|
183
|
+
const check = isFieldCompleteRef.current;
|
|
184
|
+
return session.fields.snapshot((slug) => check ? check(slug) : false, now);
|
|
185
|
+
}, []);
|
|
64
186
|
react.useEffect(() => {
|
|
65
187
|
if (!enabled) return;
|
|
66
188
|
if (!formId) {
|
|
@@ -75,7 +197,7 @@ function useFormTracking({
|
|
|
75
197
|
return null;
|
|
76
198
|
}
|
|
77
199
|
try {
|
|
78
|
-
const response = await
|
|
200
|
+
const response = await chunkPRTXAIIC_js.sonorFetch(
|
|
79
201
|
`${apiUrl}/api/public/forms/analytics/start`,
|
|
80
202
|
{
|
|
81
203
|
method: "POST",
|
|
@@ -108,37 +230,40 @@ function useFormTracking({
|
|
|
108
230
|
void session.analyticsId.then((id) => {
|
|
109
231
|
if (joined) analyticsIdRef.current = id;
|
|
110
232
|
});
|
|
111
|
-
const
|
|
112
|
-
if (!
|
|
113
|
-
if (session.abandonSent) return;
|
|
233
|
+
const reportAbandon = (analyticsId) => {
|
|
234
|
+
if (!analyticsId) return;
|
|
114
235
|
const apiUrl = window.__SITE_KIT_API_URL__;
|
|
115
236
|
const apiKey = window.__SITE_KIT_API_KEY__;
|
|
116
237
|
if (!apiUrl || !apiKey) return;
|
|
238
|
+
if (!claimAbandon(session)) return;
|
|
117
239
|
const now = Date.now();
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
session.abandonSent = true;
|
|
121
|
-
chunkOC7AO7XS_js.sonorBeacon(
|
|
240
|
+
stepTimesRef.current[currentStepRef.current] = Math.floor((now - stepStartTimeRef.current) / 1e3);
|
|
241
|
+
chunkPRTXAIIC_js.sonorBeacon(
|
|
122
242
|
`${apiUrl}/api/public/forms/analytics/abandon`,
|
|
123
243
|
{
|
|
124
|
-
analyticsId
|
|
244
|
+
analyticsId,
|
|
125
245
|
step: currentStepRef.current,
|
|
126
246
|
maxStep: maxStepRef.current,
|
|
127
247
|
stepTimes: stepTimesRef.current,
|
|
128
|
-
totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1e3)
|
|
248
|
+
totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1e3),
|
|
249
|
+
fieldInteractions: fieldReport(session, now),
|
|
250
|
+
abandonmentField: session.fields.lastField
|
|
129
251
|
},
|
|
130
252
|
apiKey
|
|
131
253
|
);
|
|
132
|
-
if (debug) console.log("[Forms] Abandonment tracked");
|
|
254
|
+
if (debug) console.log("[Forms] Abandonment tracked:", session.fields.lastField);
|
|
255
|
+
};
|
|
256
|
+
const stopLeaveListener = chunkP4Y75QSU_js.onPageLeave(() => reportAbandon(analyticsIdRef.current));
|
|
257
|
+
session.onEnd = () => {
|
|
258
|
+
void session.analyticsId.then(reportAbandon);
|
|
133
259
|
};
|
|
134
|
-
window.addEventListener("beforeunload", handleBeforeUnload);
|
|
135
260
|
return () => {
|
|
136
261
|
joined = false;
|
|
137
|
-
|
|
262
|
+
stopLeaveListener();
|
|
138
263
|
releaseTrackingSession(formId, session);
|
|
139
264
|
sessionRef.current = null;
|
|
140
265
|
};
|
|
141
|
-
}, [formId, enabled, debug]);
|
|
266
|
+
}, [formId, enabled, debug, fieldReport]);
|
|
142
267
|
const resolveAnalyticsId = react.useCallback(async () => {
|
|
143
268
|
if (analyticsIdRef.current) return analyticsIdRef.current;
|
|
144
269
|
const session = sessionRef.current;
|
|
@@ -147,6 +272,19 @@ function useFormTracking({
|
|
|
147
272
|
if (id) analyticsIdRef.current = id;
|
|
148
273
|
return id;
|
|
149
274
|
}, []);
|
|
275
|
+
const trackFieldFocus = react.useCallback((slug) => {
|
|
276
|
+
const session = sessionRef.current;
|
|
277
|
+
if (!session || session.completed) return;
|
|
278
|
+
if (session.fields.focus(slug)) noteActivity(session);
|
|
279
|
+
}, []);
|
|
280
|
+
const trackFieldBlur = react.useCallback((slug) => {
|
|
281
|
+
sessionRef.current?.fields.blur(slug);
|
|
282
|
+
}, []);
|
|
283
|
+
const trackFieldChange = react.useCallback((slug) => {
|
|
284
|
+
const session = sessionRef.current;
|
|
285
|
+
if (!session || session.completed) return;
|
|
286
|
+
if (session.fields.change(slug)) noteActivity(session);
|
|
287
|
+
}, []);
|
|
150
288
|
const trackStepChange = react.useCallback(async (step) => {
|
|
151
289
|
if (!enabled) return;
|
|
152
290
|
const apiUrl = window.__SITE_KIT_API_URL__;
|
|
@@ -161,10 +299,12 @@ function useFormTracking({
|
|
|
161
299
|
currentStepRef.current = step;
|
|
162
300
|
maxStepRef.current = Math.max(maxStepRef.current, step);
|
|
163
301
|
stepStartTimeRef.current = now;
|
|
302
|
+
const session = sessionRef.current;
|
|
303
|
+
if (session) noteActivity(session);
|
|
164
304
|
const analyticsId = await resolveAnalyticsId();
|
|
165
305
|
if (!analyticsId) return;
|
|
166
306
|
try {
|
|
167
|
-
const response = await
|
|
307
|
+
const response = await chunkPRTXAIIC_js.sonorFetch(
|
|
168
308
|
`${apiUrl}/api/public/forms/analytics/step`,
|
|
169
309
|
{
|
|
170
310
|
method: "POST",
|
|
@@ -173,7 +313,8 @@ function useFormTracking({
|
|
|
173
313
|
analyticsId,
|
|
174
314
|
step,
|
|
175
315
|
maxStep: maxStepRef.current,
|
|
176
|
-
stepTimes: stepTimesRef.current
|
|
316
|
+
stepTimes: stepTimesRef.current,
|
|
317
|
+
...session ? { fieldInteractions: fieldReport(session, Date.now()) } : {}
|
|
177
318
|
})
|
|
178
319
|
},
|
|
179
320
|
{ apiKey, retries: 0 }
|
|
@@ -185,9 +326,11 @@ function useFormTracking({
|
|
|
185
326
|
} catch (error) {
|
|
186
327
|
if (debug) console.error("[Forms] Error updating step:", error);
|
|
187
328
|
}
|
|
188
|
-
}, [enabled, debug, resolveAnalyticsId]);
|
|
329
|
+
}, [enabled, debug, resolveAnalyticsId, fieldReport]);
|
|
189
330
|
const trackComplete = react.useCallback(async () => {
|
|
190
331
|
if (!enabled) return;
|
|
332
|
+
const session = sessionRef.current;
|
|
333
|
+
if (session) markCompleted(session);
|
|
191
334
|
const apiUrl = window.__SITE_KIT_API_URL__;
|
|
192
335
|
const apiKey = window.__SITE_KIT_API_KEY__;
|
|
193
336
|
if (!apiUrl || !apiKey) {
|
|
@@ -197,21 +340,26 @@ function useFormTracking({
|
|
|
197
340
|
const now = Date.now();
|
|
198
341
|
const finalStepTime = Math.floor((now - stepStartTimeRef.current) / 1e3);
|
|
199
342
|
stepTimesRef.current[currentStepRef.current] = finalStepTime;
|
|
343
|
+
const fieldInteractions = session ? fieldReport(session, now) : void 0;
|
|
200
344
|
const analyticsId = await resolveAnalyticsId();
|
|
201
345
|
if (!analyticsId) return;
|
|
202
|
-
const session = sessionRef.current;
|
|
203
|
-
if (session) session.abandonSent = true;
|
|
204
346
|
try {
|
|
205
|
-
const response = await
|
|
347
|
+
const response = await chunkPRTXAIIC_js.sonorFetch(
|
|
206
348
|
`${apiUrl}/api/public/forms/analytics/complete`,
|
|
207
349
|
{
|
|
208
350
|
method: "POST",
|
|
351
|
+
// A form with a redirect_url navigates away right after submit, which
|
|
352
|
+
// cancels an ordinary in-flight fetch. And since completion now
|
|
353
|
+
// suppresses the abandon beacon, losing this would leave the row
|
|
354
|
+
// neither completed nor abandoned.
|
|
355
|
+
keepalive: true,
|
|
209
356
|
headers: { "Content-Type": "application/json" },
|
|
210
357
|
body: JSON.stringify({
|
|
211
358
|
analyticsId,
|
|
212
359
|
totalSteps,
|
|
213
360
|
stepTimes: stepTimesRef.current,
|
|
214
|
-
totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1e3)
|
|
361
|
+
totalTimeSeconds: Math.floor((now - startTimeRef.current) / 1e3),
|
|
362
|
+
...fieldInteractions ? { fieldInteractions } : {}
|
|
215
363
|
})
|
|
216
364
|
},
|
|
217
365
|
{ apiKey, retries: 0 }
|
|
@@ -223,10 +371,13 @@ function useFormTracking({
|
|
|
223
371
|
} catch (error) {
|
|
224
372
|
if (debug) console.error("[Forms] Error completing tracking:", error);
|
|
225
373
|
}
|
|
226
|
-
}, [enabled, totalSteps,
|
|
374
|
+
}, [enabled, totalSteps, debug, resolveAnalyticsId, fieldReport]);
|
|
227
375
|
return {
|
|
228
376
|
trackStepChange,
|
|
229
377
|
trackComplete,
|
|
378
|
+
trackFieldFocus,
|
|
379
|
+
trackFieldBlur,
|
|
380
|
+
trackFieldChange,
|
|
230
381
|
sessionId: sessionIdRef.current
|
|
231
382
|
};
|
|
232
383
|
}
|
|
@@ -249,7 +400,7 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
249
400
|
} = options;
|
|
250
401
|
const projectId = optionsProjectId || (typeof window !== "undefined" ? window.__SITE_KIT_PROJECT_ID__ : void 0);
|
|
251
402
|
const [form, setForm] = react.useState(
|
|
252
|
-
() => initialForm ?
|
|
403
|
+
() => initialForm ? chunkLBZGYF3B_js.normalizeFormConfig(initialForm) : null
|
|
253
404
|
);
|
|
254
405
|
const [isLoading, setIsLoading] = react.useState(!initialForm);
|
|
255
406
|
const [fetchError, setFetchError] = react.useState(null);
|
|
@@ -272,11 +423,6 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
272
423
|
const formLoadedAt = react.useRef(Date.now());
|
|
273
424
|
const totalSteps = form?.total_steps || 1;
|
|
274
425
|
const isMultiStep = form?.is_multi_step || false;
|
|
275
|
-
const { trackStepChange, trackComplete } = useFormTracking({
|
|
276
|
-
formId: form?.id || "",
|
|
277
|
-
totalSteps,
|
|
278
|
-
enabled: trackAnalytics
|
|
279
|
-
});
|
|
280
426
|
react.useEffect(() => {
|
|
281
427
|
const initialMatches = initialForm && (initialForm.slug === formIdOrSlug || initialForm.id === formIdOrSlug);
|
|
282
428
|
if (initialMatches) {
|
|
@@ -310,7 +456,7 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
310
456
|
formIdOrSlug
|
|
311
457
|
})
|
|
312
458
|
};
|
|
313
|
-
const response = await
|
|
459
|
+
const response = await chunkPRTXAIIC_js.sonorFetch(url, init, { apiKey, retries: 3, timeoutMs: 15e3 });
|
|
314
460
|
if (!response.ok) {
|
|
315
461
|
throw new Error(`Failed to fetch form: ${response.statusText}`);
|
|
316
462
|
}
|
|
@@ -320,7 +466,7 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
320
466
|
;
|
|
321
467
|
window.__SITE_KIT_RECAPTCHA_SITE_KEY__ = data.recaptcha_site_key;
|
|
322
468
|
}
|
|
323
|
-
setForm(
|
|
469
|
+
setForm(chunkLBZGYF3B_js.normalizeFormConfig(data));
|
|
324
470
|
const defaults = {};
|
|
325
471
|
for (const field of data.fields || []) {
|
|
326
472
|
if (field.default_value !== void 0 && field.default_value !== null) {
|
|
@@ -343,102 +489,67 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
343
489
|
if (!currentStepConfig) return allFields;
|
|
344
490
|
return allFields.filter((f) => f.step_id === currentStepConfig.id);
|
|
345
491
|
}, [form, step, allFields, isMultiStep]);
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
switch (operator) {
|
|
351
|
-
case "equals":
|
|
352
|
-
return fieldValue === value;
|
|
353
|
-
case "not_equals":
|
|
354
|
-
return fieldValue !== value;
|
|
355
|
-
case "contains":
|
|
356
|
-
return String(fieldValue || "").includes(String(value));
|
|
357
|
-
case "not_contains":
|
|
358
|
-
return !String(fieldValue || "").includes(String(value));
|
|
359
|
-
case "is_empty":
|
|
360
|
-
return !fieldValue || fieldValue === "";
|
|
361
|
-
case "not_empty":
|
|
362
|
-
return !!fieldValue && fieldValue !== "";
|
|
363
|
-
case "greater_than":
|
|
364
|
-
return Number(fieldValue) > Number(value);
|
|
365
|
-
case "less_than":
|
|
366
|
-
return Number(fieldValue) < Number(value);
|
|
367
|
-
default:
|
|
368
|
-
return true;
|
|
369
|
-
}
|
|
370
|
-
}, [values]);
|
|
492
|
+
const isFieldVisible2 = react.useCallback(
|
|
493
|
+
(field) => chunk5XFFUP6D_js.isFieldVisible(field, values),
|
|
494
|
+
[values]
|
|
495
|
+
);
|
|
371
496
|
const visibleFields = react.useMemo(() => {
|
|
372
|
-
return fields.filter(
|
|
373
|
-
}, [fields,
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
return
|
|
395
|
-
}
|
|
396
|
-
if (rules.pattern) {
|
|
397
|
-
try {
|
|
398
|
-
if (!new RegExp(rules.pattern).test(strValue)) {
|
|
399
|
-
return rules.custom_error || `${field.label} is invalid`;
|
|
400
|
-
}
|
|
401
|
-
} catch {
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
if (field.field_type === "email" && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(strValue)) {
|
|
405
|
-
return "Please enter a valid email address";
|
|
406
|
-
}
|
|
407
|
-
if (field.field_type === "phone" && !/^[\d\s\-\+\(\)]+$/.test(strValue)) {
|
|
408
|
-
return "Please enter a valid phone number";
|
|
497
|
+
return fields.filter(isFieldVisible2);
|
|
498
|
+
}, [fields, isFieldVisible2]);
|
|
499
|
+
const validateField2 = react.useCallback(
|
|
500
|
+
(field) => chunk5XFFUP6D_js.validateField(field, values, isFieldVisible2),
|
|
501
|
+
[values, isFieldVisible2]
|
|
502
|
+
);
|
|
503
|
+
const fieldBySlug = react.useMemo(
|
|
504
|
+
() => new Map(allFields.map((f) => [f.slug, f])),
|
|
505
|
+
[allFields]
|
|
506
|
+
);
|
|
507
|
+
const {
|
|
508
|
+
trackStepChange,
|
|
509
|
+
trackComplete,
|
|
510
|
+
trackFieldFocus,
|
|
511
|
+
trackFieldBlur,
|
|
512
|
+
trackFieldChange
|
|
513
|
+
} = useFormTracking({
|
|
514
|
+
formId: form?.id || "",
|
|
515
|
+
totalSteps,
|
|
516
|
+
enabled: trackAnalytics,
|
|
517
|
+
isFieldComplete: (slug) => {
|
|
518
|
+
const field = fieldBySlug.get(slug);
|
|
519
|
+
return field ? chunk5XFFUP6D_js.isFieldComplete(field, values, isFieldVisible2) : false;
|
|
409
520
|
}
|
|
410
|
-
|
|
411
|
-
}, [values, isFieldVisible]);
|
|
521
|
+
});
|
|
412
522
|
const validate = react.useCallback(() => {
|
|
413
523
|
const newErrors = {};
|
|
414
524
|
for (const field of fields) {
|
|
415
|
-
const error =
|
|
525
|
+
const error = validateField2(field);
|
|
416
526
|
if (error) {
|
|
417
527
|
newErrors[field.slug] = error;
|
|
418
528
|
}
|
|
419
529
|
}
|
|
420
530
|
setErrors(newErrors);
|
|
421
531
|
return Object.keys(newErrors).length === 0;
|
|
422
|
-
}, [fields,
|
|
532
|
+
}, [fields, validateField2]);
|
|
423
533
|
const validateAll = react.useCallback(() => {
|
|
424
534
|
const newErrors = {};
|
|
425
535
|
for (const field of allFields) {
|
|
426
|
-
const error =
|
|
536
|
+
const error = validateField2(field);
|
|
427
537
|
if (error) newErrors[field.slug] = error;
|
|
428
538
|
}
|
|
429
539
|
setErrors(newErrors);
|
|
430
540
|
return Object.keys(newErrors).length === 0;
|
|
431
|
-
}, [allFields,
|
|
541
|
+
}, [allFields, validateField2]);
|
|
432
542
|
const buildVisibleValues = react.useCallback(() => {
|
|
433
543
|
const out = {};
|
|
434
544
|
for (const field of allFields) {
|
|
435
|
-
if (!
|
|
545
|
+
if (!isFieldVisible2(field)) continue;
|
|
436
546
|
if (field.slug in values) out[field.slug] = values[field.slug];
|
|
437
547
|
}
|
|
438
548
|
return out;
|
|
439
|
-
}, [allFields, values,
|
|
549
|
+
}, [allFields, values, isFieldVisible2]);
|
|
440
550
|
const setFieldValue = react.useCallback((key, value) => {
|
|
441
551
|
setValuesState((prev) => ({ ...prev, [key]: value }));
|
|
552
|
+
trackFieldChange(key);
|
|
442
553
|
setErrors((prev) => {
|
|
443
554
|
if (prev[key]) {
|
|
444
555
|
const next = { ...prev };
|
|
@@ -447,7 +558,7 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
447
558
|
}
|
|
448
559
|
return prev;
|
|
449
560
|
});
|
|
450
|
-
}, []);
|
|
561
|
+
}, [trackFieldChange]);
|
|
451
562
|
const setValues = react.useCallback((newValues) => {
|
|
452
563
|
setValuesState((prev) => ({ ...prev, ...newValues }));
|
|
453
564
|
}, []);
|
|
@@ -489,7 +600,7 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
489
600
|
setIsSubmitting(true);
|
|
490
601
|
setSubmitError(null);
|
|
491
602
|
try {
|
|
492
|
-
const data = await
|
|
603
|
+
const data = await chunkLBZGYF3B_js.submitForm({
|
|
493
604
|
config: form,
|
|
494
605
|
values: buildVisibleValues(),
|
|
495
606
|
honeypotValue: "",
|
|
@@ -542,16 +653,18 @@ function useForm(formIdOrSlug, options = {}) {
|
|
|
542
653
|
canGoPrev,
|
|
543
654
|
isLastStep,
|
|
544
655
|
validate,
|
|
545
|
-
validateField,
|
|
546
|
-
isFieldVisible,
|
|
656
|
+
validateField: validateField2,
|
|
657
|
+
isFieldVisible: isFieldVisible2,
|
|
547
658
|
submit,
|
|
548
659
|
isSubmitting,
|
|
549
660
|
isComplete,
|
|
550
|
-
reset
|
|
661
|
+
reset,
|
|
662
|
+
trackFieldFocus,
|
|
663
|
+
trackFieldBlur
|
|
551
664
|
};
|
|
552
665
|
}
|
|
553
666
|
|
|
554
667
|
exports.useForm = useForm;
|
|
555
668
|
exports.useFormTracking = useFormTracking;
|
|
556
|
-
//# sourceMappingURL=chunk-
|
|
557
|
-
//# sourceMappingURL=chunk-
|
|
669
|
+
//# sourceMappingURL=chunk-ZEOC26LZ.js.map
|
|
670
|
+
//# sourceMappingURL=chunk-ZEOC26LZ.js.map
|