@atlaskit/app-provider 4.1.0 → 4.2.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,13 @@
1
1
  # @atlaskit/app-provider
2
2
 
3
+ ## 4.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`1fab6967bb305`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1fab6967bb305) -
8
+ Tidied feature flag `platform_dst_subtree_theming` which enables sub-tree theming capabilities
9
+ within `@atlaskit/app-provider`
10
+
3
11
  ## 4.1.0
4
12
 
5
13
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- /* index.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* index.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  "use strict";
3
3
 
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -16,7 +16,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
  var _react = _interopRequireWildcard(require("react"));
18
18
  var _bindEventListener = require("bind-event-listener");
19
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
19
  var _tokens = require("@atlaskit/tokens");
21
20
  var _context3 = require("../context");
22
21
  var _colorMode = require("./context/color-mode");
@@ -84,18 +83,6 @@ function ThemeProvider(_ref) {
84
83
  var isInsideAppProvider = (0, _context3.useIsInsideAppProvider)();
85
84
  var isAppProviderThemingEnabled = (0, _context3.useIsAppProviderThemingEnabled)();
86
85
  var isInsideThemeProvider = (0, _useIsInsideThemeProvider.useIsInsideThemeProvider)();
87
- var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
88
- var shouldUseGlobalTheming =
89
- /**
90
- * When not behind feature flag, partially revert to legacy behavior.
91
- * This only affects theme providers that are not inside an AppProvider or a ThemeProvider,
92
- * as we still need to set global theme state to prevent breaking existing apps,
93
- * but also prevent multiple theme providers from loading conflicting theme states.
94
- *
95
- * At some point this should be removed as we will
96
- * only support sub-tree theming when used inside of AppProvider.
97
- */
98
- !(0, _platformFeatureFlags.fg)('platform_dst_subtree_theming') && !isInsideAppProvider && !isInsideThemeProvider ||
99
86
  /**
100
87
  * A top-level ThemeProvider is detected by being the first ThemeProvider inside an AppProvider.
101
88
  *
@@ -107,9 +94,9 @@ function ThemeProvider(_ref) {
107
94
  * `html` in order to apply global theme state, which would allow a more consistent approach to
108
95
  * theme loading.
109
96
  */
110
- isRootThemeProvider;
97
+ var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
111
98
  (0, _react.useEffect)(function () {
112
- if (shouldUseGlobalTheming) {
99
+ if (isRootThemeProvider) {
113
100
  /**
114
101
  * We need to wait for any previous `setGlobalTheme` calls to finish before calling it again.
115
102
  * This is to prevent race conditions as `setGlobalTheme` is async and mutates the DOM (e.g. sets the
@@ -182,7 +169,7 @@ function ThemeProvider(_ref) {
182
169
  // we treat them as sub-tree themes that do not load global theme state.
183
170
  (0, _loadAndMountThemes.loadAndMountThemes)(theme);
184
171
  }
185
- }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, shouldUseGlobalTheming, theme]);
172
+ }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, theme]);
186
173
  (0, _react.useEffect)(function () {
187
174
  if (!prefersDarkModeMql) {
188
175
  return;
@@ -210,7 +197,7 @@ function ThemeProvider(_ref) {
210
197
  value: theme
211
198
  }, /*#__PURE__*/_react.default.createElement(_theme.SetThemeContext.Provider, {
212
199
  value: setPartialTheme
213
- }, !shouldUseGlobalTheming && (0, _platformFeatureFlags.fg)('platform_dst_subtree_theming') ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, attrs, {
200
+ }, !isRootThemeProvider ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, attrs, {
214
201
  className: (0, _runtime.ax)([contentStyles.body])
215
202
  }), children) : children)))));
216
203
  }
@@ -1,10 +1,9 @@
1
- /* index.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* index.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import "./index.compiled.css";
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import { bind } from 'bind-event-listener';
7
- import { fg } from '@atlaskit/platform-feature-flags';
8
7
  import { getThemeHtmlAttrs, setGlobalTheme, SUBTREE_THEME_ATTRIBUTE } from '@atlaskit/tokens';
9
8
  import { useIsAppProviderThemingEnabled, useIsInsideAppProvider } from '../context';
10
9
  import { ColorModeContext, SetColorModeContext } from './context/color-mode';
@@ -62,18 +61,6 @@ function ThemeProvider({
62
61
  const isInsideAppProvider = useIsInsideAppProvider();
63
62
  const isAppProviderThemingEnabled = useIsAppProviderThemingEnabled();
64
63
  const isInsideThemeProvider = useIsInsideThemeProvider();
65
- const isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
66
- const shouldUseGlobalTheming =
67
- /**
68
- * When not behind feature flag, partially revert to legacy behavior.
69
- * This only affects theme providers that are not inside an AppProvider or a ThemeProvider,
70
- * as we still need to set global theme state to prevent breaking existing apps,
71
- * but also prevent multiple theme providers from loading conflicting theme states.
72
- *
73
- * At some point this should be removed as we will
74
- * only support sub-tree theming when used inside of AppProvider.
75
- */
76
- !fg('platform_dst_subtree_theming') && !isInsideAppProvider && !isInsideThemeProvider ||
77
64
  /**
78
65
  * A top-level ThemeProvider is detected by being the first ThemeProvider inside an AppProvider.
79
66
  *
@@ -85,9 +72,9 @@ function ThemeProvider({
85
72
  * `html` in order to apply global theme state, which would allow a more consistent approach to
86
73
  * theme loading.
87
74
  */
88
- isRootThemeProvider;
75
+ const isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
89
76
  useEffect(() => {
90
- if (shouldUseGlobalTheming) {
77
+ if (isRootThemeProvider) {
91
78
  /**
92
79
  * We need to wait for any previous `setGlobalTheme` calls to finish before calling it again.
93
80
  * This is to prevent race conditions as `setGlobalTheme` is async and mutates the DOM (e.g. sets the
@@ -126,7 +113,7 @@ function ThemeProvider({
126
113
  // we treat them as sub-tree themes that do not load global theme state.
127
114
  loadAndMountThemes(theme);
128
115
  }
129
- }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, shouldUseGlobalTheming, theme]);
116
+ }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, theme]);
130
117
  useEffect(() => {
131
118
  if (!prefersDarkModeMql) {
132
119
  return;
@@ -158,7 +145,7 @@ function ThemeProvider({
158
145
  value: theme
159
146
  }, /*#__PURE__*/React.createElement(SetThemeContext.Provider, {
160
147
  value: setPartialTheme
161
- }, !shouldUseGlobalTheming && fg('platform_dst_subtree_theming') ? /*#__PURE__*/React.createElement("div", _extends({}, attrs, {
148
+ }, !isRootThemeProvider ? /*#__PURE__*/React.createElement("div", _extends({}, attrs, {
162
149
  className: ax([contentStyles.body])
163
150
  }), children) : children)))));
164
151
  }
@@ -1,4 +1,4 @@
1
- /* index.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* index.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
@@ -10,7 +10,6 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
10
10
  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; }
11
11
  import React, { useCallback, useEffect, useRef, useState } from 'react';
12
12
  import { bind } from 'bind-event-listener';
13
- import { fg } from '@atlaskit/platform-feature-flags';
14
13
  import { getThemeHtmlAttrs, setGlobalTheme, SUBTREE_THEME_ATTRIBUTE } from '@atlaskit/tokens';
15
14
  import { useIsAppProviderThemingEnabled, useIsInsideAppProvider } from '../context';
16
15
  import { ColorModeContext, SetColorModeContext } from './context/color-mode';
@@ -75,18 +74,6 @@ function ThemeProvider(_ref) {
75
74
  var isInsideAppProvider = useIsInsideAppProvider();
76
75
  var isAppProviderThemingEnabled = useIsAppProviderThemingEnabled();
77
76
  var isInsideThemeProvider = useIsInsideThemeProvider();
78
- var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
79
- var shouldUseGlobalTheming =
80
- /**
81
- * When not behind feature flag, partially revert to legacy behavior.
82
- * This only affects theme providers that are not inside an AppProvider or a ThemeProvider,
83
- * as we still need to set global theme state to prevent breaking existing apps,
84
- * but also prevent multiple theme providers from loading conflicting theme states.
85
- *
86
- * At some point this should be removed as we will
87
- * only support sub-tree theming when used inside of AppProvider.
88
- */
89
- !fg('platform_dst_subtree_theming') && !isInsideAppProvider && !isInsideThemeProvider ||
90
77
  /**
91
78
  * A top-level ThemeProvider is detected by being the first ThemeProvider inside an AppProvider.
92
79
  *
@@ -98,9 +85,9 @@ function ThemeProvider(_ref) {
98
85
  * `html` in order to apply global theme state, which would allow a more consistent approach to
99
86
  * theme loading.
100
87
  */
101
- isRootThemeProvider;
88
+ var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
102
89
  useEffect(function () {
103
- if (shouldUseGlobalTheming) {
90
+ if (isRootThemeProvider) {
104
91
  /**
105
92
  * We need to wait for any previous `setGlobalTheme` calls to finish before calling it again.
106
93
  * This is to prevent race conditions as `setGlobalTheme` is async and mutates the DOM (e.g. sets the
@@ -173,7 +160,7 @@ function ThemeProvider(_ref) {
173
160
  // we treat them as sub-tree themes that do not load global theme state.
174
161
  loadAndMountThemes(theme);
175
162
  }
176
- }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, shouldUseGlobalTheming, theme]);
163
+ }, [isInsideAppProvider, isInsideThemeProvider, isRootThemeProvider, reconciledColorMode, theme]);
177
164
  useEffect(function () {
178
165
  if (!prefersDarkModeMql) {
179
166
  return;
@@ -201,7 +188,7 @@ function ThemeProvider(_ref) {
201
188
  value: theme
202
189
  }, /*#__PURE__*/React.createElement(SetThemeContext.Provider, {
203
190
  value: setPartialTheme
204
- }, !shouldUseGlobalTheming && fg('platform_dst_subtree_theming') ? /*#__PURE__*/React.createElement("div", _extends({}, attrs, {
191
+ }, !isRootThemeProvider ? /*#__PURE__*/React.createElement("div", _extends({}, attrs, {
205
192
  className: ax([contentStyles.body])
206
193
  }), children) : children)))));
207
194
  }
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * A context that indicates if the current component is inside an AppProvider.
5
5
  */
6
- export declare const InsideAppProviderContext: import("react").Context<boolean>;
6
+ export declare const InsideAppProviderContext: import('react').Context<boolean>;
7
7
  export declare const useIsInsideAppProvider: () => boolean;
8
8
  /**
9
9
  * __App provider theming enabled context__
10
10
  *
11
11
  * A context that indicates if the AppProvider is enabled for theming.
12
12
  */
13
- export declare const AppProviderThemingEnabledContext: import("react").Context<boolean>;
13
+ export declare const AppProviderThemingEnabledContext: import('react').Context<boolean>;
14
14
  export declare const useIsAppProviderThemingEnabled: () => boolean;
@@ -3,8 +3,8 @@ export type ReconciledColorMode = Exclude<ThemeColorModes, 'auto'>;
3
3
  /**
4
4
  * __Color mode context__
5
5
  */
6
- export declare const ColorModeContext: import("react").Context<ReconciledColorMode | undefined>;
6
+ export declare const ColorModeContext: import('react').Context<ReconciledColorMode | undefined>;
7
7
  /**
8
8
  * __Set color mode context__
9
9
  */
10
- export declare const SetColorModeContext: import("react").Context<((value: ThemeColorModes) => void) | undefined>;
10
+ export declare const SetColorModeContext: import('react').Context<((value: ThemeColorModes) => void) | undefined>;
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * __Inside theme provider context__
3
3
  */
4
- export declare const InsideThemeProviderContext: import("react").Context<boolean>;
4
+ export declare const InsideThemeProviderContext: import('react').Context<boolean>;
@@ -3,8 +3,8 @@ export type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
3
3
  /**
4
4
  * __Theme context__
5
5
  */
6
- export declare const ThemeContext: import("react").Context<Theme | undefined>;
6
+ export declare const ThemeContext: import('react').Context<Theme | undefined>;
7
7
  /**
8
8
  * __Set theme context__
9
9
  */
10
- export declare const SetThemeContext: import("react").Context<((value: Partial<Theme>) => void) | undefined>;
10
+ export declare const SetThemeContext: import('react').Context<((value: Partial<Theme>) => void) | undefined>;
@@ -15,5 +15,5 @@ export interface ThemeProviderProps {
15
15
  *
16
16
  * Provides global theming configuration.
17
17
  */
18
- declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): JSX.Element;
18
+ declare function ThemeProvider({ children, defaultColorMode, defaultTheme, }: ThemeProviderProps): JSX.Element;
19
19
  export default ThemeProvider;
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * A context that indicates if the current component is inside an AppProvider.
5
5
  */
6
- export declare const InsideAppProviderContext: import("react").Context<boolean>;
6
+ export declare const InsideAppProviderContext: import('react').Context<boolean>;
7
7
  export declare const useIsInsideAppProvider: () => boolean;
8
8
  /**
9
9
  * __App provider theming enabled context__
10
10
  *
11
11
  * A context that indicates if the AppProvider is enabled for theming.
12
12
  */
13
- export declare const AppProviderThemingEnabledContext: import("react").Context<boolean>;
13
+ export declare const AppProviderThemingEnabledContext: import('react').Context<boolean>;
14
14
  export declare const useIsAppProviderThemingEnabled: () => boolean;
@@ -3,8 +3,8 @@ export type ReconciledColorMode = Exclude<ThemeColorModes, 'auto'>;
3
3
  /**
4
4
  * __Color mode context__
5
5
  */
6
- export declare const ColorModeContext: import("react").Context<ReconciledColorMode | undefined>;
6
+ export declare const ColorModeContext: import('react').Context<ReconciledColorMode | undefined>;
7
7
  /**
8
8
  * __Set color mode context__
9
9
  */
10
- export declare const SetColorModeContext: import("react").Context<((value: ThemeColorModes) => void) | undefined>;
10
+ export declare const SetColorModeContext: import('react').Context<((value: ThemeColorModes) => void) | undefined>;
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * __Inside theme provider context__
3
3
  */
4
- export declare const InsideThemeProviderContext: import("react").Context<boolean>;
4
+ export declare const InsideThemeProviderContext: import('react').Context<boolean>;
@@ -3,8 +3,8 @@ export type Theme = Omit<ThemeState, 'colorMode' | 'contrastMode'>;
3
3
  /**
4
4
  * __Theme context__
5
5
  */
6
- export declare const ThemeContext: import("react").Context<Theme | undefined>;
6
+ export declare const ThemeContext: import('react').Context<Theme | undefined>;
7
7
  /**
8
8
  * __Set theme context__
9
9
  */
10
- export declare const SetThemeContext: import("react").Context<((value: Partial<Theme>) => void) | undefined>;
10
+ export declare const SetThemeContext: import('react').Context<((value: Partial<Theme>) => void) | undefined>;
@@ -15,5 +15,5 @@ export interface ThemeProviderProps {
15
15
  *
16
16
  * Provides global theming configuration.
17
17
  */
18
- declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): JSX.Element;
18
+ declare function ThemeProvider({ children, defaultColorMode, defaultTheme, }: ThemeProviderProps): JSX.Element;
19
19
  export default ThemeProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/app-provider",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "description": "A top level provider for the Design System.",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -8,6 +8,13 @@
8
8
  "registry": "https://registry.npmjs.org/"
9
9
  },
10
10
  "atlassian": {
11
+ "react-compiler": {
12
+ "enabled": true,
13
+ "gating": {
14
+ "source": "@atlassian/react-compiler-gating",
15
+ "importSpecifierName": "isReactCompilerActivePlatform"
16
+ }
17
+ },
11
18
  "team": "Design System Team",
12
19
  "website": {
13
20
  "name": "App provider",
@@ -38,7 +45,7 @@
38
45
  "@atlaskit/browser-apis": "^0.0.1",
39
46
  "@atlaskit/css": "^0.19.0",
40
47
  "@atlaskit/platform-feature-flags": "^1.1.0",
41
- "@atlaskit/tokens": "^11.0.0",
48
+ "@atlaskit/tokens": "^11.4.0",
42
49
  "@babel/runtime": "^7.0.0",
43
50
  "bind-event-listener": "^3.0.0"
44
51
  },
@@ -47,18 +54,16 @@
47
54
  },
48
55
  "devDependencies": {
49
56
  "@af/visual-regression": "workspace:^",
50
- "@atlaskit/dropdown-menu": "^16.4.0",
51
- "@atlaskit/primitives": "^18.0.0",
57
+ "@atlaskit/dropdown-menu": "^16.8.0",
58
+ "@atlaskit/primitives": "^18.1.0",
52
59
  "@atlassian/feature-flags-test-utils": "^1.0.0",
60
+ "@atlassian/react-compiler-gating": "workspace:^",
53
61
  "@atlassian/ssr-tests": "workspace:^",
54
62
  "@atlassian/testing-library": "^0.4.0",
55
63
  "react-dom": "^18.2.0",
56
64
  "react-resource-router": "^0.20.0"
57
65
  },
58
66
  "platform-feature-flags": {
59
- "platform_dst_subtree_theming": {
60
- "type": "boolean"
61
- },
62
67
  "platform_increased-contrast-themes": {
63
68
  "type": "boolean"
64
69
  }