@flamingo-stack/openframe-frontend-core 0.0.711 → 0.0.712
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/dist/chunk-2NASBO7O.js +1137 -0
- package/dist/{chunk-RQRX4YC3.cjs → chunk-2RKFMUNW.cjs} +46 -46
- package/dist/chunk-2Y7QZAB2.cjs +158 -0
- package/dist/chunk-34I6XI3N.js +136 -0
- package/dist/chunk-3K5ZLZE7.js +292 -0
- package/dist/chunk-3LU4UFPS.cjs +14 -0
- package/dist/{chunk-3UNL26CD.cjs → chunk-3RKBJT6K.cjs} +8 -6
- package/dist/{chunk-6GLQLTJI.js → chunk-3SEEGNRE.js} +35 -27
- package/dist/{chunk-FEMAJES4.cjs → chunk-3UAJLO5U.cjs} +41 -39
- package/dist/chunk-4HJRHEXD.cjs +1612 -0
- package/dist/{chunk-JPG7OHEG.js → chunk-4QFWGLZO.js} +1 -1
- package/dist/chunk-4R2L3DSA.js +14 -0
- package/dist/{chunk-2JTGK64G.js → chunk-4UYKNOZG.js} +12 -10
- package/dist/{chunk-TKZXHVBG.js → chunk-5SDELRH3.js} +5 -5
- package/dist/{chunk-Q6B35Y7O.js → chunk-5Y72YQEK.js} +22 -113
- package/dist/{chunk-KUC673HM.js → chunk-6T3BTD6Q.js} +204 -982
- package/dist/{chunk-F57ECE2I.js → chunk-6YPTUHM7.js} +4 -4
- package/dist/{chunk-WJUIXU6Y.js → chunk-7HNYYNKE.js} +28 -22
- package/dist/{chunk-P6G3JZNC.cjs → chunk-7NSU5EQD.cjs} +57 -148
- package/dist/chunk-AAYNCJMW.cjs +48 -0
- package/dist/{chunk-FXJ3WWUB.js → chunk-ADBE7QF3.js} +5 -252
- package/dist/chunk-AECTRMGQ.cjs +334 -0
- package/dist/chunk-AGVXKD4K.js +334 -0
- package/dist/chunk-AL2GUHAJ.cjs +18 -0
- package/dist/{chunk-WMX26HB5.js → chunk-APJZBDQN.js} +12 -12
- package/dist/chunk-AUMKE74M.cjs +16 -0
- package/dist/chunk-B4NCVYEQ.cjs +292 -0
- package/dist/{chunk-XWEBHS7O.cjs → chunk-BXSRTBLU.cjs} +82 -54
- package/dist/chunk-CMGFZHCN.js +233 -0
- package/dist/chunk-CMZ3QTFQ.js +1207 -0
- package/dist/chunk-CPA2CKRZ.cjs +125 -0
- package/dist/{chunk-G47AP6LX.cjs → chunk-CSCJU6YC.cjs} +35 -33
- package/dist/chunk-CYUUHFXL.js +41 -0
- package/dist/chunk-DC4RTYWK.cjs +1122 -0
- package/dist/{chunk-NF7GNGYG.js → chunk-DDWFCWOE.js} +5 -7
- package/dist/{chunk-K4PTDK34.js → chunk-EFNKS5W4.js} +322 -428
- package/dist/{chunk-QA6TROME.cjs → chunk-EOKSKJSS.cjs} +25 -83
- package/dist/{chunk-6NTPY5QA.cjs → chunk-ETYLOZOB.cjs} +978 -2413
- package/dist/chunk-F5BPGWGT.cjs +931 -0
- package/dist/{chunk-5HB7FLCV.js → chunk-FCAVAEHF.js} +8277 -9990
- package/dist/chunk-FFT56TYB.cjs +401 -0
- package/dist/chunk-FYEJTF5Y.js +125 -0
- package/dist/chunk-G3GRYDMS.js +16 -0
- package/dist/{chunk-VWFZRMQR.js → chunk-G3OMVCID.js} +13 -7
- package/dist/chunk-G6OHIX5C.cjs +100 -0
- package/dist/{chunk-UDFRUKLC.cjs → chunk-GEDY7HQI.cjs} +2 -2
- package/dist/chunk-GQ7JJUIT.cjs +1207 -0
- package/dist/chunk-H3PKYE4N.js +18 -0
- package/dist/{chunk-AGDVEUVL.js → chunk-H5R7U2D2.js} +206 -5
- package/dist/{chunk-7AM6C6XH.cjs → chunk-HETQETPV.cjs} +9641 -9678
- package/dist/{chunk-Y2GSOUCS.cjs → chunk-HWVUR735.cjs} +2 -2
- package/dist/chunk-II4QMH26.cjs +35 -0
- package/dist/chunk-ILNN6QRW.js +1612 -0
- package/dist/chunk-IYVFSLWJ.js +931 -0
- package/dist/{chunk-C4HRRB3V.cjs → chunk-JGCFRTND.cjs} +23 -17
- package/dist/chunk-JHQ334WS.js +655 -0
- package/dist/{chunk-WCVZCGK5.cjs → chunk-JO5TLJPM.cjs} +129 -907
- package/dist/{chunk-PRX7HVLE.cjs → chunk-JVCAK4W3.cjs} +210 -9
- package/dist/chunk-KBJJQFYU.js +1122 -0
- package/dist/chunk-KEKCQENI.js +48 -0
- package/dist/chunk-KHXZFLIN.cjs +41 -0
- package/dist/chunk-KT3U3ZRP.cjs +1137 -0
- package/dist/chunk-L2VUINHN.js +35 -0
- package/dist/{chunk-FYOKS5RI.cjs → chunk-L6ZQGWCX.cjs} +4521 -6234
- package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
- package/dist/{chunk-VMMHJFHG.js → chunk-N67XG5GY.js} +10 -8
- package/dist/chunk-NPAQSMRY.js +2087 -0
- package/dist/{chunk-IFWLJ66M.js → chunk-NQWJAOHO.js} +6 -4
- package/dist/{chunk-6K7QZDA6.cjs → chunk-OBZJICEA.cjs} +8 -8
- package/dist/{chunk-62KNLDXK.js → chunk-OPYODNV2.js} +3 -3
- package/dist/chunk-P3JMAMHP.js +401 -0
- package/dist/chunk-PPXR22YC.cjs +2087 -0
- package/dist/chunk-PSVSEN4J.cjs +655 -0
- package/dist/{chunk-EQWD4IJE.js → chunk-RBYVFPER.js} +74 -46
- package/dist/{chunk-SMAAV3HL.js → chunk-ROBQ5TR7.js} +10541 -10578
- package/dist/{chunk-K6Y5NX6L.cjs → chunk-T3CLXR43.cjs} +114 -220
- package/dist/{chunk-FI6GMDO7.js → chunk-TTVOLEUS.js} +3605 -5040
- package/dist/{chunk-LM7TXMLU.cjs → chunk-ULWVKHSI.cjs} +8 -255
- package/dist/{chunk-EX6GGCAC.cjs → chunk-UT3ODMBU.cjs} +15 -15
- package/dist/chunk-WANCBTUE.js +71 -0
- package/dist/{chunk-BIZNSF3U.cjs → chunk-WBNAEYTQ.cjs} +2 -51
- package/dist/chunk-WFPCCBOM.cjs +71 -0
- package/dist/chunk-WI6FHKD7.js +158 -0
- package/dist/chunk-WMNCVLES.js +100 -0
- package/dist/{chunk-UT4YHQZW.js → chunk-WSDT7LYL.js} +0 -49
- package/dist/chunk-WVOTC7HW.cjs +136 -0
- package/dist/{chunk-6AMIRXKM.cjs → chunk-WWJG4GVG.cjs} +93 -87
- package/dist/chunk-XXBLN4BP.cjs +233 -0
- package/dist/{chunk-4IBPRIQH.js → chunk-YBQQNDC7.js} +1 -1
- package/dist/{chunk-QGZPZ3RL.js → chunk-YBS5QGON.js} +70 -128
- package/dist/{chunk-CDM7OSFB.cjs → chunk-Z5SWJW5Q.cjs} +125 -117
- package/dist/{chunk-YD4LJZV4.cjs → chunk-ZX7SCPLO.cjs} +6 -8
- package/dist/cloud-tenants-KZUZGD4A.cjs +117 -0
- package/dist/cloud-tenants-OGLVVQ7X.js +117 -0
- package/dist/components/case-studies/index.cjs +45 -29
- package/dist/components/case-studies/index.js +32 -16
- package/dist/components/chat/ask-prompts.d.ts +64 -0
- package/dist/components/chat/ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/case-study-card.d.ts +6 -3
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +27 -8
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +57 -38
- package/dist/components/chat/quick-action-chip.d.ts +7 -3
- package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +29 -13
- package/dist/components/contact/index.js +28 -12
- package/dist/components/docs/index.cjs +33 -16
- package/dist/components/docs/index.js +33 -16
- package/dist/components/docs/use-scroll-spy.d.ts +23 -1
- package/dist/components/docs/use-scroll-spy.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +29 -13
- package/dist/components/embeds/index.js +28 -12
- package/dist/components/faq/faq-section.d.ts +8 -1
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +30 -14
- package/dist/components/faq/index.js +29 -13
- package/dist/components/features/array-entry-manager.d.ts +5 -1
- package/dist/components/features/array-entry-manager.d.ts.map +1 -1
- package/dist/components/features/board/board.d.ts +2 -0
- package/dist/components/features/board/board.d.ts.map +1 -1
- package/dist/components/features/board/ticket-card.d.ts.map +1 -1
- package/dist/components/features/board/touch-board.d.ts +1 -1
- package/dist/components/features/board/touch-board.d.ts.map +1 -1
- package/dist/components/features/board/types.d.ts +3 -0
- package/dist/components/features/board/types.d.ts.map +1 -1
- package/dist/components/features/board/use-board-collapse.d.ts +6 -1
- package/dist/components/features/board/use-board-collapse.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.d.ts +94 -0
- package/dist/components/features/capability-explorer.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/index.d.ts +14 -0
- package/dist/components/features/cloud-tenants/index.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +9 -0
- package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-cell.d.ts +8 -0
- package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +9 -0
- package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +42 -0
- package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-row.d.ts +22 -0
- package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +42 -0
- package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +26 -0
- package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -0
- package/dist/components/features/devices/device-last-online.d.ts +3 -0
- package/dist/components/features/devices/device-last-online.d.ts.map +1 -0
- package/dist/components/features/devices/device-name.d.ts +42 -0
- package/dist/components/features/devices/device-name.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts +26 -0
- package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +25 -0
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector.d.ts +38 -0
- package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts +133 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/narrowing.d.ts +13 -0
- package/dist/components/features/devices/device-selector/narrowing.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/use-device-selector.d.ts +17 -0
- package/dist/components/features/devices/device-selector/use-device-selector.d.ts.map +1 -0
- package/dist/components/features/devices/device-status.d.ts +23 -0
- package/dist/components/features/devices/device-status.d.ts.map +1 -0
- package/dist/components/features/devices/device-statuses.d.ts +40 -0
- package/dist/components/features/devices/device-statuses.d.ts.map +1 -0
- package/dist/components/features/devices/device-tags-filter-button.d.ts +22 -0
- package/dist/components/features/devices/device-tags-filter-button.d.ts.map +1 -0
- package/dist/components/features/devices/device-type-icon.d.ts +11 -0
- package/dist/components/features/devices/device-type-icon.d.ts.map +1 -0
- package/dist/components/features/devices/device-type-tile.d.ts +9 -0
- package/dist/components/features/devices/device-type-tile.d.ts.map +1 -0
- package/dist/components/features/devices/devices-filter-toolbar.d.ts +46 -0
- package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -0
- package/dist/components/features/devices/devices-grid-filters.d.ts +25 -0
- package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -0
- package/dist/components/features/devices/devices-grid.d.ts +12 -0
- package/dist/components/features/devices/devices-grid.d.ts.map +1 -0
- package/dist/components/features/devices/devices-list.d.ts +131 -0
- package/dist/components/features/devices/devices-list.d.ts.map +1 -0
- package/dist/components/features/devices/devices-panel-header.d.ts +46 -0
- package/dist/components/features/devices/devices-panel-header.d.ts.map +1 -0
- package/dist/components/features/devices/devices-panel-view.d.ts +79 -0
- package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -0
- package/dist/components/features/devices/devices-table-columns.d.ts +76 -0
- package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -0
- package/dist/components/features/devices/devices-view-config.d.ts +25 -0
- package/dist/components/features/devices/devices-view-config.d.ts.map +1 -0
- package/dist/components/features/devices/index.d.ts +24 -0
- package/dist/components/features/devices/index.d.ts.map +1 -0
- package/dist/components/features/devices/types.d.ts +68 -0
- package/dist/components/features/devices/types.d.ts.map +1 -0
- package/dist/components/features/devices/use-tag-filter-modal.d.ts +50 -0
- package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -0
- package/dist/components/features/index.cjs +227 -12
- package/dist/components/features/index.d.ts +7 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +266 -51
- package/dist/components/features/knowledge-base/index.d.ts +7 -0
- package/dist/components/features/knowledge-base/index.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +44 -0
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts +13 -0
- package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-status.d.ts +8 -0
- package/dist/components/features/knowledge-base/knowledge-base-status.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-table.d.ts +52 -0
- package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -0
- package/dist/components/features/logs/index.d.ts +12 -0
- package/dist/components/features/logs/index.d.ts.map +1 -0
- package/dist/components/features/logs/log-drawer.d.ts +29 -0
- package/dist/components/features/logs/log-drawer.d.ts.map +1 -0
- package/dist/components/features/logs/log-source-labels.d.ts +11 -0
- package/dist/components/features/logs/log-source-labels.d.ts.map +1 -0
- package/dist/components/features/logs/logs-page-view.d.ts +32 -0
- package/dist/components/features/logs/logs-page-view.d.ts.map +1 -0
- package/dist/components/features/logs/logs-table-columns.d.ts +15 -0
- package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -0
- package/dist/components/features/logs/logs-table-view.d.ts +64 -0
- package/dist/components/features/logs/logs-table-view.d.ts.map +1 -0
- package/dist/components/features/logs/types.d.ts +52 -0
- package/dist/components/features/logs/types.d.ts.map +1 -0
- package/dist/components/features/policies/compute-policy-summary.d.ts +37 -0
- package/dist/components/features/policies/compute-policy-summary.d.ts.map +1 -0
- package/dist/components/features/policies/index.d.ts +8 -0
- package/dist/components/features/policies/index.d.ts.map +1 -0
- package/dist/components/features/policies/policies-table.d.ts +34 -0
- package/dist/components/features/policies/policies-table.d.ts.map +1 -0
- package/dist/components/features/policies/policy-summary-cards.d.ts +17 -0
- package/dist/components/features/policies/policy-summary-cards.d.ts.map +1 -0
- package/dist/components/features/policies/policy-table-row.d.ts +37 -0
- package/dist/components/features/policies/policy-table-row.d.ts.map +1 -0
- package/dist/components/features/remote-session/index.d.ts +8 -0
- package/dist/components/features/remote-session/index.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +21 -0
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +31 -0
- package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts +21 -0
- package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +50 -0
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -0
- package/dist/components/features/software/index.d.ts +8 -0
- package/dist/components/features/software/index.d.ts.map +1 -0
- package/dist/components/features/software/package-managers.d.ts +30 -0
- package/dist/components/features/software/package-managers.d.ts.map +1 -0
- package/dist/components/features/software/package-search-field-placeholder.d.ts +7 -0
- package/dist/components/features/software/package-search-field-placeholder.d.ts.map +1 -0
- package/dist/components/features/software/schedule-fields.d.ts +34 -0
- package/dist/components/features/software/schedule-fields.d.ts.map +1 -0
- package/dist/components/features/software/software-action-copy.d.ts +25 -0
- package/dist/components/features/software/software-action-copy.d.ts.map +1 -0
- package/dist/components/features/software/software-action-form.d.ts +71 -0
- package/dist/components/features/software/software-action-form.d.ts.map +1 -0
- package/dist/components/features/software/software-row-fields.d.ts +23 -0
- package/dist/components/features/software/software-row-fields.d.ts.map +1 -0
- package/dist/components/features/software/software-row.d.ts +18 -0
- package/dist/components/features/software/software-row.d.ts.map +1 -0
- package/dist/components/features/sortable-list/index.d.ts +1 -0
- package/dist/components/features/sortable-list/index.d.ts.map +1 -1
- package/dist/components/features/sortable-list/sortable-drag-handle.d.ts +21 -0
- package/dist/components/features/sortable-list/sortable-drag-handle.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +133 -114
- package/dist/components/help-center-pages/index.js +58 -39
- package/dist/components/index.cjs +320 -82
- package/dist/components/index.js +451 -213
- package/dist/components/layout/page-heading.d.ts +12 -3
- package/dist/components/layout/page-heading.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +120 -98
- package/dist/components/meeting-scheduler/index.js +50 -28
- package/dist/components/navigation/index.cjs +36 -17
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +36 -17
- package/dist/components/navigation/mingo-ai-button.d.ts +23 -10
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/sticky-section-nav.d.ts +14 -1
- package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +32 -16
- package/dist/components/onboarding-guides/index.js +31 -15
- package/dist/components/product-demo/cast.d.ts +58 -0
- package/dist/components/product-demo/cast.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/cloud-tenants.d.ts +10 -0
- package/dist/components/product-demo/fixtures/cloud-tenants.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/devices.d.ts +14 -0
- package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/knowledge.d.ts +14 -0
- package/dist/components/product-demo/fixtures/knowledge.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/logs.d.ts +15 -0
- package/dist/components/product-demo/fixtures/logs.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/policies.d.ts +13 -0
- package/dist/components/product-demo/fixtures/policies.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/remote-session.d.ts +20 -0
- package/dist/components/product-demo/fixtures/remote-session.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/shared.d.ts +156 -0
- package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/software-update.d.ts +19 -0
- package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/tickets-board.d.ts +8 -0
- package/dist/components/product-demo/fixtures/tickets-board.d.ts.map +1 -0
- package/dist/components/product-demo/index.cjs +112 -0
- package/dist/components/product-demo/index.d.ts +6 -0
- package/dist/components/product-demo/index.d.ts.map +1 -0
- package/dist/components/product-demo/index.js +112 -0
- package/dist/components/product-demo/product-screen.d.ts +22 -0
- package/dist/components/product-demo/product-screen.d.ts.map +1 -0
- package/dist/components/product-demo/registry.d.ts +13 -0
- package/dist/components/product-demo/registry.d.ts.map +1 -0
- package/dist/components/product-demo/screen-keys.cjs +25 -0
- package/dist/components/product-demo/screen-keys.d.ts +27 -0
- package/dist/components/product-demo/screen-keys.d.ts.map +1 -0
- package/dist/components/product-demo/screen-keys.js +20 -0
- package/dist/components/product-demo/screens/cloud-tenants.d.ts +8 -0
- package/dist/components/product-demo/screens/cloud-tenants.d.ts.map +1 -0
- package/dist/components/product-demo/screens/devices.d.ts +10 -0
- package/dist/components/product-demo/screens/devices.d.ts.map +1 -0
- package/dist/components/product-demo/screens/knowledge.d.ts +9 -0
- package/dist/components/product-demo/screens/knowledge.d.ts.map +1 -0
- package/dist/components/product-demo/screens/logs.d.ts +4 -0
- package/dist/components/product-demo/screens/logs.d.ts.map +1 -0
- package/dist/components/product-demo/screens/policies.d.ts +8 -0
- package/dist/components/product-demo/screens/policies.d.ts.map +1 -0
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts +11 -0
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -0
- package/dist/components/product-demo/screens/remote-session.d.ts +8 -0
- package/dist/components/product-demo/screens/remote-session.d.ts.map +1 -0
- package/dist/components/product-demo/screens/software-update.d.ts +12 -0
- package/dist/components/product-demo/screens/software-update.d.ts.map +1 -0
- package/dist/components/product-demo/screens/tickets-board.d.ts +4 -0
- package/dist/components/product-demo/screens/tickets-board.d.ts.map +1 -0
- package/dist/components/product-demo/types.d.ts +9 -0
- package/dist/components/product-demo/types.d.ts.map +1 -0
- package/dist/components/related-content/index.cjs +14 -8
- package/dist/components/related-content/index.js +13 -7
- package/dist/components/tickets/index.cjs +36 -20
- package/dist/components/tickets/index.js +35 -19
- package/dist/components/ui/file-manager/index.cjs +38 -34
- package/dist/components/ui/file-manager/index.js +8 -4
- package/dist/components/ui/index.cjs +57 -17
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +141 -101
- package/dist/components/ui/product-screen-frame.d.ts +45 -0
- package/dist/components/ui/product-screen-frame.d.ts.map +1 -0
- package/dist/components/ui/radio-group.d.ts +5 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.d.ts +11 -1
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/tag.d.ts +1 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/devices-LBMG42K6.js +81 -0
- package/dist/devices-YGYJIXQY.cjs +81 -0
- package/dist/hooks/index.cjs +17 -8
- package/dist/hooks/index.js +32 -23
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-header-height.d.ts +12 -0
- package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
- package/dist/hooks/ui/use-sticky-toolbar.d.ts +29 -0
- package/dist/hooks/ui/use-sticky-toolbar.d.ts.map +1 -0
- package/dist/hooks/use-location-hash.d.ts +2 -2
- package/dist/hooks/use-location-hash.d.ts.map +1 -1
- package/dist/hooks/use-scroll-to-hash.d.ts +7 -0
- package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -1
- package/dist/index.cjs +276 -25
- package/dist/index.js +729 -478
- package/dist/knowledge-H5BIWJVI.js +108 -0
- package/dist/knowledge-KTCVJIWN.cjs +108 -0
- package/dist/logs-DB5Z7M5Q.js +216 -0
- package/dist/logs-RVCC2UQW.cjs +216 -0
- package/dist/policies-EWUULFBR.js +121 -0
- package/dist/policies-HV4IQCBV.cjs +121 -0
- package/dist/remote-session-GSGZOFDX.js +196 -0
- package/dist/remote-session-R6VAFESR.cjs +196 -0
- package/dist/software-update-6PXKRKBT.js +179 -0
- package/dist/software-update-D4OVSWSG.cjs +179 -0
- package/dist/tickets-board-BHLPAVNJ.cjs +137 -0
- package/dist/tickets-board-PYDNELSK.js +137 -0
- package/dist/types/case-study.d.ts +15 -1
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/utils/date-utils.d.ts +5 -0
- package/dist/utils/date-utils.d.ts.map +1 -1
- package/dist/utils/index.cjs +45 -2
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -3
- package/dist/utils/open-in-new-tab.d.ts +7 -0
- package/dist/utils/open-in-new-tab.d.ts.map +1 -0
- package/dist/utils/same-page-hash-nav.d.ts +31 -0
- package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
- package/dist/utils/scroll-into-view.d.ts +14 -1
- package/dist/utils/scroll-into-view.d.ts.map +1 -1
- package/package.json +13 -1
- package/src/components/chat/ask-prompts.tsx +226 -0
- package/src/components/chat/embeddable-chat.tsx +36 -2
- package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/quick-action-chip.tsx +33 -9
- package/src/components/docs/use-scroll-spy.ts +93 -18
- package/src/components/faq/faq-section.tsx +82 -43
- package/src/components/features/array-entry-manager.tsx +10 -1
- package/src/components/features/board/board.tsx +4 -1
- package/src/components/features/board/ticket-card.tsx +11 -1
- package/src/components/features/board/touch-board.tsx +2 -1
- package/src/components/features/board/types.ts +3 -0
- package/src/components/features/board/use-board-collapse.ts +7 -2
- package/src/components/features/capability-explorer.tsx +412 -0
- package/src/components/features/cloud-tenants/index.ts +28 -0
- package/src/components/features/cloud-tenants/tenant-access-cell.tsx +24 -0
- package/src/components/features/cloud-tenants/tenant-cell.tsx +26 -0
- package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +27 -0
- package/src/components/features/cloud-tenants/tenant-presentation.ts +111 -0
- package/src/components/features/cloud-tenants/tenant-row.ts +21 -0
- package/src/components/features/cloud-tenants/tenants-table-columns.ts +30 -0
- package/src/components/features/cloud-tenants/tenants-table-view.tsx +142 -0
- package/src/components/features/devices/device-last-online.ts +6 -0
- package/src/components/features/devices/device-name.ts +51 -0
- package/src/components/features/devices/device-selector/device-selection-mode-radio.tsx +107 -0
- package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +32 -0
- package/src/components/features/devices/device-selector/device-selector.tsx +799 -0
- package/src/components/features/devices/device-selector/device-selector.types.ts +138 -0
- package/src/components/features/devices/device-selector/narrowing.ts +33 -0
- package/src/components/features/devices/device-selector/use-device-selector.ts +51 -0
- package/src/components/features/devices/device-status.ts +102 -0
- package/src/components/features/devices/device-statuses.ts +88 -0
- package/src/components/features/devices/device-tags-filter-button.tsx +49 -0
- package/src/components/features/devices/device-type-icon.tsx +29 -0
- package/src/components/features/devices/device-type-tile.tsx +17 -0
- package/src/components/features/devices/devices-filter-toolbar.tsx +114 -0
- package/src/components/features/devices/devices-grid-filters.tsx +99 -0
- package/src/components/features/devices/devices-grid.tsx +86 -0
- package/src/components/features/devices/devices-list.tsx +357 -0
- package/src/components/features/devices/devices-panel-header.tsx +97 -0
- package/src/components/features/devices/devices-panel-view.tsx +261 -0
- package/src/components/features/devices/devices-table-columns.tsx +356 -0
- package/src/components/features/devices/devices-view-config.tsx +38 -0
- package/src/components/features/devices/index.ts +89 -0
- package/src/components/features/devices/types.ts +74 -0
- package/src/components/features/devices/use-tag-filter-modal.ts +109 -0
- package/src/components/features/index.ts +9 -0
- package/src/components/features/knowledge-base/index.ts +19 -0
- package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +134 -0
- package/src/components/features/knowledge-base/knowledge-base-item-icon.ts +14 -0
- package/src/components/features/knowledge-base/knowledge-base-status.ts +12 -0
- package/src/components/features/knowledge-base/knowledge-base-table.tsx +180 -0
- package/src/components/features/logs/index.ts +20 -0
- package/src/components/features/logs/log-drawer.tsx +138 -0
- package/src/components/features/logs/log-source-labels.ts +25 -0
- package/src/components/features/logs/logs-page-view.tsx +100 -0
- package/src/components/features/logs/logs-table-columns.ts +16 -0
- package/src/components/features/logs/logs-table-view.tsx +509 -0
- package/src/components/features/logs/types.ts +71 -0
- package/src/components/features/policies/compute-policy-summary.ts +115 -0
- package/src/components/features/policies/index.ts +14 -0
- package/src/components/features/policies/policies-table.tsx +235 -0
- package/src/components/features/policies/policy-summary-cards.tsx +69 -0
- package/src/components/features/policies/policy-table-row.ts +37 -0
- package/src/components/features/remote-session/index.ts +8 -0
- package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +56 -0
- package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +102 -0
- package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +119 -0
- package/src/components/features/remote-session/remote-desktop-view.tsx +209 -0
- package/src/components/features/software/index.ts +39 -0
- package/src/components/features/software/package-managers.ts +54 -0
- package/src/components/features/software/package-search-field-placeholder.tsx +23 -0
- package/src/components/features/software/schedule-fields.tsx +105 -0
- package/src/components/features/software/software-action-copy.ts +70 -0
- package/src/components/features/software/software-action-form.tsx +199 -0
- package/src/components/features/software/software-row-fields.tsx +105 -0
- package/src/components/features/software/software-row.ts +22 -0
- package/src/components/features/sortable-list/index.ts +1 -0
- package/src/components/features/sortable-list/sortable-drag-handle.tsx +41 -0
- package/src/components/layout/page-heading.tsx +23 -6
- package/src/components/navigation/index.ts +5 -0
- package/src/components/navigation/mingo-ai-button.tsx +37 -13
- package/src/components/navigation/sticky-section-nav.tsx +99 -1
- package/src/components/product-demo/cast.tsx +78 -0
- package/src/components/product-demo/fixtures/cloud-tenants.ts +63 -0
- package/src/components/product-demo/fixtures/devices.ts +87 -0
- package/src/components/product-demo/fixtures/knowledge.ts +48 -0
- package/src/components/product-demo/fixtures/logs.ts +103 -0
- package/src/components/product-demo/fixtures/policies.ts +77 -0
- package/src/components/product-demo/fixtures/remote-session.ts +65 -0
- package/src/components/product-demo/fixtures/shared.ts +53 -0
- package/src/components/product-demo/fixtures/software-update.ts +63 -0
- package/src/components/product-demo/fixtures/tickets-board.ts +100 -0
- package/src/components/product-demo/index.ts +7 -0
- package/src/components/product-demo/product-screen.tsx +94 -0
- package/src/components/product-demo/registry.ts +20 -0
- package/src/components/product-demo/screen-keys.ts +31 -0
- package/src/components/product-demo/screens/cloud-tenants.tsx +23 -0
- package/src/components/product-demo/screens/devices.tsx +41 -0
- package/src/components/product-demo/screens/knowledge.tsx +27 -0
- package/src/components/product-demo/screens/logs.tsx +113 -0
- package/src/components/product-demo/screens/policies.tsx +29 -0
- package/src/components/product-demo/screens/remote-desktop-picture.tsx +118 -0
- package/src/components/product-demo/screens/remote-session.tsx +46 -0
- package/src/components/product-demo/screens/software-update.tsx +97 -0
- package/src/components/product-demo/screens/tickets-board.tsx +28 -0
- package/src/components/product-demo/types.ts +10 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/product-screen-frame.tsx +136 -0
- package/src/components/ui/radio-group.tsx +16 -4
- package/src/components/ui/snap-carousel.tsx +26 -1
- package/src/components/ui/tag.tsx +5 -0
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-header-height.ts +51 -2
- package/src/hooks/ui/use-sticky-toolbar.ts +60 -0
- package/src/hooks/use-location-hash.ts +9 -5
- package/src/hooks/use-scroll-to-hash.ts +9 -1
- package/src/types/case-study.ts +21 -1
- package/src/utils/date-utils.ts +8 -1
- package/src/utils/index.ts +5 -0
- package/src/utils/open-in-new-tab.ts +12 -0
- package/src/utils/same-page-hash-nav.ts +57 -0
- package/src/utils/scroll-into-view.ts +21 -5
- package/dist/chunk-BM5MVGH3.cjs +0 -499
- package/dist/chunk-CUME3VTQ.js +0 -144
- package/dist/chunk-CZ7Y7UG4.js +0 -732
- package/dist/chunk-FLKJYMVB.js +0 -499
- package/dist/chunk-OF6GEI5A.cjs +0 -144
- package/dist/chunk-UVTD52MD.cjs +0 -732
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
var _chunkB4NCVYEQcjs = require('./chunk-B4NCVYEQ.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
4
7
|
|
|
5
8
|
var _chunkMZ4KBSH7cjs = require('./chunk-MZ4KBSH7.cjs');
|
|
6
9
|
|
|
7
10
|
|
|
11
|
+
var _chunkAUMKE74Mcjs = require('./chunk-AUMKE74M.cjs');
|
|
8
12
|
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
|
|
12
|
-
var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
|
|
@@ -18,35 +21,48 @@ var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
|
|
|
18
21
|
|
|
19
22
|
|
|
20
23
|
|
|
21
|
-
var _chunkUVTD52MDcjs = require('./chunk-UVTD52MD.cjs');
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
var _chunkLM7TXMLUcjs = require('./chunk-LM7TXMLU.cjs');
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
var _chunkLLSUVPQCcjs = require('./chunk-LLSUVPQC.cjs');
|
|
39
38
|
|
|
40
39
|
|
|
40
|
+
var _chunkGQ7JJUITcjs = require('./chunk-GQ7JJUIT.cjs');
|
|
41
41
|
|
|
42
|
-
var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
|
|
43
42
|
|
|
44
43
|
|
|
45
|
-
var
|
|
44
|
+
var _chunkWVOTC7HWcjs = require('./chunk-WVOTC7HW.cjs');
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
var _chunkAECTRMGQcjs = require('./chunk-AECTRMGQ.cjs');
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
|
|
46
59
|
|
|
47
60
|
|
|
48
61
|
var _chunkG7SBHMRRcjs = require('./chunk-G7SBHMRR.cjs');
|
|
49
62
|
|
|
63
|
+
|
|
64
|
+
var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
|
|
65
|
+
|
|
50
66
|
// src/hooks/ui/use-auto-limit-tags.ts
|
|
51
67
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
52
68
|
function useAutoLimitTags({
|
|
@@ -142,12 +158,6 @@ function useDeferredError(error, value, delay = 1500) {
|
|
|
142
158
|
};
|
|
143
159
|
}
|
|
144
160
|
|
|
145
|
-
// src/hooks/ui/use-drag-and-drop-enabled.ts
|
|
146
|
-
var DRAG_AND_DROP_MEDIA_QUERY = `(pointer: fine) and (hover: hover) and ${_chunkLM7TXMLUcjs.breakpoints.md}`;
|
|
147
|
-
function useDragAndDropEnabled() {
|
|
148
|
-
return _nullishCoalesce(_chunkLM7TXMLUcjs.useMediaQuery.call(void 0, DRAG_AND_DROP_MEDIA_QUERY), () => ( false));
|
|
149
|
-
}
|
|
150
|
-
|
|
151
161
|
// src/hooks/ui/use-focus-trap.ts
|
|
152
162
|
|
|
153
163
|
var FOCUSABLE_SELECTOR = [
|
|
@@ -207,204 +217,29 @@ function useFocusTrap(containerRef, active, { onEscape, contain = true } = {}) {
|
|
|
207
217
|
}, [containerRef, active, contain]);
|
|
208
218
|
}
|
|
209
219
|
|
|
210
|
-
// src/hooks/ui/use-
|
|
211
|
-
|
|
212
|
-
function
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
if (!el || !thumb) return;
|
|
230
|
-
const maxScroll = el.scrollWidth - el.clientWidth;
|
|
231
|
-
if (maxScroll <= 0) {
|
|
232
|
-
thumb.style.left = "0%";
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
const ratio = el.clientWidth / el.scrollWidth;
|
|
236
|
-
const fraction = Math.min(Math.max(el.scrollLeft, 0), maxScroll) / maxScroll;
|
|
237
|
-
thumb.style.left = `${fraction * (1 - ratio) * 100}%`;
|
|
238
|
-
}, []);
|
|
239
|
-
const syncEdgeFades = _react.useCallback.call(void 0, () => {
|
|
240
|
-
const el = scrollElRef.current;
|
|
241
|
-
if (!el) return;
|
|
242
|
-
const maxScroll = el.scrollWidth - el.clientWidth;
|
|
243
|
-
const ratio = el.clientWidth / el.scrollWidth;
|
|
244
|
-
if (ratio >= 1 || maxScroll <= 0) {
|
|
245
|
-
if (prevCanScrollLeftRef.current) {
|
|
246
|
-
prevCanScrollLeftRef.current = false;
|
|
247
|
-
setCanScrollLeft(false);
|
|
248
|
-
}
|
|
249
|
-
if (prevCanScrollRightRef.current) {
|
|
250
|
-
prevCanScrollRightRef.current = false;
|
|
251
|
-
setCanScrollRight(false);
|
|
252
|
-
}
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
const fraction = Math.min(Math.max(el.scrollLeft, 0), maxScroll) / maxScroll;
|
|
256
|
-
const left = fraction > 1e-3;
|
|
257
|
-
const right = fraction < 0.999;
|
|
258
|
-
if (left !== prevCanScrollLeftRef.current) {
|
|
259
|
-
prevCanScrollLeftRef.current = left;
|
|
260
|
-
setCanScrollLeft(left);
|
|
261
|
-
}
|
|
262
|
-
if (right !== prevCanScrollRightRef.current) {
|
|
263
|
-
prevCanScrollRightRef.current = right;
|
|
264
|
-
setCanScrollRight(right);
|
|
265
|
-
}
|
|
266
|
-
}, []);
|
|
267
|
-
const measure2 = _react.useCallback.call(void 0, () => {
|
|
268
|
-
const el = scrollElRef.current;
|
|
269
|
-
if (!el) return;
|
|
270
|
-
const ratio = el.clientWidth / el.scrollWidth;
|
|
271
|
-
setThumbRatio(ratio >= 1 ? 0 : ratio);
|
|
272
|
-
syncThumbToDOM();
|
|
273
|
-
syncEdgeFades();
|
|
274
|
-
}, [syncThumbToDOM, syncEdgeFades]);
|
|
275
|
-
const scrollRef = _react.useCallback.call(void 0,
|
|
276
|
-
(node) => {
|
|
277
|
-
if (roRef.current) {
|
|
278
|
-
roRef.current.disconnect();
|
|
279
|
-
roRef.current = null;
|
|
280
|
-
}
|
|
281
|
-
if (moRef.current) {
|
|
282
|
-
moRef.current.disconnect();
|
|
283
|
-
moRef.current = null;
|
|
284
|
-
}
|
|
285
|
-
if (rafIdRef.current) {
|
|
286
|
-
cancelAnimationFrame(rafIdRef.current);
|
|
287
|
-
rafIdRef.current = 0;
|
|
288
|
-
}
|
|
289
|
-
scrollElRef.current = node;
|
|
290
|
-
if (node) {
|
|
291
|
-
const ratio = node.clientWidth / node.scrollWidth;
|
|
292
|
-
setThumbRatio(ratio >= 1 ? 0 : ratio);
|
|
293
|
-
const ro = new ResizeObserver(measure2);
|
|
294
|
-
roRef.current = ro;
|
|
295
|
-
const observeAll = () => {
|
|
296
|
-
ro.disconnect();
|
|
297
|
-
ro.observe(node);
|
|
298
|
-
for (const child of Array.from(node.children)) ro.observe(child);
|
|
299
|
-
};
|
|
300
|
-
observeAll();
|
|
301
|
-
moRef.current = new MutationObserver(() => {
|
|
302
|
-
observeAll();
|
|
303
|
-
measure2();
|
|
304
|
-
});
|
|
305
|
-
moRef.current.observe(node, { childList: true });
|
|
306
|
-
requestAnimationFrame(() => {
|
|
307
|
-
syncThumbToDOM();
|
|
308
|
-
syncEdgeFades();
|
|
309
|
-
});
|
|
310
|
-
} else {
|
|
311
|
-
setThumbRatio(0);
|
|
312
|
-
prevCanScrollLeftRef.current = false;
|
|
313
|
-
prevCanScrollRightRef.current = false;
|
|
314
|
-
setCanScrollLeft(false);
|
|
315
|
-
setCanScrollRight(false);
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
[measure2, syncThumbToDOM, syncEdgeFades]
|
|
319
|
-
);
|
|
320
|
-
const onScroll = _react.useCallback.call(void 0, () => {
|
|
321
|
-
if (isDraggingRef.current) return;
|
|
322
|
-
if (rafIdRef.current) cancelAnimationFrame(rafIdRef.current);
|
|
323
|
-
rafIdRef.current = requestAnimationFrame(() => {
|
|
324
|
-
syncThumbToDOM();
|
|
325
|
-
syncEdgeFades();
|
|
326
|
-
});
|
|
327
|
-
}, [syncThumbToDOM, syncEdgeFades]);
|
|
328
|
-
const onTrackClick = _react.useCallback.call(void 0, (e) => {
|
|
329
|
-
if (e.target.closest("[data-scrollbar-thumb]")) return;
|
|
330
|
-
const track = trackRef.current;
|
|
331
|
-
const el = scrollElRef.current;
|
|
332
|
-
if (!track || !el) return;
|
|
333
|
-
const ratio = el.clientWidth / el.scrollWidth;
|
|
334
|
-
if (ratio >= 1) return;
|
|
335
|
-
const rect = track.getBoundingClientRect();
|
|
336
|
-
const thumbWidth = rect.width * ratio;
|
|
337
|
-
const maxThumbOffset = rect.width - thumbWidth;
|
|
338
|
-
if (maxThumbOffset <= 0) return;
|
|
339
|
-
const targetFraction = Math.max(0, Math.min(1, (e.clientX - rect.left - thumbWidth / 2) / maxThumbOffset));
|
|
340
|
-
const targetScrollLeft = targetFraction * (el.scrollWidth - el.clientWidth);
|
|
341
|
-
el.scrollTo({ left: targetScrollLeft, behavior: "smooth" });
|
|
342
|
-
}, []);
|
|
343
|
-
const onTrackWheel = _react.useCallback.call(void 0, (e) => {
|
|
344
|
-
const el = scrollElRef.current;
|
|
345
|
-
if (!el) return;
|
|
346
|
-
e.preventDefault();
|
|
347
|
-
el.scrollLeft += e.deltaX || e.deltaY;
|
|
348
|
-
}, []);
|
|
349
|
-
const onThumbPointerDown = _react.useCallback.call(void 0, (e) => {
|
|
350
|
-
e.preventDefault();
|
|
351
|
-
e.stopPropagation();
|
|
352
|
-
const el = scrollElRef.current;
|
|
353
|
-
if (!el) return;
|
|
354
|
-
isDraggingRef.current = true;
|
|
355
|
-
dragStartRef.current = { mouseX: e.clientX, scrollLeft: el.scrollLeft };
|
|
356
|
-
const target = e.currentTarget;
|
|
357
|
-
target.setPointerCapture(e.pointerId);
|
|
358
|
-
target.style.cursor = "grabbing";
|
|
359
|
-
}, []);
|
|
360
|
-
const onThumbPointerMove = _react.useCallback.call(void 0,
|
|
361
|
-
(e) => {
|
|
362
|
-
if (!isDraggingRef.current) return;
|
|
363
|
-
const el = scrollElRef.current;
|
|
364
|
-
const track = trackRef.current;
|
|
365
|
-
if (!el || !track) return;
|
|
366
|
-
const currentThumbRatio = el.clientWidth / el.scrollWidth;
|
|
367
|
-
if (currentThumbRatio >= 1) return;
|
|
368
|
-
const trackWidth = track.clientWidth;
|
|
369
|
-
const thumbWidth = trackWidth * currentThumbRatio;
|
|
370
|
-
const maxThumbTravel = trackWidth - thumbWidth;
|
|
371
|
-
if (maxThumbTravel <= 0) return;
|
|
372
|
-
const mouseDelta = e.clientX - dragStartRef.current.mouseX;
|
|
373
|
-
const scrollRange = el.scrollWidth - el.clientWidth;
|
|
374
|
-
el.scrollLeft = Math.min(
|
|
375
|
-
Math.max(dragStartRef.current.scrollLeft + mouseDelta / maxThumbTravel * scrollRange, 0),
|
|
376
|
-
scrollRange
|
|
377
|
-
);
|
|
378
|
-
syncThumbToDOM();
|
|
379
|
-
syncEdgeFades();
|
|
380
|
-
},
|
|
381
|
-
[syncThumbToDOM, syncEdgeFades]
|
|
382
|
-
);
|
|
383
|
-
const onThumbPointerUp = _react.useCallback.call(void 0, (e) => {
|
|
384
|
-
isDraggingRef.current = false;
|
|
385
|
-
const target = e.currentTarget;
|
|
386
|
-
target.releasePointerCapture(e.pointerId);
|
|
387
|
-
target.style.cursor = "grab";
|
|
388
|
-
}, []);
|
|
389
|
-
const onThumbPointerCancel = _react.useCallback.call(void 0, (e) => {
|
|
390
|
-
isDraggingRef.current = false;
|
|
391
|
-
const target = e.currentTarget;
|
|
392
|
-
target.style.cursor = "grab";
|
|
393
|
-
}, []);
|
|
220
|
+
// src/hooks/ui/use-sticky-toolbar.ts
|
|
221
|
+
|
|
222
|
+
function useStickyToolbar() {
|
|
223
|
+
const [node, setNode] = _react.useState.call(void 0, null);
|
|
224
|
+
const [height, setHeight] = _react.useState.call(void 0, 0);
|
|
225
|
+
const toolbarRef = _react.useCallback.call(void 0, (el) => setNode(el), []);
|
|
226
|
+
const [lastNode, setLastNode] = _react.useState.call(void 0, node);
|
|
227
|
+
if (node !== lastNode) {
|
|
228
|
+
setLastNode(node);
|
|
229
|
+
if (!node) setHeight(0);
|
|
230
|
+
}
|
|
231
|
+
_react.useEffect.call(void 0, () => {
|
|
232
|
+
if (!node) return void 0;
|
|
233
|
+
const update = () => setHeight(node.offsetHeight);
|
|
234
|
+
update();
|
|
235
|
+
const observer = new ResizeObserver(update);
|
|
236
|
+
observer.observe(node);
|
|
237
|
+
return () => observer.disconnect();
|
|
238
|
+
}, [node]);
|
|
394
239
|
return {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
thumbRatio,
|
|
399
|
-
canScrollLeft,
|
|
400
|
-
canScrollRight,
|
|
401
|
-
onScroll,
|
|
402
|
-
onTrackClick,
|
|
403
|
-
onTrackWheel,
|
|
404
|
-
onThumbPointerDown,
|
|
405
|
-
onThumbPointerMove,
|
|
406
|
-
onThumbPointerUp,
|
|
407
|
-
onThumbPointerCancel
|
|
240
|
+
toolbarRef,
|
|
241
|
+
containerStyle: { "--sticky-toolbar-h": `${height}px` },
|
|
242
|
+
stickyHeaderOffset: "top-[var(--sticky-toolbar-h)]"
|
|
408
243
|
};
|
|
409
244
|
}
|
|
410
245
|
|
|
@@ -459,77 +294,6 @@ function useKeyboardCollisionPadding() {
|
|
|
459
294
|
);
|
|
460
295
|
}
|
|
461
296
|
|
|
462
|
-
// src/hooks/ui/use-local-storage.ts
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
// src/utils/storage-event.ts
|
|
466
|
-
function readLocalStorageUpdateDetail(event) {
|
|
467
|
-
if (!("detail" in event)) return null;
|
|
468
|
-
const detail = event.detail;
|
|
469
|
-
if (typeof detail !== "object" || detail === null) return null;
|
|
470
|
-
if (!("key" in detail) || typeof detail.key !== "string") return null;
|
|
471
|
-
const newValue = "newValue" in detail ? detail.newValue : null;
|
|
472
|
-
if (newValue !== null && newValue !== void 0 && typeof newValue !== "string") return null;
|
|
473
|
-
return { key: detail.key, newValue: _nullishCoalesce(newValue, () => ( null)) };
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
// src/hooks/ui/use-local-storage.ts
|
|
477
|
-
function useLocalStorage(key, initialValue, options) {
|
|
478
|
-
const initialValueRef = _react.useRef.call(void 0, initialValue);
|
|
479
|
-
_react.useEffect.call(void 0, () => {
|
|
480
|
-
initialValueRef.current = initialValue;
|
|
481
|
-
});
|
|
482
|
-
const validate = _optionalChain([options, 'optionalAccess', _17 => _17.validate]);
|
|
483
|
-
const storage = _react.useMemo.call(void 0,
|
|
484
|
-
() => _chunkLM7TXMLUcjs.createLocalStorageAdapter.call(void 0, { key, validate, logTag: `[useLocalStorage:${key}]` }),
|
|
485
|
-
[key, validate]
|
|
486
|
-
);
|
|
487
|
-
const [storedValue, setStoredValue] = _react.useState.call(void 0, () => _nullishCoalesce(storage.load(), () => ( initialValue)));
|
|
488
|
-
const isInitialized = _react.useRef.call(void 0, true);
|
|
489
|
-
const isFromStorageEvent = _react.useRef.call(void 0, false);
|
|
490
|
-
_react.useEffect.call(void 0, () => {
|
|
491
|
-
if (!isInitialized.current) return void 0;
|
|
492
|
-
const syncFromStorage = (source) => {
|
|
493
|
-
const next = storage.load();
|
|
494
|
-
isFromStorageEvent.current = true;
|
|
495
|
-
setStoredValue(_nullishCoalesce(next, () => ( initialValueRef.current)));
|
|
496
|
-
console.log(`\u{1F504} ${next === null ? "Cleared" : "Updated"} localStorage key "${key}" from ${source}`);
|
|
497
|
-
};
|
|
498
|
-
const handleStorageChange = (e) => {
|
|
499
|
-
if (e.key !== key) return;
|
|
500
|
-
syncFromStorage("storage event");
|
|
501
|
-
};
|
|
502
|
-
const handleCustomStorageUpdate = (event) => {
|
|
503
|
-
const detail = readLocalStorageUpdateDetail(event);
|
|
504
|
-
if (_optionalChain([detail, 'optionalAccess', _18 => _18.key]) !== key) return;
|
|
505
|
-
syncFromStorage("custom storage event");
|
|
506
|
-
};
|
|
507
|
-
window.addEventListener("storage", handleStorageChange);
|
|
508
|
-
window.addEventListener("localStorageUpdate", handleCustomStorageUpdate);
|
|
509
|
-
return () => {
|
|
510
|
-
window.removeEventListener("storage", handleStorageChange);
|
|
511
|
-
window.removeEventListener("localStorageUpdate", handleCustomStorageUpdate);
|
|
512
|
-
};
|
|
513
|
-
}, [key, storage]);
|
|
514
|
-
_react.useEffect.call(void 0, () => {
|
|
515
|
-
if (!isInitialized.current) return;
|
|
516
|
-
if (isFromStorageEvent.current) {
|
|
517
|
-
isFromStorageEvent.current = false;
|
|
518
|
-
return;
|
|
519
|
-
}
|
|
520
|
-
storage.save(storedValue);
|
|
521
|
-
}, [storage, storedValue]);
|
|
522
|
-
const setValue = (value) => {
|
|
523
|
-
try {
|
|
524
|
-
const valueToStore = value instanceof Function ? value(storedValue) : value;
|
|
525
|
-
setStoredValue(valueToStore);
|
|
526
|
-
} catch (error) {
|
|
527
|
-
console.error(`Error setting value for localStorage key "${key}":`, error);
|
|
528
|
-
}
|
|
529
|
-
};
|
|
530
|
-
return [storedValue, setValue];
|
|
531
|
-
}
|
|
532
|
-
|
|
533
297
|
// src/hooks/ui/use-memoized-callback.ts
|
|
534
298
|
|
|
535
299
|
function useMemoizedCallback(callback, _dependencies) {
|
|
@@ -555,16 +319,16 @@ function useNotificationPermission() {
|
|
|
555
319
|
sync2();
|
|
556
320
|
let cancelled = false;
|
|
557
321
|
let status;
|
|
558
|
-
_optionalChain([navigator, 'access',
|
|
322
|
+
_optionalChain([navigator, 'access', _17 => _17.permissions, 'optionalAccess', _18 => _18.query, 'call', _19 => _19({ name: "notifications" }), 'access', _20 => _20.then, 'call', _21 => _21((s) => {
|
|
559
323
|
if (cancelled) return;
|
|
560
324
|
status = s;
|
|
561
325
|
s.addEventListener("change", sync2);
|
|
562
|
-
}), 'access',
|
|
326
|
+
}), 'access', _22 => _22.catch, 'call', _23 => _23(() => void 0)]);
|
|
563
327
|
document.addEventListener("visibilitychange", sync2);
|
|
564
328
|
window.addEventListener("focus", sync2);
|
|
565
329
|
return () => {
|
|
566
330
|
cancelled = true;
|
|
567
|
-
_optionalChain([status, 'optionalAccess',
|
|
331
|
+
_optionalChain([status, 'optionalAccess', _24 => _24.removeEventListener, 'call', _25 => _25("change", sync2)]);
|
|
568
332
|
document.removeEventListener("visibilitychange", sync2);
|
|
569
333
|
window.removeEventListener("focus", sync2);
|
|
570
334
|
};
|
|
@@ -575,7 +339,7 @@ function useNotificationPermission() {
|
|
|
575
339
|
}
|
|
576
340
|
const result = await new Promise((resolve) => {
|
|
577
341
|
const maybePromise = Notification.requestPermission(resolve);
|
|
578
|
-
if (typeof _optionalChain([maybePromise, 'optionalAccess',
|
|
342
|
+
if (typeof _optionalChain([maybePromise, 'optionalAccess', _26 => _26.then]) === "function") {
|
|
579
343
|
void maybePromise.then(resolve, () => resolve(Notification.permission));
|
|
580
344
|
}
|
|
581
345
|
});
|
|
@@ -674,8 +438,8 @@ function useOnboardingState(storageKey = "openframe-onboarding-state") {
|
|
|
674
438
|
const [, forceUpdate] = _react.useState.call(void 0, 0);
|
|
675
439
|
_react.useEffect.call(void 0, () => {
|
|
676
440
|
const handleStorageUpdate = (event) => {
|
|
677
|
-
const detail = readLocalStorageUpdateDetail(event);
|
|
678
|
-
if (_optionalChain([detail, 'optionalAccess',
|
|
441
|
+
const detail = _chunkB4NCVYEQcjs.readLocalStorageUpdateDetail.call(void 0, event);
|
|
442
|
+
if (_optionalChain([detail, 'optionalAccess', _27 => _27.key]) !== storageKey) return;
|
|
679
443
|
const newState = loadOnboardingState(storageKey);
|
|
680
444
|
setState(newState);
|
|
681
445
|
forceUpdate((prev) => prev + 1);
|
|
@@ -765,7 +529,7 @@ function useSearch(config) {
|
|
|
765
529
|
searchFnRef.current = searchFn;
|
|
766
530
|
mapResultRef.current = mapResult;
|
|
767
531
|
});
|
|
768
|
-
const debouncedQuery =
|
|
532
|
+
const debouncedQuery = _chunkGQ7JJUITcjs.useDebounce.call(void 0, query, debounceMs);
|
|
769
533
|
const clearResults = _react.useCallback.call(void 0, () => {
|
|
770
534
|
setResults(NO_RESULTS);
|
|
771
535
|
setError(null);
|
|
@@ -911,14 +675,14 @@ function resolveActiveSection(menus, pathname) {
|
|
|
911
675
|
if (!current) return null;
|
|
912
676
|
let best = null;
|
|
913
677
|
for (const menu of menus) {
|
|
914
|
-
const prefixes = _optionalChain([menu, 'access',
|
|
678
|
+
const prefixes = _optionalChain([menu, 'access', _28 => _28.match, 'optionalAccess', _29 => _29.length]) ? menu.match : [menu.href];
|
|
915
679
|
for (const raw of prefixes) {
|
|
916
680
|
const prefix = pathOf(raw);
|
|
917
681
|
if (!prefix || !prefixHolds(prefix, current)) continue;
|
|
918
682
|
if (!best || prefix.length > best.length) best = { id: menu.id, length: prefix.length };
|
|
919
683
|
}
|
|
920
684
|
}
|
|
921
|
-
return _nullishCoalesce(_optionalChain([best, 'optionalAccess',
|
|
685
|
+
return _nullishCoalesce(_optionalChain([best, 'optionalAccess', _30 => _30.id]), () => ( null));
|
|
922
686
|
}
|
|
923
687
|
function useActiveSection(menus, pathname) {
|
|
924
688
|
return _react.useMemo.call(void 0, () => resolveActiveSection(menus, pathname), [menus, pathname]);
|
|
@@ -977,7 +741,7 @@ function useNavMenus({
|
|
|
977
741
|
if (event.key !== "Escape") return;
|
|
978
742
|
const trigger = triggers.current.get(openId);
|
|
979
743
|
close();
|
|
980
|
-
_optionalChain([trigger, 'optionalAccess',
|
|
744
|
+
_optionalChain([trigger, 'optionalAccess', _31 => _31.focus, 'call', _32 => _32({ preventScroll: true })]);
|
|
981
745
|
};
|
|
982
746
|
const handlePointerDown = (event) => {
|
|
983
747
|
const target = event.target;
|
|
@@ -1046,145 +810,8 @@ function useNavMenus({
|
|
|
1046
810
|
return { openId, close, getTriggerProps, getPanelProps };
|
|
1047
811
|
}
|
|
1048
812
|
|
|
1049
|
-
// src/hooks/ui/use-visitor-os.ts
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
// src/utils/visitor-os.ts
|
|
1053
|
-
var DESKTOP_OSES = ["mac", "windows", "linux"];
|
|
1054
|
-
var HINT_PLATFORMS = {
|
|
1055
|
-
macos: "mac",
|
|
1056
|
-
windows: "windows",
|
|
1057
|
-
linux: "linux",
|
|
1058
|
-
"chrome os": "linux",
|
|
1059
|
-
"chromium os": "linux",
|
|
1060
|
-
android: "android",
|
|
1061
|
-
ios: "ios"
|
|
1062
|
-
};
|
|
1063
|
-
function detectVisitorOs(userAgent, hints = {}) {
|
|
1064
|
-
const touchMac = (os) => os === "mac" && (_nullishCoalesce(hints.maxTouchPoints, () => ( 0))) > 1 ? "ios" : os;
|
|
1065
|
-
const hinted = HINT_PLATFORMS[(_nullishCoalesce(hints.platform, () => ( ""))).replace(/"/g, "").trim().toLowerCase()];
|
|
1066
|
-
if (hinted) return touchMac(hinted);
|
|
1067
|
-
const ua = _nullishCoalesce(userAgent, () => ( ""));
|
|
1068
|
-
if (!ua) return null;
|
|
1069
|
-
if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
|
|
1070
|
-
if (/Android/i.test(ua)) return "android";
|
|
1071
|
-
if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
|
|
1072
|
-
if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
|
|
1073
|
-
if (/Linux|X11|CrOS/i.test(ua)) return "linux";
|
|
1074
|
-
return null;
|
|
1075
|
-
}
|
|
1076
|
-
function desktopOsOf(os) {
|
|
1077
|
-
return os !== null && DESKTOP_OSES.includes(os) ? os : null;
|
|
1078
|
-
}
|
|
1079
|
-
function detectDesktopOs(userAgent, hints) {
|
|
1080
|
-
return desktopOsOf(detectVisitorOs(userAgent, hints));
|
|
1081
|
-
}
|
|
1082
|
-
function usesCommandKey(os) {
|
|
1083
|
-
return os === "mac" || os === "ios";
|
|
1084
|
-
}
|
|
1085
|
-
function shortcutLabel(os, key) {
|
|
1086
|
-
return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
// src/hooks/ui/use-visitor-os.ts
|
|
1090
|
-
var UNKNOWN = { known: false, os: null };
|
|
1091
|
-
var KNOWN = /* @__PURE__ */ new Map();
|
|
1092
|
-
var subscribe2 = () => () => {
|
|
1093
|
-
};
|
|
1094
|
-
var getServerSnapshot = () => UNKNOWN;
|
|
1095
|
-
function getSnapshot() {
|
|
1096
|
-
const stated = _optionalChain([navigator, 'access', _35 => _35.userAgentData, 'optionalAccess', _36 => _36.platform]);
|
|
1097
|
-
const os = detectVisitorOs(navigator.userAgent, { platform: stated, maxTouchPoints: navigator.maxTouchPoints });
|
|
1098
|
-
let state = KNOWN.get(os);
|
|
1099
|
-
if (!state) {
|
|
1100
|
-
state = { known: true, os };
|
|
1101
|
-
KNOWN.set(os, state);
|
|
1102
|
-
}
|
|
1103
|
-
return state;
|
|
1104
|
-
}
|
|
1105
|
-
function useVisitorOs() {
|
|
1106
|
-
return _react.useSyncExternalStore.call(void 0, subscribe2, getSnapshot, getServerSnapshot);
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
813
|
// src/hooks/platform/use-platform-config.ts
|
|
1110
814
|
|
|
1111
|
-
|
|
1112
|
-
// src/utils/platform-config.tsx
|
|
1113
|
-
var _lucidereact = require('lucide-react');
|
|
1114
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
1115
|
-
function renderPlatformIcon(platformName, className) {
|
|
1116
|
-
const tinted = _chunk3ATAYP36cjs.cn.call(void 0, className, _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platformName).accentText);
|
|
1117
|
-
switch (platformName) {
|
|
1118
|
-
case "openframe":
|
|
1119
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1120
|
-
_chunkLLSUVPQCcjs.OpenFrameLogo,
|
|
1121
|
-
{
|
|
1122
|
-
className: tinted,
|
|
1123
|
-
lowerPathColor: "currentColor",
|
|
1124
|
-
upperPathColor: "var(--ods-system-greys-white)"
|
|
1125
|
-
}
|
|
1126
|
-
);
|
|
1127
|
-
case "openmsp":
|
|
1128
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1129
|
-
_chunkLLSUVPQCcjs.OpenmspLogo,
|
|
1130
|
-
{
|
|
1131
|
-
className: tinted,
|
|
1132
|
-
backBubbleColor: "currentColor",
|
|
1133
|
-
frontBubbleColor: "var(--ods-system-greys-white)",
|
|
1134
|
-
innerFrontBubbleColor: "var(--ods-system-greys-black)"
|
|
1135
|
-
}
|
|
1136
|
-
);
|
|
1137
|
-
case "tmcg":
|
|
1138
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MiamiCyberGangLogoFaceOnly, { className });
|
|
1139
|
-
case "mlg":
|
|
1140
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MlgLogo, { className: tinted, size: 20 });
|
|
1141
|
-
case "universal":
|
|
1142
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className: tinted });
|
|
1143
|
-
default:
|
|
1144
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.FlamingoLogo, { className: tinted, fill: "currentColor" });
|
|
1145
|
-
}
|
|
1146
|
-
}
|
|
1147
|
-
var platformIcons = {
|
|
1148
|
-
openframe: renderPlatformIcon("openframe", "h-5 w-5"),
|
|
1149
|
-
openmsp: renderPlatformIcon("openmsp", "h-5 w-5"),
|
|
1150
|
-
flamingo: renderPlatformIcon("flamingo", "h-5 w-5"),
|
|
1151
|
-
"flamingo-teaser": renderPlatformIcon("flamingo-teaser", "h-5 w-5"),
|
|
1152
|
-
"marketing-hub": renderPlatformIcon("marketing-hub", "h-5 w-5"),
|
|
1153
|
-
"product-hub": renderPlatformIcon("product-hub", "h-5 w-5"),
|
|
1154
|
-
"revenue-hub": renderPlatformIcon("revenue-hub", "h-5 w-5"),
|
|
1155
|
-
"people-hub": renderPlatformIcon("people-hub", "h-5 w-5"),
|
|
1156
|
-
"company-hub": renderPlatformIcon("company-hub", "h-5 w-5"),
|
|
1157
|
-
tmcg: renderPlatformIcon("tmcg", "h-5 w-5"),
|
|
1158
|
-
mlg: renderPlatformIcon("mlg", "h-5 w-5"),
|
|
1159
|
-
universal: renderPlatformIcon("universal", "h-5 w-5")
|
|
1160
|
-
};
|
|
1161
|
-
function transformPlatformConfigsToOptions(platformConfigs) {
|
|
1162
|
-
return platformConfigs.map((platform) => ({
|
|
1163
|
-
id: platform.id,
|
|
1164
|
-
// Database UUID for matching
|
|
1165
|
-
name: platform.name,
|
|
1166
|
-
// Platform name enum
|
|
1167
|
-
displayName: platform.display_name,
|
|
1168
|
-
// Human-readable name
|
|
1169
|
-
description: platform.description,
|
|
1170
|
-
icon: getPlatformIcon(platform.name),
|
|
1171
|
-
color: getPlatformColorClass(platform.name)
|
|
1172
|
-
}));
|
|
1173
|
-
}
|
|
1174
|
-
function getPlatformIcon(platformName) {
|
|
1175
|
-
return _nullishCoalesce(platformIcons[platformName], () => ( platformIcons.universal));
|
|
1176
|
-
}
|
|
1177
|
-
function getSmallPlatformIcon(platformName) {
|
|
1178
|
-
return renderPlatformIcon(platformName, "h-4 w-4 flex-shrink-0");
|
|
1179
|
-
}
|
|
1180
|
-
function getPlatformIconComponent(platformName, className = "h-6 w-6") {
|
|
1181
|
-
return renderPlatformIcon(platformName, className);
|
|
1182
|
-
}
|
|
1183
|
-
function getPlatformColorClass(platformName) {
|
|
1184
|
-
return _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platformName).accentBg;
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
// src/hooks/platform/use-platform-config.ts
|
|
1188
815
|
var platformCache = null;
|
|
1189
816
|
var fetchPromise = null;
|
|
1190
817
|
function isRecord(value) {
|
|
@@ -1269,7 +896,7 @@ function usePlatformConfig() {
|
|
|
1269
896
|
label: platform.label
|
|
1270
897
|
}))
|
|
1271
898
|
];
|
|
1272
|
-
const selectableOptions = transformPlatformConfigsToOptions(platforms);
|
|
899
|
+
const selectableOptions = _chunkGQ7JJUITcjs.transformPlatformConfigsToOptions.call(void 0, platforms);
|
|
1273
900
|
return {
|
|
1274
901
|
platforms,
|
|
1275
902
|
platformOptions,
|
|
@@ -1293,7 +920,7 @@ var _sonner = require('sonner');
|
|
|
1293
920
|
// src/components/ui/toaster.tsx
|
|
1294
921
|
|
|
1295
922
|
|
|
1296
|
-
|
|
923
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
1297
924
|
var dotColorByVariant = {
|
|
1298
925
|
default: "bg-ods-text-secondary",
|
|
1299
926
|
success: "bg-ods-success",
|
|
@@ -1409,11 +1036,11 @@ function CommandApprovalToast({
|
|
|
1409
1036
|
}) {
|
|
1410
1037
|
const [expanded, setExpanded] = _react.useState.call(void 0, defaultExpanded);
|
|
1411
1038
|
const handleApprove = () => {
|
|
1412
|
-
_optionalChain([onApprove, 'optionalCall',
|
|
1039
|
+
_optionalChain([onApprove, 'optionalCall', _33 => _33()]);
|
|
1413
1040
|
_sonner.toast.dismiss(id);
|
|
1414
1041
|
};
|
|
1415
1042
|
const handleReject = () => {
|
|
1416
|
-
_optionalChain([onReject, 'optionalCall',
|
|
1043
|
+
_optionalChain([onReject, 'optionalCall', _34 => _34()]);
|
|
1417
1044
|
_sonner.toast.dismiss(id);
|
|
1418
1045
|
};
|
|
1419
1046
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -1447,7 +1074,7 @@ function CommandApprovalToast({
|
|
|
1447
1074
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "overflow-hidden", children: [
|
|
1448
1075
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-11 w-full items-center gap-2 border-b border-ods-border bg-ods-card px-3 py-2", children: [
|
|
1449
1076
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h6", title: command, children: command }),
|
|
1450
|
-
toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1077
|
+
toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWVOTC7HWcjs.ToolIcon, { toolType, size: 16 }) : null
|
|
1451
1078
|
] }),
|
|
1452
1079
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2 bg-ods-bg p-3", children: [
|
|
1453
1080
|
approvalDescription ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: approvalDescription }) : null,
|
|
@@ -1620,7 +1247,7 @@ function useContactSubmission(options = {}) {
|
|
|
1620
1247
|
if (isSubmitting) return;
|
|
1621
1248
|
setIsSubmitting(true);
|
|
1622
1249
|
try {
|
|
1623
|
-
const response = await
|
|
1250
|
+
const response = await _chunkAUMKE74Mcjs.contentFetch.call(void 0, contactUrl, {
|
|
1624
1251
|
method: "POST",
|
|
1625
1252
|
headers: { "Content-Type": "application/json" },
|
|
1626
1253
|
body: JSON.stringify({
|
|
@@ -1630,7 +1257,7 @@ function useContactSubmission(options = {}) {
|
|
|
1630
1257
|
});
|
|
1631
1258
|
if (!response.ok) {
|
|
1632
1259
|
const failure = await response.json().catch(() => null);
|
|
1633
|
-
throw new Error(
|
|
1260
|
+
throw new Error(_chunkWVOTC7HWcjs.apiErrorMessage.call(void 0, failure, "Failed to submit contact form"));
|
|
1634
1261
|
}
|
|
1635
1262
|
setIsSuccess(true);
|
|
1636
1263
|
const message = successToastMessage ? `Thank you! Your message has been sent. ${successToastMessage}` : "Thank you! Your message has been sent successfully.";
|
|
@@ -1949,12 +1576,12 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
|
|
|
1949
1576
|
};
|
|
1950
1577
|
}, []);
|
|
1951
1578
|
const active = settled && settled.key === cacheKey ? settled : null;
|
|
1952
|
-
const cachedBlobUrl = cacheKey === null ? void 0 : _optionalChain([imageCache, 'access',
|
|
1953
|
-
const resolvedBlobUrl = _nullishCoalesce(_nullishCoalesce(_optionalChain([active, 'optionalAccess',
|
|
1579
|
+
const cachedBlobUrl = cacheKey === null ? void 0 : _optionalChain([imageCache, 'access', _35 => _35.get, 'call', _36 => _36(cacheKey), 'optionalAccess', _37 => _37.blobUrl]);
|
|
1580
|
+
const resolvedBlobUrl = _nullishCoalesce(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _38 => _38.blobUrl]), () => ( cachedBlobUrl)), () => ( _optionalChain([settled, 'optionalAccess', _39 => _39.blobUrl])));
|
|
1954
1581
|
return {
|
|
1955
1582
|
imageUrl: cacheKey === null ? void 0 : resolvedBlobUrl,
|
|
1956
1583
|
isLoading: cacheKey !== null && active === null && cachedBlobUrl === void 0,
|
|
1957
|
-
error: _nullishCoalesce((cacheKey === null ? void 0 : _optionalChain([active, 'optionalAccess',
|
|
1584
|
+
error: _nullishCoalesce((cacheKey === null ? void 0 : _optionalChain([active, 'optionalAccess', _40 => _40.error])), () => ( null))
|
|
1958
1585
|
};
|
|
1959
1586
|
}
|
|
1960
1587
|
|
|
@@ -2315,7 +1942,7 @@ function variablesToUrlParams(variables, schema) {
|
|
|
2315
1942
|
const params = new URLSearchParams();
|
|
2316
1943
|
for (const [paramName, paramConfig] of Object.entries(schema)) {
|
|
2317
1944
|
const value = getNestedValue(variables, paramConfig.graphqlPath);
|
|
2318
|
-
if (!
|
|
1945
|
+
if (!_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
|
|
2319
1946
|
continue;
|
|
2320
1947
|
}
|
|
2321
1948
|
if (Array.isArray(value)) {
|
|
@@ -2344,7 +1971,7 @@ function coerceScalar(value, type) {
|
|
|
2344
1971
|
return isNaN(num) ? null : num;
|
|
2345
1972
|
}
|
|
2346
1973
|
case "int":
|
|
2347
|
-
return
|
|
1974
|
+
return _chunkAECTRMGQcjs.positiveInt.call(void 0, value, null);
|
|
2348
1975
|
case "boolean":
|
|
2349
1976
|
return value === "true" || value === "1";
|
|
2350
1977
|
case "string":
|
|
@@ -2650,7 +2277,7 @@ function useApiParams(schema, options = {}) {
|
|
|
2650
2277
|
return flattened;
|
|
2651
2278
|
}, [stableSchema]);
|
|
2652
2279
|
const rawParams = _react.useMemo.call(void 0, () => {
|
|
2653
|
-
const result =
|
|
2280
|
+
const result = _chunkAECTRMGQcjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(searchString), {
|
|
2654
2281
|
absent: options.absent === "null" ? "null" : "undefined"
|
|
2655
2282
|
});
|
|
2656
2283
|
if (debug) {
|
|
@@ -2666,14 +2293,14 @@ function useApiParams(schema, options = {}) {
|
|
|
2666
2293
|
}
|
|
2667
2294
|
const params = stableParams;
|
|
2668
2295
|
const addParamToSearchParams = _react.useCallback.call(void 0, (searchParams, key, value) => {
|
|
2669
|
-
for (const [k, v] of
|
|
2296
|
+
for (const [k, v] of _chunkAECTRMGQcjs.createSearchParams.call(void 0, { [key]: value })) searchParams.append(k, v);
|
|
2670
2297
|
}, []);
|
|
2671
2298
|
const urlSearchParams = _react.useMemo.call(void 0, () => {
|
|
2672
2299
|
const newParams = new URLSearchParams();
|
|
2673
2300
|
for (const key of Object.keys(stableSchema)) {
|
|
2674
2301
|
const value = params[key];
|
|
2675
2302
|
const paramConfig = flattenedSchema[key];
|
|
2676
|
-
if (!
|
|
2303
|
+
if (!_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
|
|
2677
2304
|
continue;
|
|
2678
2305
|
}
|
|
2679
2306
|
addParamToSearchParams(newParams, key, value);
|
|
@@ -2730,7 +2357,7 @@ function useApiParams(schema, options = {}) {
|
|
|
2730
2357
|
return;
|
|
2731
2358
|
}
|
|
2732
2359
|
const newParams = new URLSearchParams();
|
|
2733
|
-
if (
|
|
2360
|
+
if (_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, config)) {
|
|
2734
2361
|
addParamToSearchParams(newParams, key, value);
|
|
2735
2362
|
updateUrl(newParams);
|
|
2736
2363
|
} else {
|
|
@@ -2749,7 +2376,7 @@ function useApiParams(schema, options = {}) {
|
|
|
2749
2376
|
console.warn(`[useApiParams] Unknown parameter: ${key}`);
|
|
2750
2377
|
continue;
|
|
2751
2378
|
}
|
|
2752
|
-
if (
|
|
2379
|
+
if (_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, flattenedSchema[key])) {
|
|
2753
2380
|
addParamToSearchParams(newParams, key, value);
|
|
2754
2381
|
} else {
|
|
2755
2382
|
keysToRemove.push(key);
|
|
@@ -2774,7 +2401,7 @@ function useApiParams(schema, options = {}) {
|
|
|
2774
2401
|
}, [router, debug]);
|
|
2775
2402
|
const pendingParams = _react.useMemo.call(void 0, () => {
|
|
2776
2403
|
if (pendingTail === void 0 || pendingTail === searchString) return params;
|
|
2777
|
-
return
|
|
2404
|
+
return _chunkAECTRMGQcjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(pendingTail), {
|
|
2778
2405
|
absent: options.absent === "null" ? "null" : "undefined"
|
|
2779
2406
|
});
|
|
2780
2407
|
}, [pendingTail, searchString, params, stableSchema, options.absent]);
|
|
@@ -2945,7 +2572,7 @@ function useScenarioPlayer({
|
|
|
2945
2572
|
initialScenario = 0,
|
|
2946
2573
|
startAtEnd = false
|
|
2947
2574
|
}) {
|
|
2948
|
-
const auto =
|
|
2575
|
+
const auto = _chunkGQ7JJUITcjs.useAutoplay.call(void 0, enabled);
|
|
2949
2576
|
const { reducedMotion, paused, setPaused } = auto;
|
|
2950
2577
|
const [scenario, setScenario] = _react.useState.call(void 0, initialScenario);
|
|
2951
2578
|
const [rawStep, setRawStep] = _react.useState.call(void 0, startAtEnd ? Number.MAX_SAFE_INTEGER : 0);
|
|
@@ -2994,65 +2621,6 @@ function useScenarioPlayer({
|
|
|
2994
2621
|
|
|
2995
2622
|
// src/hooks/use-access-code-integration.ts
|
|
2996
2623
|
|
|
2997
|
-
|
|
2998
|
-
// src/utils/access-code-client.ts
|
|
2999
|
-
async function validateAccessCode(email, code, endpoints) {
|
|
3000
|
-
try {
|
|
3001
|
-
const response = await fetch(endpoints.validateUrl, {
|
|
3002
|
-
method: "POST",
|
|
3003
|
-
headers: {
|
|
3004
|
-
"Content-Type": "application/json"
|
|
3005
|
-
},
|
|
3006
|
-
body: JSON.stringify({ email, code })
|
|
3007
|
-
});
|
|
3008
|
-
if (!response.ok) {
|
|
3009
|
-
const failure = await response.json().catch(() => null);
|
|
3010
|
-
throw new Error(_chunkUVTD52MDcjs.apiErrorMessage.call(void 0, failure, "Validation request failed"));
|
|
3011
|
-
}
|
|
3012
|
-
return await response.json();
|
|
3013
|
-
} catch (error) {
|
|
3014
|
-
return {
|
|
3015
|
-
valid: false,
|
|
3016
|
-
message: error instanceof Error ? error.message : "Validation failed"
|
|
3017
|
-
};
|
|
3018
|
-
}
|
|
3019
|
-
}
|
|
3020
|
-
async function consumeAccessCode(email, code, endpoints) {
|
|
3021
|
-
try {
|
|
3022
|
-
const response = await fetch(endpoints.consumeUrl, {
|
|
3023
|
-
method: "POST",
|
|
3024
|
-
headers: {
|
|
3025
|
-
"Content-Type": "application/json"
|
|
3026
|
-
},
|
|
3027
|
-
body: JSON.stringify({ email, code })
|
|
3028
|
-
});
|
|
3029
|
-
if (!response.ok) {
|
|
3030
|
-
const failure = await response.json().catch(() => null);
|
|
3031
|
-
throw new Error(_chunkUVTD52MDcjs.apiErrorMessage.call(void 0, failure, "Consumption request failed"));
|
|
3032
|
-
}
|
|
3033
|
-
return await response.json();
|
|
3034
|
-
} catch (error) {
|
|
3035
|
-
return {
|
|
3036
|
-
success: false,
|
|
3037
|
-
consumed: false,
|
|
3038
|
-
message: error instanceof Error ? error.message : "Consumption failed"
|
|
3039
|
-
};
|
|
3040
|
-
}
|
|
3041
|
-
}
|
|
3042
|
-
async function validateAndConsumeAccessCode(email, code, endpoints) {
|
|
3043
|
-
const validation = await validateAccessCode(email, code, endpoints);
|
|
3044
|
-
if (!validation.valid) {
|
|
3045
|
-
return validation;
|
|
3046
|
-
}
|
|
3047
|
-
const consumption = await consumeAccessCode(email, code, endpoints);
|
|
3048
|
-
return {
|
|
3049
|
-
...validation,
|
|
3050
|
-
consumed: consumption.consumed,
|
|
3051
|
-
message: consumption.consumed ? `Access granted for ${validation.cohort_name}` : consumption.message || validation.message
|
|
3052
|
-
};
|
|
3053
|
-
}
|
|
3054
|
-
|
|
3055
|
-
// src/hooks/use-access-code-integration.ts
|
|
3056
2624
|
function useAccessCodeIntegration() {
|
|
3057
2625
|
const runtime = _chunkMZ4KBSH7cjs.useRequiredEndpointsRuntime.call(void 0, );
|
|
3058
2626
|
const endpoints = runtime.accessCode;
|
|
@@ -3061,7 +2629,7 @@ function useAccessCodeIntegration() {
|
|
|
3061
2629
|
const validate = async (email, code) => {
|
|
3062
2630
|
setIsValidating(true);
|
|
3063
2631
|
try {
|
|
3064
|
-
return await validateAccessCode(email, code, endpoints);
|
|
2632
|
+
return await _chunkGQ7JJUITcjs.validateAccessCode.call(void 0, email, code, endpoints);
|
|
3065
2633
|
} finally {
|
|
3066
2634
|
setIsValidating(false);
|
|
3067
2635
|
}
|
|
@@ -3069,7 +2637,7 @@ function useAccessCodeIntegration() {
|
|
|
3069
2637
|
const consume = async (email, code) => {
|
|
3070
2638
|
setIsConsuming(true);
|
|
3071
2639
|
try {
|
|
3072
|
-
return await consumeAccessCode(email, code, endpoints);
|
|
2640
|
+
return await _chunkGQ7JJUITcjs.consumeAccessCode.call(void 0, email, code, endpoints);
|
|
3073
2641
|
} finally {
|
|
3074
2642
|
setIsConsuming(false);
|
|
3075
2643
|
}
|
|
@@ -3078,7 +2646,7 @@ function useAccessCodeIntegration() {
|
|
|
3078
2646
|
setIsValidating(true);
|
|
3079
2647
|
setIsConsuming(true);
|
|
3080
2648
|
try {
|
|
3081
|
-
return await validateAndConsumeAccessCode(email, code, endpoints);
|
|
2649
|
+
return await _chunkGQ7JJUITcjs.validateAndConsumeAccessCode.call(void 0, email, code, endpoints);
|
|
3082
2650
|
} finally {
|
|
3083
2651
|
setIsValidating(false);
|
|
3084
2652
|
setIsConsuming(false);
|
|
@@ -3096,95 +2664,19 @@ function useAccessCodeIntegration() {
|
|
|
3096
2664
|
|
|
3097
2665
|
// src/hooks/use-claude-mirror-src.ts
|
|
3098
2666
|
|
|
3099
|
-
|
|
3100
|
-
// src/utils/embed-url-converters.ts
|
|
3101
|
-
function toGoogleSheetsEmbedUrl(url) {
|
|
3102
|
-
if (url.includes("/htmlembed")) return url;
|
|
3103
|
-
const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/);
|
|
3104
|
-
if (!match) return url;
|
|
3105
|
-
const gidMatch = url.match(/[#?&]gid=(\d+)/);
|
|
3106
|
-
const gid = gidMatch ? gidMatch[1] : "0";
|
|
3107
|
-
return `https://docs.google.com/spreadsheets/d/${match[1]}/htmlembed?widget=true&chrome=false&headers=false&gid=${gid}`;
|
|
3108
|
-
}
|
|
3109
|
-
function toGoogleSheetsOriginalUrl(url) {
|
|
3110
|
-
const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/);
|
|
3111
|
-
if (!match) return url;
|
|
3112
|
-
const gidMatch = url.match(/[#?&]gid=(\d+)/);
|
|
3113
|
-
const gid = gidMatch ? gidMatch[1] : "0";
|
|
3114
|
-
return `https://docs.google.com/spreadsheets/d/${match[1]}/edit#gid=${gid}`;
|
|
3115
|
-
}
|
|
3116
|
-
function toFigmaEmbedUrl(url, opts) {
|
|
3117
|
-
if (url.includes("embed.figma.com")) return url;
|
|
3118
|
-
if (url.includes("figma.com/embed")) return url;
|
|
3119
|
-
const match = url.match(/figma\.com\/(design|file|proto|board|slides|deck)\/([a-zA-Z0-9]+)(?:\/([^?]*))?(\?.*)?$/);
|
|
3120
|
-
if (match) {
|
|
3121
|
-
const [, urlType, fileKey, titleSlug, queryString] = match;
|
|
3122
|
-
const isSlides = urlType === "slides" || urlType === "deck";
|
|
3123
|
-
const embedType = urlType === "proto" ? "proto" : isSlides ? _optionalChain([opts, 'optionalAccess', _45 => _45.slidesView]) === "browse" ? "slides" : "deck" : "design";
|
|
3124
|
-
const pathSuffix = titleSlug ? `/${titleSlug}` : "";
|
|
3125
|
-
const params = new URLSearchParams(_optionalChain([queryString, 'optionalAccess', _46 => _46.replace, 'call', _47 => _47(/^\?/, "")]) || "");
|
|
3126
|
-
if (!params.has("embed-host")) {
|
|
3127
|
-
params.set("embed-host", "flamingo");
|
|
3128
|
-
}
|
|
3129
|
-
const clientId = process.env.NEXT_PUBLIC_FIGMA_CLIENT_ID;
|
|
3130
|
-
if (clientId && !params.has("client-id")) {
|
|
3131
|
-
params.set("client-id", clientId);
|
|
3132
|
-
}
|
|
3133
|
-
return `https://embed.figma.com/${embedType}/${fileKey}${pathSuffix}?${params.toString()}`;
|
|
3134
|
-
}
|
|
3135
|
-
return `https://www.figma.com/embed?embed-host=flamingo&url=${encodeURIComponent(url)}`;
|
|
3136
|
-
}
|
|
3137
|
-
function isFigmaSlidesUrl(url) {
|
|
3138
|
-
if (!url) return false;
|
|
3139
|
-
return /(?:www\.|embed\.)?figma\.com\/(?:slides|deck)\/[a-zA-Z0-9]+/.test(url);
|
|
3140
|
-
}
|
|
3141
|
-
function toFigmaOriginalUrl(url) {
|
|
3142
|
-
if (url.includes("embed.figma.com")) {
|
|
3143
|
-
return url.replace("embed.figma.com", "www.figma.com").replace(/\?.*$/, "");
|
|
3144
|
-
}
|
|
3145
|
-
return url.replace(/\?.*$/, "");
|
|
3146
|
-
}
|
|
3147
|
-
function toClaudeMirrorPath(url, storageViewBaseUrl) {
|
|
3148
|
-
if (!url || !storageViewBaseUrl) return null;
|
|
3149
|
-
try {
|
|
3150
|
-
const u = new URL(url);
|
|
3151
|
-
const host = u.hostname.toLowerCase();
|
|
3152
|
-
const id = host === "claude.ai" && _optionalChain([/^\/(?:code\/artifact|public\/artifacts)\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[/?#]|$)/i, 'access', _48 => _48.exec, 'call', _49 => _49(
|
|
3153
|
-
u.pathname
|
|
3154
|
-
), 'optionalAccess', _50 => _50[1]]) || host === "claude.site" && _optionalChain([/^\/artifacts\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[/?#]|$)/i, 'access', _51 => _51.exec, 'call', _52 => _52(
|
|
3155
|
-
u.pathname
|
|
3156
|
-
), 'optionalAccess', _53 => _53[1]]) || null;
|
|
3157
|
-
return id ? `${storageViewBaseUrl.replace(/\/$/, "")}/design-briefs/${id.toLowerCase()}.html` : null;
|
|
3158
|
-
} catch (e6) {
|
|
3159
|
-
return null;
|
|
3160
|
-
}
|
|
3161
|
-
}
|
|
3162
|
-
function toClaudeEmbedUrl(url) {
|
|
3163
|
-
if (!url) return null;
|
|
3164
|
-
try {
|
|
3165
|
-
const u = new URL(url);
|
|
3166
|
-
const host = u.hostname.toLowerCase();
|
|
3167
|
-
const publicId = host === "claude.ai" && _optionalChain([/^\/public\/artifacts\/([\w-]+)(?:\/embed)?\/?$/, 'access', _54 => _54.exec, 'call', _55 => _55(u.pathname), 'optionalAccess', _56 => _56[1]]) || host === "claude.site" && _optionalChain([/^\/artifacts\/([\w-]+)(?:\/embed)?\/?$/, 'access', _57 => _57.exec, 'call', _58 => _58(u.pathname), 'optionalAccess', _59 => _59[1]]) || null;
|
|
3168
|
-
return publicId ? `https://claude.ai/public/artifacts/${publicId}/embed` : null;
|
|
3169
|
-
} catch (e7) {
|
|
3170
|
-
return null;
|
|
3171
|
-
}
|
|
3172
|
-
}
|
|
3173
|
-
|
|
3174
|
-
// src/hooks/use-claude-mirror-src.ts
|
|
3175
2667
|
async function revalidateMirror(mirrorPath) {
|
|
3176
2668
|
try {
|
|
3177
2669
|
const res = await fetch(`${mirrorPath}?revalidate=1`);
|
|
3178
2670
|
if (!res.ok) return null;
|
|
3179
2671
|
const body = await res.json();
|
|
3180
|
-
return _optionalChain([body, 'optionalAccess',
|
|
3181
|
-
} catch (
|
|
2672
|
+
return _optionalChain([body, 'optionalAccess', _41 => _41.updated]) ? String(_nullishCoalesce(body.version, () => ( Date.now()))) : null;
|
|
2673
|
+
} catch (e6) {
|
|
3182
2674
|
return null;
|
|
3183
2675
|
}
|
|
3184
2676
|
}
|
|
3185
2677
|
function useClaudeMirrorSrc(url) {
|
|
3186
2678
|
const endpoints = _chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, );
|
|
3187
|
-
const mirrorPath = toClaudeMirrorPath(url, _optionalChain([endpoints, 'optionalAccess',
|
|
2679
|
+
const mirrorPath = _chunkGQ7JJUITcjs.toClaudeMirrorPath.call(void 0, url, _optionalChain([endpoints, 'optionalAccess', _42 => _42.storageViewBaseUrl]));
|
|
3188
2680
|
const [resolved, setResolved] = _react.useState.call(void 0, null);
|
|
3189
2681
|
const state = resolved && resolved.key === mirrorPath ? resolved.value : { src: null, status: mirrorPath ? "probing" : "absent" };
|
|
3190
2682
|
_react.useEffect.call(void 0, () => {
|
|
@@ -3215,30 +2707,30 @@ function useClaudeMirrorSrc(url) {
|
|
|
3215
2707
|
|
|
3216
2708
|
// src/hooks/use-location-hash.ts
|
|
3217
2709
|
|
|
3218
|
-
var HASH_EVENTS = ["hashchange", "popstate"];
|
|
3219
|
-
function
|
|
2710
|
+
var HASH_EVENTS = ["hashchange", "popstate", _chunkGQ7JJUITcjs.LOCATION_HASH_SYNC_EVENT];
|
|
2711
|
+
function subscribe2(onChange) {
|
|
3220
2712
|
for (const event of HASH_EVENTS) window.addEventListener(event, onChange);
|
|
3221
2713
|
return () => {
|
|
3222
2714
|
for (const event of HASH_EVENTS) window.removeEventListener(event, onChange);
|
|
3223
2715
|
};
|
|
3224
2716
|
}
|
|
3225
2717
|
function readHash() {
|
|
3226
|
-
const raw =
|
|
2718
|
+
const raw = _chunkGQ7JJUITcjs.normalizeHashFragment.call(void 0, window.location.hash).replace(/^#/, "");
|
|
3227
2719
|
try {
|
|
3228
2720
|
return decodeURIComponent(raw);
|
|
3229
|
-
} catch (
|
|
2721
|
+
} catch (e7) {
|
|
3230
2722
|
return raw;
|
|
3231
2723
|
}
|
|
3232
2724
|
}
|
|
3233
2725
|
function useLocationHash() {
|
|
3234
|
-
return _react.useSyncExternalStore.call(void 0,
|
|
2726
|
+
return _react.useSyncExternalStore.call(void 0, subscribe2, readHash, () => "");
|
|
3235
2727
|
}
|
|
3236
2728
|
|
|
3237
2729
|
// src/hooks/use-scroll-to-hash.ts
|
|
3238
2730
|
|
|
3239
2731
|
var MAX_POLL_FRAMES = 60;
|
|
3240
2732
|
function useScrollToHash(readyDep = true, options) {
|
|
3241
|
-
const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2733
|
+
const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _43 => _43.headerOffset]), () => ( 0));
|
|
3242
2734
|
_react.useEffect.call(void 0, () => {
|
|
3243
2735
|
if (typeof window === "undefined") return void 0;
|
|
3244
2736
|
if (readyDep === null || readyDep === false) return void 0;
|
|
@@ -3250,15 +2742,16 @@ function useScrollToHash(readyDep = true, options) {
|
|
|
3250
2742
|
}
|
|
3251
2743
|
};
|
|
3252
2744
|
const tryScrollToHash = () => {
|
|
3253
|
-
|
|
2745
|
+
if (_chunkGQ7JJUITcjs.isScrollSyncedHash.call(void 0, )) return;
|
|
2746
|
+
const hash = _chunkGQ7JJUITcjs.normalizeHashFragment.call(void 0, window.location.hash).slice(1);
|
|
3254
2747
|
if (!hash) return;
|
|
3255
2748
|
cancelPoll();
|
|
3256
2749
|
let frames = 0;
|
|
3257
2750
|
const tick = () => {
|
|
3258
|
-
const el =
|
|
2751
|
+
const el = _chunkGQ7JJUITcjs.getHashTargetElement.call(void 0, hash);
|
|
3259
2752
|
if (el) {
|
|
3260
2753
|
rafId = null;
|
|
3261
|
-
|
|
2754
|
+
_chunkGQ7JJUITcjs.scrollElementIntoView.call(void 0, el, { headerOffset });
|
|
3262
2755
|
return;
|
|
3263
2756
|
}
|
|
3264
2757
|
if (frames++ < MAX_POLL_FRAMES) {
|
|
@@ -3280,74 +2773,14 @@ function useScrollToHash(readyDep = true, options) {
|
|
|
3280
2773
|
|
|
3281
2774
|
// src/hooks/use-humanity-signals.ts
|
|
3282
2775
|
|
|
3283
|
-
|
|
3284
|
-
// src/utils/humanity-signals.ts
|
|
3285
|
-
var HONEYPOT_FIELD = "form_extra_note";
|
|
3286
|
-
var ELAPSED_MS_FIELD = "form_elapsed_ms";
|
|
3287
|
-
var DEFAULT_MIN_FILL_MS = 700;
|
|
3288
|
-
var HUMANITY_SIGNAL_KEYS = [HONEYPOT_FIELD, ELAPSED_MS_FIELD];
|
|
3289
|
-
var isHumanitySignalKey = (key) => HUMANITY_SIGNAL_KEYS.includes(key);
|
|
3290
|
-
function extractHumanitySignals(body) {
|
|
3291
|
-
const b = _nullishCoalesce(body, () => ( {}));
|
|
3292
|
-
const rawHp = b[HONEYPOT_FIELD];
|
|
3293
|
-
const honeypot = rawHp == null ? "" : typeof rawHp === "string" ? rawHp : _nullishCoalesce(JSON.stringify(rawHp), () => ( String(rawHp)));
|
|
3294
|
-
const rawMs = b[ELAPSED_MS_FIELD];
|
|
3295
|
-
const elapsedMs = typeof rawMs === "number" && Number.isFinite(rawMs) ? rawMs : null;
|
|
3296
|
-
return { honeypot, elapsedMs };
|
|
3297
|
-
}
|
|
3298
|
-
var normalizeForCopyMatch = (s) => s.normalize("NFKC").trim().toLowerCase();
|
|
3299
|
-
var digitsOf = (s) => s.replace(/\D/g, "");
|
|
3300
|
-
var MIN_COPY_MATCH_LENGTH = 2;
|
|
3301
|
-
var MIN_PHONE_DIGITS = 7;
|
|
3302
|
-
var phoneDigitsMatch = (a, b) => a.length >= MIN_PHONE_DIGITS && b.length >= MIN_PHONE_DIGITS && (a.endsWith(b) || b.endsWith(a));
|
|
3303
|
-
function findHoneypotCopySource(body, honeypot) {
|
|
3304
|
-
const hpNorm = normalizeForCopyMatch(honeypot);
|
|
3305
|
-
const hpDigits = digitsOf(honeypot);
|
|
3306
|
-
const phoneCandidate = hpDigits.length >= MIN_PHONE_DIGITS;
|
|
3307
|
-
if (hpNorm.length < MIN_COPY_MATCH_LENGTH && !phoneCandidate) return null;
|
|
3308
|
-
const matches = (value) => {
|
|
3309
|
-
if (typeof value !== "string" || value.trim() === "") return false;
|
|
3310
|
-
if (normalizeForCopyMatch(value) === hpNorm) return true;
|
|
3311
|
-
return phoneCandidate && phoneDigitsMatch(digitsOf(value), hpDigits);
|
|
3312
|
-
};
|
|
3313
|
-
const matchInArray = (value) => Array.isArray(value) && value.some(matches);
|
|
3314
|
-
const b = _nullishCoalesce(body, () => ( {}));
|
|
3315
|
-
for (const [key, value] of Object.entries(b)) {
|
|
3316
|
-
if (isHumanitySignalKey(key)) continue;
|
|
3317
|
-
if (matches(value)) return key;
|
|
3318
|
-
if (matchInArray(value)) return `${key}[]`;
|
|
3319
|
-
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
3320
|
-
for (const [nestedKey, nested] of Object.entries(value)) {
|
|
3321
|
-
if (matches(nested)) return `${key}.${nestedKey}`;
|
|
3322
|
-
if (matchInArray(nested)) return `${key}.${nestedKey}[]`;
|
|
3323
|
-
}
|
|
3324
|
-
}
|
|
3325
|
-
}
|
|
3326
|
-
return null;
|
|
3327
|
-
}
|
|
3328
|
-
function evaluateHumanitySignals(body, opts) {
|
|
3329
|
-
const { honeypot, elapsedMs } = extractHumanitySignals(body);
|
|
3330
|
-
const diagnostics = {
|
|
3331
|
-
honeypotLength: honeypot.length,
|
|
3332
|
-
timingAffirmed: elapsedMs !== null && elapsedMs >= opts.minFillMs
|
|
3333
|
-
};
|
|
3334
|
-
const filled = honeypot.trim() !== "";
|
|
3335
|
-
const sourceField = filled ? findHoneypotCopySource(body, honeypot) : null;
|
|
3336
|
-
if (filled && sourceField === null) return { ...diagnostics, ok: false, reason: "honeypot" };
|
|
3337
|
-
if (elapsedMs !== null && elapsedMs < opts.minFillMs) return { ...diagnostics, ok: false, reason: "too_fast" };
|
|
3338
|
-
return sourceField !== null ? { ...diagnostics, ok: true, note: "honeypot_autofill", sourceField } : { ...diagnostics, ok: true };
|
|
3339
|
-
}
|
|
3340
|
-
var splitCsvEnv = (s) => _nullishCoalesce(_optionalChain([s, 'optionalAccess', _63 => _63.split, 'call', _64 => _64(","), 'access', _65 => _65.map, 'call', _66 => _66((t) => t.trim()), 'access', _67 => _67.filter, 'call', _68 => _68(Boolean)]), () => ( []));
|
|
3341
|
-
|
|
3342
|
-
// src/hooks/use-humanity-signals.ts
|
|
3343
2776
|
function useHumanitySignals() {
|
|
3344
2777
|
const ref = _react.useRef.call(void 0, null);
|
|
3345
2778
|
const [mountedAt] = _react.useState.call(void 0, () => typeof performance !== "undefined" ? performance.now() : 0);
|
|
3346
2779
|
const startedAtRef = _react.useRef.call(void 0, mountedAt);
|
|
3347
2780
|
const getSignals = _react.useCallback.call(void 0,
|
|
3348
2781
|
() => ({
|
|
3349
|
-
[HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access',
|
|
3350
|
-
[ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - startedAtRef.current) : 0
|
|
2782
|
+
[_chunkGQ7JJUITcjs.HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _44 => _44.current, 'optionalAccess', _45 => _45.value]), () => ( "")),
|
|
2783
|
+
[_chunkGQ7JJUITcjs.ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - startedAtRef.current) : 0
|
|
3351
2784
|
}),
|
|
3352
2785
|
[]
|
|
3353
2786
|
);
|
|
@@ -3355,166 +2788,14 @@ function useHumanitySignals() {
|
|
|
3355
2788
|
if (ref.current) ref.current.value = "";
|
|
3356
2789
|
if (typeof performance !== "undefined") startedAtRef.current = performance.now();
|
|
3357
2790
|
}, []);
|
|
3358
|
-
return { honeypotInputProps: { ref, name: HONEYPOT_FIELD }, getSignals, resetSignals };
|
|
2791
|
+
return { honeypotInputProps: { ref, name: _chunkGQ7JJUITcjs.HONEYPOT_FIELD }, getSignals, resetSignals };
|
|
3359
2792
|
}
|
|
3360
2793
|
|
|
3361
2794
|
// src/hooks/use-form-rescue.ts
|
|
3362
2795
|
|
|
3363
|
-
|
|
3364
|
-
// src/utils/form-rescue.ts
|
|
3365
|
-
var FORM_ID_PATTERN = /^[a-z][a-z0-9_]{1,47}$/;
|
|
3366
|
-
var definitions = /* @__PURE__ */ new Map();
|
|
3367
|
-
function defineRescueForm(definition) {
|
|
3368
|
-
if (!FORM_ID_PATTERN.test(definition.id)) throw new Error(`[form-rescue] invalid form id "${definition.id}"`);
|
|
3369
|
-
const existing = definitions.get(definition.id);
|
|
3370
|
-
if (existing) {
|
|
3371
|
-
if (existing.label !== definition.label) {
|
|
3372
|
-
throw new Error(`[form-rescue] form id "${definition.id}" is already defined as "${existing.label}"`);
|
|
3373
|
-
}
|
|
3374
|
-
return existing;
|
|
3375
|
-
}
|
|
3376
|
-
const frozen = Object.freeze({ id: definition.id, label: definition.label });
|
|
3377
|
-
definitions.set(frozen.id, frozen);
|
|
3378
|
-
return frozen;
|
|
3379
|
-
}
|
|
3380
|
-
function getRescueForm(id) {
|
|
3381
|
-
return typeof id === "string" ? _nullishCoalesce(definitions.get(id), () => ( null)) : null;
|
|
3382
|
-
}
|
|
3383
|
-
function listRescueForms() {
|
|
3384
|
-
return [...definitions.values()];
|
|
3385
|
-
}
|
|
3386
|
-
var RESCUE_FORMS = {
|
|
3387
|
-
contact: defineRescueForm({ id: "contact", label: "Contact form" }),
|
|
3388
|
-
caseStudyPitch: defineRescueForm({ id: "case_study_pitch", label: "Case study pitch" }),
|
|
3389
|
-
dataRoomRequest: defineRescueForm({ id: "data_room_request", label: "Data room request" }),
|
|
3390
|
-
trustCenterRequest: defineRescueForm({ id: "trust_center_request", label: "Trust Center document request" }),
|
|
3391
|
-
meetingBooking: defineRescueForm({ id: "meeting_booking", label: "Meeting booking" }),
|
|
3392
|
-
waitlist: defineRescueForm({ id: "waitlist", label: "Waitlist" })
|
|
3393
|
-
};
|
|
3394
|
-
var FORM_RESCUE_VALUE_FIELDS = [
|
|
3395
|
-
"email",
|
|
3396
|
-
"name",
|
|
3397
|
-
"firstName",
|
|
3398
|
-
"lastName",
|
|
3399
|
-
"company",
|
|
3400
|
-
"jobtitle",
|
|
3401
|
-
"companySize",
|
|
3402
|
-
"linkedin_url"
|
|
3403
|
-
];
|
|
3404
|
-
var EXCLUDED_FIELD_PATTERN = /pass(word|code)?|card|cvv|cvc|ssn|social.?security|iban|bank|routing|token|secret|otp|pin$/i;
|
|
3405
|
-
function isExcludedRescueField(name) {
|
|
3406
|
-
return EXCLUDED_FIELD_PATTERN.test(name);
|
|
3407
|
-
}
|
|
3408
|
-
var FORM_RESCUE_MAX_VALUE_CHARS = 200;
|
|
3409
|
-
var FORM_RESCUE_DEBOUNCE_MS = 1500;
|
|
3410
|
-
var FORM_RESCUE_MAX_FIELDS = 40;
|
|
3411
|
-
var FORM_RESCUE_ATTEMPT_FIELD = "form_attempt_id";
|
|
3412
|
-
var FORM_RESCUE_RESUME_FIELD = "form_resume_token";
|
|
3413
|
-
var FORM_RESCUE_SUBMIT_KEYS = [FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_RESUME_FIELD];
|
|
3414
|
-
var FORM_RESCUE_RESUME_PARAM = "resume";
|
|
3415
|
-
var RESUME_TOKEN_PATTERN = /^[A-Za-z0-9_-]{16,128}$/;
|
|
3416
|
-
function isResumeToken(value) {
|
|
3417
|
-
return typeof value === "string" && RESUME_TOKEN_PATTERN.test(value);
|
|
3418
|
-
}
|
|
3419
|
-
var FORM_DRAFT_STATUSES = ["started", "rescuable", "rescued", "submitted"];
|
|
3420
|
-
var FORM_RESCUE_SKIP_REASONS = {
|
|
3421
|
-
finishedElsewhere: "finished_elsewhere",
|
|
3422
|
-
alreadyRescued: "already_rescued",
|
|
3423
|
-
internal: "internal_email"
|
|
3424
|
-
};
|
|
3425
|
-
var EMAIL_PATTERN = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
|
|
3426
|
-
function isRescueEmail(value) {
|
|
3427
|
-
return typeof value === "string" && value.length <= FORM_RESCUE_MAX_VALUE_CHARS && EMAIL_PATTERN.test(value.trim());
|
|
3428
|
-
}
|
|
3429
|
-
var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3430
|
-
function isFormAttemptId(value) {
|
|
3431
|
-
return typeof value === "string" && UUID_PATTERN.test(value);
|
|
3432
|
-
}
|
|
3433
|
-
function isFilled(value) {
|
|
3434
|
-
if (value == null) return false;
|
|
3435
|
-
if (typeof value === "string") return value.trim().length > 0;
|
|
3436
|
-
if (typeof value === "boolean") return value;
|
|
3437
|
-
if (Array.isArray(value)) return value.length > 0;
|
|
3438
|
-
if (typeof value === "object") return Object.values(value).some(isFilled);
|
|
3439
|
-
return true;
|
|
3440
|
-
}
|
|
3441
|
-
function sanitizeRescueValues(values) {
|
|
3442
|
-
const out = {};
|
|
3443
|
-
if (!values || typeof values !== "object") return out;
|
|
3444
|
-
for (const key of FORM_RESCUE_VALUE_FIELDS) {
|
|
3445
|
-
if (isExcludedRescueField(key)) continue;
|
|
3446
|
-
const raw = values[key];
|
|
3447
|
-
if (typeof raw !== "string") continue;
|
|
3448
|
-
const trimmed = raw.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
|
|
3449
|
-
if (trimmed) out[key] = trimmed;
|
|
3450
|
-
}
|
|
3451
|
-
return out;
|
|
3452
|
-
}
|
|
3453
|
-
function filledRescueFields(values, fieldNames) {
|
|
3454
|
-
return fieldNames.filter((name) => !isExcludedRescueField(name) && isFilled(values[name])).slice(0, FORM_RESCUE_MAX_FIELDS);
|
|
3455
|
-
}
|
|
3456
|
-
function rescueCompletionPct(filledCount, totalCount) {
|
|
3457
|
-
if (totalCount <= 0) return 0;
|
|
3458
|
-
return Math.max(0, Math.min(100, Math.round(filledCount / totalCount * 100)));
|
|
3459
|
-
}
|
|
3460
|
-
function sanitizeRescueFieldName(value) {
|
|
3461
|
-
if (typeof value !== "string") return null;
|
|
3462
|
-
const trimmed = value.trim();
|
|
3463
|
-
return /^[A-Za-z0-9_.-]{1,64}$/.test(trimmed) && !isExcludedRescueField(trimmed) ? trimmed : null;
|
|
3464
|
-
}
|
|
3465
|
-
var UTM_KEYS = ["source", "medium", "campaign", "content", "term"];
|
|
3466
|
-
var MAX_SOURCE_PATH_CHARS = 500;
|
|
3467
|
-
function parseFormDraftSaveRequest(body) {
|
|
3468
|
-
const form = getRescueForm(body.form_id);
|
|
3469
|
-
if (!isFormAttemptId(body.attempt_id) || !form) return null;
|
|
3470
|
-
const rawValues = body.values && typeof body.values === "object" ? body.values : {};
|
|
3471
|
-
const values = sanitizeRescueValues(rawValues);
|
|
3472
|
-
const fieldsFilled = (Array.isArray(body.fields_filled) ? body.fields_filled : []).map(sanitizeRescueFieldName).filter((name) => name !== null).slice(0, FORM_RESCUE_MAX_FIELDS);
|
|
3473
|
-
const path = typeof body.source_path === "string" ? body.source_path : "";
|
|
3474
|
-
const utmIn = body.utm && typeof body.utm === "object" ? body.utm : {};
|
|
3475
|
-
const utm = {};
|
|
3476
|
-
for (const key of UTM_KEYS) {
|
|
3477
|
-
const value = utmIn[key];
|
|
3478
|
-
if (typeof value === "string" && value.trim()) utm[key] = value.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
|
|
3479
|
-
}
|
|
3480
|
-
return {
|
|
3481
|
-
request: {
|
|
3482
|
-
attempt_id: body.attempt_id,
|
|
3483
|
-
form_id: form.id,
|
|
3484
|
-
values,
|
|
3485
|
-
fields_filled: fieldsFilled,
|
|
3486
|
-
last_field: sanitizeRescueFieldName(body.last_field),
|
|
3487
|
-
completion_pct: typeof body.completion_pct === "number" ? rescueCompletionPct(body.completion_pct, 100) : 0,
|
|
3488
|
-
// Same-site only: a path, never a scheme-relative or absolute URL.
|
|
3489
|
-
source_path: path.startsWith("/") && !path.startsWith("//") ? path.slice(0, MAX_SOURCE_PATH_CHARS) : "",
|
|
3490
|
-
...Object.keys(utm).length ? { utm } : {},
|
|
3491
|
-
...isResumeToken(body.resume_token) ? { resume_token: body.resume_token } : {}
|
|
3492
|
-
},
|
|
3493
|
-
dropped: Object.keys(rawValues).filter((key) => !(key in values))
|
|
3494
|
-
};
|
|
3495
|
-
}
|
|
3496
|
-
var FORM_RESCUE_EVENTS = {
|
|
3497
|
-
started: "form_started",
|
|
3498
|
-
progress: "form_progress",
|
|
3499
|
-
leadCaptured: "form_lead_captured",
|
|
3500
|
-
abandoned: "form_abandoned",
|
|
3501
|
-
submitted: "form_submitted",
|
|
3502
|
-
rescued: "form_rescued",
|
|
3503
|
-
resumed: "form_resumed"
|
|
3504
|
-
};
|
|
3505
|
-
function captureFormRescueEvent(event, properties) {
|
|
3506
|
-
try {
|
|
3507
|
-
if (typeof window === "undefined") return;
|
|
3508
|
-
const ph = window.posthog;
|
|
3509
|
-
if (typeof _optionalChain([ph, 'optionalAccess', _71 => _71.capture]) === "function") ph.capture(event, properties);
|
|
3510
|
-
} catch (e10) {
|
|
3511
|
-
}
|
|
3512
|
-
}
|
|
3513
|
-
|
|
3514
|
-
// src/hooks/use-form-rescue.ts
|
|
3515
2796
|
var LOCAL_DRAFT_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
3516
2797
|
var STORAGE_PREFIX = "form-rescue:v1:";
|
|
3517
|
-
var
|
|
2798
|
+
var UTM_KEYS = ["source", "medium", "campaign", "content", "term"];
|
|
3518
2799
|
function newAttemptId() {
|
|
3519
2800
|
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") return crypto.randomUUID();
|
|
3520
2801
|
const bytes = new Uint8Array(16);
|
|
@@ -3529,31 +2810,31 @@ function readLocalDraft(formId) {
|
|
|
3529
2810
|
const raw = window.localStorage.getItem(STORAGE_PREFIX + formId);
|
|
3530
2811
|
if (!raw) return null;
|
|
3531
2812
|
const parsed = JSON.parse(raw);
|
|
3532
|
-
if (!isFormAttemptId(parsed.attemptId) || typeof parsed.savedAt !== "number") return null;
|
|
2813
|
+
if (!_chunkGQ7JJUITcjs.isFormAttemptId.call(void 0, parsed.attemptId) || typeof parsed.savedAt !== "number") return null;
|
|
3533
2814
|
if (Date.now() - parsed.savedAt > LOCAL_DRAFT_TTL_MS) return null;
|
|
3534
|
-
return { attemptId: parsed.attemptId, values: sanitizeRescueValues(parsed.values), savedAt: parsed.savedAt };
|
|
3535
|
-
} catch (
|
|
2815
|
+
return { attemptId: parsed.attemptId, values: _chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, parsed.values), savedAt: parsed.savedAt };
|
|
2816
|
+
} catch (e8) {
|
|
3536
2817
|
return null;
|
|
3537
2818
|
}
|
|
3538
2819
|
}
|
|
3539
2820
|
function writeLocalDraft(formId, draft) {
|
|
3540
2821
|
try {
|
|
3541
2822
|
window.localStorage.setItem(STORAGE_PREFIX + formId, JSON.stringify(draft));
|
|
3542
|
-
} catch (
|
|
2823
|
+
} catch (e9) {
|
|
3543
2824
|
}
|
|
3544
2825
|
}
|
|
3545
2826
|
function clearLocalDraft(formId) {
|
|
3546
2827
|
try {
|
|
3547
2828
|
window.localStorage.removeItem(STORAGE_PREFIX + formId);
|
|
3548
|
-
} catch (
|
|
2829
|
+
} catch (e10) {
|
|
3549
2830
|
}
|
|
3550
2831
|
}
|
|
3551
2832
|
function completeFormRescue(form, attemptId) {
|
|
3552
2833
|
if (!form || typeof window === "undefined") return;
|
|
3553
2834
|
const local = readLocalDraft(form.id);
|
|
3554
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.submitted, {
|
|
2835
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.submitted, {
|
|
3555
2836
|
form_id: form.id,
|
|
3556
|
-
attempt_id: isFormAttemptId(attemptId) ? attemptId : _nullishCoalesce(_optionalChain([local, 'optionalAccess',
|
|
2837
|
+
attempt_id: _chunkGQ7JJUITcjs.isFormAttemptId.call(void 0, attemptId) ? attemptId : _nullishCoalesce(_optionalChain([local, 'optionalAccess', _46 => _46.attemptId]), () => ( null))
|
|
3557
2838
|
});
|
|
3558
2839
|
clearLocalDraft(form.id);
|
|
3559
2840
|
}
|
|
@@ -3561,18 +2842,18 @@ function readUtm() {
|
|
|
3561
2842
|
try {
|
|
3562
2843
|
const params = new URLSearchParams(window.location.search);
|
|
3563
2844
|
const utm = {};
|
|
3564
|
-
for (const key of
|
|
2845
|
+
for (const key of UTM_KEYS) {
|
|
3565
2846
|
const value = params.get(`utm_${key}`);
|
|
3566
2847
|
if (value) utm[key] = value.slice(0, 200);
|
|
3567
2848
|
}
|
|
3568
2849
|
return Object.keys(utm).length ? utm : void 0;
|
|
3569
|
-
} catch (
|
|
2850
|
+
} catch (e11) {
|
|
3570
2851
|
return void 0;
|
|
3571
2852
|
}
|
|
3572
2853
|
}
|
|
3573
2854
|
function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
3574
|
-
const draftsUrl = _optionalChain([_chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, ), 'optionalAccess',
|
|
3575
|
-
const formId = _nullishCoalesce(_optionalChain([form, 'optionalAccess',
|
|
2855
|
+
const draftsUrl = _optionalChain([_chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, ), 'optionalAccess', _47 => _47.formDraftsUrl]);
|
|
2856
|
+
const formId = _nullishCoalesce(_optionalChain([form, 'optionalAccess', _48 => _48.id]), () => ( null));
|
|
3576
2857
|
const attemptIdRef = _react.useRef.call(void 0, null);
|
|
3577
2858
|
const resumeTokenRef = _react.useRef.call(void 0, null);
|
|
3578
2859
|
const latestRef = _react.useRef.call(void 0, null);
|
|
@@ -3606,15 +2887,15 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
|
3606
2887
|
...resumeTokenRef.current ? { resume_token: resumeTokenRef.current } : {}
|
|
3607
2888
|
};
|
|
3608
2889
|
try {
|
|
3609
|
-
void
|
|
2890
|
+
void _chunkAUMKE74Mcjs.contentFetch.call(void 0, draftsUrl, {
|
|
3610
2891
|
method: "POST",
|
|
3611
2892
|
headers: { "Content-Type": "application/json" },
|
|
3612
|
-
body: JSON.stringify({ ...body, ..._nullishCoalesce(_optionalChain([getSignalsRef, 'access',
|
|
2893
|
+
body: JSON.stringify({ ...body, ..._nullishCoalesce(_optionalChain([getSignalsRef, 'access', _49 => _49.current, 'optionalCall', _50 => _50()]), () => ( {})) }),
|
|
3613
2894
|
keepalive
|
|
3614
2895
|
}).catch(() => void 0);
|
|
3615
|
-
} catch (
|
|
2896
|
+
} catch (e12) {
|
|
3616
2897
|
}
|
|
3617
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.progress, {
|
|
2898
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.progress, {
|
|
3618
2899
|
form_id: formId,
|
|
3619
2900
|
attempt_id: attemptId(),
|
|
3620
2901
|
fields_filled: body.fields_filled,
|
|
@@ -3627,23 +2908,23 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
|
3627
2908
|
_react.useEffect.call(void 0, () => {
|
|
3628
2909
|
if (!formId || typeof window === "undefined") return void 0;
|
|
3629
2910
|
let cancelled = false;
|
|
3630
|
-
const token = new URLSearchParams(window.location.search).get(FORM_RESCUE_RESUME_PARAM);
|
|
2911
|
+
const token = new URLSearchParams(window.location.search).get(_chunkGQ7JJUITcjs.FORM_RESCUE_RESUME_PARAM);
|
|
3631
2912
|
const restoreLocal = () => {
|
|
3632
2913
|
const local = readLocalDraft(formId);
|
|
3633
2914
|
if (!local) return;
|
|
3634
2915
|
attemptIdRef.current = local.attemptId;
|
|
3635
|
-
if (Object.keys(local.values).length) _optionalChain([onRestoreRef, 'access',
|
|
2916
|
+
if (Object.keys(local.values).length) _optionalChain([onRestoreRef, 'access', _51 => _51.current, 'optionalCall', _52 => _52(local.values)]);
|
|
3636
2917
|
};
|
|
3637
|
-
if (isResumeToken(token) && draftsUrl) {
|
|
3638
|
-
|
|
2918
|
+
if (_chunkGQ7JJUITcjs.isResumeToken.call(void 0, token) && draftsUrl) {
|
|
2919
|
+
_chunkAUMKE74Mcjs.contentFetch.call(void 0, `${draftsUrl}/resume/${encodeURIComponent(token)}`).then(async (res) => res.ok ? await res.json() : null).then((data) => {
|
|
3639
2920
|
if (cancelled) return;
|
|
3640
2921
|
if (!data || data.form_id !== formId) {
|
|
3641
2922
|
restoreLocal();
|
|
3642
2923
|
return;
|
|
3643
2924
|
}
|
|
3644
2925
|
resumeTokenRef.current = token;
|
|
3645
|
-
_optionalChain([onRestoreRef, 'access',
|
|
3646
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.resumed, { form_id: formId, attempt_id: attemptId() });
|
|
2926
|
+
_optionalChain([onRestoreRef, 'access', _53 => _53.current, 'optionalCall', _54 => _54(_chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, data.values))]);
|
|
2927
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.resumed, { form_id: formId, attempt_id: attemptId() });
|
|
3647
2928
|
}).catch(() => {
|
|
3648
2929
|
if (!cancelled) restoreLocal();
|
|
3649
2930
|
});
|
|
@@ -3663,11 +2944,11 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
|
3663
2944
|
timerRef.current = null;
|
|
3664
2945
|
}
|
|
3665
2946
|
send(true);
|
|
3666
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.abandoned, {
|
|
2947
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.abandoned, {
|
|
3667
2948
|
form_id: formId,
|
|
3668
2949
|
attempt_id: attemptId(),
|
|
3669
|
-
last_field: _nullishCoalesce(_optionalChain([latestRef, 'access',
|
|
3670
|
-
completion_pct: _nullishCoalesce(_optionalChain([latestRef, 'access',
|
|
2950
|
+
last_field: _nullishCoalesce(_optionalChain([latestRef, 'access', _55 => _55.current, 'optionalAccess', _56 => _56.last_field]), () => ( null)),
|
|
2951
|
+
completion_pct: _nullishCoalesce(_optionalChain([latestRef, 'access', _57 => _57.current, 'optionalAccess', _58 => _58.completion_pct]), () => ( 0))
|
|
3671
2952
|
});
|
|
3672
2953
|
};
|
|
3673
2954
|
const onVisibility = () => {
|
|
@@ -3687,22 +2968,22 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
|
3687
2968
|
const names = fieldNamesRef.current;
|
|
3688
2969
|
const visible = {};
|
|
3689
2970
|
for (const name of names) visible[name] = values[name];
|
|
3690
|
-
const filled = filledRescueFields(visible, names);
|
|
2971
|
+
const filled = _chunkGQ7JJUITcjs.filledRescueFields.call(void 0, visible, names);
|
|
3691
2972
|
if (!filled.length) return;
|
|
3692
2973
|
if (!startedRef.current) {
|
|
3693
2974
|
startedRef.current = true;
|
|
3694
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.started, { form_id: formId, attempt_id: attemptId() });
|
|
2975
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.started, { form_id: formId, attempt_id: attemptId() });
|
|
3695
2976
|
}
|
|
3696
|
-
const clean = sanitizeRescueValues(visible);
|
|
3697
|
-
if (!leadCapturedRef.current && isRescueEmail(clean.email)) {
|
|
2977
|
+
const clean = _chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, visible);
|
|
2978
|
+
if (!leadCapturedRef.current && _chunkGQ7JJUITcjs.isRescueEmail.call(void 0, clean.email)) {
|
|
3698
2979
|
leadCapturedRef.current = true;
|
|
3699
|
-
captureFormRescueEvent(FORM_RESCUE_EVENTS.leadCaptured, { form_id: formId, attempt_id: attemptId() });
|
|
2980
|
+
_chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.leadCaptured, { form_id: formId, attempt_id: attemptId() });
|
|
3700
2981
|
}
|
|
3701
2982
|
latestRef.current = {
|
|
3702
2983
|
values: clean,
|
|
3703
2984
|
fields_filled: filled,
|
|
3704
|
-
last_field: sanitizeRescueFieldName(lastField),
|
|
3705
|
-
completion_pct: rescueCompletionPct(filled.length, names.length)
|
|
2985
|
+
last_field: _chunkGQ7JJUITcjs.sanitizeRescueFieldName.call(void 0, lastField),
|
|
2986
|
+
completion_pct: _chunkGQ7JJUITcjs.rescueCompletionPct.call(void 0, filled.length, names.length)
|
|
3706
2987
|
};
|
|
3707
2988
|
dirtyRef.current = true;
|
|
3708
2989
|
writeLocalDraft(formId, { attemptId: attemptId(), values: clean, savedAt: Date.now() });
|
|
@@ -3710,15 +2991,15 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
|
|
|
3710
2991
|
timerRef.current = setTimeout(() => {
|
|
3711
2992
|
timerRef.current = null;
|
|
3712
2993
|
send(false);
|
|
3713
|
-
}, FORM_RESCUE_DEBOUNCE_MS);
|
|
2994
|
+
}, _chunkGQ7JJUITcjs.FORM_RESCUE_DEBOUNCE_MS);
|
|
3714
2995
|
},
|
|
3715
2996
|
[attemptId, formId, send]
|
|
3716
2997
|
);
|
|
3717
2998
|
const submitFields = _react.useCallback.call(void 0, () => {
|
|
3718
2999
|
if (!formId) return {};
|
|
3719
3000
|
return {
|
|
3720
|
-
[FORM_RESCUE_ATTEMPT_FIELD]: attemptId(),
|
|
3721
|
-
...resumeTokenRef.current ? { [FORM_RESCUE_RESUME_FIELD]: resumeTokenRef.current } : {}
|
|
3001
|
+
[_chunkGQ7JJUITcjs.FORM_RESCUE_ATTEMPT_FIELD]: attemptId(),
|
|
3002
|
+
...resumeTokenRef.current ? { [_chunkGQ7JJUITcjs.FORM_RESCUE_RESUME_FIELD]: resumeTokenRef.current } : {}
|
|
3722
3003
|
};
|
|
3723
3004
|
}, [attemptId, formId]);
|
|
3724
3005
|
const complete = _react.useCallback.call(void 0, () => {
|
|
@@ -3839,63 +3120,4 @@ function useRescuedForm(form, { rescue, fields, getSignals, fieldPath }) {
|
|
|
3839
3120
|
|
|
3840
3121
|
|
|
3841
3122
|
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
exports.useAutoLimitTags = useAutoLimitTags; exports.useKeyboardCollisionPadding = useKeyboardCollisionPadding; exports.useDeferredError = useDeferredError; exports.DRAG_AND_DROP_MEDIA_QUERY = DRAG_AND_DROP_MEDIA_QUERY; exports.useDragAndDropEnabled = useDragAndDropEnabled; exports.useFocusTrap = useFocusTrap; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useLocalStorage = useLocalStorage; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.resolveActiveSection = resolveActiveSection; exports.useActiveSection = useActiveSection; exports.useNavMenus = useNavMenus; exports.DESKTOP_OSES = DESKTOP_OSES; exports.detectVisitorOs = detectVisitorOs; exports.desktopOsOf = desktopOsOf; exports.detectDesktopOs = detectDesktopOs; exports.usesCommandKey = usesCommandKey; exports.shortcutLabel = shortcutLabel; exports.useVisitorOs = useVisitorOs; exports.usePreventScroll = _overlays.usePreventScroll; exports.platformIcons = platformIcons; exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions; exports.getPlatformIcon = getPlatformIcon; exports.getSmallPlatformIcon = getSmallPlatformIcon; exports.getPlatformIconComponent = getPlatformIconComponent; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.useContactSubmission = useContactSubmission; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useScenarioPlayer = useScenarioPlayer; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.toGoogleSheetsEmbedUrl = toGoogleSheetsEmbedUrl; exports.toGoogleSheetsOriginalUrl = toGoogleSheetsOriginalUrl; exports.toFigmaEmbedUrl = toFigmaEmbedUrl; exports.isFigmaSlidesUrl = isFigmaSlidesUrl; exports.toFigmaOriginalUrl = toFigmaOriginalUrl; exports.toClaudeMirrorPath = toClaudeMirrorPath; exports.toClaudeEmbedUrl = toClaudeEmbedUrl; exports.useClaudeMirrorSrc = useClaudeMirrorSrc; exports.useLocationHash = useLocationHash; exports.useScrollToHash = useScrollToHash; exports.HONEYPOT_FIELD = HONEYPOT_FIELD; exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD; exports.DEFAULT_MIN_FILL_MS = DEFAULT_MIN_FILL_MS; exports.HUMANITY_SIGNAL_KEYS = HUMANITY_SIGNAL_KEYS; exports.isHumanitySignalKey = isHumanitySignalKey; exports.extractHumanitySignals = extractHumanitySignals; exports.findHoneypotCopySource = findHoneypotCopySource; exports.evaluateHumanitySignals = evaluateHumanitySignals; exports.splitCsvEnv = splitCsvEnv; exports.useHumanitySignals = useHumanitySignals; exports.defineRescueForm = defineRescueForm; exports.getRescueForm = getRescueForm; exports.listRescueForms = listRescueForms; exports.RESCUE_FORMS = RESCUE_FORMS; exports.FORM_RESCUE_VALUE_FIELDS = FORM_RESCUE_VALUE_FIELDS; exports.isExcludedRescueField = isExcludedRescueField; exports.FORM_RESCUE_MAX_VALUE_CHARS = FORM_RESCUE_MAX_VALUE_CHARS; exports.FORM_RESCUE_DEBOUNCE_MS = FORM_RESCUE_DEBOUNCE_MS; exports.FORM_RESCUE_MAX_FIELDS = FORM_RESCUE_MAX_FIELDS; exports.FORM_RESCUE_ATTEMPT_FIELD = FORM_RESCUE_ATTEMPT_FIELD; exports.FORM_RESCUE_RESUME_FIELD = FORM_RESCUE_RESUME_FIELD; exports.FORM_RESCUE_SUBMIT_KEYS = FORM_RESCUE_SUBMIT_KEYS; exports.FORM_RESCUE_RESUME_PARAM = FORM_RESCUE_RESUME_PARAM; exports.isResumeToken = isResumeToken; exports.FORM_DRAFT_STATUSES = FORM_DRAFT_STATUSES; exports.FORM_RESCUE_SKIP_REASONS = FORM_RESCUE_SKIP_REASONS; exports.isRescueEmail = isRescueEmail; exports.isFormAttemptId = isFormAttemptId; exports.sanitizeRescueValues = sanitizeRescueValues; exports.filledRescueFields = filledRescueFields; exports.rescueCompletionPct = rescueCompletionPct; exports.sanitizeRescueFieldName = sanitizeRescueFieldName; exports.parseFormDraftSaveRequest = parseFormDraftSaveRequest; exports.FORM_RESCUE_EVENTS = FORM_RESCUE_EVENTS; exports.captureFormRescueEvent = captureFormRescueEvent; exports.completeFormRescue = completeFormRescue; exports.useFormRescue = useFormRescue; exports.useRescuedForm = useRescuedForm;
|
|
3123
|
+
exports.useAutoLimitTags = useAutoLimitTags; exports.useKeyboardCollisionPadding = useKeyboardCollisionPadding; exports.useDeferredError = useDeferredError; exports.useFocusTrap = useFocusTrap; exports.useStickyToolbar = useStickyToolbar; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.resolveActiveSection = resolveActiveSection; exports.useActiveSection = useActiveSection; exports.useNavMenus = useNavMenus; exports.usePreventScroll = _overlays.usePreventScroll; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.useContactSubmission = useContactSubmission; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useScenarioPlayer = useScenarioPlayer; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.useClaudeMirrorSrc = useClaudeMirrorSrc; exports.useLocationHash = useLocationHash; exports.useScrollToHash = useScrollToHash; exports.useHumanitySignals = useHumanitySignals; exports.completeFormRescue = completeFormRescue; exports.useFormRescue = useFormRescue; exports.useRescuedForm = useRescuedForm;
|