sanity-plugin-mux-input 1.1.6 → 1.1.7
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 +27 -11
- package/build/actions/assets.js +0 -7
- package/build/actions/assets.js.map +1 -1
- package/build/actions/secrets.js.map +1 -1
- package/build/actions/upload.js +13 -25
- package/build/actions/upload.js.map +1 -1
- package/build/clients/SanityClient.js +4 -3
- package/build/clients/SanityClient.js.map +1 -1
- package/build/clients/upChunkObservable.js +3 -3
- package/build/clients/upChunkObservable.js.map +1 -1
- package/build/components/EditThumbnailDialog.js +123 -0
- package/build/components/EditThumbnailDialog.js.map +1 -0
- package/build/components/FileInputButton.js +30 -39
- package/build/components/FileInputButton.js.map +1 -1
- package/build/components/Input.js +83 -367
- package/build/components/Input.js.map +1 -1
- package/build/components/InputBrowser.js +34 -0
- package/build/components/InputBrowser.js.map +1 -0
- package/build/components/InputError.js +28 -0
- package/build/components/InputError.js.map +1 -0
- package/build/components/MuxLogo.js +425 -7
- package/build/components/MuxLogo.js.map +1 -1
- package/build/components/Player.js +292 -0
- package/build/components/Player.js.map +1 -0
- package/build/components/Preview.js +37 -52
- package/build/components/Preview.js.map +1 -1
- package/build/components/SelectAsset.js +67 -135
- package/build/components/SelectAsset.js.map +1 -1
- package/build/components/Setup.js +39 -103
- package/build/components/Setup.js.map +1 -1
- package/build/components/SetupButton.js +45 -0
- package/build/components/SetupButton.js.map +1 -0
- package/build/components/SetupDialog.js +34 -0
- package/build/components/SetupDialog.js.map +1 -0
- package/build/components/SetupNotice.js +38 -0
- package/build/components/SetupNotice.js.map +1 -0
- package/build/components/Uploader.js +74 -289
- package/build/components/Uploader.js.map +1 -1
- package/build/components/Uploader.styles.js +306 -0
- package/build/components/Uploader.styles.js.map +1 -0
- package/build/components/VideoSource.js +82 -0
- package/build/components/VideoSource.js.map +1 -0
- package/build/components/VideoSource.styles.js +165 -0
- package/build/components/VideoSource.styles.js.map +1 -0
- package/build/index.js +3 -3
- package/build/index.js.map +1 -1
- package/build/schema/mux.video.js.map +1 -1
- package/build/schema/mux.videoAsset.js.map +1 -1
- package/build/util/areSecretsSignable.js +11 -0
- package/build/util/areSecretsSignable.js.map +1 -0
- package/build/util/extractFiles.js +12 -6
- package/build/util/extractFiles.js.map +1 -1
- package/build/util/generateJwt.js +6 -15
- package/build/util/generateJwt.js.map +1 -1
- package/build/util/getPlaybackId.js +18 -0
- package/build/util/getPlaybackId.js.map +1 -0
- package/build/util/getPlaybackPolicy.js +13 -0
- package/build/util/getPlaybackPolicy.js.map +1 -0
- package/build/util/getPosterSrc.js +27 -31
- package/build/util/getPosterSrc.js.map +1 -1
- package/build/util/getStoryboardSrc.js +16 -13
- package/build/util/getStoryboardSrc.js.map +1 -1
- package/build/util/getVideoSrc.js +16 -10
- package/build/util/getVideoSrc.js.map +1 -1
- package/build/util/isSigned.js +28 -0
- package/build/util/isSigned.js.map +1 -0
- package/build/util/types.js +2 -0
- package/build/util/types.js.map +1 -0
- package/package.json +43 -38
- package/sanity.json +2 -2
- package/build/components/Preview.css +0 -16
- package/build/components/SelectAsset.css +0 -56
- package/build/components/Setup.css +0 -7
- package/build/components/UploadPlaceholder.css +0 -81
- package/build/components/UploadPlaceholder.js +0 -92
- package/build/components/UploadPlaceholder.js.map +0 -1
- package/build/components/Uploader.css +0 -28
- package/build/components/Video.css +0 -21
- package/build/components/Video.js +0 -360
- package/build/components/Video.js.map +0 -1
- package/build/util/formatTime.js +0 -28
- package/build/util/formatTime.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Mux Video Input Sanity Plugin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **NOTE**
|
|
4
|
+
>
|
|
5
|
+
> This is the **Sanity Studio v2 version** of sanity-plugin-mux-input.
|
|
6
|
+
>
|
|
7
|
+
> For the v3 version, please refer to the [main branch](https://github.com/sanity-io/sanity-plugin-mux-input).
|
|
8
|
+
|
|
9
|
+
This is a plugin that let you use [Mux](https://www.mux.com) video assets in your Sanity studio.
|
|
4
10
|
|
|
5
11
|
The Mux plugin for Sanity gives you a way to upload and preview videos easily.
|
|
6
12
|
|
|
@@ -43,11 +49,11 @@ Not familiar with Sanity? [Visit www.sanity.io](https://www.sanity.io/)
|
|
|
43
49
|
The token is stored in the dataset as a document of the type `mux.apiKey` with the id `secrets.mux`.
|
|
44
50
|
Having the ID be non-root ensures that only editors are able to see it.
|
|
45
51
|
|
|
46
|
-
The Mux plugin will find
|
|
52
|
+
The Mux plugin will find its access tokens by fetching this document.
|
|
47
53
|
|
|
48
54
|
# Playing videos in the frontend
|
|
49
55
|
|
|
50
|
-
We have made
|
|
56
|
+
We have made our own player which supports poster images for the videos as set with this plugin, see [`sanity-mux-player`](https://github.com/sanity-io/sanity-mux-player)
|
|
51
57
|
|
|
52
58
|
You could use any player which supports HLS, just point the video source to:
|
|
53
59
|
|
|
@@ -69,7 +75,7 @@ To enable [static MP4 renditions](https://docs.mux.com/guides/video/enable-stati
|
|
|
69
75
|
}
|
|
70
76
|
```
|
|
71
77
|
|
|
72
|
-
Currently `mp4_support` is the only supported MUX option and this supports a value of either `standard` or `none` (the default).
|
|
78
|
+
Currently, `mp4_support` is the only supported MUX option and this supports a value of either `standard` or `none` (the default).
|
|
73
79
|
|
|
74
80
|
# Contributing
|
|
75
81
|
|
|
@@ -78,19 +84,29 @@ Issues are actively monitored and PRs are welcome. When developing this plugin t
|
|
|
78
84
|
1. Fork this repo.
|
|
79
85
|
1. Install the sanity cli and create a sanity project: `npm install -g @sanity/cli && sanity init`. Follow the prompts, starting out with the blog template is a good way to go.
|
|
80
86
|
1. `cd` into your project directory, run `npm install && npm start` - your sanity studio should be running on http://localhost:3333.
|
|
81
|
-
1. `cd` into the `plugins`
|
|
87
|
+
1. `cd` into the `plugins` directory of your project.
|
|
82
88
|
1. Fork this repo and clone your fork into the `plugins` directory inside your project `git clone git@github.com:your-fork/sanity-plugin-mux-input.git`.
|
|
83
89
|
1. Open `sanity.json`, go to the `plugins` array and add `mux-input`.
|
|
84
90
|
1. Re-start the sanity studio server with `npm start`.
|
|
85
91
|
1. Edit `schemas/post.js` and add follow the plugin documentation to add a `mux.video` type field.
|
|
86
|
-
1. Your studio should reload, and now when you edit the plugin code it should reload the studio, when you're done
|
|
92
|
+
1. Your studio should reload, and now when you edit the plugin code it should reload the studio, when you're done creating a branch, put in a PR and a maintainer will review it. Thank you!
|
|
93
|
+
|
|
94
|
+
# Publishing
|
|
87
95
|
|
|
88
|
-
|
|
96
|
+
Publishing is done by pushing [Conventional Commits](https://github.com/semantic-release/semantic-release#how-does-it-work).
|
|
97
|
+
On the [studio-v2](/tree/studio-v2) branch this will result in:
|
|
89
98
|
|
|
90
|
-
|
|
99
|
+
- a new version on the `latest` dist-tag.
|
|
100
|
+
- running `yarn add sanity-plugin-mux-input` or `npm i sanity-plugin-mux-input` will fetch the new version.
|
|
101
|
+
- running `sanity install mux-input` will fetch the new version.
|
|
102
|
+
- studio-v3 users are unaffected.
|
|
103
|
+
On the [main](/tree/main) branch this will result in:
|
|
104
|
+
- a new prerelease version on the `studio-v3` dist-tag.
|
|
105
|
+
- running `yarn add sanity-plugin-mux-input@studio-v3` or `npm i sanity-plugin-mux-input@studio-v3` will fetch the new version.
|
|
106
|
+
- running `sanity install mux-input` won't fetch the new version.
|
|
91
107
|
|
|
92
|
-
`
|
|
108
|
+
After Studio v3 turns stable this behavior will change. The v2 version will then be available on the `studio-v2` dist-tag, and `studio-v3` is upgraded to live on `latest`.
|
|
93
109
|
|
|
94
|
-
|
|
110
|
+
# Test
|
|
95
111
|
|
|
96
|
-
`
|
|
112
|
+
`npm test`
|
package/build/actions/assets.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = void 0;
|
|
7
6
|
exports.deleteAsset = deleteAsset;
|
|
8
7
|
exports.getAsset = getAsset;
|
|
9
8
|
|
|
@@ -28,10 +27,4 @@ function getAsset(assetId) {
|
|
|
28
27
|
method: 'GET'
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
var _default = {
|
|
33
|
-
getAsset,
|
|
34
|
-
deleteAsset
|
|
35
|
-
};
|
|
36
|
-
exports.default = _default;
|
|
37
30
|
//# sourceMappingURL=assets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","names":["deleteAsset","assetId","dataset","client","clientConfig","request","url","withCredentials","method","getAsset"],"sources":["../../src/actions/assets.
|
|
1
|
+
{"version":3,"file":"assets.js","names":["deleteAsset","assetId","dataset","client","clientConfig","request","url","withCredentials","method","getAsset"],"sources":["../../src/actions/assets.ts"],"sourcesContent":["import client from '../clients/SanityClient'\nimport type {MuxAsset} from '../util/types'\n\nexport function deleteAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<void>({\n url: `/addons/mux/assets/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function getAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n"],"mappings":";;;;;;;;AAAA;;;;AAGO,SAASA,WAAT,CAAqBC,OAArB,EAAsC;EAC3C,IAAMC,OAAO,GAAGC,qBAAA,CAAOC,YAAP,CAAoBF,OAApC;EACA,OAAOC,qBAAA,CAAOE,OAAP,CAAqB;IAC1BC,GAAG,+BAAwBJ,OAAxB,cAAmCD,OAAnC,CADuB;IAE1BM,eAAe,EAAE,IAFS;IAG1BC,MAAM,EAAE;EAHkB,CAArB,CAAP;AAKD;;AAEM,SAASC,QAAT,CAAkBR,OAAlB,EAAmC;EACxC,IAAMC,OAAO,GAAGC,qBAAA,CAAOC,YAAP,CAAoBF,OAApC;EACA,OAAOC,qBAAA,CAAOE,OAAP,CAAiC;IACtCC,GAAG,+BAAwBJ,OAAxB,mBAAwCD,OAAxC,CADmC;IAEtCM,eAAe,EAAE,IAFqB;IAGtCC,MAAM,EAAE;EAH8B,CAAjC,CAAP;AAKD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","names":["cache","secrets","exists","fetchSecrets","Promise","resolve","client","fetch","then","Boolean","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","saveSecrets","doc","_id","_type","createOrReplace","createSigningKeys","dataset","clientConfig","request","url","withCredentials","method","testSecrets","haveValidSigningKeys","res","data","id","e","console","error","testSecretsObservable","defer","observable"],"sources":["../../src/actions/secrets.
|
|
1
|
+
{"version":3,"file":"secrets.js","names":["cache","secrets","exists","fetchSecrets","Promise","resolve","client","fetch","then","Boolean","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","saveSecrets","doc","_id","_type","createOrReplace","createSigningKeys","dataset","clientConfig","request","url","withCredentials","method","testSecrets","haveValidSigningKeys","res","data","id","e","console","error","testSecretsObservable","defer","observable"],"sources":["../../src/actions/secrets.ts"],"sourcesContent":["import {defer} from 'rxjs'\n\nimport client from '../clients/SanityClient'\nimport type {Secrets} from '../util/types'\n\nconst cache: {secrets: Secrets | null; exists: boolean} = {\n secrets: null,\n exists: false,\n}\n\nexport function fetchSecrets() {\n if (cache.exists) {\n return Promise.resolve(cache)\n }\n\n return client.fetch('*[_id == \"secrets.mux\"][0]').then((secrets: Secrets | null) => {\n cache.exists = Boolean(secrets)\n cache.secrets = {\n token: secrets?.token || null,\n secretKey: secrets?.secretKey || null,\n enableSignedUrls: secrets?.enableSignedUrls || false,\n signingKeyId: secrets?.signingKeyId || null,\n signingKeyPrivate: secrets?.signingKeyPrivate || null,\n }\n return cache\n })\n}\n\nexport function saveSecrets(\n token: string,\n secretKey: string,\n enableSignedUrls: boolean,\n signingKeyId: string,\n signingKeyPrivate: string\n) {\n const doc = {\n _id: 'secrets.mux',\n _type: 'mux.apiKey',\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n\n return client.createOrReplace(doc).then(() => {\n cache.exists = true\n cache.secrets = {\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n return cache.secrets\n })\n}\n\nexport function createSigningKeys() {\n const dataset = client.clientConfig.dataset\n return client.request<{data: {private_key: string; id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}`,\n withCredentials: true,\n method: 'POST',\n })\n}\n\nexport function testSecrets() {\n const dataset = client.clientConfig.dataset\n return client.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport async function haveValidSigningKeys(signingKeyId: string, signingKeyPrivate: string) {\n if (!(signingKeyId && signingKeyPrivate)) {\n return false\n }\n\n const dataset = client.clientConfig.dataset\n try {\n const res = await client.request<{data: {id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}/${signingKeyId}`,\n withCredentials: true,\n method: 'GET',\n })\n //\n // if this signing key is valid it will return { data: { id: 'xxxx' } }\n //\n return !!(res.data && res.data.id)\n } catch (e) {\n console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid')\n return false\n }\n}\n\nexport function testSecretsObservable() {\n const dataset = client.clientConfig.dataset\n return defer(() =>\n client.observable.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n )\n}\n"],"mappings":"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"}
|
package/build/actions/upload.js
CHANGED
|
@@ -4,29 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.cancelUpload = cancelUpload;
|
|
7
|
-
exports.default = void 0;
|
|
8
7
|
exports.getUpload = getUpload;
|
|
9
8
|
exports.uploadFile = uploadFile;
|
|
10
9
|
exports.uploadUrl = uploadUrl;
|
|
11
10
|
|
|
12
11
|
var _uuid = require("@sanity/uuid");
|
|
13
12
|
|
|
14
|
-
var _config = _interopRequireDefault(require("../config"));
|
|
15
|
-
|
|
16
13
|
var _lodash = require("lodash");
|
|
17
14
|
|
|
18
15
|
var _rxjs = require("rxjs");
|
|
19
16
|
|
|
20
17
|
var _operators = require("rxjs/operators");
|
|
21
18
|
|
|
22
|
-
var _assets = require("../actions/assets");
|
|
23
|
-
|
|
24
|
-
var _secrets = require("../actions/secrets");
|
|
25
|
-
|
|
26
19
|
var _SanityClient = _interopRequireDefault(require("../clients/SanityClient"));
|
|
27
20
|
|
|
28
21
|
var _upChunkObservable = require("../clients/upChunkObservable");
|
|
29
22
|
|
|
23
|
+
var _config = _interopRequireDefault(require("../config"));
|
|
24
|
+
|
|
25
|
+
var _assets = require("./assets");
|
|
26
|
+
|
|
27
|
+
var _secrets = require("./secrets");
|
|
28
|
+
|
|
30
29
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
30
|
|
|
32
31
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -126,7 +125,9 @@ function uploadFile(file) {
|
|
|
126
125
|
},
|
|
127
126
|
body
|
|
128
127
|
})).pipe((0, _operators.mergeMap)(result => {
|
|
129
|
-
return (0, _upChunkObservable.createUpChunkObservable)(uuid, result.upload.url, file).pipe( // eslint-disable-next-line
|
|
128
|
+
return (0, _upChunkObservable.createUpChunkObservable)(uuid, result.upload.url, file).pipe( // eslint-disable-next-line no-warning-comments
|
|
129
|
+
// @TODO type the observable events
|
|
130
|
+
// eslint-disable-next-line max-nested-callbacks
|
|
130
131
|
(0, _operators.mergeMap)(event => {
|
|
131
132
|
if (event.type !== 'success') {
|
|
132
133
|
return (0, _rxjs.of)(event);
|
|
@@ -154,13 +155,6 @@ function getUpload(assetId) {
|
|
|
154
155
|
});
|
|
155
156
|
}
|
|
156
157
|
|
|
157
|
-
var _default = {
|
|
158
|
-
uploadUrl,
|
|
159
|
-
uploadFile,
|
|
160
|
-
getUpload
|
|
161
|
-
};
|
|
162
|
-
exports.default = _default;
|
|
163
|
-
|
|
164
158
|
function pollUpload(uuid) {
|
|
165
159
|
var maxTries = 10;
|
|
166
160
|
var pollInterval;
|
|
@@ -232,7 +226,7 @@ function _updateAssetDocumentFromUpload() {
|
|
|
232
226
|
|
|
233
227
|
function testFile(file) {
|
|
234
228
|
if (typeof window !== 'undefined' && file instanceof window.File) {
|
|
235
|
-
var fileOptions = optionsFromFile(file);
|
|
229
|
+
var fileOptions = optionsFromFile({}, file);
|
|
236
230
|
return (0, _rxjs.of)(fileOptions);
|
|
237
231
|
}
|
|
238
232
|
|
|
@@ -266,15 +260,9 @@ function optionsFromFile(opts, file) {
|
|
|
266
260
|
return opts;
|
|
267
261
|
}
|
|
268
262
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
263
|
+
return {
|
|
264
|
+
name: opts.preserveFilename === false ? undefined : file.name,
|
|
265
|
+
type: file.type
|
|
272
266
|
};
|
|
273
|
-
return _objectSpread(_objectSpread({}, {
|
|
274
|
-
filename: opts.preserveFilename === false ? undefined : file.name,
|
|
275
|
-
contentType: file.type
|
|
276
|
-
}), {}, {
|
|
277
|
-
fileOpts
|
|
278
|
-
});
|
|
279
267
|
}
|
|
280
268
|
//# sourceMappingURL=upload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","switchMap","validUrl","concat","of","type","testSecretsObservable","json","status","throwError","Error","generateUuid","enableSignedUrls","muxBody","input","playback_policy","mp4_support","config","query","JSON","stringify","filename","split","slice","defer","headers","mergeMap","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","createUpChunkObservable","upload","event","from","updateAssetDocumentFromUpload","doc","catchError","err","mergeMapTo","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","getAsset","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","isString","parsed","URL","protocol","match","opts","fileOpts","preserveFilename","undefined","name","contentType"],"sources":["../../src/actions/upload.js"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","switchMap","validUrl","concat","of","type","testSecretsObservable","json","status","throwError","Error","generateUuid","enableSignedUrls","muxBody","input","playback_policy","mp4_support","config","query","JSON","stringify","filename","split","slice","defer","headers","mergeMap","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","createUpChunkObservable","upload","event","from","updateAssetDocumentFromUpload","doc","catchError","err","mergeMapTo","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","getAsset","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","isString","parsed","URL","protocol","match","opts","name","preserveFilename","undefined"],"sources":["../../src/actions/upload.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {isString} from 'lodash'\nimport {type Observable, concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\n\nimport client from '../clients/SanityClient'\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\nimport config from '../config'\nimport type {MuxAsset} from '../util/types'\nimport {getAsset} from './assets'\nimport {testSecretsObservable} from './secrets'\n\nexport function cancelUpload(uuid: string) {\n return client.observable.request({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${uuid}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function uploadUrl(url: string, options: {enableSignedUrls?: boolean} = {}) {\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: File, options: {enableSignedUrls?: boolean} = {}) {\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 sanityAssetId: string\n upload: {\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: 'waiting'\n timeout: number\n url: string\n }\n }>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n body,\n })\n ).pipe(\n mergeMap((result) => {\n return createUpChunkObservable(uuid, result.upload.url, file).pipe(\n // eslint-disable-next-line no-warning-comments\n // @TODO type the observable events\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((event: any) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(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\ntype UploadResponse = {\n data: {\n asset_id: string\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: string\n timeout: number\n }\n}\nexport function getUpload(assetId: string) {\n return client.request<UploadResponse>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nfunction pollUpload(uuid: string): Promise<UploadResponse> {\n const maxTries = 10\n let pollInterval: number\n let tries = 0\n let assetId: string\n let upload: UploadResponse\n return new Promise((resolve, reject) => {\n pollInterval = (setInterval as typeof window.setInterval)(async () => {\n try {\n upload = await getUpload(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: string) {\n let upload: UploadResponse\n let asset: {data: MuxAsset}\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: File) {\n if (typeof window !== 'undefined' && file instanceof window.File) {\n const fileOptions = optionsFromFile({}, file)\n return of(fileOptions)\n }\n return throwError(new Error('Invalid file'))\n}\n\nfunction testUrl(url: string): Observable<string> {\n const error = new Error('Invalid URL')\n if (!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: {preserveFilename?: boolean}, file: File) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n return {\n name: opts.preserveFilename === false ? undefined : file.name,\n type: file.type,\n }\n}\n"],"mappings":"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"}
|
|
@@ -9,10 +9,11 @@ var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
var
|
|
12
|
+
var sanityClient = _client.default;
|
|
13
|
+
var isContentLakeSupported = typeof sanityClient.withConfig === 'function';
|
|
14
|
+
var client = isContentLakeSupported ? sanityClient.withConfig({
|
|
14
15
|
apiVersion: '2021-05-17'
|
|
15
|
-
}) :
|
|
16
|
+
}) : sanityClient;
|
|
16
17
|
exports.client = client;
|
|
17
18
|
var _default = client;
|
|
18
19
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SanityClient.js","names":["
|
|
1
|
+
{"version":3,"file":"SanityClient.js","names":["sanityClient","_sanityClient","isContentLakeSupported","withConfig","client","apiVersion"],"sources":["../../src/clients/SanityClient.ts"],"sourcesContent":["import type {SanityClient} from '@sanity/client'\nimport _sanityClient from 'part:@sanity/base/client'\nconst sanityClient = _sanityClient as SanityClient\n\nconst isContentLakeSupported = typeof sanityClient.withConfig === 'function'\n\nexport const client = isContentLakeSupported\n ? sanityClient.withConfig({apiVersion: '2021-05-17'})\n : sanityClient\n\nexport default client\n"],"mappings":";;;;;;;AACA;;;;AACA,IAAMA,YAAY,GAAGC,eAArB;AAEA,IAAMC,sBAAsB,GAAG,OAAOF,YAAY,CAACG,UAApB,KAAmC,UAAlE;AAEO,IAAMC,MAAM,GAAGF,sBAAsB,GACxCF,YAAY,CAACG,UAAb,CAAwB;EAACE,UAAU,EAAE;AAAb,CAAxB,CADwC,GAExCL,YAFG;;eAIQI,M"}
|
|
@@ -18,7 +18,7 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
18
18
|
var upchunk = UpChunk.createUpload({
|
|
19
19
|
endpoint: uploadUrl,
|
|
20
20
|
file: source,
|
|
21
|
-
chunkSize:
|
|
21
|
+
chunkSize: 30720 // Uploads the file in 30 MB chunks
|
|
22
22
|
|
|
23
23
|
});
|
|
24
24
|
|
|
@@ -39,7 +39,7 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
39
39
|
});
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
var offlineHandler =
|
|
42
|
+
var offlineHandler = () => {
|
|
43
43
|
upchunk.pause();
|
|
44
44
|
subscriber.next({
|
|
45
45
|
type: 'pause',
|
|
@@ -47,7 +47,7 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
47
47
|
});
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
var onlineHandler =
|
|
50
|
+
var onlineHandler = () => {
|
|
51
51
|
upchunk.resume();
|
|
52
52
|
subscriber.next({
|
|
53
53
|
type: 'resume',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upChunkObservable.js","names":["createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","chunkSize","successHandler","next","type","id","complete","errorHandler","data","error","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort"],"sources":["../../src/clients/upChunkObservable.
|
|
1
|
+
{"version":3,"file":"upChunkObservable.js","names":["createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","chunkSize","successHandler","next","type","id","complete","errorHandler","data","error","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort"],"sources":["../../src/clients/upChunkObservable.ts"],"sourcesContent":["import * as UpChunk from '@mux/upchunk'\nimport {Observable} from 'rxjs'\n\nexport function createUpChunkObservable(uuid: string, uploadUrl: string, source: File) {\n return new Observable((subscriber) => {\n const upchunk = UpChunk.createUpload({\n endpoint: uploadUrl,\n file: source,\n chunkSize: 30720, // Uploads the file in 30 MB chunks\n })\n\n const successHandler = () => {\n subscriber.next({\n type: 'success',\n id: uuid,\n })\n subscriber.complete()\n }\n\n const errorHandler = (data: CustomEvent) => subscriber.error(new Error(data.detail.message))\n\n const progressHandler = (data: CustomEvent) => {\n return subscriber.next({type: 'progress', percent: data.detail})\n }\n\n const offlineHandler = () => {\n upchunk.pause()\n subscriber.next({\n type: 'pause',\n id: uuid,\n })\n }\n\n const onlineHandler = () => {\n upchunk.resume()\n subscriber.next({\n type: 'resume',\n id: uuid,\n })\n }\n\n upchunk.on('success', successHandler)\n upchunk.on('error', errorHandler)\n upchunk.on('progress', progressHandler)\n upchunk.on('offline', offlineHandler)\n upchunk.on('online', onlineHandler)\n\n return () => upchunk.abort()\n })\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEO,SAASA,uBAAT,CAAiCC,IAAjC,EAA+CC,SAA/C,EAAkEC,MAAlE,EAAgF;EACrF,OAAO,IAAIC,gBAAJ,CAAgBC,UAAD,IAAgB;IACpC,IAAMC,OAAO,GAAGC,OAAO,CAACC,YAAR,CAAqB;MACnCC,QAAQ,EAAEP,SADyB;MAEnCQ,IAAI,EAAEP,MAF6B;MAGnCQ,SAAS,EAAE,KAHwB,CAGjB;;IAHiB,CAArB,CAAhB;;IAMA,IAAMC,cAAc,GAAG,MAAM;MAC3BP,UAAU,CAACQ,IAAX,CAAgB;QACdC,IAAI,EAAE,SADQ;QAEdC,EAAE,EAAEd;MAFU,CAAhB;MAIAI,UAAU,CAACW,QAAX;IACD,CAND;;IAQA,IAAMC,YAAY,GAAIC,IAAD,IAAuBb,UAAU,CAACc,KAAX,CAAiB,IAAIC,KAAJ,CAAUF,IAAI,CAACG,MAAL,CAAYC,OAAtB,CAAjB,CAA5C;;IAEA,IAAMC,eAAe,GAAIL,IAAD,IAAuB;MAC7C,OAAOb,UAAU,CAACQ,IAAX,CAAgB;QAACC,IAAI,EAAE,UAAP;QAAmBU,OAAO,EAAEN,IAAI,CAACG;MAAjC,CAAhB,CAAP;IACD,CAFD;;IAIA,IAAMI,cAAc,GAAG,MAAM;MAC3BnB,OAAO,CAACoB,KAAR;MACArB,UAAU,CAACQ,IAAX,CAAgB;QACdC,IAAI,EAAE,OADQ;QAEdC,EAAE,EAAEd;MAFU,CAAhB;IAID,CAND;;IAQA,IAAM0B,aAAa,GAAG,MAAM;MAC1BrB,OAAO,CAACsB,MAAR;MACAvB,UAAU,CAACQ,IAAX,CAAgB;QACdC,IAAI,EAAE,QADQ;QAEdC,EAAE,EAAEd;MAFU,CAAhB;IAID,CAND;;IAQAK,OAAO,CAACuB,EAAR,CAAW,SAAX,EAAsBjB,cAAtB;IACAN,OAAO,CAACuB,EAAR,CAAW,OAAX,EAAoBZ,YAApB;IACAX,OAAO,CAACuB,EAAR,CAAW,UAAX,EAAuBN,eAAvB;IACAjB,OAAO,CAACuB,EAAR,CAAW,SAAX,EAAsBJ,cAAtB;IACAnB,OAAO,CAACuB,EAAR,CAAW,QAAX,EAAqBF,aAArB;IAEA,OAAO,MAAMrB,OAAO,CAACwB,KAAR,EAAb;EACD,CA5CM,CAAP;AA6CD"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = EditThumbnailDialog;
|
|
7
|
+
|
|
8
|
+
var _autoId = require("@reach/auto-id");
|
|
9
|
+
|
|
10
|
+
var _ui = require("@sanity/ui");
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _useDevicePixelRatio = require("use-device-pixel-ratio");
|
|
15
|
+
|
|
16
|
+
var _SanityClient = _interopRequireDefault(require("../clients/SanityClient"));
|
|
17
|
+
|
|
18
|
+
var _VideoSource = require("./VideoSource.styles");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
27
|
+
|
|
28
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
29
|
+
|
|
30
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
31
|
+
|
|
32
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
33
|
+
|
|
34
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
35
|
+
|
|
36
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
37
|
+
|
|
38
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
|
+
|
|
40
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
|
+
|
|
42
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
43
|
+
|
|
44
|
+
function EditThumbnailDialog(_ref) {
|
|
45
|
+
var asset = _ref.asset,
|
|
46
|
+
getCurrentTime = _ref.getCurrentTime,
|
|
47
|
+
onClose = _ref.onClose,
|
|
48
|
+
videoReadyToPlay = _ref.videoReadyToPlay,
|
|
49
|
+
secrets = _ref.secrets;
|
|
50
|
+
var dialogId = "EditThumbnailDialog".concat((0, _autoId.useId)());
|
|
51
|
+
var nextTime = (0, _react.useMemo)(() => getCurrentTime(), [getCurrentTime]);
|
|
52
|
+
var assetWithNewThumbnail = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, asset), {}, {
|
|
53
|
+
thumbTime: nextTime
|
|
54
|
+
}), [asset, nextTime]);
|
|
55
|
+
|
|
56
|
+
var _useState = (0, _react.useState)(false),
|
|
57
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
58
|
+
saving = _useState2[0],
|
|
59
|
+
setSaving = _useState2[1];
|
|
60
|
+
|
|
61
|
+
var _useState3 = (0, _react.useState)(null),
|
|
62
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
63
|
+
error = _useState4[0],
|
|
64
|
+
setError = _useState4[1];
|
|
65
|
+
|
|
66
|
+
var handleSave = (0, _react.useCallback)(() => {
|
|
67
|
+
setSaving(true);
|
|
68
|
+
|
|
69
|
+
_SanityClient.default.patch(asset._id).set({
|
|
70
|
+
thumbTime: nextTime
|
|
71
|
+
}).commit({
|
|
72
|
+
returnDocuments: false
|
|
73
|
+
}).catch(setError).finally(() => setSaving(false));
|
|
74
|
+
}, [asset._id, nextTime]);
|
|
75
|
+
var width = 300 * (0, _useDevicePixelRatio.getDevicePixelRatio)({
|
|
76
|
+
maxDpr: 2
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
if (error) {
|
|
80
|
+
// eslint-disable-next-line no-warning-comments
|
|
81
|
+
// @TODO handle errors more gracefully
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
|
|
86
|
+
id: dialogId,
|
|
87
|
+
header: "Edit thumbnail",
|
|
88
|
+
onClose: onClose,
|
|
89
|
+
footer: /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
90
|
+
padding: 3
|
|
91
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
92
|
+
key: "thumbnail",
|
|
93
|
+
mode: "ghost",
|
|
94
|
+
tone: "primary",
|
|
95
|
+
loading: saving,
|
|
96
|
+
onClick: handleSave,
|
|
97
|
+
disabled: videoReadyToPlay === false,
|
|
98
|
+
text: "Set new thumbnail"
|
|
99
|
+
}))
|
|
100
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
101
|
+
space: 3,
|
|
102
|
+
padding: 3
|
|
103
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
104
|
+
space: 2
|
|
105
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
106
|
+
size: 1,
|
|
107
|
+
weight: "semibold"
|
|
108
|
+
}, "Current:"), /*#__PURE__*/_react.default.createElement(_VideoSource.VideoThumbnail, {
|
|
109
|
+
asset: asset,
|
|
110
|
+
secrets: secrets,
|
|
111
|
+
width: width
|
|
112
|
+
})), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
113
|
+
space: 2
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
115
|
+
size: 1,
|
|
116
|
+
weight: "semibold"
|
|
117
|
+
}, "New:"), /*#__PURE__*/_react.default.createElement(_VideoSource.VideoThumbnail, {
|
|
118
|
+
asset: assetWithNewThumbnail,
|
|
119
|
+
secrets: secrets,
|
|
120
|
+
width: width
|
|
121
|
+
}))));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=EditThumbnailDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditThumbnailDialog.js","names":["EditThumbnailDialog","asset","getCurrentTime","onClose","videoReadyToPlay","secrets","dialogId","useId","nextTime","useMemo","assetWithNewThumbnail","thumbTime","useState","saving","setSaving","error","setError","handleSave","useCallback","client","patch","_id","set","commit","returnDocuments","catch","finally","width","getDevicePixelRatio","maxDpr"],"sources":["../../src/components/EditThumbnailDialog.tsx"],"sourcesContent":["import {useId} from '@reach/auto-id'\nimport {Button, Dialog, Stack, Text} from '@sanity/ui'\nimport React, {useCallback, useMemo, useState} from 'react'\nimport {getDevicePixelRatio} from 'use-device-pixel-ratio'\n\nimport client from '../clients/SanityClient'\nimport type {Secrets, VideoAssetDocument} from '../util/types'\nimport {VideoThumbnail} from './VideoSource.styles'\n\nexport interface Props {\n asset: VideoAssetDocument\n getCurrentTime: () => number\n onClose: () => void\n videoReadyToPlay: boolean\n secrets: Secrets\n}\nexport default function EditThumbnailDialog({\n asset,\n getCurrentTime,\n onClose,\n videoReadyToPlay,\n secrets,\n}: Props) {\n const dialogId = `EditThumbnailDialog${useId()}`\n const nextTime = useMemo(() => getCurrentTime(), [getCurrentTime])\n const assetWithNewThumbnail = useMemo(() => ({...asset, thumbTime: nextTime}), [asset, nextTime])\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const handleSave = useCallback(() => {\n setSaving(true)\n client\n .patch(asset._id!)\n .set({thumbTime: nextTime})\n .commit({returnDocuments: false})\n .catch(setError)\n .finally(() => setSaving(false))\n }, [asset._id, nextTime])\n const width = 300 * getDevicePixelRatio({maxDpr: 2})\n\n if (error) {\n // eslint-disable-next-line no-warning-comments\n // @TODO handle errors more gracefully\n throw error\n }\n\n return (\n <Dialog\n id={dialogId}\n header=\"Edit thumbnail\"\n onClose={onClose}\n footer={\n <Stack padding={3}>\n <Button\n key=\"thumbnail\"\n mode=\"ghost\"\n tone=\"primary\"\n loading={saving}\n onClick={handleSave}\n disabled={videoReadyToPlay === false}\n text=\"Set new thumbnail\"\n />\n </Stack>\n }\n >\n <Stack space={3} padding={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Current:\n </Text>\n <VideoThumbnail asset={asset} secrets={secrets} width={width} />\n </Stack>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n New:\n </Text>\n <VideoThumbnail asset={assetWithNewThumbnail} secrets={secrets} width={width} />\n </Stack>\n </Stack>\n </Dialog>\n )\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AASe,SAASA,mBAAT,OAML;EAAA,IALRC,KAKQ,QALRA,KAKQ;EAAA,IAJRC,cAIQ,QAJRA,cAIQ;EAAA,IAHRC,OAGQ,QAHRA,OAGQ;EAAA,IAFRC,gBAEQ,QAFRA,gBAEQ;EAAA,IADRC,OACQ,QADRA,OACQ;EACR,IAAMC,QAAQ,gCAAyB,IAAAC,aAAA,GAAzB,CAAd;EACA,IAAMC,QAAQ,GAAG,IAAAC,cAAA,EAAQ,MAAMP,cAAc,EAA5B,EAAgC,CAACA,cAAD,CAAhC,CAAjB;EACA,IAAMQ,qBAAqB,GAAG,IAAAD,cAAA,EAAQ,sCAAWR,KAAX;IAAkBU,SAAS,EAAEH;EAA7B,EAAR,EAAiD,CAACP,KAAD,EAAQO,QAAR,CAAjD,CAA9B;;EACA,gBAA4B,IAAAI,eAAA,EAAS,KAAT,CAA5B;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,SAAf;;EACA,iBAA0B,IAAAF,eAAA,EAAuB,IAAvB,CAA1B;EAAA;EAAA,IAAOG,KAAP;EAAA,IAAcC,QAAd;;EACA,IAAMC,UAAU,GAAG,IAAAC,kBAAA,EAAY,MAAM;IACnCJ,SAAS,CAAC,IAAD,CAAT;;IACAK,qBAAA,CACGC,KADH,CACSnB,KAAK,CAACoB,GADf,EAEGC,GAFH,CAEO;MAACX,SAAS,EAAEH;IAAZ,CAFP,EAGGe,MAHH,CAGU;MAACC,eAAe,EAAE;IAAlB,CAHV,EAIGC,KAJH,CAIST,QAJT,EAKGU,OALH,CAKW,MAAMZ,SAAS,CAAC,KAAD,CAL1B;EAMD,CARkB,EAQhB,CAACb,KAAK,CAACoB,GAAP,EAAYb,QAAZ,CARgB,CAAnB;EASA,IAAMmB,KAAK,GAAG,MAAM,IAAAC,wCAAA,EAAoB;IAACC,MAAM,EAAE;EAAT,CAApB,CAApB;;EAEA,IAAId,KAAJ,EAAW;IACT;IACA;IACA,MAAMA,KAAN;EACD;;EAED,oBACE,6BAAC,UAAD;IACE,EAAE,EAAET,QADN;IAEE,MAAM,EAAC,gBAFT;IAGE,OAAO,EAAEH,OAHX;IAIE,MAAM,eACJ,6BAAC,SAAD;MAAO,OAAO,EAAE;IAAhB,gBACE,6BAAC,UAAD;MACE,GAAG,EAAC,WADN;MAEE,IAAI,EAAC,OAFP;MAGE,IAAI,EAAC,SAHP;MAIE,OAAO,EAAEU,MAJX;MAKE,OAAO,EAAEI,UALX;MAME,QAAQ,EAAEb,gBAAgB,KAAK,KANjC;MAOE,IAAI,EAAC;IAPP,EADF;EALJ,gBAkBE,6BAAC,SAAD;IAAO,KAAK,EAAE,CAAd;IAAiB,OAAO,EAAE;EAA1B,gBACE,6BAAC,SAAD;IAAO,KAAK,EAAE;EAAd,gBACE,6BAAC,QAAD;IAAM,IAAI,EAAE,CAAZ;IAAe,MAAM,EAAC;EAAtB,cADF,eAIE,6BAAC,2BAAD;IAAgB,KAAK,EAAEH,KAAvB;IAA8B,OAAO,EAAEI,OAAvC;IAAgD,KAAK,EAAEsB;EAAvD,EAJF,CADF,eAOE,6BAAC,SAAD;IAAO,KAAK,EAAE;EAAd,gBACE,6BAAC,QAAD;IAAM,IAAI,EAAE,CAAZ;IAAe,MAAM,EAAC;EAAtB,UADF,eAIE,6BAAC,2BAAD;IAAgB,KAAK,EAAEjB,qBAAvB;IAA8C,OAAO,EAAEL,OAAvD;IAAgE,KAAK,EAAEsB;EAAvE,EAJF,CAPF,CAlBF,CADF;AAmCD"}
|
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.FileInputButton = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _autoId = require("@reach/auto-id");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _ui = require("@sanity/ui");
|
|
11
11
|
|
|
12
|
-
var _react =
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
14
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
15
|
|
|
16
|
-
var _excluded = ["onSelect"
|
|
16
|
+
var _excluded = ["onSelect"];
|
|
17
17
|
|
|
18
18
|
var _templateObject, _templateObject2;
|
|
19
19
|
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
21
|
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
22
26
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
23
27
|
|
|
24
28
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
@@ -31,45 +35,34 @@ var HiddenInput = _styledComponents.default.input(_templateObject || (_templateO
|
|
|
31
35
|
|
|
32
36
|
var Label = _styledComponents.default.label(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n"])));
|
|
33
37
|
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (onSelect) {
|
|
39
|
-
onSelect(event.target.files);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
38
|
+
var FileInputButton = _ref => {
|
|
39
|
+
var onSelect = _ref.onSelect,
|
|
40
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
42
41
|
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
type = _ref2$type === void 0 ? 'file' : _ref2$type,
|
|
53
|
-
props = _objectWithoutProperties(_ref2, _excluded);
|
|
54
|
-
|
|
55
|
-
var _inputId = _react.default.useRef((0, _lodash.uniqueId)('FileSelect'));
|
|
56
|
-
|
|
57
|
-
var inputRef = _react.default.useRef(null);
|
|
42
|
+
var inputId = "FileSelect".concat((0, _autoId.useId)());
|
|
43
|
+
var inputRef = (0, _react.useRef)(null);
|
|
44
|
+
var handleSelect = (0, _react.useCallback)(event => {
|
|
45
|
+
if (onSelect) {
|
|
46
|
+
onSelect(event.target.files);
|
|
47
|
+
}
|
|
48
|
+
}, [onSelect]);
|
|
49
|
+
var handleButtonClick = (0, _react.useCallback)(() => {
|
|
50
|
+
var _inputRef$current;
|
|
58
51
|
|
|
52
|
+
return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
|
|
53
|
+
}, []);
|
|
59
54
|
return /*#__PURE__*/_react.default.createElement(Label, {
|
|
60
|
-
htmlFor:
|
|
55
|
+
htmlFor: inputId
|
|
61
56
|
}, /*#__PURE__*/_react.default.createElement(HiddenInput, {
|
|
57
|
+
accept: "video/*",
|
|
62
58
|
ref: inputRef,
|
|
63
|
-
|
|
64
|
-
type:
|
|
65
|
-
id:
|
|
66
|
-
onChange:
|
|
67
|
-
event,
|
|
68
|
-
onSelect
|
|
69
|
-
}),
|
|
59
|
+
tabIndex: 0,
|
|
60
|
+
type: "file",
|
|
61
|
+
id: inputId,
|
|
62
|
+
onChange: handleSelect,
|
|
70
63
|
value: ""
|
|
71
64
|
}), /*#__PURE__*/_react.default.createElement(_ui.Button, _extends({
|
|
72
|
-
onClick:
|
|
65
|
+
onClick: handleButtonClick,
|
|
73
66
|
mode: "default",
|
|
74
67
|
tone: "primary",
|
|
75
68
|
style: {
|
|
@@ -79,6 +72,4 @@ var FileInputButton = _ref2 => {
|
|
|
79
72
|
};
|
|
80
73
|
|
|
81
74
|
exports.FileInputButton = FileInputButton;
|
|
82
|
-
var _default = FileInputButton;
|
|
83
|
-
exports.default = _default;
|
|
84
75
|
//# sourceMappingURL=FileInputButton.js.map
|