@sonordev/site-kit 4.2.0 → 4.2.3
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/agent-manifest.json +1 -1
- package/dist/AnalyticsProvider-NW3UZYL5.mjs +10 -0
- package/dist/{AnalyticsProvider-QD7H2FER.mjs.map → AnalyticsProvider-NW3UZYL5.mjs.map} +1 -1
- package/dist/AnalyticsProvider-VSTTYP4W.js +31 -0
- package/dist/{AnalyticsProvider-JTAJ27EC.js.map → AnalyticsProvider-VSTTYP4W.js.map} +1 -1
- package/dist/ChatWidget-BJOE2OSI.js +20 -0
- package/dist/{ChatWidget-7UV4LXJR.js.map → ChatWidget-BJOE2OSI.js.map} +1 -1
- package/dist/ChatWidget-EWQ7LRD4.mjs +11 -0
- package/dist/{ChatWidget-BS6STWYV.mjs.map → ChatWidget-EWQ7LRD4.mjs.map} +1 -1
- package/dist/EngageWidget-CZMNLFWI.js +18 -0
- package/dist/{EngageWidget-AQOTCO46.js.map → EngageWidget-CZMNLFWI.js.map} +1 -1
- package/dist/EngageWidget-F427CI6Y.mjs +9 -0
- package/dist/{EngageWidget-M7MZXPC4.mjs.map → EngageWidget-F427CI6Y.mjs.map} +1 -1
- package/dist/{FileField-VIYBV4GM.mjs → FileField-5RVBU3Z4.mjs} +5 -5
- package/dist/{FileField-VIYBV4GM.mjs.map → FileField-5RVBU3Z4.mjs.map} +1 -1
- package/dist/{FileField-JIWKVY73.js → FileField-Y4ZA7DST.js} +6 -6
- package/dist/{FileField-JIWKVY73.js.map → FileField-Y4ZA7DST.js.map} +1 -1
- package/dist/{FormSpotlight-7P3JV3XK.mjs → FormSpotlight-CJPI2MRJ.mjs} +3 -3
- package/dist/{FormSpotlight-7P3JV3XK.mjs.map → FormSpotlight-CJPI2MRJ.mjs.map} +1 -1
- package/dist/{FormSpotlight-MSBWEM3F.js → FormSpotlight-MAEV6SZK.js} +15 -15
- package/dist/{FormSpotlight-MSBWEM3F.js.map → FormSpotlight-MAEV6SZK.js.map} +1 -1
- package/dist/{FormStage-FME3O3N2.js → FormStage-D42NAHSN.js} +13 -13
- package/dist/{FormStage-FME3O3N2.js.map → FormStage-D42NAHSN.js.map} +1 -1
- package/dist/{FormStage-327WGVBM.mjs → FormStage-Z7WW3DNA.mjs} +3 -3
- package/dist/{FormStage-327WGVBM.mjs.map → FormStage-Z7WW3DNA.mjs.map} +1 -1
- package/dist/ManagedForm-A7BROQIN.mjs +14 -0
- package/dist/{ManagedForm-BFZWPWGY.mjs.map → ManagedForm-A7BROQIN.mjs.map} +1 -1
- package/dist/ManagedForm-Z3Z5Z6OL.js +23 -0
- package/dist/{ManagedForm-5BXS3XKX.js.map → ManagedForm-Z3Z5Z6OL.js.map} +1 -1
- package/dist/{SignalCore-EE2RAGZ2.mjs → SignalCore-77UH6PZ4.mjs} +5 -5
- package/dist/{SignalCore-EE2RAGZ2.mjs.map → SignalCore-77UH6PZ4.mjs.map} +1 -1
- package/dist/{SignalCore-IPLGFFC3.js → SignalCore-NA6TJFVE.js} +11 -11
- package/dist/{SignalCore-IPLGFFC3.js.map → SignalCore-NA6TJFVE.js.map} +1 -1
- package/dist/SitemapSync-62F6HVAW.js +17 -0
- package/dist/{SitemapSync-XBYRZ7WH.js.map → SitemapSync-62F6HVAW.js.map} +1 -1
- package/dist/SitemapSync-EY33A6P4.mjs +8 -0
- package/dist/{SitemapSync-2X6NM3TX.mjs.map → SitemapSync-EY33A6P4.mjs.map} +1 -1
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/api-N5OLQXYN.js +202 -0
- package/dist/api-N5OLQXYN.js.map +1 -0
- package/dist/api-NTHZ6PAW.mjs +184 -0
- package/dist/api-NTHZ6PAW.mjs.map +1 -0
- package/dist/{chunk-NDASB3X3.js → chunk-2XRGCDDG.js} +9 -9
- package/dist/{chunk-NDASB3X3.js.map → chunk-2XRGCDDG.js.map} +1 -1
- package/dist/{chunk-GXABJJ4F.js → chunk-3DSGMX7P.js} +3 -3
- package/dist/{chunk-GXABJJ4F.js.map → chunk-3DSGMX7P.js.map} +1 -1
- package/dist/{chunk-57IFVXCB.mjs → chunk-3P4HJAZA.mjs} +4 -4
- package/dist/{chunk-57IFVXCB.mjs.map → chunk-3P4HJAZA.mjs.map} +1 -1
- package/dist/{chunk-4HNFMOYE.mjs → chunk-535HXGDU.mjs} +3 -3
- package/dist/{chunk-4HNFMOYE.mjs.map → chunk-535HXGDU.mjs.map} +1 -1
- package/dist/{chunk-OO4T5X4Z.mjs → chunk-6D3HZKTZ.mjs} +3 -3
- package/dist/{chunk-OO4T5X4Z.mjs.map → chunk-6D3HZKTZ.mjs.map} +1 -1
- package/dist/{chunk-XOSAVYAI.js → chunk-7BVZLSUJ.js} +8 -8
- package/dist/{chunk-XOSAVYAI.js.map → chunk-7BVZLSUJ.js.map} +1 -1
- package/dist/{chunk-4PP4D3TF.js → chunk-BN4AL7XB.js} +4 -4
- package/dist/{chunk-4PP4D3TF.js.map → chunk-BN4AL7XB.js.map} +1 -1
- package/dist/{chunk-XZCZCND2.mjs → chunk-DZUOLOYS.mjs} +3 -3
- package/dist/{chunk-XZCZCND2.mjs.map → chunk-DZUOLOYS.mjs.map} +1 -1
- package/dist/{chunk-MTXQG3TX.mjs → chunk-EHNUPEFY.mjs} +18 -8
- package/dist/chunk-EHNUPEFY.mjs.map +1 -0
- package/dist/{chunk-CMIFYDKA.mjs → chunk-FZAAQE4Y.mjs} +4 -4
- package/dist/{chunk-CMIFYDKA.mjs.map → chunk-FZAAQE4Y.mjs.map} +1 -1
- package/dist/{chunk-S2C3QU4E.js → chunk-GDMOAGVS.js} +29 -19
- package/dist/chunk-GDMOAGVS.js.map +1 -0
- package/dist/{chunk-WLVS4QBK.js → chunk-GJKO2TZN.js} +4 -4
- package/dist/{chunk-WLVS4QBK.js.map → chunk-GJKO2TZN.js.map} +1 -1
- package/dist/{chunk-DQO4UKFE.mjs → chunk-HTLWSCUQ.mjs} +76 -4
- package/dist/chunk-HTLWSCUQ.mjs.map +1 -0
- package/dist/{chunk-VTFDE7H2.js → chunk-HVDKAR77.js} +7 -7
- package/dist/{chunk-VTFDE7H2.js.map → chunk-HVDKAR77.js.map} +1 -1
- package/dist/{chunk-UKFBG6FV.mjs → chunk-I7ORAWYT.mjs} +3 -3
- package/dist/{chunk-UKFBG6FV.mjs.map → chunk-I7ORAWYT.mjs.map} +1 -1
- package/dist/{chunk-SDBUPTF4.mjs → chunk-INA4NW3Y.mjs} +3 -3
- package/dist/{chunk-SDBUPTF4.mjs.map → chunk-INA4NW3Y.mjs.map} +1 -1
- package/dist/{chunk-DNEUGYTE.mjs → chunk-J6HWSJT7.mjs} +3 -3
- package/dist/{chunk-DNEUGYTE.mjs.map → chunk-J6HWSJT7.mjs.map} +1 -1
- package/dist/{chunk-VOMAEC5G.js → chunk-JJDY5XXG.js} +3 -3
- package/dist/{chunk-VOMAEC5G.js.map → chunk-JJDY5XXG.js.map} +1 -1
- package/dist/{chunk-MZZQHGXY.mjs → chunk-KL4MV6HK.mjs} +3 -3
- package/dist/{chunk-MZZQHGXY.mjs.map → chunk-KL4MV6HK.mjs.map} +1 -1
- package/dist/{chunk-JWIJZQYI.js → chunk-M2SEYO5J.js} +5 -5
- package/dist/{chunk-JWIJZQYI.js.map → chunk-M2SEYO5J.js.map} +1 -1
- package/dist/{chunk-FFQAKIV5.js → chunk-MF6XLEX5.js} +15 -15
- package/dist/{chunk-FFQAKIV5.js.map → chunk-MF6XLEX5.js.map} +1 -1
- package/dist/{chunk-7UCKV4WA.js → chunk-MP7ZYKMM.js} +8 -8
- package/dist/{chunk-7UCKV4WA.js.map → chunk-MP7ZYKMM.js.map} +1 -1
- package/dist/{chunk-INW43FWV.js → chunk-N5RTJNMN.js} +6 -6
- package/dist/{chunk-INW43FWV.js.map → chunk-N5RTJNMN.js.map} +1 -1
- package/dist/{chunk-QNEBWBZ4.js → chunk-NEIUWAAL.js} +5 -5
- package/dist/{chunk-QNEBWBZ4.js.map → chunk-NEIUWAAL.js.map} +1 -1
- package/dist/{chunk-Z7HAQTWP.js → chunk-OHA43BNK.js} +14 -14
- package/dist/{chunk-Z7HAQTWP.js.map → chunk-OHA43BNK.js.map} +1 -1
- package/dist/{chunk-TGGSXT3F.mjs → chunk-PTZB4ES3.mjs} +9 -9
- package/dist/chunk-PTZB4ES3.mjs.map +1 -0
- package/dist/{chunk-FMAEUQEZ.js → chunk-QJK2X3UK.js} +97 -28
- package/dist/chunk-QJK2X3UK.js.map +1 -0
- package/dist/{chunk-VGPZ4PCZ.mjs → chunk-RCRDDMUO.mjs} +3 -3
- package/dist/{chunk-VGPZ4PCZ.mjs.map → chunk-RCRDDMUO.mjs.map} +1 -1
- package/dist/{chunk-IWFP2FQ5.js → chunk-RDISSFEH.js} +15 -15
- package/dist/{chunk-IWFP2FQ5.js.map → chunk-RDISSFEH.js.map} +1 -1
- package/dist/{chunk-R6LQRHPQ.mjs → chunk-RRR6Y6Y5.mjs} +4 -4
- package/dist/{chunk-R6LQRHPQ.mjs.map → chunk-RRR6Y6Y5.mjs.map} +1 -1
- package/dist/chunk-S5L73KZQ.js +8 -0
- package/dist/{chunk-CBN73TLK.js.map → chunk-S5L73KZQ.js.map} +1 -1
- package/dist/{chunk-AVWIKVVE.js → chunk-S5UATBC7.js} +14 -14
- package/dist/{chunk-AVWIKVVE.js.map → chunk-S5UATBC7.js.map} +1 -1
- package/dist/{chunk-PKQVV6LW.js → chunk-SAR473OC.js} +13 -13
- package/dist/chunk-SAR473OC.js.map +1 -0
- package/dist/{chunk-DYDAV4Y4.mjs → chunk-SL6ZGJVN.mjs} +4 -4
- package/dist/{chunk-DYDAV4Y4.mjs.map → chunk-SL6ZGJVN.mjs.map} +1 -1
- package/dist/{chunk-WFCRXUNA.mjs → chunk-T3HGONNE.mjs} +4 -4
- package/dist/{chunk-WFCRXUNA.mjs.map → chunk-T3HGONNE.mjs.map} +1 -1
- package/dist/{chunk-WCIQKO7W.mjs → chunk-T6T5IQMN.mjs} +3 -3
- package/dist/{chunk-WCIQKO7W.mjs.map → chunk-T6T5IQMN.mjs.map} +1 -1
- package/dist/{chunk-XXBVF7WN.mjs → chunk-TFAYDIWM.mjs} +3 -3
- package/dist/{chunk-XXBVF7WN.mjs.map → chunk-TFAYDIWM.mjs.map} +1 -1
- package/dist/{chunk-A5FJZWGY.mjs → chunk-TKVADZFD.mjs} +4 -4
- package/dist/{chunk-A5FJZWGY.mjs.map → chunk-TKVADZFD.mjs.map} +1 -1
- package/dist/{chunk-UDPUBSSS.mjs → chunk-UDNXM6RB.mjs} +3 -3
- package/dist/{chunk-UDPUBSSS.mjs.map → chunk-UDNXM6RB.mjs.map} +1 -1
- package/dist/{chunk-HLCCE7BD.js → chunk-WCTOQFAN.js} +14 -14
- package/dist/{chunk-HLCCE7BD.js.map → chunk-WCTOQFAN.js.map} +1 -1
- package/dist/{chunk-KFDFXRBE.js → chunk-XA7RBHKT.js} +4 -4
- package/dist/{chunk-KFDFXRBE.js.map → chunk-XA7RBHKT.js.map} +1 -1
- package/dist/chunk-XCFCG46K.mjs +6 -0
- package/dist/{chunk-LS64Y25E.mjs.map → chunk-XCFCG46K.mjs.map} +1 -1
- package/dist/{chunk-4YWGUQPU.js → chunk-XOJYGBYF.js} +3 -3
- package/dist/{chunk-4YWGUQPU.js.map → chunk-XOJYGBYF.js.map} +1 -1
- package/dist/{chunk-DSECSIWJ.mjs → chunk-XR3MDDQT.mjs} +3 -3
- package/dist/{chunk-DSECSIWJ.mjs.map → chunk-XR3MDDQT.mjs.map} +1 -1
- package/dist/{chunk-HI6DVYVN.mjs → chunk-XWFUQMU6.mjs} +3 -3
- package/dist/{chunk-HI6DVYVN.mjs.map → chunk-XWFUQMU6.mjs.map} +1 -1
- package/dist/{chunk-IV7LOJZO.js → chunk-YWXZ4YLU.js} +4 -4
- package/dist/{chunk-IV7LOJZO.js.map → chunk-YWXZ4YLU.js.map} +1 -1
- package/dist/{chunk-WCRBZZRI.mjs → chunk-ZASFY4NR.mjs} +89 -20
- package/dist/chunk-ZASFY4NR.mjs.map +1 -0
- package/dist/{chunk-6TAXXKMX.js → chunk-ZAVNGZJZ.js} +77 -3
- package/dist/chunk-ZAVNGZJZ.js.map +1 -0
- package/dist/cli/agent/checks.d.ts.map +1 -1
- package/dist/cli/commands/og.d.ts +46 -11
- package/dist/cli/commands/og.d.ts.map +1 -1
- package/dist/cli/index.js +516 -174
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +514 -172
- package/dist/cli/index.mjs.map +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/engage/index.js +10 -10
- package/dist/engage/index.mjs +7 -7
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/ManagedForm.d.ts.map +1 -1
- package/dist/forms/index.js +16 -16
- package/dist/forms/index.mjs +9 -9
- package/dist/forms/server.js +10 -10
- package/dist/forms/server.mjs +8 -8
- package/dist/forms/static.js +7 -7
- package/dist/forms/static.mjs +6 -6
- package/dist/forms/tracking-session.d.ts +63 -0
- package/dist/forms/tracking-session.d.ts.map +1 -0
- package/dist/forms/tracking-session.test.d.ts +22 -0
- package/dist/forms/tracking-session.test.d.ts.map +1 -0
- package/dist/forms/useForm.d.ts +11 -0
- package/dist/forms/useForm.d.ts.map +1 -1
- package/dist/forms/useFormTracking.d.ts +6 -1
- 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 +63 -63
- package/dist/index.mjs +9 -9
- package/dist/layout/SiteKitClientProviders.d.ts +7 -0
- package/dist/layout/SiteKitClientProviders.d.ts.map +1 -1
- package/dist/layout/SiteKitLayout.d.ts +18 -1
- package/dist/layout/SiteKitLayout.d.ts.map +1 -1
- package/dist/layout/client.d.ts +7 -0
- package/dist/layout/client.d.ts.map +1 -1
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +11 -11
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +9 -9
- package/dist/layout/index.mjs.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/og/config.d.ts +36 -0
- package/dist/og/config.d.ts.map +1 -1
- package/dist/og/index.js +5 -5
- package/dist/og/index.mjs +1 -1
- package/dist/og/pages.d.ts +56 -0
- package/dist/og/pages.d.ts.map +1 -0
- package/dist/og/pages.test.d.ts +2 -0
- package/dist/og/pages.test.d.ts.map +1 -0
- package/dist/og/template.d.ts.map +1 -1
- package/dist/og/wiring.d.ts +56 -0
- package/dist/og/wiring.d.ts.map +1 -0
- package/dist/og/wiring.test.d.ts +2 -0
- package/dist/og/wiring.test.d.ts.map +1 -0
- 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/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/register-sitemap-cli.mjs +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- 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/dist/types.d.ts +5 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/AnalyticsProvider-JTAJ27EC.js +0 -31
- package/dist/AnalyticsProvider-QD7H2FER.mjs +0 -10
- package/dist/ChatWidget-7UV4LXJR.js +0 -20
- package/dist/ChatWidget-BS6STWYV.mjs +0 -11
- package/dist/EngageWidget-AQOTCO46.js +0 -18
- package/dist/EngageWidget-M7MZXPC4.mjs +0 -9
- package/dist/ManagedForm-5BXS3XKX.js +0 -23
- package/dist/ManagedForm-BFZWPWGY.mjs +0 -14
- package/dist/SitemapSync-2X6NM3TX.mjs +0 -8
- package/dist/SitemapSync-XBYRZ7WH.js +0 -17
- package/dist/chunk-6TAXXKMX.js.map +0 -1
- package/dist/chunk-CBN73TLK.js +0 -8
- package/dist/chunk-DQO4UKFE.mjs.map +0 -1
- package/dist/chunk-FMAEUQEZ.js.map +0 -1
- package/dist/chunk-LS64Y25E.mjs +0 -6
- package/dist/chunk-MTXQG3TX.mjs.map +0 -1
- package/dist/chunk-PKQVV6LW.js.map +0 -1
- package/dist/chunk-S2C3QU4E.js.map +0 -1
- package/dist/chunk-TGGSXT3F.mjs.map +0 -1
- package/dist/chunk-WCRBZZRI.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/field-controls.ts","../src/forms/experience-plan.ts"],"names":[],"mappings":"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","file":"chunk-UDPUBSSS.mjs","sourcesContent":["'use client'\n\n/**\n * The field controls that need React hooks, loaded only when a form actually\n * has a field that uses them.\n *\n * FormField deliberately does NOT import these. DatePicker carries 17 hooks\n * and FileField holds upload state; importing them there put both in\n * FormField's chunk, which the build stamps `'use client'` — so a Server\n * Component rendering a single text input shipped 38 KB of date picker to the\n * browser. Injecting them from the client side keeps FormField hook-free and\n * therefore server-renderable, which is the whole basis of StaticForm.\n *\n * Injection alone still put both controls in the forms entry's eager graph,\n * because a module-level constant referencing them is a static import: every\n * form paid for the date picker, and most forms have no date field. They are\n * now fetched on demand, per control, from the field list.\n *\n * The wait costs nothing visually. FormField already renders the native\n * control when a control is absent (static mode does exactly this), so a date\n * field paints as `<input type=\"date\">` and upgrades in place when the chunk\n * lands — the same enhancement path a no-JS visitor never leaves.\n *\n * Every client renderer of <FormField> (FormClient, FormSpotlight, FormStage)\n * calls this hook, so the experiences and the classic form always offer\n * identical controls.\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport type { FormField as FormFieldType } from './types'\n\nexport interface FieldControls {\n Date?: React.ComponentType<any>\n File?: React.ComponentType<any>\n}\n\n/** Stable identity for the common case (no date, no file) — no render churn. */\nconst NO_CONTROLS: FieldControls = {}\n\nexport function useFieldControls(fields: FormFieldType[] | undefined): FieldControls {\n const needsDate = useMemo(\n () => (fields ?? []).some((f) => f.field_type === 'date' || f.field_type === 'datetime'),\n [fields],\n )\n const needsFile = useMemo(\n () => (fields ?? []).some((f) => f.field_type === 'file'),\n [fields],\n )\n\n const [controls, setControls] = useState<FieldControls>(NO_CONTROLS)\n // Guards re-import when a conditional field toggles visibility mid-fill.\n const requested = useRef({ date: false, file: false })\n\n useEffect(() => {\n let cancelled = false\n\n if (needsDate && !requested.current.date) {\n requested.current.date = true\n import('./DatePicker')\n .then((m) => {\n if (!cancelled) setControls((prev) => ({ ...prev, Date: m.DatePicker }))\n })\n .catch(() => {\n // Chunk never arrived — the native date input stays, which submits\n // the same value. A failed fetch must not cost the lead.\n requested.current.date = false\n })\n }\n\n if (needsFile && !requested.current.file) {\n requested.current.file = true\n import('./FileField')\n .then((m) => {\n if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }))\n })\n .catch(() => {\n requested.current.file = false\n })\n }\n\n return () => {\n cancelled = true\n }\n }, [needsDate, needsFile])\n\n return controls\n}\n","/**\n * Shared planning helpers for the alternate form experiences (stage,\n * spotlight). Pure data — no React, no CSS — so FormClient can import the\n * counts it needs for tracking WITHOUT pulling an experience component (and\n * its stylesheet) into every site's forms bundle. The components themselves\n * are lazy-loaded; this module is the only part that ships eagerly.\n */\n\nimport type {\n FormField as FormFieldType,\n FormStep,\n ManagedFormConfig,\n} from './types'\n\n/** Display-only / non-question field types — never staged. */\nconst NON_QUESTION_TYPES = ['heading', 'section_header', 'paragraph', 'hidden']\n\nexport interface StageQuestion {\n field: FormFieldType\n /** The step (chapter) this question belongs to, when the form is multi-step. */\n step?: FormStep\n}\n\nexport interface StageView {\n fields: FormFieldType[]\n step?: FormStep\n}\n\n/**\n * Flatten a form into its ordered question list. Steps become chapters:\n * multi-step forms iterate steps in step_number order (fields are already\n * sorted by sort_order via normalizeFormConfig); stepless fields trail.\n */\nexport function stageQuestions(config: ManagedFormConfig): StageQuestion[] {\n const input = (config.fields || []).filter(\n (f) => !NON_QUESTION_TYPES.includes(f.field_type),\n )\n if (!config.is_multi_step || !config.steps?.length) {\n return input.map((field) => ({ field }))\n }\n const ordered = [...config.steps].sort((a, b) => a.step_number - b.step_number)\n const out: StageQuestion[] = []\n const claimed = new Set<string>()\n for (const step of ordered) {\n for (const field of input) {\n if (field.step_id === step.id) {\n out.push({ field, step })\n claimed.add(field.id)\n }\n }\n }\n for (const field of input) {\n if (!claimed.has(field.id)) out.push({ field })\n }\n return out\n}\n\nconst WIDTH_FRACTION: Record<string, number> = {\n full: 1,\n half: 1 / 2,\n third: 1 / 3,\n quarter: 1 / 4,\n}\n\n/**\n * Group questions into beats using the classic grid's own row math:\n * consecutive sub-full-width fields fill a row (2 halves, 3 thirds...) and\n * that row is one beat; a full-width field closes any open row and stands\n * alone; a chapter change always starts a fresh beat.\n */\nexport function stageViews(config: ManagedFormConfig): StageView[] {\n const questions = stageQuestions(config)\n const views: StageView[] = []\n let open: StageView | null = null\n let openWidth = 0\n\n const close = () => {\n if (open) views.push(open)\n open = null\n openWidth = 0\n }\n\n for (const q of questions) {\n const fraction = WIDTH_FRACTION[q.field.width] ?? 1\n const chapterChanged = open && open.step?.id !== q.step?.id\n if (fraction >= 1 || chapterChanged) close()\n if (!open) {\n open = { fields: [q.field], step: q.step }\n openWidth = fraction\n if (fraction >= 1) close()\n continue\n }\n if (openWidth + fraction > 1.0001) close()\n if (!open) {\n open = { fields: [q.field], step: q.step }\n openWidth = fraction\n continue\n }\n open.fields.push(q.field)\n openWidth += fraction\n }\n close()\n return views\n}\n\nexport function countStageViews(config: ManagedFormConfig): number {\n return stageViews(config).length\n}\n\nexport function countStageQuestions(config: ManagedFormConfig): number {\n return stageQuestions(config).length\n}\n\n/**\n * Honest, friendly time estimate: \"about 40 seconds\".\n * ~8s per question, rounded to something a human would actually say.\n */\nexport function stageEstimate(questionCount: number): string {\n const seconds = questionCount * 8\n if (seconds < 50) return `about ${Math.max(15, Math.ceil(seconds / 5) * 5)} seconds`\n if (seconds <= 90) return 'about a minute'\n return `about ${Math.round(seconds / 60)} minutes`\n}\n\n/** First name for the greeting — conservative: short, single token, else null. */\nexport function stageFirstName(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const token = value.trim().split(/\\s+/)[0]\n if (!token || token.length > 24) return null\n return token\n}\n\nexport function isEmptyValue(value: unknown): boolean {\n if (value === undefined || value === null || value === '') return true\n if (Array.isArray(value)) return value.length === 0\n return false\n}\n\nexport function formatAnswer(value: unknown): string | null {\n if (isEmptyValue(value)) return null\n if (Array.isArray(value)) return value.map(String).join(', ')\n if (typeof value === 'boolean') return value ? 'Yes' : 'No'\n return String(value)\n}\n\n/** Single-select types where picking an answer advances after a lock-in beat. */\nexport const AUTO_ADVANCE_TYPES = ['radio', 'select', 'rating']\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/forms/field-controls.ts","../src/forms/experience-plan.ts"],"names":[],"mappings":"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","file":"chunk-UDNXM6RB.mjs","sourcesContent":["'use client'\n\n/**\n * The field controls that need React hooks, loaded only when a form actually\n * has a field that uses them.\n *\n * FormField deliberately does NOT import these. DatePicker carries 17 hooks\n * and FileField holds upload state; importing them there put both in\n * FormField's chunk, which the build stamps `'use client'` — so a Server\n * Component rendering a single text input shipped 38 KB of date picker to the\n * browser. Injecting them from the client side keeps FormField hook-free and\n * therefore server-renderable, which is the whole basis of StaticForm.\n *\n * Injection alone still put both controls in the forms entry's eager graph,\n * because a module-level constant referencing them is a static import: every\n * form paid for the date picker, and most forms have no date field. They are\n * now fetched on demand, per control, from the field list.\n *\n * The wait costs nothing visually. FormField already renders the native\n * control when a control is absent (static mode does exactly this), so a date\n * field paints as `<input type=\"date\">` and upgrades in place when the chunk\n * lands — the same enhancement path a no-JS visitor never leaves.\n *\n * Every client renderer of <FormField> (FormClient, FormSpotlight, FormStage)\n * calls this hook, so the experiences and the classic form always offer\n * identical controls.\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport type { FormField as FormFieldType } from './types'\n\nexport interface FieldControls {\n Date?: React.ComponentType<any>\n File?: React.ComponentType<any>\n}\n\n/** Stable identity for the common case (no date, no file) — no render churn. */\nconst NO_CONTROLS: FieldControls = {}\n\nexport function useFieldControls(fields: FormFieldType[] | undefined): FieldControls {\n const needsDate = useMemo(\n () => (fields ?? []).some((f) => f.field_type === 'date' || f.field_type === 'datetime'),\n [fields],\n )\n const needsFile = useMemo(\n () => (fields ?? []).some((f) => f.field_type === 'file'),\n [fields],\n )\n\n const [controls, setControls] = useState<FieldControls>(NO_CONTROLS)\n // Guards re-import when a conditional field toggles visibility mid-fill.\n const requested = useRef({ date: false, file: false })\n\n useEffect(() => {\n let cancelled = false\n\n if (needsDate && !requested.current.date) {\n requested.current.date = true\n import('./DatePicker')\n .then((m) => {\n if (!cancelled) setControls((prev) => ({ ...prev, Date: m.DatePicker }))\n })\n .catch(() => {\n // Chunk never arrived — the native date input stays, which submits\n // the same value. A failed fetch must not cost the lead.\n requested.current.date = false\n })\n }\n\n if (needsFile && !requested.current.file) {\n requested.current.file = true\n import('./FileField')\n .then((m) => {\n if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }))\n })\n .catch(() => {\n requested.current.file = false\n })\n }\n\n return () => {\n cancelled = true\n }\n }, [needsDate, needsFile])\n\n return controls\n}\n","/**\n * Shared planning helpers for the alternate form experiences (stage,\n * spotlight). Pure data — no React, no CSS — so FormClient can import the\n * counts it needs for tracking WITHOUT pulling an experience component (and\n * its stylesheet) into every site's forms bundle. The components themselves\n * are lazy-loaded; this module is the only part that ships eagerly.\n */\n\nimport type {\n FormField as FormFieldType,\n FormStep,\n ManagedFormConfig,\n} from './types'\n\n/** Display-only / non-question field types — never staged. */\nconst NON_QUESTION_TYPES = ['heading', 'section_header', 'paragraph', 'hidden']\n\nexport interface StageQuestion {\n field: FormFieldType\n /** The step (chapter) this question belongs to, when the form is multi-step. */\n step?: FormStep\n}\n\nexport interface StageView {\n fields: FormFieldType[]\n step?: FormStep\n}\n\n/**\n * Flatten a form into its ordered question list. Steps become chapters:\n * multi-step forms iterate steps in step_number order (fields are already\n * sorted by sort_order via normalizeFormConfig); stepless fields trail.\n */\nexport function stageQuestions(config: ManagedFormConfig): StageQuestion[] {\n const input = (config.fields || []).filter(\n (f) => !NON_QUESTION_TYPES.includes(f.field_type),\n )\n if (!config.is_multi_step || !config.steps?.length) {\n return input.map((field) => ({ field }))\n }\n const ordered = [...config.steps].sort((a, b) => a.step_number - b.step_number)\n const out: StageQuestion[] = []\n const claimed = new Set<string>()\n for (const step of ordered) {\n for (const field of input) {\n if (field.step_id === step.id) {\n out.push({ field, step })\n claimed.add(field.id)\n }\n }\n }\n for (const field of input) {\n if (!claimed.has(field.id)) out.push({ field })\n }\n return out\n}\n\nconst WIDTH_FRACTION: Record<string, number> = {\n full: 1,\n half: 1 / 2,\n third: 1 / 3,\n quarter: 1 / 4,\n}\n\n/**\n * Group questions into beats using the classic grid's own row math:\n * consecutive sub-full-width fields fill a row (2 halves, 3 thirds...) and\n * that row is one beat; a full-width field closes any open row and stands\n * alone; a chapter change always starts a fresh beat.\n */\nexport function stageViews(config: ManagedFormConfig): StageView[] {\n const questions = stageQuestions(config)\n const views: StageView[] = []\n let open: StageView | null = null\n let openWidth = 0\n\n const close = () => {\n if (open) views.push(open)\n open = null\n openWidth = 0\n }\n\n for (const q of questions) {\n const fraction = WIDTH_FRACTION[q.field.width] ?? 1\n const chapterChanged = open && open.step?.id !== q.step?.id\n if (fraction >= 1 || chapterChanged) close()\n if (!open) {\n open = { fields: [q.field], step: q.step }\n openWidth = fraction\n if (fraction >= 1) close()\n continue\n }\n if (openWidth + fraction > 1.0001) close()\n if (!open) {\n open = { fields: [q.field], step: q.step }\n openWidth = fraction\n continue\n }\n open.fields.push(q.field)\n openWidth += fraction\n }\n close()\n return views\n}\n\nexport function countStageViews(config: ManagedFormConfig): number {\n return stageViews(config).length\n}\n\nexport function countStageQuestions(config: ManagedFormConfig): number {\n return stageQuestions(config).length\n}\n\n/**\n * Honest, friendly time estimate: \"about 40 seconds\".\n * ~8s per question, rounded to something a human would actually say.\n */\nexport function stageEstimate(questionCount: number): string {\n const seconds = questionCount * 8\n if (seconds < 50) return `about ${Math.max(15, Math.ceil(seconds / 5) * 5)} seconds`\n if (seconds <= 90) return 'about a minute'\n return `about ${Math.round(seconds / 60)} minutes`\n}\n\n/** First name for the greeting — conservative: short, single token, else null. */\nexport function stageFirstName(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const token = value.trim().split(/\\s+/)[0]\n if (!token || token.length > 24) return null\n return token\n}\n\nexport function isEmptyValue(value: unknown): boolean {\n if (value === undefined || value === null || value === '') return true\n if (Array.isArray(value)) return value.length === 0\n return false\n}\n\nexport function formatAnswer(value: unknown): string | null {\n if (isEmptyValue(value)) return null\n if (Array.isArray(value)) return value.map(String).join(', ')\n if (typeof value === 'boolean') return value ? 'Yes' : 'No'\n return String(value)\n}\n\n/** Single-select types where picking an answer advances after a lock-in beat. */\nexport const AUTO_ADVANCE_TYPES = ['radio', 'select', 'rating']\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkS5UATBC7_js = require('./chunk-S5UATBC7.js');
|
|
5
|
+
var chunkMF6XLEX5_js = require('./chunk-MF6XLEX5.js');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var React5 = require('react');
|
|
8
8
|
|
|
@@ -112,7 +112,7 @@ async function apiPost(endpoint, body = {}) {
|
|
|
112
112
|
return null;
|
|
113
113
|
}
|
|
114
114
|
try {
|
|
115
|
-
const response = await
|
|
115
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}${endpoint}`, {
|
|
116
116
|
method: "POST",
|
|
117
117
|
headers: { "Content-Type": "application/json" },
|
|
118
118
|
body: JSON.stringify(body)
|
|
@@ -270,7 +270,7 @@ async function fetchActiveProcessor() {
|
|
|
270
270
|
const { apiUrl, apiKey } = getApiConfig();
|
|
271
271
|
if (!apiKey) return null;
|
|
272
272
|
try {
|
|
273
|
-
const response = await
|
|
273
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/processor`, {
|
|
274
274
|
method: "POST",
|
|
275
275
|
headers: { "Content-Type": "application/json" },
|
|
276
276
|
body: JSON.stringify({})
|
|
@@ -286,7 +286,7 @@ async function registerForEvent(eventId, scheduleId, customer) {
|
|
|
286
286
|
const { apiUrl, apiKey } = getApiConfig();
|
|
287
287
|
const analyticsSessionId = typeof sessionStorage !== "undefined" ? sessionStorage.getItem("_sk_sid") : null;
|
|
288
288
|
try {
|
|
289
|
-
const response = await
|
|
289
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/register`, {
|
|
290
290
|
method: "POST",
|
|
291
291
|
headers: { "Content-Type": "application/json" },
|
|
292
292
|
body: JSON.stringify({
|
|
@@ -314,7 +314,7 @@ async function registerForEvent(eventId, scheduleId, customer) {
|
|
|
314
314
|
async function validateDiscountCode(code, subtotal, offeringIds = []) {
|
|
315
315
|
const { apiUrl, apiKey } = getApiConfig();
|
|
316
316
|
try {
|
|
317
|
-
const response = await
|
|
317
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/discount/validate`, {
|
|
318
318
|
method: "POST",
|
|
319
319
|
headers: { "Content-Type": "application/json" },
|
|
320
320
|
body: JSON.stringify({ code, subtotal, offeringIds })
|
|
@@ -332,7 +332,7 @@ async function fetchProcessorConfig() {
|
|
|
332
332
|
const { apiUrl, apiKey } = getApiConfig();
|
|
333
333
|
if (!apiKey) return null;
|
|
334
334
|
try {
|
|
335
|
-
const response = await
|
|
335
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/processor-config`, {
|
|
336
336
|
method: "POST",
|
|
337
337
|
headers: { "Content-Type": "application/json" },
|
|
338
338
|
body: JSON.stringify({})
|
|
@@ -348,7 +348,7 @@ async function createPaymentIntent(options) {
|
|
|
348
348
|
const apiKey = getApiKey();
|
|
349
349
|
const sessionId = typeof sessionStorage !== "undefined" ? sessionStorage.getItem("_sk_sid") : null;
|
|
350
350
|
try {
|
|
351
|
-
const response = await
|
|
351
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/create-payment-intent`, {
|
|
352
352
|
method: "POST",
|
|
353
353
|
headers: { "Content-Type": "application/json" },
|
|
354
354
|
body: JSON.stringify({
|
|
@@ -368,7 +368,7 @@ async function createCheckoutSession(optionsOrOfferingId, legacyOptions) {
|
|
|
368
368
|
const options = typeof optionsOrOfferingId === "string" ? { offeringId: optionsOrOfferingId, ...legacyOptions } : optionsOrOfferingId;
|
|
369
369
|
const analyticsSessionId = typeof sessionStorage !== "undefined" ? sessionStorage.getItem("_sk_sid") : null;
|
|
370
370
|
try {
|
|
371
|
-
const response = await
|
|
371
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/checkout`, {
|
|
372
372
|
method: "POST",
|
|
373
373
|
headers: { "Content-Type": "application/json" },
|
|
374
374
|
body: JSON.stringify({
|
|
@@ -3097,7 +3097,7 @@ function ProductDetail({
|
|
|
3097
3097
|
const [checkoutError, setCheckoutError] = React5.useState(null);
|
|
3098
3098
|
const [showStickyBar, setShowStickyBar] = React5.useState(false);
|
|
3099
3099
|
const buyButtonRef = React5.useRef(null);
|
|
3100
|
-
const analytics =
|
|
3100
|
+
const analytics = chunkS5UATBC7_js.useAnalyticsOptional();
|
|
3101
3101
|
React5.useEffect(() => {
|
|
3102
3102
|
if (propProduct) {
|
|
3103
3103
|
setProduct(propProduct);
|
|
@@ -4468,7 +4468,7 @@ function CheckoutForm({
|
|
|
4468
4468
|
const [discountResult, setDiscountResult] = React5.useState(null);
|
|
4469
4469
|
const [applyingDiscount, setApplyingDiscount] = React5.useState(false);
|
|
4470
4470
|
const isProduct = offering.type === "product";
|
|
4471
|
-
const analytics =
|
|
4471
|
+
const analytics = chunkS5UATBC7_js.useAnalyticsOptional();
|
|
4472
4472
|
React5.useEffect(() => {
|
|
4473
4473
|
fetchProcessorConfig().then((config) => {
|
|
4474
4474
|
if (config?.processor) setProcessor(config.processor);
|
|
@@ -7246,7 +7246,7 @@ function EventsWidget({
|
|
|
7246
7246
|
setLoading(true);
|
|
7247
7247
|
setError(null);
|
|
7248
7248
|
try {
|
|
7249
|
-
const response = await
|
|
7249
|
+
const response = await chunkMF6XLEX5_js.sonorFetch(`${apiUrl}/api/public/commerce/events`, {
|
|
7250
7250
|
method: "POST",
|
|
7251
7251
|
headers: { "Content-Type": "application/json" },
|
|
7252
7252
|
body: JSON.stringify({
|
|
@@ -8042,5 +8042,5 @@ exports.registerForEvent = registerForEvent;
|
|
|
8042
8042
|
exports.useEventModal = useEventModal;
|
|
8043
8043
|
exports.validateAddress = validateAddress;
|
|
8044
8044
|
exports.validateDiscountCode = validateDiscountCode;
|
|
8045
|
-
//# sourceMappingURL=chunk-
|
|
8046
|
-
//# sourceMappingURL=chunk-
|
|
8045
|
+
//# sourceMappingURL=chunk-WCTOQFAN.js.map
|
|
8046
|
+
//# sourceMappingURL=chunk-WCTOQFAN.js.map
|