sanity-plugin-mux-input 2.0.6-debug.0 → 2.0.6-debug.1

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.
@@ -4,10 +4,10 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
4
4
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
- var VideoSource_styled = require('./VideoSource.styled-1a8b1b24.js');
7
+ var VideoSource_styled = require('./VideoSource.styled-58d3e8e8.cjs');
8
8
  var sanity = require('sanity');
9
9
  var useSWR = require('swr');
10
- var index = require('./index-748efd6b.js');
10
+ var index = require('./index-1748427d.cjs');
11
11
  var rxjs = require('rxjs');
12
12
  var operators = require('rxjs/operators');
13
13
  var uuid = require('@sanity/uuid');
@@ -2676,4 +2676,4 @@ const Input = props => {
2676
2676
  };
2677
2677
  var Input$1 = React.memo(Input);
2678
2678
  exports.default = Input$1;
2679
- //# sourceMappingURL=Input-0c9eb69e.js.map
2679
+ //# sourceMappingURL=Input-e9ed3e84.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-e9ed3e84.cjs","sources":["../../src/hooks/useDialogState.ts","../../src/hooks/useMuxPolling.ts","../../src/hooks/useSecretsDocumentValues.ts","../../src/clients/upChunkObservable.ts","../../src/actions/assets.ts","../../src/actions/secrets.ts","../../src/actions/upload.ts","../../src/util/extractFiles.ts","../../src/components/VideoSource.tsx","../../src/components/SelectAsset.tsx","../../src/components/InputBrowser.tsx","../../src/hooks/useCancelUpload.ts","../../src/util/getVideoSrc.ts","../../src/components/EditThumbnailDialog.tsx","../../src/util/getStoryboardSrc.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/FormField.tsx","../../src/components/ConfigureApi.tsx","../../src/components/Onboard.tsx","../../src/components/Input.tsx"],"sourcesContent":["// 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 * as 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 type {SanityClient} from 'sanity'\n\nimport type {MuxAsset} from '../util/types'\n\nexport function deleteAsset(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 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","import type {SanityClient} from 'sanity'\nimport {defer} from 'rxjs'\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 type {SanityClient} from 'sanity'\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {type Observable, concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\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.clientConfig.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.clientConfig.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.clientConfig.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 {EllipsisVerticalIcon, TrashIcon} from '@sanity/icons'\nimport {DownloadIcon} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Checkbox,\n Dialog,\n Flex,\n Grid,\n Menu,\n MenuButton,\n MenuItem,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useToast,\n} from '@sanity/ui'\nimport {animate} from 'motion'\nimport React, {memo, useCallback, useEffect, useId, useLayoutEffect, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {getDevicePixelRatio} from 'use-device-pixel-ratio'\n\nimport {deleteAsset} from '../actions/assets'\nimport {useClient} from '../hooks/useClient'\nimport type {VideoAssetDocument} from '../util/types'\nimport {AnimatedVideoThumbnail, CardLoadMore, ThumbGrid, VideoThumbnail} from './VideoSource.styled'\n\nexport interface AssetActionsMenuProps {\n asset: VideoAssetDocument\n}\n\nfunction AssetActionsMenu(props: AssetActionsMenuProps) {\n const {asset} = props\n const id = useId()\n const [dialogState, setDialogState] = useState<false | 'show-uses' | 'confirm-delete'>()\n const [open, setOpen] = useState(false)\n const [menuElement, setMenuRef] = useState<HTMLDivElement | null>(null)\n\n const handleDelete = useCallback(() => setDialogState('confirm-delete'), [])\n const handleClick = useCallback(() => {\n setDialogState(false)\n setOpen(true)\n }, [setDialogState])\n const handleClose = useCallback(() => {\n setDialogState(false)\n setOpen(false)\n }, [setDialogState])\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 <>\n <MenuButton\n id={`${id}-asset-menu`}\n button={\n <Button icon={EllipsisVerticalIcon} mode=\"ghost\" onClick={handleClick} padding={2} />\n }\n menu={\n <Menu ref={setMenuRef}>\n <MenuItem tone=\"critical\" icon={TrashIcon} text=\"Delete\" onClick={handleDelete} />\n </Menu>\n }\n portal\n placement=\"right\"\n />\n {dialogState === 'confirm-delete' && <DeleteDialog asset={asset} onClose={handleClose} />}\n </>\n )\n}\n\ninterface DeleteDialogProps {\n asset: VideoAssetDocument\n onClose: () => void\n}\nfunction DeleteDialog(props: DeleteDialogProps) {\n const {asset, onClose} = props\n const client = useClient()\n const {push: pushToast} = useToast()\n const [deleting, setDeleting] = useState(false)\n const [deleteOnMux, setDeleteOnMux] = useState(false)\n const id = useId()\n const noPaddingOnStack = true\n const width = 200 * getDevicePixelRatio({maxDpr: 2})\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n try {\n if (asset?._id) {\n await client.delete(asset._id)\n }\n if (deleteOnMux && asset?.assetId) {\n await deleteAsset(client, asset.assetId)\n }\n document\n .querySelector(`[data-id=\"${asset._id}\"]`)\n ?.parentElement?.setAttribute?.('hidden', 'true')\n } catch (err: any) {\n console.error('Failed during delete', err)\n pushToast({\n closable: true,\n description: err?.message,\n duration: 5000,\n title: 'Uncaught error',\n status: 'error',\n })\n } finally {\n setDeleting(false)\n onClose()\n }\n }, [asset._id, asset.assetId, client, deleteOnMux, onClose, pushToast])\n\n return (\n <Dialog\n onClose={onClose}\n id={`${id}-confirm-delete`}\n header=\"Delete video\"\n footer={\n <Grid padding={2} gap={2} columns={2}>\n <Button mode=\"bleed\" text=\"Cancel\" onClick={onClose} />\n <Button\n text=\"Delete\"\n tone=\"critical\"\n icon={TrashIcon}\n onClick={handleDelete}\n loading={deleting}\n // disabled={!canDelete}\n />\n </Grid>\n }\n // __unstable_autoFocus\n width={1}\n >\n <Stack\n paddingX={noPaddingOnStack ? 0 : [2, 3, 4]}\n paddingY={noPaddingOnStack ? 0 : [3, 3, 3, 4]}\n space={1}\n >\n <Card paddingX={[2, 3, 4]} paddingY={[3, 3, 3, 4]}>\n <Grid columns={3} gap={3}>\n <Flex style={{gridColumn: 'span 2'}} align=\"center\">\n <Box padding={4}>\n <Stack space={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 </Box>\n </Flex>\n <VideoThumbnail asset={asset} width={width} showTip />\n </Grid>\n </Card>\n </Stack>\n </Dialog>\n )\n}\n\nexport interface Props {\n assets: VideoAssetDocument[]\n isLoading: boolean\n isLastPage: boolean\n onSelect: (assetId: string) => void\n onLoadMore: () => void\n}\n\nexport default function VideoSource({assets, isLoading, isLastPage, onSelect, onLoadMore}: Props) {\n const handleClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (event) => onSelect(event.currentTarget.dataset.id!),\n [onSelect]\n )\n const handleKeyPress = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'Enter') {\n onSelect(event.currentTarget.dataset.id!)\n }\n },\n [onSelect]\n )\n const width = 200 * getDevicePixelRatio({maxDpr: 2})\n\n return (\n <>\n <Box padding={4}>\n <ThumbGrid gap={2}>\n {assets.map((asset) => (\n <VideoSourceItem\n key={asset._id}\n asset={asset}\n onClick={handleClick}\n onKeyPress={handleKeyPress}\n width={width}\n />\n ))}\n </ThumbGrid>\n {isLoading && assets.length === 0 && (\n <Flex justify=\"center\">\n <Spinner muted />\n </Flex>\n )}\n\n {!isLoading && assets.length === 0 && (\n <Text align=\"center\" muted>\n No videos\n </Text>\n )}\n </Box>\n {assets.length > 0 && !isLastPage && (\n <CardLoadMore tone=\"default\" padding={4}>\n <Flex direction=\"column\">\n <Button\n type=\"button\"\n icon={DownloadIcon}\n loading={isLoading}\n onClick={onLoadMore}\n text=\"Load more\"\n tone=\"primary\"\n />\n </Flex>\n </CardLoadMore>\n )}\n </>\n )\n}\n\ninterface VideoSourceItemProps {\n asset: VideoAssetDocument\n onClick: React.MouseEventHandler<HTMLDivElement>\n onKeyPress: React.KeyboardEventHandler<HTMLDivElement>\n width: number\n}\nconst _VideoSourceItem = ({asset, onClick, onKeyPress, width}: VideoSourceItemProps) => {\n const [hover, setHover] = useState<boolean | null>(null)\n const ref = useRef<HTMLDivElement>(null)\n useLayoutEffect(() => {\n if (!ref.current || hover === null) {\n return\n }\n if (hover) {\n animate(ref.current, {opacity: 1})\n } else {\n animate(ref.current, {opacity: 0})\n }\n }, [hover])\n return (\n <Box height=\"fill\" style={{position: 'relative'}}>\n <Card\n as=\"button\"\n data-id={asset._id}\n onClick={onClick}\n onKeyPress={onKeyPress}\n tabIndex={0}\n radius={2}\n padding={1}\n style={{lineHeight: 0, position: 'relative'}}\n __unstable_focusRing\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n >\n <VideoThumbnail asset={asset} width={width} showTip />\n {asset?.playbackId && (\n <AnimateWrapper tone=\"transparent\" ref={ref} margin={1} radius={1}>\n {hover !== null && <AnimatedVideoThumbnail asset={asset} width={width} />}\n </AnimateWrapper>\n )}\n </Card>\n <ActionsAssetsContainer>\n <AssetActionsMenu asset={asset} />\n </ActionsAssetsContainer>\n </Box>\n )\n}\nconst VideoSourceItem = memo(_VideoSourceItem)\nconst AnimateWrapper = styled(Card)`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n will-change: opacity;\n background: transparent;\n background-color: hsl(0deg 0% 0% / 33%);\n opacity: 0;\n pointer-events: none;\n`\n\nconst ActionsAssetsContainer = styled.div`\n box-sizing: border-box;\n position: absolute;\n z-index: 300;\n opacity: 0;\n top: 7px;\n right: 7px;\n\n button:hover + &,\n button:focus-visible + &,\n &:hover,\n &:focus-visible {\n opacity: 1;\n }\n`\n","import React, {useCallback, useEffect, useRef, useState} from 'react'\nimport {PatchEvent, set, setIfMissing} from 'sanity'\n\nimport {useClient} from '../hooks/useClient'\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport VideoSource, {type Props as VideoSourceProps} from './VideoSource'\n\nconst PER_PAGE = 200\n\nfunction createQuery(start = 0, end = PER_PAGE) {\n return /* groq */ `*[_type == \"mux.videoAsset\"] | order(_updatedAt desc) [${start}...${end}]`\n}\n\nexport interface Props extends Pick<MuxInputProps, 'onChange'> {\n asset?: VideoAssetDocument | null | undefined\n setDialogState: SetDialogState\n}\n\nexport default function SelectAssets({asset, onChange, setDialogState}: Props) {\n const client = useClient()\n const pageNoRef = useRef(0)\n const [isLastPage, setLastPage] = useState(false)\n const [isLoading, setLoading] = useState(false)\n const [assets, setAssets] = useState<VideoAssetDocument[]>([])\n\n const fetchPage = useCallback(\n (pageNo: number) => {\n const start = pageNo * PER_PAGE\n const end = start + PER_PAGE\n setLoading(true)\n return client\n .fetch(createQuery(start, end))\n .then((result: VideoAssetDocument[]) => {\n setLastPage(result.length < PER_PAGE)\n setAssets((prev) => prev.concat(result))\n })\n .finally(() => setLoading(false))\n },\n [client]\n )\n const handleSelect = useCallback<VideoSourceProps['onSelect']>(\n (id) => {\n const selected = assets.find((doc) => doc._id === id)\n if (!selected) {\n throw new TypeError(`Failed to find video asset with id: ${id}`)\n }\n onChange(\n PatchEvent.from([\n setIfMissing({asset: {}}),\n set({_type: 'reference', _weak: true, _ref: selected._id}, ['asset']),\n ])\n )\n setDialogState(false)\n },\n [assets, onChange, setDialogState]\n )\n const handleLoadMore = useCallback<VideoSourceProps['onLoadMore']>(() => {\n fetchPage(++pageNoRef.current)\n }, [fetchPage])\n\n useEffect(() => void fetchPage(pageNoRef.current), [fetchPage])\n\n return (\n <VideoSource\n onSelect={handleSelect}\n assets={assets}\n isLastPage={isLastPage}\n isLoading={isLoading}\n onLoadMore={handleLoadMore}\n />\n )\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\n scheme=\"dark\"\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 </Dialog>\n )\n}\n","import {useCallback} from 'react'\nimport {PatchEvent, unset} from 'sanity'\n\nimport {deleteAsset} 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 deleteAsset(client, asset.assetId)\n }\n if (asset._id) {\n client.delete(asset._id)\n }\n }, [asset, client, onChange])\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 {Button, Dialog, Stack, Text} from '@sanity/ui'\nimport React, {useCallback, useId, useMemo, useState} from 'react'\nimport {getDevicePixelRatio} from 'use-device-pixel-ratio'\n\nimport {useClient} from '../hooks/useClient'\nimport type {SetDialogState} from '../hooks/useDialogState'\nimport type {VideoAssetDocument} from '../util/types'\nimport {VideoThumbnail} from './VideoSource.styled'\n\nexport interface Props {\n asset: VideoAssetDocument\n getCurrentTime: () => number\n setDialogState: SetDialogState\n}\nexport default function EditThumbnailDialog({asset, getCurrentTime, setDialogState}: Props) {\n const client = useClient()\n const dialogId = `EditThumbnailDialog${useId()}`\n const nextTime = useMemo(() => getCurrentTime(), [getCurrentTime])\n const assetWithNewThumbnail = useMemo(() => ({...asset, thumbTime: nextTime}), [asset, nextTime])\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const handleSave = useCallback(() => {\n setSaving(true)\n client\n .patch(asset._id!)\n .set({thumbTime: nextTime})\n .commit({returnDocuments: false})\n .then(() => void setDialogState(false))\n .catch(setError)\n .finally(() => void setSaving(false))\n }, [client, asset._id, nextTime, setDialogState])\n const width = 300 * getDevicePixelRatio({maxDpr: 2})\n\n if (error) {\n // eslint-disable-next-line no-warning-comments\n // @TODO handle errors more gracefully\n throw error\n }\n\n return (\n <Dialog\n id={dialogId}\n header=\"Edit thumbnail\"\n onClose={() => setDialogState(false)}\n footer={\n <Stack padding={3}>\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n loading={saving}\n onClick={handleSave}\n text=\"Set new thumbnail\"\n />\n </Stack>\n }\n >\n <Stack space={3} padding={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Current:\n </Text>\n <VideoThumbnail asset={asset} width={width} />\n </Stack>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n New:\n </Text>\n <VideoThumbnail asset={assetWithNewThumbnail} width={width} />\n </Stack>\n </Stack>\n </Dialog>\n )\n}\n","import type {SanityClient} from 'sanity'\n\nimport {generateJwt} from './generateJwt'\nimport {getPlaybackId} from './getPlaybackId'\nimport {getPlaybackPolicy} from './getPlaybackPolicy'\nimport type {MuxStoryboardUrl, VideoAssetDocument} from './types'\n\ninterface StoryboardSrcOptions {\n asset: VideoAssetDocument\n client: SanityClient\n}\n\nexport function getStoryboardSrc({asset, client}: StoryboardSrcOptions): MuxStoryboardUrl {\n const playbackId = getPlaybackId(asset)\n const searchParams = new URLSearchParams()\n\n if (getPlaybackPolicy(asset) === 'signed') {\n const token = generateJwt(client, playbackId, 's')\n searchParams.set('token', token)\n }\n\n return `https://image.mux.com/${playbackId}/storyboard.vtt?${searchParams}`\n}\n","import {Card} from '@sanity/ui'\nimport {MediaControlBar, MediaPosterImage} from 'media-chrome/dist/react'\nimport React, {useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\n\nimport {useClient} from '../hooks/useClient'\nimport {getPosterSrc} from '../util/getPosterSrc'\nimport {getStoryboardSrc} from '../util/getStoryboardSrc'\nimport type {VideoAssetDocument} from '../util/types'\n\nexport const VideoContainer = styled(Card)`\n position: relative;\n min-height: 150px;\n aspect-ratio: 16 / 9;\n overflow: hidden;\n border-radius: 1px;\n media-airplay-button[media-airplay-unavailable] {\n display: none;\n }\n media-volume-range[media-volume-unavailable] {\n display: none;\n }\n media-pip-button[media-pip-unavailable] {\n display: none;\n }\n media-controller {\n --media-control-background: transparent;\n --media-control-hover-background: transparent;\n --media-range-track-background-color: rgba(255, 255, 255, 0.5);\n --media-range-track-border-radius: 3px;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n media-control-bar {\n --media-button-icon-width: 18px;\n --media-preview-time-margin: 0px;\n }\n media-control-bar:not([slot]) :is([role='button'], [role='switch'], button) {\n height: 44px;\n }\n .size-extra-small media-control-bar [role='button'],\n .size-extra-small media-control-bar [role='switch'] {\n height: auto;\n padding: 4.4% 3.2%;\n }\n .mxp-spacer {\n flex-grow: 1;\n height: 100%;\n background-color: var(--media-control-background, rgba(20, 20, 30, 0.7));\n }\n media-controller::part(vertical-layer) {\n transition: background-color 1s;\n }\n media-controller:is([media-paused], :not([user-inactive]))::part(vertical-layer) {\n background-color: rgba(0, 0, 0, 0.6);\n transition: background-color 0.25s;\n }\n .mxp-center-controls {\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 }\n .mxp-center-controls 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 .mxp-center-controls media-seek-backward-button,\n .mxp-center-controls media-seek-forward-button {\n --media-control-background: transparent;\n --media-control-hover-background: transparent;\n padding: 0;\n margin: 0 10%;\n width: min(7%, 70px);\n }\n media-loading-indicator {\n --media-loading-icon-width: 100%;\n --media-button-icon-height: auto;\n pointer-events: none;\n position: absolute;\n width: min(15%, 150px);\n display: flex;\n flex-flow: row;\n align-items: center;\n justify-content: center;\n }\n /* Intentionally don't target the div for transition but the children\n of the div. Prevents messing with media-chrome's autohide feature. */\n media-loading-indicator + div * {\n transition: opacity 0.15s;\n opacity: 1;\n }\n media-loading-indicator[media-loading]:not([media-paused]) ~ div > * {\n opacity: 0;\n transition-delay: 400ms;\n }\n media-volume-range {\n width: min(100%, 100px);\n }\n media-time-display {\n white-space: nowrap;\n }\n :is(media-time-display, media-text-display, media-playback-rate-button) {\n color: inherit;\n }\n media-controller:fullscreen media-control-bar[slot='top-chrome'] {\n /* Hide menus and buttons that trigger modals when in full-screen */\n display: none;\n }\n video {\n background: transparent;\n }\n media-controller:not(:fullscreen) video {\n aspect-ratio: 16 / 9;\n }\n media-controller:not(:-webkit-full-screen) video {\n aspect-ratio: 16 / 9;\n }\n`\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(MediaControlBar)`\n justify-content: flex-end;\n button {\n height: auto;\n }\n`\n\nexport interface PosterImageProps {\n asset: VideoAssetDocument\n}\nexport function PosterImage({asset}: PosterImageProps) {\n const client = useClient()\n const ref = useRef<HTMLElement>(null)\n const src = useMemo(\n () => getPosterSrc({client, asset, width: 1920, height: 1080}),\n [client, asset]\n )\n\n useEffect(() => {\n if (ref.current) {\n const style = document.createElement('style')\n style.innerHTML = 'img { object-fit: contain; }'\n if (ref.current?.shadowRoot) {\n ref.current.shadowRoot.appendChild(style)\n }\n }\n }, [])\n\n return <MediaPosterImage ref={ref} slot=\"poster\" src={src} />\n}\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 MuxVideo from '@mux/mux-video-react'\nimport {Card, Text} from '@sanity/ui'\nimport {\n MediaControlBar,\n MediaController,\n MediaDurationDisplay,\n MediaFullscreenButton,\n MediaLoadingIndicator,\n MediaMuteButton,\n MediaPlayButton,\n MediaTimeDisplay,\n MediaTimeRange,\n} from 'media-chrome/dist/react'\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {useCancelUpload} from '../hooks/useCancelUpload'\nimport {useClient} from '../hooks/useClient'\nimport type {DialogState, SetDialogState} from '../hooks/useDialogState'\nimport {getVideoSrc} from '../util/getVideoSrc'\nimport type {MuxInputProps, VideoAssetDocument} from '../util/types'\nimport EditThumbnailDialog from './EditThumbnailDialog'\nimport {\n PosterImage,\n StyledCenterControls,\n ThumbnailsMetadataTrack,\n TopControls,\n VideoContainer,\n} from './Player.styled'\nimport {UploadProgress} from './UploadProgress'\n\ninterface Props extends Pick<MuxInputProps, 'onChange' | 'readOnly'> {\n buttons?: React.ReactNode\n asset: VideoAssetDocument\n dialogState: DialogState\n setDialogState: SetDialogState\n}\n\nconst MuxVideoOld = ({asset, buttons, readOnly, onChange, dialogState, setDialogState}: Props) => {\n const client = useClient()\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 videoSrc = useMemo(() => asset.playbackId && getVideoSrc({client, asset}), [asset, client])\n const [error, setError] = useState<MediaError | Error | null>(null)\n const handleError = useCallback<React.ReactEventHandler<HTMLVideoElement>>(\n (event) => setError(event.currentTarget.error),\n []\n )\n const playRef = useRef<HTMLDivElement>(null)\n const muteRef = useRef<HTMLDivElement>(null)\n const video = useRef<HTMLVideoElement>(null)\n const getCurrentTime = useCallback(() => video.current?.currentTime ?? 0, [video])\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 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 if (error) {\n // @TODO better error handling\n throw error\n }\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 <>\n <VideoContainer shadow={1} tone=\"transparent\" scheme=\"dark\">\n <MediaController>\n <MuxVideo\n playsInline\n ref={video}\n playbackId={`${asset.playbackId}${signedToken ? `?token=${signedToken}` : ''}`}\n onError={handleError}\n slot=\"media\"\n preload=\"metadata\"\n crossOrigin=\"anonomous\"\n debug\n >\n <ThumbnailsMetadataTrack asset={asset} />\n </MuxVideo>\n <PosterImage asset={asset} />\n <MediaLoadingIndicator slot=\"centered-chrome\" noAutoHide />\n <StyledCenterControls slot=\"centered-chrome\">\n <MediaPlayButton />\n </StyledCenterControls>\n {buttons && <TopControls slot=\"top-chrome\">{buttons}</TopControls>}\n <MediaControlBar>\n <MediaMuteButton />\n <MediaTimeDisplay />\n <MediaTimeRange />\n <MediaDurationDisplay />\n <MediaFullscreenButton />\n </MediaControlBar>\n </MediaController>\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 </VideoContainer>\n {dialogState === 'edit-thumbnail' && (\n <EditThumbnailDialog\n asset={asset}\n getCurrentTime={getCurrentTime}\n setDialogState={setDialogState}\n />\n )}\n </>\n )\n}\n\nexport default MuxVideoOld\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 EditIcon,\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 {!readOnly && (\n <Button icon={EditIcon} mode=\"ghost\" onClick={() => setDialogState('edit-thumbnail')} />\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 {type CardTone, Card} 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 {type ButtonProps, Button} 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 {type FileInputButtonProps, FileInputButton} 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 type {SanityClient} from 'sanity'\nimport React, {Component} from 'react'\nimport {type Observable, Subject} from 'rxjs'\nimport {takeUntil, tap} from 'rxjs/operators'\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 dialogState={this.props.dialogState}\n setDialogState={this.props.setDialogState}\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 type {SanityClient} from 'sanity'\nimport {useCallback} from 'react'\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 {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 <Flex>\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 </Flex>\n </Stack>\n </Box>\n </Flex>\n <div>{children}</div>\n </Stack>\n )\n}\n\nexport default memo(FormField)\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 id={id} onClose={handleClose} header={<Header />} width={0}>\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","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 React, {memo} 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 {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 <>\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 </>\n )\n}\n\nexport default memo(Input)\n"],"names":["useDialogState","useState","useMuxPolling","asset","_a","_b","client","useClient","projectId","useProjectId","dataset","useDataset","shouldFetch","useMemo","assetId","status","data","static_renditions","useSWR","default","request","url","withCredentials","method","patch","_id","set","commit","returnDocuments","refreshInterval","refreshWhenHidden","dedupingInterval","path","useSecretsDocumentValues","error","isLoading","value","useDocumentValues","muxSecretsDocumentId","cache","exists","Boolean","secrets","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","isInitialSetup","needsSetup","createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","dynamicChunkSize","successHandler","next","type","id","complete","errorHandler","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort","deleteAsset","config","getAsset","saveSecrets","doc","_type","createOrReplace","createSigningKeys","testSecrets","haveValidSigningKeys","res","e","console","testSecretsObservable","defer","observable","cancelUpload","clientConfig","options","testUrl","pipe","switchMap","validUrl","concat","of","json","throwError","generateUuid","muxBody","input","playback_policy","mp4_support","query","JSON","stringify","filename","split","slice","headers","mergeMap","result","results","document","uploadFile","testFile","fileOptions","body","upload","event","from","updateAssetDocumentFromUpload","catchError","err","mergeMapTo","getUpload","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","asset_id","clearInterval","playbackId","playback_ids","uploadId","then","window","File","optionsFromFile","parsed","URL","protocol","match","opts","name","preserveFilename","extractDroppedFiles","dataTransfer","files","Array","items","length","normalizeItems","arr","flat","all","map","item","kind","webkitGetAsEntry","entry","getAsFile","isDirectory","walk","getAsString","str","isFile","dir","createReader","readEntries","entries","filter","entr","startsWith","AssetActionsMenu","props","useId","dialogState","setDialogState","open","setOpen","menuElement","setMenuRef","handleDelete","useCallback","handleClick","handleClose","useEffect","useClickOutside","jsxs","Fragment","children","jsx","MenuButton","button","Button","icon","EllipsisVerticalIcon","mode","onClick","padding","menu","Menu","ref","MenuItem","tone","TrashIcon","text","portal","placement","DeleteDialog","onClose","push","pushToast","useToast","deleting","setDeleting","deleteOnMux","setDeleteOnMux","width","getDevicePixelRatio","maxDpr","_c","delete","querySelector","parentElement","setAttribute","call","closable","description","duration","title","Dialog","header","footer","Grid","gap","columns","loading","Stack","paddingX","paddingY","space","Card","Flex","style","gridColumn","align","Box","as","Checkbox","checked","onChange","prev","Text","margin","disabled","VideoThumbnail","showTip","VideoSource","assets","isLastPage","onSelect","onLoadMore","currentTarget","handleKeyPress","key","ThumbGrid","VideoSourceItem","onKeyPress","justify","Spinner","muted","CardLoadMore","direction","DownloadIcon","_VideoSourceItem","hover","setHover","useRef","useLayoutEffect","current","animate","opacity","height","position","tabIndex","radius","lineHeight","__unstable_focusRing","onMouseEnter","onMouseLeave","AnimateWrapper","AnimatedVideoThumbnail","ActionsAssetsContainer","memo","styled","div","PER_PAGE","createQuery","start","end","SelectAssets","pageNoRef","setLastPage","setLoading","setAssets","fetchPage","pageNo","fetch","finally","handleSelect","selected","find","TypeError","PatchEvent","setIfMissing","_weak","_ref","handleLoadMore","InputBrowser","scheme","__unstable_autoFocus","SelectAsset","useCancelUpload","unset","getVideoSrc","getPlaybackId","searchParams","URLSearchParams","getPlaybackPolicy","generateJwt","EditThumbnailDialog","getCurrentTime","dialogId","nextTime","assetWithNewThumbnail","thumbTime","saving","setSaving","setError","handleSave","catch","size","weight","getStoryboardSrc","VideoContainer","StyledCenterControls","TopControls","MediaControlBar","PosterImage","src","getPosterSrc","createElement","innerHTML","shadowRoot","appendChild","MediaPosterImage","slot","ThumbnailsMetadataTrack","label","CardWrapper","FlexWrapper","LeftSection","CodeWrapper","Code","UploadProgress","progress","onCancel","border","Inline","marginTop","shadow","LinearProgress","fontSize","MuxVideoOld","buttons","readOnly","_d","isPreparingStaticRenditions","videoSrc","handleError","playRef","muteRef","video","currentTime","handleCancelUpload","cloneNode","errors","messages","join","signedToken","get","MediaController","MuxVideo","playsInline","onError","preload","crossOrigin","debug","MediaLoadingIndicator","noAutoHide","MediaPlayButton","MediaMuteButton","MediaTimeDisplay","MediaTimeRange","MediaDurationDisplay","MediaFullscreenButton","background","top","left","color","focusRingBorderStyle","focusRingStyle","base","focusRing","focusRingOutsetWidth","offset","focusRingInsetWidth","bgColor","bg","FileButton","theme","sanity","css","FileInputMenuItem","React","forwardRef","forwardedRef","idProp","accept","capture","multiple","textAlign","rest","idHook","handleChange","target","content","marginRight","isValidElement","isValidElementType","textOverflow","htmlFor","LockCard","LockButton","PlayerActionsMenu","onUpload","isSigned","onReset","Tooltip","LockIcon","EditIcon","Popover","Label","UploadIcon","SearchIcon","MenuDivider","PlugIcon","ResetIcon","withFocusRing","component","$border","rem","ctrlKey","cmdKey","UploadCardWithFocusRing","UploadCard","onPaste","onDrop","onDragEnter","onDragLeave","onDragOver","ctrlDown","inputRef","handleKeyDown","keyCode","vKey","focus","handleKeyUp","onKeyDown","onKeyUp","HiddenInput","attrs","FileInputButton","inputId","handleButtonClick","click","ConfigureApiBox","UploadPlaceholder","hovering","handleBrowse","handleConfigureApi","sizing","borderColor","flex","DocumentVideoIcon","MuxVideoInputUploader","Component","constructor","arguments","state","isDraggingOver","invalidPaste","invalidFile","uploadProgress","fileInfo","dragEnteredEls","container","createRef","handleProgress","evt","setState","takeUntil","onCancelUploadButtonClick$","tap","subscribe","handleUploadEvent","handleUploadSuccess","handlePaste","clipboardData","getData","sEvent","toLowerCase","setTimeout","handleDrop","preventDefault","stopPropagation","nativeEvent","handleDragOver","handleDragEnter","handleDragLeave","idx","indexOf","splice","componentWillUnmount","unSubscribeToUpload","componentDidMount","events$","Subject","asObservable","handleCancelUploadButtonClick","closed","unsubscribe","render","Player","useSaveSecrets","valid","hasValidSigningKeys","private_key","log","init","submitting","reducer","action","payload","useSecretsFormState","useReducer","ids","MuxLogo","titleId","a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r","field","role","xmlns","xmlSpace","viewBox","spreadMethod","gradientTransform","gradientUnits","y2","x2","y1","x1","stopOpacity","stopColor","clipPathUnits","clipPath","transform","fill","stroke","Logo","span","Header","FormField","fieldNames","ConfigureApi","dispatch","hasSecretsInitially","dirty","tokenId","secretKeyId","enableSignedUrlsId","firstField","handleSaveSecrets","handleSubmit","reportValidity","savedSecrets","clear","cacheNs","secretsId","handleChangeToken","handleChangeSecretKey","handleChangeEnableSignedUrls","onSubmit","noValidate","href","rel","TextInput","required","display","paddingLeft","Onboard","handleOpen","aspectRatio","boxShadow","Heading","Input","secretDocumentValues","assetDocumentValues","useAssetDocumentValues","poll","InputFallback","Uploader"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var sanity = require('sanity');
5
- var VideoSource_styled = require('./VideoSource.styled-1a8b1b24.js');
5
+ var VideoSource_styled = require('./VideoSource.styled-58d3e8e8.cjs');
6
6
  const MuxVideoPreview = _ref => {
7
7
  let {
8
8
  value
@@ -25,4 +25,4 @@ const MuxVideoPreview = _ref => {
25
25
  });
26
26
  };
27
27
  exports.default = MuxVideoPreview;
28
- //# sourceMappingURL=Preview-c090d878.js.map
28
+ //# sourceMappingURL=Preview-6b38beac.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview-6b38beac.cjs","sources":["../../src/components/Preview.tsx"],"sourcesContent":["import React from 'react'\nimport {SanityDefaultPreview} from 'sanity'\n\nimport {useAssetDocumentValues} from '../hooks/useAssetDocumentValues'\nimport {VideoThumbnail} from './VideoSource.styled'\n\nexport interface MuxVideoPreviewProps {\n value: {\n asset: {\n _type: 'reference'\n _ref: string\n }\n }\n}\nconst MuxVideoPreview = ({value}: MuxVideoPreviewProps) => {\n const assetDocumentValues = useAssetDocumentValues(value?.asset!)\n\n if (assetDocumentValues.value) {\n return <VideoThumbnail asset={assetDocumentValues.value} width={640} />\n }\n\n // @ts-expect-error\n const {filename, playbackId, status} = value ?? {}\n\n return (\n <SanityDefaultPreview\n title={filename || playbackId || ''}\n subtitle={status ? `status: ${status}` : null}\n />\n )\n}\n\nexport default MuxVideoPreview\n"],"names":["MuxVideoPreview","value","assetDocumentValues","useAssetDocumentValues","asset","VideoThumbnail","width","filename","playbackId","status","jsx","SanityDefaultPreview","title","subtitle"],"mappings":";;;;;AAcA,MAAMA,eAAkB,GAAA,QAAmC;EAAA,IAAlC;IAACC;GAAiC;EACnD,MAAAC,mBAAA,GAAsBC,kBAAuB,CAAAA,sBAAA,CAAAF,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAOG,KAAM,CAAA;EAEhE,IAAIF,oBAAoBD,KAAO,EAAA;IAC7B,qCAAQI,kBAAe,CAAAA,cAAA,EAAA;MAAAD,KAAA,EAAOF,mBAAoB,CAAAD,KAAA;MAAOK,OAAO;IAAK,CAAA,CAAA;EACvE;EAGA,MAAM;IAACC,QAAU;IAAAC,UAAA;IAAYC;EAAM,CAAA,GAAIR,wBAAS,EAAC;EAG/C,sBAAAS,UAAA,CAAAA,GAAA,CAACC,MAAA,CAAAA,oBAAA,EAAA;IACCC,KAAA,EAAOL,YAAYC,UAAc,IAAA,EAAA;IACjCK,QAAA,EAAUJ,MAAS,qBAAWA,MAAW,IAAA;EAAA,CAAA,CAC3C;AAEJ,CAAA;"}
@@ -10,7 +10,7 @@ var React = require('react');
10
10
  var styled = require('styled-components');
11
11
  var suspendReact = require('suspend-react');
12
12
  var useErrorBoundary = require('use-error-boundary');
13
- var index = require('./index-748efd6b.js');
13
+ var index = require('./index-1748427d.cjs');
14
14
  function _interopDefaultCompat(e) {
15
15
  return e && typeof e === 'object' && 'default' in e ? e : {
16
16
  default: e
@@ -333,4 +333,4 @@ exports.getPlaybackPolicy = getPlaybackPolicy;
333
333
  exports.getPosterSrc = getPosterSrc;
334
334
  exports.useAssetDocumentValues = useAssetDocumentValues;
335
335
  exports.useClient = useClient;
336
- //# sourceMappingURL=VideoSource.styled-1a8b1b24.js.map
336
+ //# sourceMappingURL=VideoSource.styled-58d3e8e8.cjs.map