sanity-plugin-mux-input 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,6 +59,18 @@ To enable [signed urls](https://docs.mux.com/docs/security-signed-urls) with con
59
59
 
60
60
  More information for this feature of the plugin can be found on Mux's [documentation](https://docs.mux.com/docs/headless-cms-sanity#advanced-signed-urls)
61
61
 
62
+ # Enabling MP4 support
63
+
64
+ To enable [static MP4 renditions](https://docs.mux.com/guides/video/enable-static-mp4-renditions), create or open the config file found in `config/mux-input.json` in your studio folder. This file is automatically created the first time the studio starts after adding the plugin.
65
+
66
+ ```
67
+ {
68
+ "mp4_support": "standard"
69
+ }
70
+ ```
71
+
72
+ Currently `mp4_support` is the only supported MUX option and this supports a value of either `standard` or `none` (the default).
73
+
62
74
  # Contributing
63
75
 
64
76
  Issues are actively monitored and PRs are welcome. When developing this plugin the easiest setup is:
@@ -11,6 +11,8 @@ exports.default = void 0;
11
11
 
12
12
  var _uuid = require("@sanity/uuid");
13
13
 
14
+ var _config = _interopRequireDefault(require("../config"));
15
+
14
16
  var _lodash = require("lodash");
15
17
 
16
18
  var _rxjs = require("rxjs");
@@ -60,7 +62,8 @@ function uploadUrl(url) {
60
62
  var enableSignedUrls = options.enableSignedUrls;
61
63
  var muxBody = {
62
64
  input: validUrl,
63
- playback_policy: [enableSignedUrls ? 'signed' : 'public']
65
+ playback_policy: [enableSignedUrls ? 'signed' : 'public'],
66
+ mp4_support: _config.default.mp4_support
64
67
  };
65
68
  var query = {
66
69
  muxBody: JSON.stringify(muxBody),
@@ -107,11 +110,8 @@ function uploadFile(file) {
107
110
  var uuid = (0, _uuid.uuid)();
108
111
  var enableSignedUrls = options.enableSignedUrls;
109
112
  var body = {
110
- playback_policy: [enableSignedUrls ? 'signed' : 'public'] // TODO: These parameters were enabled by Sanity, but we are not using them yet
111
- // mp4_support: false (default),
112
- // normalize_audio: false (default),
113
- // master_access: false (default),
114
-
113
+ mp4_support: _config.default.mp4_support,
114
+ playback_policy: [enableSignedUrls ? 'signed' : 'public']
115
115
  };
116
116
  return (0, _rxjs.concat)((0, _rxjs.of)({
117
117
  type: 'uuid',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/actions/upload.js"],"names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","validUrl","type","json","status","Error","enableSignedUrls","muxBody","input","playback_policy","query","JSON","stringify","filename","split","slice","headers","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","upload","event","updateAssetDocumentFromUpload","doc","err","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","parsed","URL","protocol","match","opts","fileOpts","preserveFilename","undefined","name","contentType"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {isString} from 'lodash'\nimport {concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\nimport {getAsset} from '../actions/assets'\nimport {testSecretsObservable} from '../actions/secrets'\nimport client from '../clients/SanityClient'\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\n\nexport function cancelUpload(uuid) {\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(url, options = {}) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable().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 }\n const query = {\n muxBody: JSON.stringify(muxBody),\n filename: validUrl.split('/').slice(-1)[0],\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 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(file, options = {}) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable().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 playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n // TODO: These parameters were enabled by Sanity, but we are not using them yet\n // mp4_support: false (default),\n // normalize_audio: false (default),\n // master_access: false (default),\n }\n return concat(\n of({type: 'uuid', uuid}),\n defer(() =>\n client.observable.request({\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 max-nested-callbacks\n mergeMap((event) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(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(uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\nexport function getUpload(assetId) {\n return client.request({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport default {uploadUrl, uploadFile, getUpload}\n\nfunction pollUpload(uuid) {\n const maxTries = 10\n let pollInterval\n let tries = 0\n let assetId\n let upload\n return new Promise((resolve, reject) => {\n pollInterval = setInterval(async () => {\n try {\n upload = await getUpload(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(uuid) {\n let upload\n let asset\n try {\n upload = await pollUpload(uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(upload.data.asset_id)\n } catch (err) {\n return Promise.reject(err)\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) {\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) {\n const error = new Error('Invalid URL')\n if (!isString(url)) {\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, file) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n const fileOpts = {\n filename: opts.preserveFilename === false ? undefined : file.name,\n contentType: file.type,\n }\n\n return {\n ...{\n filename: opts.preserveFilename === false ? undefined : file.name,\n contentType: file.type,\n },\n fileOpts,\n }\n}\n"],"file":"upload.js"}
1
+ {"version":3,"sources":["../../src/actions/upload.js"],"names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","validUrl","type","json","status","Error","enableSignedUrls","muxBody","input","playback_policy","mp4_support","config","query","JSON","stringify","filename","split","slice","headers","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","upload","event","updateAssetDocumentFromUpload","doc","err","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","parsed","URL","protocol","match","opts","fileOpts","preserveFilename","undefined","name","contentType"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport config from '../config'\nimport {isString} from 'lodash'\nimport {concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\nimport {getAsset} from '../actions/assets'\nimport {testSecretsObservable} from '../actions/secrets'\nimport client from '../clients/SanityClient'\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\n\nexport function cancelUpload(uuid) {\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(url, options = {}) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable().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(file, options = {}) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable().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 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 max-nested-callbacks\n mergeMap((event) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(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(uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\nexport function getUpload(assetId) {\n return client.request({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport default {uploadUrl, uploadFile, getUpload}\n\nfunction pollUpload(uuid) {\n const maxTries = 10\n let pollInterval\n let tries = 0\n let assetId\n let upload\n return new Promise((resolve, reject) => {\n pollInterval = setInterval(async () => {\n try {\n upload = await getUpload(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(uuid) {\n let upload\n let asset\n try {\n upload = await pollUpload(uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(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) {\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) {\n const error = new Error('Invalid URL')\n if (!isString(url)) {\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, file) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n const fileOpts = {\n filename: opts.preserveFilename === false ? undefined : file.name,\n contentType: file.type,\n }\n\n return {\n ...{\n filename: opts.preserveFilename === false ? undefined : file.name,\n contentType: file.type,\n },\n fileOpts,\n }\n}\n"],"file":"upload.js"}
@@ -49,6 +49,8 @@ var _Uploader = _interopRequireDefault(require("./Uploader"));
49
49
 
50
50
  var _Video = _interopRequireDefault(require("./Video"));
51
51
 
52
+ var _config = _interopRequireDefault(require("../config"));
53
+
52
54
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
53
55
 
54
56
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -154,7 +156,7 @@ var _default = (0, _formBuilder.withDocument)(class MuxVideoInput extends _react
154
156
 
155
157
  this.pollInterval = setInterval(() => {
156
158
  (0, _assets.getAsset)(assetDocument.assetId).then(response => {
157
- var props = response.data;
159
+ var props = response.data; // TODO: consider a deep comparison on `props` with asset data and only patch only if it's changed
158
160
 
159
161
  _SanityClient.default.patch(assetDocument._id).set({
160
162
  status: props.status,
@@ -473,7 +475,7 @@ var _default = (0, _formBuilder.withDocument)(class MuxVideoInput extends _react
473
475
  }
474
476
 
475
477
  this.subscription = (0, _preview.observePaths)(asset, ['thumbTime', 'data', 'assetId', 'playbackId', 'status']).pipe((0, _operators.tap)(assetDocument => {
476
- var _assetDocument$data, _assetDocument$data$p;
478
+ var _assetDocument$data, _assetDocument$data$s, _assetDocument$data2, _assetDocument$data2$, _assetDocument$data3, _assetDocument$data3$;
477
479
 
478
480
  this.setState({
479
481
  assetDocument
@@ -490,19 +492,37 @@ var _default = (0, _formBuilder.withDocument)(class MuxVideoInput extends _react
490
492
  error: new Error(assetDocument.data.errors.messages.join(' '))
491
493
  });
492
494
  });
493
- }
495
+ } // Poll MUX if it's preparing the main document or its own static renditions
496
+
494
497
 
495
- if (assetDocument && assetDocument.status === 'preparing') {
498
+ if ((assetDocument === null || assetDocument === void 0 ? void 0 : assetDocument.status) === 'preparing' || (assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data = assetDocument.data) === null || _assetDocument$data === void 0 ? void 0 : (_assetDocument$data$s = _assetDocument$data.static_renditions) === null || _assetDocument$data$s === void 0 ? void 0 : _assetDocument$data$s.status) === 'preparing') {
496
499
  this.pollMux();
497
- }
500
+ } // If MP4 support is enabled: MUX will prepare static_renditions only _after_ an asset
501
+ // has been successfully uploaded.
502
+ // A _ready_ asset doesn't mean static mp4s are generated and ready for use!
503
+ // In these cases, wait for `static_renditions.status === 'ready'` before clearing the poll interval.
504
+
498
505
 
499
506
  if (assetDocument && assetDocument.status === 'ready') {
500
- clearInterval(this.pollInterval);
501
- this.pollInterval = null;
507
+ switch (_config.default.mp4_support) {
508
+ case 'standard':
509
+ if ((assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data2 = assetDocument.data) === null || _assetDocument$data2 === void 0 ? void 0 : (_assetDocument$data2$ = _assetDocument$data2.static_renditions) === null || _assetDocument$data2$ === void 0 ? void 0 : _assetDocument$data2$.status) === 'ready') {
510
+ clearInterval(this.pollInterval);
511
+ this.pollInterval = null;
512
+ }
513
+
514
+ break;
515
+
516
+ case 'none':
517
+ default:
518
+ clearInterval(this.pollInterval);
519
+ this.pollInterval = null;
520
+ break;
521
+ }
502
522
  } // eslint-disable-next-line camelcase
503
523
 
504
524
 
505
- var isSigned = (assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data = assetDocument.data) === null || _assetDocument$data === void 0 ? void 0 : (_assetDocument$data$p = _assetDocument$data.playback_ids[0]) === null || _assetDocument$data$p === void 0 ? void 0 : _assetDocument$data$p.policy) === 'signed';
525
+ var isSigned = (assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data3 = assetDocument.data) === null || _assetDocument$data3 === void 0 ? void 0 : (_assetDocument$data3$ = _assetDocument$data3.playback_ids[0]) === null || _assetDocument$data3$ === void 0 ? void 0 : _assetDocument$data3$.policy) === 'signed';
506
526
  this.setState({
507
527
  assetDocument,
508
528
  isSigned,
@@ -655,7 +675,7 @@ var _default = (0, _formBuilder.withDocument)(class MuxVideoInput extends _react
655
675
  }
656
676
 
657
677
  render() {
658
- var _assetDocument$data2, _assetDocument$data2$, _assetDocument$data2$2;
678
+ var _assetDocument$data4, _assetDocument$data4$, _assetDocument$data4$2;
659
679
 
660
680
  var _this$props = this.props,
661
681
  type = _this$props.type,
@@ -671,7 +691,7 @@ var _default = (0, _formBuilder.withDocument)(class MuxVideoInput extends _react
671
691
  confirmRemove = _this$state7.confirmRemove,
672
692
  thumb = _this$state7.thumb,
673
693
  assetDocument = _this$state7.assetDocument;
674
- var cssAspectRatio = (assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data2 = assetDocument.data) === null || _assetDocument$data2 === void 0 ? void 0 : (_assetDocument$data2$ = _assetDocument$data2.aspect_ratio) === null || _assetDocument$data2$ === void 0 ? void 0 : (_assetDocument$data2$2 = _assetDocument$data2$.split(':')) === null || _assetDocument$data2$2 === void 0 ? void 0 : _assetDocument$data2$2.join('/')) || 'auto';
694
+ var cssAspectRatio = (assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data4 = assetDocument.data) === null || _assetDocument$data4 === void 0 ? void 0 : (_assetDocument$data4$ = _assetDocument$data4.aspect_ratio) === null || _assetDocument$data4$ === void 0 ? void 0 : (_assetDocument$data4$2 = _assetDocument$data4$.split(':')) === null || _assetDocument$data4$2 === void 0 ? void 0 : _assetDocument$data4$2.join('/')) || 'auto';
675
695
  return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, {
676
696
  theme: _ui.studioTheme
677
697
  }, /*#__PURE__*/_react.default.createElement(_ui.Box, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Input.js"],"names":["NOOP","cachedSecrets","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","validateSecrets","secrets","getSecrets","Promise","resolve","isInitialSetup","needsSetup","then","exists","MuxVideoInput","Component","constructor","props","assetDocument","confirmRemove","deleteOnMuxChecked","deleteAssetDocumentChecked","error","hasFocus","isLoading","isSigned","showSetup","showBrowser","videoReadyToPlay","thumbLoading","handleFocus","setState","state","pollInterval","setInterval","assetId","response","data","client","patch","_id","set","status","commit","returnDocuments","catch","event","prevState","showStetup","result","onChange","PatchEvent","from","asset","_ref","document","setupAssetListener","preventDefault","stopPropagation","unsetAsset","reject","unset","delete","videoPlayer","current","currentTime","getVideoElement","options","time","thumbTime","width","height","fitMode","thumb","playbackId","newThumb","value","setupButton","React","createRef","video","removeVideoButton","componentDidMount","componentWillUnmount","subscription","unsubscribe","clearInterval","getAsset","pipe","handleRemoveVideo","Error","errors","messages","join","pollMux","playback_ids","policy","subscribe","renderSetup","handleCancelSaveSetup","handleSaveSetup","renderSetupButton","styles","setupButtonContainer","handleSetupButtonClicked","SetupIcon","renderSetupNotice","backgroundColor","borderRadius","renderAsset","isSignedAlert","handleVideoReadyToPlay","renderVideoButtons","readOnly","handleBrowseButton","handleOpenThumb","handleRemoveVideoButtonClicked","renderBrowser","handleCloseBrowser","handleSelectAsset","renderError","handleErrorClose","message","render","type","level","markers","cssAspectRatio","aspect_ratio","split","studioTheme","position","title","description","formField","blur","focus","handleOnUploadComplete","handleCloseThumbPreview","maxWidth","display","aspectRatio","handleSetThumbButton","handleCancelRemove","handleDeleteOnMuxCheckBoxClicked","margin","handleDeleteAssetDocumentCheckBoxClicked"],"mappings":";;;;;;;AAAA;;AAcA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,IAAI,GAAG,MAAM;AACjB;AACD,CAFD;;AAIA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,KAAK,EAAE,IADa;AAEpBC,EAAAA,SAAS,EAAE,IAFS;AAGpBC,EAAAA,gBAAgB,EAAE,KAHE;AAIpBC,EAAAA,YAAY,EAAE,IAJM;AAKpBC,EAAAA,iBAAiB,EAAE;AALC,CAAtB;;AAQA,SAASC,eAAT,CAAyBC,OAAzB,EAAkC;AAChC,MAAI,CAACA,OAAO,CAACN,KAAT,IAAkB,CAACM,OAAO,CAACL,SAA/B,EAA0C,OAAO,KAAP;AAE1C,SAAO,IAAP;AACD;;AAED,SAASM,UAAT,GAAsB;AACpB,MAAIR,aAAa,CAACC,KAAlB,EAAyB;AACvB,WAAOQ,OAAO,CAACC,OAAR,CAAgB;AACrBC,MAAAA,cAAc,EAAE,IADK;AAErBC,MAAAA,UAAU,EAAE,KAFS;AAGrBL,MAAAA,OAAO,EAAEP;AAHY,KAAhB,CAAP;AAKD;;AACD,SAAO,6BAAea,IAAf,CAAoB,QAAuB;AAAA,QAArBN,OAAqB,QAArBA,OAAqB;AAAA,QAAZO,MAAY,QAAZA,MAAY;AAChDd,IAAAA,aAAa,CAACC,KAAd,GAAsBM,OAAO,CAACN,KAA9B;AACAD,IAAAA,aAAa,CAACE,SAAd,GAA0BK,OAAO,CAACL,SAAlC;AACAF,IAAAA,aAAa,CAACG,gBAAd,GAAiCI,OAAO,CAACJ,gBAAzC;AACAH,IAAAA,aAAa,CAACI,YAAd,GAA6BG,OAAO,CAACH,YAArC;AACAJ,IAAAA,aAAa,CAACK,iBAAd,GAAkCE,OAAO,CAACF,iBAA1C;AAEA,WAAO;AACLM,MAAAA,cAAc,EAAE,CAACG,MADZ;AAELF,MAAAA,UAAU,EAAE,CAACN,eAAe,CAACN,aAAD,CAFvB;AAGLO,MAAAA,OAAO,EAAEP;AAHJ,KAAP;AAKD,GAZM,CAAP;AAaD;;eAEc,+BACb,MAAMe,aAAN,SAA4BC,gBAA5B,CAAsC;AAmBpCC,EAAAA,WAAW,CAACC,MAAD,EAAQ;AACjB,UAAMA,MAAN;;AADiB,mCAlBX;AACNC,MAAAA,aAAa,EAAE,IADT;AAENC,MAAAA,aAAa,EAAE,KAFT;AAGNC,MAAAA,kBAAkB,EAAE,KAHd;AAINC,MAAAA,0BAA0B,EAAE,IAJtB;AAKNC,MAAAA,KAAK,EAAE,IALD;AAMNC,MAAAA,QAAQ,EAAE,KANJ;AAONb,MAAAA,cAAc,EAAE,IAPV;AAQNc,MAAAA,SAAS,EAAE,SARL;AASNb,MAAAA,UAAU,EAAE,IATN;AAUNL,MAAAA,OAAO,EAAE,IAVH;AAWNmB,MAAAA,QAAQ,EAAE,KAXJ;AAYNC,MAAAA,SAAS,EAAE,KAZL;AAaNC,MAAAA,WAAW,EAAE,KAbP;AAcNC,MAAAA,gBAAgB,EAAE,KAdZ;AAeNC,MAAAA,YAAY,EAAE;AAfR,KAkBW;;AAAA,mCAkCX,MAAM;AACZ,WAAKC,WAAL;AACD,KApCkB;;AAAA,yCAsCL,MAAM;AAClB,WAAKC,QAAL,CAAc;AAACR,QAAAA,QAAQ,EAAE;AAAX,OAAd;AACD,KAxCkB;;AAAA,wCA0CN,MAAM;AACjB,WAAKQ,QAAL,CAAc;AAACR,QAAAA,QAAQ,EAAE;AAAX,OAAd;AACD,KA5CkB;;AAAA,qCAoGT,MAAM;AACd,UAAML,aAAa,GAAG,KAAKc,KAAL,CAAWd,aAAjC;;AACA,UAAI,CAACA,aAAL,EAAoB;AAClB;AACD;;AACD,UAAI,KAAKe,YAAT,EAAuB;AACrB;AACD;;AACD,WAAKA,YAAL,GAAoBC,WAAW,CAAC,MAAM;AACpC,8BAAShB,aAAa,CAACiB,OAAvB,EACGvB,IADH,CACSwB,QAAD,IAAc;AAClB,cAAMnB,KAAK,GAAGmB,QAAQ,CAACC,IAAvB;;AACAC,gCACGC,KADH,CACSrB,aAAa,CAACsB,GADvB,EAEGC,GAFH,CAEO;AACHC,YAAAA,MAAM,EAAEzB,KAAK,CAACyB,MADX;AAEHL,YAAAA,IAAI,EAAEpB;AAFH,WAFP,EAMG0B,MANH,CAMU;AAACC,YAAAA,eAAe,EAAE;AAAlB,WANV;AAOD,SAVH,EAWGC,KAXH,CAWUvB,KAAD,IAAW;AAChB,eAAKS,QAAL,CAAc;AAACT,YAAAA;AAAD,WAAd;AACD,SAbH;AAcD,OAf8B,EAe5B,IAf4B,CAA/B;AAgBD,KA5HkB;;AAAA,sDA8HSwB,KAAD,IAAW;AACpC,WAAKf,QAAL,CAAegB,SAAD,KAAgB;AAACrB,QAAAA,SAAS,EAAE,CAACqB,SAAS,CAACC;AAAvB,OAAhB,CAAd;AACD,KAhIkB;;AAAA,6CAkID,SAA2E;AAAA,UAAzEhD,KAAyE,SAAzEA,KAAyE;AAAA,UAAlEC,SAAkE,SAAlEA,SAAkE;AAAA,UAAvDC,gBAAuD,SAAvDA,gBAAuD;AAAA,UAArCC,YAAqC,SAArCA,YAAqC;AAAA,UAAvBC,iBAAuB,SAAvBA,iBAAuB;AAC3FL,MAAAA,aAAa,CAACC,KAAd,GAAsBA,KAAtB;AACAD,MAAAA,aAAa,CAACE,SAAd,GAA0BA,SAA1B;AACAF,MAAAA,aAAa,CAACG,gBAAd,GAAiCA,gBAAjC;AACAH,MAAAA,aAAa,CAACI,YAAd,GAA6BA,YAA7B;AACAJ,MAAAA,aAAa,CAACK,iBAAd,GAAkCA,iBAAlC;AAEA,WAAK2B,QAAL,CAAc;AACZL,QAAAA,SAAS,EAAE,KADC;AAEZpB,QAAAA,OAAO,EAAEP,aAFG;AAGZY,QAAAA,UAAU,EAAE,CAACN,eAAe,CAACN,aAAD;AAHhB,OAAd;AAKD,KA9IkB;;AAAA,mDAgJK,MAAM;AAC5B,WAAKgC,QAAL,CAAc;AAACL,QAAAA,SAAS,EAAE;AAAZ,OAAd;AACD,KAlJkB;;AAAA,oDAoJOuB,MAAD,IAAY;AACnC,UAAOC,QAAP,GAAmB,KAAKjC,KAAxB,CAAOiC,QAAP;AACA,UAAOV,GAAP,GAAcS,MAAd,CAAOT,GAAP;AACAU,MAAAA,QAAQ,CACNC,oBAAWC,IAAX,CAAgB,CAAC,8BAAa;AAACC,QAAAA,KAAK,EAAE;AAACC,UAAAA,IAAI,EAAEd;AAAP;AAAR,OAAb,EAAmC,EAAnC,CAAD,EAAyC,qBAAI;AAACc,QAAAA,IAAI,EAAEd;AAAP,OAAJ,EAAiB,CAAC,OAAD,CAAjB,CAAzC,CAAhB,CADM,CAAR;AAGA,WAAKT,QAAL,CAAc;AAACb,QAAAA,aAAa,EAAE+B,MAAM,CAACM;AAAvB,OAAd,EAAgD,MAAM;AACpD,aAAKC,kBAAL;AACD,OAFD;AAGD,KA7JkB;;AAAA,4DA+JeV,KAAD,IAAW;AAC1CA,MAAAA,KAAK,CAACW,cAAN;AACAX,MAAAA,KAAK,CAACY,eAAN;AACA,WAAK3B,QAAL,CAAc;AAACZ,QAAAA,aAAa,EAAE;AAAhB,OAAd;AACD,KAnKkB;;AAAA,+CAqKC,MAAM;AACxB,UAAOD,aAAP,GAAwB,KAAKc,KAA7B,CAAOd,aAAP;AACA,WAAKa,QAAL,CAAc;AAACP,QAAAA,SAAS,EAAE;AAAZ,OAAd;;AACA,UAAMmC,UAAU,GAAG,MAAM;AACvB,eAAO,IAAInD,OAAJ,CAAY,CAACC,OAAD,EAAUmD,MAAV,KAAqB;AACtC,eAAK7B,QAAL,CACE;AACEb,YAAAA,aAAa,EAAE,IADjB;AAEEC,YAAAA,aAAa,EAAE,KAFjB;AAGEK,YAAAA,SAAS,EAAE;AAHb,WADF,EAME,MAAM;AACJ,gBAAI,KAAKQ,KAAL,CAAWZ,kBAAX,IAAiC,KAAKY,KAAL,CAAWX,0BAAhD,EAA4E;AAC1E,qBAAOiB,sBACJC,KADI,CACE,KAAKtB,KAAL,CAAWsC,QAAX,CAAoBf,GADtB,EAEJqB,KAFI,CAEE,CAAC,OAAD,CAFF,EAGJlB,MAHI,CAGG;AAACC,gBAAAA,eAAe,EAAE;AAAlB,eAHH,EAIJhC,IAJI,CAIC,MAAM;AACV,oBAAI,CAACM,aAAL,EAAoB;AAClB,yBAAOT,OAAO,EAAd;AACD;;AACD,uBAAO6B,sBACJwB,MADI,CACG5C,aAAa,CAACsB,GADjB,EAEJ5B,IAFI,CAEC,MAAM;AACVH,kBAAAA,OAAO;AACR,iBAJI,EAKJoC,KALI,CAKGvB,KAAD,IAAW;AAChBsC,kBAAAA,MAAM,CAACtC,KAAD,CAAN;AACD,iBAPI,CAAP;AAQD,eAhBI,CAAP;AAiBD;;AACD,mBAAO,KAAKL,KAAL,CAAWiC,QAAX,CAAoBC,oBAAWC,IAAX,CAAgB,wBAAhB,CAApB,CAAP;AACD,WA3BH;AA6BD,SA9BM,CAAP;AA+BD,OAhCD;;AAiCA,aAAOO,UAAU,GACd/C,IADI,CACC,MAAM;AACV,YAAI,KAAKoB,KAAL,CAAWZ,kBAAf,EAAmC;AACjC,iBAAO,yBAAYF,aAAa,CAACiB,OAA1B,EAAmCU,KAAnC,CAA0CvB,KAAD,IAAW;AACzD,iBAAKS,QAAL,CAAc;AAACT,cAAAA;AAAD,aAAd;AACD,WAFM,CAAP;AAGD;;AACD,eAAO,IAAP;AACD,OARI,EASJuB,KATI,CASGvB,KAAD,IAAW;AAChB,aAAKS,QAAL,CAAc;AAACT,UAAAA;AAAD,SAAd;AACD,OAXI,CAAP;AAYD,KArNkB;;AAAA,gDAuNGwB,KAAD,IAAW;AAC9B,WAAKf,QAAL,CAAc;AACZZ,QAAAA,aAAa,EAAE,KADH;AAEZC,QAAAA,kBAAkB,EAAE,IAFR;AAGZC,QAAAA,0BAA0B,EAAE;AAHhB,OAAd;AAKD,KA7NkB;;AAAA,8DA+NiByB,KAAD,IAAW;AAC5C,WAAKf,QAAL,CAAegB,SAAD,KAAgB;AAC5B3B,QAAAA,kBAAkB,EAAE,CAAC2B,SAAS,CAAC3B;AADH,OAAhB,CAAd;AAGD,KAnOkB;;AAAA,sEAqOyB0B,KAAD,IAAW;AACpD,WAAKf,QAAL,CAAegB,SAAD,KAAgB;AAC5B1B,QAAAA,0BAA0B,EAAE,CAAC0B,SAAS,CAAC1B;AADX,OAAhB,CAAd;AAGD,KAzOkB;;AAAA,6CA2OAyB,KAAD,IAAW;AAC3B,UAAI,CAAC,KAAKiB,WAAL,CAAiBC,OAAtB,EAA+B;AAC7B;AACD;;AACD,wBAAkC,KAAKhC,KAAvC;AAAA,UAAOd,aAAP,eAAOA,aAAP;AAAA,UAAsBO,QAAtB,eAAsBA,QAAtB;AACA,UAAMwC,WAAW,GAAG,KAAKF,WAAL,CAAiBC,OAAjB,CAAyBE,eAAzB,GAA2CD,WAA/D;AACA,UAAME,OAAO,GAAG;AACdC,QAAAA,IAAI,EAAElD,aAAa,CAACmD,SADN;AAEdC,QAAAA,KAAK,EAAE,GAFO;AAGdC,QAAAA,MAAM,EAAE,GAHM;AAIdC,QAAAA,OAAO,EAAE,MAJK;AAKd/C,QAAAA,QALc;AAMdtB,QAAAA,YAAY,EAAEJ,aAAa,CAACI,YANd;AAOdC,QAAAA,iBAAiB,EAAEL,aAAa,CAACK;AAPnB,OAAhB;AAUA,UAAMqE,KAAK,GAAG,2BAAavD,aAAa,CAACwD,UAA3B,EAAuCP,OAAvC,CAAd;AACA,UAAMQ,QAAQ,GAAG,2BAAazD,aAAa,CAACwD,UAA3B,kCAA2CP,OAA3C;AAAoDC,QAAAA,IAAI,EAAEH;AAA1D,SAAjB;AAEA,WAAKlC,QAAL,CAAc;AAAC0C,QAAAA,KAAD;AAAQE,QAAAA;AAAR,OAAd;AACD,KA/PkB;;AAAA,kDAiQK7B,KAAD,IAAW;AAChC,UAAI,CAAC,KAAKiB,WAAL,CAAiBC,OAAtB,EAA+B;AAC7B;AACD;;AAED,WAAKjC,QAAL,CAAc;AAACF,QAAAA,YAAY,EAAE;AAAf,OAAd;AACA,yBAAkC,KAAKG,KAAvC;AAAA,UAAOd,aAAP,gBAAOA,aAAP;AAAA,UAAsBO,QAAtB,gBAAsBA,QAAtB;AACA,UAAMwC,WAAW,GAAG,KAAKF,WAAL,CAAiBC,OAAjB,CAAyBE,eAAzB,GAA2CD,WAA/D;;AACA3B,4BACGC,KADH,CACSrB,aAAa,CAACsB,GADvB,EAEGC,GAFH,CAEO;AACH4B,QAAAA,SAAS,EAAEJ;AADR,OAFP,EAKGtB,MALH,CAKU;AAACC,QAAAA,eAAe,EAAE;AAAlB,OALV,EAMGhC,IANH,CAMSwB,QAAD,IAAc;AAClB,YAAM+B,OAAO,GAAG;AACdC,UAAAA,IAAI,EAAEH,WADQ;AAEdK,UAAAA,KAAK,EAAE,GAFO;AAGdC,UAAAA,MAAM,EAAE,GAHM;AAIdC,UAAAA,OAAO,EAAE,MAJK;AAKd/C,UAAAA,QALc;AAMdtB,UAAAA,YAAY,EAAEJ,aAAa,CAACI,YANd;AAOdC,UAAAA,iBAAiB,EAAEL,aAAa,CAACK;AAPnB,SAAhB;AAUA,YAAMqE,KAAK,GAAG,2BAAavD,aAAa,CAACwD,UAA3B,EAAuCP,OAAvC,CAAd;AAEA,aAAKpC,QAAL,CAAc;AAAC0C,UAAAA,KAAD;AAAQ5C,UAAAA,YAAY,EAAE;AAAtB,SAAd;AACD,OApBH,EAqBGgB,KArBH,CAqBUvB,KAAD,IAAW;AAChB,aAAKS,QAAL,CAAc;AAACT,UAAAA,KAAD;AAAQO,UAAAA,YAAY,EAAE;AAAtB,SAAd;AACD,OAvBH;AAwBD,KAjSkB;;AAAA,8CAmSCiB,KAAD,IAAW;AAC5B,UAAIA,KAAJ,EAAW;AACTA,QAAAA,KAAK,CAACW,cAAN;AACD;;AAED,WAAK1B,QAAL,CAAc;AACZT,QAAAA,KAAK,EAAE;AADK,OAAd;AAGD,KA3SkB;;AAAA,qDA6SQwB,KAAD,IAAW;AACnC,WAAKf,QAAL,CAAc;AAAC0C,QAAAA,KAAK,EAAE;AAAR,OAAd;AACD,KA/SkB;;AAAA,gDAiTG3B,KAAD,IAAW;AAC9B,WAAKf,QAAL,CAAc;AAACJ,QAAAA,WAAW,EAAE;AAAd,OAAd;AACD,KAnTkB;;AAAA,gDAqTGmB,KAAD,IAAW;AAC9B,WAAKf,QAAL,CAAc;AAACJ,QAAAA,WAAW,EAAE;AAAd,OAAd;AACD,KAvTkB;;AAAA,+CAyTE0B,KAAD,IAAW;AAC7B,UAAOH,QAAP,GAAmB,KAAKjC,KAAxB,CAAOiC,QAAP;AAEAA,MAAAA,QAAQ,CACNC,oBAAWC,IAAX,CAAgB,CACd,8BAAa;AAACC,QAAAA,KAAK,EAAE;AAACC,UAAAA,IAAI,EAAED,KAAK,CAACb;AAAb;AAAR,OAAb,EAAyC,EAAzC,CADc,EAEd,qBAAI;AAACc,QAAAA,IAAI,EAAED,KAAK,CAACb;AAAb,OAAJ,EAAuB,CAAC,OAAD,CAAvB,CAFc,CAAhB,CADM,CAAR;AAOA,WAAKT,QAAL,CAAc;AAACJ,QAAAA,WAAW,EAAE,KAAd;AAAqBT,QAAAA,aAAa,EAAEmC;AAApC,OAAd,EAA0D,MAAM;AAC9D,aAAKG,kBAAL;AACD,OAFD;AAGD,KAtUkB;;AAAA,oDAwUM,MAAM;AAC7B,WAAKzB,QAAL,CAAc;AAACH,QAAAA,gBAAgB,EAAE;AAAnB,OAAd;AACD,KA1UkB;;AAEjBrB,IAAAA,UAAU,GACPK,IADH,CACQ,SAA2C;AAAA;;AAAA,UAAzCN,OAAyC,SAAzCA,OAAyC;AAAA,UAAhCI,cAAgC,SAAhCA,cAAgC;AAAA,UAAhBC,UAAgB,SAAhBA,UAAgB;AAC/C,WAAKoB,QAAL,CAAc;AACZzB,QAAAA,OADY;AAEZI,QAAAA,cAFY;AAGZC,QAAAA,UAHY;AAIZa,QAAAA,SAAS,kBAAEP,MAAK,CAAC2D,KAAR,iDAAE,aAAavB,KAJZ,CAImB;;AAJnB,OAAd;AAMD,KARH,EASGR,KATH,CASUvB,KAAD,IAAW,KAAKS,QAAL,CAAc;AAACT,MAAAA;AAAD,KAAd,CATpB;AAWA,SAAKuD,WAAL,gBAAmBC,eAAMC,SAAN,EAAnB;AACA,SAAK9C,YAAL,GAAoB,IAApB;AACA,SAAK+C,KAAL,gBAAaF,eAAMC,SAAN,EAAb;AACA,SAAKE,iBAAL,gBAAyBH,eAAMC,SAAN,EAAzB;AACA,SAAKhB,WAAL,gBAAmBe,eAAMC,SAAN,EAAnB;AACD;;AAEDG,EAAAA,iBAAiB,GAAG;AAClB,SAAK1B,kBAAL;AACD;;AAED2B,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKC,YAAT,EAAuB;AACrB,WAAKA,YAAL,CAAkBC,WAAlB;AACD;;AACD,QAAI,KAAKpD,YAAT,EAAuB;AACrBqD,MAAAA,aAAa,CAAC,KAAKrD,YAAN,CAAb;AACA,WAAKA,YAAL,GAAoB,IAApB;AACD;AACF;;AAcDsD,EAAAA,QAAQ,GAAG;AACT,QAAOX,KAAP,GAAgB,KAAK3D,KAArB,CAAO2D,KAAP;AACA,WAAOA,KAAK,GAAGA,KAAK,CAACvB,KAAT,GAAiB,IAA7B;AACD;;AAEDG,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAK4B,YAAT,EAAuB;AACrB,WAAKA,YAAL,CAAkBC,WAAlB;AACD;;AACD,SAAKtD,QAAL,CAAc;AAACH,MAAAA,gBAAgB,EAAE;AAAnB,KAAd;AACA,QAAMyB,KAAK,GAAG,KAAKkC,QAAL,EAAd;;AACA,QAAI,CAAClC,KAAL,EAAY;AACV;AACD;;AACD,SAAK+B,YAAL,GAAoB,2BAAa/B,KAAb,EAAoB,CACtC,WADsC,EAEtC,MAFsC,EAGtC,SAHsC,EAItC,YAJsC,EAKtC,QALsC,CAApB,EAOjBmC,IAPiB,CAQhB,oBAAKtE,aAAD,IAAmB;AAAA;;AACrB,WAAKa,QAAL,CAAc;AAACb,QAAAA;AAAD,OAAd;;AACA,UAAIA,aAAa,IAAIA,aAAa,CAACwB,MAAd,KAAyB,SAA9C,EAAyD;AACvD4C,QAAAA,aAAa,CAAC,KAAKrD,YAAN,CAAb;AACA,aAAKA,YAAL,GAAoB,IAApB,CAFuD,CAGvD;AACA;;AACA,eAAO,KAAKwD,iBAAL,GAAyB7E,IAAzB,CAA8B,MAAM;AACzC,eAAKmB,QAAL,CAAc;AACZP,YAAAA,SAAS,EAAE,KADC;AAEZF,YAAAA,KAAK,EAAE,IAAIoE,KAAJ,CAAUxE,aAAa,CAACmB,IAAd,CAAmBsD,MAAnB,CAA0BC,QAA1B,CAAmCC,IAAnC,CAAwC,GAAxC,CAAV;AAFK,WAAd;AAID,SALM,CAAP;AAMD;;AACD,UAAI3E,aAAa,IAAIA,aAAa,CAACwB,MAAd,KAAyB,WAA9C,EAA2D;AACzD,aAAKoD,OAAL;AACD;;AACD,UAAI5E,aAAa,IAAIA,aAAa,CAACwB,MAAd,KAAyB,OAA9C,EAAuD;AACrD4C,QAAAA,aAAa,CAAC,KAAKrD,YAAN,CAAb;AACA,aAAKA,YAAL,GAAoB,IAApB;AACD,OApBoB,CAsBrB;;;AACA,UAAMR,QAAQ,GAAG,CAAAP,aAAa,SAAb,IAAAA,aAAa,WAAb,mCAAAA,aAAa,CAAEmB,IAAf,qGAAqB0D,YAArB,CAAkC,CAAlC,iFAAsCC,MAAtC,MAAiD,QAAlE;AACA,WAAKjE,QAAL,CAAc;AAACb,QAAAA,aAAD;AAAgBO,QAAAA,QAAhB;AAA0BD,QAAAA,SAAS,EAAE;AAArC,OAAd;AAEA,aAAO,cAAGN,aAAH,CAAP;AACD,KA3BD,CARgB,EAqCjB+E,SArCiB,EAApB;AAsCD;;AA0ODC,EAAAA,WAAW,GAAG;AACZ,QAAO5F,OAAP,GAAkB,KAAK0B,KAAvB,CAAO1B,OAAP;AAEA,wBACE,6BAAC,UAAD;AACE,MAAA,MAAM,EAAC,qBADT;AAEE,MAAA,KAAK,EAAE,CAFT;AAGE,MAAA,OAAO,EAAE,KAAK6F,qBAHhB;AAIE,MAAA,OAAO,EAAE;AAJX,oBAME,6BAAC,cAAD;AACE,MAAA,OAAO,EAAE7F,OAAO,IAAI,IADtB;AAEE,MAAA,MAAM,EAAE,KAAK8F,eAFf;AAGE,MAAA,QAAQ,EAAE,KAAKD;AAHjB,MANF,CADF;AAcD;;AAEDE,EAAAA,iBAAiB,GAAG;AAClB,uBAA2C,KAAKrE,KAAhD;AAAA,QAAOR,SAAP,gBAAOA,SAAP;AAAA,QAAkBE,SAAlB,gBAAkBA,SAAlB;AAAA,QAA6Bf,UAA7B,gBAA6BA,UAA7B;AACA,QAAMuF,WAAW,GAAG,CAAC1E,SAAD,IAAcE,SAAlC;AACA,wBACE;AAAK,MAAA,SAAS,EAAE4E,eAAOC;AAAvB,oBACE,6BAAC,UAAD;AACE,MAAA,IAAI,EAAE5F,UAAU,GAAG,UAAH,GAAgB,UADlC;AAEE,MAAA,IAAI,EAAC,OAFP;AAGE,MAAA,OAAO,EAAE,KAAK6F,wBAHhB;AAIE,MAAA,IAAI,EAAEC,mBAJR;AAKE,MAAA,OAAO,EAAE,CALX;AAME,MAAA,MAAM,EAAE,CANV;AAOE,oBAAW;AAPb,MADF,EAUGP,WAAW,IAAI,KAAKA,WAAL,EAVlB,CADF;AAcD;;AAEDQ,EAAAA,iBAAiB,GAAG;AAClB,uBAAoC,KAAK1E,KAAzC;AAAA,QAAOR,SAAP,gBAAOA,SAAP;AAAA,QAAkBd,cAAlB,gBAAkBA,cAAlB;;AAEA,QAAIc,SAAJ,EAAe;AACb,aAAO,IAAP;AACD;;AAED,wBACE,6BAAC,SAAD;AAAO,MAAA,OAAO,EAAE,CAAhB;AAAmB,MAAA,KAAK,EAAE,CAA1B;AAA6B,MAAA,KAAK,EAAE;AAACmF,QAAAA,eAAe,EAAE,WAAlB;AAA+BC,QAAAA,YAAY,EAAE;AAA7C;AAApC,oBACE,6BAAC,gBAAD,OADF,eAEE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE;AAAd,OACGlG,cAAc,iBACb,6BAAC,QAAD,uGAFJ,eAOE,6BAAC,QAAD,0EAPF,eAQE,6BAAC,QAAD,oEARF,CAFF,CADF;AAeD,GA3ZmC,CA6ZpC;;;AACAmG,EAAAA,WAAW,GAAG;AACZ,uBAAkC,KAAK7E,KAAvC;AAAA,QAAOd,aAAP,gBAAOA,aAAP;AAAA,QAAsBO,QAAtB,gBAAsBA,QAAtB;AACA,QAAMoF,WAAW,GAAG,CAAC,CAAC3F,aAAtB;;AACA,QAAI,CAAC2F,WAAL,EAAkB;AAChB,aAAO,IAAP;AACD;;AACD,QAAMC,aAAa,GAAGrF,QAAQ,gBAC5B,6BAAC,QAAD;AAAM,MAAA,OAAO,EAAE,CAAf;AAAkB,MAAA,MAAM,EAAE,CAA1B;AAA6B,MAAA,MAAM,EAAE,CAArC;AAAwC,MAAA,IAAI,EAAC;AAA7C,oBACE,6BAAC,QAAD;AAAM,MAAA,IAAI,EAAE;AAAZ,+CADF,CAD4B,GAI1B,IAJJ;AAKA,wBACE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE,CAAd;AAAiB,MAAA,YAAY,EAAE;AAA/B,OACGqF,aADH,eAEE,6BAAC,cAAD;AACE,MAAA,aAAa,EAAE5F,aADjB;AAEE,MAAA,GAAG,EAAE,KAAK6C,WAFZ;AAGE,MAAA,OAAO,EAAE,KAAKgD,sBAHhB;AAIE,MAAA,QAAQ,EAAE,KAAKtB;AAJjB,MAFF,CADF;AAWD;;AAEDuB,EAAAA,kBAAkB,GAAG;AACnB,uBAAuC,KAAKhF,KAA5C;AAAA,QAAOd,aAAP,gBAAOA,aAAP;AAAA,QAAsBC,aAAtB,gBAAsBA,aAAtB;AACA,QAAO8F,QAAP,GAAmB,KAAKhG,KAAxB,CAAOgG,QAAP;;AACA,QAAI/F,aAAa,IAAIA,aAAa,CAACwB,MAAd,KAAyB,OAA1C,IAAqD,CAACuE,QAA1D,EAAoE;AAClE,aAAO,cACL,6BAAC,UAAD;AACE,QAAA,GAAG,EAAC,QADN;AAEE,QAAA,IAAI,EAAC,OAFP;AAGE,QAAA,IAAI,EAAC,SAHP;AAIE,QAAA,OAAO,EAAE,KAAKC,kBAJhB;AAKE,QAAA,IAAI,EAAC;AALP,QADK,eAQL,6BAAC,UAAD;AACE,QAAA,GAAG,EAAC,WADN;AAEE,QAAA,IAAI,EAAC,OAFP;AAGE,QAAA,IAAI,EAAC,SAHP;AAIE,QAAA,QAAQ,EAAE,KAAKlF,KAAL,CAAWJ,gBAAX,KAAgC,KAJ5C;AAKE,QAAA,OAAO,EAAE,KAAKuF,eALhB;AAME,QAAA,IAAI,EAAC;AANP,QARK,eAgBL,6BAAC,UAAD;AACE,QAAA,GAAG,EAAC,QADN;AAEE,QAAA,GAAG,EAAE,KAAKlC,iBAFZ;AAGE,QAAA,OAAO,EAAE9D,aAAa,GAAGrB,IAAH,GAAU,KAAKsH,8BAHvC;AAIE,QAAA,IAAI,EAAC,OAJP;AAKE,QAAA,IAAI,EAAC,UALP;AAME,QAAA,IAAI,EAAC;AANP,QAhBK,CAAP;AAyBD;;AACD,WAAO,IAAP;AACD;;AAEDC,EAAAA,aAAa,GAAG;AACd,wBACE,6BAAC,mBAAD;AAAkB,MAAA,KAAK,EAAC,cAAxB;AAAuC,MAAA,OAAO,EAAE,KAAKC,kBAArD;AAAyE,MAAA,MAAM;AAA/E,oBACE,6BAAC,oBAAD;AAAa,MAAA,QAAQ,EAAE,KAAKC;AAA5B,MADF,CADF;AAKD;;AAEDC,EAAAA,WAAW,GAAG;AACZ,QAAOlG,KAAP,GAAgB,KAAKU,KAArB,CAAOV,KAAP;;AACA,QAAI,CAACA,KAAL,EAAY;AACV,aAAO,IAAP;AACD;;AACD,wBACE,6BAAC,UAAD;AAAQ,MAAA,MAAM,EAAC,OAAf;AAAuB,MAAA,OAAO,EAAE,KAAKmG;AAArC,oBACE,6BAAC,gBAAD;AAAe,MAAA,IAAI,EAAC;AAApB,OAA6BnG,KAAK,CAACoG,OAAnC,CADF,CADF;AAKD;;AAEDC,EAAAA,MAAM,GAAG;AAAA;;AACP,sBAA+B,KAAK1G,KAApC;AAAA,QAAO2G,IAAP,eAAOA,IAAP;AAAA,QAAaC,KAAb,eAAaA,KAAb;AAAA,QAAoBC,OAApB,eAAoBA,OAApB;AACA,uBAUI,KAAK9F,KAVT;AAAA,QACER,SADF,gBACEA,SADF;AAAA,QAEElB,OAFF,gBAEEA,OAFF;AAAA,QAGEiB,QAHF,gBAGEA,QAHF;AAAA,QAIEZ,UAJF,gBAIEA,UAJF;AAAA,QAKEW,KALF,gBAKEA,KALF;AAAA,QAMEK,WANF,gBAMEA,WANF;AAAA,QAOER,aAPF,gBAOEA,aAPF;AAAA,QAQEsD,KARF,gBAQEA,KARF;AAAA,QASEvD,aATF,gBASEA,aATF;AAYA,QAAM6G,cAAc,GAAG,CAAA7G,aAAa,SAAb,IAAAA,aAAa,WAAb,oCAAAA,aAAa,CAAEmB,IAAf,uGAAqB2F,YAArB,0GAAmCC,KAAnC,CAAyC,GAAzC,mFAA+CpC,IAA/C,CAAoD,GAApD,MAA4D,MAAnF;AAEA,wBACE,6BAAC,iBAAD;AAAe,MAAA,KAAK,EAAEqC;AAAtB,oBACE,6BAAC,OAAD;AAAK,MAAA,KAAK,EAAE;AAACC,QAAAA,QAAQ,EAAE;AAAX;AAAZ,oBACE,6BAAC,QAAD;AAAM,MAAA,KAAK,EAAC,QAAZ;AAAqB,MAAA,OAAO,EAAC;AAA7B,oBACE,6BAAC,iBAAD;AACE,MAAA,KAAK,EAAEP,IAAI,CAACQ,KADd;AAEE,MAAA,OAAO,EAAEN,OAFX;AAGE,MAAA,WAAW,EAAEF,IAAI,CAACS,WAHpB;AAIE,MAAA,KAAK,EAAER,KAJT;AAKE,MAAA,SAAS,EAAEvB,eAAOgC;AALpB,MADF,EAQG,KAAKjC,iBAAL,EARH,CADF,EAYG7E,SAAS,KAAK,SAAd,iBACC,6BAAC,OAAD;AAAK,MAAA,YAAY,EAAE;AAAnB,oBACE,6BAAC,UAAD;AAAQ,MAAA,KAAK,EAAC,QAAd;AAAuB,MAAA,KAAK,EAAE;AAA9B,oBACE,6BAAC,gBAAD;AAAS,MAAA,MAAM;AAAf,MADF,eAEE,6BAAC,QAAD;AAAM,MAAA,IAAI,EAAE;AAAZ,8BAFF,CADF,CAbJ,EAqBGb,UAAU,IAAI,KAAK+F,iBAAL,EArBjB,EAuBG,CAAC/F,UAAD,iBACC,6BAAC,iBAAD;AACE,MAAA,OAAO,EAAE,KAAKqG,kBAAL,EADX;AAEE,MAAA,QAAQ,EAAEzF,QAFZ,CAGE;AAHF;AAIE,MAAA,MAAM,EAAE,KAAKgH,IAJf,CAKE;AALF;AAME,MAAA,OAAO,EAAE,KAAKC,KANhB;AAOE,MAAA,oBAAoB,EAAE,KAAKhC,wBAP7B;AAQE,MAAA,gBAAgB,EAAE,KAAKiC,sBARzB;AASE,MAAA,OAAO,EAAEnI,OATX;AAUE,MAAA,QAAQ,EAAE,KAAK4G;AAVjB,OAYG,KAAKL,WAAL,EAZH,CAxBJ,EAwCGpC,KAAK,iBACJ,6BAAC,UAAD;AAAQ,MAAA,MAAM,EAAC,WAAf;AAA2B,MAAA,OAAO,EAAE,IAApC;AAA0C,MAAA,OAAO,EAAE,KAAKiE;AAAxD,oBACE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE,CAAd;AAAiB,MAAA,OAAO,EAAE;AAA1B,oBACE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE;AAAd,oBACE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE;AAAd,oBACE,6BAAC,QAAD;AAAM,MAAA,IAAI,EAAE,CAAZ;AAAe,MAAA,MAAM,EAAC;AAAtB,kBADF,eAIE;AACE,MAAA,KAAK,EAAE;AACLC,QAAAA,QAAQ,EAAE,MADL;AAEL/B,QAAAA,YAAY,EAAE,WAFT;AAGLgC,QAAAA,OAAO,EAAE,OAHJ;AAILC,QAAAA,WAAW,EAAEd;AAJR,OADT;AAOE,MAAA,GAAG,EAAE,KAAK/F,KAAL,CAAWyC,KAPlB;AAQE,MAAA,KAAK,EAAE;AART,MAJF,CADF,eAgBE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE;AAAd,oBACE,6BAAC,QAAD;AAAM,MAAA,IAAI,EAAE,CAAZ;AAAe,MAAA,MAAM,EAAC;AAAtB,cADF,eAIE;AACE,MAAA,KAAK,EAAE;AACLkE,QAAAA,QAAQ,EAAE,MADL;AAEL/B,QAAAA,YAAY,EAAE,WAFT;AAGLgC,QAAAA,OAAO,EAAE,OAHJ;AAILC,QAAAA,WAAW,EAAEd;AAJR,OADT;AAOE,MAAA,GAAG,EAAE,KAAK/F,KAAL,CAAW2C,QAPlB;AAQE,MAAA,KAAK,EAAE;AART,MAJF,CAhBF,CADF,eAiCE,6BAAC,UAAD;AACE,MAAA,GAAG,EAAC,WADN;AAEE,MAAA,IAAI,EAAC,OAFP;AAGE,MAAA,IAAI,EAAC,SAHP;AAIE,MAAA,QAAQ,EAAE,KAAK3C,KAAL,CAAWJ,gBAAX,KAAgC,KAJ5C;AAKE,MAAA,OAAO,EAAE,KAAKkH,oBALhB;AAME,MAAA,OAAO,EAAE,KAAK9G,KAAL,CAAWH,YANtB;AAOE,MAAA,IAAI,EAAC;AAPP,MAjCF,CADF,CAzCJ,EAwFGF,WAAW,IAAI,KAAK0F,aAAL,EAxFlB,EA0FGlG,aAAa,iBACZ,6BAAC,UAAD;AAAQ,MAAA,MAAM,EAAC,cAAf;AAA8B,MAAA,OAAO,EAAE,IAAvC;AAA6C,MAAA,OAAO,EAAE,KAAK4H;AAA3D,oBACE,6BAAC,OAAD;AAAK,MAAA,OAAO,EAAE;AAAd,oBACE,6BAAC,SAAD;AAAO,MAAA,KAAK,EAAE;AAAd,oBACE,6BAAC,QAAD;AAAM,MAAA,KAAK,EAAC;AAAZ,oBACE,6BAAC,YAAD;AACE,MAAA,OAAO,EAAE,KAAK/G,KAAL,CAAWZ,kBADtB;AAEE,MAAA,QAAQ,EAAE,KAAK4H;AAFjB,MADF,eAKE,6BAAC,QAAD;AAAM,MAAA,KAAK,EAAE;AAACC,QAAAA,MAAM,EAAE;AAAT;AAAb,6BALF,CADF,eAQE,6BAAC,QAAD;AAAM,MAAA,KAAK,EAAC;AAAZ,oBACE,6BAAC,YAAD;AACE,MAAA,QAAQ,EAAE,KAAKjH,KAAL,CAAWZ,kBADvB;AAEE,MAAA,OAAO,EACL,KAAKY,KAAL,CAAWZ,kBAAX,IAAiC,KAAKY,KAAL,CAAWX,0BAHhD;AAKE,MAAA,QAAQ,EAAE,KAAK6H;AALjB,MADF,eAQE,6BAAC,QAAD;AAAM,MAAA,KAAK,EAAE;AAACD,QAAAA,MAAM,EAAE;AAAT;AAAb,mCARF,CARF,eAkBE,6BAAC,QAAD;AAAM,MAAA,OAAO,EAAE,CAAf;AAAkB,MAAA,GAAG,EAAE;AAAvB,oBACE,6BAAC,UAAD;AACE,MAAA,IAAI,EAAC,OADP;AAEE,MAAA,IAAI,EAAC,SAFP;AAGE,MAAA,IAAI,EAAC,QAHP;AAIE,MAAA,OAAO,EAAE,KAAKF,kBAJhB;AAKE,MAAA,OAAO,EAAE,CAAC,CAACvH;AALb,MADF,eAQE,6BAAC,UAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,IAAI,EAAC,UAFP;AAGE,MAAA,IAAI,EAAC,QAHP;AAIE,MAAA,OAAO,EAAE,KAAKiE,iBAJhB;AAKE,MAAA,OAAO,EAAE,CAAC,CAACjE;AALb,MARF,CAlBF,CADF,CADF,CA3FJ,EAoIGF,KAAK,IAAI,KAAKkG,WAAL,EApIZ,CADF,CADF;AA0ID;;AAroBmC,CADzB,C","sourcesContent":["import {\n Box,\n Button,\n Card,\n Checkbox,\n Dialog,\n Flex,\n Grid,\n Inline,\n Stack,\n studioTheme,\n Text,\n ThemeProvider,\n} from '@sanity/ui'\nimport SetupIcon from 'part:@sanity/base/plugin-icon'\nimport {observePaths} from 'part:@sanity/base/preview'\nimport DialogContent from 'part:@sanity/components/dialogs/content'\nimport FullscreenDialog from 'part:@sanity/components/dialogs/fullscreen'\nimport FormField from 'part:@sanity/components/formfields/default'\nimport Spinner from 'part:@sanity/components/loading/spinner'\nimport {withDocument} from 'part:@sanity/form-builder'\nimport PatchEvent, {set, setIfMissing, unset} from 'part:@sanity/form-builder/patch-event'\nimport React, {Component} from 'react'\nimport {of} from 'rxjs'\nimport {tap} from 'rxjs/operators'\nimport {deleteAsset, getAsset} from '../actions/assets'\nimport {fetchSecrets} from '../actions/secrets'\nimport client from '../clients/SanityClient'\nimport getPosterSrc from '../util/getPosterSrc'\nimport styles from './Input.css'\nimport MuxLogo from './MuxLogo'\nimport SelectAsset from './SelectAsset'\nimport Setup from './Setup'\nimport Uploader from './Uploader'\nimport Video from './Video'\n\nconst NOOP = () => {\n /* intentional noop */\n}\n\nconst cachedSecrets = {\n token: null,\n secretKey: null,\n enableSignedUrls: false,\n signingKeyId: null,\n signingKeyPrivate: null,\n}\n\nfunction validateSecrets(secrets) {\n if (!secrets.token || !secrets.secretKey) return false\n\n return true\n}\n\nfunction getSecrets() {\n if (cachedSecrets.token) {\n return Promise.resolve({\n isInitialSetup: true,\n needsSetup: false,\n secrets: cachedSecrets,\n })\n }\n return fetchSecrets().then(({secrets, exists}) => {\n cachedSecrets.token = secrets.token\n cachedSecrets.secretKey = secrets.secretKey\n cachedSecrets.enableSignedUrls = secrets.enableSignedUrls\n cachedSecrets.signingKeyId = secrets.signingKeyId\n cachedSecrets.signingKeyPrivate = secrets.signingKeyPrivate\n\n return {\n isInitialSetup: !exists,\n needsSetup: !validateSecrets(cachedSecrets),\n secrets: cachedSecrets,\n }\n })\n}\n\nexport default withDocument(\n class MuxVideoInput extends Component {\n state = {\n assetDocument: null,\n confirmRemove: false,\n deleteOnMuxChecked: false,\n deleteAssetDocumentChecked: true,\n error: null,\n hasFocus: false,\n isInitialSetup: true,\n isLoading: 'secrets',\n needsSetup: true,\n secrets: null,\n isSigned: false,\n showSetup: false,\n showBrowser: false,\n videoReadyToPlay: false,\n thumbLoading: false,\n }\n\n constructor(props) {\n super(props)\n getSecrets()\n .then(({secrets, isInitialSetup, needsSetup}) => {\n this.setState({\n secrets,\n isInitialSetup,\n needsSetup,\n isLoading: props.value?.asset, // If there is an asset continue loading\n })\n })\n .catch((error) => this.setState({error}))\n\n this.setupButton = React.createRef()\n this.pollInterval = null\n this.video = React.createRef()\n this.removeVideoButton = React.createRef()\n this.videoPlayer = React.createRef()\n }\n\n componentDidMount() {\n this.setupAssetListener()\n }\n\n componentWillUnmount() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n }\n }\n\n focus = () => {\n this.handleFocus()\n }\n\n handleFocus = () => {\n this.setState({hasFocus: true})\n }\n\n handleBlur = () => {\n this.setState({hasFocus: false})\n }\n\n getAsset() {\n const {value} = this.props\n return value ? value.asset : null\n }\n\n setupAssetListener() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.setState({videoReadyToPlay: false})\n const asset = this.getAsset()\n if (!asset) {\n return\n }\n this.subscription = observePaths(asset, [\n 'thumbTime',\n 'data',\n 'assetId',\n 'playbackId',\n 'status',\n ])\n .pipe(\n tap((assetDocument) => {\n this.setState({assetDocument})\n if (assetDocument && assetDocument.status === 'errored') {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n // eslint-disable-next-line no-warning-comments\n // todo: use client.observable\n return this.handleRemoveVideo().then(() => {\n this.setState({\n isLoading: false,\n error: new Error(assetDocument.data.errors.messages.join(' ')),\n })\n })\n }\n if (assetDocument && assetDocument.status === 'preparing') {\n this.pollMux()\n }\n if (assetDocument && assetDocument.status === 'ready') {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n }\n\n // eslint-disable-next-line camelcase\n const isSigned = assetDocument?.data?.playback_ids[0]?.policy === 'signed'\n this.setState({assetDocument, isSigned, isLoading: false})\n\n return of(assetDocument)\n })\n )\n .subscribe()\n }\n\n pollMux = () => {\n const assetDocument = this.state.assetDocument\n if (!assetDocument) {\n return\n }\n if (this.pollInterval) {\n return\n }\n this.pollInterval = setInterval(() => {\n getAsset(assetDocument.assetId)\n .then((response) => {\n const props = response.data\n client\n .patch(assetDocument._id)\n .set({\n status: props.status,\n data: props,\n })\n .commit({returnDocuments: false})\n })\n .catch((error) => {\n this.setState({error})\n })\n }, 2000)\n }\n\n handleSetupButtonClicked = (event) => {\n this.setState((prevState) => ({showSetup: !prevState.showStetup}))\n }\n\n handleSaveSetup = ({token, secretKey, enableSignedUrls, signingKeyId, signingKeyPrivate}) => {\n cachedSecrets.token = token\n cachedSecrets.secretKey = secretKey\n cachedSecrets.enableSignedUrls = enableSignedUrls\n cachedSecrets.signingKeyId = signingKeyId\n cachedSecrets.signingKeyPrivate = signingKeyPrivate\n\n this.setState({\n showSetup: false,\n secrets: cachedSecrets,\n needsSetup: !validateSecrets(cachedSecrets),\n })\n }\n\n handleCancelSaveSetup = () => {\n this.setState({showSetup: false})\n }\n\n handleOnUploadComplete = (result) => {\n const {onChange} = this.props\n const {_id} = result\n onChange(\n PatchEvent.from([setIfMissing({asset: {_ref: _id}}, []), set({_ref: _id}, ['asset'])])\n )\n this.setState({assetDocument: result.document}, () => {\n this.setupAssetListener()\n })\n }\n\n handleRemoveVideoButtonClicked = (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.setState({confirmRemove: true})\n }\n\n handleRemoveVideo = () => {\n const {assetDocument} = this.state\n this.setState({isLoading: true})\n const unsetAsset = () => {\n return new Promise((resolve, reject) => {\n this.setState(\n {\n assetDocument: null,\n confirmRemove: false,\n isLoading: false,\n },\n () => {\n if (this.state.deleteOnMuxChecked || this.state.deleteAssetDocumentChecked) {\n return client\n .patch(this.props.document._id)\n .unset(['video'])\n .commit({returnDocuments: false})\n .then(() => {\n if (!assetDocument) {\n return resolve()\n }\n return client\n .delete(assetDocument._id)\n .then(() => {\n resolve()\n })\n .catch((error) => {\n reject(error)\n })\n })\n }\n return this.props.onChange(PatchEvent.from(unset()))\n }\n )\n })\n }\n return unsetAsset()\n .then(() => {\n if (this.state.deleteOnMuxChecked) {\n return deleteAsset(assetDocument.assetId).catch((error) => {\n this.setState({error})\n })\n }\n return true\n })\n .catch((error) => {\n this.setState({error})\n })\n }\n\n handleCancelRemove = (event) => {\n this.setState({\n confirmRemove: false,\n deleteOnMuxChecked: true,\n deleteAssetDocumentChecked: true,\n })\n }\n\n handleDeleteOnMuxCheckBoxClicked = (event) => {\n this.setState((prevState) => ({\n deleteOnMuxChecked: !prevState.deleteOnMuxChecked,\n }))\n }\n\n handleDeleteAssetDocumentCheckBoxClicked = (event) => {\n this.setState((prevState) => ({\n deleteAssetDocumentChecked: !prevState.deleteAssetDocumentChecked,\n }))\n }\n\n handleOpenThumb = (event) => {\n if (!this.videoPlayer.current) {\n return\n }\n const {assetDocument, isSigned} = this.state\n const currentTime = this.videoPlayer.current.getVideoElement().currentTime\n const options = {\n time: assetDocument.thumbTime,\n width: 320,\n height: 320,\n fitMode: 'crop',\n isSigned,\n signingKeyId: cachedSecrets.signingKeyId,\n signingKeyPrivate: cachedSecrets.signingKeyPrivate,\n }\n\n const thumb = getPosterSrc(assetDocument.playbackId, options)\n const newThumb = getPosterSrc(assetDocument.playbackId, {...options, time: currentTime})\n\n this.setState({thumb, newThumb})\n }\n\n handleSetThumbButton = (event) => {\n if (!this.videoPlayer.current) {\n return\n }\n\n this.setState({thumbLoading: true})\n const {assetDocument, isSigned} = this.state\n const currentTime = this.videoPlayer.current.getVideoElement().currentTime\n client\n .patch(assetDocument._id)\n .set({\n thumbTime: currentTime,\n })\n .commit({returnDocuments: false})\n .then((response) => {\n const options = {\n time: currentTime,\n width: 320,\n height: 320,\n fitMode: 'crop',\n isSigned,\n signingKeyId: cachedSecrets.signingKeyId,\n signingKeyPrivate: cachedSecrets.signingKeyPrivate,\n }\n\n const thumb = getPosterSrc(assetDocument.playbackId, options)\n\n this.setState({thumb, thumbLoading: false})\n })\n .catch((error) => {\n this.setState({error, thumbLoading: false})\n })\n }\n\n handleErrorClose = (event) => {\n if (event) {\n event.preventDefault()\n }\n\n this.setState({\n error: null,\n })\n }\n\n handleCloseThumbPreview = (event) => {\n this.setState({thumb: null})\n }\n\n handleBrowseButton = (event) => {\n this.setState({showBrowser: true})\n }\n\n handleCloseBrowser = (event) => {\n this.setState({showBrowser: false})\n }\n\n handleSelectAsset = (asset) => {\n const {onChange} = this.props\n\n onChange(\n PatchEvent.from([\n setIfMissing({asset: {_ref: asset._id}}, []),\n set({_ref: asset._id}, ['asset']),\n ])\n )\n\n this.setState({showBrowser: false, assetDocument: asset}, () => {\n this.setupAssetListener()\n })\n }\n\n handleVideoReadyToPlay = () => {\n this.setState({videoReadyToPlay: true})\n }\n\n renderSetup() {\n const {secrets} = this.state\n\n return (\n <Dialog\n header=\"Mux API Credentials\"\n width={1}\n onClose={this.handleCancelSaveSetup}\n zOffset={1000}\n >\n <Setup\n secrets={secrets || null}\n onSave={this.handleSaveSetup}\n onCancel={this.handleCancelSaveSetup}\n />\n </Dialog>\n )\n }\n\n renderSetupButton() {\n const {isLoading, showSetup, needsSetup} = this.state\n const renderSetup = !isLoading && showSetup\n return (\n <div className={styles.setupButtonContainer}>\n <Button\n tone={needsSetup ? 'critical' : 'positive'}\n mode=\"bleed\"\n onClick={this.handleSetupButtonClicked}\n icon={SetupIcon}\n padding={3}\n radius={3}\n aria-label=\"Set up Mux credentials\"\n />\n {renderSetup && this.renderSetup()}\n </div>\n )\n }\n\n renderSetupNotice() {\n const {isLoading, isInitialSetup} = this.state\n\n if (isLoading) {\n return null\n }\n\n return (\n <Stack padding={4} space={5} style={{backgroundColor: '#efefefef', borderRadius: 3}}>\n <MuxLogo />\n <Stack space={4}>\n {isInitialSetup && (\n <Text>\n Looks like this is the first time you are using the Mux video plugin in this\n dataset. Great!\n </Text>\n )}\n <Text>Before you can upload video, you must set your Mux credentials.</Text>\n <Text>Click the plugin button in the field title to open Setup.</Text>\n </Stack>\n </Stack>\n )\n }\n\n // eslint-disable-next-line complexity\n renderAsset() {\n const {assetDocument, isSigned} = this.state\n const renderAsset = !!assetDocument\n if (!renderAsset) {\n return null\n }\n const isSignedAlert = isSigned ? (\n <Card padding={3} radius={2} shadow={1} tone=\"positive\">\n <Text size={1}>This Mux asset is using a signed url.</Text>\n </Card>\n ) : null\n return (\n <Stack space={2} marginBottom={2}>\n {isSignedAlert}\n <Video\n assetDocument={assetDocument}\n ref={this.videoPlayer}\n onReady={this.handleVideoReadyToPlay}\n onCancel={this.handleRemoveVideo}\n />\n </Stack>\n )\n }\n\n renderVideoButtons() {\n const {assetDocument, confirmRemove} = this.state\n const {readOnly} = this.props\n if (assetDocument && assetDocument.status === 'ready' && !readOnly) {\n return [\n <Button\n key=\"browse\"\n mode=\"ghost\"\n tone=\"primary\"\n onClick={this.handleBrowseButton}\n text=\"Browse\"\n />,\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n disabled={this.state.videoReadyToPlay === false}\n onClick={this.handleOpenThumb}\n text=\"Thumbnail\"\n />,\n <Button\n key=\"remove\"\n ref={this.removeVideoButton}\n onClick={confirmRemove ? NOOP : this.handleRemoveVideoButtonClicked}\n mode=\"ghost\"\n tone=\"critical\"\n text=\"Remove\"\n />,\n ]\n }\n return null\n }\n\n renderBrowser() {\n return (\n <FullscreenDialog title=\"Select video\" onClose={this.handleCloseBrowser} isOpen>\n <SelectAsset onSelect={this.handleSelectAsset} />\n </FullscreenDialog>\n )\n }\n\n renderError() {\n const {error} = this.state\n if (!error) {\n return null\n }\n return (\n <Dialog header=\"Error\" onClose={this.handleErrorClose}>\n <DialogContent size=\"small\">{error.message}</DialogContent>\n </Dialog>\n )\n }\n\n render() {\n const {type, level, markers} = this.props\n const {\n isLoading,\n secrets,\n hasFocus,\n needsSetup,\n error,\n showBrowser,\n confirmRemove,\n thumb,\n assetDocument,\n } = this.state\n\n const cssAspectRatio = assetDocument?.data?.aspect_ratio?.split(':')?.join('/') || 'auto'\n\n return (\n <ThemeProvider theme={studioTheme}>\n <Box style={{position: 'relative'}}>\n <Flex align=\"center\" justify=\"space-between\">\n <FormField\n label={type.title}\n markers={markers}\n description={type.description}\n level={level}\n className={styles.formField}\n />\n {this.renderSetupButton()}\n </Flex>\n\n {isLoading === 'secrets' && (\n <Box marginBottom={2}>\n <Inline align=\"center\" space={2}>\n <Spinner inline />\n <Text size={1}>Fetching credentials</Text>\n </Inline>\n </Box>\n )}\n\n {needsSetup && this.renderSetupNotice()}\n\n {!needsSetup && (\n <Uploader\n buttons={this.renderVideoButtons()}\n hasFocus={hasFocus}\n // eslint-disable-next-line react/jsx-handler-names\n onBlur={this.blur}\n // eslint-disable-next-line react/jsx-handler-names\n onFocus={this.focus}\n onSetupButtonClicked={this.handleSetupButtonClicked}\n onUploadComplete={this.handleOnUploadComplete}\n secrets={secrets}\n onBrowse={this.handleBrowseButton}\n >\n {this.renderAsset()}\n </Uploader>\n )}\n\n {thumb && (\n <Dialog header=\"Thumbnail\" zOffset={1000} onClose={this.handleCloseThumbPreview}>\n <Stack space={3} padding={3}>\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Current:\n </Text>\n <img\n style={{\n maxWidth: '100%',\n borderRadius: '0.1875rem',\n display: 'block',\n aspectRatio: cssAspectRatio,\n }}\n src={this.state.thumb}\n width={400}\n />\n </Stack>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n New:\n </Text>\n <img\n style={{\n maxWidth: '100%',\n borderRadius: '0.1875rem',\n display: 'block',\n aspectRatio: cssAspectRatio,\n }}\n src={this.state.newThumb}\n width={400}\n />\n </Stack>\n </Stack>\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n disabled={this.state.videoReadyToPlay === false}\n onClick={this.handleSetThumbButton}\n loading={this.state.thumbLoading}\n text=\"Set new thumbnail\"\n />\n </Stack>\n </Dialog>\n )}\n\n {showBrowser && this.renderBrowser()}\n\n {confirmRemove && (\n <Dialog header=\"Remove video\" zOffset={1000} onClose={this.handleCancelRemove}>\n <Box padding={4}>\n <Stack space={3}>\n <Flex align=\"center\">\n <Checkbox\n checked={this.state.deleteOnMuxChecked}\n onChange={this.handleDeleteOnMuxCheckBoxClicked}\n />\n <Text style={{margin: '0 10px'}}>Delete asset on Mux</Text>\n </Flex>\n <Flex align=\"center\">\n <Checkbox\n disabled={this.state.deleteOnMuxChecked}\n checked={\n this.state.deleteOnMuxChecked || this.state.deleteAssetDocumentChecked\n }\n onChange={this.handleDeleteAssetDocumentCheckBoxClicked}\n />\n <Text style={{margin: '0 10px'}}>Delete video from dataset</Text>\n </Flex>\n <Grid columns={2} gap={2}>\n <Button\n mode=\"ghost\"\n tone=\"default\"\n text=\"Cancel\"\n onClick={this.handleCancelRemove}\n loading={!!isLoading}\n />\n <Button\n mode=\"default\"\n tone=\"critical\"\n text=\"Remove\"\n onClick={this.handleRemoveVideo}\n loading={!!isLoading}\n />\n </Grid>\n </Stack>\n </Box>\n </Dialog>\n )}\n\n {error && this.renderError()}\n </Box>\n </ThemeProvider>\n )\n }\n }\n)\n"],"file":"Input.js"}
1
+ {"version":3,"sources":["../../src/components/Input.js"],"names":["NOOP","cachedSecrets","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","validateSecrets","secrets","getSecrets","Promise","resolve","isInitialSetup","needsSetup","then","exists","MuxVideoInput","Component","constructor","props","assetDocument","confirmRemove","deleteOnMuxChecked","deleteAssetDocumentChecked","error","hasFocus","isLoading","isSigned","showSetup","showBrowser","videoReadyToPlay","thumbLoading","handleFocus","setState","state","pollInterval","setInterval","assetId","response","data","client","patch","_id","set","status","commit","returnDocuments","catch","event","prevState","showStetup","result","onChange","PatchEvent","from","asset","_ref","document","setupAssetListener","preventDefault","stopPropagation","unsetAsset","reject","unset","delete","videoPlayer","current","currentTime","getVideoElement","options","time","thumbTime","width","height","fitMode","thumb","playbackId","newThumb","value","setupButton","React","createRef","video","removeVideoButton","componentDidMount","componentWillUnmount","subscription","unsubscribe","clearInterval","getAsset","pipe","handleRemoveVideo","Error","errors","messages","join","static_renditions","pollMux","config","mp4_support","playback_ids","policy","subscribe","renderSetup","handleCancelSaveSetup","handleSaveSetup","renderSetupButton","styles","setupButtonContainer","handleSetupButtonClicked","SetupIcon","renderSetupNotice","backgroundColor","borderRadius","renderAsset","isSignedAlert","handleVideoReadyToPlay","renderVideoButtons","readOnly","handleBrowseButton","handleOpenThumb","handleRemoveVideoButtonClicked","renderBrowser","handleCloseBrowser","handleSelectAsset","renderError","handleErrorClose","message","render","type","level","markers","cssAspectRatio","aspect_ratio","split","studioTheme","position","title","description","formField","blur","focus","handleOnUploadComplete","handleCloseThumbPreview","maxWidth","display","aspectRatio","handleSetThumbButton","handleCancelRemove","handleDeleteOnMuxCheckBoxClicked","margin","handleDeleteAssetDocumentCheckBoxClicked"],"mappings":"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","sourcesContent":["import {\n Box,\n Button,\n Card,\n Checkbox,\n Dialog,\n Flex,\n Grid,\n Inline,\n Stack,\n studioTheme,\n Text,\n ThemeProvider,\n} from '@sanity/ui'\nimport SetupIcon from 'part:@sanity/base/plugin-icon'\nimport {observePaths} from 'part:@sanity/base/preview'\nimport DialogContent from 'part:@sanity/components/dialogs/content'\nimport FullscreenDialog from 'part:@sanity/components/dialogs/fullscreen'\nimport FormField from 'part:@sanity/components/formfields/default'\nimport Spinner from 'part:@sanity/components/loading/spinner'\nimport {withDocument} from 'part:@sanity/form-builder'\nimport PatchEvent, {set, setIfMissing, unset} from 'part:@sanity/form-builder/patch-event'\nimport React, {Component} from 'react'\nimport {of} from 'rxjs'\nimport {tap} from 'rxjs/operators'\nimport {deleteAsset, getAsset} from '../actions/assets'\nimport {fetchSecrets} from '../actions/secrets'\nimport client from '../clients/SanityClient'\nimport getPosterSrc from '../util/getPosterSrc'\nimport styles from './Input.css'\nimport MuxLogo from './MuxLogo'\nimport SelectAsset from './SelectAsset'\nimport Setup from './Setup'\nimport Uploader from './Uploader'\nimport Video from './Video'\nimport config from '../config'\n\nconst NOOP = () => {\n /* intentional noop */\n}\n\nconst cachedSecrets = {\n token: null,\n secretKey: null,\n enableSignedUrls: false,\n signingKeyId: null,\n signingKeyPrivate: null,\n}\n\nfunction validateSecrets(secrets) {\n if (!secrets.token || !secrets.secretKey) return false\n\n return true\n}\n\nfunction getSecrets() {\n if (cachedSecrets.token) {\n return Promise.resolve({\n isInitialSetup: true,\n needsSetup: false,\n secrets: cachedSecrets,\n })\n }\n return fetchSecrets().then(({secrets, exists}) => {\n cachedSecrets.token = secrets.token\n cachedSecrets.secretKey = secrets.secretKey\n cachedSecrets.enableSignedUrls = secrets.enableSignedUrls\n cachedSecrets.signingKeyId = secrets.signingKeyId\n cachedSecrets.signingKeyPrivate = secrets.signingKeyPrivate\n\n return {\n isInitialSetup: !exists,\n needsSetup: !validateSecrets(cachedSecrets),\n secrets: cachedSecrets,\n }\n })\n}\n\nexport default withDocument(\n class MuxVideoInput extends Component {\n state = {\n assetDocument: null,\n confirmRemove: false,\n deleteOnMuxChecked: false,\n deleteAssetDocumentChecked: true,\n error: null,\n hasFocus: false,\n isInitialSetup: true,\n isLoading: 'secrets',\n needsSetup: true,\n secrets: null,\n isSigned: false,\n showSetup: false,\n showBrowser: false,\n videoReadyToPlay: false,\n thumbLoading: false,\n }\n\n constructor(props) {\n super(props)\n getSecrets()\n .then(({secrets, isInitialSetup, needsSetup}) => {\n this.setState({\n secrets,\n isInitialSetup,\n needsSetup,\n isLoading: props.value?.asset, // If there is an asset continue loading\n })\n })\n .catch((error) => this.setState({error}))\n\n this.setupButton = React.createRef()\n this.pollInterval = null\n this.video = React.createRef()\n this.removeVideoButton = React.createRef()\n this.videoPlayer = React.createRef()\n }\n\n componentDidMount() {\n this.setupAssetListener()\n }\n\n componentWillUnmount() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n }\n }\n\n focus = () => {\n this.handleFocus()\n }\n\n handleFocus = () => {\n this.setState({hasFocus: true})\n }\n\n handleBlur = () => {\n this.setState({hasFocus: false})\n }\n\n getAsset() {\n const {value} = this.props\n return value ? value.asset : null\n }\n\n setupAssetListener() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.setState({videoReadyToPlay: false})\n const asset = this.getAsset()\n if (!asset) {\n return\n }\n this.subscription = observePaths(asset, [\n 'thumbTime',\n 'data',\n 'assetId',\n 'playbackId',\n 'status',\n ])\n .pipe(\n tap((assetDocument) => {\n this.setState({assetDocument})\n if (assetDocument && assetDocument.status === 'errored') {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n // eslint-disable-next-line no-warning-comments\n // todo: use client.observable\n return this.handleRemoveVideo().then(() => {\n this.setState({\n isLoading: false,\n error: new Error(assetDocument.data.errors.messages.join(' ')),\n })\n })\n }\n // Poll MUX if it's preparing the main document or its own static renditions\n if (\n assetDocument?.status === 'preparing' ||\n assetDocument?.data?.static_renditions?.status === 'preparing'\n ) {\n this.pollMux()\n }\n // If MP4 support is enabled: MUX will prepare static_renditions only _after_ an asset\n // has been successfully uploaded.\n // A _ready_ asset doesn't mean static mp4s are generated and ready for use!\n // In these cases, wait for `static_renditions.status === 'ready'` before clearing the poll interval.\n if (assetDocument && assetDocument.status === 'ready') {\n switch (config.mp4_support) {\n case 'standard':\n if (assetDocument?.data?.static_renditions?.status === 'ready') {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n }\n break\n case 'none':\n default:\n clearInterval(this.pollInterval)\n this.pollInterval = null\n break\n }\n }\n\n // eslint-disable-next-line camelcase\n const isSigned = assetDocument?.data?.playback_ids[0]?.policy === 'signed'\n this.setState({assetDocument, isSigned, isLoading: false})\n\n return of(assetDocument)\n })\n )\n .subscribe()\n }\n\n pollMux = () => {\n const assetDocument = this.state.assetDocument\n if (!assetDocument) {\n return\n }\n if (this.pollInterval) {\n return\n }\n this.pollInterval = setInterval(() => {\n getAsset(assetDocument.assetId)\n .then((response) => {\n const props = response.data\n\n // TODO: consider a deep comparison on `props` with asset data and only patch only if it's changed\n client\n .patch(assetDocument._id)\n .set({\n status: props.status,\n data: props,\n })\n .commit({returnDocuments: false})\n })\n .catch((error) => {\n this.setState({error})\n })\n }, 2000)\n }\n\n handleSetupButtonClicked = (event) => {\n this.setState((prevState) => ({showSetup: !prevState.showStetup}))\n }\n\n handleSaveSetup = ({token, secretKey, enableSignedUrls, signingKeyId, signingKeyPrivate}) => {\n cachedSecrets.token = token\n cachedSecrets.secretKey = secretKey\n cachedSecrets.enableSignedUrls = enableSignedUrls\n cachedSecrets.signingKeyId = signingKeyId\n cachedSecrets.signingKeyPrivate = signingKeyPrivate\n\n this.setState({\n showSetup: false,\n secrets: cachedSecrets,\n needsSetup: !validateSecrets(cachedSecrets),\n })\n }\n\n handleCancelSaveSetup = () => {\n this.setState({showSetup: false})\n }\n\n handleOnUploadComplete = (result) => {\n const {onChange} = this.props\n const {_id} = result\n onChange(\n PatchEvent.from([setIfMissing({asset: {_ref: _id}}, []), set({_ref: _id}, ['asset'])])\n )\n this.setState({assetDocument: result.document}, () => {\n this.setupAssetListener()\n })\n }\n\n handleRemoveVideoButtonClicked = (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.setState({confirmRemove: true})\n }\n\n handleRemoveVideo = () => {\n const {assetDocument} = this.state\n this.setState({isLoading: true})\n const unsetAsset = () => {\n return new Promise((resolve, reject) => {\n this.setState(\n {\n assetDocument: null,\n confirmRemove: false,\n isLoading: false,\n },\n () => {\n if (this.state.deleteOnMuxChecked || this.state.deleteAssetDocumentChecked) {\n return client\n .patch(this.props.document._id)\n .unset(['video'])\n .commit({returnDocuments: false})\n .then(() => {\n if (!assetDocument) {\n return resolve()\n }\n return client\n .delete(assetDocument._id)\n .then(() => {\n resolve()\n })\n .catch((error) => {\n reject(error)\n })\n })\n }\n return this.props.onChange(PatchEvent.from(unset()))\n }\n )\n })\n }\n return unsetAsset()\n .then(() => {\n if (this.state.deleteOnMuxChecked) {\n return deleteAsset(assetDocument.assetId).catch((error) => {\n this.setState({error})\n })\n }\n return true\n })\n .catch((error) => {\n this.setState({error})\n })\n }\n\n handleCancelRemove = (event) => {\n this.setState({\n confirmRemove: false,\n deleteOnMuxChecked: true,\n deleteAssetDocumentChecked: true,\n })\n }\n\n handleDeleteOnMuxCheckBoxClicked = (event) => {\n this.setState((prevState) => ({\n deleteOnMuxChecked: !prevState.deleteOnMuxChecked,\n }))\n }\n\n handleDeleteAssetDocumentCheckBoxClicked = (event) => {\n this.setState((prevState) => ({\n deleteAssetDocumentChecked: !prevState.deleteAssetDocumentChecked,\n }))\n }\n\n handleOpenThumb = (event) => {\n if (!this.videoPlayer.current) {\n return\n }\n const {assetDocument, isSigned} = this.state\n const currentTime = this.videoPlayer.current.getVideoElement().currentTime\n const options = {\n time: assetDocument.thumbTime,\n width: 320,\n height: 320,\n fitMode: 'crop',\n isSigned,\n signingKeyId: cachedSecrets.signingKeyId,\n signingKeyPrivate: cachedSecrets.signingKeyPrivate,\n }\n\n const thumb = getPosterSrc(assetDocument.playbackId, options)\n const newThumb = getPosterSrc(assetDocument.playbackId, {...options, time: currentTime})\n\n this.setState({thumb, newThumb})\n }\n\n handleSetThumbButton = (event) => {\n if (!this.videoPlayer.current) {\n return\n }\n\n this.setState({thumbLoading: true})\n const {assetDocument, isSigned} = this.state\n const currentTime = this.videoPlayer.current.getVideoElement().currentTime\n client\n .patch(assetDocument._id)\n .set({\n thumbTime: currentTime,\n })\n .commit({returnDocuments: false})\n .then((response) => {\n const options = {\n time: currentTime,\n width: 320,\n height: 320,\n fitMode: 'crop',\n isSigned,\n signingKeyId: cachedSecrets.signingKeyId,\n signingKeyPrivate: cachedSecrets.signingKeyPrivate,\n }\n\n const thumb = getPosterSrc(assetDocument.playbackId, options)\n\n this.setState({thumb, thumbLoading: false})\n })\n .catch((error) => {\n this.setState({error, thumbLoading: false})\n })\n }\n\n handleErrorClose = (event) => {\n if (event) {\n event.preventDefault()\n }\n\n this.setState({\n error: null,\n })\n }\n\n handleCloseThumbPreview = (event) => {\n this.setState({thumb: null})\n }\n\n handleBrowseButton = (event) => {\n this.setState({showBrowser: true})\n }\n\n handleCloseBrowser = (event) => {\n this.setState({showBrowser: false})\n }\n\n handleSelectAsset = (asset) => {\n const {onChange} = this.props\n\n onChange(\n PatchEvent.from([\n setIfMissing({asset: {_ref: asset._id}}, []),\n set({_ref: asset._id}, ['asset']),\n ])\n )\n\n this.setState({showBrowser: false, assetDocument: asset}, () => {\n this.setupAssetListener()\n })\n }\n\n handleVideoReadyToPlay = () => {\n this.setState({videoReadyToPlay: true})\n }\n\n renderSetup() {\n const {secrets} = this.state\n\n return (\n <Dialog\n header=\"Mux API Credentials\"\n width={1}\n onClose={this.handleCancelSaveSetup}\n zOffset={1000}\n >\n <Setup\n secrets={secrets || null}\n onSave={this.handleSaveSetup}\n onCancel={this.handleCancelSaveSetup}\n />\n </Dialog>\n )\n }\n\n renderSetupButton() {\n const {isLoading, showSetup, needsSetup} = this.state\n const renderSetup = !isLoading && showSetup\n return (\n <div className={styles.setupButtonContainer}>\n <Button\n tone={needsSetup ? 'critical' : 'positive'}\n mode=\"bleed\"\n onClick={this.handleSetupButtonClicked}\n icon={SetupIcon}\n padding={3}\n radius={3}\n aria-label=\"Set up Mux credentials\"\n />\n {renderSetup && this.renderSetup()}\n </div>\n )\n }\n\n renderSetupNotice() {\n const {isLoading, isInitialSetup} = this.state\n\n if (isLoading) {\n return null\n }\n\n return (\n <Stack padding={4} space={5} style={{backgroundColor: '#efefefef', borderRadius: 3}}>\n <MuxLogo />\n <Stack space={4}>\n {isInitialSetup && (\n <Text>\n Looks like this is the first time you are using the Mux video plugin in this\n dataset. Great!\n </Text>\n )}\n <Text>Before you can upload video, you must set your Mux credentials.</Text>\n <Text>Click the plugin button in the field title to open Setup.</Text>\n </Stack>\n </Stack>\n )\n }\n\n // eslint-disable-next-line complexity\n renderAsset() {\n const {assetDocument, isSigned} = this.state\n const renderAsset = !!assetDocument\n if (!renderAsset) {\n return null\n }\n const isSignedAlert = isSigned ? (\n <Card padding={3} radius={2} shadow={1} tone=\"positive\">\n <Text size={1}>This Mux asset is using a signed url.</Text>\n </Card>\n ) : null\n return (\n <Stack space={2} marginBottom={2}>\n {isSignedAlert}\n <Video\n assetDocument={assetDocument}\n ref={this.videoPlayer}\n onReady={this.handleVideoReadyToPlay}\n onCancel={this.handleRemoveVideo}\n />\n </Stack>\n )\n }\n\n renderVideoButtons() {\n const {assetDocument, confirmRemove} = this.state\n const {readOnly} = this.props\n if (assetDocument && assetDocument.status === 'ready' && !readOnly) {\n return [\n <Button\n key=\"browse\"\n mode=\"ghost\"\n tone=\"primary\"\n onClick={this.handleBrowseButton}\n text=\"Browse\"\n />,\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n disabled={this.state.videoReadyToPlay === false}\n onClick={this.handleOpenThumb}\n text=\"Thumbnail\"\n />,\n <Button\n key=\"remove\"\n ref={this.removeVideoButton}\n onClick={confirmRemove ? NOOP : this.handleRemoveVideoButtonClicked}\n mode=\"ghost\"\n tone=\"critical\"\n text=\"Remove\"\n />,\n ]\n }\n return null\n }\n\n renderBrowser() {\n return (\n <FullscreenDialog title=\"Select video\" onClose={this.handleCloseBrowser} isOpen>\n <SelectAsset onSelect={this.handleSelectAsset} />\n </FullscreenDialog>\n )\n }\n\n renderError() {\n const {error} = this.state\n if (!error) {\n return null\n }\n return (\n <Dialog header=\"Error\" onClose={this.handleErrorClose}>\n <DialogContent size=\"small\">{error.message}</DialogContent>\n </Dialog>\n )\n }\n\n render() {\n const {type, level, markers} = this.props\n const {\n isLoading,\n secrets,\n hasFocus,\n needsSetup,\n error,\n showBrowser,\n confirmRemove,\n thumb,\n assetDocument,\n } = this.state\n\n const cssAspectRatio = assetDocument?.data?.aspect_ratio?.split(':')?.join('/') || 'auto'\n\n return (\n <ThemeProvider theme={studioTheme}>\n <Box style={{position: 'relative'}}>\n <Flex align=\"center\" justify=\"space-between\">\n <FormField\n label={type.title}\n markers={markers}\n description={type.description}\n level={level}\n className={styles.formField}\n />\n {this.renderSetupButton()}\n </Flex>\n\n {isLoading === 'secrets' && (\n <Box marginBottom={2}>\n <Inline align=\"center\" space={2}>\n <Spinner inline />\n <Text size={1}>Fetching credentials</Text>\n </Inline>\n </Box>\n )}\n\n {needsSetup && this.renderSetupNotice()}\n\n {!needsSetup && (\n <Uploader\n buttons={this.renderVideoButtons()}\n hasFocus={hasFocus}\n // eslint-disable-next-line react/jsx-handler-names\n onBlur={this.blur}\n // eslint-disable-next-line react/jsx-handler-names\n onFocus={this.focus}\n onSetupButtonClicked={this.handleSetupButtonClicked}\n onUploadComplete={this.handleOnUploadComplete}\n secrets={secrets}\n onBrowse={this.handleBrowseButton}\n >\n {this.renderAsset()}\n </Uploader>\n )}\n\n {thumb && (\n <Dialog header=\"Thumbnail\" zOffset={1000} onClose={this.handleCloseThumbPreview}>\n <Stack space={3} padding={3}>\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Current:\n </Text>\n <img\n style={{\n maxWidth: '100%',\n borderRadius: '0.1875rem',\n display: 'block',\n aspectRatio: cssAspectRatio,\n }}\n src={this.state.thumb}\n width={400}\n />\n </Stack>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n New:\n </Text>\n <img\n style={{\n maxWidth: '100%',\n borderRadius: '0.1875rem',\n display: 'block',\n aspectRatio: cssAspectRatio,\n }}\n src={this.state.newThumb}\n width={400}\n />\n </Stack>\n </Stack>\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n disabled={this.state.videoReadyToPlay === false}\n onClick={this.handleSetThumbButton}\n loading={this.state.thumbLoading}\n text=\"Set new thumbnail\"\n />\n </Stack>\n </Dialog>\n )}\n\n {showBrowser && this.renderBrowser()}\n\n {confirmRemove && (\n <Dialog header=\"Remove video\" zOffset={1000} onClose={this.handleCancelRemove}>\n <Box padding={4}>\n <Stack space={3}>\n <Flex align=\"center\">\n <Checkbox\n checked={this.state.deleteOnMuxChecked}\n onChange={this.handleDeleteOnMuxCheckBoxClicked}\n />\n <Text style={{margin: '0 10px'}}>Delete asset on Mux</Text>\n </Flex>\n <Flex align=\"center\">\n <Checkbox\n disabled={this.state.deleteOnMuxChecked}\n checked={\n this.state.deleteOnMuxChecked || this.state.deleteAssetDocumentChecked\n }\n onChange={this.handleDeleteAssetDocumentCheckBoxClicked}\n />\n <Text style={{margin: '0 10px'}}>Delete video from dataset</Text>\n </Flex>\n <Grid columns={2} gap={2}>\n <Button\n mode=\"ghost\"\n tone=\"default\"\n text=\"Cancel\"\n onClick={this.handleCancelRemove}\n loading={!!isLoading}\n />\n <Button\n mode=\"default\"\n tone=\"critical\"\n text=\"Remove\"\n onClick={this.handleRemoveVideo}\n loading={!!isLoading}\n />\n </Grid>\n </Stack>\n </Box>\n </Dialog>\n )}\n\n {error && this.renderError()}\n </Box>\n </ThemeProvider>\n )\n }\n }\n)\n"],"file":"Input.js"}
@@ -83,6 +83,7 @@ class MuxVideo extends _react.Component {
83
83
  isLoading: true,
84
84
  error: null,
85
85
  isDeletedOnMux: false,
86
+ isPreparingStaticRenditions: false,
86
87
  secrets: null
87
88
  };
88
89
  this.playRef = /*#__PURE__*/_react.default.createRef();
@@ -91,7 +92,10 @@ class MuxVideo extends _react.Component {
91
92
 
92
93
 
93
94
  static getDerivedStateFromProps(nextProps) {
95
+ var _assetDocument$data, _assetDocument$data$s, _assetDocument$data2, _assetDocument$data2$;
96
+
94
97
  var isLoading = true;
98
+ var isPreparingStaticRenditions = false;
95
99
  var assetDocument = nextProps.assetDocument;
96
100
 
97
101
  if (assetDocument && assetDocument.status === 'preparing') {
@@ -114,8 +118,17 @@ class MuxVideo extends _react.Component {
114
118
  isLoading = false;
115
119
  }
116
120
 
121
+ if ((assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data = assetDocument.data) === null || _assetDocument$data === void 0 ? void 0 : (_assetDocument$data$s = _assetDocument$data.static_renditions) === null || _assetDocument$data$s === void 0 ? void 0 : _assetDocument$data$s.status) === 'preparing') {
122
+ isPreparingStaticRenditions = true;
123
+ }
124
+
125
+ if ((assetDocument === null || assetDocument === void 0 ? void 0 : (_assetDocument$data2 = assetDocument.data) === null || _assetDocument$data2 === void 0 ? void 0 : (_assetDocument$data2$ = _assetDocument$data2.static_renditions) === null || _assetDocument$data2$ === void 0 ? void 0 : _assetDocument$data2$.status) === 'ready') {
126
+ isPreparingStaticRenditions = false;
127
+ }
128
+
117
129
  return {
118
- isLoading
130
+ isLoading,
131
+ isPreparingStaticRenditions
119
132
  };
120
133
  }
121
134
 
@@ -317,7 +330,21 @@ class MuxVideo extends _react.Component {
317
330
  size: 1
318
331
  }, "There was an error loading this video (", error.type, ")."), this.state.isDeletedOnMux && /*#__PURE__*/_react.default.createElement(_ui.Text, {
319
332
  size: 1
320
- }, "The video is deleted on Mux"))));
333
+ }, "The video is deleted on Mux"))), this.state.isPreparingStaticRenditions && /*#__PURE__*/_react.default.createElement(_ui.Card, {
334
+ padding: 2,
335
+ radius: 1,
336
+ style: {
337
+ background: 'var(--card-fg-color)',
338
+ position: 'absolute',
339
+ top: '0.5em',
340
+ left: '0.5em'
341
+ }
342
+ }, /*#__PURE__*/_react.default.createElement(_ui.Text, {
343
+ size: 1,
344
+ style: {
345
+ color: 'var(--card-bg-color)'
346
+ }
347
+ }, "MUX is preparing static renditions, please stand by")));
321
348
  }
322
349
 
323
350
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Video.js"],"names":["NOOP","propTypes","assetDocument","PropTypes","object","isRequired","autoload","bool","onCancel","func","onReady","MuxVideo","Component","constructor","props","React","createRef","event","setState","showControls","hls","startLoad","state","storyboardUrl","posterUrl","source","isLoading","error","isDeletedOnMux","secrets","playRef","muteRef","getDerivedStateFromProps","nextProps","status","componentDidMount","video","style","document","createElement","innerHTML","current","shadowRoot","appendChild","cloneNode","then","componentDidUpdate","prevProps","prevState","previousVideo","playbackId","newVideo","resolveSourceAndPoster","src","attachVideo","destroy","options","isSigned","data","playback_ids","policy","signingKeyId","signingKeyPrivate","getVideoElement","Hls","isSupported","autoStartLoad","loadSource","attachMedia","on","Events","MANIFEST_PARSED","e","videoContainer","display","ERROR","type","ErrorTypes","NETWORK_ERROR","assetId","response","catch","err","message","match","console","canPlayType","addEventListener","render","styles","progressBar","uploadCancelButton","handleCancelButtonClicked","handleVideoClick","defaultProps","undefined"],"mappings":"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","sourcesContent":["import {Card, Stack, Text} from '@sanity/ui'\nimport Hls from 'hls.js'\nimport 'media-chrome'\nimport Button from 'part:@sanity/components/buttons/default'\nimport ProgressBar from 'part:@sanity/components/progress/bar'\nimport PropTypes from 'prop-types'\nimport React, {Component} from 'react'\nimport {getAsset} from '../actions/assets'\nimport {fetchSecrets} from '../actions/secrets'\nimport getPosterSrc from '../util/getPosterSrc'\nimport getStoryboardSrc from '../util/getStoryboardSrc'\nimport getVideoSrc from '../util/getVideoSrc'\nimport styles from './Video.css'\n\nconst NOOP = () => {\n /* intentional noop */\n}\n\nconst propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n assetDocument: PropTypes.object.isRequired,\n autoload: PropTypes.bool,\n onCancel: PropTypes.func,\n onReady: PropTypes.func,\n}\n\nclass MuxVideo extends Component {\n videoContainer = React.createRef()\n hls = null\n\n constructor(props) {\n super(props)\n this.state = {\n storyboardUrl: null,\n posterUrl: null,\n source: null,\n isLoading: true,\n error: null,\n isDeletedOnMux: false,\n secrets: null,\n }\n this.playRef = React.createRef()\n this.muteRef = React.createRef()\n }\n\n // eslint-disable-next-line complexity\n static getDerivedStateFromProps(nextProps) {\n let isLoading = true\n const {assetDocument} = nextProps\n\n if (assetDocument && assetDocument.status === 'preparing') {\n isLoading = 'Preparing the video'\n }\n if (assetDocument && assetDocument.status === 'waiting_for_upload') {\n isLoading = 'Waiting for upload to start'\n }\n if (assetDocument && assetDocument.status === 'waiting') {\n isLoading = 'Processing upload'\n }\n if (assetDocument && assetDocument.status === 'ready') {\n isLoading = false\n }\n if (assetDocument && typeof assetDocument.status === 'undefined') {\n isLoading = false\n }\n return {isLoading}\n }\n\n componentDidMount() {\n this.video = React.createRef()\n\n const style = document.createElement('style')\n style.innerHTML = 'button svg { vertical-align: middle; }'\n\n if (this.playRef?.current?.shadowRoot) {\n this.playRef.current.shadowRoot.appendChild(style)\n }\n if (this.muteRef?.current?.shadowRoot) {\n this.muteRef.current.shadowRoot.appendChild(style.cloneNode(true))\n }\n\n this.setState(MuxVideo.getDerivedStateFromProps(this.props))\n fetchSecrets().then(({secrets}) => this.setState({secrets}))\n }\n\n componentDidUpdate(prevProps, prevState) {\n const previousVideo = prevProps.assetDocument.playbackId\n const newVideo = this.props.assetDocument.playbackId\n\n if (\n !this.state.isLoading &&\n this.state.secrets &&\n (this.state.source === null || previousVideo !== newVideo)\n ) {\n this.resolveSourceAndPoster(this.props.assetDocument)\n }\n\n if (this.state.source !== null && this.video.current && !this.video.current.src) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({error: null})\n this.attachVideo()\n }\n\n if (this.state.source !== null && this.state.source !== prevState.source) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({error: null, showControls: false})\n if (this.hls) {\n this.hls.destroy()\n }\n this.attachVideo()\n }\n }\n\n resolveSourceAndPoster(assetDocument) {\n const playbackId = assetDocument.playbackId\n const options = {\n isSigned: assetDocument.data.playback_ids[0].policy === 'signed',\n signingKeyId: this.state.secrets.signingKeyId || null,\n signingKeyPrivate: this.state.secrets.signingKeyPrivate || null,\n }\n\n const source = getVideoSrc(playbackId, options)\n const posterUrl = getPosterSrc(playbackId, options)\n const storyboardUrl = getStoryboardSrc(playbackId, options)\n this.setState({source, posterUrl, storyboardUrl})\n }\n\n getVideoElement() {\n return this.video && this.video.current\n }\n\n attachVideo() {\n const {assetDocument, autoload} = this.props\n\n if (Hls.isSupported()) {\n this.hls = new Hls({autoStartLoad: autoload})\n this.hls.loadSource(this.state.source)\n this.hls.attachMedia(this.video.current)\n this.hls.on(Hls.Events.MANIFEST_PARSED, (e) => {\n if (this.videoContainer.current) {\n this.videoContainer.current.style.display = 'block'\n }\n if (this.props.onReady) {\n this.props.onReady()\n }\n })\n this.hls.on(Hls.Events.ERROR, (event, data) => {\n switch (data.type) {\n case Hls.ErrorTypes.NETWORK_ERROR:\n if (this.videoContainer.current) {\n this.videoContainer.current.style.display = 'none'\n }\n this.setState({error: data})\n getAsset(assetDocument.assetId)\n .then((response) => {\n this.setState({isDeletedOnMux: false})\n })\n .catch((err) => {\n if (err.message.match(/404/)) {\n this.setState({isDeletedOnMux: true})\n return\n }\n console.error(data, err) // eslint-disable-line no-console\n })\n break\n default:\n console.error(data) // eslint-disable-line no-console\n }\n })\n } else if (this.video.current.canPlayType('application/vnd.apple.mpegurl')) {\n this.video.current.src = this.state.source\n this.video.current.addEventListener('loadedmetadata', () => {\n this.hls.loadSource(this.state.source)\n this.hls.attachMedia(this.video.current)\n })\n }\n }\n\n handleVideoClick = (event) => {\n this.setState({showControls: true})\n this.hls.startLoad(0)\n if (this.props.onReady) {\n this.props.onReady(event)\n }\n }\n\n handleCancelButtonClicked = (event) => {\n if (this.props.onCancel) {\n this.props.onCancel(event)\n }\n }\n\n // eslint-disable-next-line complexity\n render() {\n const {posterUrl, isLoading, error} = this.state\n const {assetDocument, autoload} = this.props\n if (!assetDocument || !assetDocument.status) {\n return null\n }\n\n if (isLoading) {\n return (\n <div>\n <div className={styles.progressBar}>\n <ProgressBar\n percent={100}\n text={(isLoading !== true && isLoading) || 'Waiting for Mux to complete the file'}\n isInProgress\n showPercent\n animation\n color=\"primary\"\n />\n </div>\n <div className={styles.uploadCancelButton}>\n <Button onClick={this.handleCancelButtonClicked}>Cancel</Button>\n </div>\n </div>\n )\n }\n\n const showControls = autoload || this.state.showControls\n\n return (\n <div ref={this.videoContainer} className={styles.videoContainer}>\n <media-controller>\n <video\n onClick={autoload ? NOOP : this.handleVideoClick}\n ref={this.video}\n poster={posterUrl}\n slot=\"media\"\n crossOrigin=\"anonomous\"\n >\n {this.state.storyboardUrl && (\n <track label=\"thumbnails\" default kind=\"metadata\" src={this.state.storyboardUrl} />\n )}\n </video>\n {showControls && (\n <media-control-bar>\n <media-play-button ref={this.playRef} />\n <media-mute-button ref={this.muteRef} />\n {/* The media volume range is causing an error to be logged in the studio: Failed to construct 'CustomElement': The result must not have attributes */}\n {/* <media-volume-range /> */}\n <media-progress-range />\n </media-control-bar>\n )}\n </media-controller>\n {error && (\n <Card padding={3} radius={2} shadow={1} tone=\"critical\" marginTop={2}>\n <Stack space={2}>\n <Text size={1}>There was an error loading this video ({error.type}).</Text>\n {this.state.isDeletedOnMux && <Text size={1}>The video is deleted on Mux</Text>}\n </Stack>\n </Card>\n )}\n </div>\n )\n }\n}\n\nMuxVideo.propTypes = propTypes\n\nMuxVideo.defaultProps = {\n autoload: true,\n onCancel: undefined,\n onReady: undefined,\n}\n\nexport default MuxVideo\n"],"file":"Video.js"}
1
+ {"version":3,"sources":["../../src/components/Video.js"],"names":["NOOP","propTypes","assetDocument","PropTypes","object","isRequired","autoload","bool","onCancel","func","onReady","MuxVideo","Component","constructor","props","React","createRef","event","setState","showControls","hls","startLoad","state","storyboardUrl","posterUrl","source","isLoading","error","isDeletedOnMux","isPreparingStaticRenditions","secrets","playRef","muteRef","getDerivedStateFromProps","nextProps","status","data","static_renditions","componentDidMount","video","style","document","createElement","innerHTML","current","shadowRoot","appendChild","cloneNode","then","componentDidUpdate","prevProps","prevState","previousVideo","playbackId","newVideo","resolveSourceAndPoster","src","attachVideo","destroy","options","isSigned","playback_ids","policy","signingKeyId","signingKeyPrivate","getVideoElement","Hls","isSupported","autoStartLoad","loadSource","attachMedia","on","Events","MANIFEST_PARSED","e","videoContainer","display","ERROR","type","ErrorTypes","NETWORK_ERROR","assetId","response","catch","err","message","match","console","canPlayType","addEventListener","render","styles","progressBar","uploadCancelButton","handleCancelButtonClicked","handleVideoClick","background","position","top","left","color","defaultProps","undefined"],"mappings":"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","sourcesContent":["import {Box, Card, Stack, Text} from '@sanity/ui'\nimport Hls from 'hls.js'\nimport 'media-chrome'\nimport Button from 'part:@sanity/components/buttons/default'\nimport ProgressBar from 'part:@sanity/components/progress/bar'\nimport PropTypes from 'prop-types'\nimport React, {Component} from 'react'\nimport {getAsset} from '../actions/assets'\nimport {fetchSecrets} from '../actions/secrets'\nimport getPosterSrc from '../util/getPosterSrc'\nimport getStoryboardSrc from '../util/getStoryboardSrc'\nimport getVideoSrc from '../util/getVideoSrc'\nimport styles from './Video.css'\n\nconst NOOP = () => {\n /* intentional noop */\n}\n\nconst propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n assetDocument: PropTypes.object.isRequired,\n autoload: PropTypes.bool,\n onCancel: PropTypes.func,\n onReady: PropTypes.func,\n}\n\nclass MuxVideo extends Component {\n videoContainer = React.createRef()\n hls = null\n\n constructor(props) {\n super(props)\n this.state = {\n storyboardUrl: null,\n posterUrl: null,\n source: null,\n isLoading: true,\n error: null,\n isDeletedOnMux: false,\n isPreparingStaticRenditions: false,\n secrets: null,\n }\n this.playRef = React.createRef()\n this.muteRef = React.createRef()\n }\n\n // eslint-disable-next-line complexity\n static getDerivedStateFromProps(nextProps) {\n let isLoading = true\n let isPreparingStaticRenditions = false\n const {assetDocument} = nextProps\n\n if (assetDocument && assetDocument.status === 'preparing') {\n isLoading = 'Preparing the video'\n }\n if (assetDocument && assetDocument.status === 'waiting_for_upload') {\n isLoading = 'Waiting for upload to start'\n }\n if (assetDocument && assetDocument.status === 'waiting') {\n isLoading = 'Processing upload'\n }\n if (assetDocument && assetDocument.status === 'ready') {\n isLoading = false\n }\n if (assetDocument && typeof assetDocument.status === 'undefined') {\n isLoading = false\n }\n if (assetDocument?.data?.static_renditions?.status === 'preparing') {\n isPreparingStaticRenditions = true\n }\n if (assetDocument?.data?.static_renditions?.status === 'ready') {\n isPreparingStaticRenditions = false\n }\n return {\n isLoading,\n isPreparingStaticRenditions,\n }\n }\n\n componentDidMount() {\n this.video = React.createRef()\n\n const style = document.createElement('style')\n style.innerHTML = 'button svg { vertical-align: middle; }'\n\n if (this.playRef?.current?.shadowRoot) {\n this.playRef.current.shadowRoot.appendChild(style)\n }\n if (this.muteRef?.current?.shadowRoot) {\n this.muteRef.current.shadowRoot.appendChild(style.cloneNode(true))\n }\n\n this.setState(MuxVideo.getDerivedStateFromProps(this.props))\n fetchSecrets().then(({secrets}) => this.setState({secrets}))\n }\n\n componentDidUpdate(prevProps, prevState) {\n const previousVideo = prevProps.assetDocument.playbackId\n const newVideo = this.props.assetDocument.playbackId\n\n if (\n !this.state.isLoading &&\n this.state.secrets &&\n (this.state.source === null || previousVideo !== newVideo)\n ) {\n this.resolveSourceAndPoster(this.props.assetDocument)\n }\n\n if (this.state.source !== null && this.video.current && !this.video.current.src) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({error: null})\n this.attachVideo()\n }\n\n if (this.state.source !== null && this.state.source !== prevState.source) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({error: null, showControls: false})\n if (this.hls) {\n this.hls.destroy()\n }\n this.attachVideo()\n }\n }\n\n resolveSourceAndPoster(assetDocument) {\n const playbackId = assetDocument.playbackId\n const options = {\n isSigned: assetDocument.data.playback_ids[0].policy === 'signed',\n signingKeyId: this.state.secrets.signingKeyId || null,\n signingKeyPrivate: this.state.secrets.signingKeyPrivate || null,\n }\n\n const source = getVideoSrc(playbackId, options)\n const posterUrl = getPosterSrc(playbackId, options)\n const storyboardUrl = getStoryboardSrc(playbackId, options)\n this.setState({source, posterUrl, storyboardUrl})\n }\n\n getVideoElement() {\n return this.video && this.video.current\n }\n\n attachVideo() {\n const {assetDocument, autoload} = this.props\n\n if (Hls.isSupported()) {\n this.hls = new Hls({autoStartLoad: autoload})\n this.hls.loadSource(this.state.source)\n this.hls.attachMedia(this.video.current)\n this.hls.on(Hls.Events.MANIFEST_PARSED, (e) => {\n if (this.videoContainer.current) {\n this.videoContainer.current.style.display = 'block'\n }\n if (this.props.onReady) {\n this.props.onReady()\n }\n })\n this.hls.on(Hls.Events.ERROR, (event, data) => {\n switch (data.type) {\n case Hls.ErrorTypes.NETWORK_ERROR:\n if (this.videoContainer.current) {\n this.videoContainer.current.style.display = 'none'\n }\n this.setState({error: data})\n getAsset(assetDocument.assetId)\n .then((response) => {\n this.setState({isDeletedOnMux: false})\n })\n .catch((err) => {\n if (err.message.match(/404/)) {\n this.setState({isDeletedOnMux: true})\n return\n }\n console.error(data, err) // eslint-disable-line no-console\n })\n break\n default:\n console.error(data) // eslint-disable-line no-console\n }\n })\n } else if (this.video.current.canPlayType('application/vnd.apple.mpegurl')) {\n this.video.current.src = this.state.source\n this.video.current.addEventListener('loadedmetadata', () => {\n this.hls.loadSource(this.state.source)\n this.hls.attachMedia(this.video.current)\n })\n }\n }\n\n handleVideoClick = (event) => {\n this.setState({showControls: true})\n this.hls.startLoad(0)\n if (this.props.onReady) {\n this.props.onReady(event)\n }\n }\n\n handleCancelButtonClicked = (event) => {\n if (this.props.onCancel) {\n this.props.onCancel(event)\n }\n }\n\n // eslint-disable-next-line complexity\n render() {\n const {posterUrl, isLoading, error} = this.state\n const {assetDocument, autoload} = this.props\n if (!assetDocument || !assetDocument.status) {\n return null\n }\n\n if (isLoading) {\n return (\n <div>\n <div className={styles.progressBar}>\n <ProgressBar\n percent={100}\n text={(isLoading !== true && isLoading) || 'Waiting for Mux to complete the file'}\n isInProgress\n showPercent\n animation\n color=\"primary\"\n />\n </div>\n <div className={styles.uploadCancelButton}>\n <Button onClick={this.handleCancelButtonClicked}>Cancel</Button>\n </div>\n </div>\n )\n }\n\n const showControls = autoload || this.state.showControls\n\n return (\n <div ref={this.videoContainer} className={styles.videoContainer}>\n <media-controller>\n <video\n onClick={autoload ? NOOP : this.handleVideoClick}\n ref={this.video}\n poster={posterUrl}\n slot=\"media\"\n crossOrigin=\"anonomous\"\n >\n {this.state.storyboardUrl && (\n <track label=\"thumbnails\" default kind=\"metadata\" src={this.state.storyboardUrl} />\n )}\n </video>\n\n {showControls && (\n <media-control-bar>\n <media-play-button ref={this.playRef} />\n <media-mute-button ref={this.muteRef} />\n {/* The media volume range is causing an error to be logged in the studio: Failed to construct 'CustomElement': The result must not have attributes */}\n {/* <media-volume-range /> */}\n <media-progress-range />\n </media-control-bar>\n )}\n </media-controller>\n {error && (\n <Card padding={3} radius={2} shadow={1} tone=\"critical\" marginTop={2}>\n <Stack space={2}>\n <Text size={1}>There was an error loading this video ({error.type}).</Text>\n {this.state.isDeletedOnMux && <Text size={1}>The video is deleted on Mux</Text>}\n </Stack>\n </Card>\n )}\n\n {this.state.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 </div>\n )\n }\n}\n\nMuxVideo.propTypes = propTypes\n\nMuxVideo.defaultProps = {\n autoload: true,\n onCancel: undefined,\n onReady: undefined,\n}\n\nexport default MuxVideo\n"],"file":"Video.js"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _configMuxInput = _interopRequireDefault(require("config:mux-input"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ /* eslint-disable camelcase */
13
+ var _default = {
14
+ mp4_support: (_configMuxInput.default === null || _configMuxInput.default === void 0 ? void 0 : _configMuxInput.default.mp4_support) || 'none'
15
+ };
16
+ exports.default = _default;
17
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.js"],"names":["mp4_support"],"mappings":";;;;;;;AACA;;;;AADA;eAGe;AACbA,EAAAA,WAAW,EAAE,2GAAQA,WAAR,KAAuB;AADvB,C","sourcesContent":["/* eslint-disable camelcase */\nimport config from 'config:mux-input'\n\nexport default {\n mp4_support: config?.mp4_support || 'none',\n}\n"],"file":"config.js"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "mp4_support": "none"
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-mux-input",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "An input component that integrates Sanity Studio with Mux video encoding/hosting service.",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -24,25 +24,25 @@
24
24
  "author": "Sanity.io <hello@sanity.io>",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
- "@mux/upchunk": "^2.2.0",
28
- "@sanity/icons": "^1.1.2",
29
- "@sanity/ui": "^0.34.2",
27
+ "@mux/upchunk": "2.2.2",
28
+ "@sanity/icons": "^1.2.1",
29
+ "@sanity/ui": "^0.36.12",
30
30
  "@sanity/uuid": "^3.0.1",
31
31
  "hls.js": "^0.11.0",
32
32
  "jsonwebtoken": "^8.5.1",
33
- "lodash": "^4.17.20",
34
- "media-chrome": "^0.1.1",
33
+ "lodash": "^4.17.21",
34
+ "media-chrome": "^0.2.2",
35
35
  "prop-types": "^15.7.2",
36
- "react-icons": "^4.1.0",
36
+ "react-icons": "^4.3.1",
37
37
  "rxjs": "^6.5.3"
38
38
  },
39
39
  "devDependencies": {
40
- "eslint": "^7.19.0",
41
- "eslint-config-prettier": "^7.2.0",
42
- "eslint-config-sanity": "^5.0.0",
43
- "eslint-plugin-import": "^2.22.1",
44
- "eslint-plugin-react": "^7.22.0",
45
- "prettier": "^2.2.1",
40
+ "eslint": "^7.32.0",
41
+ "eslint-config-prettier": "^8.3.0",
42
+ "eslint-config-sanity": "^5.1.0",
43
+ "eslint-plugin-import": "^2.24.2",
44
+ "eslint-plugin-react": "^7.26.1",
45
+ "prettier": "^2.4.1",
46
46
  "react": "^17.0.1",
47
47
  "sanipack": "^2.0.1"
48
48
  },