@useupup/preact 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js +298 -0
- package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js.map +1 -0
- package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs +298 -0
- package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs.map +1 -0
- package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js +170 -0
- package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js.map +1 -0
- package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs +170 -0
- package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs.map +1 -0
- package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs +628 -0
- package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs.map +1 -0
- package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js +628 -0
- package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js.map +1 -0
- package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs +172 -0
- package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs.map +1 -0
- package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js +172 -0
- package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js.map +1 -0
- package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js +175 -0
- package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js.map +1 -0
- package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs +175 -0
- package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs.map +1 -0
- package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js +184 -0
- package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js.map +1 -0
- package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs +184 -0
- package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs.map +1 -0
- package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs +236 -0
- package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs.map +1 -0
- package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js +236 -0
- package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js.map +1 -0
- package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js +173 -0
- package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js.map +1 -0
- package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs +173 -0
- package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs.map +1 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js +286 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js.map +1 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs +286 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs.map +1 -0
- package/dist/chunk-2XFVSPFN.cjs +293 -0
- package/dist/chunk-2XFVSPFN.cjs.map +1 -0
- package/dist/chunk-7JLN2HMZ.cjs +4296 -0
- package/dist/chunk-7JLN2HMZ.cjs.map +1 -0
- package/dist/chunk-BVMKSTAE.js +4296 -0
- package/dist/chunk-BVMKSTAE.js.map +1 -0
- package/dist/chunk-C7QBCXAH.js +39 -0
- package/dist/chunk-C7QBCXAH.js.map +1 -0
- package/dist/chunk-CR6CXFRP.js +195 -0
- package/dist/chunk-CR6CXFRP.js.map +1 -0
- package/dist/chunk-ETIJATY7.cjs +39 -0
- package/dist/chunk-ETIJATY7.cjs.map +1 -0
- package/dist/chunk-FH3LYESR.js +411 -0
- package/dist/chunk-FH3LYESR.js.map +1 -0
- package/dist/chunk-GKMTOOTQ.cjs +411 -0
- package/dist/chunk-GKMTOOTQ.cjs.map +1 -0
- package/dist/chunk-KHH3WHWU.js +74 -0
- package/dist/chunk-KHH3WHWU.js.map +1 -0
- package/dist/chunk-V2O5HRJV.cjs +74 -0
- package/dist/chunk-V2O5HRJV.cjs.map +1 -0
- package/dist/chunk-WCI3AGJV.js +831 -0
- package/dist/chunk-WCI3AGJV.js.map +1 -0
- package/dist/chunk-YWJHE7U4.cjs +195 -0
- package/dist/chunk-YWJHE7U4.cjs.map +1 -0
- package/dist/chunk-ZGWETRKI.js +293 -0
- package/dist/chunk-ZGWETRKI.js.map +1 -0
- package/dist/chunk-ZKZJ5PPP.cjs +831 -0
- package/dist/chunk-ZKZJ5PPP.cjs.map +1 -0
- package/dist/filerobot-bridge-52YH7W2M.cjs +92 -0
- package/dist/filerobot-bridge-52YH7W2M.cjs.map +1 -0
- package/dist/filerobot-bridge-ED4XMHX4.js +92 -0
- package/dist/filerobot-bridge-ED4XMHX4.js.map +1 -0
- package/dist/filerobot-island.css +97 -0
- package/dist/filerobot-island.css.map +1 -0
- package/dist/filerobot-island.js +77951 -0
- package/dist/filerobot-island.js.map +1 -0
- package/dist/index.cjs +5600 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5600 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.d.ts +4 -0
- package/dist/tailwind-prefixed.css +2529 -0
- package/package.json +130 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../react/src/components/shared/DriveAuthFallback.tsx","../../react/src/components/shared/DriveBrowser.tsx","../../react/src/components/shared/DriveBrowserHeader.tsx","../../react/src/components/shared/DriveBrowserItem.tsx","../../react/src/components/shared/DriveBrowserIcon.tsx","../../react/src/components/ServerModeDriveUploader.tsx","../../react/src/hooks/useServerModeDrive.ts"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\r\nimport { type DriveBrowserError, formatUiMessage as t } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport {\r\n useUploaderI18n,\r\n useUploaderTheme,\r\n} from '../../context/UploaderContext'\r\nimport SourceViewContainer from './SourceViewContainer'\r\n\r\ntype Props = {\r\n providerName: string\r\n onRetry: () => void\r\n /** initGis degradation (F-124) — missing config / GIS failed to attach. */\r\n error?: DriveBrowserError | undefined\r\n 'data-upup-slot'?: string | undefined\r\n}\r\n\r\nexport default function DriveAuthFallback({\r\n providerName,\r\n onRetry,\r\n error,\r\n 'data-upup-slot': dataUpupSlot = 'drive-auth-fallback',\r\n}: Readonly<Props>): React.ReactElement | null {\r\n const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()\r\n const { translations: tr } = useUploaderI18n()\r\n\r\n // One-shot auto sign-in: the provider tile click carries a transient user\r\n // activation (~5s in modern browsers), so kicking the OAuth popup off on\r\n // mount goes straight to the provider instead of an interstitial. If the\r\n // popup is blocked (activation consumed/expired), this view stays as the\r\n // manual fallback. Never auto-retries after an error.\r\n const attemptedRef = useRef(false)\r\n useEffect(() => {\r\n if (attemptedRef.current || error) return\r\n attemptedRef.current = true\r\n onRetry()\r\n }, [error, onRetry])\r\n\r\n return (\r\n <SourceViewContainer data-upup-slot={dataUpupSlot}>\r\n <div className=\"upup-flex upup-h-full upup-w-full upup-flex-col upup-items-center upup-justify-center upup-gap-4 upup-p-6 upup-text-center\">\r\n {!!error && (\r\n <p\r\n data-testid=\"upup-drive-error\"\r\n data-upup-slot=\"drive-error\"\r\n role=\"alert\"\r\n className=\"upup-p-4 upup-text-sm upup-text-red-600 dark:upup-text-red-400\"\r\n >\r\n {t(tr.driveLoadError, { message: error.message })}\r\n </p>\r\n )}\r\n <p\r\n className={cn(\r\n 'upup-text-sm upup-text-[#333]',\r\n {\r\n 'upup-text-[#FAFAFA] dark:upup-text-[#FAFAFA]':\r\n dark,\r\n },\r\n slotClasses.sourceView,\r\n )}\r\n >\r\n {t(tr.authenticatePrompt, { provider: providerName })}\r\n </p>\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n 'upup-rounded-md upup-bg-[#0ea5e9] upup-px-4 upup-py-2 upup-text-sm upup-font-medium upup-text-white upup-transition-all upup-duration-300 hover:upup-bg-[#0284c7]',\r\n {\r\n 'upup-bg-[#38bdf8] hover:upup-bg-[#0ea5e9] dark:upup-bg-[#38bdf8] dark:hover:upup-bg-[#0ea5e9]':\r\n dark,\r\n },\r\n )}\r\n onClick={onRetry}\r\n >\r\n {t(tr.signInWith, { provider: providerName })}\r\n </button>\r\n </div>\r\n </SourceViewContainer>\r\n )\r\n}\r\n","import React, { Dispatch, SetStateAction, useMemo, useState } from 'react'\r\nimport {\r\n type DriveBrowserError,\r\n type DriveFile,\r\n type DriveFolder,\r\n type DriveUser,\r\n formatUiMessage as t,\r\n pluralUiMessage as plural,\r\n} from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport {\r\n useUploaderI18n,\r\n useUploaderOptions,\r\n useUploaderTheme,\r\n} from '../../context/UploaderContext'\r\nimport { searchDriveFiles } from '../../lib/file'\r\nimport SourceViewContainer from './SourceViewContainer'\r\nimport DriveBrowserHeader from './DriveBrowserHeader'\r\nimport DriveBrowserItem from './DriveBrowserItem'\r\n\r\ntype Props = {\r\n isClickLoading?: boolean | undefined\r\n driveFiles?: DriveFolder | undefined\r\n path: DriveFolder[]\r\n setPath: Dispatch<SetStateAction<DriveFolder[]>>\r\n user?: DriveUser | undefined\r\n handleSignOut: () => Promise<void>\r\n handleClick: (file: DriveFile) => void | Promise<void>\r\n selectedFiles: DriveFile[]\r\n showLoader: boolean\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder?: (() => Promise<void> | void) | undefined\r\n /** The one drive browse-failure surface (F-124). Set = show the banner, not the loader. */\r\n error?: DriveBrowserError | undefined\r\n /** Drives the \"Load more\" button (F-125). */\r\n hasMore?: boolean | undefined\r\n isLoadingMore?: boolean | undefined\r\n loadMore?: (() => void | Promise<void>) | undefined\r\n 'data-upup-slot'?: string | undefined\r\n signIn?: (() => void) | undefined\r\n}\r\n\r\nfunction filterItems(item: DriveFile, accept: string) {\r\n if (item.isFolder) return true\r\n if (!accept || accept === '*') return true\r\n return accept.split(',').some(pattern => {\r\n const p = pattern.trim()\r\n if (p.startsWith('.')) return item.name.endsWith(p)\r\n if (p.endsWith('/*'))\r\n return item.mimeType.startsWith(p.replace('/*', '/'))\r\n return item.mimeType === p\r\n })\r\n}\r\n\r\nexport default function DriveBrowser({\r\n isClickLoading = false,\r\n driveFiles,\r\n path,\r\n setPath,\r\n handleClick,\r\n selectedFiles,\r\n showLoader,\r\n handleSubmit,\r\n handleCancelDownload,\r\n onSelectCurrentFolder,\r\n error,\r\n hasMore = false,\r\n isLoadingMore = false,\r\n loadMore,\r\n 'data-upup-slot': dataUpupSlot = 'drive-browser',\r\n ...rest\r\n}: Readonly<Props>): React.ReactElement | null {\r\n const {\r\n allowedFileTypes,\r\n icons: { LoaderIcon },\r\n } = useUploaderOptions()\r\n const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()\r\n const { translations: tr } = useUploaderI18n()\r\n const [searchTerm, setSearchTerm] = useState('')\r\n const items = path[path.length - 1]?.children?.filter(item =>\r\n filterItems(item, allowedFileTypes),\r\n )\r\n const displayedItems = useMemo(\r\n () => searchDriveFiles(items ?? [], searchTerm) || [],\r\n [searchTerm, items],\r\n )\r\n // error short-circuits the perpetual loader — the exact F-123/F-124 symptom\r\n // (a failed load or download previously left the spinner running forever).\r\n const isLoading = !error && (isClickLoading || !driveFiles)\r\n\r\n return (\r\n <SourceViewContainer\r\n isLoading={isLoading}\r\n data-upup-slot={dataUpupSlot}\r\n >\r\n {isLoading ? (\r\n <LoaderIcon />\r\n ) : (\r\n <div\r\n data-testid=\"upup-drive-browser\"\r\n className=\"upup-grid upup-h-full upup-w-full upup-grid-rows-[auto,1fr,auto] upup-overflow-auto\"\r\n >\r\n <DriveBrowserHeader\r\n showSearch={!!items?.length}\r\n path={path}\r\n setPath={setPath}\r\n searchTerm={searchTerm}\r\n onSearch={setSearchTerm}\r\n {...rest}\r\n />\r\n {!!path && (\r\n <div\r\n // Transparent on the panel gradient — no inner box.\r\n className={cn(\r\n 'upup-h-full upup-overflow-y-auto upup-pt-2',\r\n {\r\n 'upup-text-[#fafafa] dark:upup-text-[#fafafa]':\r\n dark,\r\n },\r\n slotClasses.driveBody,\r\n )}\r\n >\r\n {/* Error state: a calm centered message, not a\r\n banner strip over an empty list. */}\r\n {!!error && (\r\n <div className=\"upup-flex upup-h-full upup-flex-col upup-items-center upup-justify-center upup-px-6 upup-text-center\">\r\n <p\r\n data-testid=\"upup-drive-error\"\r\n data-upup-slot=\"drive-error\"\r\n role=\"alert\"\r\n className=\"upup-text-sm upup-text-red-600 dark:upup-text-red-400\"\r\n >\r\n {t(tr.driveLoadError, {\r\n message: error.message,\r\n })}\r\n </p>\r\n </div>\r\n )}\r\n {!!displayedItems.length && (\r\n <ul className=\"upup-p-2\">\r\n {displayedItems.map(file => {\r\n return (\r\n <DriveBrowserItem\r\n key={file.id}\r\n file={file}\r\n handleClick={\r\n isClickLoading || showLoader\r\n ? () => {}\r\n : handleClick\r\n }\r\n selectedFiles={selectedFiles}\r\n />\r\n )\r\n })}\r\n </ul>\r\n )}\r\n {!displayedItems.length && !error && (\r\n <div className=\"upup-flex upup-h-full upup-flex-col upup-items-center upup-justify-center\">\r\n <p className=\"upup-text-xs upup-opacity-70\">\r\n {tr.noAcceptedFilesFound}\r\n </p>\r\n </div>\r\n )}\r\n {hasMore && (\r\n <button\r\n data-testid=\"upup-drive-load-more\"\r\n data-upup-slot=\"drive-load-more\"\r\n onClick={() => {\r\n void loadMore?.()\r\n }}\r\n disabled={isLoadingMore}\r\n className=\"upup-mx-auto upup-my-2 upup-block upup-rounded-md upup-px-3 upup-py-1.5 upup-text-sm upup-text-[#0284c7] disabled:upup-opacity-50\"\r\n >\r\n {isLoadingMore ? tr.loading : tr.loadMore}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Footer only when there is something to act on — never\r\n under an error state. Hairline divider, no inner box. */}\r\n {(!!selectedFiles.length || !!onSelectCurrentFolder) &&\r\n !error && (\r\n <div\r\n className={cn(\r\n 'upup-flex upup-origin-bottom upup-items-center upup-justify-start upup-gap-4 upup-border-t upup-px-3 upup-py-2',\r\n dark\r\n ? 'upup-border-white/[0.08] upup-text-[#fafafa]'\r\n : 'upup-border-black/[0.06]',\r\n slotClasses.driveFooter,\r\n )}\r\n >\r\n {!!onSelectCurrentFolder && (\r\n <button\r\n className={cn(\r\n 'upup-rounded-md upup-bg-transparent upup-px-3 upup-py-2 upup-text-sm upup-font-medium upup-text-[#0284c7] upup-transition-all upup-duration-300',\r\n {\r\n 'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]':\r\n dark,\r\n },\r\n )}\r\n onClick={() => {\r\n void onSelectCurrentFolder?.()\r\n }}\r\n disabled={showLoader}\r\n >\r\n {tr.selectThisFolder}\r\n </button>\r\n )}\r\n <button\r\n className={cn(\r\n 'upup-rounded-md upup-bg-[#0ea5e9] upup-px-3 upup-py-2 upup-text-sm upup-font-medium upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-animate-pulse': showLoader,\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]':\r\n dark,\r\n },\r\n slotClasses.driveAddFilesButton,\r\n )}\r\n onClick={() => {\r\n void handleSubmit()\r\n }}\r\n disabled={showLoader}\r\n >\r\n {t(\r\n plural(\r\n tr,\r\n 'addFiles',\r\n selectedFiles.length,\r\n ),\r\n { count: selectedFiles.length },\r\n )}\r\n </button>\r\n <button\r\n className={cn(\r\n 'upup-ml-auto upup-rounded-md upup-p-1 upup-text-sm upup-text-[#0284c7] upup-transition-all upup-duration-300',\r\n {\r\n 'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]':\r\n dark,\r\n },\r\n slotClasses.driveCancelFilesButton,\r\n )}\r\n onClick={handleCancelDownload}\r\n disabled={showLoader}\r\n >\r\n {tr.cancel}\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </SourceViewContainer>\r\n )\r\n}\r\n","import React, {\r\n Dispatch,\r\n SetStateAction,\r\n useContext,\r\n useEffect,\r\n useRef,\r\n useState,\r\n} from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { type DriveFolder, type DriveUser } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport Icon from '../Icon'\r\nimport {\r\n useUploaderI18n,\r\n useUploaderSource,\r\n useUploaderTheme,\r\n} from '../../context/UploaderContext'\r\nimport { SourceViewHeaderExtraContext } from '../../context/SourceViewHeaderExtraContext'\r\n\r\ntype Props = {\r\n path: DriveFolder[]\r\n setPath: Dispatch<SetStateAction<DriveFolder[]>>\r\n handleSignOut: () => Promise<void>\r\n showSearch: boolean\r\n searchTerm: string\r\n onSearch: Dispatch<SetStateAction<string>>\r\n user?: DriveUser | undefined\r\n signIn?: (() => void) | undefined\r\n}\r\n\r\nexport default function DriveBrowserHeader({\r\n path,\r\n setPath,\r\n user,\r\n handleSignOut,\r\n showSearch,\r\n onSearch,\r\n searchTerm,\r\n}: Readonly<Props>): React.ReactElement | null {\r\n const { setActiveSource } = useUploaderSource()\r\n const { translations: tr } = useUploaderI18n()\r\n const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()\r\n const headerExtraHost = useContext(SourceViewHeaderExtraContext)\r\n // Collapsed/expanded search lives here; the term itself stays in DriveBrowser.\r\n const [searchOpen, setSearchOpen] = useState(false)\r\n const searchInputRef = useRef<HTMLInputElement>(null)\r\n\r\n // Focus the field the moment it expands.\r\n useEffect(() => {\r\n if (searchOpen) searchInputRef.current?.focus()\r\n }, [searchOpen])\r\n\r\n if (!user) return null\r\n\r\n // Once navigated into a folder we show a Back affordance + the current\r\n // folder name, not a full breadcrumb trail (long provider folder names\r\n // blew the row up, and multi-level jumps weren't worth the fragility).\r\n const navigated = path.length > 1\r\n const currentFolder = path[path.length - 1]\r\n const hasFilter = searchTerm.trim().length > 0\r\n\r\n const searchField = (expand: boolean): React.ReactElement => (\r\n <div\r\n className={cn(\r\n 'upup-relative upup-min-w-0 upup-flex-1',\r\n expand && 'upup-fx-search-expand',\r\n slotClasses.driveSearchContainer,\r\n )}\r\n >\r\n <input\r\n ref={searchInputRef}\r\n type=\"search\"\r\n name=\"upup-drive-search\"\r\n data-testid=\"upup-drive-search-input\"\r\n data-upup-slot=\"drive-search-input\"\r\n aria-label={tr.search}\r\n className={cn(\r\n 'upup-w-full upup-rounded-lg upup-px-3 upup-py-1.5 upup-pl-8 upup-text-xs upup-outline-none upup-ring-1 upup-transition-shadow focus:upup-ring-2 focus:upup-ring-[#38bdf8]',\r\n dark\r\n ? 'upup-bg-white/[0.06] upup-text-[#e2e8f0] upup-ring-white/[0.1] placeholder:upup-text-[#64748b]'\r\n : 'upup-bg-white upup-text-[#0f172a] upup-ring-black/[0.08] placeholder:upup-text-[#94a3b8]',\r\n slotClasses.driveSearchInput,\r\n )}\r\n placeholder={tr.search}\r\n value={searchTerm}\r\n onChange={e => {\r\n onSearch(e.currentTarget.value)\r\n }}\r\n onKeyDown={e => {\r\n if (e.key === 'Escape') setSearchOpen(false)\r\n }}\r\n onBlur={() => {\r\n // Collapse only when empty — a live filter must stay visible.\r\n if (!searchTerm) setSearchOpen(false)\r\n }}\r\n />\r\n <Icon\r\n name=\"search\"\r\n className=\"upup-absolute upup-left-2.5 upup-top-1/2 upup--translate-y-1/2 upup-text-[#939393]\"\r\n />\r\n </div>\r\n )\r\n\r\n return (\r\n <div data-upup-slot=\"drive-browser-header\">\r\n {/* Account controls live in the SourceView header row (portal),\r\n next to Back, separated by a hairline — not in their own strip. */}\r\n {!!headerExtraHost &&\r\n createPortal(\r\n <>\r\n <div className=\"upup-relative upup-flex upup-h-6 upup-w-6 upup-items-center upup-justify-center upup-overflow-hidden upup-rounded-full\">\r\n {!!user.picture && (\r\n <img\r\n alt={user.name}\r\n src={user.picture}\r\n className=\"upup-bg-center upup-object-cover\"\r\n />\r\n )}\r\n {!user.picture && (\r\n <Icon name=\"user\" className=\"upup-text-xl\" />\r\n )}\r\n </div>\r\n <button\r\n className={cn(\r\n 'upup-hover:upup-underline upup-text-xs upup-font-medium upup-text-[#0284c7]',\r\n {\r\n 'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]':\r\n dark,\r\n },\r\n slotClasses.driveLogoutButton,\r\n )}\r\n onClick={() => {\r\n void handleSignOut()\r\n setActiveSource(undefined)\r\n }}\r\n >\r\n {tr.logOut}\r\n </button>\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n 'upup-h-4 upup-w-px',\r\n dark ? 'upup-bg-white/15' : 'upup-bg-black/15',\r\n )}\r\n />\r\n </>,\r\n headerExtraHost,\r\n )}\r\n {(navigated || showSearch) && (\r\n <div\r\n className={cn(\r\n 'upup-flex upup-items-center upup-gap-2.5 upup-px-3 upup-py-2 upup-text-xs upup-font-medium upup-text-[#333]',\r\n {\r\n 'upup-text-[#FAFAFA] dark:upup-text-[#FAFAFA]':\r\n dark,\r\n },\r\n slotClasses.driveHeader,\r\n )}\r\n >\r\n {navigated ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n data-testid=\"upup-drive-back\"\r\n data-upup-slot=\"drive-back\"\r\n aria-label={tr.overlayBack}\r\n onClick={() => {\r\n setPath(prev => prev.slice(0, -1))\r\n }}\r\n className={cn(\r\n 'upup-fx-hover-lift upup-fx-press upup-flex upup-h-7 upup-w-7 upup-shrink-0 upup-items-center upup-justify-center upup-rounded-lg',\r\n dark\r\n ? 'upup-text-[#e2e8f0] hover:upup-bg-white/[0.08]'\r\n : 'upup-text-[#334155] hover:upup-bg-black/[0.05]',\r\n )}\r\n >\r\n <Icon name=\"chevron-left\" />\r\n </button>\r\n {!searchOpen && (\r\n <span\r\n data-upup-slot=\"drive-current-folder\"\r\n title={currentFolder?.name}\r\n className=\"upup-min-w-0 upup-flex-1 upup-truncate upup-font-medium\"\r\n >\r\n {currentFolder?.name}\r\n </span>\r\n )}\r\n {showSearch && !searchOpen && (\r\n <button\r\n type=\"button\"\r\n data-testid=\"upup-drive-search-toggle\"\r\n data-upup-slot=\"drive-search-toggle\"\r\n aria-label={tr.search}\r\n aria-expanded={false}\r\n onClick={() => {\r\n setSearchOpen(true)\r\n }}\r\n className={cn(\r\n 'upup-fx-hover-lift upup-fx-press upup-ml-auto upup-flex upup-h-7 upup-w-7 upup-shrink-0 upup-items-center upup-justify-center upup-rounded-lg',\r\n hasFilter\r\n ? 'upup-text-[#0ea5e9]'\r\n : dark\r\n ? 'upup-text-[#94a3b8] hover:upup-bg-white/[0.08]'\r\n : 'upup-text-[#64748b] hover:upup-bg-black/[0.05]',\r\n )}\r\n >\r\n <Icon name=\"search\" />\r\n </button>\r\n )}\r\n {showSearch && searchOpen && searchField(true)}\r\n </>\r\n ) : (\r\n showSearch && searchField(false)\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n","import React from 'react'\r\nimport { type DriveFile } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport { useUploaderTheme } from '../../context/UploaderContext'\r\nimport DriveBrowserIcon from './DriveBrowserIcon'\r\n\r\ntype DriveBrowserItemProps = {\r\n file: DriveFile\r\n handleClick: (file: DriveFile) => void | Promise<void>\r\n selectedFiles: DriveFile[]\r\n}\r\n\r\nexport default function DriveBrowserItem({\r\n file,\r\n selectedFiles,\r\n handleClick,\r\n}: Readonly<DriveBrowserItemProps>): React.ReactElement | null {\r\n const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()\r\n const isFolder = file.isFolder\r\n const isFileSelected = selectedFiles.filter(f => f.id === file.id).length\r\n\r\n return (\r\n <div\r\n data-upup-slot=\"drive-browser-item\"\r\n className={cn(\r\n // Panel-chrome row (states-tour-3 .st3-prow): translucent card +\r\n // hairline ring, sky-tinted selection, subtle lift on hover.\r\n 'upup-fx-hover-lift upup-group upup-mb-1.5 upup-flex upup-cursor-pointer upup-items-center upup-justify-between upup-gap-2 upup-rounded-[11px] upup-px-3 upup-py-2.5 upup-ring-1',\r\n {\r\n 'upup-font-medium': isFolder,\r\n },\r\n isFileSelected\r\n ? dark\r\n ? 'upup-bg-[#0ea5e9]/10 upup-ring-[#38bdf8]/35'\r\n : 'upup-bg-[#0ea5e9]/10 upup-ring-[#0ea5e9]/40'\r\n : dark\r\n ? 'upup-bg-white/[0.04] upup-ring-white/[0.06] hover:upup-bg-white/[0.07]'\r\n : 'upup-bg-white upup-ring-black/[0.07] hover:upup-bg-slate-50',\r\n {\r\n [slotClasses.driveItemContainerDefault ?? '']:\r\n !isFileSelected &&\r\n slotClasses.driveItemContainerDefault,\r\n [slotClasses.driveItemContainerSelected ?? '']:\r\n isFileSelected &&\r\n slotClasses.driveItemContainerSelected,\r\n },\r\n )}\r\n onClick={() => {\r\n void handleClick(file)\r\n }}\r\n >\r\n <div\r\n className={cn(\r\n 'upup-flex upup-items-center upup-gap-2',\r\n slotClasses.driveItemContainerInner,\r\n )}\r\n >\r\n <DriveBrowserIcon file={file} />\r\n <h1\r\n className={cn(\r\n 'upup-text-wrap upup-break-all upup-text-xs',\r\n {\r\n 'upup-text-[#e0e0e0] dark:upup-text-[#e0e0e0]':\r\n dark,\r\n },\r\n slotClasses.driveItemInnerText,\r\n )}\r\n >\r\n {file.name}\r\n </h1>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import React, { ReactEventHandler } from 'react'\r\nimport { type DriveFile } from '@useupup/core'\r\nimport { b64EncodeUnicode, cn } from '@useupup/core/internal'\r\nimport Icon from '../Icon'\r\nimport { useUploaderTheme } from '../../context/UploaderContext'\r\n\r\nconst handleImgError: ReactEventHandler<HTMLImageElement> = e => {\r\n const svg = `<svg stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M14 3v4a1 1 0 0 0 1 1h4\"></path><path d=\"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z\"></path></svg>`\r\n e.currentTarget.src = `data:image/svg+xml;base64,${b64EncodeUnicode(svg)}`\r\n e.currentTarget.onerror = null\r\n}\r\n\r\nexport default function DriveBrowserIcon({\r\n file,\r\n}: {\r\n file: DriveFile\r\n}): React.ReactElement | null {\r\n const { isDark: dark } = useUploaderTheme()\r\n const isFolder = file.isFolder\r\n const src = file.thumbnail\r\n\r\n if (isFolder)\r\n return (\r\n <i className=\"upup-flex-grow upup-text-lg\">\r\n {/* Amber filled folder in both themes — folders read\r\n unmistakably as folders. */}\r\n <Icon name=\"folder-filled\" className=\"upup-text-[#fbbf24]\" />\r\n </i>\r\n )\r\n if (!src)\r\n return (\r\n <i className=\"upup-flex-grow upup-text-lg\">\r\n <Icon\r\n name=\"file\"\r\n className={cn({\r\n 'upup-text-[#6D6D6D] dark:upup-text-[#6D6D6D]': dark,\r\n })}\r\n />\r\n </i>\r\n )\r\n\r\n return (\r\n <img\r\n src={src}\r\n alt={file.name}\r\n className=\"upup-h-5 upup-w-5 upup-flex-grow upup-rounded-md upup-shadow\"\r\n onError={handleImgError}\r\n />\r\n )\r\n}\r\n","import React, { useState } from 'react'\r\nimport {\r\n useUploaderI18n,\r\n useUploaderOptions,\r\n useUploaderTheme,\r\n} from '../context/UploaderContext'\r\nimport {\r\n useServerModeDrive,\r\n type ServerDriveFile,\r\n type ServerModeProvider,\r\n} from '../hooks/useServerModeDrive'\r\nimport SourceViewContainer from './shared/SourceViewContainer'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport { errorCodeToMessageKey } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\n\r\ntype Props = {\r\n provider: ServerModeProvider\r\n onBack?: () => void\r\n 'data-upup-slot'?: string\r\n}\r\n\r\nconst PROVIDER_LABEL: Record<ServerModeProvider, string> = {\r\n 'google-drive': 'Google Drive',\r\n 'one-drive': 'OneDrive',\r\n dropbox: 'Dropbox',\r\n box: 'Box',\r\n}\r\n\r\nexport default function ServerModeDriveUploader({\r\n provider,\r\n onBack,\r\n 'data-upup-slot': dataUpupSlot = `drive-browser-${provider}`,\r\n}: Readonly<Props>): React.ReactElement | null {\r\n const { isDark: dark } = useUploaderTheme()\r\n const {\r\n icons: { LoaderIcon },\r\n } = useUploaderOptions()\r\n const { translator } = useUploaderI18n()\r\n const { state, search, setSearch, refresh, transfer, startAuth } =\r\n useServerModeDrive(provider)\r\n const [selected, setSelected] = useState<Set<string>>(new Set())\r\n const [transferring, setTransferring] = useState(false)\r\n\r\n if (state.status === 'reauth') {\r\n return (\r\n <DriveAuthFallback\r\n providerName={PROVIDER_LABEL[provider]}\r\n onRetry={startAuth}\r\n />\r\n )\r\n }\r\n\r\n const isLoading = state.status === 'loading' || state.status === 'idle'\r\n const files: ServerDriveFile[] = state.status === 'ready' ? state.files : []\r\n\r\n const toggle = (id: string) => {\r\n setSelected(prev => {\r\n const next = new Set(prev)\r\n if (next.has(id)) next.delete(id)\r\n else next.add(id)\r\n return next\r\n })\r\n }\r\n\r\n const handleTransfer = async () => {\r\n setTransferring(true)\r\n try {\r\n for (const file of files.filter(f => selected.has(f.id))) {\r\n const result = await transfer(file)\r\n if (result.status === 'reauth') {\r\n startAuth()\r\n return\r\n }\r\n }\r\n setSelected(new Set())\r\n onBack?.()\r\n } finally {\r\n setTransferring(false)\r\n }\r\n }\r\n\r\n return (\r\n <SourceViewContainer\r\n isLoading={isLoading}\r\n data-upup-slot={dataUpupSlot}\r\n >\r\n {isLoading ? (\r\n <LoaderIcon />\r\n ) : (\r\n <div\r\n data-testid=\"upup-server-drive-browser\"\r\n className=\"upup-grid upup-h-full upup-w-full upup-grid-rows-[auto,1fr,auto] upup-overflow-auto\"\r\n >\r\n <div\r\n className={cn(\r\n 'upup-flex upup-items-center upup-gap-2 upup-border-b upup-px-3 upup-py-2.5',\r\n dark\r\n ? 'upup-border-white/[0.06] upup-text-[#e2e8f0]'\r\n : 'upup-border-black/[0.06] upup-text-gray-800',\r\n )}\r\n data-upup-slot=\"drive-browser-header\"\r\n >\r\n <span className=\"upup-text-sm upup-font-medium\">\r\n {PROVIDER_LABEL[provider]}\r\n </span>\r\n <input\r\n type=\"search\"\r\n name=\"upup-drive-search\"\r\n aria-label=\"Search\"\r\n value={search}\r\n onChange={e => {\r\n setSearch(e.target.value)\r\n }}\r\n onKeyDown={e => {\r\n if (e.key === 'Enter') {\r\n void refresh({\r\n search: e.currentTarget.value,\r\n })\r\n }\r\n }}\r\n placeholder=\"Search…\"\r\n className={cn(\r\n 'upup-ml-auto upup-rounded upup-border upup-px-2 upup-py-1 upup-text-xs',\r\n dark\r\n ? 'upup-border-gray-700 upup-bg-gray-800 upup-text-gray-100'\r\n : 'upup-border-gray-300 upup-bg-white',\r\n )}\r\n />\r\n </div>\r\n <div className=\"upup-overflow-auto upup-p-2\">\r\n {state.status === 'error' && (\r\n <p\r\n data-testid=\"upup-drive-error\"\r\n data-upup-slot=\"drive-error\"\r\n role=\"alert\"\r\n className={cn(\r\n 'upup-p-4 upup-text-sm',\r\n dark\r\n ? 'upup-text-red-400'\r\n : 'upup-text-red-600',\r\n )}\r\n >\r\n {state.code && translator\r\n ? translator(\r\n `errors.${errorCodeToMessageKey(state.code)}`,\r\n { code: state.code },\r\n )\r\n : state.message}\r\n </p>\r\n )}\r\n {files.map(file => {\r\n const isSelected = selected.has(file.id)\r\n return (\r\n <button\r\n key={file.id}\r\n type=\"button\"\r\n onClick={() => {\r\n file.isFolder\r\n ? void refresh({\r\n folderId: file.id,\r\n })\r\n : toggle(file.id)\r\n }}\r\n data-upup-slot=\"drive-browser-item\"\r\n data-selected={isSelected}\r\n className={cn(\r\n // Panel-chrome row (states-tour-3 .st3-prow).\r\n 'upup-fx-hover-lift upup-mb-1.5 upup-flex upup-w-full upup-items-center upup-gap-3 upup-rounded-[11px] upup-px-3 upup-py-2.5 upup-text-left upup-text-sm upup-ring-1',\r\n isSelected\r\n ? 'upup-bg-[#0ea5e9]/10 upup-ring-[#38bdf8]/35'\r\n : dark\r\n ? 'upup-bg-white/[0.04] upup-text-[#e2e8f0] upup-ring-white/[0.06] hover:upup-bg-white/[0.07]'\r\n : 'upup-bg-black/[0.03] upup-text-gray-800 upup-ring-black/[0.06] hover:upup-bg-black/[0.05]',\r\n )}\r\n >\r\n <span\r\n className=\"upup-flex upup-h-[30px] upup-w-[30px] upup-flex-none upup-items-center upup-justify-center upup-rounded-[8px] upup-bg-white/[0.05]\"\r\n aria-hidden=\"true\"\r\n >\r\n {file.isFolder ? (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"17\"\r\n height=\"17\"\r\n fill=\"none\"\r\n stroke=\"#38bdf8\"\r\n strokeWidth=\"1.7\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M3 7a2 2 0 0 1 2-2h4l2 2h6a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\r\n </svg>\r\n ) : (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"17\"\r\n height=\"17\"\r\n fill=\"none\"\r\n stroke={\r\n dark ? '#94a3b8' : '#64748b'\r\n }\r\n strokeWidth=\"1.6\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M6 3h8l4 4v13a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z\" />\r\n <path d=\"M14 3v4h4\" />\r\n </svg>\r\n )}\r\n </span>\r\n <span className=\"upup-flex-1 upup-truncate\">\r\n {file.name}\r\n </span>\r\n {file.size != null && !file.isFolder && (\r\n <span className=\"upup-text-xs upup-opacity-60\">\r\n {formatBytes(file.size)}\r\n </span>\r\n )}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n <div\r\n className={cn(\r\n 'upup-flex upup-items-center upup-justify-between upup-gap-2 upup-border-t upup-p-3',\r\n dark\r\n ? 'upup-border-white/[0.06]'\r\n : 'upup-border-black/[0.06]',\r\n )}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={onBack}\r\n className=\"upup-text-sm upup-opacity-70 hover:upup-opacity-100\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"button\"\r\n disabled={selected.size === 0 || transferring}\r\n onClick={() => void handleTransfer()}\r\n className=\"upup-fx-press upup-rounded-lg upup-bg-[#0ea5e9] upup-px-3 upup-py-1.5 upup-text-sm upup-font-medium upup-text-white hover:upup-bg-[#0284c7] disabled:upup-opacity-50\"\r\n >\r\n {transferring\r\n ? 'Uploading…'\r\n : `Add files${selected.size ? ` (${selected.size})` : ''}`}\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n </SourceViewContainer>\r\n )\r\n}\r\n\r\nfunction formatBytes(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\r\n if (bytes < 1024 * 1024 * 1024)\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\r\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`\r\n}\r\n","import { useEffect, useRef, useSyncExternalStore } from 'react'\r\nimport { ServerModeDriveController } from '@useupup/core/internal'\r\nimport type {\r\n ServerDriveSnapshot,\r\n ServerDriveTransferResult,\r\n} from '@useupup/core/internal'\r\nimport type { ServerModeProvider, ServerDriveFile } from '@useupup/core'\r\nimport { useUploaderRuntime } from '../context/UploaderContext'\r\n\r\n// Re-export so existing consumers that imported these from this module keep working.\r\nexport type { ServerModeProvider, ServerDriveFile }\r\n\r\nexport function useServerModeDrive(provider: ServerModeProvider): {\r\n state: ServerDriveSnapshot['state']\r\n folderId: ServerDriveSnapshot['folderId']\r\n setFolderId: (id: string | undefined) => void\r\n search: ServerDriveSnapshot['search']\r\n setSearch: (s: string) => void\r\n refresh: (opts?: { folderId?: string; search?: string }) => Promise<void>\r\n transfer: (file: ServerDriveFile) => Promise<ServerDriveTransferResult>\r\n startAuth: () => void\r\n} {\r\n const { serverUrl } = useUploaderRuntime()\r\n const latest = useRef({ serverUrl })\r\n latest.current = { serverUrl }\r\n\r\n const controllerRef = useRef<ServerModeDriveController | undefined>(\r\n undefined,\r\n )\r\n if (!controllerRef.current) {\r\n controllerRef.current = new ServerModeDriveController({\r\n provider,\r\n serverUrl: () => latest.current.serverUrl,\r\n })\r\n }\r\n const controller = controllerRef.current\r\n\r\n const snap = useSyncExternalStore(\r\n controller.subscribe,\r\n controller.getSnapshot,\r\n )\r\n\r\n useEffect(() => {\r\n controller.init()\r\n return () => {\r\n controller.destroy()\r\n }\r\n }, [controller])\r\n\r\n return {\r\n state: snap.state,\r\n folderId: snap.folderId,\r\n setFolderId: (id: string | undefined) => {\r\n controller.setFolderId(id)\r\n void controller.refresh()\r\n },\r\n search: snap.search,\r\n setSearch: (s: string) => {\r\n controller.setSearch(s)\r\n void controller.refresh()\r\n },\r\n refresh: (opts?: { folderId?: string; search?: string }) =>\r\n controller.refresh(opts),\r\n transfer: (file: ServerDriveFile) => controller.transfer(file),\r\n startAuth: () => {\r\n controller.startAuth()\r\n },\r\n }\r\n}\r\n"],"mappings":"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","names":["t","cn","cn","cn","useRef","useEffect","jsxs","cn","jsx","useState","t"]}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// ../react/dist/chunk-N7TWHP5Z.js
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _internal = require('@useupup/core/internal');
|
|
7
|
+
function getFilerobotTheme(isDarkTheme) {
|
|
8
|
+
return isDarkTheme ? {
|
|
9
|
+
palette: {
|
|
10
|
+
"bg-secondary": "#1a1a1a",
|
|
11
|
+
"bg-primary": "#232323",
|
|
12
|
+
"bg-primary-active": "#2d2d2d",
|
|
13
|
+
"bg-stateless": "#2d2d2d",
|
|
14
|
+
"bg-hover": "#3a3a3a",
|
|
15
|
+
"bg-active": "#3a3a3a",
|
|
16
|
+
"accent-primary": "#30C5F7",
|
|
17
|
+
"accent-primary-hover": "#6DD8FB",
|
|
18
|
+
"accent-primary-active": "#6DD8FB",
|
|
19
|
+
accent_1_2_opacity: "rgba(48, 197, 247, 0.12)",
|
|
20
|
+
"accent-stateless": "#30C5F7",
|
|
21
|
+
"icon-primary": "#ffffff",
|
|
22
|
+
"icons-primary": "#ffffff",
|
|
23
|
+
"icons-secondary": "#d1d5db",
|
|
24
|
+
"icons-placeholder": "#9ca3af",
|
|
25
|
+
"borders-secondary": "#374151",
|
|
26
|
+
"borders-primary": "#4b5563",
|
|
27
|
+
"borders-strong": "#6b7280",
|
|
28
|
+
"borders-disabled": "#6b7280",
|
|
29
|
+
"borders-button": "#4b5563",
|
|
30
|
+
"light-shadow": "rgba(0, 0, 0, 0.4)",
|
|
31
|
+
warning: "#f59e0b",
|
|
32
|
+
"txt-primary": "#ffffff",
|
|
33
|
+
"txt-secondary": "#d1d5db",
|
|
34
|
+
"txt-primary-invert": "#232323",
|
|
35
|
+
"txt-secondary-invert": "#1a1a1a",
|
|
36
|
+
"btn-primary-text": "#ffffff",
|
|
37
|
+
"btn-secondary-text": "#d1d5db",
|
|
38
|
+
"btn-disabled-text": "#6b7280",
|
|
39
|
+
"link-stateless": "#d1d5db"
|
|
40
|
+
},
|
|
41
|
+
typography: {
|
|
42
|
+
fontFamily: "inherit"
|
|
43
|
+
}
|
|
44
|
+
} : {
|
|
45
|
+
palette: {
|
|
46
|
+
"bg-secondary": "#f9fafb",
|
|
47
|
+
"bg-primary": "#ffffff",
|
|
48
|
+
"bg-primary-active": "#f3f4f6",
|
|
49
|
+
"bg-stateless": "#ffffff",
|
|
50
|
+
"bg-hover": "#eff6ff",
|
|
51
|
+
"bg-active": "#dbeafe",
|
|
52
|
+
"accent-primary": "#2563eb",
|
|
53
|
+
"accent-primary-hover": "#1d4ed8",
|
|
54
|
+
"accent-primary-active": "#1e40af",
|
|
55
|
+
accent_1_2_opacity: "rgba(37, 99, 235, 0.12)",
|
|
56
|
+
"accent-stateless": "#2563eb",
|
|
57
|
+
"icon-primary": "#111827",
|
|
58
|
+
"icons-primary": "#111827",
|
|
59
|
+
"icons-secondary": "#4b5563",
|
|
60
|
+
"icons-placeholder": "#9ca3af",
|
|
61
|
+
"borders-secondary": "#e5e7eb",
|
|
62
|
+
"borders-primary": "#d1d5db",
|
|
63
|
+
"borders-strong": "#9ca3af",
|
|
64
|
+
"borders-disabled": "#d1d5db",
|
|
65
|
+
"borders-button": "#2563eb",
|
|
66
|
+
"light-shadow": "rgba(15, 23, 42, 0.12)",
|
|
67
|
+
warning: "#d97706",
|
|
68
|
+
"txt-primary": "#111827",
|
|
69
|
+
"txt-secondary": "#4b5563",
|
|
70
|
+
"txt-primary-invert": "#ffffff",
|
|
71
|
+
"txt-secondary-invert": "#f9fafb",
|
|
72
|
+
"btn-primary-text": "#ffffff",
|
|
73
|
+
"btn-secondary-text": "#1d4ed8",
|
|
74
|
+
"btn-disabled-text": "#93c5fd",
|
|
75
|
+
"link-stateless": "#2563eb"
|
|
76
|
+
},
|
|
77
|
+
typography: {
|
|
78
|
+
fontFamily: "inherit"
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function getImageEditorCssOverrides(isDarkTheme) {
|
|
83
|
+
const common = `
|
|
84
|
+
/* Fill container */
|
|
85
|
+
.FIE_root {
|
|
86
|
+
height: 100% !important;
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
return isDarkTheme ? common + `
|
|
90
|
+
/* Input background & border overrides (hardcoded in @scaleflex/ui) */
|
|
91
|
+
[data-upup-theme='dark'] .SfxInput-Base {
|
|
92
|
+
background-color: #2d2d2d !important;
|
|
93
|
+
border-color: #4b5563 !important;
|
|
94
|
+
}
|
|
95
|
+
[data-upup-theme='dark'] .SfxInput-Base:focus-within {
|
|
96
|
+
background-color: #353535 !important;
|
|
97
|
+
border-color: #6b7280 !important;
|
|
98
|
+
}
|
|
99
|
+
[data-upup-theme='dark'] .SfxInput-Base:hover {
|
|
100
|
+
background-color: #353535 !important;
|
|
101
|
+
}
|
|
102
|
+
/* Carousel gradient arrow overrides (hardcoded white in FIE) */
|
|
103
|
+
[data-upup-theme='dark'] .FIE_carousel-prev-button {
|
|
104
|
+
background: linear-gradient(
|
|
105
|
+
90deg,
|
|
106
|
+
#232323 1.56%,
|
|
107
|
+
rgba(35, 35, 35, 0.89) 52.4%,
|
|
108
|
+
rgba(35, 35, 35, 0.53) 76.04%,
|
|
109
|
+
rgba(35, 35, 35, 0) 100%
|
|
110
|
+
) !important;
|
|
111
|
+
}
|
|
112
|
+
[data-upup-theme='dark'] .FIE_carousel-next-button {
|
|
113
|
+
background: linear-gradient(
|
|
114
|
+
270deg,
|
|
115
|
+
#232323 1.56%,
|
|
116
|
+
rgba(35, 35, 35, 0.89) 52.4%,
|
|
117
|
+
rgba(35, 35, 35, 0.53) 76.04%,
|
|
118
|
+
rgba(35, 35, 35, 0) 100%
|
|
119
|
+
) !important;
|
|
120
|
+
}
|
|
121
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button,
|
|
122
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button {
|
|
123
|
+
background-color: #30c5f7 !important;
|
|
124
|
+
color: #ffffff !important;
|
|
125
|
+
border: none !important;
|
|
126
|
+
}
|
|
127
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button .SfxButton-Label,
|
|
128
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button .SfxButton-Label {
|
|
129
|
+
color: #ffffff !important;
|
|
130
|
+
opacity: 1 !important;
|
|
131
|
+
}
|
|
132
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button:hover,
|
|
133
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button:focus-visible,
|
|
134
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button:hover,
|
|
135
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button:focus-visible {
|
|
136
|
+
background-color: #6dd8fb !important;
|
|
137
|
+
}
|
|
138
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button:active,
|
|
139
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button:active {
|
|
140
|
+
background-color: #27b1df !important;
|
|
141
|
+
}
|
|
142
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button:disabled,
|
|
143
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button:disabled {
|
|
144
|
+
color: #9ca3af !important;
|
|
145
|
+
background-color: rgba(48, 197, 247, 0.12) !important;
|
|
146
|
+
border: 1px solid #4b5563 !important;
|
|
147
|
+
}
|
|
148
|
+
[data-upup-theme='dark'] .FIE_topbar-save-button:disabled .SfxButton-Label,
|
|
149
|
+
[data-upup-theme='dark'] .FIE_watermark-add-button:disabled .SfxButton-Label {
|
|
150
|
+
color: #9ca3af !important;
|
|
151
|
+
opacity: 1 !important;
|
|
152
|
+
}
|
|
153
|
+
` : common + `
|
|
154
|
+
[data-upup-theme='light'] .FIE_topbar-save-button,
|
|
155
|
+
[data-upup-theme='light'] .FIE_watermark-add-button {
|
|
156
|
+
background-color: #2563eb !important;
|
|
157
|
+
color: #ffffff !important;
|
|
158
|
+
border: 1px solid #2563eb !important;
|
|
159
|
+
}
|
|
160
|
+
[data-upup-theme='light'] .FIE_topbar-save-button .SfxButton-Label,
|
|
161
|
+
[data-upup-theme='light'] .FIE_watermark-add-button .SfxButton-Label {
|
|
162
|
+
color: #ffffff !important;
|
|
163
|
+
opacity: 1 !important;
|
|
164
|
+
}
|
|
165
|
+
[data-upup-theme='light'] .FIE_topbar-save-button:hover,
|
|
166
|
+
[data-upup-theme='light'] .FIE_topbar-save-button:focus-visible,
|
|
167
|
+
[data-upup-theme='light'] .FIE_watermark-add-button:hover,
|
|
168
|
+
[data-upup-theme='light'] .FIE_watermark-add-button:focus-visible {
|
|
169
|
+
background-color: #1d4ed8 !important;
|
|
170
|
+
border-color: #1d4ed8 !important;
|
|
171
|
+
}
|
|
172
|
+
[data-upup-theme='light'] .FIE_topbar-save-button:active,
|
|
173
|
+
[data-upup-theme='light'] .FIE_watermark-add-button:active {
|
|
174
|
+
background-color: #1e40af !important;
|
|
175
|
+
border-color: #1e40af !important;
|
|
176
|
+
}
|
|
177
|
+
[data-upup-theme='light'] .FIE_topbar-save-button:disabled,
|
|
178
|
+
[data-upup-theme='light'] .FIE_watermark-add-button:disabled {
|
|
179
|
+
color: #93c5fd !important;
|
|
180
|
+
background-color: rgba(37, 99, 235, 0.12) !important;
|
|
181
|
+
border: 1px solid #bfdbfe !important;
|
|
182
|
+
}
|
|
183
|
+
[data-upup-theme='light'] .FIE_topbar-save-button:disabled .SfxButton-Label,
|
|
184
|
+
[data-upup-theme='light'] .FIE_watermark-add-button:disabled .SfxButton-Label {
|
|
185
|
+
color: #93c5fd !important;
|
|
186
|
+
opacity: 1 !important;
|
|
187
|
+
}
|
|
188
|
+
`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
exports.getFilerobotTheme = getFilerobotTheme; exports.getImageEditorCssOverrides = getImageEditorCssOverrides;
|
|
195
|
+
//# sourceMappingURL=chunk-YWJHE7U4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["c:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\chunk-YWJHE7U4.cjs"],"names":[],"mappings":"AAAA;AACA;AACE;AACA;AACA;AACF,kDAA+B;AAC/B,SAAS,iBAAiB,CAAC,WAAW,EAAE;AACxC,EAAE,OAAO,YAAY,EAAE;AACvB,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,UAAU,EAAE,SAAS;AAC3B,MAAM,WAAW,EAAE,SAAS;AAC5B,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,sBAAsB,EAAE,SAAS;AACvC,MAAM,uBAAuB,EAAE,SAAS;AACxC,MAAM,kBAAkB,EAAE,0BAA0B;AACpD,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,eAAe,EAAE,SAAS;AAChC,MAAM,iBAAiB,EAAE,SAAS;AAClC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,iBAAiB,EAAE,SAAS;AAClC,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,cAAc,EAAE,oBAAoB;AAC1C,MAAM,OAAO,EAAE,SAAS;AACxB,MAAM,aAAa,EAAE,SAAS;AAC9B,MAAM,eAAe,EAAE,SAAS;AAChC,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,sBAAsB,EAAE,SAAS;AACvC,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,gBAAgB,EAAE;AACxB,IAAI,CAAC;AACL,IAAI,UAAU,EAAE;AAChB,MAAM,UAAU,EAAE;AAClB,IAAI;AACJ,EAAE,EAAE,EAAE;AACN,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,UAAU,EAAE,SAAS;AAC3B,MAAM,WAAW,EAAE,SAAS;AAC5B,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,sBAAsB,EAAE,SAAS;AACvC,MAAM,uBAAuB,EAAE,SAAS;AACxC,MAAM,kBAAkB,EAAE,yBAAyB;AACnD,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,cAAc,EAAE,SAAS;AAC/B,MAAM,eAAe,EAAE,SAAS;AAChC,MAAM,iBAAiB,EAAE,SAAS;AAClC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,iBAAiB,EAAE,SAAS;AAClC,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,cAAc,EAAE,wBAAwB;AAC9C,MAAM,OAAO,EAAE,SAAS;AACxB,MAAM,aAAa,EAAE,SAAS;AAC9B,MAAM,eAAe,EAAE,SAAS;AAChC,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,sBAAsB,EAAE,SAAS;AACvC,MAAM,kBAAkB,EAAE,SAAS;AACnC,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,mBAAmB,EAAE,SAAS;AACpC,MAAM,gBAAgB,EAAE;AACxB,IAAI,CAAC;AACL,IAAI,UAAU,EAAE;AAChB,MAAM,UAAU,EAAE;AAClB,IAAI;AACJ,EAAE,CAAC;AACH;AACA,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACjD,EAAE,MAAM,OAAO,EAAE,CAAC;AAClB;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,EAAE,OAAO,YAAY,EAAE,OAAO,EAAE,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA;AACA;AACE;AACA;AACF,+GAAC","file":"C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\chunk-YWJHE7U4.cjs","sourcesContent":[null]}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compat_module_exports,
|
|
3
|
+
createContext,
|
|
4
|
+
createElement,
|
|
5
|
+
init_compat_module
|
|
6
|
+
} from "./chunk-FH3LYESR.js";
|
|
7
|
+
|
|
8
|
+
// ../react/dist/chunk-LCMDDPUD.js
|
|
9
|
+
init_compat_module();
|
|
10
|
+
import { UploadStatus } from "@useupup/core";
|
|
11
|
+
var UploaderContext = createContext(null);
|
|
12
|
+
var RuntimeContext = createContext(null);
|
|
13
|
+
var SourceContext = createContext(null);
|
|
14
|
+
var I18nContext = createContext(null);
|
|
15
|
+
var FilesContext = createContext(null);
|
|
16
|
+
var UploadControlsContext = createContext(null);
|
|
17
|
+
var ViewContext = createContext(null);
|
|
18
|
+
var EditorContext = createContext(null);
|
|
19
|
+
var OptionsContext = createContext(null);
|
|
20
|
+
var ThemeContext = createContext(null);
|
|
21
|
+
function useContextOrThrow(context, name) {
|
|
22
|
+
const value = (0, compat_module_exports.useContext)(context);
|
|
23
|
+
if (!value) {
|
|
24
|
+
throw new Error(`${name} must be used inside <UpupUploader />`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function UploaderContextProvider({
|
|
29
|
+
value,
|
|
30
|
+
children
|
|
31
|
+
}) {
|
|
32
|
+
const runtime = (0, compat_module_exports.useMemo)(
|
|
33
|
+
() => ({
|
|
34
|
+
core: value.core,
|
|
35
|
+
orchestrator: value.orchestrator,
|
|
36
|
+
mode: value.mode,
|
|
37
|
+
serverUrl: value.serverUrl,
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated -- runtime context must still expose inputRef for back-compat consumers; v3 removal tracked
|
|
39
|
+
inputRef: value.inputRef,
|
|
40
|
+
openFilePicker: value.openFilePicker,
|
|
41
|
+
isOnline: value.isOnline,
|
|
42
|
+
motionMode: value.motionMode
|
|
43
|
+
}),
|
|
44
|
+
[
|
|
45
|
+
value.core,
|
|
46
|
+
value.orchestrator,
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated -- see above
|
|
48
|
+
value.inputRef,
|
|
49
|
+
value.isOnline,
|
|
50
|
+
value.motionMode,
|
|
51
|
+
value.mode,
|
|
52
|
+
value.openFilePicker,
|
|
53
|
+
value.serverUrl
|
|
54
|
+
]
|
|
55
|
+
);
|
|
56
|
+
const source = (0, compat_module_exports.useMemo)(
|
|
57
|
+
() => ({
|
|
58
|
+
activeSource: value.activeSource,
|
|
59
|
+
setActiveSource: value.setActiveSource,
|
|
60
|
+
cloudDrives: value.cloudDrives
|
|
61
|
+
}),
|
|
62
|
+
[value.activeSource, value.cloudDrives, value.setActiveSource]
|
|
63
|
+
);
|
|
64
|
+
const i18n = (0, compat_module_exports.useMemo)(
|
|
65
|
+
() => ({
|
|
66
|
+
translations: value.translations,
|
|
67
|
+
translator: value.translator,
|
|
68
|
+
lang: value.lang,
|
|
69
|
+
dir: value.dir
|
|
70
|
+
}),
|
|
71
|
+
[value.dir, value.lang, value.translations, value.translator]
|
|
72
|
+
);
|
|
73
|
+
const files = (0, compat_module_exports.useMemo)(
|
|
74
|
+
() => ({
|
|
75
|
+
files: value.files,
|
|
76
|
+
leavingFileIds: value.leavingFileIds,
|
|
77
|
+
setFiles: value.setFiles,
|
|
78
|
+
replaceFiles: value.replaceFiles,
|
|
79
|
+
resetState: value.resetState,
|
|
80
|
+
uploadFiles: value.uploadFiles,
|
|
81
|
+
handleFileRemove: value.handleFileRemove
|
|
82
|
+
}),
|
|
83
|
+
[
|
|
84
|
+
value.uploadFiles,
|
|
85
|
+
value.replaceFiles,
|
|
86
|
+
value.files,
|
|
87
|
+
value.leavingFileIds,
|
|
88
|
+
value.handleFileRemove,
|
|
89
|
+
value.resetState,
|
|
90
|
+
value.setFiles
|
|
91
|
+
]
|
|
92
|
+
);
|
|
93
|
+
const uploadControls = (0, compat_module_exports.useMemo)(
|
|
94
|
+
() => ({
|
|
95
|
+
upload: value.upload,
|
|
96
|
+
handleDone: value.handleDone,
|
|
97
|
+
handleCancel: value.handleCancel,
|
|
98
|
+
handlePause: value.handlePause,
|
|
99
|
+
handleResume: value.handleResume
|
|
100
|
+
}),
|
|
101
|
+
[
|
|
102
|
+
value.handleCancel,
|
|
103
|
+
value.handleDone,
|
|
104
|
+
value.handlePause,
|
|
105
|
+
value.handleResume,
|
|
106
|
+
value.upload
|
|
107
|
+
]
|
|
108
|
+
);
|
|
109
|
+
const view = (0, compat_module_exports.useMemo)(
|
|
110
|
+
() => ({
|
|
111
|
+
sourceOverlayOpen: value.sourceOverlayOpen,
|
|
112
|
+
sourceOverlayClosing: value.sourceOverlayClosing,
|
|
113
|
+
openSourceOverlay: value.openSourceOverlay,
|
|
114
|
+
closeSourceOverlay: value.closeSourceOverlay,
|
|
115
|
+
dropRejected: value.dropRejected,
|
|
116
|
+
flagDriveDropRejected: value.flagDriveDropRejected,
|
|
117
|
+
viewMode: value.viewMode,
|
|
118
|
+
setViewMode: value.setViewMode
|
|
119
|
+
}),
|
|
120
|
+
[
|
|
121
|
+
value.sourceOverlayOpen,
|
|
122
|
+
value.sourceOverlayClosing,
|
|
123
|
+
value.openSourceOverlay,
|
|
124
|
+
value.closeSourceOverlay,
|
|
125
|
+
value.dropRejected,
|
|
126
|
+
value.flagDriveDropRejected,
|
|
127
|
+
value.setViewMode,
|
|
128
|
+
value.viewMode
|
|
129
|
+
]
|
|
130
|
+
);
|
|
131
|
+
const editor = (0, compat_module_exports.useMemo)(
|
|
132
|
+
() => ({
|
|
133
|
+
editingFile: value.editingFile,
|
|
134
|
+
openImageEditor: value.openImageEditor,
|
|
135
|
+
closeImageEditor: value.closeImageEditor,
|
|
136
|
+
saveImageEdit: value.saveImageEdit,
|
|
137
|
+
replaceFile: value.replaceFile
|
|
138
|
+
}),
|
|
139
|
+
[
|
|
140
|
+
value.closeImageEditor,
|
|
141
|
+
value.editingFile,
|
|
142
|
+
value.openImageEditor,
|
|
143
|
+
value.replaceFile,
|
|
144
|
+
value.saveImageEdit
|
|
145
|
+
]
|
|
146
|
+
);
|
|
147
|
+
const options = (0, compat_module_exports.useMemo)(
|
|
148
|
+
() => value.props,
|
|
149
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: memoize on granular prop fields, not the parent object identity (which changes every render)
|
|
150
|
+
[
|
|
151
|
+
value.props.allowedFileTypes,
|
|
152
|
+
value.props.allowPreview,
|
|
153
|
+
value.props.className,
|
|
154
|
+
value.props.disableDragDrop,
|
|
155
|
+
value.props.enablePaste,
|
|
156
|
+
value.props.folderPickerButtonVisible,
|
|
157
|
+
value.props.folderUploadAllowDrop,
|
|
158
|
+
value.props.icons,
|
|
159
|
+
value.props.imageEditor,
|
|
160
|
+
value.props.isProcessing,
|
|
161
|
+
value.props.limit,
|
|
162
|
+
value.props.maxFileSize,
|
|
163
|
+
value.props.maxRetries,
|
|
164
|
+
value.props.mini,
|
|
165
|
+
value.props.multiple,
|
|
166
|
+
value.props.onError,
|
|
167
|
+
value.props.onFileClick,
|
|
168
|
+
value.props.onFilesDragLeave,
|
|
169
|
+
value.props.onFilesDragOver,
|
|
170
|
+
value.props.onFilesDrop,
|
|
171
|
+
value.props.onWarn,
|
|
172
|
+
value.props.onIntegrationClick,
|
|
173
|
+
value.props.resumable,
|
|
174
|
+
value.props.showBranding,
|
|
175
|
+
value.props.quietCompletion,
|
|
176
|
+
value.props.sources,
|
|
177
|
+
value.props.style
|
|
178
|
+
]
|
|
179
|
+
);
|
|
180
|
+
const theme = (0, compat_module_exports.useMemo)(
|
|
181
|
+
() => value.theme,
|
|
182
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: memoize on granular theme fields, not the parent object identity (which changes every render)
|
|
183
|
+
[
|
|
184
|
+
value.theme.isDark,
|
|
185
|
+
value.theme.resolved,
|
|
186
|
+
value.theme.slotOverrides,
|
|
187
|
+
value.theme.slots,
|
|
188
|
+
value.theme.themeMode,
|
|
189
|
+
value.theme.tokens
|
|
190
|
+
]
|
|
191
|
+
);
|
|
192
|
+
return createElement(
|
|
193
|
+
UploaderContext.Provider,
|
|
194
|
+
{ value },
|
|
195
|
+
createElement(
|
|
196
|
+
RuntimeContext.Provider,
|
|
197
|
+
{ value: runtime },
|
|
198
|
+
createElement(
|
|
199
|
+
SourceContext.Provider,
|
|
200
|
+
{ value: source },
|
|
201
|
+
createElement(
|
|
202
|
+
I18nContext.Provider,
|
|
203
|
+
{ value: i18n },
|
|
204
|
+
createElement(
|
|
205
|
+
FilesContext.Provider,
|
|
206
|
+
{ value: files },
|
|
207
|
+
createElement(
|
|
208
|
+
UploadControlsContext.Provider,
|
|
209
|
+
{ value: uploadControls },
|
|
210
|
+
createElement(
|
|
211
|
+
ViewContext.Provider,
|
|
212
|
+
{ value: view },
|
|
213
|
+
createElement(
|
|
214
|
+
EditorContext.Provider,
|
|
215
|
+
{ value: editor },
|
|
216
|
+
createElement(
|
|
217
|
+
OptionsContext.Provider,
|
|
218
|
+
{ value: options },
|
|
219
|
+
createElement(
|
|
220
|
+
ThemeContext.Provider,
|
|
221
|
+
{ value: theme },
|
|
222
|
+
children
|
|
223
|
+
)
|
|
224
|
+
)
|
|
225
|
+
)
|
|
226
|
+
)
|
|
227
|
+
)
|
|
228
|
+
)
|
|
229
|
+
)
|
|
230
|
+
)
|
|
231
|
+
)
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
function useUploaderContext() {
|
|
235
|
+
return useContextOrThrow(UploaderContext, "useUploaderContext");
|
|
236
|
+
}
|
|
237
|
+
function useUploaderRuntime() {
|
|
238
|
+
return useContextOrThrow(RuntimeContext, "useUploaderRuntime");
|
|
239
|
+
}
|
|
240
|
+
function useUploaderSource() {
|
|
241
|
+
return useContextOrThrow(SourceContext, "useUploaderSource");
|
|
242
|
+
}
|
|
243
|
+
function useUploaderI18n() {
|
|
244
|
+
return useContextOrThrow(I18nContext, "useUploaderI18n");
|
|
245
|
+
}
|
|
246
|
+
function useUploaderFiles() {
|
|
247
|
+
return useContextOrThrow(FilesContext, "useUploaderFiles");
|
|
248
|
+
}
|
|
249
|
+
function useUploaderUploadControls() {
|
|
250
|
+
return useContextOrThrow(UploadControlsContext, "useUploaderUploadControls");
|
|
251
|
+
}
|
|
252
|
+
function useUploaderView() {
|
|
253
|
+
return useContextOrThrow(ViewContext, "useUploaderView");
|
|
254
|
+
}
|
|
255
|
+
function useUploaderEditor() {
|
|
256
|
+
return useContextOrThrow(EditorContext, "useUploaderEditor");
|
|
257
|
+
}
|
|
258
|
+
function useUploaderOptions() {
|
|
259
|
+
return useContextOrThrow(OptionsContext, "useUploaderOptions");
|
|
260
|
+
}
|
|
261
|
+
function useUploaderTheme() {
|
|
262
|
+
return useContextOrThrow(ThemeContext, "useUploaderTheme");
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// ../../node_modules/.pnpm/preact@10.29.8_preact-render-to-string@6.7.0/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js
|
|
266
|
+
import { options as r, Fragment as e } from "preact";
|
|
267
|
+
import { Fragment } from "preact";
|
|
268
|
+
var f = 0;
|
|
269
|
+
function u(e2, t, n, o, i, u2) {
|
|
270
|
+
t || (t = {});
|
|
271
|
+
var a, c, p = t;
|
|
272
|
+
if ("ref" in p) for (c in p = {}, t) "ref" == c ? a = t[c] : p[c] = t[c];
|
|
273
|
+
var l = { type: e2, props: p, key: n, ref: a, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: --f, __i: -1, __u: 0, __source: i, __self: u2 };
|
|
274
|
+
if ("function" == typeof e2 && (a = e2.defaultProps)) for (c in a) void 0 === p[c] && (p[c] = a[c]);
|
|
275
|
+
return r.vnode && r.vnode(l), l;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
export {
|
|
279
|
+
UploaderContextProvider,
|
|
280
|
+
useUploaderContext,
|
|
281
|
+
useUploaderRuntime,
|
|
282
|
+
useUploaderSource,
|
|
283
|
+
useUploaderI18n,
|
|
284
|
+
useUploaderFiles,
|
|
285
|
+
useUploaderUploadControls,
|
|
286
|
+
useUploaderView,
|
|
287
|
+
useUploaderEditor,
|
|
288
|
+
useUploaderOptions,
|
|
289
|
+
useUploaderTheme,
|
|
290
|
+
u,
|
|
291
|
+
Fragment
|
|
292
|
+
};
|
|
293
|
+
//# sourceMappingURL=chunk-ZGWETRKI.js.map
|