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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,10 +2,10 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
2
2
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
4
  import React, { useState, useMemo, memo, useRef, useLayoutEffect, useCallback, useId, useEffect, isValidElement, createElement, forwardRef, Component, useReducer } from 'react';
5
- import { useClient, VideoThumbnail, AnimatedVideoThumbnail, ThumbGrid, CardLoadMore, getPlaybackId, getPlaybackPolicy, generateJwt, getPosterSrc, _id, useAssetDocumentValues } from './VideoSource.styled-e880b6e4.js';
5
+ import { useClient, VideoThumbnail, AnimatedVideoThumbnail, ThumbGrid, CardLoadMore, getPlaybackId, getPlaybackPolicy, generateJwt, getPosterSrc, _id, useAssetDocumentValues } from './VideoSource.styled-5aa3e3e6.js';
6
6
  import { useProjectId, useDataset, useDocumentValues, PatchEvent, setIfMissing, set, unset, LinearProgress } from 'sanity';
7
7
  import useSWR from 'swr';
8
- import { muxSecretsDocumentId, cacheNs, InputFallback } from './index-a9d40189.js';
8
+ import { muxSecretsDocumentId, cacheNs, InputFallback } from './index-e2c54741.js';
9
9
  import { Observable, defer, concat, of, throwError, from, Subject } from 'rxjs';
10
10
  import { switchMap, mergeMap, catchError, mergeMapTo, takeUntil, tap } from 'rxjs/operators';
11
11
  import { uuid } from '@sanity/uuid';
@@ -15,7 +15,7 @@ import { DownloadIcon, EllipsisVerticalIcon, TrashIcon, LockIcon, EditIcon, Uplo
15
15
  import { animate } from 'motion';
16
16
  import styled, { css } from 'styled-components';
17
17
  import { getDevicePixelRatio } from 'use-device-pixel-ratio';
18
- import { generatePlayerInitTime, initialize } from '@mux/playback-core';
18
+ import MuxVideo from '@mux/mux-video-react';
19
19
  import { MediaControlBar, MediaPosterImage, MediaController, MediaLoadingIndicator, MediaPlayButton, MediaMuteButton, MediaTimeDisplay, MediaTimeRange, MediaDurationDisplay, MediaFullscreenButton } from 'media-chrome/dist/react';
20
20
  import { isValidElementType } from 'react-is';
21
21
  import { clear, preload } from 'suspend-react';
@@ -1031,7 +1031,7 @@ const UploadProgress = _ref10 => {
1031
1031
  })
1032
1032
  });
1033
1033
  };
1034
- const MuxVideo = _ref11 => {
1034
+ const MuxVideoOld = _ref11 => {
1035
1035
  let {
1036
1036
  asset,
1037
1037
  buttons,
@@ -1095,20 +1095,6 @@ const MuxVideo = _ref11 => {
1095
1095
  muteRef.current.shadowRoot.appendChild(style.cloneNode(true));
1096
1096
  }
1097
1097
  }, []);
1098
- const [playerInitTime] = useState(() => generatePlayerInitTime());
1099
- const playbackEngineRef = useRef(void 0);
1100
- useEffect(() => {
1101
- if (isLoading || !videoSrc) {
1102
- return;
1103
- }
1104
- const nextPlaybackEngineRef = initialize({
1105
- src: videoSrc,
1106
- playerInitTime,
1107
- playerSoftwareName: "sanity-plugin-mux-input",
1108
- playerSoftwareVersion: "dev-preview"
1109
- }, video.current, playbackEngineRef.current);
1110
- playbackEngineRef.current = nextPlaybackEngineRef;
1111
- }, [videoSrc, isLoading, playerInitTime]);
1112
1098
  useEffect(() => {
1113
1099
  var _a2, _b2, _c2;
1114
1100
  if ((asset == null ? void 0 : asset.status) === "errored") {
@@ -1116,6 +1102,14 @@ const MuxVideo = _ref11 => {
1116
1102
  throw new Error((_c2 = (_b2 = (_a2 = asset.data) == null ? void 0 : _a2.errors) == null ? void 0 : _b2.messages) == null ? void 0 : _c2.join(" "));
1117
1103
  }
1118
1104
  }, [(_d = (_c = asset.data) == null ? void 0 : _c.errors) == null ? void 0 : _d.messages, asset == null ? void 0 : asset.status, handleCancelUpload]);
1105
+ const signedToken = useMemo(() => {
1106
+ try {
1107
+ const url = new URL(videoSrc);
1108
+ return url.searchParams.get("token");
1109
+ } catch {
1110
+ return false;
1111
+ }
1112
+ }, [videoSrc]);
1119
1113
  if (error) {
1120
1114
  throw error;
1121
1115
  }
@@ -1136,13 +1130,15 @@ const MuxVideo = _ref11 => {
1136
1130
  tone: "transparent",
1137
1131
  scheme: "dark",
1138
1132
  children: [/* @__PURE__ */jsxs(MediaController, {
1139
- children: [/* @__PURE__ */jsx("video", {
1133
+ children: [/* @__PURE__ */jsx(MuxVideo, {
1140
1134
  playsInline: true,
1141
1135
  ref: video,
1136
+ playbackId: "".concat(asset.playbackId).concat(signedToken ? "?token=".concat(signedToken) : ""),
1142
1137
  onError: handleError,
1143
1138
  slot: "media",
1144
1139
  preload: "metadata",
1145
1140
  crossOrigin: "anonomous",
1141
+ debug: true,
1146
1142
  children: /* @__PURE__ */jsx(ThumbnailsMetadataTrack, {
1147
1143
  asset
1148
1144
  })
@@ -1766,7 +1762,7 @@ class MuxVideoInputUploader extends Component {
1766
1762
  onDragEnter: this.handleDragEnter,
1767
1763
  onPaste: this.handlePaste,
1768
1764
  ref: this.container,
1769
- children: this.props.asset ? /* @__PURE__ */jsx(MuxVideo, {
1765
+ children: this.props.asset ? /* @__PURE__ */jsx(MuxVideoOld, {
1770
1766
  readOnly: this.props.readOnly,
1771
1767
  asset: this.props.asset,
1772
1768
  onChange: this.props.onChange,
@@ -2649,4 +2645,4 @@ const Input = props => {
2649
2645
  };
2650
2646
  var Input$1 = memo(Input);
2651
2647
  export { Input$1 as default };
2652
- //# sourceMappingURL=Input-4e0aa2ef.js.map
2648
+ //# sourceMappingURL=Input-080b5b98.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-080b5b98.js","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","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","default","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","PlayerActionsMenu$1","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","FormField$1","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","ConfigureApi$1","Onboard","handleOpen","aspectRatio","boxShadow","Heading","Input","secretDocumentValues","assetDocumentValues","useAssetDocumentValues","poll","InputFallback","Uploader","Input$1"],"mappings":"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"}