@instructure/ui-react-utils 8.33.1 → 8.33.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/CHANGELOG.md +4 -0
- package/es/ComponentIdentifier.js +5 -8
- package/es/DeterministicIdContext/DeterministicIdContextProvider.js +2 -2
- package/es/DeterministicIdContext/generateInstanceCounterMap.js +1 -1
- package/es/DeterministicIdContext/index.js +1 -0
- package/es/DeterministicIdContext/withDeterministicId.js +6 -10
- package/es/callRenderProp.js +3 -7
- package/es/deprecated.js +5 -30
- package/es/ensureSingleChild.js +2 -3
- package/es/experimental.js +0 -7
- package/es/getDisplayName.js +0 -1
- package/es/getElementType.js +3 -9
- package/es/getInteraction.js +12 -10
- package/es/hack.js +1 -7
- package/es/matchComponentTypes.js +1 -3
- package/es/omitProps.js +0 -7
- package/es/passthroughProps.js +3 -3
- package/es/pickProps.js +2 -6
- package/es/safeCloneElement.js +11 -15
- package/es/windowMessageListener.js +2 -13
- package/lib/ComponentIdentifier.js +2 -17
- package/lib/DeterministicIdContext/DeterministicIdContext.js +1 -5
- package/lib/DeterministicIdContext/DeterministicIdContextProvider.js +3 -7
- package/lib/DeterministicIdContext/generateInstanceCounterMap.js +1 -2
- package/lib/DeterministicIdContext/index.js +0 -4
- package/lib/DeterministicIdContext/withDeterministicId.js +6 -18
- package/lib/callRenderProp.js +2 -9
- package/lib/deprecated.js +6 -32
- package/lib/ensureSingleChild.js +0 -7
- package/lib/experimental.js +1 -10
- package/lib/getDisplayName.js +0 -2
- package/lib/getElementType.js +2 -10
- package/lib/getInteraction.js +12 -11
- package/lib/hack.js +0 -9
- package/lib/index.js +0 -16
- package/lib/matchComponentTypes.js +0 -4
- package/lib/omitProps.js +0 -8
- package/lib/passthroughProps.js +2 -5
- package/lib/pickProps.js +2 -7
- package/lib/safeCloneElement.js +10 -19
- package/lib/windowMessageListener.js +1 -16
- package/package.json +8 -8
- package/tsconfig.build.tsbuildinfo +1 -1
- package/types/getElementType.d.ts +1 -1
- package/types/getElementType.d.ts.map +1 -1
package/es/safeCloneElement.js
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
*/
|
|
24
|
+
|
|
24
25
|
import React from 'react';
|
|
25
26
|
import { logWarn as warn } from '@instructure/console';
|
|
26
27
|
import { createChainedFunction } from '@instructure/ui-utils';
|
|
27
|
-
|
|
28
28
|
/**
|
|
29
29
|
* ---
|
|
30
30
|
* category: utilities/react
|
|
@@ -39,19 +39,21 @@ function safeCloneElement(element, props) {
|
|
|
39
39
|
const originalRef = element.ref;
|
|
40
40
|
const originalRefIsAFunction = typeof originalRef === 'function';
|
|
41
41
|
const cloneRefIsFunction = typeof cloneRef === 'function';
|
|
42
|
-
const mergedProps = {
|
|
42
|
+
const mergedProps = {
|
|
43
|
+
...props
|
|
43
44
|
};
|
|
44
|
-
|
|
45
45
|
if (element.props.style && props.style) {
|
|
46
46
|
// merge with existing styles
|
|
47
|
-
mergedProps.style = {
|
|
47
|
+
mergedProps.style = {
|
|
48
|
+
...element.props.style,
|
|
48
49
|
...props.style
|
|
49
50
|
};
|
|
50
|
-
}
|
|
51
|
-
|
|
51
|
+
}
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
// prevent overriding existing keys
|
|
54
|
+
mergedProps.key = element.key || props.key;
|
|
54
55
|
|
|
56
|
+
// Add chained function to preserve existing event handlers
|
|
55
57
|
Object.keys(props).forEach(prop => {
|
|
56
58
|
// If prop looks like an event handler "on*" and either
|
|
57
59
|
// props[props] or element.props[prop] is a function create a chained function.
|
|
@@ -63,20 +65,17 @@ function safeCloneElement(element, props) {
|
|
|
63
65
|
mergedProps[prop] = createChainedFunction(element.props[prop], props[prop]);
|
|
64
66
|
}
|
|
65
67
|
});
|
|
66
|
-
|
|
67
68
|
for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
68
69
|
children[_key - 2] = arguments[_key];
|
|
69
70
|
}
|
|
70
|
-
|
|
71
71
|
if (originalRef == null || cloneRef == null) {
|
|
72
72
|
return /*#__PURE__*/React.cloneElement(element, mergedProps, ...children);
|
|
73
73
|
}
|
|
74
|
-
|
|
75
74
|
warn(originalRefIsAFunction, `Cloning an element with a ref that will be overwritten because the ref \
|
|
76
75
|
is not a function. Use a composable callback-style ref instead. \
|
|
77
76
|
Ignoring ref: ${originalRef}`);
|
|
78
|
-
return /*#__PURE__*/React.cloneElement(element, {
|
|
79
|
-
|
|
77
|
+
return /*#__PURE__*/React.cloneElement(element, {
|
|
78
|
+
...mergedProps,
|
|
80
79
|
ref(component) {
|
|
81
80
|
if (cloneRefIsFunction) {
|
|
82
81
|
;
|
|
@@ -84,12 +83,9 @@ Ignoring ref: ${originalRef}`);
|
|
|
84
83
|
} else {
|
|
85
84
|
cloneRef.current = component;
|
|
86
85
|
}
|
|
87
|
-
|
|
88
86
|
originalRef(component);
|
|
89
87
|
}
|
|
90
|
-
|
|
91
88
|
}, ...children);
|
|
92
89
|
}
|
|
93
|
-
|
|
94
90
|
export default safeCloneElement;
|
|
95
91
|
export { safeCloneElement };
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { decorator } from '@instructure/ui-decorator';
|
|
25
25
|
import { ownerWindow } from '@instructure/ui-dom-utils';
|
|
26
|
+
|
|
26
27
|
/**
|
|
27
28
|
* ---
|
|
28
29
|
* category: utilities/react
|
|
@@ -36,42 +37,33 @@ import { ownerWindow } from '@instructure/ui-dom-utils';
|
|
|
36
37
|
* @param {Function} validSource an optional function that would restrict message handling to a specified source.
|
|
37
38
|
* @returns {Function} a function that decorates a React component with the behavior
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
40
|
const windowMessageListener = decorator((ComposedComponent, messageHandler, validSource) => {
|
|
41
41
|
var _class;
|
|
42
|
-
|
|
43
42
|
return _class = class extends ComposedComponent {
|
|
44
43
|
constructor() {
|
|
45
44
|
super(...arguments);
|
|
46
|
-
|
|
47
45
|
this.handleMessage = e => {
|
|
48
46
|
if (this.sourceIsValid(e.source) && e.origin === origin(this) && e.data) {
|
|
49
47
|
messageHandler.call(this, e.data);
|
|
50
48
|
}
|
|
51
49
|
};
|
|
52
50
|
}
|
|
53
|
-
|
|
54
51
|
componentDidMount() {
|
|
55
52
|
const win = ownerWindow(this);
|
|
56
53
|
win.addEventListener('message', this.handleMessage, false);
|
|
57
|
-
|
|
58
54
|
if (super.componentDidMount) {
|
|
59
55
|
super.componentDidMount();
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
|
-
|
|
63
58
|
componentWillUnmount() {
|
|
64
59
|
const win = ownerWindow(this);
|
|
65
60
|
win.removeEventListener('message', this.handleMessage, false);
|
|
66
|
-
|
|
67
61
|
if (super.componentDidMount) {
|
|
68
62
|
super.componentDidMount();
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
|
-
|
|
72
65
|
sourceIsValid(eventSource) {
|
|
73
66
|
const expectedSource = typeof validSource === 'function' ? validSource.call(this) : validSource;
|
|
74
|
-
|
|
75
67
|
if (!expectedSource) {
|
|
76
68
|
return true;
|
|
77
69
|
} else if (eventSource) {
|
|
@@ -82,11 +74,11 @@ const windowMessageListener = decorator((ComposedComponent, messageHandler, vali
|
|
|
82
74
|
return false;
|
|
83
75
|
}
|
|
84
76
|
}
|
|
85
|
-
|
|
86
77
|
}, _class.postMessage = function (target, message, origin) {
|
|
87
78
|
target.postMessage(message, origin);
|
|
88
79
|
}, _class;
|
|
89
80
|
});
|
|
81
|
+
|
|
90
82
|
/**
|
|
91
83
|
* Return the origin of the owner window of the DOM element
|
|
92
84
|
*
|
|
@@ -95,11 +87,9 @@ const windowMessageListener = decorator((ComposedComponent, messageHandler, vali
|
|
|
95
87
|
* @param {DOMElement} node
|
|
96
88
|
* @returns {String} the origin
|
|
97
89
|
*/
|
|
98
|
-
|
|
99
90
|
function origin(node) {
|
|
100
91
|
const ownWindow = ownerWindow(node);
|
|
101
92
|
const location = ownWindow.location;
|
|
102
|
-
|
|
103
93
|
if (location.protocol === 'file:') {
|
|
104
94
|
return '*';
|
|
105
95
|
} else if (location.origin) {
|
|
@@ -110,6 +100,5 @@ function origin(node) {
|
|
|
110
100
|
return `${location.protocol}//${location.hostname}`;
|
|
111
101
|
}
|
|
112
102
|
}
|
|
113
|
-
|
|
114
103
|
export default windowMessageListener;
|
|
115
104
|
export { origin, windowMessageListener };
|
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.default = exports.ComponentIdentifier = void 0;
|
|
11
|
-
|
|
12
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
-
|
|
14
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
-
|
|
16
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
|
-
|
|
18
12
|
var _matchComponentTypes = require("./matchComponentTypes");
|
|
19
|
-
|
|
20
13
|
var _ensureSingleChild = require("./ensureSingleChild");
|
|
21
|
-
|
|
22
14
|
var _deprecated = _interopRequireDefault(require("./deprecated"));
|
|
23
|
-
|
|
24
15
|
const _excluded = ["children"];
|
|
25
|
-
|
|
26
16
|
var _dec, _class, _class2;
|
|
27
|
-
|
|
28
17
|
// TODO delete this class, its not used anywhere, see livegrep
|
|
29
|
-
|
|
30
18
|
/**
|
|
31
19
|
---
|
|
32
20
|
category: utilities/react
|
|
@@ -66,24 +54,21 @@ Abstract component identifier. Helpful for picking out a specific child.
|
|
|
66
54
|
let ComponentIdentifier = (_dec = (0, _deprecated.default)('8.0.0', void 0, 'This component will be removed in InstUI 9.0 since its not used.'), _dec(_class = (_class2 = class ComponentIdentifier extends _react.Component {
|
|
67
55
|
render() {
|
|
68
56
|
const _this$props = this.props,
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
children = _this$props.children,
|
|
58
|
+
props = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
|
|
71
59
|
return (0, _ensureSingleChild.ensureSingleChild)(children, props);
|
|
72
60
|
}
|
|
73
|
-
|
|
74
61
|
}, _class2.displayName = "ComponentIdentifier", _class2.propTypes = {
|
|
75
62
|
children: _propTypes.default.node
|
|
76
63
|
}, _class2.defaultProps = {
|
|
77
64
|
children: null
|
|
78
65
|
}, _class2.pick = (component, children) => {
|
|
79
66
|
let result;
|
|
80
|
-
|
|
81
67
|
_react.default.Children.forEach(children, child => {
|
|
82
68
|
if ((0, _matchComponentTypes.matchComponentTypes)(child, [component])) {
|
|
83
69
|
result = child;
|
|
84
70
|
}
|
|
85
71
|
});
|
|
86
|
-
|
|
87
72
|
return result;
|
|
88
73
|
}, _class2)) || _class);
|
|
89
74
|
exports.ComponentIdentifier = ComponentIdentifier;
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.DeterministicIdContext = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _generateInstanceCounterMap = require("./generateInstanceCounterMap");
|
|
13
|
-
|
|
14
10
|
/*
|
|
15
11
|
* The MIT License (MIT)
|
|
16
12
|
*
|
|
@@ -34,6 +30,6 @@ var _generateInstanceCounterMap = require("./generateInstanceCounterMap");
|
|
|
34
30
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
35
31
|
* SOFTWARE.
|
|
36
32
|
*/
|
|
37
|
-
const DeterministicIdContext = /*#__PURE__*/_react.default.createContext((0, _generateInstanceCounterMap.generateInstanceCounterMap)());
|
|
38
33
|
|
|
34
|
+
const DeterministicIdContext = /*#__PURE__*/_react.default.createContext((0, _generateInstanceCounterMap.generateInstanceCounterMap)());
|
|
39
35
|
exports.DeterministicIdContext = DeterministicIdContext;
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.DeterministicIdContextProvider = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _generateInstanceCounterMap = require("./generateInstanceCounterMap");
|
|
13
|
-
|
|
14
10
|
var _DeterministicIdContext = require("./DeterministicIdContext");
|
|
15
|
-
|
|
16
11
|
/*
|
|
17
12
|
* The MIT License (MIT)
|
|
18
13
|
*
|
|
@@ -36,7 +31,9 @@ var _DeterministicIdContext = require("./DeterministicIdContext");
|
|
|
36
31
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
32
|
* SOFTWARE.
|
|
38
33
|
*/
|
|
34
|
+
|
|
39
35
|
const defaultContextValue = (0, _generateInstanceCounterMap.generateInstanceCounterMap)();
|
|
36
|
+
|
|
40
37
|
/**
|
|
41
38
|
* ---
|
|
42
39
|
* category: components/utilities
|
|
@@ -47,12 +44,11 @@ const defaultContextValue = (0, _generateInstanceCounterMap.generateInstanceCoun
|
|
|
47
44
|
|
|
48
45
|
const DeterministicIdContextProvider = _ref => {
|
|
49
46
|
let children = _ref.children,
|
|
50
|
-
|
|
47
|
+
instanceCounterMap = _ref.instanceCounterMap;
|
|
51
48
|
return /*#__PURE__*/_react.default.createElement(_DeterministicIdContext.DeterministicIdContext.Provider, {
|
|
52
49
|
value: instanceCounterMap
|
|
53
50
|
}, children);
|
|
54
51
|
};
|
|
55
|
-
|
|
56
52
|
exports.DeterministicIdContextProvider = DeterministicIdContextProvider;
|
|
57
53
|
DeterministicIdContextProvider.defaultProps = {
|
|
58
54
|
instanceCounterMap: defaultContextValue
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.generateInstanceCounterMap = generateInstanceCounterMap;
|
|
8
|
-
|
|
9
8
|
/*
|
|
10
9
|
* The MIT License (MIT)
|
|
11
10
|
*
|
|
@@ -29,9 +28,9 @@ exports.generateInstanceCounterMap = generateInstanceCounterMap;
|
|
|
29
28
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
30
29
|
* SOFTWARE.
|
|
31
30
|
*/
|
|
31
|
+
|
|
32
32
|
function generateInstanceCounterMap() {
|
|
33
33
|
return new Map();
|
|
34
34
|
}
|
|
35
|
-
|
|
36
35
|
var _default = generateInstanceCounterMap;
|
|
37
36
|
exports.default = _default;
|
|
@@ -27,11 +27,7 @@ Object.defineProperty(exports, "withDeterministicId", {
|
|
|
27
27
|
return _withDeterministicId.withDeterministicId;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
|
|
31
30
|
var _generateInstanceCounterMap = require("./generateInstanceCounterMap");
|
|
32
|
-
|
|
33
31
|
var _DeterministicIdContextProvider = require("./DeterministicIdContextProvider");
|
|
34
|
-
|
|
35
32
|
var _DeterministicIdContext = require("./DeterministicIdContext");
|
|
36
|
-
|
|
37
33
|
var _withDeterministicId = require("./withDeterministicId");
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.withDeterministicId = exports.default = void 0;
|
|
11
|
-
|
|
12
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
|
|
14
10
|
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
|
|
15
|
-
|
|
16
11
|
var _DeterministicIdContext = require("./DeterministicIdContext");
|
|
17
|
-
|
|
18
12
|
var _decorator = require("@instructure/ui-decorator/lib/decorator.js");
|
|
19
|
-
|
|
20
13
|
var _generateId = require("@instructure/ui-utils/lib/generateId.js");
|
|
21
|
-
|
|
22
14
|
var _console = require("@instructure/console");
|
|
23
|
-
|
|
24
15
|
/*
|
|
25
16
|
* The MIT License (MIT)
|
|
26
17
|
*
|
|
@@ -57,35 +48,32 @@ const withDeterministicId = (0, _decorator.decorator)(ComposedComponent => {
|
|
|
57
48
|
const WithDeterministicId = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
58
49
|
const componentName = ComposedComponent.componentId || ComposedComponent.displayName || ComposedComponent.name;
|
|
59
50
|
const instanceCounterMap = (0, _react.useContext)(_DeterministicIdContext.DeterministicIdContext);
|
|
60
|
-
|
|
61
51
|
const deterministicId = function () {
|
|
62
52
|
let instanceName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : componentName;
|
|
63
53
|
return (0, _generateId.generateId)(instanceName, instanceCounterMap);
|
|
64
54
|
};
|
|
65
|
-
|
|
66
55
|
if (props.deterministicId) {
|
|
67
56
|
(0, _console.warn)(false, `Manually passing the "deterministicId" property is not allowed on the ${componentName} component.\n`, props.deterministicId);
|
|
68
57
|
}
|
|
69
|
-
|
|
70
58
|
return /*#__PURE__*/_react.default.createElement(ComposedComponent, Object.assign({
|
|
71
59
|
ref: ref,
|
|
72
60
|
deterministicId: deterministicId
|
|
73
61
|
}, props));
|
|
74
62
|
});
|
|
75
|
-
(0, _hoistNonReactStatics.default)(WithDeterministicId, ComposedComponent);
|
|
63
|
+
(0, _hoistNonReactStatics.default)(WithDeterministicId, ComposedComponent);
|
|
64
|
+
|
|
65
|
+
// we have to pass these on, because sometimes users
|
|
76
66
|
// access propTypes of the component in other components
|
|
77
67
|
// eslint-disable-next-line react/forbid-foreign-prop-types
|
|
78
|
-
|
|
79
68
|
WithDeterministicId.propTypes = ComposedComponent.propTypes;
|
|
80
|
-
WithDeterministicId.defaultProps = ComposedComponent.defaultProps;
|
|
81
|
-
//@ts-expect-error fix this
|
|
69
|
+
WithDeterministicId.defaultProps = ComposedComponent.defaultProps;
|
|
82
70
|
|
|
71
|
+
// These static fields exist on InstUI components
|
|
72
|
+
//@ts-expect-error fix this
|
|
83
73
|
WithDeterministicId.allowedProps = ComposedComponent.allowedProps;
|
|
84
|
-
|
|
85
74
|
if (process.env.NODE_ENV !== 'production') {
|
|
86
75
|
WithDeterministicId.displayName = `WithDeterministicId(${ComposedComponent.displayName})`;
|
|
87
76
|
}
|
|
88
|
-
|
|
89
77
|
return WithDeterministicId;
|
|
90
78
|
});
|
|
91
79
|
exports.withDeterministicId = withDeterministicId;
|
package/lib/callRenderProp.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.callRenderProp = callRenderProp;
|
|
9
8
|
exports.default = void 0;
|
|
10
|
-
|
|
11
9
|
var _react = _interopRequireDefault(require("react"));
|
|
12
|
-
|
|
13
10
|
/*
|
|
14
11
|
* The MIT License (MIT)
|
|
15
12
|
*
|
|
@@ -45,7 +42,6 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
45
42
|
*/
|
|
46
43
|
function callRenderProp(value) {
|
|
47
44
|
let props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
48
|
-
|
|
49
45
|
if (typeof value === 'function') {
|
|
50
46
|
// In react 16, `createElement` accepts a function. In react 15 we get an
|
|
51
47
|
// error on rendering the result. Evaluate the function here if it is not a
|
|
@@ -53,14 +49,11 @@ function callRenderProp(value) {
|
|
|
53
49
|
// fat arrow functions don't have a prototype
|
|
54
50
|
if (!(value.prototype && value.prototype.isReactComponent)) {
|
|
55
51
|
return value(props);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
}
|
|
53
|
+
// TODO type 'value' properly
|
|
59
54
|
return /*#__PURE__*/_react.default.createElement(value, props);
|
|
60
55
|
}
|
|
61
|
-
|
|
62
56
|
return value;
|
|
63
57
|
}
|
|
64
|
-
|
|
65
58
|
var _default = callRenderProp;
|
|
66
59
|
exports.default = _default;
|
package/lib/deprecated.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.deprecated = exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _decorator = require("@instructure/ui-decorator/lib/decorator.js");
|
|
9
|
-
|
|
10
8
|
var _console = require("@instructure/console");
|
|
11
|
-
|
|
12
9
|
/*
|
|
13
10
|
* The MIT License (MIT)
|
|
14
11
|
*
|
|
@@ -32,27 +29,21 @@ var _console = require("@instructure/console");
|
|
|
32
29
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
33
30
|
* SOFTWARE.
|
|
34
31
|
*/
|
|
32
|
+
|
|
35
33
|
const deprecated = (() => {
|
|
36
34
|
if (process.env.NODE_ENV === 'production') {
|
|
37
35
|
const deprecated = function () {
|
|
38
36
|
return ComposedComponent => ComposedComponent;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
};
|
|
38
|
+
// eslint-disable-next-line react/display-name
|
|
42
39
|
deprecated.deprecatePropValues = () => () => null;
|
|
43
|
-
|
|
44
40
|
deprecated.warnDeprecatedProps = () => {};
|
|
45
|
-
|
|
46
41
|
deprecated.warnDeprecatedComponent = () => {};
|
|
47
|
-
|
|
48
42
|
deprecated.changedPackageWarning = () => '';
|
|
49
|
-
|
|
50
43
|
return deprecated;
|
|
51
44
|
}
|
|
52
|
-
|
|
53
45
|
const deprecated = (0, _decorator.decorator)(function (ComposedComponent, version, oldProps) {
|
|
54
46
|
let message = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : '';
|
|
55
|
-
|
|
56
47
|
/**
|
|
57
48
|
* ---
|
|
58
49
|
* category: utilities/react
|
|
@@ -79,31 +70,26 @@ const deprecated = (() => {
|
|
|
79
70
|
* @module deprecated
|
|
80
71
|
*/
|
|
81
72
|
class DeprecatedComponent extends ComposedComponent {}
|
|
82
|
-
|
|
83
73
|
DeprecatedComponent.prototype.componentDidMount = function () {
|
|
84
74
|
if (oldProps) {
|
|
85
75
|
warnDeprecatedProps(ComposedComponent.name, version, this.props, oldProps, message);
|
|
86
76
|
} else {
|
|
87
77
|
warnDeprecatedComponent(version, ComposedComponent.name, message);
|
|
88
78
|
}
|
|
89
|
-
|
|
90
79
|
if (ComposedComponent.prototype.componentDidMount) {
|
|
91
80
|
ComposedComponent.prototype.componentDidMount.call(this);
|
|
92
81
|
}
|
|
93
82
|
};
|
|
94
|
-
|
|
95
83
|
DeprecatedComponent.prototype.componentDidUpdate = function (prevProps, prevState, prevContext) {
|
|
96
84
|
if (oldProps) {
|
|
97
85
|
warnDeprecatedProps(ComposedComponent.name, version, this.props, oldProps, message);
|
|
98
86
|
} else {
|
|
99
87
|
warnDeprecatedComponent(version, ComposedComponent.name, message);
|
|
100
88
|
}
|
|
101
|
-
|
|
102
89
|
if (ComposedComponent.prototype.componentDidUpdate) {
|
|
103
90
|
ComposedComponent.prototype.componentDidUpdate.call(this, prevProps, prevState, prevContext);
|
|
104
91
|
}
|
|
105
92
|
};
|
|
106
|
-
|
|
107
93
|
return DeprecatedComponent;
|
|
108
94
|
})
|
|
109
95
|
/**
|
|
@@ -115,9 +101,7 @@ const deprecated = (() => {
|
|
|
115
101
|
* @param {function} propType - validates the prop type. Returns null if valid, error otherwise
|
|
116
102
|
* @param {array} deprecated - an array of the deprecated variant names
|
|
117
103
|
* @param {string|function} message - a string with additional information (like the version the prop will be removed) or a function returning a string
|
|
118
|
-
|
|
119
|
-
;
|
|
120
|
-
|
|
104
|
+
*/;
|
|
121
105
|
deprecated.deprecatePropValues = function (propType) {
|
|
122
106
|
let deprecated = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
|
|
123
107
|
let message = arguments.length > 2 ? arguments[2] : void 0;
|
|
@@ -129,15 +113,12 @@ const deprecated = (() => {
|
|
|
129
113
|
propValue: props[propName]
|
|
130
114
|
}) : `The '${props[propName]}' value for the \`${propName}\` prop is deprecated. ${message || ''}`;
|
|
131
115
|
(0, _console.logWarnDeprecated)(!isDeprecatedValue, `[${componentName}] ${warningMessage}`);
|
|
132
|
-
|
|
133
116
|
for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
|
|
134
117
|
rest[_key - 3] = arguments[_key];
|
|
135
118
|
}
|
|
136
|
-
|
|
137
119
|
return isDeprecatedValue ? null : propType(props, propName, componentName, ...rest);
|
|
138
120
|
};
|
|
139
121
|
};
|
|
140
|
-
|
|
141
122
|
function warnDeprecatedProps(componentName, version, props, oldProps) {
|
|
142
123
|
let message = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : '';
|
|
143
124
|
Object.keys(oldProps).forEach(oldProp => {
|
|
@@ -148,10 +129,8 @@ const deprecated = (() => {
|
|
|
148
129
|
}
|
|
149
130
|
});
|
|
150
131
|
}
|
|
151
|
-
|
|
152
132
|
;
|
|
153
133
|
deprecated.warnDeprecatedProps = warnDeprecatedProps;
|
|
154
|
-
|
|
155
134
|
function warnDeprecatedComponent(version, componentName, message) {
|
|
156
135
|
(0, _console.logWarnDeprecated)(false, `[${componentName}] is deprecated and will be removed in version ${version}. ${message || ''}`);
|
|
157
136
|
}
|
|
@@ -163,10 +142,9 @@ const deprecated = (() => {
|
|
|
163
142
|
* @param {String} componentName the name of the component or Function.name of the utility function
|
|
164
143
|
* @param {String} message a message to display as a console error in DEV env when condition is false
|
|
165
144
|
*/
|
|
166
|
-
|
|
167
|
-
|
|
168
145
|
;
|
|
169
146
|
deprecated.warnDeprecatedComponent = warnDeprecatedComponent
|
|
147
|
+
|
|
170
148
|
/**
|
|
171
149
|
* ---
|
|
172
150
|
* category: utilities
|
|
@@ -174,16 +152,12 @@ const deprecated = (() => {
|
|
|
174
152
|
* @param {String} prevPackage the previous name of the package
|
|
175
153
|
* @param {String} newPackage the new version of the package
|
|
176
154
|
* @return {String} the formatted warning string
|
|
177
|
-
|
|
178
|
-
;
|
|
179
|
-
|
|
155
|
+
*/;
|
|
180
156
|
deprecated.changedPackageWarning = (prevPackage, newPackage) => {
|
|
181
157
|
return `It has been moved from @instructure/${prevPackage} to @instructure/${newPackage}.`;
|
|
182
158
|
};
|
|
183
|
-
|
|
184
159
|
return deprecated;
|
|
185
160
|
})();
|
|
186
|
-
|
|
187
161
|
exports.deprecated = deprecated;
|
|
188
162
|
var _default = deprecated;
|
|
189
163
|
exports.default = _default;
|
package/lib/ensureSingleChild.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
8
|
exports.ensureSingleChild = ensureSingleChild;
|
|
10
|
-
|
|
11
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
|
|
13
10
|
var _safeCloneElement = require("./safeCloneElement");
|
|
14
|
-
|
|
15
11
|
/*
|
|
16
12
|
* The MIT License (MIT)
|
|
17
13
|
*
|
|
@@ -52,9 +48,7 @@ var _safeCloneElement = require("./safeCloneElement");
|
|
|
52
48
|
*/
|
|
53
49
|
function ensureSingleChild(child) {
|
|
54
50
|
let props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
55
|
-
|
|
56
51
|
const childCount = _react.Children.count(child);
|
|
57
|
-
|
|
58
52
|
if (childCount === 0) {
|
|
59
53
|
return null;
|
|
60
54
|
} else if (typeof child === 'string' && child.length > 0 || childCount > 1) {
|
|
@@ -64,6 +58,5 @@ function ensureSingleChild(child) {
|
|
|
64
58
|
return (0, _safeCloneElement.safeCloneElement)(Array.isArray(child) ? child[0] : child, props);
|
|
65
59
|
}
|
|
66
60
|
}
|
|
67
|
-
|
|
68
61
|
var _default = ensureSingleChild;
|
|
69
62
|
exports.default = _default;
|
package/lib/experimental.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.experimental = exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _decorator = require("@instructure/ui-decorator/lib/decorator.js");
|
|
9
|
-
|
|
10
8
|
var _console = require("@instructure/console");
|
|
11
|
-
|
|
12
9
|
/*
|
|
13
10
|
* The MIT License (MIT)
|
|
14
11
|
*
|
|
@@ -32,6 +29,7 @@ var _console = require("@instructure/console");
|
|
|
32
29
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
33
30
|
* SOFTWARE.
|
|
34
31
|
*/
|
|
32
|
+
|
|
35
33
|
const experimental = process.env.NODE_ENV == 'production' ? () => ReactComponent => ReactComponent : (0, _decorator.decorator)((ComposedComponent, experimentalProps, message) => {
|
|
36
34
|
return class ExperimentalComponent extends ComposedComponent {
|
|
37
35
|
componentDidMount() {
|
|
@@ -42,12 +40,10 @@ const experimental = process.env.NODE_ENV == 'production' ? () => ReactComponent
|
|
|
42
40
|
warnExperimentalComponent(ComposedComponent.name, message);
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
|
-
|
|
46
43
|
if (super.componentDidMount) {
|
|
47
44
|
super.componentDidMount();
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
|
-
|
|
51
47
|
componentDidUpdate(prevProps, prevState, prevContext) {
|
|
52
48
|
if (!this.props.__dangerouslyIgnoreExperimentalWarnings) {
|
|
53
49
|
if (experimentalProps) {
|
|
@@ -56,27 +52,22 @@ const experimental = process.env.NODE_ENV == 'production' ? () => ReactComponent
|
|
|
56
52
|
warnExperimentalComponent(ComposedComponent.name, message);
|
|
57
53
|
}
|
|
58
54
|
}
|
|
59
|
-
|
|
60
55
|
if (super.componentDidUpdate) {
|
|
61
56
|
super.componentDidUpdate(prevProps, prevState, prevContext);
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
|
-
|
|
65
59
|
};
|
|
66
60
|
});
|
|
67
61
|
exports.experimental = experimental;
|
|
68
|
-
|
|
69
62
|
function warnExperimentalProps(name, props, experimentalProps) {
|
|
70
63
|
let message = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : '';
|
|
71
64
|
experimentalProps.forEach(experimentalProp => {
|
|
72
65
|
(0, _console.logWarn)(typeof props[experimentalProp] === 'undefined', `[${name}] The \`${experimentalProp}\` prop is experimental and its API could change significantly in a future release. ${message}`);
|
|
73
66
|
});
|
|
74
67
|
}
|
|
75
|
-
|
|
76
68
|
function warnExperimentalComponent(name) {
|
|
77
69
|
let message = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '';
|
|
78
70
|
(0, _console.logWarn)(false, `[${name}] is experimental and its API could change significantly in a future release. ${message}`);
|
|
79
71
|
}
|
|
80
|
-
|
|
81
72
|
var _default = experimental;
|
|
82
73
|
exports.default = _default;
|
package/lib/getDisplayName.js
CHANGED
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.getDisplayName = getDisplayName;
|
|
8
|
-
|
|
9
8
|
/*
|
|
10
9
|
* The MIT License (MIT)
|
|
11
10
|
*
|
|
@@ -43,6 +42,5 @@ exports.getDisplayName = getDisplayName;
|
|
|
43
42
|
function getDisplayName(ReactComponent) {
|
|
44
43
|
return typeof ReactComponent === 'string' ? ReactComponent : ReactComponent.displayName || ReactComponent.name;
|
|
45
44
|
}
|
|
46
|
-
|
|
47
45
|
var _default = getDisplayName;
|
|
48
46
|
exports.default = _default;
|