sanity-plugin-mux-input 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.cjs +91 -81
- package/lib/index.cjs.js +0 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +91 -81
- package/lib/index.js.map +1 -1
- package/package.json +22 -22
- package/src/components/InputBrowser.tsx +22 -5
- package/src/components/Player.tsx +1 -1
- package/src/components/VideoDetails/DeleteDialog.tsx +10 -10
- package/src/components/VideoDetails/VideoDetails.tsx +17 -20
- package/src/components/VideoDetails/VideoReferences.tsx +5 -5
- package/src/components/VideoDetails/useVideoDetails.ts +8 -3
- package/src/components/VideosBrowser.tsx +6 -6
- package/src/hooks/useAssets.ts +8 -4
- package/src/util/constants.ts +2 -2
- package/src/util/createSearchFilter.ts +2 -2
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/components/icons/ToolIcon.tsx","../src/hooks/useClient.ts","../src/util/createSearchFilter.ts","../src/hooks/useAssets.ts","../src/components/SelectSortOptions.tsx","../src/components/SpinnerBox.tsx","../src/util/constants.ts","../src/components/FormField.tsx","../src/components/IconInfo.tsx","../src/components/icons/Resolution.tsx","../src/components/icons/StopWatch.tsx","../src/util/readSecrets.ts","../src/util/generateJwt.ts","../src/util/getPlaybackId.ts","../src/util/getPlaybackPolicy.ts","../src/util/getVideoSrc.ts","../src/components/VideoPlayer.tsx","../src/actions/assets.ts","../src/components/documentPreview/MissingSchemaType.tsx","../src/components/documentPreview/TimeAgo.tsx","../src/components/documentPreview/DraftStatus.tsx","../src/components/documentPreview/PublishedStatus.tsx","../src/components/documentPreview/PaneItemPreview.tsx","../src/components/documentPreview/DocumentPreview.tsx","../src/components/VideoDetails/VideoReferences.tsx","../src/components/VideoDetails/DeleteDialog.tsx","../src/hooks/useDocReferences.ts","../src/util/formatSeconds.ts","../src/util/getVideoMetadata.ts","../src/components/VideoDetails/useVideoDetails.ts","../src/components/VideoDetails/VideoDetails.tsx","../src/components/VideoMetadata.tsx","../src/hooks/useInView.ts","../src/util/getAnimatedPosterSrc.ts","../src/components/VideoThumbnail.tsx","../src/components/VideoInBrowser.tsx","../src/components/VideosBrowser.tsx","../src/components/StudioTool.tsx","../src/hooks/useAssetDocumentValues.ts","../src/hooks/useDialogState.ts","../src/hooks/useMuxPolling.ts","../src/hooks/useSecretsDocumentValues.ts","../src/clients/upChunkObservable.ts","../src/actions/secrets.ts","../src/actions/upload.ts","../src/util/extractFiles.ts","../src/components/SelectAsset.tsx","../src/components/InputBrowser.tsx","../src/hooks/useCancelUpload.ts","../src/components/Player.styled.tsx","../src/components/UploadProgress.tsx","../src/components/Player.tsx","../src/components/withFocusRing/helpers.ts","../src/components/FileInputMenuItem.styled.tsx","../src/components/FileInputMenuItem.tsx","../src/components/PlayerActionsMenu.tsx","../src/components/withFocusRing/withFocusRing.ts","../src/components/Uploader.styled.tsx","../src/components/FileInputButton.tsx","../src/components/UploadPlaceholder.tsx","../src/components/__legacy__Uploader.tsx","../src/hooks/useSaveSecrets.ts","../src/hooks/useSecretsFormState.ts","../src/components/MuxLogo.tsx","../src/components/ConfigureApi.styled.tsx","../src/components/ConfigureApi.tsx","../src/components/ErrorBoundaryCard.tsx","../src/components/Input.styled.tsx","../src/components/Onboard.tsx","../src/components/Input.tsx","../src/plugin.tsx","../src/schema.tsx","../src/index.ts"],"sourcesContent":["import React from 'react'\n\n/**\n * Icon of a monitor with a play button.\n * Credits: material design icons & react-icons\n */\nconst ToolIcon = () => (\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 24 24\"\n height=\"1em\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z\" />\n </svg>\n)\n\nexport default ToolIcon\n","// As it's required to specify the API Version this custom hook ensures it's all using the same version\nimport {useClient as useSanityClient} from 'sanity'\n\nexport const SANITY_API_VERSION = '2022-09-14'\n\nexport function useClient() {\n return useSanityClient({apiVersion: SANITY_API_VERSION})\n}\n","// Adaptation of Sanity's createSearchQuery for our limited use case:\n// https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/core/search/weighted/createSearchQuery.ts\nimport {compact, toLower, trim, uniq, words} from 'lodash'\n\nconst SPECIAL_CHARS = /([^!@#$%^&*(),\\\\/?\";:{}|[\\]+<>\\s-])+/g\nconst STRIP_EDGE_CHARS = /(^[.]+)|([.]+$)/\n\nfunction tokenize(string: string): string[] {\n return (string.match(SPECIAL_CHARS) || []).map((token) => token.replace(STRIP_EDGE_CHARS, ''))\n}\n\nfunction toGroqParams(terms: string[]): Record<string, string> {\n const params: Record<string, string> = {}\n return terms.reduce((acc, term, i) => {\n acc[`t${i}`] = `*${term}*` // \"t\" is short for term\n return acc\n }, params)\n}\n\n/**\n * Convert a string into an array of tokenized terms.\n *\n * Any (multi word) text wrapped in double quotes will be treated as \"phrases\", or separate tokens that\n * will not have its special characters removed.\n * E.g.`\"the\" \"fantastic mr\" fox fox book` =\\> [\"the\", `\"fantastic mr\"`, \"fox\", \"book\"]\n *\n * Phrases wrapped in quotes are assigned relevance scoring differently from regular words.\n *\n * @internal\n */\nfunction extractTermsFromQuery(query: string): string[] {\n const quotedQueries = [] as string[]\n const unquotedQuery = query.replace(/(\"[^\"]*\")/g, (match) => {\n if (words(match).length > 1) {\n quotedQueries.push(match)\n return ''\n }\n return match\n })\n\n // Lowercase and trim quoted queries\n const quotedTerms = quotedQueries.map((str) => trim(toLower(str)))\n\n /**\n * Convert (remaining) search query into an array of deduped, sanitized tokens.\n * All white space and special characters are removed.\n * e.g. \"The saint of Saint-Germain-des-Prés\" =\\> ['the', 'saint', 'of', 'germain', 'des', 'pres']\n */\n const remainingTerms = uniq(compact(tokenize(toLower(unquotedQuery))))\n\n return [...quotedTerms, ...remainingTerms]\n}\n\n/** Which properties of the video asset document should we match users' queries against */\nconst SEARCH_PATHS = ['filename', 'assetId', '_id']\n\n/**\n * Create GROQ constraints, given search terms and the full spec of available document types and fields.\n * Essentially a large list of all possible fields (joined by logical OR) to match our search terms against.\n */\nfunction createConstraints(terms: string[]) {\n const constraints = terms\n .map((_term, i) => SEARCH_PATHS.map((joinedPath) => `${joinedPath} match $t${i}`))\n .filter((constraint) => constraint.length > 0)\n\n return constraints.map((constraint) => `(${constraint.join(' || ')})`)\n}\n\nexport function createSearchFilter(query: string) {\n const terms = extractTermsFromQuery(query)\n\n return {\n filter: createConstraints(terms),\n params: {\n ...toGroqParams(terms),\n },\n }\n}\n","import {useMemo, useState} from 'react'\nimport {collate, createHookFromObservableFactory, DocumentStore, useDocumentStore} from 'sanity'\n\nimport {SANITY_API_VERSION} from '../hooks/useClient'\nimport {createSearchFilter} from '../util/createSearchFilter'\nimport type {VideoAssetDocument} from '../util/types'\n\nexport const ASSET_SORT_OPTIONS = {\n createdDesc: {groq: '_createdAt desc', label: 'Newest first'},\n createdAsc: {groq: '_createdAt asc', label: 'First created (oldest)'},\n filenameAsc: {groq: 'filename asc', label: 'By filename (A-Z)'},\n filenameDesc: {groq: 'filename desc', label: 'By filename (Z-A)'},\n}\n\nexport type SortOption = keyof typeof ASSET_SORT_OPTIONS\n\nconst useAssetDocuments = createHookFromObservableFactory<\n VideoAssetDocument[],\n {\n documentStore: DocumentStore\n sort: SortOption\n searchQuery: string\n }\n>(({documentStore, sort, searchQuery}) => {\n const search = createSearchFilter(searchQuery)\n const filter = [`_type == \"mux.videoAsset\"`, ...search.filter].filter(Boolean).join(' && ')\n\n const query = ASSET_SORT_OPTIONS[sort].groq\n return documentStore.listenQuery(/* groq */ `*[${filter}] | order(${query})`, search.params, {\n apiVersion: SANITY_API_VERSION,\n })\n})\n\nexport default function useAssets() {\n const documentStore = useDocumentStore()\n const [sort, setSort] = useState<SortOption>('createdDesc')\n const [searchQuery, setSearchQuery] = useState('')\n\n const [assetDocuments = [], isLoading] = useAssetDocuments({documentStore, sort, searchQuery})\n const assets = useMemo(\n () =>\n // Avoid displaying both drafts & published assets by collating them together and giving preference to drafts\n collate<VideoAssetDocument>(assetDocuments).map(\n (collated) =>\n ({\n ...(collated.draft || collated.published || {}),\n _id: collated.id,\n }) as VideoAssetDocument\n ),\n [assetDocuments]\n )\n\n return {\n assets,\n isLoading,\n sort,\n searchQuery,\n setSort,\n setSearchQuery,\n }\n}\n","import {SortIcon} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuItem, PopoverProps} from '@sanity/ui'\nimport React, {useId} from 'react'\n\nimport {ASSET_SORT_OPTIONS, SortOption} from '../hooks/useAssets'\n\nexport const CONTEXT_MENU_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n width: 0,\n}\n\n/**\n * @sanity/ui components adapted from:\n * https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/pane/PaneContextMenuButton.tsx#L19\n */\nexport function SelectSortOptions(props: {sort: SortOption; setSort: (s: SortOption) => void}) {\n const id = useId()\n\n return (\n <MenuButton\n button={\n <Button text=\"Sort\" icon={SortIcon} mode=\"bleed\" padding={3} style={{cursor: 'pointer'}} />\n }\n id={id}\n menu={\n <Menu>\n {Object.entries(ASSET_SORT_OPTIONS).map(([type, {label}]) => (\n <MenuItem\n key={type}\n data-as=\"button\"\n onClick={() => props.setSort(type as SortOption)}\n padding={3}\n tone=\"default\"\n text={label}\n pressed={type === props.sort}\n />\n ))}\n </Menu>\n }\n popover={CONTEXT_MENU_POPOVER_PROPS}\n />\n )\n}\n","import {Box, Spinner} from '@sanity/ui'\nimport React from 'react'\n\nconst SpinnerBox: React.FC = () => (\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '150px',\n }}\n >\n <Spinner />\n </Box>\n)\n\nexport default SpinnerBox\n","export const name = 'mux-input' as const\n\n// Caching namespace, as suspend-react might be in use by other components on the page we must ensure we don't collide\nexport const cacheNs = 'sanity-plugin-mux-input' as const\n\nexport const muxSecretsDocumentId = 'secrets.mux' as const\n\nexport const DIALOGS_Z_INDEX = 60_000\n\nexport const THUMBNAIL_ASPECT_RATIO = 16 / 9\n\n/** Thumbnails and input shouldn't go beyond this aspect ratio */\nexport const MIN_ASPECT_RATIO = 1\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport React, {memo} from 'react'\n\n// @TODO: get rid of this once v3 core is stable\n\nexport interface Props {\n children: React.ReactNode\n title: React.ReactNode\n description?: React.ReactNode\n inputId: string\n}\n\nfunction FormField(props: Props) {\n const {children, title, description, inputId} = props\n\n return (\n <Stack space={1}>\n <Flex align=\"flex-end\">\n <Box flex={1} paddingY={2}>\n <Stack space={2}>\n <Text as=\"label\" htmlFor={inputId} weight=\"semibold\" size={1}>\n {title || <em>Untitled</em>}\n </Text>\n\n {description && (\n <Text muted size={1}>\n {description}\n </Text>\n )}\n </Stack>\n </Box>\n </Flex>\n <div>{children}</div>\n </Stack>\n )\n}\n\nexport default memo(FormField)\n","import {Flex, Text} from '@sanity/ui'\nimport React from 'react'\n\nconst IconInfo: React.FC<{\n text: string\n icon: React.FC\n size?: number\n muted?: boolean\n}> = (props) => {\n const Icon = props.icon\n return (\n <Flex gap={2} align=\"center\" padding={1}>\n <Text size={(props.size || 1) + 1} muted>\n <Icon />\n </Text>\n <Text size={props.size || 1} muted={props.muted}>\n {props.text}\n </Text>\n </Flex>\n )\n}\n\nexport default IconInfo\n","import React, {SVGProps} from 'react'\n\nexport function ResolutionIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20 9V6h-3V4h5v5h-2ZM2 9V4h5v2H4v3H2Zm15 11v-2h3v-3h2v5h-5ZM2 20v-5h2v3h3v2H2Zm4-4V8h12v8H6Zm2-2h8v-4H8v4Zm0 0v-4v4Z\"\n />\n </svg>\n )\n}\n","import React, {SVGProps} from 'react'\n\nexport function StopWatchIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 512 512\"\n {...props}\n >\n <path d=\"M232 306.667h48V176h-48v130.667z\" fill=\"currentColor\" />\n <path\n d=\"M407.67 170.271l30.786-30.786-33.942-33.941-30.785 30.786C341.217 111.057 300.369 96 256 96 149.961 96 64 181.961 64 288s85.961 192 192 192 192-85.961 192-192c0-44.369-15.057-85.217-40.33-117.729zm-45.604 223.795C333.734 422.398 296.066 438 256 438s-77.735-15.602-106.066-43.934C121.602 365.735 106 328.066 106 288s15.602-77.735 43.934-106.066C178.265 153.602 215.934 138 256 138s77.734 15.602 106.066 43.934C390.398 210.265 406 247.934 406 288s-15.602 77.735-43.934 106.066z\"\n fill=\"currentColor\"\n />\n <path d=\"M192 32h128v48H192z\" fill=\"currentColor\" />\n </svg>\n )\n}\n","// Utils with a readName prefix are suspendable and should only be called in the render body\n// Not inside event callbacks or a useEffect.\n// They may be called dynamically, unlike useEffect\n\n// @TODO rename to readSigningPair\n\nimport type {SanityClient} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {cacheNs} from '../util/constants'\nimport {type Secrets} from '../util/types'\n\nexport const _id = 'secrets.mux' as const\n\nexport function readSecrets(client: SanityClient): Secrets {\n const {projectId, dataset} = client.config()\n return suspend(async () => {\n const data = await client.fetch(\n /* groq */ `*[_id == $_id][0]{\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate\n }`,\n {_id}\n )\n return {\n token: data?.token || null,\n secretKey: data?.secretKey || null,\n enableSignedUrls: Boolean(data?.enableSignedUrls) || false,\n signingKeyId: data?.signingKeyId || null,\n signingKeyPrivate: data?.signingKeyPrivate || null,\n }\n }, [cacheNs, _id, projectId, dataset])\n}\n","import type {SanityClient} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {readSecrets} from './readSecrets'\nimport type {AnimatedThumbnailOptions, ThumbnailOptions} from './types'\n\nexport type Audience = 'g' | 's' | 't' | 'v'\n\nexport type Payload<T extends Audience> = T extends 'g'\n ? AnimatedThumbnailOptions\n : T extends 's'\n ? never\n : T extends 't'\n ? ThumbnailOptions\n : T extends 'v'\n ? never\n : never\n\nexport function generateJwt<T extends Audience>(\n client: SanityClient,\n playbackId: string,\n aud: T,\n payload?: Payload<T>\n): string {\n const {signingKeyId, signingKeyPrivate} = readSecrets(client)\n if (!signingKeyId) {\n throw new TypeError('Missing signingKeyId')\n }\n if (!signingKeyPrivate) {\n throw new TypeError('Missing signingKeyPrivate')\n }\n\n const {default: sign} = suspend(() => import('jsonwebtoken-esm/sign'), ['jsonwebtoken-esm/sign'])\n\n return sign(\n payload ? JSON.parse(JSON.stringify(payload, (_, v) => v ?? undefined)) : {},\n atob(signingKeyPrivate),\n {\n algorithm: 'RS256',\n keyid: signingKeyId,\n audience: aud,\n subject: playbackId,\n noTimestamp: true,\n expiresIn: '12h',\n }\n )\n}\n","import type {VideoAssetDocument} from './types'\n\nexport function getPlaybackId(asset: Partial<VideoAssetDocument>): string {\n if (!asset?.playbackId) {\n console.error('Asset is missing a playbackId', {asset})\n throw new TypeError(`Missing playbackId`)\n }\n return asset.playbackId\n}\n","import type {PlaybackPolicy, VideoAssetDocument} from './types'\n\nexport function getPlaybackPolicy(asset: Partial<VideoAssetDocument>): PlaybackPolicy {\n return asset.data?.playback_ids?.[0]?.policy ?? 'public'\n}\n","import type {SanityClient} from 'sanity'\n\nimport {generateJwt} from './generateJwt'\nimport {getPlaybackId} from './getPlaybackId'\nimport {getPlaybackPolicy} from './getPlaybackPolicy'\nimport type {MuxVideoUrl, VideoAssetDocument} from './types'\n\ninterface VideoSrcOptions {\n asset: VideoAssetDocument\n client: SanityClient\n}\n\nexport function getVideoSrc({asset, client}: VideoSrcOptions): MuxVideoUrl {\n const playbackId = getPlaybackId(asset)\n const searchParams = new URLSearchParams()\n\n if (getPlaybackPolicy(asset) === 'signed') {\n const token = generateJwt(client, playbackId, 'v')\n searchParams.set('token', token)\n }\n\n return `https://stream.mux.com/${playbackId}.m3u8?${searchParams}`\n}\n","import MuxPlayer, {MuxPlayerProps} from '@mux/mux-player-react'\nimport {Card} from '@sanity/ui'\nimport React, {PropsWithChildren, useMemo} from 'react'\n\nimport {useClient} from '../hooks/useClient'\nimport {MIN_ASPECT_RATIO} from '../util/constants'\nimport {getVideoSrc} from '../util/getVideoSrc'\nimport type {VideoAssetDocument} from '../util/types'\nimport pluginPkg from './../../package.json'\n\nexport default function VideoPlayer({\n asset,\n children,\n ...props\n}: PropsWithChildren<\n {asset: VideoAssetDocument; forceAspectRatio?: number} & Partial<Pick<MuxPlayerProps, 'autoPlay'>>\n>) {\n const client = useClient()\n\n const videoSrc = useMemo(() => asset?.playbackId && getVideoSrc({client, asset}), [asset, client])\n\n const signedToken = useMemo(() => {\n try {\n const url = new URL(videoSrc!)\n return url.searchParams.get('token')\n } catch {\n return false\n }\n }, [videoSrc])\n\n const [width, height] = (asset?.data?.aspect_ratio ?? '16:9').split(':').map(Number)\n const targetAspectRatio =\n props.forceAspectRatio || (Number.isNaN(width) ? 16 / 9 : width / height)\n const aspectRatio = Math.max(MIN_ASPECT_RATIO, targetAspectRatio)\n\n return (\n <Card tone=\"transparent\" style={{aspectRatio: aspectRatio, position: 'relative'}}>\n {videoSrc && (\n <>\n <MuxPlayer\n {...props}\n playsInline\n playbackId={asset.playbackId}\n tokens={\n signedToken\n ? {playback: signedToken, thumbnail: signedToken, storyboard: signedToken}\n : undefined\n }\n streamType=\"on-demand\"\n preload=\"metadata\"\n crossOrigin=\"anonymous\"\n metadata={{\n player_name: 'Sanity Admin Dashboard',\n player_version: pluginPkg.version,\n page_type: 'Preview Player',\n }}\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n objectFit: 'contain',\n }}\n />\n {children}\n </>\n )}\n </Card>\n )\n}\n","import type {SanityClient} from 'sanity'\n\nimport type {MuxAsset, VideoAssetDocument} from '../util/types'\n\nexport function deleteAssetOnMux(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<void>({\n url: `/addons/mux/assets/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport async function deleteAsset({\n client,\n asset,\n deleteOnMux,\n}: {\n client: SanityClient\n asset: VideoAssetDocument\n deleteOnMux: boolean\n}) {\n if (!asset?._id) return true\n\n try {\n await client.delete(asset._id)\n } catch (error) {\n return 'failed-sanity'\n }\n\n if (deleteOnMux && asset?.assetId) {\n try {\n await deleteAssetOnMux(client, asset.assetId)\n } catch (error) {\n return 'failed-mux'\n }\n }\n\n return true\n}\n\nexport function getAsset(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/MissingSchemaType.tsx\nimport {WarningOutlineIcon} from '@sanity/icons'\nimport React from 'react'\nimport type {SanityDocument} from 'sanity'\nimport type {GeneralPreviewLayoutKey} from 'sanity'\nimport {SanityDefaultPreview} from 'sanity'\n\nexport interface MissingSchemaTypeProps {\n layout?: GeneralPreviewLayoutKey\n value: SanityDocument\n}\n\nconst getUnknownTypeFallback = (id: string, typeName: string) => ({\n title: (\n <em>\n No schema found for type <code>{typeName}</code>\n </em>\n ),\n subtitle: (\n <em>\n Document: <code>{id}</code>\n </em>\n ),\n media: () => <WarningOutlineIcon />,\n})\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n const {layout, value} = props\n\n return (\n <SanityDefaultPreview {...getUnknownTypeFallback(value._id, value._type)} layout={layout} />\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/TimeAgo.tsx\nimport React from 'react'\nimport {useTimeAgo} from 'sanity'\n\nexport interface TimeAgoProps {\n time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n const timeAgo = useTimeAgo(time)\n\n return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/DraftStatus.tsx\nimport {EditIcon} from '@sanity/icons'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport React from 'react'\nimport type {PreviewValue, SanityDocument} from 'sanity'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function DraftStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Edited {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>No unpublished edits</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n <EditIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/PublishedStatus.tsx\n\nimport {PublishIcon} from '@sanity/icons'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport React from 'react'\nimport type {PreviewValue, SanityDocument} from 'sanity'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","// Adapted from:\n// https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/paneItem/PaneItemPreview.tsx\nimport {Inline} from '@sanity/ui'\nimport {isNumber, isString} from 'lodash'\nimport React, {isValidElement} from 'react'\nimport {useMemoObservable} from 'react-rx'\nimport type {SanityDocument, SchemaType} from 'sanity'\nimport {PreviewValue} from 'sanity'\nimport {\n DocumentPresence,\n DocumentPreviewPresence,\n DocumentPreviewStore,\n GeneralPreviewLayoutKey,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n isRecord,\n SanityDefaultPreview,\n} from 'sanity'\n\nimport {DraftStatus} from './DraftStatus'\nimport {PublishedStatus} from './PublishedStatus'\n\nexport interface PaneItemPreviewState {\n isLoading?: boolean\n draft?: PreviewValue | Partial<SanityDocument> | null\n published?: PreviewValue | Partial<SanityDocument> | null\n}\n\nexport interface PaneItemPreviewProps {\n documentPreviewStore: DocumentPreviewStore\n icon: React.ComponentType | false\n layout: GeneralPreviewLayoutKey\n presence?: DocumentPresence[]\n schemaType: SchemaType\n value: SanityDocument\n}\n\nexport function PaneItemPreview(props: PaneItemPreviewProps) {\n const {icon, layout, presence, schemaType, value} = props\n const title =\n (isRecord(value.title) && isValidElement(value.title)) ||\n isString(value.title) ||\n isNumber(value.title)\n ? value.title\n : null\n\n // NOTE: this emits sync so can never be null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const {draft, published, isLoading} = useMemoObservable<PaneItemPreviewState>(\n () => getPreviewStateObservable(props.documentPreviewStore, schemaType, value._id, title),\n [props.documentPreviewStore, schemaType, value._id, title]\n )!\n\n const status = isLoading ? null : (\n <Inline space={4}>\n {presence && presence.length > 0 && <DocumentPreviewPresence presence={presence} />}\n <PublishedStatus document={published} />\n <DraftStatus document={draft} />\n </Inline>\n )\n\n return (\n <SanityDefaultPreview\n {...(getPreviewValueWithFallback({value, draft, published}) as any)}\n isPlaceholder={isLoading}\n icon={icon}\n layout={layout}\n status={status}\n />\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/paneItem/PaneItem.tsx\n\nimport {DocumentIcon} from '@sanity/icons'\nimport type {PropsWithChildren} from 'react'\nimport React, {useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport type {CollatedHit, FIXME, SchemaType} from 'sanity'\nimport {PreviewCard, useDocumentPresence, useDocumentPreviewStore, useSchema} from 'sanity'\nimport {usePaneRouter} from 'sanity/desk'\nimport {IntentLink} from 'sanity/router'\n\nimport {PluginPlacement} from '../../util/types'\nimport {MissingSchemaType} from './MissingSchemaType'\nimport {PaneItemPreview} from './PaneItemPreview'\n\ninterface DocumentPreviewProps {\n schemaType?: SchemaType\n documentPair: CollatedHit<SanityDocument>\n placement?: PluginPlacement\n}\n\n/**\n * Return `false` if we explicitly disable the icon.\n * Otherwise return the passed icon or the schema type icon as a backup.\n */\nexport function getIconWithFallback(\n icon: React.ComponentType<any> | false | undefined,\n schemaType: SchemaType | undefined,\n defaultIcon: React.ComponentType<any>\n): React.ComponentType<any> | false {\n if (icon === false) {\n return false\n }\n\n return icon || ((schemaType && schemaType.icon) as any) || defaultIcon || false\n}\n\n/** When inside the field input, we can open the reference on a child pane */\nfunction DocumentPreviewInInput(props: PropsWithChildren<DocumentPreviewProps>) {\n const {ChildLink} = usePaneRouter()\n\n return (linkProps: PropsWithChildren) => (\n <ChildLink\n childId={props.documentPair.id}\n // Pass the schemaType of the document so `paneChild` in `buildPagesStructure` can access it\n childParameters={{type: props.documentPair.type}}\n >\n {linkProps.children}\n </ChildLink>\n )\n}\n\n/** When inside the tool, we must use a regular intent link to take users to the desk tool */\nfunction DocumentPreviewInRool(props: DocumentPreviewProps) {\n return (linkProps: PropsWithChildren) => (\n <IntentLink intent=\"edit\" params={{id: props.documentPair.id}}>\n {linkProps.children}\n </IntentLink>\n )\n}\n\nexport function DocumentPreview(props: DocumentPreviewProps) {\n const {schemaType, documentPair} = props\n const doc = documentPair?.draft || documentPair?.published\n const id = documentPair.id || ''\n const documentPreviewStore = useDocumentPreviewStore()\n const schema = useSchema()\n const documentPresence = useDocumentPresence(id)\n const hasSchemaType = Boolean(schemaType && schemaType.name && schema.get(schemaType.name))\n\n const PreviewComponent = useMemo(() => {\n if (!doc) return null\n\n if (!schemaType || !hasSchemaType) {\n return <MissingSchemaType value={doc as SanityDocument} />\n }\n\n return (\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={getIconWithFallback(undefined, schemaType, DocumentIcon)}\n schemaType={schemaType}\n layout=\"default\"\n value={doc}\n presence={documentPresence}\n />\n )\n }, [hasSchemaType, schemaType, documentPresence, doc, documentPreviewStore])\n\n return (\n <PreviewCard\n __unstable_focusRing\n as={\n (props.placement === 'input'\n ? DocumentPreviewInInput(props)\n : DocumentPreviewInRool(props)) as FIXME\n }\n data-as=\"a\"\n data-ui=\"PaneItem\"\n padding={2}\n radius={2}\n tone=\"inherit\"\n >\n {PreviewComponent}\n </PreviewCard>\n )\n}\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Card, Text} from '@sanity/ui'\nimport React from 'react'\nimport {collate, useSchema} from 'sanity'\nimport styled from 'styled-components'\n\nimport {PluginPlacement} from '../../util/types'\nimport {DocumentPreview} from '../documentPreview/DocumentPreview'\nimport SpinnerBox from '../SpinnerBox'\n\nconst Container = styled(Box)`\n * {\n color: ${(props: any) => props.theme.sanity.color.base.fg};\n }\n a {\n text-decoration: none;\n }\n h2 {\n font-size: ${(props: any) => props.theme.sanity.fonts.text.sizes[1]};\n }\n`\n\nconst FileReferences: React.FC<{\n references?: SanityDocument[]\n isLoaded: boolean\n placement: PluginPlacement\n}> = (props) => {\n const schema = useSchema()\n if (!props.isLoaded) {\n return <SpinnerBox />\n }\n\n if (!props.references?.length) {\n return (\n <Text size={2} weight=\"bold\" muted style={{marginTop: '1.5rem', textAlign: 'center'}}>\n No documents are using this file\n </Text>\n )\n }\n\n const documentPairs = collate(props.references || [])\n return (\n <Container>\n {documentPairs?.map((documentPair) => {\n const schemaType = schema.get(documentPair.type)\n\n return (\n <Card\n key={documentPair.id}\n marginBottom={2}\n padding={2}\n radius={2}\n shadow={1}\n style={{overflow: 'hidden'}}\n >\n <Box>\n <DocumentPreview\n documentPair={documentPair}\n schemaType={schemaType}\n placement={props.placement}\n />\n </Box>\n </Card>\n )\n })}\n </Container>\n )\n}\n\nexport default FileReferences\n","import {TrashIcon} from '@sanity/icons'\nimport {Button, Card, Checkbox, Dialog, Flex, Heading, Stack, Text, useToast} from '@sanity/ui'\nimport React, {useEffect, useState} from 'react'\nimport {SanityDocument} from 'sanity'\n\nimport {deleteAsset} from '../../actions/assets'\nimport {useClient} from '../../hooks/useClient'\nimport {DIALOGS_Z_INDEX} from '../../util/constants'\nimport {PluginPlacement, VideoAssetDocument} from '../../util/types'\nimport SpinnerBox from '../SpinnerBox'\nimport FileReferences from './VideoReferences'\n\nexport default function DeleteDialog({\n asset,\n references,\n referencesLoading,\n cancelDelete,\n placement,\n succeededDeleting,\n}: {\n asset: VideoAssetDocument\n placement: PluginPlacement\n references?: SanityDocument[]\n referencesLoading: boolean\n cancelDelete: () => void\n succeededDeleting: () => void\n}) {\n const client = useClient()\n const [state, setState] = useState<\n 'processing_deletion' | 'checkingReferences' | 'error_deleting' | 'cantDelete' | 'confirm'\n >('checkingReferences')\n const [deleteOnMux, setDeleteOnMux] = useState(true)\n const toast = useToast()\n\n useEffect(() => {\n if (state !== 'checkingReferences' || referencesLoading) return\n\n setState(references?.length ? 'cantDelete' : 'confirm')\n }, [state, references, referencesLoading])\n\n async function confirmDelete() {\n if (state !== 'confirm') return\n\n setState('processing_deletion')\n const worked = await deleteAsset({client, asset, deleteOnMux})\n if (worked === true) {\n toast.push({title: 'Successfully deleted video', status: 'success'})\n succeededDeleting()\n } else if (worked === 'failed-mux') {\n toast.push({\n title: 'Deleted video in Sanity',\n description: \"But it wasn't deleted in Mux\",\n status: 'warning',\n })\n succeededDeleting()\n } else {\n toast.push({title: 'Failed deleting video', status: 'error'})\n\n setState('error_deleting')\n }\n }\n\n return (\n <Dialog\n header={'Delete file'}\n zOffset={DIALOGS_Z_INDEX}\n id=\"deleting-file-details-dialog\"\n onClose={cancelDelete}\n onClickOutside={cancelDelete}\n width={1}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={TrashIcon}\n fontSize={2}\n padding={3}\n text=\"Delete file\"\n tone=\"critical\"\n onClick={confirmDelete}\n disabled={['processing_deletion', 'checkingReferences', 'cantDelete'].some(\n (s) => s === state\n )}\n />\n </Flex>\n </Card>\n }\n >\n <Card\n padding={5}\n style={{\n minHeight: '150px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Stack space={3}>\n {state === 'checkingReferences' && (\n <>\n <Heading size={2}>Checking if file can be deleted</Heading>\n <SpinnerBox />\n </>\n )}\n {state === 'cantDelete' && (\n <>\n <Heading size={2}>Video can't be deleted</Heading>\n <Text size={2} style={{marginBottom: '2rem'}}>\n There are {references?.length} document{references && references.length > 0 && 's'}{' '}\n pointing to this file. Remove their references to this file or delete them before\n proceeding.\n </Text>\n <FileReferences\n references={references}\n isLoaded={!referencesLoading}\n placement={placement}\n />\n </>\n )}\n {state === 'confirm' && (\n <>\n <Heading size={2}>Are you sure you want to delete this file?</Heading>\n <Text size={2}>This action is irreversible</Text>\n <Stack space={4} marginTop={4}>\n <Flex align=\"center\" as=\"label\">\n <Checkbox\n checked={deleteOnMux}\n onChange={() => setDeleteOnMux((prev) => !prev)}\n />\n <Text style={{margin: '0 10px'}}>Delete asset on Mux</Text>\n </Flex>\n <Flex align=\"center\" as=\"label\">\n <Checkbox disabled checked />\n <Text style={{margin: '0 10px'}}>Delete video from dataset</Text>\n </Flex>\n </Stack>\n </>\n )}\n {state === 'processing_deletion' && (\n <>\n <Heading size={2}>Deleting file...</Heading>\n <SpinnerBox />\n </>\n )}\n {state === 'error_deleting' && (\n <>\n <Heading size={2}>Something went wrong!</Heading>\n <Text size={2}>Try deleting the file again by clicking the button below</Text>\n </>\n )}\n </Stack>\n </Card>\n </Dialog>\n )\n}\n","import {createHookFromObservableFactory, DocumentStore, SanityDocument} from 'sanity'\n\nimport {SANITY_API_VERSION} from './useClient'\n\nconst useDocReferences = createHookFromObservableFactory<\n SanityDocument[],\n {\n documentStore: DocumentStore\n id: string\n }\n>(({documentStore, id}) => {\n return documentStore.listenQuery(\n /* groq */ '*[references($id)]{_id, _type, _rev, _updatedAt, _createdAt}',\n {id},\n {\n apiVersion: SANITY_API_VERSION,\n }\n )\n})\n\nexport default useDocReferences\n","/* eslint-disable */\n// From: https://stackoverflow.com/a/11486026/10433647\nexport default function formatSeconds(seconds: number): string {\n if (typeof seconds !== 'number' || Number.isNaN(seconds)) {\n return ''\n }\n // Hours, minutes and seconds\n const hrs = ~~(seconds / 3600)\n const mins = ~~((seconds % 3600) / 60)\n const secs = ~~seconds % 60\n\n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\n let ret = ''\n\n if (hrs > 0) {\n ret += '' + hrs + ':' + (mins < 10 ? '0' : '')\n }\n\n ret += '' + mins + ':' + (secs < 10 ? '0' : '')\n ret += '' + secs\n return ret\n}\n","import formatSeconds from './formatSeconds'\nimport {VideoAssetDocument} from './types'\n\nexport default function getVideoMetadata(doc: VideoAssetDocument) {\n const id = doc.assetId || doc._id || ''\n const date = doc.data?.created_at\n ? new Date(Number(doc.data.created_at) * 1000)\n : new Date(doc._createdAt || doc._updatedAt || Date.now())\n\n return {\n title: doc.filename || id.slice(0, 10),\n createdAt: date,\n duration: doc.data?.duration ? formatSeconds(doc.data?.duration) : undefined,\n aspect_ratio: doc.data?.aspect_ratio,\n max_stored_resolution: doc.data?.max_stored_resolution,\n max_stored_frame_rate: doc.data?.max_stored_frame_rate,\n }\n}\n","import {useToast} from '@sanity/ui'\nimport {useState} from 'react'\nimport {useDocumentStore} from 'sanity'\n\nimport {useClient} from '../../hooks/useClient'\nimport useDocReferences from '../../hooks/useDocReferences'\nimport getVideoMetadata from '../../util/getVideoMetadata'\nimport {PluginPlacement, VideoAssetDocument} from '../../util/types'\n\nexport interface FileDetailsProps {\n placement: PluginPlacement\n closeDialog: () => void\n asset: VideoAssetDocument & {autoPlay?: boolean}\n}\n\nexport default function useFileDetails(props: FileDetailsProps) {\n const documentStore = useDocumentStore()\n const toast = useToast()\n const client = useClient()\n const [references, referencesLoading] = useDocReferences({\n documentStore,\n id: props.asset._id as string,\n })\n\n const [originalAsset, setOriginalAsset] = useState(() => props.asset)\n const [filename, setFilename] = useState(props.asset.filename)\n const modified = filename !== originalAsset.filename\n\n const displayInfo = getVideoMetadata({...props.asset, filename})\n\n const [state, setState] = useState<'deleting' | 'closing' | 'idle' | 'saving'>('idle')\n\n function handleClose() {\n if (state !== 'idle') return\n\n if (modified) {\n setState('closing')\n return\n }\n\n props.closeDialog()\n }\n\n function confirmClose(shouldClose: boolean) {\n if (state !== 'closing') return\n\n if (shouldClose) props.closeDialog()\n\n setState('idle')\n }\n\n async function saveChanges() {\n if (state !== 'idle') return\n setState('saving')\n\n try {\n await client.patch(props.asset._id).set({filename}).commit()\n setOriginalAsset((prev) => ({...prev, filename}))\n toast.push({title: 'File name updated', status: 'success'})\n } catch (error) {\n toast.push({\n title: 'Failed updating file name',\n status: 'error',\n description: typeof error === 'string' ? error : 'Please try again',\n })\n setFilename(originalAsset.filename)\n }\n\n setState('idle')\n }\n\n return {\n references,\n referencesLoading,\n modified,\n filename,\n setFilename,\n displayInfo,\n state,\n setState,\n handleClose,\n confirmClose,\n saveChanges,\n }\n}\n","import {\n CalendarIcon,\n CheckmarkIcon,\n ClockIcon,\n CropIcon,\n EditIcon,\n ErrorOutlineIcon,\n RevertIcon,\n SearchIcon,\n TrashIcon,\n} from '@sanity/icons'\nimport {\n Button,\n Card,\n Dialog,\n Flex,\n Heading,\n Spinner,\n Stack,\n Tab,\n TabList,\n TabPanel,\n Text,\n TextInput,\n} from '@sanity/ui'\nimport React, {useEffect, useState} from 'react'\n\nimport {DIALOGS_Z_INDEX} from '../../util/constants'\nimport FormField from '../FormField'\nimport IconInfo from '../IconInfo'\nimport {ResolutionIcon} from '../icons/Resolution'\nimport {StopWatchIcon} from '../icons/StopWatch'\nimport VideoPlayer from '../VideoPlayer'\nimport DeleteDialog from './DeleteDialog'\nimport useFileDetails, {FileDetailsProps} from './useVideoDetails'\nimport FileReferences from './VideoReferences'\n\nconst AssetInput: React.FC<{\n label: string\n description?: string\n placeholder?: string\n value: string\n onInput: (e: React.FormEvent<HTMLInputElement>) => void\n disabled?: boolean\n}> = (props) => (\n <FormField title={props.label} description={props.description} inputId={props.label}>\n <TextInput\n id={props.label}\n value={props.value}\n placeholder={props.placeholder}\n onInput={props.onInput}\n disabled={props.disabled}\n />\n </FormField>\n)\n\nconst VideoDetails: React.FC<FileDetailsProps> = (props) => {\n const [tab, setTab] = useState<'details' | 'references'>('details')\n const {\n displayInfo,\n filename,\n modified,\n references,\n referencesLoading,\n setFilename,\n state,\n setState,\n handleClose,\n confirmClose,\n saveChanges,\n } = useFileDetails(props)\n\n const isSaving = state === 'saving'\n\n // Avoid layout shifts in large screens' 2-column dialog by setting their `minHeight` to the container's\n const [containerHeight, setContainerHeight] = useState<number | null>(null)\n const contentsRef = React.useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (!contentsRef.current || !('getBoundingClientRect' in contentsRef.current)) return\n\n setContainerHeight(contentsRef.current.getBoundingClientRect().height)\n }, [])\n\n return (\n <Dialog\n header={displayInfo.title}\n zOffset={DIALOGS_Z_INDEX}\n id=\"file-details-dialog\"\n onClose={handleClose}\n onClickOutside={handleClose}\n width={2}\n style={{minHeight: '50vh'}}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={TrashIcon}\n fontSize={2}\n padding={3}\n mode=\"bleed\"\n text=\"Delete\"\n tone=\"critical\"\n onClick={() => setState('deleting')}\n disabled={isSaving}\n />\n {modified && (\n <Button\n icon={CheckmarkIcon}\n fontSize={2}\n padding={3}\n mode=\"ghost\"\n text=\"Save and close\"\n tone=\"positive\"\n onClick={saveChanges}\n iconRight={isSaving && Spinner}\n disabled={isSaving}\n />\n )}\n </Flex>\n </Card>\n }\n >\n {/* DELETION DIALOG */}\n {state === 'deleting' && (\n <DeleteDialog\n asset={props.asset}\n cancelDelete={() => setState('idle')}\n placement={props.placement}\n referencesLoading={referencesLoading}\n references={references}\n succeededDeleting={() => {\n props.closeDialog()\n }}\n />\n )}\n\n {/* CONFIRM CLOSING DIALOG */}\n {state === 'closing' && (\n <Dialog\n header={'You have unsaved changes'}\n zOffset={DIALOGS_Z_INDEX}\n id=\"closing-file-details-dialog\"\n onClose={() => confirmClose(false)}\n onClickOutside={() => confirmClose(false)}\n width={1}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={ErrorOutlineIcon}\n fontSize={2}\n padding={3}\n text=\"Discard changes\"\n tone=\"critical\"\n onClick={() => confirmClose(true)}\n />\n {modified && (\n <Button\n icon={RevertIcon}\n fontSize={2}\n padding={3}\n mode=\"ghost\"\n text=\"Keep editing\"\n tone=\"primary\"\n onClick={() => confirmClose(false)}\n />\n )}\n </Flex>\n </Card>\n }\n >\n <Card padding={5}>\n <Stack style={{textAlign: 'center'}} space={3}>\n <Heading size={2}>Unsaved changes will be lost</Heading>\n <Text size={2}>Are you sure you want to discard them?</Text>\n </Stack>\n </Card>\n </Dialog>\n )}\n <Card\n padding={4}\n sizing=\"border\"\n style={{\n containerType: 'inline-size',\n }}\n >\n <Flex\n sizing=\"border\"\n gap={4}\n direction={['column', 'column', 'row']}\n align=\"flex-start\"\n ref={contentsRef}\n style={\n typeof containerHeight === 'number'\n ? {\n minHeight: containerHeight,\n }\n : undefined\n }\n >\n <Stack space={4} flex={1} sizing=\"border\">\n <VideoPlayer asset={props.asset} autoPlay={props.asset.autoPlay || false} />\n </Stack>\n <Stack space={4} flex={1} sizing=\"border\">\n <TabList space={2}>\n <Tab\n aria-controls=\"details-panel\"\n icon={EditIcon}\n id=\"details-tab\"\n label=\"Details\"\n onClick={() => setTab('details')}\n selected={tab === 'details'}\n />\n {references && references.length > 0 && (\n <Tab\n aria-controls=\"references-panel\"\n icon={SearchIcon}\n id=\"references-tab\"\n label={`Used by (${references.length})`}\n onClick={() => setTab('references')}\n selected={tab === 'references'}\n />\n )}\n </TabList>\n <TabPanel aria-labelledby=\"details-tab\" id=\"details-panel\" hidden={tab !== 'details'}>\n <Stack space={4}>\n <AssetInput\n label=\"File name\"\n description=\"Not visible to users. Useful for finding files later.\"\n value={filename || ''}\n onInput={(e) => setFilename(e.currentTarget.value)}\n disabled={state !== 'idle'}\n />\n <Stack space={3}>\n {displayInfo?.duration && (\n <IconInfo\n text={`Duration: ${displayInfo.duration}`}\n icon={ClockIcon}\n size={2}\n />\n )}\n {displayInfo?.max_stored_resolution && (\n <IconInfo\n text={`Max Resolution: ${displayInfo.max_stored_resolution}`}\n icon={ResolutionIcon}\n size={2}\n />\n )}\n {displayInfo?.max_stored_frame_rate && (\n <IconInfo\n text={`Frame rate: ${displayInfo.max_stored_frame_rate}`}\n icon={StopWatchIcon}\n size={2}\n />\n )}\n {displayInfo?.aspect_ratio && (\n <IconInfo\n text={`Aspect Ratio: ${displayInfo.aspect_ratio}`}\n icon={CropIcon}\n size={2}\n />\n )}\n <IconInfo\n text={`Uploaded on: ${displayInfo.createdAt.toLocaleDateString('en', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n })}`}\n icon={CalendarIcon}\n size={2}\n />\n </Stack>\n </Stack>\n </TabPanel>\n <TabPanel\n aria-labelledby=\"references-tab\"\n id=\"references-panel\"\n hidden={tab !== 'references'}\n >\n <FileReferences\n references={references}\n isLoaded={!referencesLoading}\n placement={props.placement}\n />\n </TabPanel>\n </Stack>\n </Flex>\n </Card>\n </Dialog>\n )\n}\n\nexport default VideoDetails\n","import {CalendarIcon, ClockIcon} from '@sanity/icons'\nimport {Inline, Stack, Text} from '@sanity/ui'\nimport React from 'react'\n\nimport getVideoMetadata from '../util/getVideoMetadata'\nimport {VideoAssetDocument} from '../util/types'\nimport IconInfo from './IconInfo'\n\nconst VideoMetadata = (props: {asset: VideoAssetDocument}) => {\n if (!props.asset) {\n return null\n }\n\n const displayInfo = getVideoMetadata(props.asset)\n return (\n <Stack space={2}>\n {displayInfo.title && (\n <Text\n size={1}\n weight=\"semibold\"\n style={{\n wordWrap: 'break-word',\n }}\n >\n {displayInfo.title}\n </Text>\n )}\n <Inline space={3}>\n {displayInfo?.duration && (\n <IconInfo text={displayInfo.duration} icon={ClockIcon} size={1} muted />\n )}\n <IconInfo\n text={displayInfo.createdAt.toISOString().split('T')[0]}\n icon={CalendarIcon}\n size={1}\n muted\n />\n </Inline>\n </Stack>\n )\n}\n\nexport default VideoMetadata\n","import type {RefObject} from 'react'\nimport {useEffect, useRef, useState} from 'react'\n\ntype IntersectionOptions = {\n root?: Element | null\n rootMargin?: string\n threshold?: number\n onChange?: (inView: boolean) => void\n}\n\nfunction useInView<RefElement = HTMLElement>(\n options: IntersectionOptions = {}\n): {inView: boolean; ref: RefObject<RefElement>} {\n const [inView, setInView] = useState(false)\n const ref = useRef(null)\n\n useEffect(() => {\n if (!ref.current) return\n\n const observer = new IntersectionObserver(([entry], obs) => {\n // ==== from react-intersection-observer ====\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const nowInView =\n entry.isIntersecting &&\n obs.thresholds.some((threshold) => entry.intersectionRatio >= threshold)\n\n // Update our state when observer callback fires\n setInView(nowInView)\n options?.onChange?.(nowInView)\n }, options)\n\n const toObserve = ref.current\n observer.observe(toObserve)\n\n // eslint-disable-next-line\n return () => {\n if (toObserve) observer.unobserve(toObserve)\n }\n }, [options])\n\n return {inView, ref}\n}\n\nexport default useInView\n","import type {SanityClient} from 'sanity'\n\nimport {generateJwt} from './generateJwt'\nimport {getPlaybackId} from './getPlaybackId'\nimport {getPlaybackPolicy} from './getPlaybackPolicy'\nimport type {AnimatedThumbnailOptions, MuxAnimatedThumbnailUrl, VideoAssetDocument} from './types'\n\nexport interface AnimatedPosterSrcOptions extends AnimatedThumbnailOptions {\n asset: Partial<VideoAssetDocument>\n client: SanityClient\n}\n\nexport function getAnimatedPosterSrc({\n asset,\n client,\n height,\n width,\n start = asset.thumbTime ? Math.max(0, asset.thumbTime - 2.5) : 0,\n end = start + 5,\n fps = 15,\n}: AnimatedPosterSrcOptions): MuxAnimatedThumbnailUrl {\n const params = {height, width, start, end, fps}\n const playbackId = getPlaybackId(asset)\n\n let searchParams = new URLSearchParams(\n JSON.parse(JSON.stringify(params, (_, v) => v ?? undefined))\n )\n if (getPlaybackPolicy(asset) === 'signed') {\n const token = generateJwt(client, playbackId, 'g', params)\n searchParams = new URLSearchParams({token})\n }\n\n return `https://image.mux.com/${playbackId}/animated.gif?${searchParams}`\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Card, CardTone, Stack, Text} from '@sanity/ui'\nimport React, {useMemo, useState} from 'react'\nimport styled from 'styled-components'\n\nimport {useClient} from '../hooks/useClient'\nimport useInView from '../hooks/useInView'\nimport {THUMBNAIL_ASPECT_RATIO} from '../util/constants'\nimport {getAnimatedPosterSrc} from '../util/getAnimatedPosterSrc'\nimport {VideoAssetDocument} from '../util/types'\nimport SpinnerBox from './SpinnerBox'\n\nconst Image = styled.img`\n transition: opacity 0.175s ease-out 0s;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center center;\n`\n\ntype ImageStatus = 'loading' | 'error' | 'loaded'\n\nconst STATUS_TO_TONE: Record<ImageStatus, CardTone> = {\n loading: 'transparent',\n error: 'critical',\n loaded: 'default',\n}\n\nexport default function VideoThumbnail({\n asset,\n width = 250,\n}: {\n asset: Partial<VideoAssetDocument>\n width?: number\n}) {\n const {inView, ref} = useInView()\n\n const [status, setStatus] = useState<ImageStatus>('loading')\n const client = useClient()\n\n const animatedSrc = useMemo(() => {\n try {\n return getAnimatedPosterSrc({asset, client, width})\n } catch {\n if (status !== 'error') setStatus('error')\n return undefined\n }\n }, [asset, client, width, status, setStatus])\n\n function handleLoad() {\n setStatus('loaded')\n }\n\n function handleError() {\n setStatus('error')\n }\n\n return (\n <Card\n style={{\n aspectRatio: THUMBNAIL_ASPECT_RATIO,\n position: 'relative',\n }}\n border\n radius={2}\n ref={ref as any}\n tone={STATUS_TO_TONE[status]}\n >\n {inView ? (\n <>\n {status === 'loading' && <SpinnerBox />}\n {status === 'error' && (\n <Stack\n space={4}\n style={{\n position: 'absolute',\n width: '100%',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n justifyItems: 'center',\n }}\n >\n <Text size={4} muted>\n <ErrorOutlineIcon style={{fontSize: '1.75em'}} />\n </Text>\n <Text muted align=\"center\">\n Failed loading thumbnail\n </Text>\n </Stack>\n )}\n <Image\n src={animatedSrc}\n alt={`Preview for video ${asset.filename || asset.assetId}`}\n onLoad={handleLoad}\n onError={handleError}\n style={{\n opacity: status === 'loaded' ? 1 : 0,\n }}\n />\n </>\n ) : null}\n </Card>\n )\n}\n","import {CheckmarkIcon, EditIcon, LockIcon, PlayIcon} from '@sanity/icons'\nimport {Button, Card, Stack, Text, Tooltip} from '@sanity/ui'\nimport React, {useState} from 'react'\nimport styled from 'styled-components'\n\nimport {THUMBNAIL_ASPECT_RATIO} from '../util/constants'\nimport {getPlaybackPolicy} from '../util/getPlaybackPolicy'\nimport {VideoAssetDocument} from '../util/types'\nimport IconInfo from './IconInfo'\nimport VideoMetadata from './VideoMetadata'\nimport VideoPlayer from './VideoPlayer'\nimport VideoThumbnail from './VideoThumbnail'\n\nconst PlayButton = styled.button`\n display: block;\n padding: 0;\n margin: 0;\n border: none;\n border-radius: 0.1875rem;\n position: relative;\n cursor: pointer;\n\n &::after {\n content: '';\n background: var(--card-fg-color);\n opacity: 0;\n display: block;\n position: absolute;\n inset: 0;\n z-index: 10;\n transition: 0.15s ease-out;\n border-radius: inherit;\n }\n\n > div[data-play] {\n z-index: 11;\n opacity: 0;\n transition: 0.15s 0.05s ease-out;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n width: auto;\n height: 30%;\n aspect-ratio: 1;\n border-radius: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n > svg {\n display: block;\n width: 70%;\n height: auto;\n // Visual balance to center-align the icon\n transform: translateX(5%);\n }\n }\n\n &:hover,\n &:focus {\n &::after {\n opacity: 0.3;\n }\n > div[data-play] {\n opacity: 1;\n }\n }\n`\n\nexport default function VideoInBrowser({\n onSelect,\n onEdit,\n asset,\n}: {\n onSelect?: (asset: VideoAssetDocument) => void\n onEdit?: (asset: VideoAssetDocument) => void\n asset: VideoAssetDocument\n}) {\n const [renderVideo, setRenderVideo] = useState(false)\n const select = React.useCallback(() => onSelect?.(asset), [onSelect, asset])\n const edit = React.useCallback(() => onEdit?.(asset), [onEdit, asset])\n\n if (!asset) {\n return null\n }\n\n const playbackPolicy = getPlaybackPolicy(asset)\n\n return (\n <Card\n border\n padding={2}\n sizing=\"border\"\n radius={2}\n style={{\n position: 'relative',\n }}\n >\n {playbackPolicy === 'signed' && (\n <Tooltip\n content={\n <Card padding={2} radius={2}>\n <IconInfo icon={LockIcon} text=\"Signed playback policy\" size={2} />\n </Card>\n }\n placement=\"right\"\n fallbackPlacements={['top', 'bottom']}\n portal\n >\n <Card\n tone=\"caution\"\n style={{\n borderRadius: '100%',\n position: 'absolute',\n left: '1em',\n top: '1em',\n zIndex: 10,\n }}\n padding={2}\n border\n >\n <Text muted size={1}>\n <LockIcon />\n </Text>\n </Card>\n </Tooltip>\n )}\n <Stack\n space={3}\n height=\"fill\"\n style={{\n gridTemplateRows: 'min-content min-content 1fr',\n }}\n >\n {renderVideo ? (\n <VideoPlayer asset={asset} autoPlay forceAspectRatio={THUMBNAIL_ASPECT_RATIO} />\n ) : (\n <PlayButton onClick={() => setRenderVideo(true)}>\n <div data-play>\n <PlayIcon />\n </div>\n <VideoThumbnail asset={asset} />\n </PlayButton>\n )}\n <VideoMetadata asset={asset} />\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'flex-end',\n justifyContent: 'flex-start',\n gap: '.35rem',\n }}\n >\n {onSelect && (\n <Button\n icon={CheckmarkIcon}\n fontSize={2}\n padding={2}\n mode=\"ghost\"\n text=\"Select\"\n style={{flex: 1}}\n tone=\"positive\"\n onClick={select}\n />\n )}\n <Button\n icon={EditIcon}\n fontSize={2}\n padding={2}\n mode=\"ghost\"\n text=\"Details\"\n style={{flex: 1}}\n onClick={edit}\n />\n </div>\n </Stack>\n </Card>\n )\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Card, Flex, Grid, Label, Stack, Text, TextInput} from '@sanity/ui'\nimport React from 'react'\n\nimport useAssets from '../hooks/useAssets'\nimport type {VideoAssetDocument} from '../util/types'\nimport {SelectSortOptions} from './SelectSortOptions'\nimport SpinnerBox from './SpinnerBox'\nimport {FileDetailsProps} from './VideoDetails/useVideoDetails'\nimport VideoDetails from './VideoDetails/VideoDetails'\nimport VideoInBrowser from './VideoInBrowser'\n\nexport interface VideosBrowserProps {\n onSelect?: (asset: VideoAssetDocument) => void\n}\n\nexport default function VideosBrowser({onSelect}: VideosBrowserProps) {\n const {assets, isLoading, searchQuery, setSearchQuery, setSort, sort} = useAssets()\n const [editedAsset, setEditedAsset] = React.useState<FileDetailsProps['asset'] | null>(null)\n const freshEditedAsset = React.useMemo(\n () => assets.find((a) => a._id === editedAsset?._id) || editedAsset,\n [editedAsset, assets]\n )\n\n return (\n <>\n <Stack padding={4} space={4}>\n <Flex justify=\"space-between\" align=\"center\">\n <Flex align=\"center\" gap={3}>\n <TextInput\n value={searchQuery}\n icon={SearchIcon}\n onInput={(e: React.FormEvent<HTMLInputElement>) =>\n setSearchQuery(e.currentTarget.value)\n }\n placeholder=\"Search files\"\n />\n <SelectSortOptions setSort={setSort} sort={sort} />\n </Flex>\n </Flex>\n <Stack space={3}>\n {assets?.length > 0 && (\n <Label muted>\n {assets.length} video{assets.length > 1 ? 's' : null}{' '}\n {searchQuery ? `matching \"${searchQuery}\"` : 'found'}\n </Label>\n )}\n <Grid\n gap={2}\n style={{\n gridTemplateColumns: 'repeat(auto-fill, minmax(250px, 1fr))',\n }}\n >\n {assets.map((asset) => (\n <VideoInBrowser\n key={asset._id}\n asset={asset}\n onEdit={setEditedAsset}\n onSelect={onSelect}\n />\n ))}\n </Grid>\n </Stack>\n {isLoading && <SpinnerBox />}\n\n {!isLoading && assets.length === 0 && (\n <Card padding={2} marginY={4} border radius={2}>\n <Text align=\"center\" muted>\n {searchQuery ? `No videos found for \"${searchQuery}\"` : 'No videos in this dataset'}\n </Text>\n </Card>\n )}\n </Stack>\n {freshEditedAsset && (\n <VideoDetails\n closeDialog={() => setEditedAsset(null)}\n asset={freshEditedAsset}\n placement={onSelect ? 'input' : 'tool'}\n />\n )}\n </>\n )\n}\n","import React from 'react'\nimport {Tool} from 'sanity'\n\nimport {Config} from '../util/types'\nimport ToolIcon from './icons/ToolIcon'\nimport VideosBrowser from './VideosBrowser'\n\nconst StudioTool: React.FC<Config> = () => {\n return <VideosBrowser />\n}\n\nexport default function createStudioTool(config: Config): Tool {\n const toolConfig = typeof config.tool === 'object' ? config.tool : {}\n return {\n name: 'mux',\n title: toolConfig.title || 'Videos',\n component: (props: any) => <StudioTool {...config} {...props} />,\n icon: toolConfig.icon || ToolIcon,\n }\n}\n","import {isReference} from 'sanity'\nimport {useDocumentValues} from 'sanity'\n\nimport type {Reference, VideoAssetDocument} from '../util/types'\n\nconst path = ['assetId', 'data', 'playbackId', 'status', 'thumbTime', 'filename']\nexport const useAssetDocumentValues = (asset: Reference | null | undefined) =>\n useDocumentValues<VideoAssetDocument | null | undefined>(\n isReference(asset) ? asset._ref! : '',\n path\n )\n","// Handy little state machine to simplify managing which root level dialog to open\n\nimport {useState} from 'react'\n\nexport type DialogState = 'secrets' | 'select-video' | 'edit-thumbnail' | false\n\nexport function useDialogState() {\n return useState<DialogState>(false)\n}\n\nexport type SetDialogState = ReturnType<typeof useDialogState>[1]\n","import {useMemo} from 'react'\nimport {useDataset, useProjectId} from 'sanity'\nimport useSWR from 'swr'\n\nimport {useClient} from '../hooks/useClient'\nimport type {MuxAsset, VideoAssetDocument} from '../util/types'\n\n// Poll MUX if it's preparing the main document or its own static renditions\nexport const useMuxPolling = (asset?: VideoAssetDocument) => {\n const client = useClient()\n const projectId = useProjectId()\n const dataset = useDataset()\n const shouldFetch = useMemo(\n () =>\n !!asset?.assetId &&\n (asset?.status === 'preparing' || asset?.data?.static_renditions?.status === 'preparing'),\n [asset?.assetId, asset?.data?.static_renditions?.status, asset?.status]\n )\n return useSWR(\n shouldFetch ? `/${projectId}/addons/mux/assets/${dataset}/data/${asset?.assetId}` : null,\n async () => {\n const {data} = await client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${asset!.assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n client.patch(asset!._id!).set({status: data.status, data}).commit({returnDocuments: false})\n },\n {refreshInterval: 2000, refreshWhenHidden: true, dedupingInterval: 1000}\n )\n}\n","import {useMemo} from 'react'\nimport {useDocumentValues} from 'sanity'\n\nimport {muxSecretsDocumentId} from '../util/constants'\nimport type {Secrets} from '../util/types'\n\nconst path = ['token', 'secretKey', 'enableSignedUrls', 'signingKeyId', 'signingKeyPrivate']\nexport const useSecretsDocumentValues = () => {\n const {error, isLoading, value} = useDocumentValues<Partial<Secrets> | null | undefined>(\n muxSecretsDocumentId,\n path\n )\n const cache = useMemo(() => {\n const exists = Boolean(value)\n const secrets: Secrets = {\n token: value?.token || null,\n secretKey: value?.secretKey || null,\n enableSignedUrls: value?.enableSignedUrls || false,\n signingKeyId: value?.signingKeyId || null,\n signingKeyPrivate: value?.signingKeyPrivate || null,\n }\n return {\n isInitialSetup: !exists,\n needsSetup: !secrets?.token || !secrets?.secretKey,\n secrets,\n }\n }, [value])\n\n return {error, isLoading, value: cache}\n}\n","import {UpChunk} from '@mux/upchunk'\nimport {Observable} from 'rxjs'\n\nexport function createUpChunkObservable(uuid: string, uploadUrl: string, source: File) {\n return new Observable((subscriber) => {\n const upchunk = UpChunk.createUpload({\n endpoint: uploadUrl,\n file: source,\n dynamicChunkSize: true, // changes the chunk size based on network speeds\n })\n\n const successHandler = () => {\n subscriber.next({\n type: 'success',\n id: uuid,\n })\n subscriber.complete()\n }\n\n const errorHandler = (data: CustomEvent) => subscriber.error(new Error(data.detail.message))\n\n const progressHandler = (data: CustomEvent) => {\n return subscriber.next({type: 'progress', percent: data.detail})\n }\n\n const offlineHandler = () => {\n upchunk.pause()\n subscriber.next({\n type: 'pause',\n id: uuid,\n })\n }\n\n const onlineHandler = () => {\n upchunk.resume()\n subscriber.next({\n type: 'resume',\n id: uuid,\n })\n }\n\n upchunk.on('success', successHandler)\n upchunk.on('error', errorHandler)\n upchunk.on('progress', progressHandler)\n upchunk.on('offline', offlineHandler)\n upchunk.on('online', onlineHandler)\n\n return () => upchunk.abort()\n })\n}\n","import {defer} from 'rxjs'\nimport type {SanityClient} from 'sanity'\n\ninterface SecretsDocument {\n _id: 'secrets.mux'\n _type: 'mux.apiKey'\n token: string\n secretKey: string\n enableSignedUrls: boolean\n signingKeyId: string\n signingKeyPrivate: string\n}\n// eslint-disable-next-line max-params\nexport function saveSecrets(\n client: SanityClient,\n token: string,\n secretKey: string,\n enableSignedUrls: boolean,\n signingKeyId: string,\n signingKeyPrivate: string\n): Promise<SecretsDocument> {\n const doc: SecretsDocument = {\n _id: 'secrets.mux',\n _type: 'mux.apiKey',\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n\n return client.createOrReplace(doc)\n}\n\nexport function createSigningKeys(client: SanityClient) {\n const {dataset} = client.config()\n return client.request<{\n data: {private_key: string; id: string; created_at: string}\n }>({\n url: `/addons/mux/signing-keys/${dataset}`,\n withCredentials: true,\n method: 'POST',\n })\n}\n\nexport function testSecrets(client: SanityClient) {\n const {dataset} = client.config()\n return client.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport async function haveValidSigningKeys(\n client: SanityClient,\n signingKeyId: string,\n signingKeyPrivate: string\n) {\n if (!(signingKeyId && signingKeyPrivate)) {\n return false\n }\n\n const {dataset} = client.config()\n try {\n const res = await client.request<{data: {id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}/${signingKeyId}`,\n withCredentials: true,\n method: 'GET',\n })\n //\n // if this signing key is valid it will return { data: { id: 'xxxx' } }\n //\n return !!(res.data && res.data.id)\n } catch (e) {\n console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid')\n return false\n }\n}\n\nexport function testSecretsObservable(client: SanityClient) {\n const {dataset} = client.config()\n return defer(() =>\n client.observable.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n )\n}\n","/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {concat, defer, from, type Observable, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\nimport type {SanityClient} from 'sanity'\n\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\nimport type {Config, MuxAsset} from '../util/types'\nimport {getAsset} from './assets'\nimport {testSecretsObservable} from './secrets'\n\nexport function cancelUpload(client: SanityClient, uuid: string) {\n return client.observable.request({\n url: `/addons/mux/uploads/${client.config().dataset}/${uuid}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function uploadUrl(\n config: Config,\n client: SanityClient,\n url: string,\n options: {enableSignedUrls?: boolean} = {}\n) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable(client).pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const muxBody = {\n input: validUrl,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n mp4_support: config.mp4_support,\n }\n const query = {\n muxBody: JSON.stringify(muxBody),\n filename: validUrl.split('/').slice(-1)[0],\n }\n\n const dataset = client.config().dataset\n return defer(() =>\n client.observable.request({\n url: `/addons/mux/assets/${dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n query,\n })\n ).pipe(\n mergeMap((result) => {\n const asset =\n (result && result.results && result.results[0] && result.results[0].document) ||\n null\n\n if (!asset) {\n return throwError(new Error('No asset document returned'))\n }\n return of({type: 'success', id: uuid, asset})\n })\n )\n })\n )\n )\n })\n )\n}\n\nexport function uploadFile(\n config: Config,\n client: SanityClient,\n file: File,\n options: {enableSignedUrls?: boolean} = {}\n) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable(client).pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const body = {\n mp4_support: config.mp4_support,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n }\n\n return concat(\n of({type: 'uuid', uuid}),\n defer(() =>\n client.observable.request<{\n sanityAssetId: string\n upload: {\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: 'waiting'\n timeout: number\n url: string\n }\n }>({\n url: `/addons/mux/uploads/${client.config().dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n body,\n })\n ).pipe(\n mergeMap((result) => {\n return createUpChunkObservable(uuid, result.upload.url, file).pipe(\n // eslint-disable-next-line no-warning-comments\n // @TODO type the observable events\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((event: any) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(client, uuid)).pipe(\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((doc) => of({...event, asset: doc}))\n )\n }),\n // eslint-disable-next-line max-nested-callbacks\n catchError((err) => {\n // Delete asset document\n return cancelUpload(client, uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\ntype UploadResponse = {\n data: {\n asset_id: string\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: string\n timeout: number\n }\n}\nexport function getUpload(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<UploadResponse>({\n url: `/addons/mux/uploads/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nfunction pollUpload(client: SanityClient, uuid: string): Promise<UploadResponse> {\n const maxTries = 10\n let pollInterval: number\n let tries = 0\n let assetId: string\n let upload: UploadResponse\n return new Promise((resolve, reject) => {\n pollInterval = (setInterval as typeof window.setInterval)(async () => {\n try {\n upload = await getUpload(client, uuid)\n } catch (err) {\n reject(err)\n return\n }\n assetId = upload && upload.data && upload.data.asset_id\n if (assetId) {\n clearInterval(pollInterval)\n resolve(upload)\n }\n if (tries > maxTries) {\n clearInterval(pollInterval)\n reject(new Error('Upload did not finish'))\n }\n tries++\n }, 2000)\n })\n}\n\nasync function updateAssetDocumentFromUpload(client: SanityClient, uuid: string) {\n let upload: UploadResponse\n let asset: {data: MuxAsset}\n try {\n upload = await pollUpload(client, uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(client, upload.data.asset_id)\n } catch (err) {\n return Promise.reject(err)\n }\n\n const doc = {\n _id: uuid,\n _type: 'mux.videoAsset',\n status: asset.data.status,\n data: asset.data,\n assetId: asset.data.id,\n playbackId: asset.data.playback_ids[0].id,\n uploadId: upload.data.id,\n }\n return client.createOrReplace(doc).then(() => {\n return doc\n })\n}\n\nfunction testFile(file: File) {\n if (typeof window !== 'undefined' && file instanceof window.File) {\n const fileOptions = optionsFromFile({}, file)\n return of(fileOptions)\n }\n return throwError(new Error('Invalid file'))\n}\n\nfunction testUrl(url: string): Observable<string> {\n const error = new Error('Invalid URL')\n if (typeof url !== 'string') {\n return throwError(error)\n }\n let parsed\n try {\n parsed = new URL(url)\n } catch (err) {\n return throwError(error)\n }\n if (parsed && !parsed.protocol.match(/http:|https:/)) {\n return throwError(error)\n }\n return of(url)\n}\n\nfunction optionsFromFile(opts: {preserveFilename?: boolean}, file: File) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n return {\n name: opts.preserveFilename === false ? undefined : file.name,\n type: file.type,\n }\n}\n","/**\n * Utilities for extracting files from dataTransfer in a predictable cross-browser fashion.\n * Also recursively extracts files from a directory\n * Inspired by https://github.com/component/normalized-upload\n */\n\nexport function extractDroppedFiles(dataTransfer: DataTransfer) {\n const files = Array.from(dataTransfer.files || [])\n const items = Array.from(dataTransfer.items || [])\n if (files && files.length > 0) {\n return Promise.resolve(files)\n }\n return normalizeItems(items).then((arr) => arr.flat())\n}\n\nfunction normalizeItems(items: DataTransferItem[]) {\n return Promise.all(\n items.map((item) => {\n // directory\n if (item.kind === 'file' && item.webkitGetAsEntry) {\n let entry: FileSystemEntry | File[] | null\n // Edge throws\n try {\n entry = item.webkitGetAsEntry()\n } catch (err) {\n return [item.getAsFile()]\n }\n if (!entry) {\n return []\n }\n return entry.isDirectory ? walk(entry) : [item.getAsFile()]\n }\n\n // file\n if (item.kind === 'file') {\n const file = item.getAsFile()\n return Promise.resolve(file ? [file] : [])\n }\n\n // others\n return new Promise((resolve) => item.getAsString(resolve)).then((str?: any) =>\n str ? [new File([str], 'unknown.txt', {type: item.type})] : []\n )\n })\n )\n}\n\nfunction isFile(entry: FileSystemEntry): entry is FileSystemFileEntry {\n return entry.isFile\n}\nfunction isDirectory(entry: FileSystemEntry): entry is FileSystemDirectoryEntry {\n return entry.isDirectory\n}\n\nfunction walk(entry: FileSystemEntry): any {\n if (isFile(entry)) {\n return new Promise((resolve) => entry.file(resolve)).then((file) => [file])\n }\n\n if (isDirectory(entry)) {\n const dir = entry.createReader()\n return new Promise<any>((resolve) => dir.readEntries(resolve))\n .then((entries: FileSystemEntry[]) => entries.filter((entr) => !entr.name.startsWith('.')))\n .then((entries) => Promise.all(entries.map(walk)).then((arr) => arr.flat()))\n }\n return Promise.resolve([])\n}\n","import React, {useCallback} from 'react'\nimport {PatchEvent, set, setIfMissing, unset} from 'sanity'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport VideosBrowser, {type VideosBrowserProps} from './VideosBrowser'\n\nexport interface Props extends Pick<MuxInputProps, 'onChange'> {\n asset?: VideoAssetDocument | null | undefined\n setDialogState: SetDialogState\n}\n\nexport default function SelectAssets({asset: selectedAsset, onChange, setDialogState}: Props) {\n const handleSelect = useCallback<Required<VideosBrowserProps>['onSelect']>(\n (chosenAsset) => {\n if (!chosenAsset?._id) {\n onChange(PatchEvent.from([unset(['asset'])]))\n }\n if (chosenAsset._id !== selectedAsset?._id) {\n onChange(\n PatchEvent.from([\n setIfMissing({asset: {}}),\n set({_type: 'reference', _weak: true, _ref: chosenAsset._id}, ['asset']),\n ])\n )\n }\n setDialogState(false)\n },\n [onChange, setDialogState, selectedAsset]\n )\n\n return <VideosBrowser onSelect={handleSelect} />\n}\n","import {Dialog} from '@sanity/ui'\nimport React, {useCallback, useId} from 'react'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport SelectAsset, {type Props as SelectAssetProps} from './SelectAsset'\n\ninterface Props extends Pick<SelectAssetProps, 'onChange' | 'asset'> {\n setDialogState: SetDialogState\n}\nexport default function InputBrowser({setDialogState, asset, onChange}: Props) {\n const id = `InputBrowser${useId()}`\n const handleClose = useCallback(() => setDialogState(false), [setDialogState])\n return (\n <Dialog __unstable_autoFocus header=\"Select video\" id={id} onClose={handleClose} width={2}>\n <SelectAsset asset={asset} onChange={onChange} setDialogState={setDialogState} />\n </Dialog>\n )\n}\n","import {useCallback} from 'react'\nimport {PatchEvent, unset} from 'sanity'\n\nimport {deleteAssetOnMux} from '../actions/assets'\nimport {useClient} from '../hooks/useClient'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\n\nexport const useCancelUpload = (asset: VideoAssetDocument, onChange: MuxInputProps['onChange']) => {\n const client = useClient()\n return useCallback(() => {\n if (!asset) {\n return\n }\n onChange(PatchEvent.from(unset()))\n if (asset.assetId) {\n deleteAssetOnMux(client, asset.assetId)\n }\n if (asset._id) {\n client.delete(asset._id)\n }\n }, [asset, client, onChange])\n}\n","import {useState} from 'react'\nimport styled from 'styled-components'\n\nimport {useClient} from '../hooks/useClient'\nimport {getStoryboardSrc} from '../util/getStoryboardSrc'\nimport type {VideoAssetDocument} from '../util/types'\n\nexport const StyledCenterControls = styled.div`\n && {\n --media-background-color: transparent;\n --media-button-icon-width: 100%;\n --media-button-icon-height: auto;\n pointer-events: none;\n width: 100%;\n display: flex;\n flex-flow: row;\n align-items: center;\n justify-content: center;\n media-play-button {\n --media-control-background: transparent;\n --media-control-hover-background: transparent;\n padding: 0;\n width: max(27px, min(9%, 90px));\n }\n }\n`\n\nexport const TopControls = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n justify-content: flex-end;\n button {\n height: auto;\n }\n`\n\nexport interface PosterImageProps {\n asset: VideoAssetDocument\n}\nexport interface ThumbnailsMetadataTrackProps {\n asset: VideoAssetDocument\n}\nexport function ThumbnailsMetadataTrack({asset}: ThumbnailsMetadataTrackProps) {\n const client = useClient()\n // Why useState instead of useMemo? Because we really really only want to run it exactly once and useMemo doesn't make that guarantee\n const [src] = useState<string>(() => getStoryboardSrc({asset, client}))\n\n return <track label=\"thumbnails\" default kind=\"metadata\" src={src} />\n}\n","// Lifted from sanity/form/inputs/files/common/UploadProgress\n\nimport {Button, Card, Code, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport React from 'react'\nimport {LinearProgress} from 'sanity'\nimport styled from 'styled-components'\n\nexport const CardWrapper = styled(Card)`\n min-height: 82px;\n box-sizing: border-box;\n`\n\nexport const FlexWrapper = styled(Flex)`\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\nexport const LeftSection = styled(Stack)`\n position: relative;\n width: 60%;\n`\n\nexport const CodeWrapper = styled(Code)`\n position: relative;\n width: 100%;\n\n code {\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n max-width: 200px;\n }\n`\n\nexport const UploadProgress = ({\n progress = 100,\n onCancel,\n filename,\n text = 'Uploading',\n}: {\n progress: number\n filename?: React.ReactNode\n onCancel?: React.MouseEventHandler<HTMLButtonElement>\n text?: React.ReactNode\n}) => {\n return (\n <CardWrapper tone=\"primary\" padding={4} border height=\"fill\">\n <FlexWrapper align=\"center\" justify=\"space-between\" height=\"fill\" direction=\"row\" gap={2}>\n <LeftSection>\n <Flex justify=\"center\" gap={[3, 3, 2, 2]} direction={['column', 'column', 'row']}>\n <Text size={1}>\n <Inline space={2}>\n {text}\n <CodeWrapper size={1}>{filename ? filename : '...'}</CodeWrapper>\n </Inline>\n </Text>\n </Flex>\n\n <Card marginTop={3} radius={5} shadow={1}>\n <LinearProgress value={progress} />\n </Card>\n </LeftSection>\n\n {onCancel ? (\n <Button\n fontSize={2}\n text=\"Cancel upload\"\n mode=\"ghost\"\n tone=\"critical\"\n onClick={onCancel}\n />\n ) : null}\n </FlexWrapper>\n </CardWrapper>\n )\n}\n","import {Card, Text} from '@sanity/ui'\nimport React, {useEffect, useMemo, useRef} from 'react'\n\nimport {useCancelUpload} from '../hooks/useCancelUpload'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport {TopControls} from './Player.styled'\nimport {UploadProgress} from './UploadProgress'\nimport VideoPlayer from './VideoPlayer'\n\ninterface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n buttons?: React.ReactNode\n asset: VideoAssetDocument\n}\n\nconst Player = ({asset, buttons, readOnly, onChange}: Props) => {\n const isLoading = useMemo<boolean | string>(() => {\n if (asset?.status === 'preparing') {\n return 'Preparing the video'\n }\n if (asset?.status === 'waiting_for_upload') {\n return 'Waiting for upload to start'\n }\n if (asset?.status === 'waiting') {\n return 'Processing upload'\n }\n if (asset?.status === 'ready') {\n return false\n }\n if (typeof asset?.status === 'undefined') {\n return false\n }\n\n return true\n }, [asset])\n const isPreparingStaticRenditions = useMemo<boolean>(() => {\n if (asset?.data?.static_renditions?.status === 'preparing') {\n return true\n }\n if (asset?.data?.static_renditions?.status === 'ready') {\n return false\n }\n return false\n }, [asset?.data?.static_renditions?.status])\n const playRef = useRef<HTMLDivElement>(null)\n const muteRef = useRef<HTMLDivElement>(null)\n const handleCancelUpload = useCancelUpload(asset, onChange)\n\n useEffect(() => {\n const style = document.createElement('style')\n style.innerHTML = 'button svg { vertical-align: middle; }'\n\n if (playRef.current?.shadowRoot) {\n playRef.current.shadowRoot.appendChild(style)\n }\n if (muteRef?.current?.shadowRoot) {\n muteRef.current.shadowRoot.appendChild(style.cloneNode(true))\n }\n }, [])\n\n useEffect(() => {\n if (asset?.status === 'errored') {\n handleCancelUpload()\n // eslint-disable-next-line no-warning-comments\n // @TODO use better error handling\n throw new Error(asset.data?.errors?.messages?.join(' '))\n }\n }, [asset.data?.errors?.messages, asset?.status, handleCancelUpload])\n\n if (!asset || !asset.status) {\n return null\n }\n\n if (isLoading) {\n return (\n <UploadProgress\n progress={100}\n filename={asset?.filename}\n text={(isLoading !== true && isLoading) || 'Waiting for Mux to complete the file'}\n onCancel={readOnly ? undefined : () => handleCancelUpload()}\n />\n )\n }\n\n return (\n <VideoPlayer asset={asset}>\n {buttons && <TopControls slot=\"top-chrome\">{buttons}</TopControls>}\n {isPreparingStaticRenditions && (\n <Card\n padding={2}\n radius={1}\n style={{\n background: 'var(--card-fg-color)',\n position: 'absolute',\n top: '0.5em',\n left: '0.5em',\n }}\n >\n <Text size={1} style={{color: 'var(--card-bg-color)'}}>\n MUX is preparing static renditions, please stand by\n </Text>\n </Card>\n )}\n </VideoPlayer>\n )\n}\n\nexport default Player\n","// todo: get these utils from @sanity/ui instead\nexport function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: {offset: number; width: number}\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import {MenuItem, Theme} from '@sanity/ui'\nimport styled, {css} from 'styled-components'\n\nimport {focusRingStyle} from './withFocusRing/helpers'\n\nexport const FileButton = styled(MenuItem)(({theme}: {theme: Theme}) => {\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const border = {width: 1, color: 'var(--card-border-color)'}\n\n return css`\n position: relative;\n\n &:not([data-disabled='true']) {\n &:focus-within {\n box-shadow: ${focusRingStyle({base, border, focusRing})};\n }\n }\n\n & input {\n overflow: hidden;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n min-width: 0;\n display: block;\n appearance: none;\n padding: 0;\n margin: 0;\n border: 0;\n opacity: 0;\n }\n `\n})\n","import {Box, ButtonProps, Flex, Text} from '@sanity/ui'\nimport React, {createElement, isValidElement, useId} from 'react'\nimport {isValidElementType} from 'react-is'\n\nimport {FileButton} from './FileInputMenuItem.styled'\n\nexport interface FileInputMenuItemProps extends ButtonProps {\n accept?: string\n capture?: 'user' | 'environment'\n multiple?: boolean\n onSelect?: (files: File[]) => void\n disabled?: boolean\n}\n\nexport const FileInputMenuItem = React.forwardRef(function FileInputMenuItem(\n props: FileInputMenuItemProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'ref' | 'type' | 'value' | 'onSelect'>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {\n icon,\n id: idProp,\n accept,\n capture,\n fontSize,\n multiple,\n onSelect,\n padding = 3,\n space = 3,\n textAlign,\n text,\n disabled,\n ...rest\n } = props\n const idHook = useId()\n const id = idProp || idHook\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onSelect && event.target.files) {\n onSelect(Array.from(event.target.files))\n }\n },\n [onSelect]\n )\n\n const content = (\n <Flex align=\"center\" justify=\"flex-start\" padding={padding}>\n {/* Icon */}\n {icon && (\n <Box marginRight={text ? space : undefined}>\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n </Box>\n )}\n\n {/* Text */}\n {text && (\n <Text align={textAlign} size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n )}\n </Flex>\n )\n\n return (\n <FileButton\n {...rest}\n htmlFor={id}\n padding={0}\n fontSize={2}\n disabled={disabled}\n ref={forwardedRef}\n >\n {content}\n\n {/* Visibly hidden input */}\n <input\n data-testid=\"file-button-input\"\n accept={accept}\n capture={capture}\n id={id}\n multiple={multiple}\n onChange={handleChange}\n type=\"file\"\n value=\"\"\n disabled={disabled}\n />\n </FileButton>\n )\n})\n","import {\n EllipsisVerticalIcon,\n LockIcon,\n PlugIcon,\n ResetIcon,\n SearchIcon,\n UploadIcon,\n} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Inline,\n Label,\n Menu,\n MenuDivider,\n MenuItem,\n Popover,\n Text,\n Tooltip,\n useClickOutside,\n} from '@sanity/ui'\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {PatchEvent, unset} from 'sanity'\nimport styled from 'styled-components'\n\nimport {type DialogState, type SetDialogState} from '../hooks/useDialogState'\nimport {getPlaybackPolicy} from '../util/getPlaybackPolicy'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport {FileInputMenuItem} from './FileInputMenuItem'\n\nconst LockCard = styled(Card)`\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0.6;\n mix-blend-mode: screen;\n background: transparent;\n`\n\nconst LockButton = styled(Button)`\n background: transparent;\n color: white;\n`\n\nexport interface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n asset: VideoAssetDocument\n onUpload: (files: File[]) => void\n dialogState: DialogState\n setDialogState: SetDialogState\n}\nfunction PlayerActionsMenu(props: Props) {\n const {asset, readOnly, dialogState, setDialogState, onChange, onUpload} = props\n const [open, setOpen] = useState(false)\n const [menuElement, setMenuRef] = useState<HTMLDivElement | null>(null)\n const isSigned = useMemo(() => getPlaybackPolicy(asset) === 'signed', [asset])\n\n const onReset = useCallback(() => onChange(PatchEvent.from(unset([]))), [onChange])\n\n useEffect(() => {\n if (open && dialogState) {\n setOpen(false)\n }\n }, [dialogState, open])\n\n useClickOutside(\n useCallback(() => setOpen(false), []),\n [menuElement]\n )\n\n return (\n <Inline space={1} padding={2}>\n {isSigned && (\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Signed playback policy\n </Text>\n </Box>\n }\n placement=\"right\"\n portal\n >\n <LockCard radius={2} margin={2} scheme=\"dark\" tone=\"positive\">\n <LockButton icon={LockIcon} mode=\"bleed\" tone=\"positive\" />\n </LockCard>\n </Tooltip>\n )}\n <Popover\n content={\n <Menu ref={setMenuRef}>\n <Box padding={2}>\n <Label muted size={1}>\n Replace\n </Label>\n </Box>\n <FileInputMenuItem\n accept=\"video/*\"\n icon={UploadIcon}\n mode=\"bleed\"\n onSelect={onUpload}\n text=\"Upload\"\n disabled={readOnly}\n fontSize={2}\n />\n <MenuItem\n icon={SearchIcon}\n text=\"Browse\"\n onClick={() => setDialogState('select-video')}\n />\n <MenuDivider />\n <MenuItem\n icon={PlugIcon}\n text=\"Configure API\"\n onClick={() => setDialogState('secrets')}\n />\n <MenuDivider />\n <MenuItem\n tone=\"critical\"\n icon={ResetIcon}\n text=\"Clear field\"\n onClick={onReset}\n disabled={readOnly}\n />\n </Menu>\n }\n portal\n open={open}\n >\n <Button\n icon={EllipsisVerticalIcon}\n mode=\"ghost\"\n onClick={() => {\n setDialogState(false)\n setOpen(true)\n }}\n />\n </Popover>\n </Inline>\n )\n}\n\nexport default memo(PlayerActionsMenu)\n","import {rem, Theme} from '@sanity/ui'\nimport {type ComponentType} from 'react'\nimport styled, {css} from 'styled-components'\n\nimport {focusRingBorderStyle, focusRingStyle} from './helpers'\n\nexport function withFocusRing<Props>(component: ComponentType<Props>) {\n return styled(component as unknown as any)<Props & {$border?: boolean}>(\n (props: {theme: Theme; $border?: boolean}) => {\n const border = {\n width: props.$border ? 1 : 0,\n color: 'var(--card-border-color)',\n }\n\n return css`\n --card-focus-box-shadow: ${focusRingBorderStyle(border)};\n\n border-radius: ${rem(props.theme.sanity.radius[1])};\n outline: none;\n box-shadow: var(--card-focus-box-shadow);\n\n &:focus {\n --card-focus-box-shadow: ${focusRingStyle({\n base: props.theme.sanity.color.base,\n border,\n focusRing: props.theme.sanity.focusRing,\n })};\n }\n `\n }\n )\n}\n","/* eslint-disable no-nested-ternary */\nimport {Card, type CardTone} from '@sanity/ui'\nimport React, {forwardRef, useCallback, useRef} from 'react'\nimport styled from 'styled-components'\n\nimport {withFocusRing} from './withFocusRing'\n\nconst ctrlKey = 17\nconst cmdKey = 91\n\nconst UploadCardWithFocusRing = withFocusRing(Card)\n\ninterface UploadCardProps {\n tone?: CardTone\n children: React.ReactNode\n onPaste: React.ClipboardEventHandler<HTMLInputElement>\n onDrop: React.DragEventHandler<HTMLDivElement>\n onDragOver: React.DragEventHandler<HTMLDivElement>\n onDragLeave: React.DragEventHandler<HTMLDivElement>\n onDragEnter: React.DragEventHandler<HTMLDivElement>\n}\nexport const UploadCard = forwardRef<HTMLDivElement, UploadCardProps>(\n ({children, tone, onPaste, onDrop, onDragEnter, onDragLeave, onDragOver}, forwardedRef) => {\n const ctrlDown = useRef(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const handleKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>((event) => {\n if (event.keyCode == ctrlKey || event.keyCode == cmdKey) {\n ctrlDown.current = true\n }\n const vKey = 86\n if (ctrlDown.current && event.keyCode == vKey) {\n inputRef.current!.focus()\n }\n }, [])\n const handleKeyUp = useCallback<React.KeyboardEventHandler<HTMLDivElement>>((event) => {\n if (event.keyCode == ctrlKey || event.keyCode == cmdKey) {\n ctrlDown.current = false\n }\n }, [])\n\n return (\n <UploadCardWithFocusRing\n tone={tone}\n height=\"fill\"\n ref={forwardedRef}\n padding={0}\n radius={2}\n shadow={0}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onPaste={onPaste}\n onDrop={onDrop}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDragOver={onDragOver}\n >\n <HiddenInput ref={inputRef} onPaste={onPaste} />\n {children}\n </UploadCardWithFocusRing>\n )\n }\n)\n\nconst HiddenInput = styled.input.attrs({type: 'text'})`\n position: absolute;\n border: 0;\n color: white;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n`\n","import {Button, type ButtonProps} from '@sanity/ui'\nimport React, {useCallback, useId, useRef} from 'react'\nimport styled from 'styled-components'\n\nconst HiddenInput = styled.input`\n overflow: hidden;\n width: 0.1px;\n height: 0.1px;\n opacity: 0;\n position: absolute;\n z-index: -1;\n`\n\nconst Label = styled.label`\n position: relative;\n`\n\nexport interface FileInputButtonProps extends ButtonProps {\n onSelect: (files: FileList) => void\n}\nexport const FileInputButton = ({onSelect, ...props}: FileInputButtonProps) => {\n const inputId = `FileSelect${useId()}`\n const inputRef = useRef<HTMLInputElement>(null)\n const handleSelect = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (event) => {\n if (onSelect) {\n onSelect(event.target.files!)\n }\n },\n [onSelect]\n )\n const handleButtonClick = useCallback(() => inputRef.current?.click(), [])\n return (\n <Label htmlFor={inputId}>\n <HiddenInput\n accept=\"video/*\"\n ref={inputRef}\n tabIndex={0}\n type=\"file\"\n id={inputId}\n onChange={handleSelect}\n value=\"\"\n />\n <Button\n onClick={handleButtonClick}\n mode=\"default\"\n tone=\"primary\"\n style={{width: '100%'}}\n {...props}\n />\n </Label>\n )\n}\n","import {PlugIcon, SearchIcon, UploadIcon} from '@sanity/icons'\nimport {DocumentVideoIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Inline, Text} from '@sanity/ui'\nimport React, {useCallback} from 'react'\nimport styled from 'styled-components'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport {FileInputButton, type FileInputButtonProps} from './FileInputButton'\n\nconst UploadCard = styled(Card)`\n && {\n border-style: dashed;\n }\n`\n\nconst ConfigureApiBox = styled(Box)`\n position: absolute;\n top: 0;\n right: 0;\n`\n\ninterface UploadPlaceholderProps {\n setDialogState: SetDialogState\n readOnly: boolean\n hovering: boolean\n needsSetup: boolean\n onSelect: FileInputButtonProps['onSelect']\n}\nexport default function UploadPlaceholder(props: UploadPlaceholderProps) {\n const {setDialogState, readOnly, onSelect, hovering, needsSetup} = props\n const handleBrowse = useCallback(() => setDialogState('select-video'), [setDialogState])\n const handleConfigureApi = useCallback(() => setDialogState('secrets'), [setDialogState])\n\n return (\n <Box style={{padding: 1, position: 'relative'}} height=\"stretch\">\n <UploadCard\n sizing=\"border\"\n height=\"fill\"\n tone={readOnly ? 'transparent' : 'inherit'}\n border\n padding={3}\n style={hovering ? {borderColor: 'transparent'} : undefined}\n >\n <ConfigureApiBox padding={3}>\n <Button\n padding={3}\n radius={3}\n tone={needsSetup ? 'critical' : undefined}\n onClick={handleConfigureApi}\n icon={PlugIcon}\n mode=\"bleed\"\n />\n </ConfigureApiBox>\n <Flex\n align=\"center\"\n justify=\"space-between\"\n gap={4}\n direction={['column', 'column', 'row']}\n paddingY={[2, 2, 0]}\n sizing=\"border\"\n height=\"fill\"\n >\n <Flex align=\"center\" justify=\"center\" gap={2} flex={1}>\n <Flex justify=\"center\">\n <Text muted>\n <DocumentVideoIcon />\n </Text>\n </Flex>\n <Flex justify=\"center\">\n <Text size={1} muted>\n Drag video or paste URL here\n </Text>\n </Flex>\n </Flex>\n <Inline space={2}>\n <FileInputButton\n mode=\"ghost\"\n tone=\"default\"\n icon={UploadIcon}\n text=\"Upload\"\n onSelect={onSelect}\n />\n <Button mode=\"ghost\" icon={SearchIcon} text=\"Select\" onClick={handleBrowse} />\n </Inline>\n </Flex>\n </UploadCard>\n </Box>\n )\n}\n","/* eslint-disable no-nested-ternary */\n// This component needs to be refactored into a functional component\n\nimport React, {Component} from 'react'\nimport {type Observable, Subject} from 'rxjs'\nimport {takeUntil, tap} from 'rxjs/operators'\nimport type {SanityClient} from 'sanity'\nimport {PatchEvent, set, setIfMissing} from 'sanity'\n\nimport {uploadFile, uploadUrl} from '../actions/upload'\nimport {type DialogState, type SetDialogState} from '../hooks/useDialogState'\nimport {extractDroppedFiles} from '../util/extractFiles'\nimport type {Config, MuxInputProps, Secrets, VideoAssetDocument} from '../util/types'\nimport InputBrowser from './InputBrowser'\nimport Player from './Player'\nimport PlayerActionsMenu from './PlayerActionsMenu'\nimport {UploadCard} from './Uploader.styled'\nimport UploadPlaceholder from './UploadPlaceholder'\nimport {UploadProgress} from './UploadProgress'\n\ninterface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n config: Config\n client: SanityClient\n secrets: Secrets\n asset: VideoAssetDocument | null | undefined\n dialogState: DialogState\n setDialogState: SetDialogState\n needsSetup: boolean\n}\n\ninterface State {\n isDraggingOver: boolean\n invalidPaste: boolean\n invalidFile: boolean\n fileInfo: {name?: string; type?: string} | null\n uuid: null\n uploadProgress: number | null\n error: Error | null\n url: string | null\n}\n\nclass MuxVideoInputUploader extends Component<Props, State> {\n state: State = {\n isDraggingOver: false,\n invalidPaste: false,\n invalidFile: false,\n uploadProgress: null,\n fileInfo: null,\n uuid: null,\n error: null,\n url: null,\n }\n dragEnteredEls: EventTarget[] = []\n\n ctrlDown = false\n\n // eslint-disable-next-line no-warning-comments\n // @TODO add proper typings for the return values of uploadFile and uploadUrl\n upload: any | null = null\n\n container = React.createRef<HTMLDivElement>()\n\n onCancelUploadButtonClick$: Observable<unknown> | undefined\n handleCancelUploadButtonClick: React.MouseEventHandler<HTMLButtonElement> | undefined\n\n componentWillUnmount() {\n this.unSubscribeToUpload()\n }\n\n componentDidMount() {\n const events$ = new Subject()\n this.onCancelUploadButtonClick$ = events$.asObservable()\n this.handleCancelUploadButtonClick = (event) => events$.next(event)\n }\n\n unSubscribeToUpload() {\n if (this.upload && !this.upload.closed) {\n this.upload.unsubscribe()\n }\n }\n\n handleProgress = (evt: {percent: number}) => {\n this.setState({uploadProgress: evt.percent})\n }\n\n onUpload = (files: FileList | File[]) => {\n this.setState({uploadProgress: 0, fileInfo: null, uuid: null})\n this.upload = uploadFile(this.props.config, this.props.client, files[0], {\n enableSignedUrls: this.props.secrets.enableSignedUrls,\n })\n .pipe(\n takeUntil(\n this.onCancelUploadButtonClick$!.pipe(\n tap(() => {\n if (this.state.uuid) {\n this.props.client.delete(this.state.uuid)\n }\n })\n )\n )\n )\n .subscribe({\n complete: () => {\n this.setState({error: null, uploadProgress: null, uuid: null})\n },\n next: (event) => {\n this.handleUploadEvent(event)\n },\n error: (err) => {\n this.setState({error: err, uploadProgress: null, uuid: null})\n },\n })\n }\n\n // eslint-disable-next-line no-warning-comments\n // @TODO add proper typings for the Observable events\n handleUploadEvent = (event: any) => {\n switch (event.type) {\n case 'success':\n return this.handleUploadSuccess(event.asset)\n case 'progress':\n return this.handleProgress(event)\n case 'file':\n return this.setState({fileInfo: event.file})\n case 'uuid':\n // Means we created a mux.videoAsset document with an uuid\n return this.setState({uuid: event.uuid})\n case 'url':\n return this.setState({url: event.url, uploadProgress: 100})\n default:\n return null\n }\n }\n\n handleUploadSuccess = (asset: VideoAssetDocument) => {\n this.setState({uploadProgress: 100})\n this.props.onChange(\n PatchEvent.from([\n setIfMissing({asset: {}}),\n set({_type: 'reference', _weak: true, _ref: asset._id}, ['asset']),\n ])\n )\n }\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const clipboardData = event.clipboardData || (window as any).clipboardData\n const url = clipboardData.getData('text')\n const options = {enableSignedUrls: this.props.secrets.enableSignedUrls}\n\n this.upload = uploadUrl(this.props.config, this.props.client, url, options).subscribe({\n complete: () => {\n this.setState({error: null, uploadProgress: null, url: null})\n },\n next: (sEvent) => {\n this.handleUploadEvent(sEvent)\n },\n error: (err) => {\n let error\n // Don't output error dialog when just invalid url\n if (!err.message.toLowerCase().match('invalid url')) {\n error = err\n }\n this.setState({invalidPaste: true, error}, () => {\n setTimeout(() => {\n this.setState({invalidPaste: false, uploadProgress: null})\n }, 2000)\n })\n },\n })\n }\n\n handleDrop: React.DragEventHandler<HTMLDivElement> = (event) => {\n this.setState({isDraggingOver: false})\n event.preventDefault()\n event.stopPropagation()\n extractDroppedFiles(event.nativeEvent.dataTransfer!).then((files) => {\n if (files) {\n // eslint-disable-next-line no-warning-comments\n // @TODO fix the typing on files\n this.onUpload(files as any)\n }\n })\n }\n\n handleDragOver: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault()\n event.stopPropagation()\n }\n\n handleDragEnter: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation()\n this.dragEnteredEls.push(event.target)\n this.setState({isDraggingOver: true})\n const type = event.dataTransfer.items?.[0]?.type\n this.setState({invalidFile: !type.startsWith('video/')})\n }\n\n handleDragLeave: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation()\n const idx = this.dragEnteredEls.indexOf(event.target)\n if (idx > -1) {\n this.dragEnteredEls.splice(idx, 1)\n }\n if (this.dragEnteredEls.length === 0) {\n this.setState({isDraggingOver: false})\n }\n }\n\n render() {\n if (this.state.uploadProgress !== null) {\n return (\n <UploadProgress\n onCancel={this.handleCancelUploadButtonClick!}\n progress={this.state.uploadProgress}\n filename={this.state.fileInfo?.name || this.state.url}\n />\n )\n }\n\n if (this.state.error) {\n // @TODO better error handling\n throw this.state.error\n }\n\n return (\n <>\n <UploadCard\n tone={\n this.state.isDraggingOver && (this.state.invalidPaste || this.state.invalidFile)\n ? 'critical'\n : this.state.isDraggingOver\n ? 'positive'\n : undefined\n }\n onDrop={this.handleDrop}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDragEnter={this.handleDragEnter}\n onPaste={this.handlePaste}\n ref={this.container}\n >\n {this.props.asset ? (\n <Player\n readOnly={this.props.readOnly}\n asset={this.props.asset}\n onChange={this.props.onChange}\n buttons={\n <PlayerActionsMenu\n asset={this.props.asset}\n dialogState={this.props.dialogState}\n setDialogState={this.props.setDialogState}\n onChange={this.props.onChange}\n onUpload={this.onUpload}\n readOnly={this.props.readOnly}\n />\n }\n />\n ) : (\n <UploadPlaceholder\n hovering={this.state.isDraggingOver}\n onSelect={this.onUpload}\n readOnly={this.props.readOnly!}\n setDialogState={this.props.setDialogState}\n needsSetup={this.props.needsSetup}\n />\n )}\n </UploadCard>\n {this.props.dialogState === 'select-video' && (\n <InputBrowser\n asset={this.props.asset}\n onChange={this.props.onChange}\n setDialogState={this.props.setDialogState}\n />\n )}\n </>\n )\n }\n}\n\nexport default MuxVideoInputUploader\n","import {useCallback} from 'react'\nimport type {SanityClient} from 'sanity'\n\nimport {createSigningKeys, haveValidSigningKeys, saveSecrets, testSecrets} from '../actions/secrets'\nimport type {Secrets} from '../util/types'\n\nexport const useSaveSecrets = (client: SanityClient, secrets: Secrets) => {\n return useCallback(\n async ({\n token,\n secretKey,\n enableSignedUrls,\n }: Pick<Secrets, 'token' | 'secretKey' | 'enableSignedUrls'>): Promise<Secrets> => {\n let {signingKeyId, signingKeyPrivate} = secrets\n\n try {\n await saveSecrets(\n client,\n token!,\n secretKey!,\n enableSignedUrls,\n signingKeyId!,\n signingKeyPrivate!\n )\n const valid = await testSecrets(client)\n if (!valid?.status && token && secretKey) {\n throw new Error('Invalid secrets')\n }\n } catch (err) {\n console.error('Error while trying to save secrets:', err)\n throw err\n }\n\n if (enableSignedUrls) {\n const hasValidSigningKeys = await haveValidSigningKeys(\n client,\n signingKeyId!,\n signingKeyPrivate!\n )\n\n if (!hasValidSigningKeys) {\n try {\n const {data} = await createSigningKeys(client)\n signingKeyId = data.id\n signingKeyPrivate = data.private_key\n await saveSecrets(\n client,\n token!,\n secretKey!,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate\n )\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log('Error while creating and saving signing key:', err?.message)\n throw err\n }\n }\n }\n return {\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n },\n [client, secrets]\n )\n}\n","import {useReducer} from 'react'\n\nimport type {Secrets} from '../util/types'\n\nexport interface State extends Pick<Secrets, 'token' | 'secretKey' | 'enableSignedUrls'> {\n submitting: boolean\n error: string | null\n}\nexport type Action =\n | {type: 'submit'}\n | {type: 'error'; payload: string}\n | {type: 'reset'; payload: Secrets}\n | {type: 'change'; payload: {name: 'token'; value: string}}\n | {type: 'change'; payload: {name: 'secretKey'; value: string}}\n | {type: 'change'; payload: {name: 'enableSignedUrls'; value: boolean}}\nfunction init({token, secretKey, enableSignedUrls}: Secrets): State {\n return {\n submitting: false,\n error: null,\n // Form inputs don't set the state back to null when clearing a field, but uses empty strings\n // This ensures the `dirty` check works correctly\n token: token ?? '',\n secretKey: secretKey ?? '',\n enableSignedUrls: enableSignedUrls ?? false,\n }\n}\nfunction reducer(state: State, action: Action) {\n switch (action?.type) {\n case 'submit':\n return {...state, submitting: true, error: null}\n case 'error':\n return {...state, submitting: false, error: action.payload}\n case 'reset':\n return init(action.payload)\n case 'change':\n return {...state, [action.payload.name]: action.payload.value}\n default:\n throw new Error(`Unknown action type: ${(action as any)?.type}`)\n }\n}\n\nexport const useSecretsFormState = (secrets: Secrets) => useReducer(reducer, secrets, init)\n","import React, {useId, useMemo} from 'react'\n\n// Mapping ids to ensure filter refs are unique, otherwise all Logo instances are hidden if the first SVG is hidden, due to how SVGs deal with relative links and ids\nconst ids = [\n 'title',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n] as const\nexport interface Props {\n height?: number\n}\nexport default function MuxLogo({height = 26}) {\n const id = useId()\n const [titleId, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r] = useMemo<typeof ids>(\n () => ids.map((field) => `${id}-${field}`) as unknown as typeof ids,\n [id]\n )\n\n return (\n <svg\n aria-labelledby={titleId}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"92.08878326416016 102.66712188720703 692.76123046875 219.99948120117188\"\n style={{height: `${height}px`}}\n >\n <title id={titleId}>Mux Logo</title>\n <defs>\n <linearGradient\n id={c}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(528.38055 0 0 -528.38055 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={d}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.66766 0 0 -523.66766 67.897 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={g}\n spreadMethod=\"pad\"\n gradientTransform=\"rotate(180 296.075 79.75) scale(524.84045)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={i}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={j}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.08514 0 0 -523.08514 67.897 224.446)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={k}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 94.553)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={l}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={m}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 94.554)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={p}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(521.97632 0 0 -521.97632 69.067 191.973)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={q}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.09039 0 0 -523.09039 67.312 191.973)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={r}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <clipPath id={a} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={b} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M423.64 242h164.999V77H423.64Z\" />\n </clipPath>\n <clipPath id={e} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={f} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M311.3 242h93.031V77H311.3Z\" />\n </clipPath>\n <clipPath id={h} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M198.96 242h35.106V77H198.96Z\" />\n </clipPath>\n <clipPath id={n} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={o} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M69.067 242H169.12V141.947H69.067Z\" />\n </clipPath>\n </defs>\n <g clipPath={`url(#${a})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${b})`}\n >\n <path\n style={{\n fill: `url(#${c})`,\n stroke: 'none',\n }}\n d=\"M558.674 82.142c6.855-6.855 17.969-6.855 24.824 0 6.854 6.855 6.854 17.969 0 24.823L453.605 236.858c-6.855 6.855-17.969 6.855-24.824 0s-6.855-17.969 0-24.823z\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${d})`,\n stroke: 'none',\n }}\n d=\"M558.674 236.858 428.781 106.966c-6.855-6.855-6.855-17.969 0-24.825 6.855-6.854 17.969-6.854 24.823 0l129.894 129.894c6.854 6.855 6.854 17.968 0 24.823A17.498 17.498 0 0 1 571.086 242a17.495 17.495 0 0 1-12.412-5.142\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <g clipPath={`url(#${e})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${f})`}\n >\n <path\n style={{\n fill: `url(#${g})`,\n stroke: 'none',\n }}\n d=\"M328.853 112.107c22.297 0 40.372 18.075 40.372 40.372v71.315c0 10.054 7.505 18.206 17.554 18.206 10.048 0 17.552-8.152 17.552-18.206v-71.315c0-41.686-33.793-75.479-75.478-75.479-9.694 0-17.553 7.859-17.553 17.554 0 9.694 7.859 17.553 17.553 17.553\"\n />\n </g>\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${h})`}\n >\n <path\n style={{\n fill: `url(#${i})`,\n stroke: 'none',\n }}\n d=\"M216.513 242c-10.049 0-17.553-8.152-17.553-18.206V95.206c0-10.054 7.504-18.206 17.553-18.206 10.048 0 17.553 8.152 17.553 18.206v128.588c0 10.054-7.505 18.206-17.553 18.206\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${j})`,\n stroke: 'none',\n }}\n d=\"M369.225 224.447c0-9.694 7.859-17.553 17.553-17.553 9.695 0 17.553 7.859 17.553 17.553s-7.858 17.552-17.553 17.552c-9.694 0-17.553-7.858-17.553-17.552\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${k})`,\n stroke: 'none',\n }}\n d=\"M553.532 94.554c0-9.695 7.859-17.554 17.553-17.554 9.695 0 17.554 7.859 17.554 17.554 0 9.694-7.859 17.552-17.554 17.552-9.694 0-17.553-7.858-17.553-17.552\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${l})`,\n stroke: 'none',\n }}\n d=\"M69.067 223.794V95.206C69.067 85.152 76.571 77 86.62 77c10.048 0 17.553 8.152 17.553 18.206v128.588c0 10.055-7.505 18.205-17.553 18.205-10.049 0-17.553-8.15-17.553-18.205\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${m})`,\n stroke: 'none',\n }}\n d=\"M198.96 94.554c0-9.695 7.859-17.554 17.553-17.554 9.695 0 17.554 7.859 17.554 17.554 0 9.694-7.859 17.553-17.554 17.553-9.694 0-17.553-7.859-17.553-17.553\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <g clipPath={`url(#${n})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${o})`}\n >\n <path\n style={{\n fill: `url(#${p})`,\n stroke: 'none',\n }}\n d=\"M139.155 147.088c6.855-6.855 17.969-6.855 24.824 0s6.855 17.969 0 24.824l-64.947 64.946c-6.855 6.855-17.969 6.855-24.824 0s-6.855-17.969 0-24.823z\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${q})`,\n stroke: 'none',\n }}\n d=\"m204.101 236.858-64.947-64.946c-6.854-6.855-6.854-17.969 0-24.824 6.856-6.855 17.97-6.855 24.824 0l64.947 64.947c6.855 6.855 6.855 17.968 0 24.823A17.495 17.495 0 0 1 216.513 242a17.498 17.498 0 0 1-12.412-5.142\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${r})`,\n stroke: 'none',\n }}\n d=\"M253.374 223.794v-71.315c0-41.685 33.793-75.479 75.479-75.479 9.695 0 17.553 7.859 17.553 17.554 0 9.694-7.858 17.553-17.553 17.553-22.297 0-40.372 18.075-40.372 40.372v71.315c0 10.055-7.505 18.205-17.554 18.205s-17.553-8.15-17.553-18.205\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n </svg>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport MuxLogo from './MuxLogo'\n\nconst Logo = styled.span`\n display: inline-block;\n height: 0.8em;\n margin-right: 1em;\n transform: translate(0.3em, -0.2em);\n`\n\nexport const Header = () => (\n <>\n <Logo>\n <MuxLogo height={13} />\n </Logo>\n API Credentials\n </>\n)\n","import {\n Box,\n Button,\n Card,\n Checkbox,\n Code,\n Dialog,\n Flex,\n Inline,\n Stack,\n Text,\n TextInput,\n} from '@sanity/ui'\nimport React, {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport {clear, preload} from 'suspend-react'\n\nimport {useClient} from '../hooks/useClient'\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport {useSaveSecrets} from '../hooks/useSaveSecrets'\nimport {useSecretsFormState} from '../hooks/useSecretsFormState'\nimport {cacheNs} from '../util/constants'\nimport {_id as secretsId} from '../util/readSecrets'\nimport type {Secrets} from '../util/types'\nimport {Header} from './ConfigureApi.styled'\nimport FormField from './FormField'\n\nexport interface Props {\n setDialogState: SetDialogState\n secrets: Secrets\n}\nconst fieldNames = ['token', 'secretKey', 'enableSignedUrls'] as const\nfunction ConfigureApi({secrets, setDialogState}: Props) {\n const client = useClient()\n const [state, dispatch] = useSecretsFormState(secrets)\n const hasSecretsInitially = useMemo(() => secrets.token && secrets.secretKey, [secrets])\n const handleClose = useCallback(() => setDialogState(false), [setDialogState])\n const dirty = useMemo(\n () =>\n secrets.token !== state.token ||\n secrets.secretKey !== state.secretKey ||\n secrets.enableSignedUrls !== state.enableSignedUrls,\n [secrets, state]\n )\n const id = `ConfigureApi${useId()}`\n const [tokenId, secretKeyId, enableSignedUrlsId] = useMemo<typeof fieldNames>(\n () => fieldNames.map((field) => `${id}-${field}`) as unknown as typeof fieldNames,\n [id]\n )\n const firstField = useRef<HTMLInputElement>(null)\n const handleSaveSecrets = useSaveSecrets(client, secrets)\n const saving = useRef(false)\n\n const handleSubmit = useCallback(\n (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (!saving.current && event.currentTarget.reportValidity()) {\n saving.current = true\n dispatch({type: 'submit'})\n const {token, secretKey, enableSignedUrls} = state\n handleSaveSecrets({token, secretKey, enableSignedUrls})\n .then((savedSecrets) => {\n const {projectId, dataset} = client.config()\n clear([cacheNs, secretsId, projectId, dataset])\n preload(() => Promise.resolve(savedSecrets), [cacheNs, secretsId, projectId, dataset])\n setDialogState(false)\n })\n .catch((err) => dispatch({type: 'error', payload: err.message}))\n .finally(() => {\n saving.current = false\n })\n }\n },\n [client, dispatch, handleSaveSecrets, setDialogState, state]\n )\n const handleChangeToken = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'token', value: event.currentTarget.value},\n })\n },\n [dispatch]\n )\n const handleChangeSecretKey = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'secretKey', value: event.currentTarget.value},\n })\n },\n [dispatch]\n )\n const handleChangeEnableSignedUrls = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'enableSignedUrls', value: event.currentTarget.checked},\n })\n },\n [dispatch]\n )\n\n useEffect(() => {\n if (firstField.current) {\n firstField.current.focus()\n }\n }, [firstField])\n\n return (\n <Dialog\n id={id}\n onClose={handleClose}\n header={<Header />}\n width={1}\n style={{\n maxWidth: '550px',\n }}\n >\n <Box padding={4} style={{position: 'relative'}}>\n <form onSubmit={handleSubmit} noValidate>\n <Stack space={4}>\n {!hasSecretsInitially && (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"primary\">\n <Stack space={3}>\n <Text size={1}>\n To set up a new access token, go to your{' '}\n <a\n href=\"https://dashboard.mux.com/settings/access-tokens\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n account on mux.com\n </a>\n .\n </Text>\n <Text size={1}>\n The access token needs permissions: <strong>Mux Video </strong>\n (Full Access) and <strong>Mux Data</strong> (Read)\n <br />\n The credentials will be stored safely in a hidden document only available to\n editors.\n </Text>\n </Stack>\n </Card>\n )}\n <FormField title=\"Access Token\" inputId={tokenId}>\n <TextInput\n id={tokenId}\n ref={firstField}\n onChange={handleChangeToken}\n type=\"text\"\n value={state.token ?? ''}\n required={!!state.secretKey || state.enableSignedUrls}\n />\n </FormField>\n <FormField title=\"Secret Key\" inputId={secretKeyId}>\n <TextInput\n id={secretKeyId}\n onChange={handleChangeSecretKey}\n type=\"text\"\n value={state.secretKey ?? ''}\n required={!!state.token || state.enableSignedUrls}\n />\n </FormField>\n\n <Stack space={4}>\n <Flex align=\"center\">\n <Checkbox\n id={enableSignedUrlsId}\n onChange={handleChangeEnableSignedUrls}\n checked={state.enableSignedUrls}\n style={{display: 'block'}}\n />\n <Box flex={1} paddingLeft={3}>\n <Text>\n <label htmlFor={enableSignedUrlsId}>Enable Signed Urls</label>\n </Text>\n </Box>\n </Flex>\n {/* TODO: use a popover instead to avoid jumping around */}\n {secrets.signingKeyId && state.enableSignedUrls ? (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"caution\">\n <Stack space={3}>\n <Text size={1}>The signing key ID that Sanity will use is:</Text>\n <Code size={1}>{secrets.signingKeyId}</Code>\n <Text size={1}>\n This key is only used for previewing content in the Sanity UI.\n <br />\n You should generate a different key to use in your application server.\n </Text>\n </Stack>\n </Card>\n ) : null}\n </Stack>\n\n <Inline space={2}>\n <Button\n text=\"Save\"\n disabled={!dirty}\n loading={state.submitting}\n tone=\"primary\"\n mode=\"default\"\n type=\"submit\"\n />\n <Button\n disabled={state.submitting}\n text=\"Cancel\"\n mode=\"bleed\"\n onClick={handleClose}\n />\n </Inline>\n {state.error && (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"critical\">\n <Text>{state.error}</Text>\n </Card>\n )}\n </Stack>\n </form>\n </Box>\n </Dialog>\n )\n}\n\nexport default memo(ConfigureApi)\n","/* eslint-disable no-console */\nimport {Button, Card, Flex, Grid, Heading, Inline, Text, useToast} from '@sanity/ui'\nimport React, {memo, useCallback, useRef} from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport {clear} from 'suspend-react'\nimport {useErrorBoundary} from 'use-error-boundary'\n\nimport {name} from '../util/constants'\nimport {type MuxInputProps} from '../util/types'\n\nexport interface Props extends Pick<MuxInputProps, 'schemaType'> {\n children: React.ReactNode\n}\nfunction ErrorBoundaryCard(props: Props) {\n const {children, schemaType} = props\n const {push: pushToast} = useToast()\n const errorRef = useRef(null)\n const {ErrorBoundary, didCatch, error, reset} = useErrorBoundary({\n onDidCatch: (err, errorInfo) => {\n console.group(err.toString())\n console.groupCollapsed('console.error')\n console.error(err)\n console.groupEnd()\n if (err.stack) {\n console.groupCollapsed('error.stack')\n console.log(err.stack)\n console.groupEnd()\n }\n if (errorInfo?.componentStack) {\n console.groupCollapsed('errorInfo.componentStack')\n console.log(errorInfo.componentStack)\n console.groupEnd()\n }\n console.groupEnd()\n pushToast({\n status: 'error',\n title: 'Plugin crashed',\n description: (\n <Flex align=\"center\">\n <Inline space={1}>\n An error happened while rendering\n <Button\n padding={1}\n fontSize={1}\n style={{transform: 'translateY(1px)'}}\n mode=\"ghost\"\n text={schemaType.title}\n onClick={() => {\n if (errorRef.current) {\n scrollIntoView(errorRef.current, {\n behavior: 'smooth',\n scrollMode: 'if-needed',\n block: 'center',\n })\n }\n }}\n />\n </Inline>\n </Flex>\n ),\n })\n },\n })\n const handleRetry = useCallback(() => {\n // Purge request cache before retrying, otherwise the cached errors will rethrow\n clear([name])\n\n reset()\n }, [reset])\n\n if (didCatch) {\n return (\n <Card ref={errorRef} paddingX={[2, 3, 4, 4]} height=\"fill\" shadow={1} overflow=\"auto\">\n <Flex justify=\"flex-start\" align=\"center\" height=\"fill\">\n <Grid columns={1} gap={[2, 3, 4, 4]}>\n <Heading as=\"h1\">\n The <code>{name}</code> plugin crashed\n </Heading>\n {error?.message && (\n <Card padding={3} tone=\"critical\" shadow={1} radius={2}>\n <Text>{error.message}</Text>\n </Card>\n )}\n <Inline>\n <Button onClick={handleRetry} text=\"Retry\" />\n </Inline>\n </Grid>\n </Flex>\n </Card>\n )\n }\n\n return <ErrorBoundary>{children}</ErrorBoundary>\n}\n\nexport default memo(ErrorBoundaryCard)\n","import {Box, Card, Flex, Spinner, Text} from '@sanity/ui'\nimport React from 'react'\n\nexport const InputFallback = () => {\n return (\n <div style={{padding: 1}}>\n <Card\n shadow={1}\n sizing=\"border\"\n style={{aspectRatio: '16/9', width: '100%', borderRadius: '1px'}}\n >\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Spinner muted />\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading…\n </Text>\n </Box>\n </Flex>\n </Card>\n </div>\n )\n}\n","import {PlugIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Grid, Heading, Inline} from '@sanity/ui'\nimport React, {useCallback} from 'react'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport MuxLogo from './MuxLogo'\n\ninterface OnboardProps {\n setDialogState: SetDialogState\n}\n\nexport default function Onboard(props: OnboardProps) {\n const {setDialogState} = props\n const handleOpen = useCallback(() => setDialogState('secrets'), [setDialogState])\n\n return (\n <>\n <div style={{padding: 2}}>\n <Card\n display=\"flex\"\n sizing=\"border\"\n style={{\n aspectRatio: '16/9',\n width: '100%',\n boxShadow: 'var(--card-bg-color) 0 0 0 2px',\n }}\n paddingX={[2, 3, 4, 4]}\n radius={1}\n tone=\"transparent\"\n >\n <Flex justify=\"flex-start\" align=\"center\">\n <Grid columns={1} gap={[2, 3, 4, 4]}>\n <Inline paddingY={1}>\n <div style={{height: '32px'}}>\n <MuxLogo />\n </div>\n </Inline>\n <Inline paddingY={1}>\n <Heading size={[0, 1, 2, 2]}>\n Upload and preview videos directly from your studio.\n </Heading>\n </Inline>\n <Inline paddingY={1}>\n <Button mode=\"ghost\" icon={PlugIcon} text=\"Configure API\" onClick={handleOpen} />\n </Inline>\n </Grid>\n </Flex>\n </Card>\n </div>\n </>\n )\n}\n","import {Card} from '@sanity/ui'\nimport React, {memo, Suspense} from 'react'\n\nimport {useAssetDocumentValues} from '../hooks/useAssetDocumentValues'\nimport {useClient} from '../hooks/useClient'\nimport {useDialogState} from '../hooks/useDialogState'\nimport {useMuxPolling} from '../hooks/useMuxPolling'\nimport {useSecretsDocumentValues} from '../hooks/useSecretsDocumentValues'\nimport type {Config, MuxInputProps} from '../util/types'\nimport Uploader from './__legacy__Uploader'\nimport ConfigureApi from './ConfigureApi'\nimport ErrorBoundaryCard from './ErrorBoundaryCard'\nimport {InputFallback} from './Input.styled'\nimport Onboard from './Onboard'\n\nexport interface InputProps extends MuxInputProps {\n config: Config\n}\nconst Input = (props: InputProps) => {\n const client = useClient()\n const secretDocumentValues = useSecretsDocumentValues()\n const assetDocumentValues = useAssetDocumentValues(props.value?.asset)\n const poll = useMuxPolling(props.readOnly ? undefined : assetDocumentValues?.value || undefined)\n const [dialogState, setDialogState] = useDialogState()\n\n const error = secretDocumentValues.error || assetDocumentValues.error || poll.error /*||\n // @TODO move errored logic to Uploader, where handleRemoveVideo can be called\n (assetDocumentValues.value?.status === 'errored'\n ? new Error(assetDocumentValues.value.data?.errors?.messages?.join(' '))\n : undefined)\n // */\n if (error) {\n // @TODO deal with it more gracefully\n throw error\n }\n const isLoading = secretDocumentValues.isLoading || assetDocumentValues.isLoading\n\n return (\n <Card>\n <ErrorBoundaryCard schemaType={props.schemaType}>\n <Suspense fallback={<InputFallback />}>\n {isLoading ? (\n <InputFallback />\n ) : (\n <>\n {secretDocumentValues.value.needsSetup && !assetDocumentValues.value ? (\n <Onboard setDialogState={setDialogState} />\n ) : (\n <Uploader\n {...props}\n config={props.config}\n onChange={props.onChange}\n client={client}\n secrets={secretDocumentValues.value.secrets}\n asset={assetDocumentValues.value}\n dialogState={dialogState}\n setDialogState={setDialogState}\n needsSetup={secretDocumentValues.value.needsSetup}\n />\n )}\n\n {dialogState === 'secrets' && (\n <ConfigureApi\n setDialogState={setDialogState}\n secrets={secretDocumentValues.value.secrets}\n />\n )}\n </>\n )}\n </Suspense>\n </ErrorBoundaryCard>\n </Card>\n )\n}\n\nexport default memo(Input)\n","import React from 'react'\n\nimport Input from './components/Input'\nimport VideoThumbnail from './components/VideoThumbnail'\nimport type {Config, MuxInputProps, VideoAssetDocument} from './util/types'\n\nexport function muxVideoCustomRendering(config: Config) {\n return {\n components: {\n input: (props: MuxInputProps) => <Input config={config} {...props} />,\n },\n preview: {\n select: {\n filename: 'asset.filename',\n playbackId: 'asset.playbackId',\n status: 'asset.status',\n assetId: 'asset.assetId',\n thumbTime: 'asset.thumbTime',\n data: 'asset.data',\n },\n prepare: (asset: Partial<VideoAssetDocument>) => {\n const {filename, playbackId, status} = asset\n return {\n title: filename || playbackId || '',\n subtitle: status ? `status: ${status}` : null,\n media: asset.playbackId ? <VideoThumbnail asset={asset} width={64} /> : null,\n }\n },\n },\n }\n}\n","export const muxVideo = {\n name: 'mux.video',\n type: 'object',\n title: 'Video asset reference',\n fields: [\n {\n title: 'Video',\n name: 'asset',\n type: 'reference',\n weak: true,\n to: [{type: 'mux.videoAsset'}],\n },\n ],\n}\n\nexport const muxVideoAsset = {\n name: 'mux.videoAsset',\n type: 'object',\n title: 'Video asset',\n fields: [\n {\n type: 'string',\n name: 'status',\n },\n {\n type: 'string',\n name: 'assetId',\n },\n {\n type: 'string',\n name: 'playbackId',\n },\n {\n type: 'string',\n name: 'filename',\n },\n {\n type: 'number',\n name: 'thumbTime',\n },\n ],\n}\n","import {definePlugin} from 'sanity'\n\nimport createStudioTool from './components/StudioTool'\nimport {muxVideoCustomRendering} from './plugin'\nimport {muxVideo, muxVideoAsset} from './schema'\nimport type {Config} from './util/types'\n\nexport type {VideoAssetDocument} from './util/types'\n\nexport const defaultConfig: Config = {\n mp4_support: 'none',\n}\n\nexport const muxInput = definePlugin<Partial<Config> | void>((userConfig) => {\n const config: Config = {...defaultConfig, ...userConfig}\n return {\n name: 'mux-input',\n schema: {\n types: [\n muxVideoAsset,\n {\n ...muxVideo,\n ...muxVideoCustomRendering(config),\n },\n ],\n },\n tools: config.tool === false ? undefined : [createStudioTool(config)],\n }\n})\n"],"names":["ToolIcon","jsx","stroke","fill","strokeWidth","viewBox","height","width","xmlns","children","d","SANITY_API_VERSION","useClient","useSanityClient","apiVersion","SPECIAL_CHARS","STRIP_EDGE_CHARS","tokenize","string","match","map","token","replace","toGroqParams","terms","params","reduce","acc","term","i","concat","extractTermsFromQuery","query","quotedQueries","unquotedQuery","words","length","push","quotedTerms","str","trim","toLower","remainingTerms","uniq","compact","SEARCH_PATHS","createConstraints","constraints","_term","joinedPath","filter","constraint","join","createSearchFilter","ASSET_SORT_OPTIONS","createdDesc","groq","label","createdAsc","filenameAsc","filenameDesc","useAssetDocuments","createHookFromObservableFactory","_ref","documentStore","sort","searchQuery","search","Boolean","listenQuery","useAssets","useDocumentStore","setSort","useState","setSearchQuery","assetDocuments","isLoading","assets","useMemo","collate","collated","draft","published","_id","id","CONTEXT_MENU_POPOVER_PROPS","constrainSize","placement","portal","SelectSortOptions","props","useId","MenuButton","button","Button","text","icon","SortIcon","mode","padding","style","cursor","menu","Menu","Object","entries","_ref2","type","MenuItem","onClick","tone","pressed","popover","SpinnerBox","Box","display","alignItems","justifyContent","minHeight","Spinner","name","cacheNs","muxSecretsDocumentId","DIALOGS_Z_INDEX","THUMBNAIL_ASPECT_RATIO","MIN_ASPECT_RATIO","FormField","title","description","inputId","jsxs","Stack","space","Flex","align","flex","paddingY","Text","as","htmlFor","weight","size","muted","memo","IconInfo","Icon","gap","ResolutionIcon","StopWatchIcon","readSecrets","client","projectId","dataset","config","suspend","data","fetch","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","generateJwt","playbackId","aud","payload","TypeError","default","sign","JSON","parse","stringify","_","v","atob","algorithm","keyid","audience","subject","noTimestamp","expiresIn","getPlaybackId","asset","console","error","getPlaybackPolicy","_a","_b","_c","_d","playback_ids","policy","getVideoSrc","_ref3","searchParams","URLSearchParams","set","VideoPlayer","_ref4","videoSrc","signedToken","url","URL","get","aspect_ratio","split","Number","targetAspectRatio","forceAspectRatio","isNaN","aspectRatio","Math","max","Card","position","Fragment","MuxPlayer","playsInline","tokens","playback","thumbnail","storyboard","streamType","preload","crossOrigin","metadata","player_name","player_version","pluginPkg","version","page_type","objectFit","deleteAssetOnMux","assetId","request","withCredentials","method","deleteAsset","_ref5","deleteOnMux","delete","getAsset","getUnknownTypeFallback","typeName","subtitle","media","WarningOutlineIcon","MissingSchemaType","layout","value","SanityDefaultPreview","_type","TimeAgo","_ref6","time","timeAgo","useTimeAgo","DraftStatus","document","updatedAt","_updatedAt","Tooltip","content","TextWithTone","dimmed","EditIcon","PublishedStatus","PublishIcon","PaneItemPreview","presence","schemaType","isRecord","isValidElement","isString","isNumber","useMemoObservable","getPreviewStateObservable","documentPreviewStore","status","Inline","DocumentPreviewPresence","getPreviewValueWithFallback","isPlaceholder","getIconWithFallback","defaultIcon","DocumentPreviewInInput","ChildLink","usePaneRouter","linkProps","childId","documentPair","childParameters","DocumentPreviewInRool","IntentLink","intent","DocumentPreview","doc","useDocumentPreviewStore","schema","useSchema","documentPresence","useDocumentPresence","hasSchemaType","PreviewComponent","DocumentIcon","PreviewCard","__unstable_focusRing","radius","Container","styled","__template","theme","sanity","color","base","fg","fonts","sizes","FileReferences","isLoaded","references","marginTop","textAlign","documentPairs","marginBottom","shadow","overflow","DeleteDialog","_ref7","referencesLoading","cancelDelete","succeededDeleting","state","setState","setDeleteOnMux","toast","useToast","useEffect","confirmDelete","worked","Dialog","header","zOffset","onClose","onClickOutside","footer","justify","TrashIcon","fontSize","disabled","some","s","Heading","Checkbox","checked","onChange","prev","margin","useDocReferences","_ref8","formatSeconds","seconds","hrs","mins","secs","ret","getVideoMetadata","_e","_f","date","created_at","Date","_createdAt","now","filename","slice","createdAt","duration","max_stored_resolution","max_stored_frame_rate","useFileDetails","originalAsset","setOriginalAsset","setFilename","modified","displayInfo","handleClose","closeDialog","confirmClose","shouldClose","saveChanges","patch","commit","AssetInput","TextInput","placeholder","onInput","VideoDetails","tab","setTab","isSaving","containerHeight","setContainerHeight","contentsRef","React","useRef","current","getBoundingClientRect","CheckmarkIcon","iconRight","ErrorOutlineIcon","RevertIcon","sizing","containerType","direction","ref","autoPlay","TabList","Tab","selected","SearchIcon","TabPanel","hidden","e","currentTarget","ClockIcon","CropIcon","toLocaleDateString","year","month","day","hour","minute","hour12","CalendarIcon","VideoMetadata","wordWrap","toISOString","useInView","options","arguments","undefined","inView","setInView","observer","IntersectionObserver","_ref9","obs","entry","nowInView","isIntersecting","thresholds","threshold","intersectionRatio","call","toObserve","observe","unobserve","getAnimatedPosterSrc","_ref10","start","thumbTime","end","fps","Image","img","STATUS_TO_TONE","loading","loaded","VideoThumbnail","_ref11","setStatus","animatedSrc","handleLoad","handleError","border","left","top","transform","justifyItems","src","alt","onLoad","onError","opacity","PlayButton","VideoInBrowser","_ref12","onSelect","onEdit","renderVideo","setRenderVideo","select","useCallback","edit","playbackPolicy","LockIcon","fallbackPlacements","borderRadius","zIndex","gridTemplateRows","PlayIcon","VideosBrowser","_ref13","editedAsset","setEditedAsset","freshEditedAsset","find","a","Label","Grid","gridTemplateColumns","marginY","StudioTool","createStudioTool","toolConfig","tool","component","path","useAssetDocumentValues","useDocumentValues","isReference","useDialogState","useMuxPolling","useProjectId","useDataset","shouldFetch","static_renditions","useSWR","returnDocuments","refreshInterval","refreshWhenHidden","dedupingInterval","useSecretsDocumentValues","cache","exists","secrets","isInitialSetup","needsSetup","createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","dynamicChunkSize","successHandler","next","complete","errorHandler","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort","saveSecrets","createOrReplace","createSigningKeys","testSecrets","haveValidSigningKeys","res","testSecretsObservable","defer","observable","cancelUpload","testUrl","pipe","switchMap","validUrl","of","json","throwError","generateUuid","muxBody","input","playback_policy","mp4_support","headers","mergeMap","result","results","uploadFile","testFile","fileOptions","body","upload","event","from","updateAssetDocumentFromUpload","catchError","err","mergeMapTo","getUpload","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","asset_id","clearInterval","uploadId","then","window","File","optionsFromFile","parsed","protocol","opts","preserveFilename","extractDroppedFiles","dataTransfer","files","Array","items","normalizeItems","arr","flat","all","item","kind","webkitGetAsEntry","getAsFile","isDirectory","walk","getAsString","isFile","dir","createReader","readEntries","entr","startsWith","SelectAssets","selectedAsset","setDialogState","_ref14","handleSelect","chosenAsset","PatchEvent","unset","setIfMissing","_weak","InputBrowser","_ref15","__unstable_autoFocus","SelectAsset","useCancelUpload","div","TopControls","CardWrapper","FlexWrapper","LeftSection","CodeWrapper","Code","UploadProgress","_ref16","progress","onCancel","LinearProgress","Player","_ref17","buttons","readOnly","isPreparingStaticRenditions","playRef","muteRef","handleCancelUpload","createElement","innerHTML","shadowRoot","appendChild","cloneNode","errors","messages","slot","background","focusRingBorderStyle","focusRingStyle","focusRing","focusRingOutsetWidth","offset","focusRingInsetWidth","bgColor","bg","FileButton","_ref18","css","FileInputMenuItem","forwardRef","forwardedRef","idProp","accept","capture","multiple","rest","idHook","handleChange","target","marginRight","isValidElementType","textOverflow","LockCard","LockButton","PlayerActionsMenu","dialogState","onUpload","open","setOpen","menuElement","setMenuRef","isSigned","onReset","useClickOutside","scheme","Popover","UploadIcon","MenuDivider","PlugIcon","ResetIcon","EllipsisVerticalIcon","withFocusRing","$border","rem","ctrlKey","cmdKey","UploadCardWithFocusRing","UploadCard","_ref19","onPaste","onDrop","onDragEnter","onDragLeave","onDragOver","ctrlDown","inputRef","handleKeyDown","keyCode","vKey","focus","handleKeyUp","tabIndex","onKeyDown","onKeyUp","HiddenInput","attrs","FileInputButton","_ref20","handleButtonClick","click","ConfigureApiBox","UploadPlaceholder","hovering","handleBrowse","handleConfigureApi","borderColor","DocumentVideoIcon","MuxVideoInputUploader","Component","constructor","__publicField","isDraggingOver","invalidPaste","invalidFile","uploadProgress","fileInfo","createRef","evt","takeUntil","onCancelUploadButtonClick$","tap","subscribe","handleUploadEvent","handleUploadSuccess","handleProgress","clipboardData","getData","sEvent","toLowerCase","setTimeout","preventDefault","stopPropagation","nativeEvent","dragEnteredEls","idx","indexOf","splice","componentWillUnmount","unSubscribeToUpload","componentDidMount","events$","Subject","asObservable","handleCancelUploadButtonClick","closed","unsubscribe","render","handleDrop","handleDragOver","handleDragLeave","handleDragEnter","handlePaste","container","useSaveSecrets","_ref21","valid","hasValidSigningKeys","private_key","log","init","_ref22","submitting","reducer","action","useSecretsFormState","useReducer","ids","MuxLogo","_ref23","titleId","b","c","f","g","h","j","k","l","m","n","o","p","q","r","field","role","xmlSpace","spreadMethod","gradientTransform","gradientUnits","y2","x2","y1","x1","stopOpacity","stopColor","clipPathUnits","clipPath","Logo","span","Header","fieldNames","ConfigureApi","_ref24","dispatch","hasSecretsInitially","dirty","tokenId","secretKeyId","enableSignedUrlsId","firstField","handleSaveSecrets","saving","handleSubmit","reportValidity","savedSecrets","clear","secretsId","catch","finally","handleChangeToken","handleChangeSecretKey","handleChangeEnableSignedUrls","maxWidth","onSubmit","noValidate","href","rel","required","paddingLeft","ErrorBoundaryCard","pushToast","errorRef","ErrorBoundary","didCatch","reset","useErrorBoundary","onDidCatch","errorInfo","group","toString","groupCollapsed","groupEnd","stack","componentStack","scrollIntoView","behavior","scrollMode","block","handleRetry","paddingX","columns","InputFallback","Onboard","handleOpen","boxShadow","Input","secretDocumentValues","assetDocumentValues","poll","Suspense","fallback","Uploader","muxVideoCustomRendering","components","preview","prepare","muxVideo","fields","weak","to","muxVideoAsset","defaultConfig","muxInput","definePlugin","userConfig","types","tools"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/components/icons/ToolIcon.tsx","../src/hooks/useClient.ts","../src/util/createSearchFilter.ts","../src/hooks/useAssets.ts","../src/components/SelectSortOptions.tsx","../src/components/SpinnerBox.tsx","../src/util/constants.ts","../src/components/FormField.tsx","../src/components/IconInfo.tsx","../src/components/icons/Resolution.tsx","../src/components/icons/StopWatch.tsx","../src/util/readSecrets.ts","../src/util/generateJwt.ts","../src/util/getPlaybackId.ts","../src/util/getPlaybackPolicy.ts","../src/util/getVideoSrc.ts","../src/components/VideoPlayer.tsx","../src/actions/assets.ts","../src/components/documentPreview/MissingSchemaType.tsx","../src/components/documentPreview/TimeAgo.tsx","../src/components/documentPreview/DraftStatus.tsx","../src/components/documentPreview/PublishedStatus.tsx","../src/components/documentPreview/PaneItemPreview.tsx","../src/components/documentPreview/DocumentPreview.tsx","../src/components/VideoDetails/VideoReferences.tsx","../src/components/VideoDetails/DeleteDialog.tsx","../src/hooks/useDocReferences.ts","../src/util/formatSeconds.ts","../src/util/getVideoMetadata.ts","../src/components/VideoDetails/useVideoDetails.ts","../src/components/VideoDetails/VideoDetails.tsx","../src/components/VideoMetadata.tsx","../src/hooks/useInView.ts","../src/util/getAnimatedPosterSrc.ts","../src/components/VideoThumbnail.tsx","../src/components/VideoInBrowser.tsx","../src/components/VideosBrowser.tsx","../src/components/StudioTool.tsx","../src/hooks/useAssetDocumentValues.ts","../src/hooks/useDialogState.ts","../src/hooks/useMuxPolling.ts","../src/hooks/useSecretsDocumentValues.ts","../src/clients/upChunkObservable.ts","../src/actions/secrets.ts","../src/actions/upload.ts","../src/util/extractFiles.ts","../src/components/SelectAsset.tsx","../src/components/InputBrowser.tsx","../src/hooks/useCancelUpload.ts","../src/components/Player.styled.tsx","../src/components/UploadProgress.tsx","../src/components/Player.tsx","../src/components/withFocusRing/helpers.ts","../src/components/FileInputMenuItem.styled.tsx","../src/components/FileInputMenuItem.tsx","../src/components/PlayerActionsMenu.tsx","../src/components/withFocusRing/withFocusRing.ts","../src/components/Uploader.styled.tsx","../src/components/FileInputButton.tsx","../src/components/UploadPlaceholder.tsx","../src/components/__legacy__Uploader.tsx","../src/hooks/useSaveSecrets.ts","../src/hooks/useSecretsFormState.ts","../src/components/MuxLogo.tsx","../src/components/ConfigureApi.styled.tsx","../src/components/ConfigureApi.tsx","../src/components/ErrorBoundaryCard.tsx","../src/components/Input.styled.tsx","../src/components/Onboard.tsx","../src/components/Input.tsx","../src/plugin.tsx","../src/schema.tsx","../src/index.ts"],"sourcesContent":["import React from 'react'\n\n/**\n * Icon of a monitor with a play button.\n * Credits: material design icons & react-icons\n */\nconst ToolIcon = () => (\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 24 24\"\n height=\"1em\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z\" />\n </svg>\n)\n\nexport default ToolIcon\n","// As it's required to specify the API Version this custom hook ensures it's all using the same version\nimport {useClient as useSanityClient} from 'sanity'\n\nexport const SANITY_API_VERSION = '2022-09-14'\n\nexport function useClient() {\n return useSanityClient({apiVersion: SANITY_API_VERSION})\n}\n","// Adaptation of Sanity's createSearchQuery for our limited use case:\n// https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/core/search/weighted/createSearchQuery.ts\nimport {compact, toLower, trim, uniq, words} from 'lodash'\n\nconst SPECIAL_CHARS = /([^!@#$%^&*(),\\\\/?\";:{}|[\\]+<>\\s-])+/g\nconst STRIP_EDGE_CHARS = /(^[.]+)|([.]+$)/\n\nfunction tokenize(string: string): string[] {\n return (string.match(SPECIAL_CHARS) || []).map((token) => token.replace(STRIP_EDGE_CHARS, ''))\n}\n\nfunction toGroqParams(terms: string[]): Record<string, string> {\n const params: Record<string, string> = {}\n return terms.reduce((acc, term, i) => {\n acc[`t${i}`] = `${term}*` // \"t\" is short for term\n return acc\n }, params)\n}\n\n/**\n * Convert a string into an array of tokenized terms.\n *\n * Any (multi word) text wrapped in double quotes will be treated as \"phrases\", or separate tokens that\n * will not have its special characters removed.\n * E.g.`\"the\" \"fantastic mr\" fox fox book` =\\> [\"the\", `\"fantastic mr\"`, \"fox\", \"book\"]\n *\n * Phrases wrapped in quotes are assigned relevance scoring differently from regular words.\n *\n * @internal\n */\nfunction extractTermsFromQuery(query: string): string[] {\n const quotedQueries = [] as string[]\n const unquotedQuery = query.replace(/(\"[^\"]*\")/g, (match) => {\n if (words(match).length > 1) {\n quotedQueries.push(match)\n return ''\n }\n return match\n })\n\n // Lowercase and trim quoted queries\n const quotedTerms = quotedQueries.map((str) => trim(toLower(str)))\n\n /**\n * Convert (remaining) search query into an array of deduped, sanitized tokens.\n * All white space and special characters are removed.\n * e.g. \"The saint of Saint-Germain-des-Prés\" =\\> ['the', 'saint', 'of', 'germain', 'des', 'pres']\n */\n const remainingTerms = uniq(compact(tokenize(toLower(unquotedQuery))))\n\n return [...quotedTerms, ...remainingTerms]\n}\n\n/** Which properties of the video asset document should we match users' queries against */\nconst SEARCH_PATHS = ['filename']\n\n/**\n * Create GROQ constraints, given search terms and the full spec of available document types and fields.\n * Essentially a large list of all possible fields (joined by logical OR) to match our search terms against.\n */\nfunction createConstraints(terms: string[]) {\n const constraints = terms\n .map((_term, i) => SEARCH_PATHS.map((joinedPath) => `${joinedPath} match $t${i}`))\n .filter((constraint) => constraint.length > 0)\n\n return constraints.map((constraint) => `(${constraint.join(' || ')})`)\n}\n\nexport function createSearchFilter(query: string) {\n const terms = extractTermsFromQuery(query)\n\n return {\n filter: createConstraints(terms),\n params: {\n ...toGroqParams(terms),\n },\n }\n}\n","import {useMemo, useState} from 'react'\nimport {collate, createHookFromObservableFactory, DocumentStore, useDocumentStore} from 'sanity'\n\nimport {SANITY_API_VERSION} from '../hooks/useClient'\nimport {createSearchFilter} from '../util/createSearchFilter'\nimport type {VideoAssetDocument} from '../util/types'\n\nexport const ASSET_SORT_OPTIONS = {\n createdDesc: {groq: '_createdAt desc', label: 'Newest first'},\n createdAsc: {groq: '_createdAt asc', label: 'First created (oldest)'},\n filenameAsc: {groq: 'filename asc', label: 'By filename (A-Z)'},\n filenameDesc: {groq: 'filename desc', label: 'By filename (Z-A)'},\n}\n\nexport type SortOption = keyof typeof ASSET_SORT_OPTIONS\n\nconst useAssetDocuments = createHookFromObservableFactory<\n VideoAssetDocument[],\n {\n documentStore: DocumentStore\n sort: SortOption\n searchQuery: string\n }\n>(({documentStore, sort, searchQuery}) => {\n const search = createSearchFilter(searchQuery)\n const filter = [`_type == \"mux.videoAsset\"`, ...search.filter].filter(Boolean).join(' && ')\n\n const sortFragment = ASSET_SORT_OPTIONS[sort].groq\n return documentStore.listenQuery(\n /* groq */ `*[${filter}] | order(${sortFragment})`,\n search.params,\n {\n apiVersion: SANITY_API_VERSION,\n }\n )\n})\n\nexport default function useAssets() {\n const documentStore = useDocumentStore()\n const [sort, setSort] = useState<SortOption>('createdDesc')\n const [searchQuery, setSearchQuery] = useState('')\n\n const [assetDocuments = [], isLoading] = useAssetDocuments({documentStore, sort, searchQuery})\n const assets = useMemo(\n () =>\n // Avoid displaying both drafts & published assets by collating them together and giving preference to drafts\n collate<VideoAssetDocument>(assetDocuments).map(\n (collated) =>\n ({\n ...(collated.draft || collated.published || {}),\n _id: collated.id,\n }) as VideoAssetDocument\n ),\n [assetDocuments]\n )\n\n return {\n assets,\n isLoading,\n sort,\n searchQuery,\n setSort,\n setSearchQuery,\n }\n}\n","import {SortIcon} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuItem, PopoverProps} from '@sanity/ui'\nimport React, {useId} from 'react'\n\nimport {ASSET_SORT_OPTIONS, SortOption} from '../hooks/useAssets'\n\nexport const CONTEXT_MENU_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n width: 0,\n}\n\n/**\n * @sanity/ui components adapted from:\n * https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/pane/PaneContextMenuButton.tsx#L19\n */\nexport function SelectSortOptions(props: {sort: SortOption; setSort: (s: SortOption) => void}) {\n const id = useId()\n\n return (\n <MenuButton\n button={\n <Button text=\"Sort\" icon={SortIcon} mode=\"bleed\" padding={3} style={{cursor: 'pointer'}} />\n }\n id={id}\n menu={\n <Menu>\n {Object.entries(ASSET_SORT_OPTIONS).map(([type, {label}]) => (\n <MenuItem\n key={type}\n data-as=\"button\"\n onClick={() => props.setSort(type as SortOption)}\n padding={3}\n tone=\"default\"\n text={label}\n pressed={type === props.sort}\n />\n ))}\n </Menu>\n }\n popover={CONTEXT_MENU_POPOVER_PROPS}\n />\n )\n}\n","import {Box, Spinner} from '@sanity/ui'\nimport React from 'react'\n\nconst SpinnerBox: React.FC = () => (\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '150px',\n }}\n >\n <Spinner />\n </Box>\n)\n\nexport default SpinnerBox\n","export const name = 'mux-input' as const\n\n// Caching namespace, as suspend-react might be in use by other components on the page we must ensure we don't collide\nexport const cacheNs = 'sanity-plugin-mux-input' as const\n\nexport const muxSecretsDocumentId = 'secrets.mux' as const\n\nexport const DIALOGS_Z_INDEX = 60_000\n\nexport const THUMBNAIL_ASPECT_RATIO = 16 / 9\n\n/** To prevent excessive height, thumbnails and input should not go beyond to this aspect ratio. */\nexport const MIN_ASPECT_RATIO = 5 / 4\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport React, {memo} from 'react'\n\n// @TODO: get rid of this once v3 core is stable\n\nexport interface Props {\n children: React.ReactNode\n title: React.ReactNode\n description?: React.ReactNode\n inputId: string\n}\n\nfunction FormField(props: Props) {\n const {children, title, description, inputId} = props\n\n return (\n <Stack space={1}>\n <Flex align=\"flex-end\">\n <Box flex={1} paddingY={2}>\n <Stack space={2}>\n <Text as=\"label\" htmlFor={inputId} weight=\"semibold\" size={1}>\n {title || <em>Untitled</em>}\n </Text>\n\n {description && (\n <Text muted size={1}>\n {description}\n </Text>\n )}\n </Stack>\n </Box>\n </Flex>\n <div>{children}</div>\n </Stack>\n )\n}\n\nexport default memo(FormField)\n","import {Flex, Text} from '@sanity/ui'\nimport React from 'react'\n\nconst IconInfo: React.FC<{\n text: string\n icon: React.FC\n size?: number\n muted?: boolean\n}> = (props) => {\n const Icon = props.icon\n return (\n <Flex gap={2} align=\"center\" padding={1}>\n <Text size={(props.size || 1) + 1} muted>\n <Icon />\n </Text>\n <Text size={props.size || 1} muted={props.muted}>\n {props.text}\n </Text>\n </Flex>\n )\n}\n\nexport default IconInfo\n","import React, {SVGProps} from 'react'\n\nexport function ResolutionIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20 9V6h-3V4h5v5h-2ZM2 9V4h5v2H4v3H2Zm15 11v-2h3v-3h2v5h-5ZM2 20v-5h2v3h3v2H2Zm4-4V8h12v8H6Zm2-2h8v-4H8v4Zm0 0v-4v4Z\"\n />\n </svg>\n )\n}\n","import React, {SVGProps} from 'react'\n\nexport function StopWatchIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 512 512\"\n {...props}\n >\n <path d=\"M232 306.667h48V176h-48v130.667z\" fill=\"currentColor\" />\n <path\n d=\"M407.67 170.271l30.786-30.786-33.942-33.941-30.785 30.786C341.217 111.057 300.369 96 256 96 149.961 96 64 181.961 64 288s85.961 192 192 192 192-85.961 192-192c0-44.369-15.057-85.217-40.33-117.729zm-45.604 223.795C333.734 422.398 296.066 438 256 438s-77.735-15.602-106.066-43.934C121.602 365.735 106 328.066 106 288s15.602-77.735 43.934-106.066C178.265 153.602 215.934 138 256 138s77.734 15.602 106.066 43.934C390.398 210.265 406 247.934 406 288s-15.602 77.735-43.934 106.066z\"\n fill=\"currentColor\"\n />\n <path d=\"M192 32h128v48H192z\" fill=\"currentColor\" />\n </svg>\n )\n}\n","// Utils with a readName prefix are suspendable and should only be called in the render body\n// Not inside event callbacks or a useEffect.\n// They may be called dynamically, unlike useEffect\n\n// @TODO rename to readSigningPair\n\nimport type {SanityClient} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {cacheNs} from '../util/constants'\nimport {type Secrets} from '../util/types'\n\nexport const _id = 'secrets.mux' as const\n\nexport function readSecrets(client: SanityClient): Secrets {\n const {projectId, dataset} = client.config()\n return suspend(async () => {\n const data = await client.fetch(\n /* groq */ `*[_id == $_id][0]{\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate\n }`,\n {_id}\n )\n return {\n token: data?.token || null,\n secretKey: data?.secretKey || null,\n enableSignedUrls: Boolean(data?.enableSignedUrls) || false,\n signingKeyId: data?.signingKeyId || null,\n signingKeyPrivate: data?.signingKeyPrivate || null,\n }\n }, [cacheNs, _id, projectId, dataset])\n}\n","import type {SanityClient} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {readSecrets} from './readSecrets'\nimport type {AnimatedThumbnailOptions, ThumbnailOptions} from './types'\n\nexport type Audience = 'g' | 's' | 't' | 'v'\n\nexport type Payload<T extends Audience> = T extends 'g'\n ? AnimatedThumbnailOptions\n : T extends 's'\n ? never\n : T extends 't'\n ? ThumbnailOptions\n : T extends 'v'\n ? never\n : never\n\nexport function generateJwt<T extends Audience>(\n client: SanityClient,\n playbackId: string,\n aud: T,\n payload?: Payload<T>\n): string {\n const {signingKeyId, signingKeyPrivate} = readSecrets(client)\n if (!signingKeyId) {\n throw new TypeError('Missing signingKeyId')\n }\n if (!signingKeyPrivate) {\n throw new TypeError('Missing signingKeyPrivate')\n }\n\n const {default: sign} = suspend(() => import('jsonwebtoken-esm/sign'), ['jsonwebtoken-esm/sign'])\n\n return sign(\n payload ? JSON.parse(JSON.stringify(payload, (_, v) => v ?? undefined)) : {},\n atob(signingKeyPrivate),\n {\n algorithm: 'RS256',\n keyid: signingKeyId,\n audience: aud,\n subject: playbackId,\n noTimestamp: true,\n expiresIn: '12h',\n }\n )\n}\n","import type {VideoAssetDocument} from './types'\n\nexport function getPlaybackId(asset: Partial<VideoAssetDocument>): string {\n if (!asset?.playbackId) {\n console.error('Asset is missing a playbackId', {asset})\n throw new TypeError(`Missing playbackId`)\n }\n return asset.playbackId\n}\n","import type {PlaybackPolicy, VideoAssetDocument} from './types'\n\nexport function getPlaybackPolicy(asset: Partial<VideoAssetDocument>): PlaybackPolicy {\n return asset.data?.playback_ids?.[0]?.policy ?? 'public'\n}\n","import type {SanityClient} from 'sanity'\n\nimport {generateJwt} from './generateJwt'\nimport {getPlaybackId} from './getPlaybackId'\nimport {getPlaybackPolicy} from './getPlaybackPolicy'\nimport type {MuxVideoUrl, VideoAssetDocument} from './types'\n\ninterface VideoSrcOptions {\n asset: VideoAssetDocument\n client: SanityClient\n}\n\nexport function getVideoSrc({asset, client}: VideoSrcOptions): MuxVideoUrl {\n const playbackId = getPlaybackId(asset)\n const searchParams = new URLSearchParams()\n\n if (getPlaybackPolicy(asset) === 'signed') {\n const token = generateJwt(client, playbackId, 'v')\n searchParams.set('token', token)\n }\n\n return `https://stream.mux.com/${playbackId}.m3u8?${searchParams}`\n}\n","import MuxPlayer, {MuxPlayerProps} from '@mux/mux-player-react'\nimport {Card} from '@sanity/ui'\nimport React, {PropsWithChildren, useMemo} from 'react'\n\nimport {useClient} from '../hooks/useClient'\nimport {MIN_ASPECT_RATIO} from '../util/constants'\nimport {getVideoSrc} from '../util/getVideoSrc'\nimport type {VideoAssetDocument} from '../util/types'\nimport pluginPkg from './../../package.json'\n\nexport default function VideoPlayer({\n asset,\n children,\n ...props\n}: PropsWithChildren<\n {asset: VideoAssetDocument; forceAspectRatio?: number} & Partial<Pick<MuxPlayerProps, 'autoPlay'>>\n>) {\n const client = useClient()\n\n const videoSrc = useMemo(() => asset?.playbackId && getVideoSrc({client, asset}), [asset, client])\n\n const signedToken = useMemo(() => {\n try {\n const url = new URL(videoSrc!)\n return url.searchParams.get('token')\n } catch {\n return false\n }\n }, [videoSrc])\n\n const [width, height] = (asset?.data?.aspect_ratio ?? '16:9').split(':').map(Number)\n const targetAspectRatio =\n props.forceAspectRatio || (Number.isNaN(width) ? 16 / 9 : width / height)\n const aspectRatio = Math.max(MIN_ASPECT_RATIO, targetAspectRatio)\n\n return (\n <Card tone=\"transparent\" style={{aspectRatio: aspectRatio, position: 'relative'}}>\n {videoSrc && (\n <>\n <MuxPlayer\n {...props}\n playsInline\n playbackId={asset.playbackId}\n tokens={\n signedToken\n ? {playback: signedToken, thumbnail: signedToken, storyboard: signedToken}\n : undefined\n }\n streamType=\"on-demand\"\n preload=\"metadata\"\n crossOrigin=\"anonymous\"\n metadata={{\n player_name: 'Sanity Admin Dashboard',\n player_version: pluginPkg.version,\n page_type: 'Preview Player',\n }}\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n objectFit: 'contain',\n }}\n />\n {children}\n </>\n )}\n </Card>\n )\n}\n","import type {SanityClient} from 'sanity'\n\nimport type {MuxAsset, VideoAssetDocument} from '../util/types'\n\nexport function deleteAssetOnMux(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<void>({\n url: `/addons/mux/assets/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport async function deleteAsset({\n client,\n asset,\n deleteOnMux,\n}: {\n client: SanityClient\n asset: VideoAssetDocument\n deleteOnMux: boolean\n}) {\n if (!asset?._id) return true\n\n try {\n await client.delete(asset._id)\n } catch (error) {\n return 'failed-sanity'\n }\n\n if (deleteOnMux && asset?.assetId) {\n try {\n await deleteAssetOnMux(client, asset.assetId)\n } catch (error) {\n return 'failed-mux'\n }\n }\n\n return true\n}\n\nexport function getAsset(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/MissingSchemaType.tsx\nimport {WarningOutlineIcon} from '@sanity/icons'\nimport React from 'react'\nimport type {SanityDocument} from 'sanity'\nimport type {GeneralPreviewLayoutKey} from 'sanity'\nimport {SanityDefaultPreview} from 'sanity'\n\nexport interface MissingSchemaTypeProps {\n layout?: GeneralPreviewLayoutKey\n value: SanityDocument\n}\n\nconst getUnknownTypeFallback = (id: string, typeName: string) => ({\n title: (\n <em>\n No schema found for type <code>{typeName}</code>\n </em>\n ),\n subtitle: (\n <em>\n Document: <code>{id}</code>\n </em>\n ),\n media: () => <WarningOutlineIcon />,\n})\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n const {layout, value} = props\n\n return (\n <SanityDefaultPreview {...getUnknownTypeFallback(value._id, value._type)} layout={layout} />\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/TimeAgo.tsx\nimport React from 'react'\nimport {useTimeAgo} from 'sanity'\n\nexport interface TimeAgoProps {\n time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n const timeAgo = useTimeAgo(time)\n\n return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/DraftStatus.tsx\nimport {EditIcon} from '@sanity/icons'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport React from 'react'\nimport type {PreviewValue, SanityDocument} from 'sanity'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function DraftStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Edited {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>No unpublished edits</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n <EditIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/PublishedStatus.tsx\n\nimport {PublishIcon} from '@sanity/icons'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport React from 'react'\nimport type {PreviewValue, SanityDocument} from 'sanity'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","// Adapted from:\n// https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/paneItem/PaneItemPreview.tsx\nimport {Inline} from '@sanity/ui'\nimport {isNumber, isString} from 'lodash'\nimport React, {isValidElement} from 'react'\nimport {useMemoObservable} from 'react-rx'\nimport type {SanityDocument, SchemaType} from 'sanity'\nimport {PreviewValue} from 'sanity'\nimport {\n DocumentPresence,\n DocumentPreviewPresence,\n DocumentPreviewStore,\n GeneralPreviewLayoutKey,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n isRecord,\n SanityDefaultPreview,\n} from 'sanity'\n\nimport {DraftStatus} from './DraftStatus'\nimport {PublishedStatus} from './PublishedStatus'\n\nexport interface PaneItemPreviewState {\n isLoading?: boolean\n draft?: PreviewValue | Partial<SanityDocument> | null\n published?: PreviewValue | Partial<SanityDocument> | null\n}\n\nexport interface PaneItemPreviewProps {\n documentPreviewStore: DocumentPreviewStore\n icon: React.ComponentType | false\n layout: GeneralPreviewLayoutKey\n presence?: DocumentPresence[]\n schemaType: SchemaType\n value: SanityDocument\n}\n\nexport function PaneItemPreview(props: PaneItemPreviewProps) {\n const {icon, layout, presence, schemaType, value} = props\n const title =\n (isRecord(value.title) && isValidElement(value.title)) ||\n isString(value.title) ||\n isNumber(value.title)\n ? value.title\n : null\n\n // NOTE: this emits sync so can never be null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const {draft, published, isLoading} = useMemoObservable<PaneItemPreviewState>(\n () => getPreviewStateObservable(props.documentPreviewStore, schemaType, value._id, title),\n [props.documentPreviewStore, schemaType, value._id, title]\n )!\n\n const status = isLoading ? null : (\n <Inline space={4}>\n {presence && presence.length > 0 && <DocumentPreviewPresence presence={presence} />}\n <PublishedStatus document={published} />\n <DraftStatus document={draft} />\n </Inline>\n )\n\n return (\n <SanityDefaultPreview\n {...(getPreviewValueWithFallback({value, draft, published}) as any)}\n isPlaceholder={isLoading}\n icon={icon}\n layout={layout}\n status={status}\n />\n )\n}\n","// Adapted from https://github.com/sanity-io/sanity/blob/next/packages/sanity/src/desk/components/paneItem/PaneItem.tsx\n\nimport {DocumentIcon} from '@sanity/icons'\nimport type {PropsWithChildren} from 'react'\nimport React, {useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport type {CollatedHit, FIXME, SchemaType} from 'sanity'\nimport {PreviewCard, useDocumentPresence, useDocumentPreviewStore, useSchema} from 'sanity'\nimport {usePaneRouter} from 'sanity/desk'\nimport {IntentLink} from 'sanity/router'\n\nimport {PluginPlacement} from '../../util/types'\nimport {MissingSchemaType} from './MissingSchemaType'\nimport {PaneItemPreview} from './PaneItemPreview'\n\ninterface DocumentPreviewProps {\n schemaType?: SchemaType\n documentPair: CollatedHit<SanityDocument>\n placement?: PluginPlacement\n}\n\n/**\n * Return `false` if we explicitly disable the icon.\n * Otherwise return the passed icon or the schema type icon as a backup.\n */\nexport function getIconWithFallback(\n icon: React.ComponentType<any> | false | undefined,\n schemaType: SchemaType | undefined,\n defaultIcon: React.ComponentType<any>\n): React.ComponentType<any> | false {\n if (icon === false) {\n return false\n }\n\n return icon || ((schemaType && schemaType.icon) as any) || defaultIcon || false\n}\n\n/** When inside the field input, we can open the reference on a child pane */\nfunction DocumentPreviewInInput(props: PropsWithChildren<DocumentPreviewProps>) {\n const {ChildLink} = usePaneRouter()\n\n return (linkProps: PropsWithChildren) => (\n <ChildLink\n childId={props.documentPair.id}\n // Pass the schemaType of the document so `paneChild` in `buildPagesStructure` can access it\n childParameters={{type: props.documentPair.type}}\n >\n {linkProps.children}\n </ChildLink>\n )\n}\n\n/** When inside the tool, we must use a regular intent link to take users to the desk tool */\nfunction DocumentPreviewInRool(props: DocumentPreviewProps) {\n return (linkProps: PropsWithChildren) => (\n <IntentLink intent=\"edit\" params={{id: props.documentPair.id}}>\n {linkProps.children}\n </IntentLink>\n )\n}\n\nexport function DocumentPreview(props: DocumentPreviewProps) {\n const {schemaType, documentPair} = props\n const doc = documentPair?.draft || documentPair?.published\n const id = documentPair.id || ''\n const documentPreviewStore = useDocumentPreviewStore()\n const schema = useSchema()\n const documentPresence = useDocumentPresence(id)\n const hasSchemaType = Boolean(schemaType && schemaType.name && schema.get(schemaType.name))\n\n const PreviewComponent = useMemo(() => {\n if (!doc) return null\n\n if (!schemaType || !hasSchemaType) {\n return <MissingSchemaType value={doc as SanityDocument} />\n }\n\n return (\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={getIconWithFallback(undefined, schemaType, DocumentIcon)}\n schemaType={schemaType}\n layout=\"default\"\n value={doc}\n presence={documentPresence}\n />\n )\n }, [hasSchemaType, schemaType, documentPresence, doc, documentPreviewStore])\n\n return (\n <PreviewCard\n __unstable_focusRing\n as={\n (props.placement === 'input'\n ? DocumentPreviewInInput(props)\n : DocumentPreviewInRool(props)) as FIXME\n }\n data-as=\"a\"\n data-ui=\"PaneItem\"\n padding={2}\n radius={2}\n tone=\"inherit\"\n >\n {PreviewComponent}\n </PreviewCard>\n )\n}\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Card, Text} from '@sanity/ui'\nimport React from 'react'\nimport {collate, useSchema} from 'sanity'\nimport styled from 'styled-components'\n\nimport {PluginPlacement} from '../../util/types'\nimport {DocumentPreview} from '../documentPreview/DocumentPreview'\nimport SpinnerBox from '../SpinnerBox'\n\nconst Container = styled(Box)`\n * {\n color: ${(props: any) => props.theme.sanity.color.base.fg};\n }\n a {\n text-decoration: none;\n }\n h2 {\n font-size: ${(props: any) => props.theme.sanity.fonts.text.sizes[1]};\n }\n`\n\nconst VideoReferences: React.FC<{\n references?: SanityDocument[]\n isLoaded: boolean\n placement: PluginPlacement\n}> = (props) => {\n const schema = useSchema()\n if (!props.isLoaded) {\n return <SpinnerBox />\n }\n\n if (!props.references?.length) {\n return (\n <Card border radius={3} padding={3}>\n <Text size={2}>No documents are using this video</Text>\n </Card>\n )\n }\n\n const documentPairs = collate(props.references || [])\n return (\n <Container>\n {documentPairs?.map((documentPair) => {\n const schemaType = schema.get(documentPair.type)\n\n return (\n <Card\n key={documentPair.id}\n marginBottom={2}\n padding={2}\n radius={2}\n shadow={1}\n style={{overflow: 'hidden'}}\n >\n <Box>\n <DocumentPreview\n documentPair={documentPair}\n schemaType={schemaType}\n placement={props.placement}\n />\n </Box>\n </Card>\n )\n })}\n </Container>\n )\n}\n\nexport default VideoReferences\n","import {TrashIcon} from '@sanity/icons'\nimport {Button, Card, Checkbox, Dialog, Flex, Heading, Stack, Text, useToast} from '@sanity/ui'\nimport React, {useEffect, useState} from 'react'\nimport {SanityDocument} from 'sanity'\n\nimport {deleteAsset} from '../../actions/assets'\nimport {useClient} from '../../hooks/useClient'\nimport {DIALOGS_Z_INDEX} from '../../util/constants'\nimport {PluginPlacement, VideoAssetDocument} from '../../util/types'\nimport SpinnerBox from '../SpinnerBox'\nimport VideoReferences from './VideoReferences'\n\nexport default function DeleteDialog({\n asset,\n references,\n referencesLoading,\n cancelDelete,\n placement,\n succeededDeleting,\n}: {\n asset: VideoAssetDocument\n placement: PluginPlacement\n references?: SanityDocument[]\n referencesLoading: boolean\n cancelDelete: () => void\n succeededDeleting: () => void\n}) {\n const client = useClient()\n const [state, setState] = useState<\n 'processing_deletion' | 'checkingReferences' | 'error_deleting' | 'cantDelete' | 'confirm'\n >('checkingReferences')\n const [deleteOnMux, setDeleteOnMux] = useState(true)\n const toast = useToast()\n\n useEffect(() => {\n if (state !== 'checkingReferences' || referencesLoading) return\n\n setState(references?.length ? 'cantDelete' : 'confirm')\n }, [state, references, referencesLoading])\n\n async function confirmDelete() {\n if (state !== 'confirm') return\n\n setState('processing_deletion')\n const worked = await deleteAsset({client, asset, deleteOnMux})\n if (worked === true) {\n toast.push({title: 'Successfully deleted video', status: 'success'})\n succeededDeleting()\n } else if (worked === 'failed-mux') {\n toast.push({\n title: 'Deleted video in Sanity',\n description: \"But it wasn't deleted in Mux\",\n status: 'warning',\n })\n succeededDeleting()\n } else {\n toast.push({title: 'Failed deleting video', status: 'error'})\n\n setState('error_deleting')\n }\n }\n\n return (\n <Dialog\n header={'Delete video'}\n zOffset={DIALOGS_Z_INDEX}\n id=\"deleting-video-details-dialog\"\n onClose={cancelDelete}\n onClickOutside={cancelDelete}\n width={1}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={TrashIcon}\n fontSize={2}\n padding={3}\n text=\"Delete video\"\n tone=\"critical\"\n onClick={confirmDelete}\n disabled={['processing_deletion', 'checkingReferences', 'cantDelete'].some(\n (s) => s === state\n )}\n />\n </Flex>\n </Card>\n }\n >\n <Card\n padding={5}\n style={{\n minHeight: '150px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Stack space={3}>\n {state === 'checkingReferences' && (\n <>\n <Heading size={2}>Checking if video can be deleted</Heading>\n <SpinnerBox />\n </>\n )}\n {state === 'cantDelete' && (\n <>\n <Heading size={2}>Video can't be deleted</Heading>\n <Text size={2} style={{marginBottom: '2rem'}}>\n There are {references?.length} document{references && references.length > 0 && 's'}{' '}\n pointing to this video. Remove their references to this file or delete them before\n proceeding.\n </Text>\n <VideoReferences\n references={references}\n isLoaded={!referencesLoading}\n placement={placement}\n />\n </>\n )}\n {state === 'confirm' && (\n <>\n <Heading size={2}>Are you sure you want to delete this video?</Heading>\n <Text size={2}>This action is irreversible</Text>\n <Stack space={4} marginTop={4}>\n <Flex align=\"center\" as=\"label\">\n <Checkbox\n checked={deleteOnMux}\n onChange={() => setDeleteOnMux((prev) => !prev)}\n />\n <Text style={{margin: '0 10px'}}>Delete asset on Mux</Text>\n </Flex>\n <Flex align=\"center\" as=\"label\">\n <Checkbox disabled checked />\n <Text style={{margin: '0 10px'}}>Delete video from dataset</Text>\n </Flex>\n </Stack>\n </>\n )}\n {state === 'processing_deletion' && (\n <>\n <Heading size={2}>Deleting video...</Heading>\n <SpinnerBox />\n </>\n )}\n {state === 'error_deleting' && (\n <>\n <Heading size={2}>Something went wrong!</Heading>\n <Text size={2}>Try deleting the video again by clicking the button below</Text>\n </>\n )}\n </Stack>\n </Card>\n </Dialog>\n )\n}\n","import {createHookFromObservableFactory, DocumentStore, SanityDocument} from 'sanity'\n\nimport {SANITY_API_VERSION} from './useClient'\n\nconst useDocReferences = createHookFromObservableFactory<\n SanityDocument[],\n {\n documentStore: DocumentStore\n id: string\n }\n>(({documentStore, id}) => {\n return documentStore.listenQuery(\n /* groq */ '*[references($id)]{_id, _type, _rev, _updatedAt, _createdAt}',\n {id},\n {\n apiVersion: SANITY_API_VERSION,\n }\n )\n})\n\nexport default useDocReferences\n","/* eslint-disable */\n// From: https://stackoverflow.com/a/11486026/10433647\nexport default function formatSeconds(seconds: number): string {\n if (typeof seconds !== 'number' || Number.isNaN(seconds)) {\n return ''\n }\n // Hours, minutes and seconds\n const hrs = ~~(seconds / 3600)\n const mins = ~~((seconds % 3600) / 60)\n const secs = ~~seconds % 60\n\n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\n let ret = ''\n\n if (hrs > 0) {\n ret += '' + hrs + ':' + (mins < 10 ? '0' : '')\n }\n\n ret += '' + mins + ':' + (secs < 10 ? '0' : '')\n ret += '' + secs\n return ret\n}\n","import formatSeconds from './formatSeconds'\nimport {VideoAssetDocument} from './types'\n\nexport default function getVideoMetadata(doc: VideoAssetDocument) {\n const id = doc.assetId || doc._id || ''\n const date = doc.data?.created_at\n ? new Date(Number(doc.data.created_at) * 1000)\n : new Date(doc._createdAt || doc._updatedAt || Date.now())\n\n return {\n title: doc.filename || id.slice(0, 10),\n createdAt: date,\n duration: doc.data?.duration ? formatSeconds(doc.data?.duration) : undefined,\n aspect_ratio: doc.data?.aspect_ratio,\n max_stored_resolution: doc.data?.max_stored_resolution,\n max_stored_frame_rate: doc.data?.max_stored_frame_rate,\n }\n}\n","import {useToast} from '@sanity/ui'\nimport {useState} from 'react'\nimport {useDocumentStore} from 'sanity'\n\nimport {useClient} from '../../hooks/useClient'\nimport useDocReferences from '../../hooks/useDocReferences'\nimport getVideoMetadata from '../../util/getVideoMetadata'\nimport {PluginPlacement, VideoAssetDocument} from '../../util/types'\n\nexport interface VideoDetailsProps {\n placement: PluginPlacement\n closeDialog: () => void\n asset: VideoAssetDocument & {autoPlay?: boolean}\n}\n\nexport default function useVideoDetails(props: VideoDetailsProps) {\n const documentStore = useDocumentStore()\n const toast = useToast()\n const client = useClient()\n const [references, referencesLoading] = useDocReferences({\n documentStore,\n id: props.asset._id as string,\n })\n\n const [originalAsset, setOriginalAsset] = useState(() => props.asset)\n const [filename, setFilename] = useState(props.asset.filename)\n const modified = filename !== originalAsset.filename\n\n const displayInfo = getVideoMetadata({...props.asset, filename})\n\n const [state, setState] = useState<'deleting' | 'closing' | 'idle' | 'saving'>('idle')\n\n function handleClose() {\n if (state !== 'idle') return\n\n if (modified) {\n setState('closing')\n return\n }\n\n props.closeDialog()\n }\n\n function confirmClose(shouldClose: boolean) {\n if (state !== 'closing') return\n\n if (shouldClose) props.closeDialog()\n\n setState('idle')\n }\n\n async function saveChanges() {\n if (state !== 'idle') return\n setState('saving')\n\n try {\n await client.patch(props.asset._id).set({filename}).commit()\n setOriginalAsset((prev) => ({...prev, filename}))\n toast.push({\n title: 'Video title updated',\n description: `New title: ${filename}`,\n status: 'success',\n })\n props.closeDialog()\n } catch (error) {\n toast.push({\n title: 'Failed updating file name',\n status: 'error',\n description: typeof error === 'string' ? error : 'Please try again',\n })\n setFilename(originalAsset.filename)\n }\n\n setState('idle')\n }\n\n return {\n references,\n referencesLoading,\n modified,\n filename,\n setFilename,\n displayInfo,\n state,\n setState,\n handleClose,\n confirmClose,\n saveChanges,\n }\n}\n","import {\n CalendarIcon,\n CheckmarkIcon,\n ClockIcon,\n CropIcon,\n EditIcon,\n ErrorOutlineIcon,\n RevertIcon,\n SearchIcon,\n TrashIcon,\n} from '@sanity/icons'\nimport {\n Button,\n Card,\n Dialog,\n Flex,\n Heading,\n Spinner,\n Stack,\n Tab,\n TabList,\n TabPanel,\n Text,\n TextInput,\n} from '@sanity/ui'\nimport React, {useEffect, useState} from 'react'\n\nimport {DIALOGS_Z_INDEX} from '../../util/constants'\nimport FormField from '../FormField'\nimport IconInfo from '../IconInfo'\nimport {ResolutionIcon} from '../icons/Resolution'\nimport {StopWatchIcon} from '../icons/StopWatch'\nimport VideoPlayer from '../VideoPlayer'\nimport DeleteDialog from './DeleteDialog'\nimport useVideoDetails, {VideoDetailsProps} from './useVideoDetails'\nimport VideoReferences from './VideoReferences'\n\nconst AssetInput: React.FC<{\n label: string\n description?: string\n placeholder?: string\n value: string\n onInput: (e: React.FormEvent<HTMLInputElement>) => void\n disabled?: boolean\n}> = (props) => (\n <FormField title={props.label} description={props.description} inputId={props.label}>\n <TextInput\n id={props.label}\n value={props.value}\n placeholder={props.placeholder}\n onInput={props.onInput}\n disabled={props.disabled}\n />\n </FormField>\n)\n\nconst VideoDetails: React.FC<VideoDetailsProps> = (props) => {\n const [tab, setTab] = useState<'details' | 'references'>('details')\n const {\n displayInfo,\n filename,\n modified,\n references,\n referencesLoading,\n setFilename,\n state,\n setState,\n handleClose,\n confirmClose,\n saveChanges,\n } = useVideoDetails(props)\n\n const isSaving = state === 'saving'\n\n // Avoid layout shifts in large screens' 2-column dialog by setting their `minHeight` to the container's\n const [containerHeight, setContainerHeight] = useState<number | null>(null)\n const contentsRef = React.useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (!contentsRef.current || !('getBoundingClientRect' in contentsRef.current)) return\n\n setContainerHeight(contentsRef.current.getBoundingClientRect().height)\n }, [])\n\n return (\n <Dialog\n header={displayInfo.title}\n zOffset={DIALOGS_Z_INDEX}\n id=\"video-details-dialog\"\n onClose={handleClose}\n onClickOutside={handleClose}\n width={2}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={TrashIcon}\n fontSize={2}\n padding={3}\n mode=\"bleed\"\n text=\"Delete\"\n tone=\"critical\"\n onClick={() => setState('deleting')}\n disabled={isSaving}\n />\n {modified && (\n <Button\n icon={CheckmarkIcon}\n fontSize={2}\n padding={3}\n mode=\"ghost\"\n text=\"Save and close\"\n tone=\"positive\"\n onClick={saveChanges}\n iconRight={isSaving && Spinner}\n disabled={isSaving}\n />\n )}\n </Flex>\n </Card>\n }\n >\n {/* DELETION DIALOG */}\n {state === 'deleting' && (\n <DeleteDialog\n asset={props.asset}\n cancelDelete={() => setState('idle')}\n placement={props.placement}\n referencesLoading={referencesLoading}\n references={references}\n succeededDeleting={() => {\n props.closeDialog()\n }}\n />\n )}\n\n {/* CONFIRM CLOSING DIALOG */}\n {state === 'closing' && (\n <Dialog\n header={'You have unsaved changes'}\n zOffset={DIALOGS_Z_INDEX}\n id=\"closing-video-details-dialog\"\n onClose={() => confirmClose(false)}\n onClickOutside={() => confirmClose(false)}\n width={1}\n position=\"fixed\"\n footer={\n <Card padding={3}>\n <Flex justify=\"space-between\" align=\"center\">\n <Button\n icon={ErrorOutlineIcon}\n fontSize={2}\n padding={3}\n text=\"Discard changes\"\n tone=\"critical\"\n onClick={() => confirmClose(true)}\n />\n {modified && (\n <Button\n icon={RevertIcon}\n fontSize={2}\n padding={3}\n mode=\"ghost\"\n text=\"Keep editing\"\n tone=\"primary\"\n onClick={() => confirmClose(false)}\n />\n )}\n </Flex>\n </Card>\n }\n >\n <Card padding={5}>\n <Stack style={{textAlign: 'center'}} space={3}>\n <Heading size={2}>Unsaved changes will be lost</Heading>\n <Text size={2}>Are you sure you want to discard them?</Text>\n </Stack>\n </Card>\n </Dialog>\n )}\n <Card\n padding={4}\n sizing=\"border\"\n style={{\n containerType: 'inline-size',\n }}\n >\n <Flex\n sizing=\"border\"\n gap={4}\n direction={['column', 'column', 'row']}\n align=\"flex-start\"\n ref={contentsRef}\n style={\n typeof containerHeight === 'number'\n ? {\n minHeight: containerHeight,\n }\n : undefined\n }\n >\n <Stack space={4} flex={1} sizing=\"border\">\n <VideoPlayer asset={props.asset} autoPlay={props.asset.autoPlay || false} />\n </Stack>\n <Stack space={4} flex={1} sizing=\"border\">\n <TabList space={2}>\n <Tab\n aria-controls=\"details-panel\"\n icon={EditIcon}\n id=\"details-tab\"\n label=\"Details\"\n onClick={() => setTab('details')}\n selected={tab === 'details'}\n />\n <Tab\n aria-controls=\"references-panel\"\n icon={SearchIcon}\n id=\"references-tab\"\n label={`Used by ${references ? `(${references.length})` : ''}`}\n onClick={() => setTab('references')}\n selected={tab === 'references'}\n />\n </TabList>\n <TabPanel aria-labelledby=\"details-tab\" id=\"details-panel\" hidden={tab !== 'details'}>\n <Stack space={4}>\n <AssetInput\n label=\"Video title or file name\"\n description=\"Not visible to users. Useful for finding videos later.\"\n value={filename || ''}\n onInput={(e) => setFilename(e.currentTarget.value)}\n disabled={state !== 'idle'}\n />\n <Stack space={3}>\n {displayInfo?.duration && (\n <IconInfo\n text={`Duration: ${displayInfo.duration}`}\n icon={ClockIcon}\n size={2}\n />\n )}\n {displayInfo?.max_stored_resolution && (\n <IconInfo\n text={`Max Resolution: ${displayInfo.max_stored_resolution}`}\n icon={ResolutionIcon}\n size={2}\n />\n )}\n {displayInfo?.max_stored_frame_rate && (\n <IconInfo\n text={`Frame rate: ${displayInfo.max_stored_frame_rate}`}\n icon={StopWatchIcon}\n size={2}\n />\n )}\n {displayInfo?.aspect_ratio && (\n <IconInfo\n text={`Aspect Ratio: ${displayInfo.aspect_ratio}`}\n icon={CropIcon}\n size={2}\n />\n )}\n <IconInfo\n text={`Uploaded on: ${displayInfo.createdAt.toLocaleDateString('en', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n })}`}\n icon={CalendarIcon}\n size={2}\n />\n </Stack>\n </Stack>\n </TabPanel>\n <TabPanel\n aria-labelledby=\"references-tab\"\n id=\"references-panel\"\n hidden={tab !== 'references'}\n >\n <VideoReferences\n references={references}\n isLoaded={!referencesLoading}\n placement={props.placement}\n />\n </TabPanel>\n </Stack>\n </Flex>\n </Card>\n </Dialog>\n )\n}\n\nexport default VideoDetails\n","import {CalendarIcon, ClockIcon} from '@sanity/icons'\nimport {Inline, Stack, Text} from '@sanity/ui'\nimport React from 'react'\n\nimport getVideoMetadata from '../util/getVideoMetadata'\nimport {VideoAssetDocument} from '../util/types'\nimport IconInfo from './IconInfo'\n\nconst VideoMetadata = (props: {asset: VideoAssetDocument}) => {\n if (!props.asset) {\n return null\n }\n\n const displayInfo = getVideoMetadata(props.asset)\n return (\n <Stack space={2}>\n {displayInfo.title && (\n <Text\n size={1}\n weight=\"semibold\"\n style={{\n wordWrap: 'break-word',\n }}\n >\n {displayInfo.title}\n </Text>\n )}\n <Inline space={3}>\n {displayInfo?.duration && (\n <IconInfo text={displayInfo.duration} icon={ClockIcon} size={1} muted />\n )}\n <IconInfo\n text={displayInfo.createdAt.toISOString().split('T')[0]}\n icon={CalendarIcon}\n size={1}\n muted\n />\n </Inline>\n </Stack>\n )\n}\n\nexport default VideoMetadata\n","import type {RefObject} from 'react'\nimport {useEffect, useRef, useState} from 'react'\n\ntype IntersectionOptions = {\n root?: Element | null\n rootMargin?: string\n threshold?: number\n onChange?: (inView: boolean) => void\n}\n\nfunction useInView<RefElement = HTMLElement>(\n options: IntersectionOptions = {}\n): {inView: boolean; ref: RefObject<RefElement>} {\n const [inView, setInView] = useState(false)\n const ref = useRef(null)\n\n useEffect(() => {\n if (!ref.current) return\n\n const observer = new IntersectionObserver(([entry], obs) => {\n // ==== from react-intersection-observer ====\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const nowInView =\n entry.isIntersecting &&\n obs.thresholds.some((threshold) => entry.intersectionRatio >= threshold)\n\n // Update our state when observer callback fires\n setInView(nowInView)\n options?.onChange?.(nowInView)\n }, options)\n\n const toObserve = ref.current\n observer.observe(toObserve)\n\n // eslint-disable-next-line\n return () => {\n if (toObserve) observer.unobserve(toObserve)\n }\n }, [options])\n\n return {inView, ref}\n}\n\nexport default useInView\n","import type {SanityClient} from 'sanity'\n\nimport {generateJwt} from './generateJwt'\nimport {getPlaybackId} from './getPlaybackId'\nimport {getPlaybackPolicy} from './getPlaybackPolicy'\nimport type {AnimatedThumbnailOptions, MuxAnimatedThumbnailUrl, VideoAssetDocument} from './types'\n\nexport interface AnimatedPosterSrcOptions extends AnimatedThumbnailOptions {\n asset: Partial<VideoAssetDocument>\n client: SanityClient\n}\n\nexport function getAnimatedPosterSrc({\n asset,\n client,\n height,\n width,\n start = asset.thumbTime ? Math.max(0, asset.thumbTime - 2.5) : 0,\n end = start + 5,\n fps = 15,\n}: AnimatedPosterSrcOptions): MuxAnimatedThumbnailUrl {\n const params = {height, width, start, end, fps}\n const playbackId = getPlaybackId(asset)\n\n let searchParams = new URLSearchParams(\n JSON.parse(JSON.stringify(params, (_, v) => v ?? undefined))\n )\n if (getPlaybackPolicy(asset) === 'signed') {\n const token = generateJwt(client, playbackId, 'g', params)\n searchParams = new URLSearchParams({token})\n }\n\n return `https://image.mux.com/${playbackId}/animated.gif?${searchParams}`\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Card, CardTone, Stack, Text} from '@sanity/ui'\nimport React, {useMemo, useState} from 'react'\nimport styled from 'styled-components'\n\nimport {useClient} from '../hooks/useClient'\nimport useInView from '../hooks/useInView'\nimport {THUMBNAIL_ASPECT_RATIO} from '../util/constants'\nimport {getAnimatedPosterSrc} from '../util/getAnimatedPosterSrc'\nimport {VideoAssetDocument} from '../util/types'\nimport SpinnerBox from './SpinnerBox'\n\nconst Image = styled.img`\n transition: opacity 0.175s ease-out 0s;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center center;\n`\n\ntype ImageStatus = 'loading' | 'error' | 'loaded'\n\nconst STATUS_TO_TONE: Record<ImageStatus, CardTone> = {\n loading: 'transparent',\n error: 'critical',\n loaded: 'default',\n}\n\nexport default function VideoThumbnail({\n asset,\n width = 250,\n}: {\n asset: Partial<VideoAssetDocument>\n width?: number\n}) {\n const {inView, ref} = useInView()\n\n const [status, setStatus] = useState<ImageStatus>('loading')\n const client = useClient()\n\n const animatedSrc = useMemo(() => {\n try {\n return getAnimatedPosterSrc({asset, client, width})\n } catch {\n if (status !== 'error') setStatus('error')\n return undefined\n }\n }, [asset, client, width, status, setStatus])\n\n function handleLoad() {\n setStatus('loaded')\n }\n\n function handleError() {\n setStatus('error')\n }\n\n return (\n <Card\n style={{\n aspectRatio: THUMBNAIL_ASPECT_RATIO,\n position: 'relative',\n }}\n border\n radius={2}\n ref={ref as any}\n tone={STATUS_TO_TONE[status]}\n >\n {inView ? (\n <>\n {status === 'loading' && <SpinnerBox />}\n {status === 'error' && (\n <Stack\n space={4}\n style={{\n position: 'absolute',\n width: '100%',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n justifyItems: 'center',\n }}\n >\n <Text size={4} muted>\n <ErrorOutlineIcon style={{fontSize: '1.75em'}} />\n </Text>\n <Text muted align=\"center\">\n Failed loading thumbnail\n </Text>\n </Stack>\n )}\n <Image\n src={animatedSrc}\n alt={`Preview for video ${asset.filename || asset.assetId}`}\n onLoad={handleLoad}\n onError={handleError}\n style={{\n opacity: status === 'loaded' ? 1 : 0,\n }}\n />\n </>\n ) : null}\n </Card>\n )\n}\n","import {CheckmarkIcon, EditIcon, LockIcon, PlayIcon} from '@sanity/icons'\nimport {Button, Card, Stack, Text, Tooltip} from '@sanity/ui'\nimport React, {useState} from 'react'\nimport styled from 'styled-components'\n\nimport {THUMBNAIL_ASPECT_RATIO} from '../util/constants'\nimport {getPlaybackPolicy} from '../util/getPlaybackPolicy'\nimport {VideoAssetDocument} from '../util/types'\nimport IconInfo from './IconInfo'\nimport VideoMetadata from './VideoMetadata'\nimport VideoPlayer from './VideoPlayer'\nimport VideoThumbnail from './VideoThumbnail'\n\nconst PlayButton = styled.button`\n display: block;\n padding: 0;\n margin: 0;\n border: none;\n border-radius: 0.1875rem;\n position: relative;\n cursor: pointer;\n\n &::after {\n content: '';\n background: var(--card-fg-color);\n opacity: 0;\n display: block;\n position: absolute;\n inset: 0;\n z-index: 10;\n transition: 0.15s ease-out;\n border-radius: inherit;\n }\n\n > div[data-play] {\n z-index: 11;\n opacity: 0;\n transition: 0.15s 0.05s ease-out;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n width: auto;\n height: 30%;\n aspect-ratio: 1;\n border-radius: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n > svg {\n display: block;\n width: 70%;\n height: auto;\n // Visual balance to center-align the icon\n transform: translateX(5%);\n }\n }\n\n &:hover,\n &:focus {\n &::after {\n opacity: 0.3;\n }\n > div[data-play] {\n opacity: 1;\n }\n }\n`\n\nexport default function VideoInBrowser({\n onSelect,\n onEdit,\n asset,\n}: {\n onSelect?: (asset: VideoAssetDocument) => void\n onEdit?: (asset: VideoAssetDocument) => void\n asset: VideoAssetDocument\n}) {\n const [renderVideo, setRenderVideo] = useState(false)\n const select = React.useCallback(() => onSelect?.(asset), [onSelect, asset])\n const edit = React.useCallback(() => onEdit?.(asset), [onEdit, asset])\n\n if (!asset) {\n return null\n }\n\n const playbackPolicy = getPlaybackPolicy(asset)\n\n return (\n <Card\n border\n padding={2}\n sizing=\"border\"\n radius={2}\n style={{\n position: 'relative',\n }}\n >\n {playbackPolicy === 'signed' && (\n <Tooltip\n content={\n <Card padding={2} radius={2}>\n <IconInfo icon={LockIcon} text=\"Signed playback policy\" size={2} />\n </Card>\n }\n placement=\"right\"\n fallbackPlacements={['top', 'bottom']}\n portal\n >\n <Card\n tone=\"caution\"\n style={{\n borderRadius: '100%',\n position: 'absolute',\n left: '1em',\n top: '1em',\n zIndex: 10,\n }}\n padding={2}\n border\n >\n <Text muted size={1}>\n <LockIcon />\n </Text>\n </Card>\n </Tooltip>\n )}\n <Stack\n space={3}\n height=\"fill\"\n style={{\n gridTemplateRows: 'min-content min-content 1fr',\n }}\n >\n {renderVideo ? (\n <VideoPlayer asset={asset} autoPlay forceAspectRatio={THUMBNAIL_ASPECT_RATIO} />\n ) : (\n <PlayButton onClick={() => setRenderVideo(true)}>\n <div data-play>\n <PlayIcon />\n </div>\n <VideoThumbnail asset={asset} />\n </PlayButton>\n )}\n <VideoMetadata asset={asset} />\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'flex-end',\n justifyContent: 'flex-start',\n gap: '.35rem',\n }}\n >\n {onSelect && (\n <Button\n icon={CheckmarkIcon}\n fontSize={2}\n padding={2}\n mode=\"ghost\"\n text=\"Select\"\n style={{flex: 1}}\n tone=\"positive\"\n onClick={select}\n />\n )}\n <Button\n icon={EditIcon}\n fontSize={2}\n padding={2}\n mode=\"ghost\"\n text=\"Details\"\n style={{flex: 1}}\n onClick={edit}\n />\n </div>\n </Stack>\n </Card>\n )\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Card, Flex, Grid, Label, Stack, Text, TextInput} from '@sanity/ui'\nimport React from 'react'\n\nimport useAssets from '../hooks/useAssets'\nimport type {VideoAssetDocument} from '../util/types'\nimport {SelectSortOptions} from './SelectSortOptions'\nimport SpinnerBox from './SpinnerBox'\nimport {VideoDetailsProps} from './VideoDetails/useVideoDetails'\nimport VideoDetails from './VideoDetails/VideoDetails'\nimport VideoInBrowser from './VideoInBrowser'\n\nexport interface VideosBrowserProps {\n onSelect?: (asset: VideoAssetDocument) => void\n}\n\nexport default function VideosBrowser({onSelect}: VideosBrowserProps) {\n const {assets, isLoading, searchQuery, setSearchQuery, setSort, sort} = useAssets()\n const [editedAsset, setEditedAsset] = React.useState<VideoDetailsProps['asset'] | null>(null)\n const freshEditedAsset = React.useMemo(\n () => assets.find((a) => a._id === editedAsset?._id) || editedAsset,\n [editedAsset, assets]\n )\n\n return (\n <>\n <Stack padding={4} space={4} style={{minHeight: '50vh'}}>\n <Flex justify=\"space-between\" align=\"center\">\n <Flex align=\"center\" gap={3}>\n <TextInput\n value={searchQuery}\n icon={SearchIcon}\n onInput={(e: React.FormEvent<HTMLInputElement>) =>\n setSearchQuery(e.currentTarget.value)\n }\n placeholder=\"Search videos\"\n />\n <SelectSortOptions setSort={setSort} sort={sort} />\n </Flex>\n </Flex>\n <Stack space={3}>\n {assets?.length > 0 && (\n <Label muted>\n {assets.length} video{assets.length > 1 ? 's' : null}{' '}\n {searchQuery ? `matching \"${searchQuery}\"` : 'found'}\n </Label>\n )}\n <Grid\n gap={2}\n style={{\n gridTemplateColumns: 'repeat(auto-fill, minmax(250px, 1fr))',\n }}\n >\n {assets.map((asset) => (\n <VideoInBrowser\n key={asset._id}\n asset={asset}\n onEdit={setEditedAsset}\n onSelect={onSelect}\n />\n ))}\n </Grid>\n </Stack>\n {isLoading && <SpinnerBox />}\n\n {!isLoading && assets.length === 0 && (\n <Card padding={4} marginY={4} border radius={2} tone=\"transparent\">\n <Text align=\"center\" muted size={3}>\n {searchQuery ? `No videos found for \"${searchQuery}\"` : 'No videos in this dataset'}\n </Text>\n </Card>\n )}\n </Stack>\n {freshEditedAsset && (\n <VideoDetails\n closeDialog={() => setEditedAsset(null)}\n asset={freshEditedAsset}\n placement={onSelect ? 'input' : 'tool'}\n />\n )}\n </>\n )\n}\n","import React from 'react'\nimport {Tool} from 'sanity'\n\nimport {Config} from '../util/types'\nimport ToolIcon from './icons/ToolIcon'\nimport VideosBrowser from './VideosBrowser'\n\nconst StudioTool: React.FC<Config> = () => {\n return <VideosBrowser />\n}\n\nexport default function createStudioTool(config: Config): Tool {\n const toolConfig = typeof config.tool === 'object' ? config.tool : {}\n return {\n name: 'mux',\n title: toolConfig.title || 'Videos',\n component: (props: any) => <StudioTool {...config} {...props} />,\n icon: toolConfig.icon || ToolIcon,\n }\n}\n","import {isReference} from 'sanity'\nimport {useDocumentValues} from 'sanity'\n\nimport type {Reference, VideoAssetDocument} from '../util/types'\n\nconst path = ['assetId', 'data', 'playbackId', 'status', 'thumbTime', 'filename']\nexport const useAssetDocumentValues = (asset: Reference | null | undefined) =>\n useDocumentValues<VideoAssetDocument | null | undefined>(\n isReference(asset) ? asset._ref! : '',\n path\n )\n","// Handy little state machine to simplify managing which root level dialog to open\n\nimport {useState} from 'react'\n\nexport type DialogState = 'secrets' | 'select-video' | 'edit-thumbnail' | false\n\nexport function useDialogState() {\n return useState<DialogState>(false)\n}\n\nexport type SetDialogState = ReturnType<typeof useDialogState>[1]\n","import {useMemo} from 'react'\nimport {useDataset, useProjectId} from 'sanity'\nimport useSWR from 'swr'\n\nimport {useClient} from '../hooks/useClient'\nimport type {MuxAsset, VideoAssetDocument} from '../util/types'\n\n// Poll MUX if it's preparing the main document or its own static renditions\nexport const useMuxPolling = (asset?: VideoAssetDocument) => {\n const client = useClient()\n const projectId = useProjectId()\n const dataset = useDataset()\n const shouldFetch = useMemo(\n () =>\n !!asset?.assetId &&\n (asset?.status === 'preparing' || asset?.data?.static_renditions?.status === 'preparing'),\n [asset?.assetId, asset?.data?.static_renditions?.status, asset?.status]\n )\n return useSWR(\n shouldFetch ? `/${projectId}/addons/mux/assets/${dataset}/data/${asset?.assetId}` : null,\n async () => {\n const {data} = await client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${asset!.assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n client.patch(asset!._id!).set({status: data.status, data}).commit({returnDocuments: false})\n },\n {refreshInterval: 2000, refreshWhenHidden: true, dedupingInterval: 1000}\n )\n}\n","import {useMemo} from 'react'\nimport {useDocumentValues} from 'sanity'\n\nimport {muxSecretsDocumentId} from '../util/constants'\nimport type {Secrets} from '../util/types'\n\nconst path = ['token', 'secretKey', 'enableSignedUrls', 'signingKeyId', 'signingKeyPrivate']\nexport const useSecretsDocumentValues = () => {\n const {error, isLoading, value} = useDocumentValues<Partial<Secrets> | null | undefined>(\n muxSecretsDocumentId,\n path\n )\n const cache = useMemo(() => {\n const exists = Boolean(value)\n const secrets: Secrets = {\n token: value?.token || null,\n secretKey: value?.secretKey || null,\n enableSignedUrls: value?.enableSignedUrls || false,\n signingKeyId: value?.signingKeyId || null,\n signingKeyPrivate: value?.signingKeyPrivate || null,\n }\n return {\n isInitialSetup: !exists,\n needsSetup: !secrets?.token || !secrets?.secretKey,\n secrets,\n }\n }, [value])\n\n return {error, isLoading, value: cache}\n}\n","import {UpChunk} from '@mux/upchunk'\nimport {Observable} from 'rxjs'\n\nexport function createUpChunkObservable(uuid: string, uploadUrl: string, source: File) {\n return new Observable((subscriber) => {\n const upchunk = UpChunk.createUpload({\n endpoint: uploadUrl,\n file: source,\n dynamicChunkSize: true, // changes the chunk size based on network speeds\n })\n\n const successHandler = () => {\n subscriber.next({\n type: 'success',\n id: uuid,\n })\n subscriber.complete()\n }\n\n const errorHandler = (data: CustomEvent) => subscriber.error(new Error(data.detail.message))\n\n const progressHandler = (data: CustomEvent) => {\n return subscriber.next({type: 'progress', percent: data.detail})\n }\n\n const offlineHandler = () => {\n upchunk.pause()\n subscriber.next({\n type: 'pause',\n id: uuid,\n })\n }\n\n const onlineHandler = () => {\n upchunk.resume()\n subscriber.next({\n type: 'resume',\n id: uuid,\n })\n }\n\n upchunk.on('success', successHandler)\n upchunk.on('error', errorHandler)\n upchunk.on('progress', progressHandler)\n upchunk.on('offline', offlineHandler)\n upchunk.on('online', onlineHandler)\n\n return () => upchunk.abort()\n })\n}\n","import {defer} from 'rxjs'\nimport type {SanityClient} from 'sanity'\n\ninterface SecretsDocument {\n _id: 'secrets.mux'\n _type: 'mux.apiKey'\n token: string\n secretKey: string\n enableSignedUrls: boolean\n signingKeyId: string\n signingKeyPrivate: string\n}\n// eslint-disable-next-line max-params\nexport function saveSecrets(\n client: SanityClient,\n token: string,\n secretKey: string,\n enableSignedUrls: boolean,\n signingKeyId: string,\n signingKeyPrivate: string\n): Promise<SecretsDocument> {\n const doc: SecretsDocument = {\n _id: 'secrets.mux',\n _type: 'mux.apiKey',\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n\n return client.createOrReplace(doc)\n}\n\nexport function createSigningKeys(client: SanityClient) {\n const {dataset} = client.config()\n return client.request<{\n data: {private_key: string; id: string; created_at: string}\n }>({\n url: `/addons/mux/signing-keys/${dataset}`,\n withCredentials: true,\n method: 'POST',\n })\n}\n\nexport function testSecrets(client: SanityClient) {\n const {dataset} = client.config()\n return client.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport async function haveValidSigningKeys(\n client: SanityClient,\n signingKeyId: string,\n signingKeyPrivate: string\n) {\n if (!(signingKeyId && signingKeyPrivate)) {\n return false\n }\n\n const {dataset} = client.config()\n try {\n const res = await client.request<{data: {id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}/${signingKeyId}`,\n withCredentials: true,\n method: 'GET',\n })\n //\n // if this signing key is valid it will return { data: { id: 'xxxx' } }\n //\n return !!(res.data && res.data.id)\n } catch (e) {\n console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid')\n return false\n }\n}\n\nexport function testSecretsObservable(client: SanityClient) {\n const {dataset} = client.config()\n return defer(() =>\n client.observable.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n )\n}\n","/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {concat, defer, from, type Observable, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\nimport type {SanityClient} from 'sanity'\n\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\nimport type {Config, MuxAsset} from '../util/types'\nimport {getAsset} from './assets'\nimport {testSecretsObservable} from './secrets'\n\nexport function cancelUpload(client: SanityClient, uuid: string) {\n return client.observable.request({\n url: `/addons/mux/uploads/${client.config().dataset}/${uuid}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function uploadUrl(\n config: Config,\n client: SanityClient,\n url: string,\n options: {enableSignedUrls?: boolean} = {}\n) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable(client).pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const muxBody = {\n input: validUrl,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n mp4_support: config.mp4_support,\n }\n const query = {\n muxBody: JSON.stringify(muxBody),\n filename: validUrl.split('/').slice(-1)[0],\n }\n\n const dataset = client.config().dataset\n return defer(() =>\n client.observable.request({\n url: `/addons/mux/assets/${dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n query,\n })\n ).pipe(\n mergeMap((result) => {\n const asset =\n (result && result.results && result.results[0] && result.results[0].document) ||\n null\n\n if (!asset) {\n return throwError(new Error('No asset document returned'))\n }\n return of({type: 'success', id: uuid, asset})\n })\n )\n })\n )\n )\n })\n )\n}\n\nexport function uploadFile(\n config: Config,\n client: SanityClient,\n file: File,\n options: {enableSignedUrls?: boolean} = {}\n) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable(client).pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const body = {\n mp4_support: config.mp4_support,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n }\n\n return concat(\n of({type: 'uuid', uuid}),\n defer(() =>\n client.observable.request<{\n sanityAssetId: string\n upload: {\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: 'waiting'\n timeout: number\n url: string\n }\n }>({\n url: `/addons/mux/uploads/${client.config().dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n body,\n })\n ).pipe(\n mergeMap((result) => {\n return createUpChunkObservable(uuid, result.upload.url, file).pipe(\n // eslint-disable-next-line no-warning-comments\n // @TODO type the observable events\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((event: any) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(client, uuid)).pipe(\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((doc) => of({...event, asset: doc}))\n )\n }),\n // eslint-disable-next-line max-nested-callbacks\n catchError((err) => {\n // Delete asset document\n return cancelUpload(client, uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\ntype UploadResponse = {\n data: {\n asset_id: string\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: string\n timeout: number\n }\n}\nexport function getUpload(client: SanityClient, assetId: string) {\n const {dataset} = client.config()\n return client.request<UploadResponse>({\n url: `/addons/mux/uploads/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nfunction pollUpload(client: SanityClient, uuid: string): Promise<UploadResponse> {\n const maxTries = 10\n let pollInterval: number\n let tries = 0\n let assetId: string\n let upload: UploadResponse\n return new Promise((resolve, reject) => {\n pollInterval = (setInterval as typeof window.setInterval)(async () => {\n try {\n upload = await getUpload(client, uuid)\n } catch (err) {\n reject(err)\n return\n }\n assetId = upload && upload.data && upload.data.asset_id\n if (assetId) {\n clearInterval(pollInterval)\n resolve(upload)\n }\n if (tries > maxTries) {\n clearInterval(pollInterval)\n reject(new Error('Upload did not finish'))\n }\n tries++\n }, 2000)\n })\n}\n\nasync function updateAssetDocumentFromUpload(client: SanityClient, uuid: string) {\n let upload: UploadResponse\n let asset: {data: MuxAsset}\n try {\n upload = await pollUpload(client, uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(client, upload.data.asset_id)\n } catch (err) {\n return Promise.reject(err)\n }\n\n const doc = {\n _id: uuid,\n _type: 'mux.videoAsset',\n status: asset.data.status,\n data: asset.data,\n assetId: asset.data.id,\n playbackId: asset.data.playback_ids[0].id,\n uploadId: upload.data.id,\n }\n return client.createOrReplace(doc).then(() => {\n return doc\n })\n}\n\nfunction testFile(file: File) {\n if (typeof window !== 'undefined' && file instanceof window.File) {\n const fileOptions = optionsFromFile({}, file)\n return of(fileOptions)\n }\n return throwError(new Error('Invalid file'))\n}\n\nfunction testUrl(url: string): Observable<string> {\n const error = new Error('Invalid URL')\n if (typeof url !== 'string') {\n return throwError(error)\n }\n let parsed\n try {\n parsed = new URL(url)\n } catch (err) {\n return throwError(error)\n }\n if (parsed && !parsed.protocol.match(/http:|https:/)) {\n return throwError(error)\n }\n return of(url)\n}\n\nfunction optionsFromFile(opts: {preserveFilename?: boolean}, file: File) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n return {\n name: opts.preserveFilename === false ? undefined : file.name,\n type: file.type,\n }\n}\n","/**\n * Utilities for extracting files from dataTransfer in a predictable cross-browser fashion.\n * Also recursively extracts files from a directory\n * Inspired by https://github.com/component/normalized-upload\n */\n\nexport function extractDroppedFiles(dataTransfer: DataTransfer) {\n const files = Array.from(dataTransfer.files || [])\n const items = Array.from(dataTransfer.items || [])\n if (files && files.length > 0) {\n return Promise.resolve(files)\n }\n return normalizeItems(items).then((arr) => arr.flat())\n}\n\nfunction normalizeItems(items: DataTransferItem[]) {\n return Promise.all(\n items.map((item) => {\n // directory\n if (item.kind === 'file' && item.webkitGetAsEntry) {\n let entry: FileSystemEntry | File[] | null\n // Edge throws\n try {\n entry = item.webkitGetAsEntry()\n } catch (err) {\n return [item.getAsFile()]\n }\n if (!entry) {\n return []\n }\n return entry.isDirectory ? walk(entry) : [item.getAsFile()]\n }\n\n // file\n if (item.kind === 'file') {\n const file = item.getAsFile()\n return Promise.resolve(file ? [file] : [])\n }\n\n // others\n return new Promise((resolve) => item.getAsString(resolve)).then((str?: any) =>\n str ? [new File([str], 'unknown.txt', {type: item.type})] : []\n )\n })\n )\n}\n\nfunction isFile(entry: FileSystemEntry): entry is FileSystemFileEntry {\n return entry.isFile\n}\nfunction isDirectory(entry: FileSystemEntry): entry is FileSystemDirectoryEntry {\n return entry.isDirectory\n}\n\nfunction walk(entry: FileSystemEntry): any {\n if (isFile(entry)) {\n return new Promise((resolve) => entry.file(resolve)).then((file) => [file])\n }\n\n if (isDirectory(entry)) {\n const dir = entry.createReader()\n return new Promise<any>((resolve) => dir.readEntries(resolve))\n .then((entries: FileSystemEntry[]) => entries.filter((entr) => !entr.name.startsWith('.')))\n .then((entries) => Promise.all(entries.map(walk)).then((arr) => arr.flat()))\n }\n return Promise.resolve([])\n}\n","import React, {useCallback} from 'react'\nimport {PatchEvent, set, setIfMissing, unset} from 'sanity'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport VideosBrowser, {type VideosBrowserProps} from './VideosBrowser'\n\nexport interface Props extends Pick<MuxInputProps, 'onChange'> {\n asset?: VideoAssetDocument | null | undefined\n setDialogState: SetDialogState\n}\n\nexport default function SelectAssets({asset: selectedAsset, onChange, setDialogState}: Props) {\n const handleSelect = useCallback<Required<VideosBrowserProps>['onSelect']>(\n (chosenAsset) => {\n if (!chosenAsset?._id) {\n onChange(PatchEvent.from([unset(['asset'])]))\n }\n if (chosenAsset._id !== selectedAsset?._id) {\n onChange(\n PatchEvent.from([\n setIfMissing({asset: {}}),\n set({_type: 'reference', _weak: true, _ref: chosenAsset._id}, ['asset']),\n ])\n )\n }\n setDialogState(false)\n },\n [onChange, setDialogState, selectedAsset]\n )\n\n return <VideosBrowser onSelect={handleSelect} />\n}\n","import {Dialog} from '@sanity/ui'\nimport React, {useCallback, useId} from 'react'\nimport styled from 'styled-components'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport SelectAsset, {type Props as SelectAssetProps} from './SelectAsset'\n\n/** To prevent Content Layout Shift (CLS), ensure that the dialog always occupies the entire available height. */\nconst StyledDialog = styled(Dialog)`\n > div[data-ui='DialogCard'] > div[data-ui='Card'] {\n height: 100%;\n }\n`\n\nexport default function InputBrowser({\n setDialogState,\n asset,\n onChange,\n}: Pick<SelectAssetProps, 'onChange' | 'asset'> & {\n setDialogState: SetDialogState\n}) {\n const id = `InputBrowser${useId()}`\n const handleClose = useCallback(() => setDialogState(false), [setDialogState])\n return (\n <StyledDialog\n __unstable_autoFocus\n header=\"Select video\"\n id={id}\n onClose={handleClose}\n width={2}\n >\n <SelectAsset asset={asset} onChange={onChange} setDialogState={setDialogState} />\n </StyledDialog>\n )\n}\n","import {useCallback} from 'react'\nimport {PatchEvent, unset} from 'sanity'\n\nimport {deleteAssetOnMux} from '../actions/assets'\nimport {useClient} from '../hooks/useClient'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\n\nexport const useCancelUpload = (asset: VideoAssetDocument, onChange: MuxInputProps['onChange']) => {\n const client = useClient()\n return useCallback(() => {\n if (!asset) {\n return\n }\n onChange(PatchEvent.from(unset()))\n if (asset.assetId) {\n deleteAssetOnMux(client, asset.assetId)\n }\n if (asset._id) {\n client.delete(asset._id)\n }\n }, [asset, client, onChange])\n}\n","import {useState} from 'react'\nimport styled from 'styled-components'\n\nimport {useClient} from '../hooks/useClient'\nimport {getStoryboardSrc} from '../util/getStoryboardSrc'\nimport type {VideoAssetDocument} from '../util/types'\n\nexport const StyledCenterControls = styled.div`\n && {\n --media-background-color: transparent;\n --media-button-icon-width: 100%;\n --media-button-icon-height: auto;\n pointer-events: none;\n width: 100%;\n display: flex;\n flex-flow: row;\n align-items: center;\n justify-content: center;\n media-play-button {\n --media-control-background: transparent;\n --media-control-hover-background: transparent;\n padding: 0;\n width: max(27px, min(9%, 90px));\n }\n }\n`\n\nexport const TopControls = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n justify-content: flex-end;\n button {\n height: auto;\n }\n`\n\nexport interface PosterImageProps {\n asset: VideoAssetDocument\n}\nexport interface ThumbnailsMetadataTrackProps {\n asset: VideoAssetDocument\n}\nexport function ThumbnailsMetadataTrack({asset}: ThumbnailsMetadataTrackProps) {\n const client = useClient()\n // Why useState instead of useMemo? Because we really really only want to run it exactly once and useMemo doesn't make that guarantee\n const [src] = useState<string>(() => getStoryboardSrc({asset, client}))\n\n return <track label=\"thumbnails\" default kind=\"metadata\" src={src} />\n}\n","// Lifted from sanity/form/inputs/files/common/UploadProgress\n\nimport {Button, Card, Code, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport React from 'react'\nimport {LinearProgress} from 'sanity'\nimport styled from 'styled-components'\n\nexport const CardWrapper = styled(Card)`\n min-height: 82px;\n box-sizing: border-box;\n`\n\nexport const FlexWrapper = styled(Flex)`\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\nexport const LeftSection = styled(Stack)`\n position: relative;\n width: 60%;\n`\n\nexport const CodeWrapper = styled(Code)`\n position: relative;\n width: 100%;\n\n code {\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n max-width: 200px;\n }\n`\n\nexport const UploadProgress = ({\n progress = 100,\n onCancel,\n filename,\n text = 'Uploading',\n}: {\n progress: number\n filename?: React.ReactNode\n onCancel?: React.MouseEventHandler<HTMLButtonElement>\n text?: React.ReactNode\n}) => {\n return (\n <CardWrapper tone=\"primary\" padding={4} border height=\"fill\">\n <FlexWrapper align=\"center\" justify=\"space-between\" height=\"fill\" direction=\"row\" gap={2}>\n <LeftSection>\n <Flex justify=\"center\" gap={[3, 3, 2, 2]} direction={['column', 'column', 'row']}>\n <Text size={1}>\n <Inline space={2}>\n {text}\n <CodeWrapper size={1}>{filename ? filename : '...'}</CodeWrapper>\n </Inline>\n </Text>\n </Flex>\n\n <Card marginTop={3} radius={5} shadow={1}>\n <LinearProgress value={progress} />\n </Card>\n </LeftSection>\n\n {onCancel ? (\n <Button\n fontSize={2}\n text=\"Cancel upload\"\n mode=\"ghost\"\n tone=\"critical\"\n onClick={onCancel}\n />\n ) : null}\n </FlexWrapper>\n </CardWrapper>\n )\n}\n","import {Card, Text} from '@sanity/ui'\nimport React, {useEffect, useMemo, useRef} from 'react'\n\nimport {useCancelUpload} from '../hooks/useCancelUpload'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport {TopControls} from './Player.styled'\nimport {UploadProgress} from './UploadProgress'\nimport VideoPlayer from './VideoPlayer'\n\ninterface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n buttons?: React.ReactNode\n asset: VideoAssetDocument\n}\n\nconst Player = ({asset, buttons, readOnly, onChange}: Props) => {\n const isLoading = useMemo<boolean | string>(() => {\n if (asset?.status === 'preparing') {\n return 'Preparing the video'\n }\n if (asset?.status === 'waiting_for_upload') {\n return 'Waiting for upload to start'\n }\n if (asset?.status === 'waiting') {\n return 'Processing upload'\n }\n if (asset?.status === 'ready') {\n return false\n }\n if (typeof asset?.status === 'undefined') {\n return false\n }\n\n return true\n }, [asset])\n const isPreparingStaticRenditions = useMemo<boolean>(() => {\n if (asset?.data?.static_renditions?.status === 'preparing') {\n return true\n }\n if (asset?.data?.static_renditions?.status === 'ready') {\n return false\n }\n return false\n }, [asset?.data?.static_renditions?.status])\n const playRef = useRef<HTMLDivElement>(null)\n const muteRef = useRef<HTMLDivElement>(null)\n const handleCancelUpload = useCancelUpload(asset, onChange)\n\n useEffect(() => {\n const style = document.createElement('style')\n style.innerHTML = 'button svg { vertical-align: middle; }'\n\n if (playRef.current?.shadowRoot) {\n playRef.current.shadowRoot.appendChild(style)\n }\n if (muteRef?.current?.shadowRoot) {\n muteRef.current.shadowRoot.appendChild(style.cloneNode(true))\n }\n }, [])\n\n useEffect(() => {\n if (asset?.status === 'errored') {\n handleCancelUpload()\n // eslint-disable-next-line no-warning-comments\n // @TODO use better error handling\n throw new Error(asset.data?.errors?.messages?.join(' '))\n }\n }, [asset.data?.errors?.messages, asset?.status, handleCancelUpload])\n\n if (!asset || !asset.status) {\n return null\n }\n\n if (isLoading) {\n return (\n <UploadProgress\n progress={100}\n filename={asset?.filename}\n text={(isLoading !== true && isLoading) || 'Waiting for Mux to complete the upload'}\n onCancel={readOnly ? undefined : () => handleCancelUpload()}\n />\n )\n }\n\n return (\n <VideoPlayer asset={asset}>\n {buttons && <TopControls slot=\"top-chrome\">{buttons}</TopControls>}\n {isPreparingStaticRenditions && (\n <Card\n padding={2}\n radius={1}\n style={{\n background: 'var(--card-fg-color)',\n position: 'absolute',\n top: '0.5em',\n left: '0.5em',\n }}\n >\n <Text size={1} style={{color: 'var(--card-bg-color)'}}>\n MUX is preparing static renditions, please stand by\n </Text>\n </Card>\n )}\n </VideoPlayer>\n )\n}\n\nexport default Player\n","// todo: get these utils from @sanity/ui instead\nexport function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: {offset: number; width: number}\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import {MenuItem, Theme} from '@sanity/ui'\nimport styled, {css} from 'styled-components'\n\nimport {focusRingStyle} from './withFocusRing/helpers'\n\nexport const FileButton = styled(MenuItem)(({theme}: {theme: Theme}) => {\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const border = {width: 1, color: 'var(--card-border-color)'}\n\n return css`\n position: relative;\n\n &:not([data-disabled='true']) {\n &:focus-within {\n box-shadow: ${focusRingStyle({base, border, focusRing})};\n }\n }\n\n & input {\n overflow: hidden;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n min-width: 0;\n display: block;\n appearance: none;\n padding: 0;\n margin: 0;\n border: 0;\n opacity: 0;\n }\n `\n})\n","import {Box, ButtonProps, Flex, Text} from '@sanity/ui'\nimport React, {createElement, isValidElement, useId} from 'react'\nimport {isValidElementType} from 'react-is'\n\nimport {FileButton} from './FileInputMenuItem.styled'\n\nexport interface FileInputMenuItemProps extends ButtonProps {\n accept?: string\n capture?: 'user' | 'environment'\n multiple?: boolean\n onSelect?: (files: File[]) => void\n disabled?: boolean\n}\n\nexport const FileInputMenuItem = React.forwardRef(function FileInputMenuItem(\n props: FileInputMenuItemProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'ref' | 'type' | 'value' | 'onSelect'>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {\n icon,\n id: idProp,\n accept,\n capture,\n fontSize,\n multiple,\n onSelect,\n padding = 3,\n space = 3,\n textAlign,\n text,\n disabled,\n ...rest\n } = props\n const idHook = useId()\n const id = idProp || idHook\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onSelect && event.target.files) {\n onSelect(Array.from(event.target.files))\n }\n },\n [onSelect]\n )\n\n const content = (\n <Flex align=\"center\" justify=\"flex-start\" padding={padding}>\n {/* Icon */}\n {icon && (\n <Box marginRight={text ? space : undefined}>\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n </Box>\n )}\n\n {/* Text */}\n {text && (\n <Text align={textAlign} size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n )}\n </Flex>\n )\n\n return (\n <FileButton\n {...rest}\n htmlFor={id}\n padding={0}\n fontSize={2}\n disabled={disabled}\n ref={forwardedRef}\n >\n {content}\n\n {/* Visibly hidden input */}\n <input\n data-testid=\"file-button-input\"\n accept={accept}\n capture={capture}\n id={id}\n multiple={multiple}\n onChange={handleChange}\n type=\"file\"\n value=\"\"\n disabled={disabled}\n />\n </FileButton>\n )\n})\n","import {\n EllipsisVerticalIcon,\n LockIcon,\n PlugIcon,\n ResetIcon,\n SearchIcon,\n UploadIcon,\n} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Inline,\n Label,\n Menu,\n MenuDivider,\n MenuItem,\n Popover,\n Text,\n Tooltip,\n useClickOutside,\n} from '@sanity/ui'\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {PatchEvent, unset} from 'sanity'\nimport styled from 'styled-components'\n\nimport {type DialogState, type SetDialogState} from '../hooks/useDialogState'\nimport {getPlaybackPolicy} from '../util/getPlaybackPolicy'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport {FileInputMenuItem} from './FileInputMenuItem'\n\nconst LockCard = styled(Card)`\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0.6;\n mix-blend-mode: screen;\n background: transparent;\n`\n\nconst LockButton = styled(Button)`\n background: transparent;\n color: white;\n`\n\nexport interface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n asset: VideoAssetDocument\n onUpload: (files: File[]) => void\n dialogState: DialogState\n setDialogState: SetDialogState\n}\nfunction PlayerActionsMenu(props: Props) {\n const {asset, readOnly, dialogState, setDialogState, onChange, onUpload} = props\n const [open, setOpen] = useState(false)\n const [menuElement, setMenuRef] = useState<HTMLDivElement | null>(null)\n const isSigned = useMemo(() => getPlaybackPolicy(asset) === 'signed', [asset])\n\n const onReset = useCallback(() => onChange(PatchEvent.from(unset([]))), [onChange])\n\n useEffect(() => {\n if (open && dialogState) {\n setOpen(false)\n }\n }, [dialogState, open])\n\n useClickOutside(\n useCallback(() => setOpen(false), []),\n [menuElement]\n )\n\n return (\n <Inline space={1} padding={2}>\n {isSigned && (\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Signed playback policy\n </Text>\n </Box>\n }\n placement=\"right\"\n portal\n >\n <LockCard radius={2} margin={2} scheme=\"dark\" tone=\"positive\">\n <LockButton icon={LockIcon} mode=\"bleed\" tone=\"positive\" />\n </LockCard>\n </Tooltip>\n )}\n <Popover\n content={\n <Menu ref={setMenuRef}>\n <Box padding={2}>\n <Label muted size={1}>\n Replace\n </Label>\n </Box>\n <FileInputMenuItem\n accept=\"video/*\"\n icon={UploadIcon}\n mode=\"bleed\"\n onSelect={onUpload}\n text=\"Upload\"\n disabled={readOnly}\n fontSize={2}\n />\n <MenuItem\n icon={SearchIcon}\n text=\"Browse\"\n onClick={() => setDialogState('select-video')}\n />\n <MenuDivider />\n <MenuItem\n icon={PlugIcon}\n text=\"Configure API\"\n onClick={() => setDialogState('secrets')}\n />\n <MenuDivider />\n <MenuItem\n tone=\"critical\"\n icon={ResetIcon}\n text=\"Clear field\"\n onClick={onReset}\n disabled={readOnly}\n />\n </Menu>\n }\n portal\n open={open}\n >\n <Button\n icon={EllipsisVerticalIcon}\n mode=\"ghost\"\n onClick={() => {\n setDialogState(false)\n setOpen(true)\n }}\n />\n </Popover>\n </Inline>\n )\n}\n\nexport default memo(PlayerActionsMenu)\n","import {rem, Theme} from '@sanity/ui'\nimport {type ComponentType} from 'react'\nimport styled, {css} from 'styled-components'\n\nimport {focusRingBorderStyle, focusRingStyle} from './helpers'\n\nexport function withFocusRing<Props>(component: ComponentType<Props>) {\n return styled(component as unknown as any)<Props & {$border?: boolean}>(\n (props: {theme: Theme; $border?: boolean}) => {\n const border = {\n width: props.$border ? 1 : 0,\n color: 'var(--card-border-color)',\n }\n\n return css`\n --card-focus-box-shadow: ${focusRingBorderStyle(border)};\n\n border-radius: ${rem(props.theme.sanity.radius[1])};\n outline: none;\n box-shadow: var(--card-focus-box-shadow);\n\n &:focus {\n --card-focus-box-shadow: ${focusRingStyle({\n base: props.theme.sanity.color.base,\n border,\n focusRing: props.theme.sanity.focusRing,\n })};\n }\n `\n }\n )\n}\n","/* eslint-disable no-nested-ternary */\nimport {Card, type CardTone} from '@sanity/ui'\nimport React, {forwardRef, useCallback, useRef} from 'react'\nimport styled from 'styled-components'\n\nimport {withFocusRing} from './withFocusRing'\n\nconst ctrlKey = 17\nconst cmdKey = 91\n\nconst UploadCardWithFocusRing = withFocusRing(Card)\n\ninterface UploadCardProps {\n tone?: CardTone\n children: React.ReactNode\n onPaste: React.ClipboardEventHandler<HTMLInputElement>\n onDrop: React.DragEventHandler<HTMLDivElement>\n onDragOver: React.DragEventHandler<HTMLDivElement>\n onDragLeave: React.DragEventHandler<HTMLDivElement>\n onDragEnter: React.DragEventHandler<HTMLDivElement>\n}\nexport const UploadCard = forwardRef<HTMLDivElement, UploadCardProps>(\n ({children, tone, onPaste, onDrop, onDragEnter, onDragLeave, onDragOver}, forwardedRef) => {\n const ctrlDown = useRef(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const handleKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>((event) => {\n if (event.keyCode == ctrlKey || event.keyCode == cmdKey) {\n ctrlDown.current = true\n }\n const vKey = 86\n if (ctrlDown.current && event.keyCode == vKey) {\n inputRef.current!.focus()\n }\n }, [])\n const handleKeyUp = useCallback<React.KeyboardEventHandler<HTMLDivElement>>((event) => {\n if (event.keyCode == ctrlKey || event.keyCode == cmdKey) {\n ctrlDown.current = false\n }\n }, [])\n\n return (\n <UploadCardWithFocusRing\n tone={tone}\n height=\"fill\"\n ref={forwardedRef}\n padding={0}\n radius={2}\n shadow={0}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onPaste={onPaste}\n onDrop={onDrop}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDragOver={onDragOver}\n >\n <HiddenInput ref={inputRef} onPaste={onPaste} />\n {children}\n </UploadCardWithFocusRing>\n )\n }\n)\n\nconst HiddenInput = styled.input.attrs({type: 'text'})`\n position: absolute;\n border: 0;\n color: white;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n`\n","import {Button, type ButtonProps} from '@sanity/ui'\nimport React, {useCallback, useId, useRef} from 'react'\nimport styled from 'styled-components'\n\nconst HiddenInput = styled.input`\n overflow: hidden;\n width: 0.1px;\n height: 0.1px;\n opacity: 0;\n position: absolute;\n z-index: -1;\n`\n\nconst Label = styled.label`\n position: relative;\n`\n\nexport interface FileInputButtonProps extends ButtonProps {\n onSelect: (files: FileList) => void\n}\nexport const FileInputButton = ({onSelect, ...props}: FileInputButtonProps) => {\n const inputId = `FileSelect${useId()}`\n const inputRef = useRef<HTMLInputElement>(null)\n const handleSelect = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (event) => {\n if (onSelect) {\n onSelect(event.target.files!)\n }\n },\n [onSelect]\n )\n const handleButtonClick = useCallback(() => inputRef.current?.click(), [])\n return (\n <Label htmlFor={inputId}>\n <HiddenInput\n accept=\"video/*\"\n ref={inputRef}\n tabIndex={0}\n type=\"file\"\n id={inputId}\n onChange={handleSelect}\n value=\"\"\n />\n <Button\n onClick={handleButtonClick}\n mode=\"default\"\n tone=\"primary\"\n style={{width: '100%'}}\n {...props}\n />\n </Label>\n )\n}\n","import {PlugIcon, SearchIcon, UploadIcon} from '@sanity/icons'\nimport {DocumentVideoIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Inline, Text} from '@sanity/ui'\nimport React, {useCallback} from 'react'\nimport styled from 'styled-components'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport {FileInputButton, type FileInputButtonProps} from './FileInputButton'\n\nconst UploadCard = styled(Card)`\n && {\n border-style: dashed;\n }\n`\n\nconst ConfigureApiBox = styled(Box)`\n position: absolute;\n top: 0;\n right: 0;\n`\n\ninterface UploadPlaceholderProps {\n setDialogState: SetDialogState\n readOnly: boolean\n hovering: boolean\n needsSetup: boolean\n onSelect: FileInputButtonProps['onSelect']\n}\nexport default function UploadPlaceholder(props: UploadPlaceholderProps) {\n const {setDialogState, readOnly, onSelect, hovering, needsSetup} = props\n const handleBrowse = useCallback(() => setDialogState('select-video'), [setDialogState])\n const handleConfigureApi = useCallback(() => setDialogState('secrets'), [setDialogState])\n\n return (\n <Box style={{padding: 1, position: 'relative'}} height=\"stretch\">\n <UploadCard\n sizing=\"border\"\n height=\"fill\"\n tone={readOnly ? 'transparent' : 'inherit'}\n border\n padding={3}\n style={hovering ? {borderColor: 'transparent'} : undefined}\n >\n <ConfigureApiBox padding={3}>\n <Button\n padding={3}\n radius={3}\n tone={needsSetup ? 'critical' : undefined}\n onClick={handleConfigureApi}\n icon={PlugIcon}\n mode=\"bleed\"\n />\n </ConfigureApiBox>\n <Flex\n align=\"center\"\n justify=\"space-between\"\n gap={4}\n direction={['column', 'column', 'row']}\n paddingY={[2, 2, 0]}\n sizing=\"border\"\n height=\"fill\"\n >\n <Flex align=\"center\" justify=\"center\" gap={2} flex={1}>\n <Flex justify=\"center\">\n <Text muted>\n <DocumentVideoIcon />\n </Text>\n </Flex>\n <Flex justify=\"center\">\n <Text size={1} muted>\n Drag video or paste URL here\n </Text>\n </Flex>\n </Flex>\n <Inline space={2}>\n <FileInputButton\n mode=\"ghost\"\n tone=\"default\"\n icon={UploadIcon}\n text=\"Upload\"\n onSelect={onSelect}\n />\n <Button mode=\"ghost\" icon={SearchIcon} text=\"Select\" onClick={handleBrowse} />\n </Inline>\n </Flex>\n </UploadCard>\n </Box>\n )\n}\n","/* eslint-disable no-nested-ternary */\n// This component needs to be refactored into a functional component\n\nimport React, {Component} from 'react'\nimport {type Observable, Subject} from 'rxjs'\nimport {takeUntil, tap} from 'rxjs/operators'\nimport type {SanityClient} from 'sanity'\nimport {PatchEvent, set, setIfMissing} from 'sanity'\n\nimport {uploadFile, uploadUrl} from '../actions/upload'\nimport {type DialogState, type SetDialogState} from '../hooks/useDialogState'\nimport {extractDroppedFiles} from '../util/extractFiles'\nimport type {Config, MuxInputProps, Secrets, VideoAssetDocument} from '../util/types'\nimport InputBrowser from './InputBrowser'\nimport Player from './Player'\nimport PlayerActionsMenu from './PlayerActionsMenu'\nimport {UploadCard} from './Uploader.styled'\nimport UploadPlaceholder from './UploadPlaceholder'\nimport {UploadProgress} from './UploadProgress'\n\ninterface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n config: Config\n client: SanityClient\n secrets: Secrets\n asset: VideoAssetDocument | null | undefined\n dialogState: DialogState\n setDialogState: SetDialogState\n needsSetup: boolean\n}\n\ninterface State {\n isDraggingOver: boolean\n invalidPaste: boolean\n invalidFile: boolean\n fileInfo: {name?: string; type?: string} | null\n uuid: null\n uploadProgress: number | null\n error: Error | null\n url: string | null\n}\n\nclass MuxVideoInputUploader extends Component<Props, State> {\n state: State = {\n isDraggingOver: false,\n invalidPaste: false,\n invalidFile: false,\n uploadProgress: null,\n fileInfo: null,\n uuid: null,\n error: null,\n url: null,\n }\n dragEnteredEls: EventTarget[] = []\n\n ctrlDown = false\n\n // eslint-disable-next-line no-warning-comments\n // @TODO add proper typings for the return values of uploadFile and uploadUrl\n upload: any | null = null\n\n container = React.createRef<HTMLDivElement>()\n\n onCancelUploadButtonClick$: Observable<unknown> | undefined\n handleCancelUploadButtonClick: React.MouseEventHandler<HTMLButtonElement> | undefined\n\n componentWillUnmount() {\n this.unSubscribeToUpload()\n }\n\n componentDidMount() {\n const events$ = new Subject()\n this.onCancelUploadButtonClick$ = events$.asObservable()\n this.handleCancelUploadButtonClick = (event) => events$.next(event)\n }\n\n unSubscribeToUpload() {\n if (this.upload && !this.upload.closed) {\n this.upload.unsubscribe()\n }\n }\n\n handleProgress = (evt: {percent: number}) => {\n this.setState({uploadProgress: evt.percent})\n }\n\n onUpload = (files: FileList | File[]) => {\n this.setState({uploadProgress: 0, fileInfo: null, uuid: null})\n this.upload = uploadFile(this.props.config, this.props.client, files[0], {\n enableSignedUrls: this.props.secrets.enableSignedUrls,\n })\n .pipe(\n takeUntil(\n this.onCancelUploadButtonClick$!.pipe(\n tap(() => {\n if (this.state.uuid) {\n this.props.client.delete(this.state.uuid)\n }\n })\n )\n )\n )\n .subscribe({\n complete: () => {\n this.setState({error: null, uploadProgress: null, uuid: null})\n },\n next: (event) => {\n this.handleUploadEvent(event)\n },\n error: (err) => {\n this.setState({error: err, uploadProgress: null, uuid: null})\n },\n })\n }\n\n // eslint-disable-next-line no-warning-comments\n // @TODO add proper typings for the Observable events\n handleUploadEvent = (event: any) => {\n switch (event.type) {\n case 'success':\n return this.handleUploadSuccess(event.asset)\n case 'progress':\n return this.handleProgress(event)\n case 'file':\n return this.setState({fileInfo: event.file})\n case 'uuid':\n // Means we created a mux.videoAsset document with an uuid\n return this.setState({uuid: event.uuid})\n case 'url':\n return this.setState({url: event.url, uploadProgress: 100})\n default:\n return null\n }\n }\n\n handleUploadSuccess = (asset: VideoAssetDocument) => {\n this.setState({uploadProgress: 100})\n this.props.onChange(\n PatchEvent.from([\n setIfMissing({asset: {}}),\n set({_type: 'reference', _weak: true, _ref: asset._id}, ['asset']),\n ])\n )\n }\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const clipboardData = event.clipboardData || (window as any).clipboardData\n const url = clipboardData.getData('text')\n const options = {enableSignedUrls: this.props.secrets.enableSignedUrls}\n\n this.upload = uploadUrl(this.props.config, this.props.client, url, options).subscribe({\n complete: () => {\n this.setState({error: null, uploadProgress: null, url: null})\n },\n next: (sEvent) => {\n this.handleUploadEvent(sEvent)\n },\n error: (err) => {\n let error\n // Don't output error dialog when just invalid url\n if (!err.message.toLowerCase().match('invalid url')) {\n error = err\n }\n this.setState({invalidPaste: true, error}, () => {\n setTimeout(() => {\n this.setState({invalidPaste: false, uploadProgress: null})\n }, 2000)\n })\n },\n })\n }\n\n handleDrop: React.DragEventHandler<HTMLDivElement> = (event) => {\n this.setState({isDraggingOver: false})\n event.preventDefault()\n event.stopPropagation()\n extractDroppedFiles(event.nativeEvent.dataTransfer!).then((files) => {\n if (files) {\n // eslint-disable-next-line no-warning-comments\n // @TODO fix the typing on files\n this.onUpload(files as any)\n }\n })\n }\n\n handleDragOver: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault()\n event.stopPropagation()\n }\n\n handleDragEnter: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation()\n this.dragEnteredEls.push(event.target)\n this.setState({isDraggingOver: true})\n const type = event.dataTransfer.items?.[0]?.type\n this.setState({invalidFile: !type.startsWith('video/')})\n }\n\n handleDragLeave: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation()\n const idx = this.dragEnteredEls.indexOf(event.target)\n if (idx > -1) {\n this.dragEnteredEls.splice(idx, 1)\n }\n if (this.dragEnteredEls.length === 0) {\n this.setState({isDraggingOver: false})\n }\n }\n\n render() {\n if (this.state.uploadProgress !== null) {\n return (\n <UploadProgress\n onCancel={this.handleCancelUploadButtonClick!}\n progress={this.state.uploadProgress}\n filename={this.state.fileInfo?.name || this.state.url}\n />\n )\n }\n\n if (this.state.error) {\n // @TODO better error handling\n throw this.state.error\n }\n\n return (\n <>\n <UploadCard\n tone={\n this.state.isDraggingOver && (this.state.invalidPaste || this.state.invalidFile)\n ? 'critical'\n : this.state.isDraggingOver\n ? 'positive'\n : undefined\n }\n onDrop={this.handleDrop}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDragEnter={this.handleDragEnter}\n onPaste={this.handlePaste}\n ref={this.container}\n >\n {this.props.asset ? (\n <Player\n readOnly={this.props.readOnly}\n asset={this.props.asset}\n onChange={this.props.onChange}\n buttons={\n <PlayerActionsMenu\n asset={this.props.asset}\n dialogState={this.props.dialogState}\n setDialogState={this.props.setDialogState}\n onChange={this.props.onChange}\n onUpload={this.onUpload}\n readOnly={this.props.readOnly}\n />\n }\n />\n ) : (\n <UploadPlaceholder\n hovering={this.state.isDraggingOver}\n onSelect={this.onUpload}\n readOnly={this.props.readOnly!}\n setDialogState={this.props.setDialogState}\n needsSetup={this.props.needsSetup}\n />\n )}\n </UploadCard>\n {this.props.dialogState === 'select-video' && (\n <InputBrowser\n asset={this.props.asset}\n onChange={this.props.onChange}\n setDialogState={this.props.setDialogState}\n />\n )}\n </>\n )\n }\n}\n\nexport default MuxVideoInputUploader\n","import {useCallback} from 'react'\nimport type {SanityClient} from 'sanity'\n\nimport {createSigningKeys, haveValidSigningKeys, saveSecrets, testSecrets} from '../actions/secrets'\nimport type {Secrets} from '../util/types'\n\nexport const useSaveSecrets = (client: SanityClient, secrets: Secrets) => {\n return useCallback(\n async ({\n token,\n secretKey,\n enableSignedUrls,\n }: Pick<Secrets, 'token' | 'secretKey' | 'enableSignedUrls'>): Promise<Secrets> => {\n let {signingKeyId, signingKeyPrivate} = secrets\n\n try {\n await saveSecrets(\n client,\n token!,\n secretKey!,\n enableSignedUrls,\n signingKeyId!,\n signingKeyPrivate!\n )\n const valid = await testSecrets(client)\n if (!valid?.status && token && secretKey) {\n throw new Error('Invalid secrets')\n }\n } catch (err) {\n console.error('Error while trying to save secrets:', err)\n throw err\n }\n\n if (enableSignedUrls) {\n const hasValidSigningKeys = await haveValidSigningKeys(\n client,\n signingKeyId!,\n signingKeyPrivate!\n )\n\n if (!hasValidSigningKeys) {\n try {\n const {data} = await createSigningKeys(client)\n signingKeyId = data.id\n signingKeyPrivate = data.private_key\n await saveSecrets(\n client,\n token!,\n secretKey!,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate\n )\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log('Error while creating and saving signing key:', err?.message)\n throw err\n }\n }\n }\n return {\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n },\n [client, secrets]\n )\n}\n","import {useReducer} from 'react'\n\nimport type {Secrets} from '../util/types'\n\nexport interface State extends Pick<Secrets, 'token' | 'secretKey' | 'enableSignedUrls'> {\n submitting: boolean\n error: string | null\n}\nexport type Action =\n | {type: 'submit'}\n | {type: 'error'; payload: string}\n | {type: 'reset'; payload: Secrets}\n | {type: 'change'; payload: {name: 'token'; value: string}}\n | {type: 'change'; payload: {name: 'secretKey'; value: string}}\n | {type: 'change'; payload: {name: 'enableSignedUrls'; value: boolean}}\nfunction init({token, secretKey, enableSignedUrls}: Secrets): State {\n return {\n submitting: false,\n error: null,\n // Form inputs don't set the state back to null when clearing a field, but uses empty strings\n // This ensures the `dirty` check works correctly\n token: token ?? '',\n secretKey: secretKey ?? '',\n enableSignedUrls: enableSignedUrls ?? false,\n }\n}\nfunction reducer(state: State, action: Action) {\n switch (action?.type) {\n case 'submit':\n return {...state, submitting: true, error: null}\n case 'error':\n return {...state, submitting: false, error: action.payload}\n case 'reset':\n return init(action.payload)\n case 'change':\n return {...state, [action.payload.name]: action.payload.value}\n default:\n throw new Error(`Unknown action type: ${(action as any)?.type}`)\n }\n}\n\nexport const useSecretsFormState = (secrets: Secrets) => useReducer(reducer, secrets, init)\n","import React, {useId, useMemo} from 'react'\n\n// Mapping ids to ensure filter refs are unique, otherwise all Logo instances are hidden if the first SVG is hidden, due to how SVGs deal with relative links and ids\nconst ids = [\n 'title',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n] as const\nexport interface Props {\n height?: number\n}\nexport default function MuxLogo({height = 26}) {\n const id = useId()\n const [titleId, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r] = useMemo<typeof ids>(\n () => ids.map((field) => `${id}-${field}`) as unknown as typeof ids,\n [id]\n )\n\n return (\n <svg\n aria-labelledby={titleId}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"92.08878326416016 102.66712188720703 692.76123046875 219.99948120117188\"\n style={{height: `${height}px`}}\n >\n <title id={titleId}>Mux Logo</title>\n <defs>\n <linearGradient\n id={c}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(528.38055 0 0 -528.38055 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={d}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.66766 0 0 -523.66766 67.897 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={g}\n spreadMethod=\"pad\"\n gradientTransform=\"rotate(180 296.075 79.75) scale(524.84045)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={i}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={j}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.08514 0 0 -523.08514 67.897 224.446)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={k}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 94.553)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={l}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={m}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 94.554)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={p}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(521.97632 0 0 -521.97632 69.067 191.973)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={q}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(523.09039 0 0 -523.09039 67.312 191.973)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <linearGradient\n id={r}\n spreadMethod=\"pad\"\n gradientTransform=\"matrix(524.84045 0 0 -524.84045 63.801 159.5)\"\n gradientUnits=\"userSpaceOnUse\"\n y2={0}\n x2={1}\n y1={0}\n x1={0}\n >\n <stop\n offset={0}\n style={{\n stopOpacity: 1,\n stopColor: '#ff4e00',\n }}\n />\n <stop\n offset={1}\n style={{\n stopOpacity: 1,\n stopColor: '#ff1791',\n }}\n />\n </linearGradient>\n <clipPath id={a} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={b} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M423.64 242h164.999V77H423.64Z\" />\n </clipPath>\n <clipPath id={e} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={f} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M311.3 242h93.031V77H311.3Z\" />\n </clipPath>\n <clipPath id={h} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M198.96 242h35.106V77H198.96Z\" />\n </clipPath>\n <clipPath id={n} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M0 319h657.706V0H0Z\" />\n </clipPath>\n <clipPath id={o} clipPathUnits=\"userSpaceOnUse\">\n <path d=\"M69.067 242H169.12V141.947H69.067Z\" />\n </clipPath>\n </defs>\n <g clipPath={`url(#${a})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${b})`}\n >\n <path\n style={{\n fill: `url(#${c})`,\n stroke: 'none',\n }}\n d=\"M558.674 82.142c6.855-6.855 17.969-6.855 24.824 0 6.854 6.855 6.854 17.969 0 24.823L453.605 236.858c-6.855 6.855-17.969 6.855-24.824 0s-6.855-17.969 0-24.823z\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${d})`,\n stroke: 'none',\n }}\n d=\"M558.674 236.858 428.781 106.966c-6.855-6.855-6.855-17.969 0-24.825 6.855-6.854 17.969-6.854 24.823 0l129.894 129.894c6.854 6.855 6.854 17.968 0 24.823A17.498 17.498 0 0 1 571.086 242a17.495 17.495 0 0 1-12.412-5.142\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <g clipPath={`url(#${e})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${f})`}\n >\n <path\n style={{\n fill: `url(#${g})`,\n stroke: 'none',\n }}\n d=\"M328.853 112.107c22.297 0 40.372 18.075 40.372 40.372v71.315c0 10.054 7.505 18.206 17.554 18.206 10.048 0 17.552-8.152 17.552-18.206v-71.315c0-41.686-33.793-75.479-75.478-75.479-9.694 0-17.553 7.859-17.553 17.554 0 9.694 7.859 17.553 17.553 17.553\"\n />\n </g>\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${h})`}\n >\n <path\n style={{\n fill: `url(#${i})`,\n stroke: 'none',\n }}\n d=\"M216.513 242c-10.049 0-17.553-8.152-17.553-18.206V95.206c0-10.054 7.504-18.206 17.553-18.206 10.048 0 17.553 8.152 17.553 18.206v128.588c0 10.054-7.505 18.206-17.553 18.206\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${j})`,\n stroke: 'none',\n }}\n d=\"M369.225 224.447c0-9.694 7.859-17.553 17.553-17.553 9.695 0 17.553 7.859 17.553 17.553s-7.858 17.552-17.553 17.552c-9.694 0-17.553-7.858-17.553-17.552\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${k})`,\n stroke: 'none',\n }}\n d=\"M553.532 94.554c0-9.695 7.859-17.554 17.553-17.554 9.695 0 17.554 7.859 17.554 17.554 0 9.694-7.859 17.552-17.554 17.552-9.694 0-17.553-7.858-17.553-17.552\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${l})`,\n stroke: 'none',\n }}\n d=\"M69.067 223.794V95.206C69.067 85.152 76.571 77 86.62 77c10.048 0 17.553 8.152 17.553 18.206v128.588c0 10.055-7.505 18.205-17.553 18.205-10.049 0-17.553-8.15-17.553-18.205\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${m})`,\n stroke: 'none',\n }}\n d=\"M198.96 94.554c0-9.695 7.859-17.554 17.553-17.554 9.695 0 17.554 7.859 17.554 17.554 0 9.694-7.859 17.553-17.554 17.553-9.694 0-17.553-7.859-17.553-17.553\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <g clipPath={`url(#${n})`} transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\">\n <g\n style={{\n opacity: 0.69999701,\n }}\n clipPath={`url(#${o})`}\n >\n <path\n style={{\n fill: `url(#${p})`,\n stroke: 'none',\n }}\n d=\"M139.155 147.088c6.855-6.855 17.969-6.855 24.824 0s6.855 17.969 0 24.824l-64.947 64.946c-6.855 6.855-17.969 6.855-24.824 0s-6.855-17.969 0-24.823z\"\n />\n </g>\n </g>\n <path\n style={{\n fill: `url(#${q})`,\n stroke: 'none',\n }}\n d=\"m204.101 236.858-64.947-64.946c-6.854-6.855-6.854-17.969 0-24.824 6.856-6.855 17.97-6.855 24.824 0l64.947 64.947c6.855 6.855 6.855 17.968 0 24.823A17.495 17.495 0 0 1 216.513 242a17.498 17.498 0 0 1-12.412-5.142\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n <path\n style={{\n fill: `url(#${r})`,\n stroke: 'none',\n }}\n d=\"M253.374 223.794v-71.315c0-41.685 33.793-75.479 75.479-75.479 9.695 0 17.553 7.859 17.553 17.554 0 9.694-7.858 17.553-17.553 17.553-22.297 0-40.372 18.075-40.372 40.372v71.315c0 10.055-7.505 18.205-17.554 18.205s-17.553-8.15-17.553-18.205\"\n transform=\"matrix(1.33333 0 0 -1.33333 0 425.333)\"\n />\n </svg>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport MuxLogo from './MuxLogo'\n\nconst Logo = styled.span`\n display: inline-block;\n height: 0.8em;\n margin-right: 1em;\n transform: translate(0.3em, -0.2em);\n`\n\nexport const Header = () => (\n <>\n <Logo>\n <MuxLogo height={13} />\n </Logo>\n API Credentials\n </>\n)\n","import {\n Box,\n Button,\n Card,\n Checkbox,\n Code,\n Dialog,\n Flex,\n Inline,\n Stack,\n Text,\n TextInput,\n} from '@sanity/ui'\nimport React, {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport {clear, preload} from 'suspend-react'\n\nimport {useClient} from '../hooks/useClient'\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport {useSaveSecrets} from '../hooks/useSaveSecrets'\nimport {useSecretsFormState} from '../hooks/useSecretsFormState'\nimport {cacheNs} from '../util/constants'\nimport {_id as secretsId} from '../util/readSecrets'\nimport type {Secrets} from '../util/types'\nimport {Header} from './ConfigureApi.styled'\nimport FormField from './FormField'\n\nexport interface Props {\n setDialogState: SetDialogState\n secrets: Secrets\n}\nconst fieldNames = ['token', 'secretKey', 'enableSignedUrls'] as const\nfunction ConfigureApi({secrets, setDialogState}: Props) {\n const client = useClient()\n const [state, dispatch] = useSecretsFormState(secrets)\n const hasSecretsInitially = useMemo(() => secrets.token && secrets.secretKey, [secrets])\n const handleClose = useCallback(() => setDialogState(false), [setDialogState])\n const dirty = useMemo(\n () =>\n secrets.token !== state.token ||\n secrets.secretKey !== state.secretKey ||\n secrets.enableSignedUrls !== state.enableSignedUrls,\n [secrets, state]\n )\n const id = `ConfigureApi${useId()}`\n const [tokenId, secretKeyId, enableSignedUrlsId] = useMemo<typeof fieldNames>(\n () => fieldNames.map((field) => `${id}-${field}`) as unknown as typeof fieldNames,\n [id]\n )\n const firstField = useRef<HTMLInputElement>(null)\n const handleSaveSecrets = useSaveSecrets(client, secrets)\n const saving = useRef(false)\n\n const handleSubmit = useCallback(\n (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (!saving.current && event.currentTarget.reportValidity()) {\n saving.current = true\n dispatch({type: 'submit'})\n const {token, secretKey, enableSignedUrls} = state\n handleSaveSecrets({token, secretKey, enableSignedUrls})\n .then((savedSecrets) => {\n const {projectId, dataset} = client.config()\n clear([cacheNs, secretsId, projectId, dataset])\n preload(() => Promise.resolve(savedSecrets), [cacheNs, secretsId, projectId, dataset])\n setDialogState(false)\n })\n .catch((err) => dispatch({type: 'error', payload: err.message}))\n .finally(() => {\n saving.current = false\n })\n }\n },\n [client, dispatch, handleSaveSecrets, setDialogState, state]\n )\n const handleChangeToken = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'token', value: event.currentTarget.value},\n })\n },\n [dispatch]\n )\n const handleChangeSecretKey = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'secretKey', value: event.currentTarget.value},\n })\n },\n [dispatch]\n )\n const handleChangeEnableSignedUrls = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n dispatch({\n type: 'change',\n payload: {name: 'enableSignedUrls', value: event.currentTarget.checked},\n })\n },\n [dispatch]\n )\n\n useEffect(() => {\n if (firstField.current) {\n firstField.current.focus()\n }\n }, [firstField])\n\n return (\n <Dialog\n id={id}\n onClose={handleClose}\n header={<Header />}\n width={1}\n style={{\n maxWidth: '550px',\n }}\n >\n <Box padding={4} style={{position: 'relative'}}>\n <form onSubmit={handleSubmit} noValidate>\n <Stack space={4}>\n {!hasSecretsInitially && (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"primary\">\n <Stack space={3}>\n <Text size={1}>\n To set up a new access token, go to your{' '}\n <a\n href=\"https://dashboard.mux.com/settings/access-tokens\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n account on mux.com\n </a>\n .\n </Text>\n <Text size={1}>\n The access token needs permissions: <strong>Mux Video </strong>\n (Full Access) and <strong>Mux Data</strong> (Read)\n <br />\n The credentials will be stored safely in a hidden document only available to\n editors.\n </Text>\n </Stack>\n </Card>\n )}\n <FormField title=\"Access Token\" inputId={tokenId}>\n <TextInput\n id={tokenId}\n ref={firstField}\n onChange={handleChangeToken}\n type=\"text\"\n value={state.token ?? ''}\n required={!!state.secretKey || state.enableSignedUrls}\n />\n </FormField>\n <FormField title=\"Secret Key\" inputId={secretKeyId}>\n <TextInput\n id={secretKeyId}\n onChange={handleChangeSecretKey}\n type=\"text\"\n value={state.secretKey ?? ''}\n required={!!state.token || state.enableSignedUrls}\n />\n </FormField>\n\n <Stack space={4}>\n <Flex align=\"center\">\n <Checkbox\n id={enableSignedUrlsId}\n onChange={handleChangeEnableSignedUrls}\n checked={state.enableSignedUrls}\n style={{display: 'block'}}\n />\n <Box flex={1} paddingLeft={3}>\n <Text>\n <label htmlFor={enableSignedUrlsId}>Enable Signed Urls</label>\n </Text>\n </Box>\n </Flex>\n {/* TODO: use a popover instead to avoid jumping around */}\n {secrets.signingKeyId && state.enableSignedUrls ? (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"caution\">\n <Stack space={3}>\n <Text size={1}>The signing key ID that Sanity will use is:</Text>\n <Code size={1}>{secrets.signingKeyId}</Code>\n <Text size={1}>\n This key is only used for previewing content in the Sanity UI.\n <br />\n You should generate a different key to use in your application server.\n </Text>\n </Stack>\n </Card>\n ) : null}\n </Stack>\n\n <Inline space={2}>\n <Button\n text=\"Save\"\n disabled={!dirty}\n loading={state.submitting}\n tone=\"primary\"\n mode=\"default\"\n type=\"submit\"\n />\n <Button\n disabled={state.submitting}\n text=\"Cancel\"\n mode=\"bleed\"\n onClick={handleClose}\n />\n </Inline>\n {state.error && (\n <Card padding={[3, 3, 3]} radius={2} shadow={1} tone=\"critical\">\n <Text>{state.error}</Text>\n </Card>\n )}\n </Stack>\n </form>\n </Box>\n </Dialog>\n )\n}\n\nexport default memo(ConfigureApi)\n","/* eslint-disable no-console */\nimport {Button, Card, Flex, Grid, Heading, Inline, Text, useToast} from '@sanity/ui'\nimport React, {memo, useCallback, useRef} from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport {clear} from 'suspend-react'\nimport {useErrorBoundary} from 'use-error-boundary'\n\nimport {name} from '../util/constants'\nimport {type MuxInputProps} from '../util/types'\n\nexport interface Props extends Pick<MuxInputProps, 'schemaType'> {\n children: React.ReactNode\n}\nfunction ErrorBoundaryCard(props: Props) {\n const {children, schemaType} = props\n const {push: pushToast} = useToast()\n const errorRef = useRef(null)\n const {ErrorBoundary, didCatch, error, reset} = useErrorBoundary({\n onDidCatch: (err, errorInfo) => {\n console.group(err.toString())\n console.groupCollapsed('console.error')\n console.error(err)\n console.groupEnd()\n if (err.stack) {\n console.groupCollapsed('error.stack')\n console.log(err.stack)\n console.groupEnd()\n }\n if (errorInfo?.componentStack) {\n console.groupCollapsed('errorInfo.componentStack')\n console.log(errorInfo.componentStack)\n console.groupEnd()\n }\n console.groupEnd()\n pushToast({\n status: 'error',\n title: 'Plugin crashed',\n description: (\n <Flex align=\"center\">\n <Inline space={1}>\n An error happened while rendering\n <Button\n padding={1}\n fontSize={1}\n style={{transform: 'translateY(1px)'}}\n mode=\"ghost\"\n text={schemaType.title}\n onClick={() => {\n if (errorRef.current) {\n scrollIntoView(errorRef.current, {\n behavior: 'smooth',\n scrollMode: 'if-needed',\n block: 'center',\n })\n }\n }}\n />\n </Inline>\n </Flex>\n ),\n })\n },\n })\n const handleRetry = useCallback(() => {\n // Purge request cache before retrying, otherwise the cached errors will rethrow\n clear([name])\n\n reset()\n }, [reset])\n\n if (didCatch) {\n return (\n <Card ref={errorRef} paddingX={[2, 3, 4, 4]} height=\"fill\" shadow={1} overflow=\"auto\">\n <Flex justify=\"flex-start\" align=\"center\" height=\"fill\">\n <Grid columns={1} gap={[2, 3, 4, 4]}>\n <Heading as=\"h1\">\n The <code>{name}</code> plugin crashed\n </Heading>\n {error?.message && (\n <Card padding={3} tone=\"critical\" shadow={1} radius={2}>\n <Text>{error.message}</Text>\n </Card>\n )}\n <Inline>\n <Button onClick={handleRetry} text=\"Retry\" />\n </Inline>\n </Grid>\n </Flex>\n </Card>\n )\n }\n\n return <ErrorBoundary>{children}</ErrorBoundary>\n}\n\nexport default memo(ErrorBoundaryCard)\n","import {Box, Card, Flex, Spinner, Text} from '@sanity/ui'\nimport React from 'react'\n\nexport const InputFallback = () => {\n return (\n <div style={{padding: 1}}>\n <Card\n shadow={1}\n sizing=\"border\"\n style={{aspectRatio: '16/9', width: '100%', borderRadius: '1px'}}\n >\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Spinner muted />\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading…\n </Text>\n </Box>\n </Flex>\n </Card>\n </div>\n )\n}\n","import {PlugIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Grid, Heading, Inline} from '@sanity/ui'\nimport React, {useCallback} from 'react'\n\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport MuxLogo from './MuxLogo'\n\ninterface OnboardProps {\n setDialogState: SetDialogState\n}\n\nexport default function Onboard(props: OnboardProps) {\n const {setDialogState} = props\n const handleOpen = useCallback(() => setDialogState('secrets'), [setDialogState])\n\n return (\n <>\n <div style={{padding: 2}}>\n <Card\n display=\"flex\"\n sizing=\"border\"\n style={{\n aspectRatio: '16/9',\n width: '100%',\n boxShadow: 'var(--card-bg-color) 0 0 0 2px',\n }}\n paddingX={[2, 3, 4, 4]}\n radius={1}\n tone=\"transparent\"\n >\n <Flex justify=\"flex-start\" align=\"center\">\n <Grid columns={1} gap={[2, 3, 4, 4]}>\n <Inline paddingY={1}>\n <div style={{height: '32px'}}>\n <MuxLogo />\n </div>\n </Inline>\n <Inline paddingY={1}>\n <Heading size={[0, 1, 2, 2]}>\n Upload and preview videos directly from your studio.\n </Heading>\n </Inline>\n <Inline paddingY={1}>\n <Button mode=\"ghost\" icon={PlugIcon} text=\"Configure API\" onClick={handleOpen} />\n </Inline>\n </Grid>\n </Flex>\n </Card>\n </div>\n </>\n )\n}\n","import {Card} from '@sanity/ui'\nimport React, {memo, Suspense} from 'react'\n\nimport {useAssetDocumentValues} from '../hooks/useAssetDocumentValues'\nimport {useClient} from '../hooks/useClient'\nimport {useDialogState} from '../hooks/useDialogState'\nimport {useMuxPolling} from '../hooks/useMuxPolling'\nimport {useSecretsDocumentValues} from '../hooks/useSecretsDocumentValues'\nimport type {Config, MuxInputProps} from '../util/types'\nimport Uploader from './__legacy__Uploader'\nimport ConfigureApi from './ConfigureApi'\nimport ErrorBoundaryCard from './ErrorBoundaryCard'\nimport {InputFallback} from './Input.styled'\nimport Onboard from './Onboard'\n\nexport interface InputProps extends MuxInputProps {\n config: Config\n}\nconst Input = (props: InputProps) => {\n const client = useClient()\n const secretDocumentValues = useSecretsDocumentValues()\n const assetDocumentValues = useAssetDocumentValues(props.value?.asset)\n const poll = useMuxPolling(props.readOnly ? undefined : assetDocumentValues?.value || undefined)\n const [dialogState, setDialogState] = useDialogState()\n\n const error = secretDocumentValues.error || assetDocumentValues.error || poll.error /*||\n // @TODO move errored logic to Uploader, where handleRemoveVideo can be called\n (assetDocumentValues.value?.status === 'errored'\n ? new Error(assetDocumentValues.value.data?.errors?.messages?.join(' '))\n : undefined)\n // */\n if (error) {\n // @TODO deal with it more gracefully\n throw error\n }\n const isLoading = secretDocumentValues.isLoading || assetDocumentValues.isLoading\n\n return (\n <Card>\n <ErrorBoundaryCard schemaType={props.schemaType}>\n <Suspense fallback={<InputFallback />}>\n {isLoading ? (\n <InputFallback />\n ) : (\n <>\n {secretDocumentValues.value.needsSetup && !assetDocumentValues.value ? (\n <Onboard setDialogState={setDialogState} />\n ) : (\n <Uploader\n {...props}\n config={props.config}\n onChange={props.onChange}\n client={client}\n secrets={secretDocumentValues.value.secrets}\n asset={assetDocumentValues.value}\n dialogState={dialogState}\n setDialogState={setDialogState}\n needsSetup={secretDocumentValues.value.needsSetup}\n />\n )}\n\n {dialogState === 'secrets' && (\n <ConfigureApi\n setDialogState={setDialogState}\n secrets={secretDocumentValues.value.secrets}\n />\n )}\n </>\n )}\n </Suspense>\n </ErrorBoundaryCard>\n </Card>\n )\n}\n\nexport default memo(Input)\n","import React from 'react'\n\nimport Input from './components/Input'\nimport VideoThumbnail from './components/VideoThumbnail'\nimport type {Config, MuxInputProps, VideoAssetDocument} from './util/types'\n\nexport function muxVideoCustomRendering(config: Config) {\n return {\n components: {\n input: (props: MuxInputProps) => <Input config={config} {...props} />,\n },\n preview: {\n select: {\n filename: 'asset.filename',\n playbackId: 'asset.playbackId',\n status: 'asset.status',\n assetId: 'asset.assetId',\n thumbTime: 'asset.thumbTime',\n data: 'asset.data',\n },\n prepare: (asset: Partial<VideoAssetDocument>) => {\n const {filename, playbackId, status} = asset\n return {\n title: filename || playbackId || '',\n subtitle: status ? `status: ${status}` : null,\n media: asset.playbackId ? <VideoThumbnail asset={asset} width={64} /> : null,\n }\n },\n },\n }\n}\n","export const muxVideo = {\n name: 'mux.video',\n type: 'object',\n title: 'Video asset reference',\n fields: [\n {\n title: 'Video',\n name: 'asset',\n type: 'reference',\n weak: true,\n to: [{type: 'mux.videoAsset'}],\n },\n ],\n}\n\nexport const muxVideoAsset = {\n name: 'mux.videoAsset',\n type: 'object',\n title: 'Video asset',\n fields: [\n {\n type: 'string',\n name: 'status',\n },\n {\n type: 'string',\n name: 'assetId',\n },\n {\n type: 'string',\n name: 'playbackId',\n },\n {\n type: 'string',\n name: 'filename',\n },\n {\n type: 'number',\n name: 'thumbTime',\n },\n ],\n}\n","import {definePlugin} from 'sanity'\n\nimport createStudioTool from './components/StudioTool'\nimport {muxVideoCustomRendering} from './plugin'\nimport {muxVideo, muxVideoAsset} from './schema'\nimport type {Config} from './util/types'\n\nexport type {VideoAssetDocument} from './util/types'\n\nexport const defaultConfig: Config = {\n mp4_support: 'none',\n}\n\nexport const muxInput = definePlugin<Partial<Config> | void>((userConfig) => {\n const config: Config = {...defaultConfig, ...userConfig}\n return {\n name: 'mux-input',\n schema: {\n types: [\n muxVideoAsset,\n {\n ...muxVideo,\n ...muxVideoCustomRendering(config),\n },\n ],\n },\n tools: config.tool === false ? undefined : [createStudioTool(config)],\n }\n})\n"],"names":["ToolIcon","jsx","stroke","fill","strokeWidth","viewBox","height","width","xmlns","children","d","SANITY_API_VERSION","useClient","useSanityClient","apiVersion","SPECIAL_CHARS","STRIP_EDGE_CHARS","tokenize","string","match","map","token","replace","toGroqParams","terms","params","reduce","acc","term","i","concat","extractTermsFromQuery","query","quotedQueries","unquotedQuery","words","length","push","quotedTerms","str","trim","toLower","remainingTerms","uniq","compact","SEARCH_PATHS","createConstraints","constraints","_term","joinedPath","filter","constraint","join","createSearchFilter","ASSET_SORT_OPTIONS","createdDesc","groq","label","createdAsc","filenameAsc","filenameDesc","useAssetDocuments","createHookFromObservableFactory","_ref","documentStore","sort","searchQuery","search","Boolean","sortFragment","listenQuery","useAssets","useDocumentStore","setSort","useState","setSearchQuery","assetDocuments","isLoading","assets","useMemo","collate","collated","draft","published","_id","id","CONTEXT_MENU_POPOVER_PROPS","constrainSize","placement","portal","SelectSortOptions","props","useId","MenuButton","button","Button","text","icon","SortIcon","mode","padding","style","cursor","menu","Menu","Object","entries","_ref2","type","MenuItem","onClick","tone","pressed","popover","SpinnerBox","Box","display","alignItems","justifyContent","minHeight","Spinner","name","cacheNs","muxSecretsDocumentId","DIALOGS_Z_INDEX","THUMBNAIL_ASPECT_RATIO","MIN_ASPECT_RATIO","FormField","title","description","inputId","jsxs","Stack","space","Flex","align","flex","paddingY","Text","as","htmlFor","weight","size","muted","memo","IconInfo","Icon","gap","ResolutionIcon","StopWatchIcon","readSecrets","client","projectId","dataset","config","suspend","data","fetch","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","generateJwt","playbackId","aud","payload","TypeError","default","sign","JSON","parse","stringify","_","v","atob","algorithm","keyid","audience","subject","noTimestamp","expiresIn","getPlaybackId","asset","console","error","getPlaybackPolicy","_a","_b","_c","_d","playback_ids","policy","getVideoSrc","_ref3","searchParams","URLSearchParams","set","VideoPlayer","_ref4","videoSrc","signedToken","url","URL","get","aspect_ratio","split","Number","targetAspectRatio","forceAspectRatio","isNaN","aspectRatio","Math","max","Card","position","Fragment","MuxPlayer","playsInline","tokens","playback","thumbnail","storyboard","streamType","preload","crossOrigin","metadata","player_name","player_version","pluginPkg","version","page_type","objectFit","deleteAssetOnMux","assetId","request","withCredentials","method","deleteAsset","_ref5","deleteOnMux","delete","getAsset","getUnknownTypeFallback","typeName","subtitle","media","WarningOutlineIcon","MissingSchemaType","layout","value","SanityDefaultPreview","_type","TimeAgo","_ref6","time","timeAgo","useTimeAgo","DraftStatus","document","updatedAt","_updatedAt","Tooltip","content","TextWithTone","dimmed","EditIcon","PublishedStatus","PublishIcon","PaneItemPreview","presence","schemaType","isRecord","isValidElement","isString","isNumber","useMemoObservable","getPreviewStateObservable","documentPreviewStore","status","Inline","DocumentPreviewPresence","getPreviewValueWithFallback","isPlaceholder","getIconWithFallback","defaultIcon","DocumentPreviewInInput","ChildLink","usePaneRouter","linkProps","childId","documentPair","childParameters","DocumentPreviewInRool","IntentLink","intent","DocumentPreview","doc","useDocumentPreviewStore","schema","useSchema","documentPresence","useDocumentPresence","hasSchemaType","PreviewComponent","DocumentIcon","PreviewCard","__unstable_focusRing","radius","Container","styled","__template","theme","sanity","color","base","fg","fonts","sizes","VideoReferences","isLoaded","references","border","documentPairs","marginBottom","shadow","overflow","DeleteDialog","_ref7","referencesLoading","cancelDelete","succeededDeleting","state","setState","setDeleteOnMux","toast","useToast","useEffect","confirmDelete","worked","Dialog","header","zOffset","onClose","onClickOutside","footer","justify","TrashIcon","fontSize","disabled","some","s","Heading","marginTop","Checkbox","checked","onChange","prev","margin","useDocReferences","_ref8","formatSeconds","seconds","hrs","mins","secs","ret","getVideoMetadata","_e","_f","date","created_at","Date","_createdAt","now","filename","slice","createdAt","duration","max_stored_resolution","max_stored_frame_rate","useVideoDetails","originalAsset","setOriginalAsset","setFilename","modified","displayInfo","handleClose","closeDialog","confirmClose","shouldClose","saveChanges","patch","commit","AssetInput","TextInput","placeholder","onInput","VideoDetails","tab","setTab","isSaving","containerHeight","setContainerHeight","contentsRef","React","useRef","current","getBoundingClientRect","CheckmarkIcon","iconRight","ErrorOutlineIcon","RevertIcon","textAlign","sizing","containerType","direction","ref","autoPlay","TabList","Tab","selected","SearchIcon","TabPanel","hidden","e","currentTarget","ClockIcon","CropIcon","toLocaleDateString","year","month","day","hour","minute","hour12","CalendarIcon","VideoMetadata","wordWrap","toISOString","useInView","options","arguments","undefined","inView","setInView","observer","IntersectionObserver","_ref9","obs","entry","nowInView","isIntersecting","thresholds","threshold","intersectionRatio","call","toObserve","observe","unobserve","getAnimatedPosterSrc","_ref10","start","thumbTime","end","fps","Image","img","STATUS_TO_TONE","loading","loaded","VideoThumbnail","_ref11","setStatus","animatedSrc","handleLoad","handleError","left","top","transform","justifyItems","src","alt","onLoad","onError","opacity","PlayButton","VideoInBrowser","_ref12","onSelect","onEdit","renderVideo","setRenderVideo","select","useCallback","edit","playbackPolicy","LockIcon","fallbackPlacements","borderRadius","zIndex","gridTemplateRows","PlayIcon","VideosBrowser","_ref13","editedAsset","setEditedAsset","freshEditedAsset","find","a","Label","Grid","gridTemplateColumns","marginY","StudioTool","createStudioTool","toolConfig","tool","component","path","useAssetDocumentValues","useDocumentValues","isReference","useDialogState","useMuxPolling","useProjectId","useDataset","shouldFetch","static_renditions","useSWR","returnDocuments","refreshInterval","refreshWhenHidden","dedupingInterval","useSecretsDocumentValues","cache","exists","secrets","isInitialSetup","needsSetup","createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","dynamicChunkSize","successHandler","next","complete","errorHandler","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort","saveSecrets","createOrReplace","createSigningKeys","testSecrets","haveValidSigningKeys","res","testSecretsObservable","defer","observable","cancelUpload","testUrl","pipe","switchMap","validUrl","of","json","throwError","generateUuid","muxBody","input","playback_policy","mp4_support","headers","mergeMap","result","results","uploadFile","testFile","fileOptions","body","upload","event","from","updateAssetDocumentFromUpload","catchError","err","mergeMapTo","getUpload","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","asset_id","clearInterval","uploadId","then","window","File","optionsFromFile","parsed","protocol","opts","preserveFilename","extractDroppedFiles","dataTransfer","files","Array","items","normalizeItems","arr","flat","all","item","kind","webkitGetAsEntry","getAsFile","isDirectory","walk","getAsString","isFile","dir","createReader","readEntries","entr","startsWith","SelectAssets","selectedAsset","setDialogState","_ref14","handleSelect","chosenAsset","PatchEvent","unset","setIfMissing","_weak","StyledDialog","InputBrowser","_ref15","__unstable_autoFocus","SelectAsset","useCancelUpload","div","TopControls","CardWrapper","FlexWrapper","LeftSection","CodeWrapper","Code","UploadProgress","_ref16","progress","onCancel","LinearProgress","Player","_ref17","buttons","readOnly","isPreparingStaticRenditions","playRef","muteRef","handleCancelUpload","createElement","innerHTML","shadowRoot","appendChild","cloneNode","errors","messages","slot","background","focusRingBorderStyle","focusRingStyle","focusRing","focusRingOutsetWidth","offset","focusRingInsetWidth","bgColor","bg","FileButton","_ref18","css","FileInputMenuItem","forwardRef","forwardedRef","idProp","accept","capture","multiple","rest","idHook","handleChange","target","marginRight","isValidElementType","textOverflow","LockCard","LockButton","PlayerActionsMenu","dialogState","onUpload","open","setOpen","menuElement","setMenuRef","isSigned","onReset","useClickOutside","scheme","Popover","UploadIcon","MenuDivider","PlugIcon","ResetIcon","EllipsisVerticalIcon","withFocusRing","$border","rem","ctrlKey","cmdKey","UploadCardWithFocusRing","UploadCard","_ref19","onPaste","onDrop","onDragEnter","onDragLeave","onDragOver","ctrlDown","inputRef","handleKeyDown","keyCode","vKey","focus","handleKeyUp","tabIndex","onKeyDown","onKeyUp","HiddenInput","attrs","FileInputButton","_ref20","handleButtonClick","click","ConfigureApiBox","UploadPlaceholder","hovering","handleBrowse","handleConfigureApi","borderColor","DocumentVideoIcon","MuxVideoInputUploader","Component","constructor","__publicField","isDraggingOver","invalidPaste","invalidFile","uploadProgress","fileInfo","createRef","evt","takeUntil","onCancelUploadButtonClick$","tap","subscribe","handleUploadEvent","handleUploadSuccess","handleProgress","clipboardData","getData","sEvent","toLowerCase","setTimeout","preventDefault","stopPropagation","nativeEvent","dragEnteredEls","idx","indexOf","splice","componentWillUnmount","unSubscribeToUpload","componentDidMount","events$","Subject","asObservable","handleCancelUploadButtonClick","closed","unsubscribe","render","handleDrop","handleDragOver","handleDragLeave","handleDragEnter","handlePaste","container","useSaveSecrets","_ref21","valid","hasValidSigningKeys","private_key","log","init","_ref22","submitting","reducer","action","useSecretsFormState","useReducer","ids","MuxLogo","_ref23","titleId","b","c","f","g","h","j","k","l","m","n","o","p","q","r","field","role","xmlSpace","spreadMethod","gradientTransform","gradientUnits","y2","x2","y1","x1","stopOpacity","stopColor","clipPathUnits","clipPath","Logo","span","Header","fieldNames","ConfigureApi","_ref24","dispatch","hasSecretsInitially","dirty","tokenId","secretKeyId","enableSignedUrlsId","firstField","handleSaveSecrets","saving","handleSubmit","reportValidity","savedSecrets","clear","secretsId","catch","finally","handleChangeToken","handleChangeSecretKey","handleChangeEnableSignedUrls","maxWidth","onSubmit","noValidate","href","rel","required","paddingLeft","ErrorBoundaryCard","pushToast","errorRef","ErrorBoundary","didCatch","reset","useErrorBoundary","onDidCatch","errorInfo","group","toString","groupCollapsed","groupEnd","stack","componentStack","scrollIntoView","behavior","scrollMode","block","handleRetry","paddingX","columns","InputFallback","Onboard","handleOpen","boxShadow","Input","secretDocumentValues","assetDocumentValues","poll","Suspense","fallback","Uploader","muxVideoCustomRendering","components","preview","prepare","muxVideo","fields","weak","to","muxVideoAsset","defaultConfig","muxInput","definePlugin","userConfig","types","tools"],"mappings":"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"}
|