@atlaskit/app-provider 2.3.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/app-provider
2
2
 
3
+ ## 3.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`33a9e5805e0c7`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/33a9e5805e0c7) -
8
+ Adds fallback logic for requesting the colorMode from the `useColorMode()` hook. Also fixes
9
+ `useTheme()` so that `colorMode` isn't returned when its fallback logic is used
10
+
11
+ ## 3.0.0
12
+
13
+ ### Major Changes
14
+
15
+ - [`97bac34e4e575`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/97bac34e4e575) -
16
+ [ux] Refreshed typography theme enabled by default.
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
3
22
  ## 2.3.0
4
23
 
5
24
  ### Minor Changes
@@ -17,7 +17,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
17
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
  var _bindEventListener = require("bind-event-listener");
20
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
20
  var _tokens = require("@atlaskit/tokens");
22
21
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
23
22
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -27,7 +26,7 @@ var defaultThemeSettings = function defaultThemeSettings() {
27
26
  dark: 'dark',
28
27
  light: 'light',
29
28
  spacing: 'spacing',
30
- typography: (0, _platformFeatureFlags.fg)('platform-default-typography-refreshed') ? 'typography' : undefined
29
+ typography: 'typography'
31
30
  };
32
31
  };
33
32
  var ColorModeContext = /*#__PURE__*/(0, _react.createContext)(undefined);
@@ -54,10 +53,26 @@ function UNSAFE_useColorModeForMigration() {
54
53
  */
55
54
  function useColorMode() {
56
55
  var value = (0, _react.useContext)(ColorModeContext);
57
- if (!value) {
58
- throw new Error('useColorMode must be used within AppProvider.');
59
- }
60
- return value;
56
+ var _getGlobalTheme = (0, _tokens.getGlobalTheme)(),
57
+ colorMode = _getGlobalTheme.colorMode;
58
+ var _useState = (0, _react.useState)(colorMode || 'light'),
59
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
+ resolvedColorMode = _useState2[0],
61
+ setResolvedColorMode = _useState2[1];
62
+ (0, _react.useEffect)(function () {
63
+ // We are using theme from context so no need to reference the DOM
64
+ if (value) {
65
+ return;
66
+ }
67
+ var observer = new _tokens.ThemeMutationObserver(function (theme) {
68
+ setResolvedColorMode(theme.colorMode || 'light');
69
+ });
70
+ observer.observe();
71
+ return function () {
72
+ return observer.disconnect();
73
+ };
74
+ }, [value]);
75
+ return value ? value : resolvedColorMode;
61
76
  }
62
77
 
63
78
  /**
@@ -80,10 +95,10 @@ function useSetColorMode() {
80
95
  */
81
96
  function useTheme() {
82
97
  var theme = (0, _react.useContext)(ThemeContext);
83
- var _useState = (0, _react.useState)(theme || (0, _tokens.getGlobalTheme)()),
84
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
- resolvedTheme = _useState2[0],
86
- setResolvedTheme = _useState2[1];
98
+ var _useState3 = (0, _react.useState)(theme || (0, _tokens.getGlobalTheme)()),
99
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
100
+ resolvedTheme = _useState4[0],
101
+ setResolvedTheme = _useState4[1];
87
102
  (0, _react.useEffect)(function () {
88
103
  // We are using theme from context so no need to reference the DOM
89
104
  if (theme) {
@@ -95,7 +110,7 @@ function useTheme() {
95
110
  return observer.disconnect();
96
111
  };
97
112
  }, [theme]);
98
- return resolvedTheme;
113
+ return theme ? theme : resolvedTheme;
99
114
  }
100
115
 
101
116
  /**
@@ -132,20 +147,20 @@ function ThemeProvider(_ref) {
132
147
  var children = _ref.children,
133
148
  defaultColorMode = _ref.defaultColorMode,
134
149
  defaultTheme = _ref.defaultTheme;
135
- var _useState3 = (0, _react.useState)(defaultColorMode),
136
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
137
- chosenColorMode = _useState4[0],
138
- setChosenColorMode = _useState4[1];
139
- var _useState5 = (0, _react.useState)(getReconciledColorMode(defaultColorMode)),
150
+ var _useState5 = (0, _react.useState)(defaultColorMode),
140
151
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
141
- reconciledColorMode = _useState6[0],
142
- setReconciledColorMode = _useState6[1];
143
- var _useState7 = (0, _react.useState)(function () {
152
+ chosenColorMode = _useState6[0],
153
+ setChosenColorMode = _useState6[1];
154
+ var _useState7 = (0, _react.useState)(getReconciledColorMode(defaultColorMode)),
155
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
156
+ reconciledColorMode = _useState8[0],
157
+ setReconciledColorMode = _useState8[1];
158
+ var _useState9 = (0, _react.useState)(function () {
144
159
  return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
145
160
  }),
146
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
147
- theme = _useState8[0],
148
- setTheme = _useState8[1];
161
+ _useState0 = (0, _slicedToArray2.default)(_useState9, 2),
162
+ theme = _useState0[0],
163
+ setTheme = _useState0[1];
149
164
  var setColorMode = (0, _react.useCallback)(function (colorMode) {
150
165
  setChosenColorMode(colorMode);
151
166
  setReconciledColorMode(getReconciledColorMode(colorMode));
@@ -1,12 +1,11 @@
1
1
  import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
2
2
  import { bind } from 'bind-event-listener';
3
- import { fg } from '@atlaskit/platform-feature-flags';
4
3
  import { getGlobalTheme, setGlobalTheme, ThemeMutationObserver } from '@atlaskit/tokens';
5
4
  const defaultThemeSettings = () => ({
6
5
  dark: 'dark',
7
6
  light: 'light',
8
7
  spacing: 'spacing',
9
- typography: fg('platform-default-typography-refreshed') ? 'typography' : undefined
8
+ typography: 'typography'
10
9
  });
11
10
  const ColorModeContext = /*#__PURE__*/createContext(undefined);
12
11
  const SetColorModeContext = /*#__PURE__*/createContext(undefined);
@@ -32,10 +31,22 @@ export function UNSAFE_useColorModeForMigration() {
32
31
  */
33
32
  export function useColorMode() {
34
33
  const value = useContext(ColorModeContext);
35
- if (!value) {
36
- throw new Error('useColorMode must be used within AppProvider.');
37
- }
38
- return value;
34
+ const {
35
+ colorMode
36
+ } = getGlobalTheme();
37
+ const [resolvedColorMode, setResolvedColorMode] = useState(colorMode || 'light');
38
+ useEffect(() => {
39
+ // We are using theme from context so no need to reference the DOM
40
+ if (value) {
41
+ return;
42
+ }
43
+ const observer = new ThemeMutationObserver(theme => {
44
+ setResolvedColorMode(theme.colorMode || 'light');
45
+ });
46
+ observer.observe();
47
+ return () => observer.disconnect();
48
+ }, [value]);
49
+ return value ? value : resolvedColorMode;
39
50
  }
40
51
 
41
52
  /**
@@ -68,7 +79,7 @@ export function useTheme() {
68
79
  observer.observe();
69
80
  return () => observer.disconnect();
70
81
  }, [theme]);
71
- return resolvedTheme;
82
+ return theme ? theme : resolvedTheme;
72
83
  }
73
84
 
74
85
  /**
@@ -6,14 +6,13 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
7
  import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
8
8
  import { bind } from 'bind-event-listener';
9
- import { fg } from '@atlaskit/platform-feature-flags';
10
9
  import { getGlobalTheme, setGlobalTheme, ThemeMutationObserver } from '@atlaskit/tokens';
11
10
  var defaultThemeSettings = function defaultThemeSettings() {
12
11
  return {
13
12
  dark: 'dark',
14
13
  light: 'light',
15
14
  spacing: 'spacing',
16
- typography: fg('platform-default-typography-refreshed') ? 'typography' : undefined
15
+ typography: 'typography'
17
16
  };
18
17
  };
19
18
  var ColorModeContext = /*#__PURE__*/createContext(undefined);
@@ -40,10 +39,26 @@ export function UNSAFE_useColorModeForMigration() {
40
39
  */
41
40
  export function useColorMode() {
42
41
  var value = useContext(ColorModeContext);
43
- if (!value) {
44
- throw new Error('useColorMode must be used within AppProvider.');
45
- }
46
- return value;
42
+ var _getGlobalTheme = getGlobalTheme(),
43
+ colorMode = _getGlobalTheme.colorMode;
44
+ var _useState = useState(colorMode || 'light'),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ resolvedColorMode = _useState2[0],
47
+ setResolvedColorMode = _useState2[1];
48
+ useEffect(function () {
49
+ // We are using theme from context so no need to reference the DOM
50
+ if (value) {
51
+ return;
52
+ }
53
+ var observer = new ThemeMutationObserver(function (theme) {
54
+ setResolvedColorMode(theme.colorMode || 'light');
55
+ });
56
+ observer.observe();
57
+ return function () {
58
+ return observer.disconnect();
59
+ };
60
+ }, [value]);
61
+ return value ? value : resolvedColorMode;
47
62
  }
48
63
 
49
64
  /**
@@ -66,10 +81,10 @@ export function useSetColorMode() {
66
81
  */
67
82
  export function useTheme() {
68
83
  var theme = useContext(ThemeContext);
69
- var _useState = useState(theme || getGlobalTheme()),
70
- _useState2 = _slicedToArray(_useState, 2),
71
- resolvedTheme = _useState2[0],
72
- setResolvedTheme = _useState2[1];
84
+ var _useState3 = useState(theme || getGlobalTheme()),
85
+ _useState4 = _slicedToArray(_useState3, 2),
86
+ resolvedTheme = _useState4[0],
87
+ setResolvedTheme = _useState4[1];
73
88
  useEffect(function () {
74
89
  // We are using theme from context so no need to reference the DOM
75
90
  if (theme) {
@@ -81,7 +96,7 @@ export function useTheme() {
81
96
  return observer.disconnect();
82
97
  };
83
98
  }, [theme]);
84
- return resolvedTheme;
99
+ return theme ? theme : resolvedTheme;
85
100
  }
86
101
 
87
102
  /**
@@ -118,20 +133,20 @@ function ThemeProvider(_ref) {
118
133
  var children = _ref.children,
119
134
  defaultColorMode = _ref.defaultColorMode,
120
135
  defaultTheme = _ref.defaultTheme;
121
- var _useState3 = useState(defaultColorMode),
122
- _useState4 = _slicedToArray(_useState3, 2),
123
- chosenColorMode = _useState4[0],
124
- setChosenColorMode = _useState4[1];
125
- var _useState5 = useState(getReconciledColorMode(defaultColorMode)),
136
+ var _useState5 = useState(defaultColorMode),
126
137
  _useState6 = _slicedToArray(_useState5, 2),
127
- reconciledColorMode = _useState6[0],
128
- setReconciledColorMode = _useState6[1];
129
- var _useState7 = useState(function () {
138
+ chosenColorMode = _useState6[0],
139
+ setChosenColorMode = _useState6[1];
140
+ var _useState7 = useState(getReconciledColorMode(defaultColorMode)),
141
+ _useState8 = _slicedToArray(_useState7, 2),
142
+ reconciledColorMode = _useState8[0],
143
+ setReconciledColorMode = _useState8[1];
144
+ var _useState9 = useState(function () {
130
145
  return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
131
146
  }),
132
- _useState8 = _slicedToArray(_useState7, 2),
133
- theme = _useState8[0],
134
- setTheme = _useState8[1];
147
+ _useState0 = _slicedToArray(_useState9, 2),
148
+ theme = _useState0[0],
149
+ setTheme = _useState0[1];
135
150
  var setColorMode = useCallback(function (colorMode) {
136
151
  setChosenColorMode(colorMode);
137
152
  setReconciledColorMode(getReconciledColorMode(colorMode));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/app-provider",
3
- "version": "2.3.0",
3
+ "version": "3.1.0",
4
4
  "description": "A top level provider for the Design System.",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -38,8 +38,7 @@
38
38
  ".": "./src/index.tsx"
39
39
  },
40
40
  "dependencies": {
41
- "@atlaskit/platform-feature-flags": "^1.1.0",
42
- "@atlaskit/tokens": "^5.6.0",
41
+ "@atlaskit/tokens": "^6.0.0",
43
42
  "@babel/runtime": "^7.0.0",
44
43
  "bind-event-listener": "^3.0.0"
45
44
  },
@@ -50,14 +49,13 @@
50
49
  "@af/visual-regression": "workspace:^",
51
50
  "@atlaskit/dropdown-menu": "^16.3.0",
52
51
  "@atlaskit/ds-lib": "^5.0.0",
53
- "@atlaskit/primitives": "^14.10.0",
52
+ "@atlaskit/primitives": "^14.11.0",
54
53
  "@atlaskit/visual-regression": "workspace:^",
55
54
  "@atlassian/ssr-tests": "^0.2.0",
56
55
  "@testing-library/react": "^13.4.0",
57
56
  "@testing-library/user-event": "^14.4.3",
58
57
  "react-dom": "^18.2.0",
59
- "react-resource-router": "^0.20.0",
60
- "typescript": "~5.4.2"
58
+ "react-resource-router": "^0.20.0"
61
59
  },
62
60
  "techstack": {
63
61
  "@atlassian/frontend": {
@@ -90,10 +88,5 @@
90
88
  ]
91
89
  }
92
90
  },
93
- "homepage": "https://atlassian.design/components/app-provider",
94
- "platform-feature-flags": {
95
- "platform-default-typography-refreshed": {
96
- "type": "boolean"
97
- }
98
- }
91
+ "homepage": "https://atlassian.design/components/app-provider"
99
92
  }