@vidispine/vdt-mui 22.3.1-pre.1 → 22.4.0-pre.2

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/dist/index.es.js CHANGED
@@ -3,7 +3,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
6
- import { Fragment, forwardRef, createElement, useMemo, createContext, useState, useCallback, useContext, useRef } from 'react';
6
+ import { Fragment, forwardRef, createElement, useMemo, useState, useCallback, useEffect, useContext, createContext, useRef } from 'react';
7
7
  import clsx from 'clsx';
8
8
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
9
9
  import PropTypes from 'prop-types';
@@ -12,6 +12,7 @@ import VidispinePropTypes from '@vidispine/proptypes';
12
12
  import { parseMetadataType } from '@vidispine/vdt-js';
13
13
  import { Folder, NoteAdd, Audiotrack, Image, Movie, InsertDriveFile, LibraryBooks, LibraryMusic, VideoLibrary, PhotoLibrary, Delete } from '@mui/icons-material';
14
14
  import CssBaseline from '@mui/material/CssBaseline';
15
+ import useMediaQuery from '@mui/material/useMediaQuery';
15
16
 
16
17
  var uuidv4 = function uuidv4() {
17
18
  return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
@@ -1472,7 +1473,7 @@ var Component$c = withStyles(styles$c, {
1472
1473
  })(ComponentWithOverrides$c);
1473
1474
  Component$c.displayName = 'EntityList';
1474
1475
 
1475
- var _excluded$3 = ["themes", "defaultPaletteKey", "localStoragePaletteKey", "MuiThemeProviderProps", "CssBaselineProps", "children"];
1476
+ var _excluded$3 = ["themes", "defaultPaletteKey", "lightPaletteKey", "darkPaletteKey", "systemPaletteKey", "localStoragePaletteKey", "MuiThemeProviderProps", "CssBaselineProps", "children"];
1476
1477
 
1477
1478
  function ownKeys$f(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; }
1478
1479
 
@@ -1487,30 +1488,24 @@ var dark = createTheme({
1487
1488
  type: 'dark'
1488
1489
  }
1489
1490
  });
1490
- var ThemeContext = /*#__PURE__*/createContext({
1491
- theme: undefined,
1492
- palette: undefined,
1493
- togglePalette: function togglePalette() {
1494
- return null;
1495
- }
1496
- });
1491
+ var ThemeContext = /*#__PURE__*/createContext();
1492
+
1497
1493
  function ThemeProvider(_ref) {
1498
- var _ref$themes = _ref.themes,
1499
- themes = _ref$themes === void 0 ? {
1500
- light: light,
1501
- dark: dark
1502
- } : _ref$themes,
1503
- _ref$defaultPaletteKe = _ref.defaultPaletteKey,
1504
- defaultPaletteKey = _ref$defaultPaletteKe === void 0 ? 'light' : _ref$defaultPaletteKe,
1505
- _ref$localStoragePale = _ref.localStoragePaletteKey,
1506
- localStoragePaletteKey = _ref$localStoragePale === void 0 ? 'DEFAULT_PALETTE' : _ref$localStoragePale,
1507
- _ref$MuiThemeProvider = _ref.MuiThemeProviderProps,
1508
- MuiThemeProviderProps = _ref$MuiThemeProvider === void 0 ? {} : _ref$MuiThemeProvider,
1509
- _ref$CssBaselineProps = _ref.CssBaselineProps,
1510
- CssBaselineProps = _ref$CssBaselineProps === void 0 ? {} : _ref$CssBaselineProps,
1494
+ var themes = _ref.themes,
1495
+ defaultPaletteKey = _ref.defaultPaletteKey,
1496
+ lightPaletteKey = _ref.lightPaletteKey,
1497
+ darkPaletteKey = _ref.darkPaletteKey,
1498
+ systemPaletteKey = _ref.systemPaletteKey,
1499
+ localStoragePaletteKey = _ref.localStoragePaletteKey,
1500
+ MuiThemeProviderProps = _ref.MuiThemeProviderProps,
1501
+ CssBaselineProps = _ref.CssBaselineProps,
1511
1502
  children = _ref.children,
1512
1503
  props = _objectWithoutProperties(_ref, _excluded$3);
1513
1504
 
1505
+ var prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
1506
+ var preferredMode = useMemo(function () {
1507
+ return prefersDarkMode ? darkPaletteKey : lightPaletteKey;
1508
+ }, [darkPaletteKey, lightPaletteKey, prefersDarkMode]);
1514
1509
  var initialPaletteKey = localStorage.getItem(localStoragePaletteKey) || defaultPaletteKey;
1515
1510
 
1516
1511
  var _useState = useState(initialPaletteKey),
@@ -1526,15 +1521,20 @@ function ThemeProvider(_ref) {
1526
1521
  setTheme = _useState4[1];
1527
1522
 
1528
1523
  var updatePalette = useCallback(function (newPaletteKey) {
1529
- if (!Object.keys(themes).includes(newPaletteKey)) {
1530
- throw new Error("Invalid theme (".concat(newPaletteKey, ") selected"));
1524
+ var newPalette = newPaletteKey === systemPaletteKey ? preferredMode : newPaletteKey;
1525
+
1526
+ if (!Object.keys(themes).includes(newPalette)) {
1527
+ throw new Error("Invalid theme (".concat(newPalette, ") selected"));
1531
1528
  }
1532
1529
 
1533
- var newTheme = themes[newPaletteKey];
1530
+ var newTheme = themes[newPalette];
1534
1531
  setTheme(newTheme);
1535
1532
  setPalette(newPaletteKey);
1536
1533
  localStorage.setItem(localStoragePaletteKey, newPaletteKey);
1537
- }, [localStoragePaletteKey, themes]);
1534
+ }, [localStoragePaletteKey, preferredMode, systemPaletteKey, themes]);
1535
+ useEffect(function () {
1536
+ if (palette === systemPaletteKey) updatePalette(systemPaletteKey); // eslint-disable-next-line react-hooks/exhaustive-deps
1537
+ }, [preferredMode]);
1538
1538
  var togglePalette = useCallback(function () {
1539
1539
  var paletteKeys = Object.keys(themes);
1540
1540
  var newPaletteKey = paletteKeys[0];
@@ -1568,7 +1568,8 @@ function ThemeProvider(_ref) {
1568
1568
  }))
1569
1569
  });
1570
1570
  }
1571
- function useThemeContext() {
1571
+
1572
+ var useThemeContext = function useThemeContext() {
1572
1573
  var context = useContext(ThemeContext);
1573
1574
 
1574
1575
  if (context === undefined) {
@@ -1576,7 +1577,33 @@ function useThemeContext() {
1576
1577
  }
1577
1578
 
1578
1579
  return context;
1579
- }
1580
+ };
1581
+
1582
+ ThemeProvider.propTypes = {
1583
+ themes: PropTypes.objectOf(PropTypes.any),
1584
+ defaultPaletteKey: PropTypes.string,
1585
+ lightPaletteKey: PropTypes.string,
1586
+ darkPaletteKey: PropTypes.string,
1587
+ systemPaletteKey: PropTypes.string,
1588
+ localStoragePaletteKey: PropTypes.string,
1589
+ MuiThemeProviderProps: PropTypes.objectOf(PropTypes.any),
1590
+ CssBaselineProps: PropTypes.objectOf(PropTypes.any),
1591
+ children: PropTypes.objectOf(PropTypes.any)
1592
+ };
1593
+ ThemeProvider.defaultProps = {
1594
+ themes: {
1595
+ light: light,
1596
+ dark: dark
1597
+ },
1598
+ defaultPaletteKey: 'system',
1599
+ lightPaletteKey: 'light',
1600
+ darkPaletteKey: 'dark',
1601
+ systemPaletteKey: 'system',
1602
+ localStoragePaletteKey: 'DEFAULT_PALETTE',
1603
+ MuiThemeProviderProps: {},
1604
+ CssBaselineProps: {},
1605
+ children: null
1606
+ };
1580
1607
 
1581
1608
  function ownKeys$e(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; }
1582
1609
 
@@ -5246,4 +5273,4 @@ var Component = withStyles(styles, {
5246
5273
  })(ComponentWithOverrides);
5247
5274
  Component.displayName = 'NumberInput';
5248
5275
 
5249
- export { Component$9 as CheckboxGroupInput, Component$3 as CheckboxInput, Component$e as CollectionList, Component$f as CollectionListItem, Component$2 as DateTimeInput, Component$g as EntityAvatar, Component$h as EntityIcon, Component$c as EntityList, Component$b as ImageCollage, Component$a as ItemList, Component$d as ItemListItem, Component$i as MediaIcon, Component as NumberInput, Component$5 as RadioGroupInput, Component$8 as SelectInput, Component$1 as SliderInput, Component$4 as SwitchInput, Component$6 as TagInput, Component$7 as TextInput, ThemeContext, ThemeProvider, useThemeContext };
5276
+ export { Component$9 as CheckboxGroupInput, Component$3 as CheckboxInput, Component$e as CollectionList, Component$f as CollectionListItem, Component$2 as DateTimeInput, Component$g as EntityAvatar, Component$h as EntityIcon, Component$c as EntityList, Component$b as ImageCollage, Component$a as ItemList, Component$d as ItemListItem, Component$i as MediaIcon, Component as NumberInput, Component$5 as RadioGroupInput, Component$8 as SelectInput, Component$1 as SliderInput, Component$4 as SwitchInput, Component$6 as TagInput, Component$7 as TextInput, ThemeProvider, useThemeContext };
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ var VidispinePropTypes = require('@vidispine/proptypes');
16
16
  var vdtJs = require('@vidispine/vdt-js');
17
17
  var iconsMaterial = require('@mui/icons-material');
18
18
  var CssBaseline = require('@mui/material/CssBaseline');
19
+ var useMediaQuery = require('@mui/material/useMediaQuery');
19
20
 
20
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
22
 
@@ -27,6 +28,7 @@ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
27
28
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
28
29
  var VidispinePropTypes__default = /*#__PURE__*/_interopDefaultLegacy(VidispinePropTypes);
29
30
  var CssBaseline__default = /*#__PURE__*/_interopDefaultLegacy(CssBaseline);
31
+ var useMediaQuery__default = /*#__PURE__*/_interopDefaultLegacy(useMediaQuery);
30
32
 
31
33
  var uuidv4 = function uuidv4() {
32
34
  return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
@@ -1487,7 +1489,7 @@ var Component$c = styles$j.withStyles(styles$c, {
1487
1489
  })(ComponentWithOverrides$c);
1488
1490
  Component$c.displayName = 'EntityList';
1489
1491
 
1490
- var _excluded$3 = ["themes", "defaultPaletteKey", "localStoragePaletteKey", "MuiThemeProviderProps", "CssBaselineProps", "children"];
1492
+ var _excluded$3 = ["themes", "defaultPaletteKey", "lightPaletteKey", "darkPaletteKey", "systemPaletteKey", "localStoragePaletteKey", "MuiThemeProviderProps", "CssBaselineProps", "children"];
1491
1493
 
1492
1494
  function ownKeys$f(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; }
1493
1495
 
@@ -1502,30 +1504,24 @@ var dark = material.createTheme({
1502
1504
  type: 'dark'
1503
1505
  }
1504
1506
  });
1505
- var ThemeContext = /*#__PURE__*/react.createContext({
1506
- theme: undefined,
1507
- palette: undefined,
1508
- togglePalette: function togglePalette() {
1509
- return null;
1510
- }
1511
- });
1507
+ var ThemeContext = /*#__PURE__*/react.createContext();
1508
+
1512
1509
  function ThemeProvider(_ref) {
1513
- var _ref$themes = _ref.themes,
1514
- themes = _ref$themes === void 0 ? {
1515
- light: light,
1516
- dark: dark
1517
- } : _ref$themes,
1518
- _ref$defaultPaletteKe = _ref.defaultPaletteKey,
1519
- defaultPaletteKey = _ref$defaultPaletteKe === void 0 ? 'light' : _ref$defaultPaletteKe,
1520
- _ref$localStoragePale = _ref.localStoragePaletteKey,
1521
- localStoragePaletteKey = _ref$localStoragePale === void 0 ? 'DEFAULT_PALETTE' : _ref$localStoragePale,
1522
- _ref$MuiThemeProvider = _ref.MuiThemeProviderProps,
1523
- MuiThemeProviderProps = _ref$MuiThemeProvider === void 0 ? {} : _ref$MuiThemeProvider,
1524
- _ref$CssBaselineProps = _ref.CssBaselineProps,
1525
- CssBaselineProps = _ref$CssBaselineProps === void 0 ? {} : _ref$CssBaselineProps,
1510
+ var themes = _ref.themes,
1511
+ defaultPaletteKey = _ref.defaultPaletteKey,
1512
+ lightPaletteKey = _ref.lightPaletteKey,
1513
+ darkPaletteKey = _ref.darkPaletteKey,
1514
+ systemPaletteKey = _ref.systemPaletteKey,
1515
+ localStoragePaletteKey = _ref.localStoragePaletteKey,
1516
+ MuiThemeProviderProps = _ref.MuiThemeProviderProps,
1517
+ CssBaselineProps = _ref.CssBaselineProps,
1526
1518
  children = _ref.children,
1527
1519
  props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
1528
1520
 
1521
+ var prefersDarkMode = useMediaQuery__default["default"]('(prefers-color-scheme: dark)');
1522
+ var preferredMode = react.useMemo(function () {
1523
+ return prefersDarkMode ? darkPaletteKey : lightPaletteKey;
1524
+ }, [darkPaletteKey, lightPaletteKey, prefersDarkMode]);
1529
1525
  var initialPaletteKey = localStorage.getItem(localStoragePaletteKey) || defaultPaletteKey;
1530
1526
 
1531
1527
  var _useState = react.useState(initialPaletteKey),
@@ -1541,15 +1537,20 @@ function ThemeProvider(_ref) {
1541
1537
  setTheme = _useState4[1];
1542
1538
 
1543
1539
  var updatePalette = react.useCallback(function (newPaletteKey) {
1544
- if (!Object.keys(themes).includes(newPaletteKey)) {
1545
- throw new Error("Invalid theme (".concat(newPaletteKey, ") selected"));
1540
+ var newPalette = newPaletteKey === systemPaletteKey ? preferredMode : newPaletteKey;
1541
+
1542
+ if (!Object.keys(themes).includes(newPalette)) {
1543
+ throw new Error("Invalid theme (".concat(newPalette, ") selected"));
1546
1544
  }
1547
1545
 
1548
- var newTheme = themes[newPaletteKey];
1546
+ var newTheme = themes[newPalette];
1549
1547
  setTheme(newTheme);
1550
1548
  setPalette(newPaletteKey);
1551
1549
  localStorage.setItem(localStoragePaletteKey, newPaletteKey);
1552
- }, [localStoragePaletteKey, themes]);
1550
+ }, [localStoragePaletteKey, preferredMode, systemPaletteKey, themes]);
1551
+ react.useEffect(function () {
1552
+ if (palette === systemPaletteKey) updatePalette(systemPaletteKey); // eslint-disable-next-line react-hooks/exhaustive-deps
1553
+ }, [preferredMode]);
1553
1554
  var togglePalette = react.useCallback(function () {
1554
1555
  var paletteKeys = Object.keys(themes);
1555
1556
  var newPaletteKey = paletteKeys[0];
@@ -1583,7 +1584,8 @@ function ThemeProvider(_ref) {
1583
1584
  }))
1584
1585
  });
1585
1586
  }
1586
- function useThemeContext() {
1587
+
1588
+ var useThemeContext = function useThemeContext() {
1587
1589
  var context = react.useContext(ThemeContext);
1588
1590
 
1589
1591
  if (context === undefined) {
@@ -1591,7 +1593,33 @@ function useThemeContext() {
1591
1593
  }
1592
1594
 
1593
1595
  return context;
1594
- }
1596
+ };
1597
+
1598
+ ThemeProvider.propTypes = {
1599
+ themes: PropTypes__default["default"].objectOf(PropTypes__default["default"].any),
1600
+ defaultPaletteKey: PropTypes__default["default"].string,
1601
+ lightPaletteKey: PropTypes__default["default"].string,
1602
+ darkPaletteKey: PropTypes__default["default"].string,
1603
+ systemPaletteKey: PropTypes__default["default"].string,
1604
+ localStoragePaletteKey: PropTypes__default["default"].string,
1605
+ MuiThemeProviderProps: PropTypes__default["default"].objectOf(PropTypes__default["default"].any),
1606
+ CssBaselineProps: PropTypes__default["default"].objectOf(PropTypes__default["default"].any),
1607
+ children: PropTypes__default["default"].objectOf(PropTypes__default["default"].any)
1608
+ };
1609
+ ThemeProvider.defaultProps = {
1610
+ themes: {
1611
+ light: light,
1612
+ dark: dark
1613
+ },
1614
+ defaultPaletteKey: 'system',
1615
+ lightPaletteKey: 'light',
1616
+ darkPaletteKey: 'dark',
1617
+ systemPaletteKey: 'system',
1618
+ localStoragePaletteKey: 'DEFAULT_PALETTE',
1619
+ MuiThemeProviderProps: {},
1620
+ CssBaselineProps: {},
1621
+ children: null
1622
+ };
1595
1623
 
1596
1624
  function ownKeys$e(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; }
1597
1625
 
@@ -5280,6 +5308,5 @@ exports.SliderInput = Component$1;
5280
5308
  exports.SwitchInput = Component$4;
5281
5309
  exports.TagInput = Component$6;
5282
5310
  exports.TextInput = Component$7;
5283
- exports.ThemeContext = ThemeContext;
5284
5311
  exports.ThemeProvider = ThemeProvider;
5285
5312
  exports.useThemeContext = useThemeContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vidispine/vdt-mui",
3
- "version": "22.3.1-pre.1",
3
+ "version": "22.4.0-pre.2",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,11 +29,11 @@
29
29
  "@mui/lab": "^5.0.0-alpha.95",
30
30
  "@mui/material": "^5.10.1",
31
31
  "@mui/styles": "^5.9.3",
32
- "@vidispine/proptypes": "22.3.1-pre.1",
33
- "@vidispine/vdt-api": "22.3.1-pre.1",
34
- "@vidispine/vdt-js": "22.3.1-pre.1",
35
- "@vidispine/vdt-react": "22.3.1-pre.1",
36
- "@vidispine/vdt-videojs-react": "22.3.1-pre.1",
32
+ "@vidispine/proptypes": "22.4.0-pre.2",
33
+ "@vidispine/vdt-api": "22.4.0-pre.2",
34
+ "@vidispine/vdt-js": "22.4.0-pre.2",
35
+ "@vidispine/vdt-react": "22.4.0-pre.2",
36
+ "@vidispine/vdt-videojs-react": "22.4.0-pre.2",
37
37
  "clsx": "^1.2.1",
38
38
  "prop-types": "^15.8.1"
39
39
  },
@@ -52,11 +52,11 @@
52
52
  "@svgr/rollup": "6.3.1",
53
53
  "@testing-library/jest-dom": "5.16.5",
54
54
  "@testing-library/react": "12.1.5",
55
- "@vidispine/eslint-config-mdx": "22.3.1-pre.1",
56
- "@vidispine/eslint-config-react": "22.3.1-pre.1",
57
- "@vidispine/eslint-config-storybook": "22.3.1-pre.1",
58
- "@vidispine/prettier-config": "22.3.1-pre.1",
59
- "@vidispine/vdt-storybook": "22.3.1-pre.1",
55
+ "@vidispine/eslint-config-mdx": "22.4.0-pre.2",
56
+ "@vidispine/eslint-config-react": "22.4.0-pre.2",
57
+ "@vidispine/eslint-config-storybook": "22.4.0-pre.2",
58
+ "@vidispine/prettier-config": "22.4.0-pre.2",
59
+ "@vidispine/vdt-storybook": "22.4.0-pre.2",
60
60
  "eslint": "8.23.1",
61
61
  "hygen": "6.2.11",
62
62
  "prettier": "2.7.1",