@flamingo-stack/openframe-frontend-core 0.0.409 → 0.0.410-snapshot.20260711165901
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-STGWQFYT.cjs → chunk-3SNDISEN.cjs} +92 -30
- package/dist/chunk-3SNDISEN.cjs.map +1 -0
- package/dist/{chunk-RL344I7V.cjs → chunk-3U4IZF7H.cjs} +7 -7
- package/dist/{chunk-RL344I7V.cjs.map → chunk-3U4IZF7H.cjs.map} +1 -1
- package/dist/{chunk-7Q52HP45.js → chunk-4FNDOTW2.js} +139 -77
- package/dist/chunk-4FNDOTW2.js.map +1 -0
- package/dist/{chunk-O5W26SCL.js → chunk-6AB36PRE.js} +2 -2
- package/dist/{chunk-IK5AR6QG.js → chunk-B2BERJ4M.js} +6 -6
- package/dist/{chunk-SOALFYU6.cjs → chunk-BKYV2ALJ.cjs} +582 -591
- package/dist/chunk-BKYV2ALJ.cjs.map +1 -0
- package/dist/{chunk-KPGKNUJF.cjs → chunk-BRHCGXOH.cjs} +40 -40
- package/dist/{chunk-KPGKNUJF.cjs.map → chunk-BRHCGXOH.cjs.map} +1 -1
- package/dist/{chunk-NO2KT42M.js → chunk-DGIF3YDV.js} +2 -2
- package/dist/{chunk-LQWYXIKB.js → chunk-FXZO4EKN.js} +5 -5
- package/dist/{chunk-CUN4CJUN.cjs → chunk-G2G7HLEM.cjs} +3 -3
- package/dist/{chunk-CUN4CJUN.cjs.map → chunk-G2G7HLEM.cjs.map} +1 -1
- package/dist/{chunk-NEMUCNCG.cjs → chunk-H4ISMWHG.cjs} +73 -73
- package/dist/{chunk-NEMUCNCG.cjs.map → chunk-H4ISMWHG.cjs.map} +1 -1
- package/dist/{chunk-L6OPVKVR.js → chunk-HXRULNWA.js} +5 -5
- package/dist/{chunk-RPGFIUN3.cjs → chunk-MF5CVIAC.cjs} +32 -32
- package/dist/{chunk-RPGFIUN3.cjs.map → chunk-MF5CVIAC.cjs.map} +1 -1
- package/dist/{chunk-J6M2G6TD.js → chunk-MHNBDSWH.js} +6 -6
- package/dist/{chunk-E4J5KKHH.js → chunk-NJSBYUJZ.js} +3 -3
- package/dist/{chunk-YRKPMYI3.cjs → chunk-RALT6D4H.cjs} +15 -15
- package/dist/{chunk-YRKPMYI3.cjs.map → chunk-RALT6D4H.cjs.map} +1 -1
- package/dist/{chunk-ZMFQWMM7.js → chunk-SAJM3PDE.js} +2 -2
- package/dist/{chunk-V3EZQWHQ.cjs → chunk-SMLAYAIW.cjs} +5 -5
- package/dist/{chunk-V3EZQWHQ.cjs.map → chunk-SMLAYAIW.cjs.map} +1 -1
- package/dist/{chunk-5HOII3WB.js → chunk-SOLI7V4I.js} +4 -4
- package/dist/{chunk-WGOATV3P.cjs → chunk-SZ27SV6T.cjs} +73 -73
- package/dist/{chunk-WGOATV3P.cjs.map → chunk-SZ27SV6T.cjs.map} +1 -1
- package/dist/{chunk-ZF5O3KUQ.js → chunk-TYCWPT33.js} +3 -3
- package/dist/{chunk-F4KE5AZO.cjs → chunk-VTTPNZX3.cjs} +40 -40
- package/dist/{chunk-F4KE5AZO.cjs.map → chunk-VTTPNZX3.cjs.map} +1 -1
- package/dist/{chunk-T6ZUBXPA.cjs → chunk-VXM2GCKS.cjs} +12 -12
- package/dist/{chunk-T6ZUBXPA.cjs.map → chunk-VXM2GCKS.cjs.map} +1 -1
- package/dist/{chunk-KZPVN7AZ.js → chunk-XBC5AES6.js} +2 -2
- package/dist/{chunk-KRLBVBYU.cjs → chunk-XVPWVG6N.cjs} +18 -18
- package/dist/{chunk-KRLBVBYU.cjs.map → chunk-XVPWVG6N.cjs.map} +1 -1
- package/dist/{chunk-IVM47EGI.js → chunk-YVJ2XBFU.js} +389 -398
- package/dist/chunk-YVJ2XBFU.js.map +1 -0
- package/dist/{chunk-VUW4G6SU.js → chunk-Z4RKJOFH.js} +3 -3
- package/dist/{chunk-A3RW7M6B.cjs → chunk-ZZWFS7CD.cjs} +29 -29
- package/dist/{chunk-A3RW7M6B.cjs.map → chunk-ZZWFS7CD.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/faq/index.js +4 -4
- package/dist/components/features/index.cjs +3 -3
- package/dist/components/features/index.js +2 -2
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +137 -135
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +14 -12
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/header.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +5 -3
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.d.ts +1 -1
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +4 -2
- package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
- package/dist/components/navigation/mobile-nav-panel.d.ts +2 -0
- package/dist/components/navigation/mobile-nav-panel.d.ts.map +1 -1
- package/dist/components/navigation/sliding-sidebar.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +7 -7
- package/dist/components/onboarding-guides/index.js +6 -6
- package/dist/components/related-content/index.cjs +5 -5
- package/dist/components/related-content/index.js +4 -4
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/modal-v2.d.ts.map +1 -1
- package/dist/components/ui/modal.d.ts.map +1 -1
- package/dist/hooks/index.cjs +6 -2
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +5 -1
- package/dist/hooks/ui/index.d.ts +2 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-focus-trap.d.ts +32 -0
- package/dist/hooks/ui/use-focus-trap.d.ts.map +1 -0
- package/dist/hooks/ui/use-header-height.d.ts +10 -1
- package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
- package/dist/index.cjs +9 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -2
- package/package.json +1 -1
- package/src/components/announcement-bar.tsx +1 -1
- package/src/components/navigation/header.tsx +5 -0
- package/src/components/navigation/index.ts +1 -1
- package/src/components/navigation/mobile-burger-menu.tsx +16 -29
- package/src/components/navigation/mobile-nav-panel.tsx +32 -35
- package/src/components/navigation/sliding-sidebar.tsx +29 -9
- package/src/components/ui/modal-v2.tsx +7 -6
- package/src/components/ui/modal.tsx +7 -9
- package/src/hooks/ui/index.ts +6 -0
- package/src/hooks/ui/use-focus-trap.ts +110 -0
- package/src/hooks/ui/use-header-height.ts +17 -2
- package/src/stories/MobileNavPanel.stories.tsx +150 -0
- package/dist/chunk-7Q52HP45.js.map +0 -1
- package/dist/chunk-IVM47EGI.js.map +0 -1
- package/dist/chunk-SOALFYU6.cjs.map +0 -1
- package/dist/chunk-STGWQFYT.cjs.map +0 -1
- /package/dist/{chunk-O5W26SCL.js.map → chunk-6AB36PRE.js.map} +0 -0
- /package/dist/{chunk-IK5AR6QG.js.map → chunk-B2BERJ4M.js.map} +0 -0
- /package/dist/{chunk-NO2KT42M.js.map → chunk-DGIF3YDV.js.map} +0 -0
- /package/dist/{chunk-LQWYXIKB.js.map → chunk-FXZO4EKN.js.map} +0 -0
- /package/dist/{chunk-L6OPVKVR.js.map → chunk-HXRULNWA.js.map} +0 -0
- /package/dist/{chunk-J6M2G6TD.js.map → chunk-MHNBDSWH.js.map} +0 -0
- /package/dist/{chunk-E4J5KKHH.js.map → chunk-NJSBYUJZ.js.map} +0 -0
- /package/dist/{chunk-ZMFQWMM7.js.map → chunk-SAJM3PDE.js.map} +0 -0
- /package/dist/{chunk-5HOII3WB.js.map → chunk-SOLI7V4I.js.map} +0 -0
- /package/dist/{chunk-ZF5O3KUQ.js.map → chunk-TYCWPT33.js.map} +0 -0
- /package/dist/{chunk-KZPVN7AZ.js.map → chunk-XBC5AES6.js.map} +0 -0
- /package/dist/{chunk-VUW4G6SU.js.map → chunk-Z4RKJOFH.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkBKYV2ALJcjs = require('./chunk-BKYV2ALJ.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -59,7 +59,7 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
|
|
|
59
59
|
)
|
|
60
60
|
] })
|
|
61
61
|
] }),
|
|
62
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
62
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBKYV2ALJcjs.EmbedIframe, { src, title: displayName, height })
|
|
63
63
|
] });
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -85,7 +85,7 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
|
|
|
85
85
|
{
|
|
86
86
|
variant: "outline",
|
|
87
87
|
size: "small-legacy",
|
|
88
|
-
href:
|
|
88
|
+
href: _chunkBKYV2ALJcjs.toGoogleSheetsOriginalUrl.call(void 0, externalUrl),
|
|
89
89
|
openInNewTab: true,
|
|
90
90
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGD345ZVcjs.GoogleSheetsIcon, { className: "w-4 h-4" }),
|
|
91
91
|
rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-4 h-4" }),
|
|
@@ -95,9 +95,9 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
|
|
|
95
95
|
)
|
|
96
96
|
] }),
|
|
97
97
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
98
|
-
|
|
98
|
+
_chunkBKYV2ALJcjs.EmbedIframe,
|
|
99
99
|
{
|
|
100
|
-
src:
|
|
100
|
+
src: _chunkBKYV2ALJcjs.toGoogleSheetsEmbedUrl.call(void 0, externalUrl),
|
|
101
101
|
title: displayName,
|
|
102
102
|
height
|
|
103
103
|
}
|
|
@@ -120,7 +120,7 @@ function FileDownloadCard({
|
|
|
120
120
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-lg font-semibold text-ods-text-primary", children: fileName || "File" }),
|
|
121
121
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary", children: [
|
|
122
122
|
mimeType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: mimeType }),
|
|
123
|
-
typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children:
|
|
123
|
+
typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunkBKYV2ALJcjs.formatFileSize.call(void 0, fileSize) })
|
|
124
124
|
] })
|
|
125
125
|
] }),
|
|
126
126
|
fileUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -141,4 +141,4 @@ function FileDownloadCard({
|
|
|
141
141
|
|
|
142
142
|
|
|
143
143
|
exports.PdfViewer = PdfViewer; exports.GoogleSheetsViewer = GoogleSheetsViewer; exports.FileDownloadCard = FileDownloadCard;
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
144
|
+
//# sourceMappingURL=chunk-3U4IZF7H.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RL344I7V.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RL344I7V.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <AdobePdfIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n </div>\n <EmbedIframe src={src} title={displayName} height={height} />\n </div>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n </div>\n <EmbedIframe\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n title={displayName}\n height={height}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-lg font-semibold text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-3U4IZF7H.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-3U4IZF7H.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <AdobePdfIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n </div>\n <EmbedIframe src={src} title={displayName} height={height} />\n </div>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n </div>\n <EmbedIframe\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n title={displayName}\n height={height}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-lg font-semibold text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
|
|
@@ -141,11 +141,68 @@ function useDeferredError(error, value, delay = 1500) {
|
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
// src/hooks/ui/use-focus-trap.ts
|
|
145
|
+
import { useEffect as useEffect4, useRef as useRef2 } from "react";
|
|
146
|
+
var FOCUSABLE_SELECTOR = [
|
|
147
|
+
"a[href]",
|
|
148
|
+
"button:not([disabled])",
|
|
149
|
+
"input:not([disabled])",
|
|
150
|
+
"select:not([disabled])",
|
|
151
|
+
"textarea:not([disabled])",
|
|
152
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
153
|
+
].join(", ");
|
|
154
|
+
function useFocusTrap(containerRef, active, { onEscape, contain = true } = {}) {
|
|
155
|
+
const onEscapeRef = useRef2(onEscape);
|
|
156
|
+
onEscapeRef.current = onEscape;
|
|
157
|
+
useEffect4(() => {
|
|
158
|
+
if (!active) return;
|
|
159
|
+
const container = containerRef.current;
|
|
160
|
+
if (!container) return;
|
|
161
|
+
const previouslyFocused = document.activeElement;
|
|
162
|
+
const focusables = () => Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => el.getClientRects().length > 0);
|
|
163
|
+
const first = focusables()[0];
|
|
164
|
+
(first ?? container).focus({ preventScroll: true });
|
|
165
|
+
const handleKeyDown = (e) => {
|
|
166
|
+
if (e.key === "Escape") {
|
|
167
|
+
onEscapeRef.current?.();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (e.key !== "Tab" || !contain) return;
|
|
171
|
+
const items = focusables();
|
|
172
|
+
if (items.length === 0) {
|
|
173
|
+
e.preventDefault();
|
|
174
|
+
container.focus({ preventScroll: true });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const firstEl = items[0];
|
|
178
|
+
const lastEl = items[items.length - 1];
|
|
179
|
+
const current = document.activeElement;
|
|
180
|
+
if (e.shiftKey && (current === firstEl || current === container)) {
|
|
181
|
+
e.preventDefault();
|
|
182
|
+
lastEl.focus({ preventScroll: true });
|
|
183
|
+
} else if (!e.shiftKey && current === lastEl) {
|
|
184
|
+
e.preventDefault();
|
|
185
|
+
firstEl.focus({ preventScroll: true });
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
container.addEventListener("keydown", handleKeyDown);
|
|
189
|
+
return () => {
|
|
190
|
+
container.removeEventListener("keydown", handleKeyDown);
|
|
191
|
+
const current = document.activeElement;
|
|
192
|
+
if (previouslyFocused && previouslyFocused.isConnected && (current === null || current === document.body || container.contains(current))) {
|
|
193
|
+
previouslyFocused.focus({ preventScroll: true });
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}, [containerRef, active, contain]);
|
|
197
|
+
}
|
|
198
|
+
|
|
144
199
|
// src/hooks/ui/use-header-height.ts
|
|
145
|
-
import { useEffect as
|
|
146
|
-
function useHeaderHeight(defaultHeight = 64) {
|
|
200
|
+
import { useEffect as useEffect5, useState as useState4 } from "react";
|
|
201
|
+
function useHeaderHeight(defaultHeight = 64, options = {}) {
|
|
202
|
+
const { enabled = true } = options;
|
|
147
203
|
const [height, setHeight] = useState4(defaultHeight);
|
|
148
|
-
|
|
204
|
+
useEffect5(() => {
|
|
205
|
+
if (!enabled) return;
|
|
149
206
|
const measure = () => {
|
|
150
207
|
let total = 0;
|
|
151
208
|
const header2 = document.querySelector("header");
|
|
@@ -179,26 +236,26 @@ function useHeaderHeight(defaultHeight = 64) {
|
|
|
179
236
|
resizeObserver.disconnect();
|
|
180
237
|
mutationObserver.disconnect();
|
|
181
238
|
};
|
|
182
|
-
}, [defaultHeight]);
|
|
239
|
+
}, [defaultHeight, enabled]);
|
|
183
240
|
return height;
|
|
184
241
|
}
|
|
185
242
|
|
|
186
243
|
// src/hooks/ui/use-horizontal-scrollbar.ts
|
|
187
|
-
import { useRef as
|
|
244
|
+
import { useRef as useRef3, useState as useState5, useCallback as useCallback3 } from "react";
|
|
188
245
|
function useHorizontalScrollbar() {
|
|
189
|
-
const scrollElRef =
|
|
190
|
-
const trackRef =
|
|
191
|
-
const thumbRef =
|
|
192
|
-
const roRef =
|
|
193
|
-
const moRef =
|
|
246
|
+
const scrollElRef = useRef3(null);
|
|
247
|
+
const trackRef = useRef3(null);
|
|
248
|
+
const thumbRef = useRef3(null);
|
|
249
|
+
const roRef = useRef3(null);
|
|
250
|
+
const moRef = useRef3(null);
|
|
194
251
|
const [thumbRatio, setThumbRatio] = useState5(0);
|
|
195
252
|
const [canScrollLeft, setCanScrollLeft] = useState5(false);
|
|
196
253
|
const [canScrollRight, setCanScrollRight] = useState5(false);
|
|
197
|
-
const prevCanScrollLeftRef =
|
|
198
|
-
const prevCanScrollRightRef =
|
|
199
|
-
const isDraggingRef =
|
|
200
|
-
const dragStartRef =
|
|
201
|
-
const rafIdRef =
|
|
254
|
+
const prevCanScrollLeftRef = useRef3(false);
|
|
255
|
+
const prevCanScrollRightRef = useRef3(false);
|
|
256
|
+
const isDraggingRef = useRef3(false);
|
|
257
|
+
const dragStartRef = useRef3({ mouseX: 0, scrollLeft: 0 });
|
|
258
|
+
const rafIdRef = useRef3(0);
|
|
202
259
|
const syncThumbToDOM = useCallback3(() => {
|
|
203
260
|
const el = scrollElRef.current;
|
|
204
261
|
const thumb = thumbRef.current;
|
|
@@ -376,7 +433,7 @@ function useHorizontalScrollbar() {
|
|
|
376
433
|
}
|
|
377
434
|
|
|
378
435
|
// src/hooks/ui/use-image-edge-color.ts
|
|
379
|
-
import { useState as useState6, useEffect as
|
|
436
|
+
import { useState as useState6, useEffect as useEffect6 } from "react";
|
|
380
437
|
function extractEdgeColor(img) {
|
|
381
438
|
const canvas = document.createElement("canvas");
|
|
382
439
|
const ctx = canvas.getContext("2d");
|
|
@@ -433,7 +490,7 @@ function extractEdgeColor(img) {
|
|
|
433
490
|
}
|
|
434
491
|
function useImageEdgeColor(imageUrl, fallback = "#000000") {
|
|
435
492
|
const [color, setColor] = useState6(fallback);
|
|
436
|
-
|
|
493
|
+
useEffect6(() => {
|
|
437
494
|
if (!imageUrl) {
|
|
438
495
|
setColor(fallback);
|
|
439
496
|
return;
|
|
@@ -462,7 +519,7 @@ function useImageEdgeColor(imageUrl, fallback = "#000000") {
|
|
|
462
519
|
}
|
|
463
520
|
|
|
464
521
|
// src/hooks/ui/use-local-storage.ts
|
|
465
|
-
import { useEffect as
|
|
522
|
+
import { useEffect as useEffect7, useRef as useRef4, useState as useState7 } from "react";
|
|
466
523
|
function useLocalStorage(key, initialValue) {
|
|
467
524
|
const [storedValue, setStoredValue] = useState7(() => {
|
|
468
525
|
try {
|
|
@@ -475,9 +532,9 @@ function useLocalStorage(key, initialValue) {
|
|
|
475
532
|
}
|
|
476
533
|
return initialValue;
|
|
477
534
|
});
|
|
478
|
-
const isInitialized =
|
|
479
|
-
const isFromStorageEvent =
|
|
480
|
-
|
|
535
|
+
const isInitialized = useRef4(true);
|
|
536
|
+
const isFromStorageEvent = useRef4(false);
|
|
537
|
+
useEffect7(() => {
|
|
481
538
|
if (!isInitialized.current) return;
|
|
482
539
|
const handleStorageChange = (e) => {
|
|
483
540
|
if (e.key === key && e.newValue !== null) {
|
|
@@ -516,7 +573,7 @@ function useLocalStorage(key, initialValue) {
|
|
|
516
573
|
window.removeEventListener("localStorageUpdate", handleCustomStorageUpdate);
|
|
517
574
|
};
|
|
518
575
|
}, [key]);
|
|
519
|
-
|
|
576
|
+
useEffect7(() => {
|
|
520
577
|
if (!isInitialized.current) return;
|
|
521
578
|
if (isFromStorageEvent.current) {
|
|
522
579
|
isFromStorageEvent.current = false;
|
|
@@ -577,10 +634,10 @@ function useLgUp() {
|
|
|
577
634
|
}
|
|
578
635
|
|
|
579
636
|
// src/hooks/ui/use-memoized-callback.ts
|
|
580
|
-
import { useCallback as useCallback4, useRef as
|
|
637
|
+
import { useCallback as useCallback4, useRef as useRef5 } from "react";
|
|
581
638
|
function useMemoizedCallback(callback, dependencies) {
|
|
582
|
-
const callbackRef =
|
|
583
|
-
const dependenciesRef =
|
|
639
|
+
const callbackRef = useRef5(callback);
|
|
640
|
+
const dependenciesRef = useRef5(dependencies);
|
|
584
641
|
callbackRef.current = callback;
|
|
585
642
|
const depsChanged = dependencies.some((dep, i) => !Object.is(dep, dependenciesRef.current[i]));
|
|
586
643
|
if (depsChanged) {
|
|
@@ -590,11 +647,11 @@ function useMemoizedCallback(callback, dependencies) {
|
|
|
590
647
|
}
|
|
591
648
|
|
|
592
649
|
// src/hooks/ui/use-notification-permission.ts
|
|
593
|
-
import { useCallback as useCallback5, useEffect as
|
|
650
|
+
import { useCallback as useCallback5, useEffect as useEffect8, useState as useState9 } from "react";
|
|
594
651
|
function useNotificationPermission() {
|
|
595
652
|
const [supported, setSupported] = useState9(false);
|
|
596
653
|
const [permission, setPermission] = useState9("default");
|
|
597
|
-
|
|
654
|
+
useEffect8(() => {
|
|
598
655
|
if (typeof window === "undefined" || !("Notification" in window)) return;
|
|
599
656
|
setSupported(true);
|
|
600
657
|
const sync = () => setPermission(Notification.permission);
|
|
@@ -630,7 +687,7 @@ function useNotificationPermission() {
|
|
|
630
687
|
}
|
|
631
688
|
|
|
632
689
|
// src/hooks/ui/use-onboarding-state.ts
|
|
633
|
-
import { useState as useState10, useEffect as
|
|
690
|
+
import { useState as useState10, useEffect as useEffect9, useCallback as useCallback6 } from "react";
|
|
634
691
|
|
|
635
692
|
// src/utils/onboarding-storage.ts
|
|
636
693
|
var DEFAULT_STATE = {
|
|
@@ -707,7 +764,7 @@ function dismissOnboarding(key) {
|
|
|
707
764
|
function useOnboardingState(storageKey = "openframe-onboarding-state") {
|
|
708
765
|
const [state, setState] = useState10(() => loadOnboardingState(storageKey));
|
|
709
766
|
const [, forceUpdate] = useState10(0);
|
|
710
|
-
|
|
767
|
+
useEffect9(() => {
|
|
711
768
|
const handleStorageUpdate = (e) => {
|
|
712
769
|
if (e.detail.key === storageKey) {
|
|
713
770
|
const newState = loadOnboardingState(storageKey);
|
|
@@ -768,7 +825,7 @@ function useOnboardingState(storageKey = "openframe-onboarding-state") {
|
|
|
768
825
|
}
|
|
769
826
|
|
|
770
827
|
// src/hooks/ui/use-search.ts
|
|
771
|
-
import { useState as useState11, useEffect as
|
|
828
|
+
import { useState as useState11, useEffect as useEffect10, useCallback as useCallback7 } from "react";
|
|
772
829
|
function useSearch(config) {
|
|
773
830
|
const { searchFn, mapResult, debounceMs = 300, minQueryLength = 2 } = config;
|
|
774
831
|
const [query, setQuery] = useState11("");
|
|
@@ -780,7 +837,7 @@ function useSearch(config) {
|
|
|
780
837
|
setResults([]);
|
|
781
838
|
setError(null);
|
|
782
839
|
}, []);
|
|
783
|
-
|
|
840
|
+
useEffect10(() => {
|
|
784
841
|
if (!debouncedQuery || debouncedQuery.length < minQueryLength) {
|
|
785
842
|
setResults([]);
|
|
786
843
|
setIsLoading(false);
|
|
@@ -853,11 +910,11 @@ function useTablePagination(config) {
|
|
|
853
910
|
}
|
|
854
911
|
|
|
855
912
|
// src/hooks/ui/use-throttle.ts
|
|
856
|
-
import { useState as useState12, useEffect as
|
|
913
|
+
import { useState as useState12, useEffect as useEffect11, useRef as useRef6 } from "react";
|
|
857
914
|
function useThrottle(value, limit = 200) {
|
|
858
915
|
const [throttledValue, setThrottledValue] = useState12(value);
|
|
859
|
-
const lastUpdated =
|
|
860
|
-
|
|
916
|
+
const lastUpdated = useRef6(Date.now());
|
|
917
|
+
useEffect11(() => {
|
|
861
918
|
const now = Date.now();
|
|
862
919
|
const elapsed = now - lastUpdated.current;
|
|
863
920
|
if (elapsed >= limit) {
|
|
@@ -900,8 +957,11 @@ function useWindowSize() {
|
|
|
900
957
|
return windowSize;
|
|
901
958
|
}
|
|
902
959
|
|
|
960
|
+
// src/hooks/ui/index.ts
|
|
961
|
+
import { usePreventScroll } from "@react-aria/overlays";
|
|
962
|
+
|
|
903
963
|
// src/hooks/platform/use-platform-config.ts
|
|
904
|
-
import { useState as useState14, useEffect as
|
|
964
|
+
import { useState as useState14, useEffect as useEffect12 } from "react";
|
|
905
965
|
|
|
906
966
|
// src/utils/platform-config.tsx
|
|
907
967
|
import { Globe } from "lucide-react";
|
|
@@ -1082,7 +1142,7 @@ function usePlatformConfig() {
|
|
|
1082
1142
|
const [platforms, setPlatforms] = useState14(platformCache || []);
|
|
1083
1143
|
const [isLoading, setIsLoading] = useState14(!platformCache);
|
|
1084
1144
|
const [error, setError] = useState14(null);
|
|
1085
|
-
|
|
1145
|
+
useEffect12(() => {
|
|
1086
1146
|
if (platformCache) {
|
|
1087
1147
|
setPlatforms(platformCache);
|
|
1088
1148
|
setIsLoading(false);
|
|
@@ -1531,7 +1591,7 @@ var useToast = () => ({
|
|
|
1531
1591
|
});
|
|
1532
1592
|
|
|
1533
1593
|
// src/hooks/use-contact-submission.ts
|
|
1534
|
-
import { useState as useState16, useCallback as useCallback8, useEffect as
|
|
1594
|
+
import { useState as useState16, useCallback as useCallback8, useEffect as useEffect13 } from "react";
|
|
1535
1595
|
init_next_navigation();
|
|
1536
1596
|
|
|
1537
1597
|
// src/utils/local-storage-adapter.ts
|
|
@@ -1833,7 +1893,7 @@ function useContactSubmission(options = {}) {
|
|
|
1833
1893
|
setIsSubmitting(false);
|
|
1834
1894
|
}
|
|
1835
1895
|
}, [isSubmitting, toast2, userId, successToastMessage, contactUrl]);
|
|
1836
|
-
|
|
1896
|
+
useEffect13(() => {
|
|
1837
1897
|
if (isSuccess && successRedirectUrl) {
|
|
1838
1898
|
console.log("\u{1F680} Contact submission successful, redirecting to:", successRedirectUrl);
|
|
1839
1899
|
const timer = setTimeout(() => {
|
|
@@ -1847,7 +1907,7 @@ function useContactSubmission(options = {}) {
|
|
|
1847
1907
|
return () => clearTimeout(timer);
|
|
1848
1908
|
}
|
|
1849
1909
|
}, [isSuccess, successRedirectUrl, router]);
|
|
1850
|
-
|
|
1910
|
+
useEffect13(() => {
|
|
1851
1911
|
if (isSuccess && onSuccess) {
|
|
1852
1912
|
onSuccess();
|
|
1853
1913
|
}
|
|
@@ -1856,18 +1916,18 @@ function useContactSubmission(options = {}) {
|
|
|
1856
1916
|
}
|
|
1857
1917
|
|
|
1858
1918
|
// src/hooks/use-quick-action-hint.ts
|
|
1859
|
-
import { useEffect as
|
|
1919
|
+
import { useEffect as useEffect14, useState as useState17, useRef as useRef7, useCallback as useCallback9 } from "react";
|
|
1860
1920
|
function useQuickActionHint({
|
|
1861
1921
|
actionCount,
|
|
1862
1922
|
cycleDuration = 5e3,
|
|
1863
1923
|
enabled = true
|
|
1864
1924
|
}) {
|
|
1865
1925
|
const [activeHintIndex, setActiveHintIndex] = useState17(-1);
|
|
1866
|
-
const containerRef =
|
|
1867
|
-
const timeoutRef =
|
|
1868
|
-
const cycleCountRef =
|
|
1869
|
-
const currentIndexRef =
|
|
1870
|
-
const sequenceRef =
|
|
1926
|
+
const containerRef = useRef7(null);
|
|
1927
|
+
const timeoutRef = useRef7(null);
|
|
1928
|
+
const cycleCountRef = useRef7(0);
|
|
1929
|
+
const currentIndexRef = useRef7(0);
|
|
1930
|
+
const sequenceRef = useRef7([]);
|
|
1871
1931
|
const shuffleIndices = useCallback9((length) => {
|
|
1872
1932
|
const indices = Array.from({ length }, (_, i) => i);
|
|
1873
1933
|
for (let i = indices.length - 1; i > 0; i--) {
|
|
@@ -1899,7 +1959,7 @@ function useQuickActionHint({
|
|
|
1899
1959
|
}
|
|
1900
1960
|
timeoutRef.current = setTimeout(advanceHint, cycleDuration);
|
|
1901
1961
|
}, [actionCount, cycleDuration, shuffleIndices]);
|
|
1902
|
-
|
|
1962
|
+
useEffect14(() => {
|
|
1903
1963
|
if (!enabled || actionCount === 0) {
|
|
1904
1964
|
return;
|
|
1905
1965
|
}
|
|
@@ -1952,7 +2012,7 @@ function useCopyToClipboard({
|
|
|
1952
2012
|
}
|
|
1953
2013
|
|
|
1954
2014
|
// src/hooks/use-batch-images.ts
|
|
1955
|
-
import { useEffect as
|
|
2015
|
+
import { useEffect as useEffect15, useMemo as useMemo2, useState as useState19, useRef as useRef8 } from "react";
|
|
1956
2016
|
var globalBatchImageConfig = {};
|
|
1957
2017
|
function configureBatchImageFetch(config) {
|
|
1958
2018
|
globalBatchImageConfig = { ...globalBatchImageConfig, ...config };
|
|
@@ -2031,8 +2091,8 @@ function useBatchImages(imageUrls, config) {
|
|
|
2031
2091
|
() => Array.from(new Set(imageUrls.filter((url) => Boolean(url)))),
|
|
2032
2092
|
[imageUrls]
|
|
2033
2093
|
);
|
|
2034
|
-
const requestedUrls =
|
|
2035
|
-
|
|
2094
|
+
const requestedUrls = useRef8(/* @__PURE__ */ new Set());
|
|
2095
|
+
useEffect15(() => {
|
|
2036
2096
|
if (uniqueUrls.length === 0) {
|
|
2037
2097
|
setFetchedImages({});
|
|
2038
2098
|
return;
|
|
@@ -2062,7 +2122,7 @@ function useBatchImages(imageUrls, config) {
|
|
|
2062
2122
|
}
|
|
2063
2123
|
|
|
2064
2124
|
// src/hooks/use-authenticated-image.ts
|
|
2065
|
-
import { useEffect as
|
|
2125
|
+
import { useEffect as useEffect16, useState as useState20, useRef as useRef9 } from "react";
|
|
2066
2126
|
var globalImageConfig = {};
|
|
2067
2127
|
var imageCache = /* @__PURE__ */ new Map();
|
|
2068
2128
|
var pendingRequests = /* @__PURE__ */ new Map();
|
|
@@ -2094,8 +2154,8 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
|
|
|
2094
2154
|
const [fetchedImageUrl, setFetchedImageUrl] = useState20();
|
|
2095
2155
|
const [isLoading, setIsLoading] = useState20(false);
|
|
2096
2156
|
const [error, setError] = useState20(null);
|
|
2097
|
-
const currentCacheKeyRef =
|
|
2098
|
-
|
|
2157
|
+
const currentCacheKeyRef = useRef9(null);
|
|
2158
|
+
useEffect16(() => {
|
|
2099
2159
|
if (!imageUrl) {
|
|
2100
2160
|
setFetchedImageUrl(void 0);
|
|
2101
2161
|
setIsLoading(false);
|
|
@@ -2206,7 +2266,7 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
|
|
|
2206
2266
|
});
|
|
2207
2267
|
pendingRequests.set(cacheKey, fetchPromise2);
|
|
2208
2268
|
}, [imageUrl, refreshKey, config]);
|
|
2209
|
-
|
|
2269
|
+
useEffect16(() => {
|
|
2210
2270
|
return () => {
|
|
2211
2271
|
if (currentCacheKeyRef.current) {
|
|
2212
2272
|
const entry = imageCache.get(currentCacheKeyRef.current);
|
|
@@ -2221,7 +2281,7 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
|
|
|
2221
2281
|
|
|
2222
2282
|
// src/hooks/state/use-query-params.ts
|
|
2223
2283
|
init_next_navigation();
|
|
2224
|
-
import { useEffect as
|
|
2284
|
+
import { useEffect as useEffect17, useState as useState21, useMemo as useMemo3, useCallback as useCallback11 } from "react";
|
|
2225
2285
|
|
|
2226
2286
|
// src/hooks/state/graphql-parser.ts
|
|
2227
2287
|
import {
|
|
@@ -2690,7 +2750,7 @@ function useQueryParams(query, options = {}) {
|
|
|
2690
2750
|
const defaultValues = options.defaultValues || {};
|
|
2691
2751
|
const skipIntrospection = options.skipIntrospection || false;
|
|
2692
2752
|
const debug = options.debug || false;
|
|
2693
|
-
|
|
2753
|
+
useEffect17(() => {
|
|
2694
2754
|
async function initialize() {
|
|
2695
2755
|
try {
|
|
2696
2756
|
if (debug) console.log("[useQueryParams] Initializing...");
|
|
@@ -2842,9 +2902,9 @@ function applyParamMapping(schema, mapping) {
|
|
|
2842
2902
|
|
|
2843
2903
|
// src/hooks/state/use-api-params.ts
|
|
2844
2904
|
init_next_navigation();
|
|
2845
|
-
import { useCallback as useCallback12, useMemo as useMemo4, useRef as
|
|
2905
|
+
import { useCallback as useCallback12, useMemo as useMemo4, useRef as useRef10 } from "react";
|
|
2846
2906
|
function useContentStable(value, key) {
|
|
2847
|
-
const ref =
|
|
2907
|
+
const ref = useRef10(void 0);
|
|
2848
2908
|
if (ref.current && ref.current.key === key) return ref.current.value;
|
|
2849
2909
|
ref.current = { value, key };
|
|
2850
2910
|
return value;
|
|
@@ -2877,7 +2937,7 @@ function useApiParams(schema, options = {}) {
|
|
|
2877
2937
|
}
|
|
2878
2938
|
return flattened;
|
|
2879
2939
|
}, [schemaKey]);
|
|
2880
|
-
const prevParamsRef =
|
|
2940
|
+
const prevParamsRef = useRef10(void 0);
|
|
2881
2941
|
const params = useMemo4(() => {
|
|
2882
2942
|
const sp = new URLSearchParams(searchString);
|
|
2883
2943
|
const result = {};
|
|
@@ -3037,7 +3097,7 @@ function createSearchParams(params) {
|
|
|
3037
3097
|
}
|
|
3038
3098
|
|
|
3039
3099
|
// src/hooks/state/use-cursor-pagination-state.ts
|
|
3040
|
-
import { useCallback as useCallback13, useEffect as
|
|
3100
|
+
import { useCallback as useCallback13, useEffect as useEffect18, useRef as useRef11, useState as useState22 } from "react";
|
|
3041
3101
|
var urlSchema = {
|
|
3042
3102
|
search: { type: "string", default: "" },
|
|
3043
3103
|
cursor: { type: "string", default: "" }
|
|
@@ -3051,10 +3111,10 @@ function useCursorPaginationState(options) {
|
|
|
3051
3111
|
const [searchInput, setSearchInput] = useState22(params.search || "");
|
|
3052
3112
|
const [hasLoadedBeyondFirst, setHasLoadedBeyondFirst] = useState22(false);
|
|
3053
3113
|
const [initialLoadCount, setInitialLoadCount] = useState22(0);
|
|
3054
|
-
const lastSearchRef =
|
|
3055
|
-
const isSyncingFromUrl =
|
|
3056
|
-
const isInitialLoadInProgress =
|
|
3057
|
-
|
|
3114
|
+
const lastSearchRef = useRef11(null);
|
|
3115
|
+
const isSyncingFromUrl = useRef11(false);
|
|
3116
|
+
const isInitialLoadInProgress = useRef11(true);
|
|
3117
|
+
useEffect18(() => {
|
|
3058
3118
|
if (isInitialLoadInProgress.current) return;
|
|
3059
3119
|
const urlSearch = params.search || "";
|
|
3060
3120
|
if (urlSearch !== searchInput) {
|
|
@@ -3065,7 +3125,7 @@ function useCursorPaginationState(options) {
|
|
|
3065
3125
|
}, 0);
|
|
3066
3126
|
}
|
|
3067
3127
|
}, [params.search, initialLoadCount]);
|
|
3068
|
-
|
|
3128
|
+
useEffect18(() => {
|
|
3069
3129
|
if (isInitialLoadInProgress.current) return;
|
|
3070
3130
|
if (isSyncingFromUrl.current) return;
|
|
3071
3131
|
if (searchInput !== params.search) {
|
|
@@ -3076,7 +3136,7 @@ function useCursorPaginationState(options) {
|
|
|
3076
3136
|
});
|
|
3077
3137
|
}
|
|
3078
3138
|
}, [searchInput, params.search, setParams, initialLoadCount]);
|
|
3079
|
-
|
|
3139
|
+
useEffect18(() => {
|
|
3080
3140
|
if (initialLoadCount === 0) {
|
|
3081
3141
|
const cursor = params.cursor || null;
|
|
3082
3142
|
const search = params.search || "";
|
|
@@ -3090,7 +3150,7 @@ function useCursorPaginationState(options) {
|
|
|
3090
3150
|
});
|
|
3091
3151
|
}
|
|
3092
3152
|
}, []);
|
|
3093
|
-
|
|
3153
|
+
useEffect18(() => {
|
|
3094
3154
|
if (isInitialLoadInProgress.current) return;
|
|
3095
3155
|
if (initialLoadCount === 0) return;
|
|
3096
3156
|
const currentSearch = params.search || "";
|
|
@@ -3130,7 +3190,7 @@ function useCursorPaginationState(options) {
|
|
|
3130
3190
|
}
|
|
3131
3191
|
|
|
3132
3192
|
// src/hooks/nats/use-nats-client.ts
|
|
3133
|
-
import { useEffect as
|
|
3193
|
+
import { useEffect as useEffect19, useMemo as useMemo5, useState as useState23 } from "react";
|
|
3134
3194
|
function useNatsClient(clientOptions, options = {}) {
|
|
3135
3195
|
const { autoConnect = true } = options;
|
|
3136
3196
|
const client = useMemo5(() => {
|
|
@@ -3139,7 +3199,7 @@ function useNatsClient(clientOptions, options = {}) {
|
|
|
3139
3199
|
}, [clientOptions]);
|
|
3140
3200
|
const [status, setStatus] = useState23("disconnected");
|
|
3141
3201
|
const [lastError, setLastError] = useState23(null);
|
|
3142
|
-
|
|
3202
|
+
useEffect19(() => {
|
|
3143
3203
|
if (!client) {
|
|
3144
3204
|
setStatus("disconnected");
|
|
3145
3205
|
setLastError(null);
|
|
@@ -3170,7 +3230,7 @@ function useNatsClient(clientOptions, options = {}) {
|
|
|
3170
3230
|
}
|
|
3171
3231
|
|
|
3172
3232
|
// src/hooks/use-near-viewport.ts
|
|
3173
|
-
import { useEffect as
|
|
3233
|
+
import { useEffect as useEffect20, useRef as useRef12, useState as useState24, useCallback as useCallback14 } from "react";
|
|
3174
3234
|
var observers = /* @__PURE__ */ new Map();
|
|
3175
3235
|
var subscribers = /* @__PURE__ */ new WeakMap();
|
|
3176
3236
|
function getObserverFor(rootMargin) {
|
|
@@ -3195,7 +3255,7 @@ function getObserverFor(rootMargin) {
|
|
|
3195
3255
|
}
|
|
3196
3256
|
function useNearViewport(rootMargin = "500px") {
|
|
3197
3257
|
const [isNear, setIsNear] = useState24(false);
|
|
3198
|
-
const elRef =
|
|
3258
|
+
const elRef = useRef12(null);
|
|
3199
3259
|
const ref = useCallback14(
|
|
3200
3260
|
(node) => {
|
|
3201
3261
|
const prev = elRef.current;
|
|
@@ -3214,7 +3274,7 @@ function useNearViewport(rootMargin = "500px") {
|
|
|
3214
3274
|
},
|
|
3215
3275
|
[rootMargin]
|
|
3216
3276
|
);
|
|
3217
|
-
|
|
3277
|
+
useEffect20(() => {
|
|
3218
3278
|
return () => {
|
|
3219
3279
|
const el = elRef.current;
|
|
3220
3280
|
if (!el) return;
|
|
@@ -3372,7 +3432,7 @@ function useOgPlaceholderUrl({
|
|
|
3372
3432
|
}
|
|
3373
3433
|
|
|
3374
3434
|
// src/hooks/use-scroll-to-hash.ts
|
|
3375
|
-
import { useEffect as
|
|
3435
|
+
import { useEffect as useEffect21 } from "react";
|
|
3376
3436
|
|
|
3377
3437
|
// src/utils/scroll-into-view.ts
|
|
3378
3438
|
var activeRaf = 0;
|
|
@@ -3510,7 +3570,7 @@ function navigateSamePageHash(target, options = {}) {
|
|
|
3510
3570
|
var MAX_POLL_FRAMES = 60;
|
|
3511
3571
|
function useScrollToHash(readyDep = true, options) {
|
|
3512
3572
|
const headerOffset = options?.headerOffset ?? 0;
|
|
3513
|
-
|
|
3573
|
+
useEffect21(() => {
|
|
3514
3574
|
if (typeof window === "undefined") return;
|
|
3515
3575
|
if (readyDep === null || readyDep === false) return;
|
|
3516
3576
|
let rafId = null;
|
|
@@ -3550,7 +3610,7 @@ function useScrollToHash(readyDep = true, options) {
|
|
|
3550
3610
|
}
|
|
3551
3611
|
|
|
3552
3612
|
// src/hooks/use-humanity-signals.ts
|
|
3553
|
-
import { useCallback as useCallback15, useRef as
|
|
3613
|
+
import { useCallback as useCallback15, useRef as useRef13 } from "react";
|
|
3554
3614
|
|
|
3555
3615
|
// src/utils/humanity-signals.ts
|
|
3556
3616
|
var HONEYPOT_FIELD = "contact_url_confirm";
|
|
@@ -3574,8 +3634,8 @@ var splitCsvEnv = (s) => s?.split(",").map((t) => t.trim()).filter(Boolean) ?? [
|
|
|
3574
3634
|
|
|
3575
3635
|
// src/hooks/use-humanity-signals.ts
|
|
3576
3636
|
function useHumanitySignals() {
|
|
3577
|
-
const ref =
|
|
3578
|
-
const mountedAt =
|
|
3637
|
+
const ref = useRef13(null);
|
|
3638
|
+
const mountedAt = useRef13(typeof performance !== "undefined" ? performance.now() : 0);
|
|
3579
3639
|
const getSignals = useCallback15(
|
|
3580
3640
|
() => ({
|
|
3581
3641
|
[HONEYPOT_FIELD]: ref.current?.value ?? "",
|
|
@@ -3594,6 +3654,7 @@ export {
|
|
|
3594
3654
|
useAutoLimitTags,
|
|
3595
3655
|
useDebounce,
|
|
3596
3656
|
useDeferredError,
|
|
3657
|
+
useFocusTrap,
|
|
3597
3658
|
useHeaderHeight,
|
|
3598
3659
|
useHorizontalScrollbar,
|
|
3599
3660
|
useImageEdgeColor,
|
|
@@ -3610,6 +3671,7 @@ export {
|
|
|
3610
3671
|
useTablePagination,
|
|
3611
3672
|
useThrottle,
|
|
3612
3673
|
useWindowSize,
|
|
3674
|
+
usePreventScroll,
|
|
3613
3675
|
platformIcons,
|
|
3614
3676
|
platformColors,
|
|
3615
3677
|
platformDisplayNames,
|
|
@@ -3704,4 +3766,4 @@ export {
|
|
|
3704
3766
|
splitCsvEnv,
|
|
3705
3767
|
useHumanitySignals
|
|
3706
3768
|
};
|
|
3707
|
-
//# sourceMappingURL=chunk-
|
|
3769
|
+
//# sourceMappingURL=chunk-4FNDOTW2.js.map
|