@carbon/ibm-products 2.41.1-canary.13 → 2.41.1-canary.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/css/index-full-carbon.css +0 -6
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +0 -6
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +0 -6
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +0 -6
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Datagrid/Datagrid/DatagridContent.js +1 -21
  18. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +2 -12
  19. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.d.ts +3 -3
  20. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +5 -5
  21. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.d.ts +1 -3
  22. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +3 -12
  23. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +0 -7
  24. package/es/components/Datagrid/useCustomizeColumns.js +4 -0
  25. package/es/components/Datagrid/useEditableCell.js +1 -1
  26. package/es/components/Datagrid/useFocusRowExpander.js +1 -1
  27. package/es/components/Datagrid/useInlineEdit.d.ts +1 -1
  28. package/es/components/Datagrid/useInlineEdit.js +16 -9
  29. package/es/components/EditUpdateCards/EditUpdateCards.d.ts +3 -4
  30. package/es/components/Guidebanner/Guidebanner.js +2 -7
  31. package/es/components/ProductiveCard/ProductiveCard.d.ts +2 -115
  32. package/es/components/ProductiveCard/ProductiveCard.js +9 -9
  33. package/es/components/index.d.ts +0 -1
  34. package/es/global/js/hooks/usePortalTarget.js +2 -4
  35. package/es/index.js +0 -1
  36. package/lib/components/Datagrid/Datagrid/DatagridContent.js +29 -49
  37. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +19 -13
  38. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.d.ts +3 -3
  39. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +5 -5
  40. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.d.ts +1 -3
  41. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +3 -12
  42. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +0 -7
  43. package/lib/components/Datagrid/useCustomizeColumns.js +4 -0
  44. package/lib/components/Datagrid/useEditableCell.js +1 -1
  45. package/lib/components/Datagrid/useFocusRowExpander.js +1 -1
  46. package/lib/components/Datagrid/useInlineEdit.d.ts +1 -1
  47. package/lib/components/Datagrid/useInlineEdit.js +15 -8
  48. package/lib/components/EditUpdateCards/EditUpdateCards.d.ts +3 -4
  49. package/lib/components/Guidebanner/Guidebanner.js +2 -7
  50. package/lib/components/ProductiveCard/ProductiveCard.d.ts +2 -115
  51. package/lib/components/ProductiveCard/ProductiveCard.js +9 -9
  52. package/lib/components/index.d.ts +0 -1
  53. package/lib/global/js/hooks/usePortalTarget.js +2 -4
  54. package/lib/index.js +0 -4
  55. package/package.json +3 -7
  56. package/scss/components/Datagrid/styles/_useInlineEdit.scss +0 -6
  57. package/es/components/FeatureFlags/index.d.ts +0 -37
  58. package/es/components/FeatureFlags/index.js +0 -151
  59. package/es/feature-flags.d.ts +0 -1
  60. package/lib/components/FeatureFlags/index.d.ts +0 -37
  61. package/lib/components/FeatureFlags/index.js +0 -162
  62. package/lib/feature-flags.d.ts +0 -1
@@ -23,16 +23,22 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
 
24
24
  var _excluded = ["actionsPlacement"];
25
25
  var componentName = 'ProductiveCard';
26
+
27
+ // Default values for props
28
+ var defaults = {
29
+ actionsPlacement: 'top'
30
+ };
26
31
  exports.ProductiveCard = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
27
32
  var _ref$actionsPlacement = _ref.actionsPlacement,
28
- actionsPlacement = _ref$actionsPlacement === void 0 ? 'top' : _ref$actionsPlacement,
33
+ actionsPlacement = _ref$actionsPlacement === void 0 ? defaults.actionsPlacement : _ref$actionsPlacement,
29
34
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
30
35
  var validProps = propsHelper.prepareProps(rest, ['media', 'mediaPosition', 'pictogram', 'primaryButtonClick', 'productive', 'secondaryButtonKind']);
31
36
  return /*#__PURE__*/React__default["default"].createElement(Card.Card, _rollupPluginBabelHelpers["extends"]({}, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, validProps), {}, {
32
37
  actionsPlacement: actionsPlacement,
33
- ref: ref,
38
+ ref: ref
39
+ }), {
34
40
  productive: true
35
- }), devtools.getDevtoolsProps(componentName)));
41
+ }, devtools.getDevtoolsProps(componentName)));
36
42
  });
37
43
 
38
44
  // Return a placeholder if not released and not enabled by feature flag
@@ -41,7 +47,6 @@ exports.ProductiveCard.propTypes = {
41
47
  /**
42
48
  * Icons that are displayed on card. Refer to design documentation for implementation guidelines
43
49
  */
44
- /**@ts-ignore */
45
50
  actionIcons: index["default"].arrayOf(index["default"].shape({
46
51
  id: index["default"].string,
47
52
  icon: index["default"].oneOfType([index["default"].func, index["default"].object]),
@@ -89,7 +94,6 @@ exports.ProductiveCard.propTypes = {
89
94
  /**
90
95
  * Use an overflow menu instead of action icons. Refer to design documentation for implementation guidelines
91
96
  */
92
- /**@ts-ignore */
93
97
  overflowActions: index["default"].arrayOf(index["default"].shape({
94
98
  id: index["default"].string,
95
99
  itemText: index["default"].string,
@@ -107,7 +111,6 @@ exports.ProductiveCard.propTypes = {
107
111
  /**
108
112
  * Optional prop to allow overriding the icon rendering. Can be a React component class
109
113
  */
110
- /**@ts-ignore */
111
114
  primaryButtonIcon: index["default"].oneOfType([index["default"].func, index["default"].object]),
112
115
  /**
113
116
  * Determines if the primary button is on the top or bottom of the card
@@ -116,7 +119,6 @@ exports.ProductiveCard.propTypes = {
116
119
  /**
117
120
  * The text that's displayed in the primary button
118
121
  */
119
- /**@ts-ignore */
120
122
  primaryButtonText: index["default"].node,
121
123
  /**
122
124
  * Optionally specify an href for your Button to become an <a> element
@@ -125,7 +127,6 @@ exports.ProductiveCard.propTypes = {
125
127
  /**
126
128
  * Optional prop to allow overriding the icon rendering. Can be a React component class
127
129
  */
128
- /**@ts-ignore */
129
130
  secondaryButtonIcon: index["default"].oneOfType([index["default"].func, index["default"].object]),
130
131
  /**
131
132
  * Determines if the secondary button is on the top or bottom of the card
@@ -134,7 +135,6 @@ exports.ProductiveCard.propTypes = {
134
135
  /**
135
136
  * The text that's displayed in the secondary button
136
137
  */
137
- /**@ts-ignore */
138
138
  secondaryButtonText: index["default"].node,
139
139
  /**
140
140
  * **Experimental:** For all cases a `Slug` component can be provided.
@@ -69,4 +69,3 @@ export { Guidebanner, GuidebannerElement, GuidebannerElementButton, GuidebannerE
69
69
  export { InlineTip, InlineTipButton, InlineTipLink } from "./InlineTip";
70
70
  export { DescriptionList, DescriptionListBody, DescriptionListCell, DescriptionListRow } from "./DescriptionList";
71
71
  export { FilterPanel, FilterPanelAccordion, FilterPanelAccordionItem, FilterPanelCheckbox, FilterPanelCheckboxWithOverflow, FilterPanelGroup, FilterPanelLabel, FilterPanelSearch } from "./FilterPanel";
72
- export { FeatureFlags as unstable_FeatureFlags, useFeatureFlag as unstable_useFeatureFlag, useFeatureFlags as unstable_useFeatureFlags } from "./FeatureFlags";
@@ -13,10 +13,8 @@ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHel
13
13
  var React = require('react');
14
14
  var settings = require('../../../settings.js');
15
15
  var reactDom = require('react-dom');
16
- var index = require('../../../components/FeatureFlags/index.js');
17
16
 
18
17
  var usePortalTarget = function usePortalTarget(portalTargetIn) {
19
- var enablePortalTarget = index.useFeatureFlag('default-portal-target-body');
20
18
  var _useState = React.useState(null),
21
19
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
22
20
  portalTarget = _useState2[0],
@@ -25,11 +23,11 @@ var usePortalTarget = function usePortalTarget(portalTargetIn) {
25
23
  if (portalTargetIn) {
26
24
  setPortalTarget(portalTargetIn);
27
25
  } else {
28
- if (settings.pkg.isFeatureEnabled('default-portal-target-body') || enablePortalTarget) {
26
+ if (settings.pkg.isFeatureEnabled('default-portal-target-body')) {
29
27
  setPortalTarget(document.body);
30
28
  }
31
29
  }
32
- }, [portalTargetIn, enablePortalTarget]);
30
+ }, [portalTargetIn]);
33
31
  var renderPortalUse = React.useCallback(function (children) {
34
32
  return portalTarget ? /*#__PURE__*/reactDom.createPortal(children, portalTarget) : children;
35
33
  }, [portalTarget]);
package/lib/index.js CHANGED
@@ -137,7 +137,6 @@ var FilterPanelLabel = require('./components/FilterPanel/FilterPanelLabel/Filter
137
137
  var FilterPanelSearch = require('./components/FilterPanel/FilterPanelSearch/FilterPanelSearch.js');
138
138
  var ConditionBuilder = require('./components/ConditionBuilder/ConditionBuilder.js');
139
139
  var GetStartedCard = require('./components/GetStartedCard/GetStartedCard.js');
140
- var index$2 = require('./components/FeatureFlags/index.js');
141
140
 
142
141
 
143
142
 
@@ -582,6 +581,3 @@ Object.defineProperty(exports, 'GetStartedCard', {
582
581
  enumerable: true,
583
582
  get: function () { return GetStartedCard.GetStartedCard; }
584
583
  });
585
- exports.unstable_FeatureFlags = index$2.FeatureFlags;
586
- exports.unstable_useFeatureFlag = index$2.useFeatureFlag;
587
- exports.unstable_useFeatureFlags = index$2.useFeatureFlags;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.41.1-canary.13+3b244e6e2",
4
+ "version": "2.41.1-canary.5+e4c6a2c8e",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -17,10 +17,7 @@
17
17
  "sideEffects": [
18
18
  "**/global/js/utils/props-helper.js",
19
19
  "**/*.css",
20
- "**/*.scss",
21
- "es/feature-flags.js",
22
- "lib/feature-flags.js",
23
- "src/feature-flags.js"
20
+ "**/*.scss"
24
21
  ],
25
22
  "files": [
26
23
  "css",
@@ -95,7 +92,6 @@
95
92
  },
96
93
  "dependencies": {
97
94
  "@babel/runtime": "^7.23.9",
98
- "@carbon/feature-flags": "^0.20.0",
99
95
  "@carbon/ibm-products-styles": "^2.38.0",
100
96
  "@carbon/telemetry": "^0.1.0",
101
97
  "@dnd-kit/core": "^6.0.8",
@@ -120,5 +116,5 @@
120
116
  "react": "^16.8.6 || ^17.0.1 || ^18.2.0",
121
117
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
122
118
  },
123
- "gitHead": "3b244e6e25880b04f15bfad0b81299b07725bd4f"
119
+ "gitHead": "e4c6a2c8e8d42dd74abf2370331dde96c258de1c"
124
120
  }
@@ -80,12 +80,6 @@ $row-heights: (
80
80
  align-items: center;
81
81
  }
82
82
 
83
- .#{variables.$block-class}__static--outer-cell {
84
- display: flex;
85
- height: -webkit-fill-available;
86
- align-items: center;
87
- }
88
-
89
83
  .#{variables.$block-class}__inline-edit--outer-cell-button {
90
84
  width: 100%;
91
85
  height: calc(100% + 2px); // account for borders
@@ -1,37 +0,0 @@
1
- /**
2
- * Supports an object of feature flag values with the `flags` prop, merging them
3
- * along with the current `FeatureFlagContext` to provide consumers to check if
4
- * a feature flag is enabled or disabled in a given React tree
5
- */
6
- export function FeatureFlags({ children, flags }: {
7
- children: any;
8
- flags?: {} | undefined;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- export namespace FeatureFlags {
11
- namespace propTypes {
12
- let children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
13
- let flags: PropTypes.Requireable<{
14
- [x: string]: boolean | null | undefined;
15
- }>;
16
- }
17
- }
18
- /**
19
- * Our FeatureFlagContext is used alongside the FeatureFlags component to enable
20
- * or disable feature flags in a given React tree
21
- */
22
- export const FeatureFlagContext: React.Context<any>;
23
- /**
24
- * Access all feature flag information for the given FeatureFlagContext
25
- *
26
- * @returns {FeatureFlagScope}
27
- */
28
- export function useFeatureFlags(): FeatureFlagScope;
29
- /**
30
- * Access whether a given flag is enabled or disabled in a given
31
- * FeatureFlagContext
32
- *
33
- * @returns {boolean}
34
- */
35
- export function useFeatureFlag(flag: any): boolean;
36
- import PropTypes from 'prop-types';
37
- import React from 'react';
@@ -1,151 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2020, 2024
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { useContext, useState, useRef, useEffect, createContext } from 'react';
10
- import PropTypes from '../../node_modules/prop-types/index.js';
11
- import { createScope, FeatureFlags as FeatureFlags$1 } from '@carbon/feature-flags';
12
-
13
- /**
14
- * Our FeatureFlagContext is used alongside the FeatureFlags component to enable
15
- * or disable feature flags in a given React tree
16
- */
17
- var FeatureFlagContext = /*#__PURE__*/createContext(FeatureFlags$1);
18
-
19
- /**
20
- * Supports an object of feature flag values with the `flags` prop, merging them
21
- * along with the current `FeatureFlagContext` to provide consumers to check if
22
- * a feature flag is enabled or disabled in a given React tree
23
- */
24
- function FeatureFlags(_ref) {
25
- var children = _ref.children,
26
- _ref$flags = _ref.flags,
27
- flags = _ref$flags === void 0 ? {} : _ref$flags;
28
- var parentScope = useContext(FeatureFlagContext);
29
- var _useState = useState(parentScope),
30
- _useState2 = _slicedToArray(_useState, 2),
31
- prevParentScope = _useState2[0],
32
- setPrevParentScope = _useState2[1];
33
- var _useState3 = useState(function () {
34
- var scope = createScope(flags);
35
- scope.mergeWithScope(parentScope);
36
- return scope;
37
- }),
38
- _useState4 = _slicedToArray(_useState3, 2),
39
- scope = _useState4[0],
40
- updateScope = _useState4[1];
41
- if (parentScope !== prevParentScope) {
42
- var _scope = createScope(flags);
43
- _scope.mergeWithScope(parentScope);
44
- updateScope(_scope);
45
- setPrevParentScope(parentScope);
46
- }
47
-
48
- // We use a custom hook to detect if any of the keys or their values change
49
- // for flags that are passed in. If they have changed, then we re-create the
50
- // FeatureFlagScope using the new flags
51
- useChangedValue(flags, isEqual, function (changedFlags) {
52
- var scope = createScope(changedFlags);
53
- scope.mergeWithScope(parentScope);
54
- updateScope(scope);
55
- });
56
- return /*#__PURE__*/React__default.createElement(FeatureFlagContext.Provider, {
57
- value: scope
58
- }, children);
59
- }
60
- FeatureFlags.propTypes = {
61
- children: PropTypes.node,
62
- /**
63
- * Provide the feature flags to enabled or disabled in the current React tree
64
- */
65
- flags: PropTypes.objectOf(PropTypes.bool)
66
- };
67
-
68
- /**
69
- * This hook will store previous versions of the given `value` and compare the
70
- * current value to the previous one using the `compare` function. If the
71
- * compare function returns true, then the given `callback` is invoked in an
72
- * effect.
73
- *
74
- * @param {any} value
75
- * @param {Function} compare
76
- * @param {Function} callback
77
- */
78
- function useChangedValue(value, compare, callback) {
79
- var initialRender = useRef(false);
80
- var savedCallback = useRef(callback);
81
- var _useState5 = useState(value),
82
- _useState6 = _slicedToArray(_useState5, 2),
83
- prevValue = _useState6[0],
84
- setPrevValue = _useState6[1];
85
- if (!compare(prevValue, value)) {
86
- setPrevValue(value);
87
- }
88
- useEffect(function () {
89
- savedCallback.current = callback;
90
- });
91
- useEffect(function () {
92
- // We only want the callback triggered after the first render
93
- if (initialRender.current) {
94
- savedCallback.current(prevValue);
95
- }
96
- }, [prevValue]);
97
- useEffect(function () {
98
- initialRender.current = true;
99
- }, []);
100
- }
101
-
102
- /**
103
- * Access whether a given flag is enabled or disabled in a given
104
- * FeatureFlagContext
105
- *
106
- * @returns {boolean}
107
- */
108
- function useFeatureFlag(flag) {
109
- var scope = useContext(FeatureFlagContext);
110
- // console.log(scope);
111
- return scope.enabled(flag);
112
- }
113
-
114
- /**
115
- * Access all feature flag information for the given FeatureFlagContext
116
- *
117
- * @returns {FeatureFlagScope}
118
- */
119
- function useFeatureFlags() {
120
- return useContext(FeatureFlagContext);
121
- }
122
-
123
- /**
124
- * Compare two objects and determine if they are equal. This is a shallow
125
- * comparison since the objects we are comparing are objects with boolean flags
126
- * from the flags prop in the `FeatureFlags` component
127
- *
128
- * @param {object} a
129
- * @param {object} b
130
- * @returns {boolean}
131
- */
132
- function isEqual(a, b) {
133
- if (a === b) {
134
- return true;
135
- }
136
- for (var _i = 0, _Object$keys = Object.keys(a); _i < _Object$keys.length; _i++) {
137
- var key = _Object$keys[_i];
138
- if (a[key] !== b[key]) {
139
- return false;
140
- }
141
- }
142
- for (var _i2 = 0, _Object$keys2 = Object.keys(b); _i2 < _Object$keys2.length; _i2++) {
143
- var _key = _Object$keys2[_i2];
144
- if (b[_key] !== a[_key]) {
145
- return false;
146
- }
147
- }
148
- return true;
149
- }
150
-
151
- export { FeatureFlagContext, FeatureFlags, useFeatureFlag, useFeatureFlags };
@@ -1 +0,0 @@
1
- export {};
@@ -1,37 +0,0 @@
1
- /**
2
- * Supports an object of feature flag values with the `flags` prop, merging them
3
- * along with the current `FeatureFlagContext` to provide consumers to check if
4
- * a feature flag is enabled or disabled in a given React tree
5
- */
6
- export function FeatureFlags({ children, flags }: {
7
- children: any;
8
- flags?: {} | undefined;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- export namespace FeatureFlags {
11
- namespace propTypes {
12
- let children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
13
- let flags: PropTypes.Requireable<{
14
- [x: string]: boolean | null | undefined;
15
- }>;
16
- }
17
- }
18
- /**
19
- * Our FeatureFlagContext is used alongside the FeatureFlags component to enable
20
- * or disable feature flags in a given React tree
21
- */
22
- export const FeatureFlagContext: React.Context<any>;
23
- /**
24
- * Access all feature flag information for the given FeatureFlagContext
25
- *
26
- * @returns {FeatureFlagScope}
27
- */
28
- export function useFeatureFlags(): FeatureFlagScope;
29
- /**
30
- * Access whether a given flag is enabled or disabled in a given
31
- * FeatureFlagContext
32
- *
33
- * @returns {boolean}
34
- */
35
- export function useFeatureFlag(flag: any): boolean;
36
- import PropTypes from 'prop-types';
37
- import React from 'react';
@@ -1,162 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2020, 2024
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- 'use strict';
9
-
10
- Object.defineProperty(exports, '__esModule', { value: true });
11
-
12
- var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
- var React = require('react');
14
- var index = require('../../node_modules/prop-types/index.js');
15
- var FeatureFlags$1 = require('@carbon/feature-flags');
16
-
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
-
21
- /**
22
- * Our FeatureFlagContext is used alongside the FeatureFlags component to enable
23
- * or disable feature flags in a given React tree
24
- */
25
- var FeatureFlagContext = /*#__PURE__*/React.createContext(FeatureFlags$1.FeatureFlags);
26
-
27
- /**
28
- * Supports an object of feature flag values with the `flags` prop, merging them
29
- * along with the current `FeatureFlagContext` to provide consumers to check if
30
- * a feature flag is enabled or disabled in a given React tree
31
- */
32
- function FeatureFlags(_ref) {
33
- var children = _ref.children,
34
- _ref$flags = _ref.flags,
35
- flags = _ref$flags === void 0 ? {} : _ref$flags;
36
- var parentScope = React.useContext(FeatureFlagContext);
37
- var _useState = React.useState(parentScope),
38
- _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
39
- prevParentScope = _useState2[0],
40
- setPrevParentScope = _useState2[1];
41
- var _useState3 = React.useState(function () {
42
- var scope = FeatureFlags$1.createScope(flags);
43
- scope.mergeWithScope(parentScope);
44
- return scope;
45
- }),
46
- _useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
47
- scope = _useState4[0],
48
- updateScope = _useState4[1];
49
- if (parentScope !== prevParentScope) {
50
- var _scope = FeatureFlags$1.createScope(flags);
51
- _scope.mergeWithScope(parentScope);
52
- updateScope(_scope);
53
- setPrevParentScope(parentScope);
54
- }
55
-
56
- // We use a custom hook to detect if any of the keys or their values change
57
- // for flags that are passed in. If they have changed, then we re-create the
58
- // FeatureFlagScope using the new flags
59
- useChangedValue(flags, isEqual, function (changedFlags) {
60
- var scope = FeatureFlags$1.createScope(changedFlags);
61
- scope.mergeWithScope(parentScope);
62
- updateScope(scope);
63
- });
64
- return /*#__PURE__*/React__default["default"].createElement(FeatureFlagContext.Provider, {
65
- value: scope
66
- }, children);
67
- }
68
- FeatureFlags.propTypes = {
69
- children: index["default"].node,
70
- /**
71
- * Provide the feature flags to enabled or disabled in the current React tree
72
- */
73
- flags: index["default"].objectOf(index["default"].bool)
74
- };
75
-
76
- /**
77
- * This hook will store previous versions of the given `value` and compare the
78
- * current value to the previous one using the `compare` function. If the
79
- * compare function returns true, then the given `callback` is invoked in an
80
- * effect.
81
- *
82
- * @param {any} value
83
- * @param {Function} compare
84
- * @param {Function} callback
85
- */
86
- function useChangedValue(value, compare, callback) {
87
- var initialRender = React.useRef(false);
88
- var savedCallback = React.useRef(callback);
89
- var _useState5 = React.useState(value),
90
- _useState6 = _rollupPluginBabelHelpers.slicedToArray(_useState5, 2),
91
- prevValue = _useState6[0],
92
- setPrevValue = _useState6[1];
93
- if (!compare(prevValue, value)) {
94
- setPrevValue(value);
95
- }
96
- React.useEffect(function () {
97
- savedCallback.current = callback;
98
- });
99
- React.useEffect(function () {
100
- // We only want the callback triggered after the first render
101
- if (initialRender.current) {
102
- savedCallback.current(prevValue);
103
- }
104
- }, [prevValue]);
105
- React.useEffect(function () {
106
- initialRender.current = true;
107
- }, []);
108
- }
109
-
110
- /**
111
- * Access whether a given flag is enabled or disabled in a given
112
- * FeatureFlagContext
113
- *
114
- * @returns {boolean}
115
- */
116
- function useFeatureFlag(flag) {
117
- var scope = React.useContext(FeatureFlagContext);
118
- // console.log(scope);
119
- return scope.enabled(flag);
120
- }
121
-
122
- /**
123
- * Access all feature flag information for the given FeatureFlagContext
124
- *
125
- * @returns {FeatureFlagScope}
126
- */
127
- function useFeatureFlags() {
128
- return React.useContext(FeatureFlagContext);
129
- }
130
-
131
- /**
132
- * Compare two objects and determine if they are equal. This is a shallow
133
- * comparison since the objects we are comparing are objects with boolean flags
134
- * from the flags prop in the `FeatureFlags` component
135
- *
136
- * @param {object} a
137
- * @param {object} b
138
- * @returns {boolean}
139
- */
140
- function isEqual(a, b) {
141
- if (a === b) {
142
- return true;
143
- }
144
- for (var _i = 0, _Object$keys = Object.keys(a); _i < _Object$keys.length; _i++) {
145
- var key = _Object$keys[_i];
146
- if (a[key] !== b[key]) {
147
- return false;
148
- }
149
- }
150
- for (var _i2 = 0, _Object$keys2 = Object.keys(b); _i2 < _Object$keys2.length; _i2++) {
151
- var _key = _Object$keys2[_i2];
152
- if (b[_key] !== a[_key]) {
153
- return false;
154
- }
155
- }
156
- return true;
157
- }
158
-
159
- exports.FeatureFlagContext = FeatureFlagContext;
160
- exports.FeatureFlags = FeatureFlags;
161
- exports.useFeatureFlag = useFeatureFlag;
162
- exports.useFeatureFlags = useFeatureFlags;
@@ -1 +0,0 @@
1
- export {};