1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _omitBy = _interopRequireDefault(require("lodash/omitBy"));
|
9 |
|
10 | var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
11 |
|
12 | var _reactIs = require("react-is");
|
13 |
|
14 | var _RSTTraversal = require("enzyme/build/RSTTraversal");
|
15 |
|
16 | var _utils = require("./utils");
|
17 |
|
18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19 |
|
20 | function getChildren(node, options) {
|
21 | const children = (0, _utils.compact)((0, _RSTTraversal.childrenOfNode)(node).map(n => internalNodeToJson(n, options)));
|
22 |
|
23 | if (children.length > 0) {
|
24 | return children;
|
25 | }
|
26 |
|
27 | return null;
|
28 | }
|
29 |
|
30 | function getProps(node, options) {
|
31 | const props = (0, _omitBy.default)(Object.assign({}, (0, _RSTTraversal.propsOfNode)(node)), (val, key) => {
|
32 | if (key === 'children' || val === undefined) {
|
33 | return true;
|
34 | }
|
35 |
|
36 | if (options.ignoreDefaultProps === true && (0, _reactIs.isValidElementType)(node.type) && node.type.defaultProps && key in node.type.defaultProps && node.type.defaultProps[key] === val) {
|
37 | return true;
|
38 | }
|
39 | });
|
40 |
|
41 | if (!(0, _isNil.default)(node.key) && options.noKey !== true) {
|
42 | props.key = node.key;
|
43 | }
|
44 |
|
45 | return props;
|
46 | }
|
47 |
|
48 | function internalNodeToJson(node, options) {
|
49 | if (typeof node === 'string' || typeof node === 'number') {
|
50 | return node;
|
51 | }
|
52 |
|
53 | if ((0, _isNil.default)(node) || node === false) {
|
54 | return '';
|
55 | }
|
56 |
|
57 | const json = (0, _utils.applyMap)({
|
58 | node,
|
59 | type: (0, _utils.extractTypeName)(node),
|
60 | props: getProps(node, options),
|
61 | children: getChildren(node, options),
|
62 | $$typeof: Symbol.for('react.test.json')
|
63 | }, options);
|
64 |
|
65 | if (!(0, _isNil.default)(json) && !(0, _isNil.default)(json.type)) {
|
66 | return json;
|
67 | }
|
68 | }
|
69 |
|
70 | const shallowToJson = (wrapper, options = {}) => {
|
71 | if ((0, _isNil.default)(wrapper) || wrapper.length === 0) {
|
72 | return null;
|
73 | }
|
74 |
|
75 | if (wrapper.length > 1 && typeof wrapper.getNodesInternal === 'function') {
|
76 | const nodes = wrapper.getNodesInternal();
|
77 | return nodes.map(node => internalNodeToJson(node, options));
|
78 | }
|
79 |
|
80 | if (typeof wrapper.getNodeInternal === 'function') {
|
81 | const node = wrapper.getNodeInternal();
|
82 | return internalNodeToJson(node, options);
|
83 | }
|
84 |
|
85 | return null;
|
86 | };
|
87 |
|
88 | var _default = shallowToJson;
|
89 | exports.default = _default; |
\ | No newline at end of file |