@atlaskit/app-provider 3.0.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 +8 -0
- package/dist/cjs/theme-provider.js +36 -20
- package/dist/es2019/theme-provider.js +17 -5
- package/dist/esm/theme-provider.js +36 -20
- package/package.json +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
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
|
+
|
|
3
11
|
## 3.0.0
|
|
4
12
|
|
|
5
13
|
### Major Changes
|
|
@@ -53,10 +53,26 @@ function UNSAFE_useColorModeForMigration() {
|
|
|
53
53
|
*/
|
|
54
54
|
function useColorMode() {
|
|
55
55
|
var value = (0, _react.useContext)(ColorModeContext);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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;
|
|
60
76
|
}
|
|
61
77
|
|
|
62
78
|
/**
|
|
@@ -79,10 +95,10 @@ function useSetColorMode() {
|
|
|
79
95
|
*/
|
|
80
96
|
function useTheme() {
|
|
81
97
|
var theme = (0, _react.useContext)(ThemeContext);
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
resolvedTheme =
|
|
85
|
-
setResolvedTheme =
|
|
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];
|
|
86
102
|
(0, _react.useEffect)(function () {
|
|
87
103
|
// We are using theme from context so no need to reference the DOM
|
|
88
104
|
if (theme) {
|
|
@@ -94,7 +110,7 @@ function useTheme() {
|
|
|
94
110
|
return observer.disconnect();
|
|
95
111
|
};
|
|
96
112
|
}, [theme]);
|
|
97
|
-
return resolvedTheme;
|
|
113
|
+
return theme ? theme : resolvedTheme;
|
|
98
114
|
}
|
|
99
115
|
|
|
100
116
|
/**
|
|
@@ -131,20 +147,20 @@ function ThemeProvider(_ref) {
|
|
|
131
147
|
var children = _ref.children,
|
|
132
148
|
defaultColorMode = _ref.defaultColorMode,
|
|
133
149
|
defaultTheme = _ref.defaultTheme;
|
|
134
|
-
var
|
|
135
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
136
|
-
chosenColorMode = _useState4[0],
|
|
137
|
-
setChosenColorMode = _useState4[1];
|
|
138
|
-
var _useState5 = (0, _react.useState)(getReconciledColorMode(defaultColorMode)),
|
|
150
|
+
var _useState5 = (0, _react.useState)(defaultColorMode),
|
|
139
151
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
var _useState7 = (0, _react.useState)(
|
|
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 () {
|
|
143
159
|
return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
|
|
144
160
|
}),
|
|
145
|
-
|
|
146
|
-
theme =
|
|
147
|
-
setTheme =
|
|
161
|
+
_useState0 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
162
|
+
theme = _useState0[0],
|
|
163
|
+
setTheme = _useState0[1];
|
|
148
164
|
var setColorMode = (0, _react.useCallback)(function (colorMode) {
|
|
149
165
|
setChosenColorMode(colorMode);
|
|
150
166
|
setReconciledColorMode(getReconciledColorMode(colorMode));
|
|
@@ -31,10 +31,22 @@ export function UNSAFE_useColorModeForMigration() {
|
|
|
31
31
|
*/
|
|
32
32
|
export function useColorMode() {
|
|
33
33
|
const value = useContext(ColorModeContext);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
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;
|
|
38
50
|
}
|
|
39
51
|
|
|
40
52
|
/**
|
|
@@ -67,7 +79,7 @@ export function useTheme() {
|
|
|
67
79
|
observer.observe();
|
|
68
80
|
return () => observer.disconnect();
|
|
69
81
|
}, [theme]);
|
|
70
|
-
return resolvedTheme;
|
|
82
|
+
return theme ? theme : resolvedTheme;
|
|
71
83
|
}
|
|
72
84
|
|
|
73
85
|
/**
|
|
@@ -39,10 +39,26 @@ export function UNSAFE_useColorModeForMigration() {
|
|
|
39
39
|
*/
|
|
40
40
|
export function useColorMode() {
|
|
41
41
|
var value = useContext(ColorModeContext);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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;
|
|
46
62
|
}
|
|
47
63
|
|
|
48
64
|
/**
|
|
@@ -65,10 +81,10 @@ export function useSetColorMode() {
|
|
|
65
81
|
*/
|
|
66
82
|
export function useTheme() {
|
|
67
83
|
var theme = useContext(ThemeContext);
|
|
68
|
-
var
|
|
69
|
-
|
|
70
|
-
resolvedTheme =
|
|
71
|
-
setResolvedTheme =
|
|
84
|
+
var _useState3 = useState(theme || getGlobalTheme()),
|
|
85
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
86
|
+
resolvedTheme = _useState4[0],
|
|
87
|
+
setResolvedTheme = _useState4[1];
|
|
72
88
|
useEffect(function () {
|
|
73
89
|
// We are using theme from context so no need to reference the DOM
|
|
74
90
|
if (theme) {
|
|
@@ -80,7 +96,7 @@ export function useTheme() {
|
|
|
80
96
|
return observer.disconnect();
|
|
81
97
|
};
|
|
82
98
|
}, [theme]);
|
|
83
|
-
return resolvedTheme;
|
|
99
|
+
return theme ? theme : resolvedTheme;
|
|
84
100
|
}
|
|
85
101
|
|
|
86
102
|
/**
|
|
@@ -117,20 +133,20 @@ function ThemeProvider(_ref) {
|
|
|
117
133
|
var children = _ref.children,
|
|
118
134
|
defaultColorMode = _ref.defaultColorMode,
|
|
119
135
|
defaultTheme = _ref.defaultTheme;
|
|
120
|
-
var
|
|
121
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
122
|
-
chosenColorMode = _useState4[0],
|
|
123
|
-
setChosenColorMode = _useState4[1];
|
|
124
|
-
var _useState5 = useState(getReconciledColorMode(defaultColorMode)),
|
|
136
|
+
var _useState5 = useState(defaultColorMode),
|
|
125
137
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
var _useState7 = useState(
|
|
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 () {
|
|
129
145
|
return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
|
|
130
146
|
}),
|
|
131
|
-
|
|
132
|
-
theme =
|
|
133
|
-
setTheme =
|
|
147
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
148
|
+
theme = _useState0[0],
|
|
149
|
+
setTheme = _useState0[1];
|
|
134
150
|
var setColorMode = useCallback(function (colorMode) {
|
|
135
151
|
setChosenColorMode(colorMode);
|
|
136
152
|
setReconciledColorMode(getReconciledColorMode(colorMode));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/app-provider",
|
|
3
|
-
"version": "3.
|
|
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",
|
|
@@ -55,8 +55,7 @@
|
|
|
55
55
|
"@testing-library/react": "^13.4.0",
|
|
56
56
|
"@testing-library/user-event": "^14.4.3",
|
|
57
57
|
"react-dom": "^18.2.0",
|
|
58
|
-
"react-resource-router": "^0.20.0"
|
|
59
|
-
"typescript": "~5.4.2"
|
|
58
|
+
"react-resource-router": "^0.20.0"
|
|
60
59
|
},
|
|
61
60
|
"techstack": {
|
|
62
61
|
"@atlassian/frontend": {
|