sanity-plugin-mux-input 2.0.3 → 2.0.5

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.
Files changed (35) hide show
  1. package/lib/_chunks/{Input-aa6d929b.js → Input-235cb658.js} +77 -66
  2. package/lib/_chunks/Input-235cb658.js.map +1 -0
  3. package/lib/_chunks/{Input-4ec3c050.js → Input-b9334416.js} +78 -66
  4. package/lib/_chunks/Input-b9334416.js.map +1 -0
  5. package/lib/_chunks/{Preview-1664b7d5.js → Preview-85174edf.js} +2 -2
  6. package/lib/_chunks/{Preview-1664b7d5.js.map → Preview-85174edf.js.map} +1 -1
  7. package/lib/_chunks/{Preview-43ce9c72.js → Preview-ced24517.js} +2 -2
  8. package/lib/_chunks/{Preview-43ce9c72.js.map → Preview-ced24517.js.map} +1 -1
  9. package/lib/_chunks/{VideoSource.styled-99ffa712.js → VideoSource.styled-11786b3a.js} +3 -3
  10. package/lib/_chunks/VideoSource.styled-11786b3a.js.map +1 -0
  11. package/lib/_chunks/{VideoSource.styled-24577ec8.js → VideoSource.styled-f1b98975.js} +3 -3
  12. package/lib/_chunks/VideoSource.styled-f1b98975.js.map +1 -0
  13. package/lib/_chunks/{index-9933dea2.js → index-5a70abdc.js} +14 -13
  14. package/lib/_chunks/{index-9933dea2.js.map → index-5a70abdc.js.map} +1 -1
  15. package/lib/_chunks/{index-c54f5393.js → index-7260e0df.js} +14 -13
  16. package/lib/_chunks/{index-c54f5393.js.map → index-7260e0df.js.map} +1 -1
  17. package/lib/index.esm.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/package.json +33 -33
  20. package/src/actions/assets.ts +1 -1
  21. package/src/actions/secrets.ts +12 -3
  22. package/src/actions/upload.ts +1 -1
  23. package/src/components/Player.tsx +15 -24
  24. package/src/components/__legacy__Uploader.tsx +1 -1
  25. package/src/hooks/useSaveSecrets.ts +1 -1
  26. package/src/util/generateJwt.ts +1 -1
  27. package/src/util/getAnimatedPosterSrc.ts +1 -1
  28. package/src/util/getPosterSrc.ts +1 -1
  29. package/src/util/getStoryboardSrc.ts +1 -1
  30. package/src/util/getVideoSrc.ts +1 -1
  31. package/src/util/readSecrets.ts +1 -1
  32. package/lib/_chunks/Input-4ec3c050.js.map +0 -1
  33. package/lib/_chunks/Input-aa6d929b.js.map +0 -1
  34. package/lib/_chunks/VideoSource.styled-24577ec8.js.map +0 -1
  35. package/lib/_chunks/VideoSource.styled-99ffa712.js.map +0 -1
@@ -1,22 +1,13 @@
1
1
  'use strict';
2
2
 
3
- const _excluded = ["icon", "id", "accept", "capture", "fontSize", "multiple", "onSelect", "padding", "space", "textAlign", "text", "disabled"],
4
- _excluded2 = ["onSelect"];
5
3
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
6
- 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; }
7
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
8
4
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
9
- 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; }
10
- 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; }
11
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
5
  var jsxRuntime = require('react/jsx-runtime');
15
6
  var React = require('react');
16
- var VideoSource_styled = require('./VideoSource.styled-99ffa712.js');
7
+ var VideoSource_styled = require('./VideoSource.styled-11786b3a.js');
17
8
  var sanity = require('sanity');
18
9
  var useSWR = require('swr');
19
- var index = require('./index-9933dea2.js');
10
+ var index = require('./index-5a70abdc.js');
20
11
  var rxjs = require('rxjs');
21
12
  var operators = require('rxjs/operators');
22
13
  var uuid = require('@sanity/uuid');
@@ -26,7 +17,7 @@ var icons = require('@sanity/icons');
26
17
  var motion = require('motion');
27
18
  var styled = require('styled-components');
28
19
  var useDevicePixelRatio = require('use-device-pixel-ratio');
29
- var playbackCore = require('@mux/playback-core');
20
+ var MuxVideo = require('@mux/mux-video-react');
30
21
  var react = require('media-chrome/dist/react');
31
22
  var reactIs = require('react-is');
32
23
  var suspendReact = require('suspend-react');
@@ -58,6 +49,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
58
49
  var useSWR__default = /*#__PURE__*/_interopDefaultCompat(useSWR);
59
50
  var UpChunk__namespace = /*#__PURE__*/_interopNamespaceCompat(UpChunk);
60
51
  var styled__default = /*#__PURE__*/_interopDefaultCompat(styled);
52
+ var MuxVideo__default = /*#__PURE__*/_interopDefaultCompat(MuxVideo);
61
53
  function useDialogState() {
62
54
  return React.useState(false);
63
55
  }
@@ -124,7 +116,9 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
124
116
  endpoint: uploadUrl,
125
117
  file: source,
126
118
  dynamicChunkSize: true
119
+ // changes the chunk size based on network speeds
127
120
  });
121
+
128
122
  const successHandler = () => {
129
123
  subscriber.next({
130
124
  type: "success",
@@ -327,14 +321,23 @@ function uploadFile(config, client, file) {
327
321
  },
328
322
  body
329
323
  })).pipe(operators.mergeMap(result => {
330
- return createUpChunkObservable(uuid$1, result.upload.url, file).pipe(operators.mergeMap(event => {
324
+ return createUpChunkObservable(uuid$1, result.upload.url, file).pipe(
325
+ // eslint-disable-next-line no-warning-comments
326
+ // @TODO type the observable events
327
+ // eslint-disable-next-line max-nested-callbacks
328
+ operators.mergeMap(event => {
331
329
  if (event.type !== "success") {
332
330
  return rxjs.of(event);
333
331
  }
334
- return rxjs.from(updateAssetDocumentFromUpload(client, uuid$1)).pipe(operators.mergeMap(doc => rxjs.of(_objectSpread(_objectSpread({}, event), {}, {
332
+ return rxjs.from(updateAssetDocumentFromUpload(client, uuid$1)).pipe(
333
+ // eslint-disable-next-line max-nested-callbacks
334
+ operators.mergeMap(doc => rxjs.of({
335
+ ...event,
335
336
  asset: doc
336
- }))));
337
- }), operators.catchError(err => {
337
+ })));
338
+ }),
339
+ // eslint-disable-next-line max-nested-callbacks
340
+ operators.catchError(err => {
338
341
  return cancelUpload(client, uuid$1).pipe(operators.mergeMapTo(rxjs.throwError(err)));
339
342
  }));
340
343
  })));
@@ -775,7 +778,8 @@ const PER_PAGE = 200;
775
778
  function createQuery() {
776
779
  let start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
777
780
  let end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PER_PAGE;
778
- return "*[_type == \"mux.videoAsset\"] | order(_updatedAt desc) [".concat(start, "...").concat(end, "]");
781
+ return (/* groq */"*[_type == \"mux.videoAsset\"] | order(_updatedAt desc) [".concat(start, "...").concat(end, "]")
782
+ );
779
783
  }
780
784
  function SelectAssets(_ref3) {
781
785
  let {
@@ -882,7 +886,8 @@ function EditThumbnailDialog(_ref6) {
882
886
  const client = VideoSource_styled.useClient();
883
887
  const dialogId = "EditThumbnailDialog".concat(React.useId());
884
888
  const nextTime = React.useMemo(() => getCurrentTime(), [getCurrentTime]);
885
- const assetWithNewThumbnail = React.useMemo(() => _objectSpread(_objectSpread({}, asset), {}, {
889
+ const assetWithNewThumbnail = React.useMemo(() => ({
890
+ ...asset,
886
891
  thumbTime: nextTime
887
892
  }), [asset, nextTime]);
888
893
  const [saving, setSaving] = React.useState(false);
@@ -1057,7 +1062,7 @@ const UploadProgress = _ref10 => {
1057
1062
  })
1058
1063
  });
1059
1064
  };
1060
- const MuxVideo = _ref11 => {
1065
+ const MuxVideoOld = _ref11 => {
1061
1066
  let {
1062
1067
  asset,
1063
1068
  buttons,
@@ -1121,20 +1126,6 @@ const MuxVideo = _ref11 => {
1121
1126
  muteRef.current.shadowRoot.appendChild(style.cloneNode(true));
1122
1127
  }
1123
1128
  }, []);
1124
- const [playerInitTime] = React.useState(() => playbackCore.generatePlayerInitTime());
1125
- const playbackEngineRef = React.useRef(void 0);
1126
- React.useEffect(() => {
1127
- if (isLoading || !videoSrc) {
1128
- return;
1129
- }
1130
- const nextPlaybackEngineRef = playbackCore.initialize({
1131
- src: videoSrc,
1132
- playerInitTime,
1133
- playerSoftwareName: "sanity-plugin-mux-input",
1134
- playerSoftwareVersion: "dev-preview"
1135
- }, video.current, playbackEngineRef.current);
1136
- playbackEngineRef.current = nextPlaybackEngineRef;
1137
- }, [videoSrc, isLoading, playerInitTime]);
1138
1129
  React.useEffect(() => {
1139
1130
  var _a2, _b2, _c2;
1140
1131
  if ((asset == null ? void 0 : asset.status) === "errored") {
@@ -1142,6 +1133,14 @@ const MuxVideo = _ref11 => {
1142
1133
  throw new Error((_c2 = (_b2 = (_a2 = asset.data) == null ? void 0 : _a2.errors) == null ? void 0 : _b2.messages) == null ? void 0 : _c2.join(" "));
1143
1134
  }
1144
1135
  }, [(_d = (_c = asset.data) == null ? void 0 : _c.errors) == null ? void 0 : _d.messages, asset == null ? void 0 : asset.status, handleCancelUpload]);
1136
+ const signedToken = React.useMemo(() => {
1137
+ try {
1138
+ const url = new URL(videoSrc);
1139
+ return url.searchParams.get("token");
1140
+ } catch {
1141
+ return false;
1142
+ }
1143
+ }, [videoSrc]);
1145
1144
  if (error) {
1146
1145
  throw error;
1147
1146
  }
@@ -1162,9 +1161,10 @@ const MuxVideo = _ref11 => {
1162
1161
  tone: "transparent",
1163
1162
  scheme: "dark",
1164
1163
  children: [/* @__PURE__ */jsxRuntime.jsxs(react.MediaController, {
1165
- children: [/* @__PURE__ */jsxRuntime.jsx("video", {
1164
+ children: [/* @__PURE__ */jsxRuntime.jsx(MuxVideo__default.default, {
1166
1165
  playsInline: true,
1167
1166
  ref: video,
1167
+ playbackId: "".concat(asset.playbackId).concat(signedToken ? "?token=".concat(signedToken) : ""),
1168
1168
  onError: handleError,
1169
1169
  slot: "media",
1170
1170
  preload: "metadata",
@@ -1244,20 +1244,20 @@ const FileButton = styled__default.default(ui.MenuItem)(_ref12 => {
1244
1244
  });
1245
1245
  const FileInputMenuItem = React__default.default.forwardRef(function FileInputMenuItem2(props, forwardedRef) {
1246
1246
  const {
1247
- icon,
1248
- id: idProp,
1249
- accept,
1250
- capture,
1251
- fontSize,
1252
- multiple,
1253
- onSelect,
1254
- padding = 3,
1255
- space = 3,
1256
- textAlign,
1257
- text,
1258
- disabled
1259
- } = props,
1260
- rest = _objectWithoutProperties(props, _excluded);
1247
+ icon,
1248
+ id: idProp,
1249
+ accept,
1250
+ capture,
1251
+ fontSize,
1252
+ multiple,
1253
+ onSelect,
1254
+ padding = 3,
1255
+ space = 3,
1256
+ textAlign,
1257
+ text,
1258
+ disabled,
1259
+ ...rest
1260
+ } = props;
1261
1261
  const idHook = React.useId();
1262
1262
  const id = idProp || idHook;
1263
1263
  const handleChange = React__default.default.useCallback(event => {
@@ -1282,7 +1282,8 @@ const FileInputMenuItem = React__default.default.forwardRef(function FileInputMe
1282
1282
  children: text
1283
1283
  })]
1284
1284
  });
1285
- return /* @__PURE__ */jsxRuntime.jsxs(FileButton, _objectSpread(_objectSpread({}, rest), {}, {
1285
+ return /* @__PURE__ */jsxRuntime.jsxs(FileButton, {
1286
+ ...rest,
1286
1287
  htmlFor: id,
1287
1288
  padding: 0,
1288
1289
  fontSize: 2,
@@ -1299,7 +1300,7 @@ const FileInputMenuItem = React__default.default.forwardRef(function FileInputMe
1299
1300
  value: "",
1300
1301
  disabled
1301
1302
  })]
1302
- }));
1303
+ });
1303
1304
  });
1304
1305
  const LockCard = styled__default.default(ui.Card)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0.6;\n mix-blend-mode: screen;\n background: transparent;\n"])));
1305
1306
  const LockButton = styled__default.default(ui.Button)(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n background: transparent;\n color: white;\n"])));
@@ -1469,9 +1470,9 @@ const HiddenInput = styled__default.default.input(_templateObject15 || (_templat
1469
1470
  const Label = styled__default.default.label(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n position: relative;\n"])));
1470
1471
  const FileInputButton = _ref14 => {
1471
1472
  let {
1472
- onSelect
1473
- } = _ref14,
1474
- props = _objectWithoutProperties(_ref14, _excluded2);
1473
+ onSelect,
1474
+ ...props
1475
+ } = _ref14;
1475
1476
  const inputId = "FileSelect".concat(React.useId());
1476
1477
  const inputRef = React.useRef(null);
1477
1478
  const handleSelect = React.useCallback(event => {
@@ -1493,14 +1494,15 @@ const FileInputButton = _ref14 => {
1493
1494
  id: inputId,
1494
1495
  onChange: handleSelect,
1495
1496
  value: ""
1496
- }), /* @__PURE__ */jsxRuntime.jsx(ui.Button, _objectSpread({
1497
+ }), /* @__PURE__ */jsxRuntime.jsx(ui.Button, {
1497
1498
  onClick: handleButtonClick,
1498
1499
  mode: "default",
1499
1500
  tone: "primary",
1500
1501
  style: {
1501
1502
  width: "100%"
1502
- }
1503
- }, props))]
1503
+ },
1504
+ ...props
1505
+ })]
1504
1506
  });
1505
1507
  };
1506
1508
  const UploadCard = styled__default.default(ui.Card)(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n && {\n border-style: dashed;\n }\n"])));
@@ -1601,6 +1603,8 @@ class MuxVideoInputUploader extends React.Component {
1601
1603
  };
1602
1604
  this.dragEnteredEls = [];
1603
1605
  this.ctrlDown = false;
1606
+ // eslint-disable-next-line no-warning-comments
1607
+ // @TODO add proper typings for the return values of uploadFile and uploadUrl
1604
1608
  this.upload = null;
1605
1609
  this.container = React__default.default.createRef();
1606
1610
  this.handleProgress = evt => {
@@ -1640,6 +1644,8 @@ class MuxVideoInputUploader extends React.Component {
1640
1644
  }
1641
1645
  });
1642
1646
  };
1647
+ // eslint-disable-next-line no-warning-comments
1648
+ // @TODO add proper typings for the Observable events
1643
1649
  this.handleUploadEvent = event => {
1644
1650
  switch (event.type) {
1645
1651
  case "success":
@@ -1786,7 +1792,7 @@ class MuxVideoInputUploader extends React.Component {
1786
1792
  onDragEnter: this.handleDragEnter,
1787
1793
  onPaste: this.handlePaste,
1788
1794
  ref: this.container,
1789
- children: this.props.asset ? /* @__PURE__ */jsxRuntime.jsx(MuxVideo, {
1795
+ children: this.props.asset ? /* @__PURE__ */jsxRuntime.jsx(MuxVideoOld, {
1790
1796
  readOnly: this.props.readOnly,
1791
1797
  asset: this.props.asset,
1792
1798
  onChange: this.props.onChange,
@@ -1870,6 +1876,8 @@ function init(_ref16) {
1870
1876
  return {
1871
1877
  submitting: false,
1872
1878
  error: null,
1879
+ // Form inputs don't set the state back to null when clearing a field, but uses empty strings
1880
+ // This ensures the `dirty` check works correctly
1873
1881
  token: token != null ? token : "",
1874
1882
  secretKey: secretKey != null ? secretKey : "",
1875
1883
  enableSignedUrls: enableSignedUrls != null ? enableSignedUrls : false
@@ -1878,21 +1886,24 @@ function init(_ref16) {
1878
1886
  function reducer(state, action) {
1879
1887
  switch (action == null ? void 0 : action.type) {
1880
1888
  case "submit":
1881
- return _objectSpread(_objectSpread({}, state), {}, {
1889
+ return {
1890
+ ...state,
1882
1891
  submitting: true,
1883
1892
  error: null
1884
- });
1893
+ };
1885
1894
  case "error":
1886
- return _objectSpread(_objectSpread({}, state), {}, {
1895
+ return {
1896
+ ...state,
1887
1897
  submitting: false,
1888
1898
  error: action.payload
1889
- });
1899
+ };
1890
1900
  case "reset":
1891
1901
  return init(action.payload);
1892
1902
  case "change":
1893
- return _objectSpread(_objectSpread({}, state), {}, {
1903
+ return {
1904
+ ...state,
1894
1905
  [action.payload.name]: action.payload.value
1895
- });
1906
+ };
1896
1907
  default:
1897
1908
  throw new Error("Unknown action type: ".concat(action == null ? void 0 : action.type));
1898
1909
  }
@@ -2645,7 +2656,8 @@ const Input = props => {
2645
2656
  children: isLoading ? /* @__PURE__ */jsxRuntime.jsx(index.InputFallback, {}) : /* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment, {
2646
2657
  children: [secretDocumentValues.value.needsSetup && !assetDocumentValues.value ? /* @__PURE__ */jsxRuntime.jsx(Onboard, {
2647
2658
  setDialogState
2648
- }) : /* @__PURE__ */jsxRuntime.jsx(MuxVideoInputUploader, _objectSpread(_objectSpread({}, props), {}, {
2659
+ }) : /* @__PURE__ */jsxRuntime.jsx(MuxVideoInputUploader, {
2660
+ ...props,
2649
2661
  config: props.config,
2650
2662
  onChange: props.onChange,
2651
2663
  client,
@@ -2654,7 +2666,7 @@ const Input = props => {
2654
2666
  dialogState,
2655
2667
  setDialogState,
2656
2668
  needsSetup: secretDocumentValues.value.needsSetup
2657
- })), dialogState === "secrets" && /* @__PURE__ */jsxRuntime.jsx(ConfigureApi$1, {
2669
+ }), dialogState === "secrets" && /* @__PURE__ */jsxRuntime.jsx(ConfigureApi$1, {
2658
2670
  setDialogState,
2659
2671
  secrets: secretDocumentValues.value.secrets
2660
2672
  })]
@@ -2663,4 +2675,4 @@ const Input = props => {
2663
2675
  };
2664
2676
  var Input$1 = React.memo(Input);
2665
2677
  exports.default = Input$1;
2666
- //# sourceMappingURL=Input-4ec3c050.js.map
2678
+ //# sourceMappingURL=Input-b9334416.js.map