1 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
2 |
|
3 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | var _object = require('object.assign');
|
10 |
|
11 | var _object2 = _interopRequireDefault(_object);
|
12 |
|
13 | var _react = require('react');
|
14 |
|
15 | var _react2 = _interopRequireDefault(_react);
|
16 |
|
17 | var _reactDom = require('react-dom');
|
18 |
|
19 | var _reactDom2 = _interopRequireDefault(_reactDom);
|
20 |
|
21 | var _server = require('react-dom/server');
|
22 |
|
23 | var _server2 = _interopRequireDefault(_server);
|
24 |
|
25 | var _reactAddonsTestUtils = require('react-addons-test-utils');
|
26 |
|
27 | var _reactAddonsTestUtils2 = _interopRequireDefault(_reactAddonsTestUtils);
|
28 |
|
29 | var _object3 = require('object.values');
|
30 |
|
31 | var _object4 = _interopRequireDefault(_object3);
|
32 |
|
33 | var _enzyme = require('enzyme');
|
34 |
|
35 | var _enzymeAdapterUtils = require('enzyme-adapter-utils');
|
36 |
|
37 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
38 |
|
39 | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
40 |
|
41 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
42 |
|
43 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
44 |
|
45 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
46 |
|
47 | function typeToNodeType(type) {
|
48 | if (typeof type === 'function') {
|
49 | if (typeof type.prototype.render === 'function') {
|
50 | return 'class';
|
51 | }
|
52 | return 'function';
|
53 | }
|
54 | return 'host';
|
55 | }
|
56 |
|
57 | function instanceToTree(inst) {
|
58 | if (!inst || (typeof inst === 'undefined' ? 'undefined' : _typeof(inst)) !== 'object') {
|
59 | return inst;
|
60 | }
|
61 | var el = inst._currentElement;
|
62 | if (!el) {
|
63 | return null;
|
64 | }
|
65 | if ((typeof el === 'undefined' ? 'undefined' : _typeof(el)) !== 'object') {
|
66 | return el;
|
67 | }
|
68 | if (inst._tag) {
|
69 | if ((typeof el === 'undefined' ? 'undefined' : _typeof(el)) !== 'object') {
|
70 | return el;
|
71 | }
|
72 | var children = inst._renderedChildren || { '.0': el.props.children };
|
73 | return {
|
74 | nodeType: 'host',
|
75 | type: el.type,
|
76 | props: el.props,
|
77 | key: el.key,
|
78 | ref: el.ref,
|
79 | instance: _reactDom2['default'].findDOMNode(inst.getPublicInstance()) || null,
|
80 | rendered: (0, _object4['default'])(children).map(instanceToTree)
|
81 | };
|
82 | }
|
83 | if (inst._renderedComponent) {
|
84 | return {
|
85 | nodeType: typeToNodeType(el.type),
|
86 | type: el.type,
|
87 | props: el.props,
|
88 | key: el.key,
|
89 | ref: el.ref,
|
90 | instance: inst._instance || null,
|
91 | rendered: instanceToTree(inst._renderedComponent)
|
92 | };
|
93 | }
|
94 | throw new Error('Enzyme Internal Error: unknown instance encountered');
|
95 | }
|
96 |
|
97 | var ReactFifteenAdapter = function (_EnzymeAdapter) {
|
98 | _inherits(ReactFifteenAdapter, _EnzymeAdapter);
|
99 |
|
100 | function ReactFifteenAdapter() {
|
101 | _classCallCheck(this, ReactFifteenAdapter);
|
102 |
|
103 | var _this = _possibleConstructorReturn(this, (ReactFifteenAdapter.__proto__ || Object.getPrototypeOf(ReactFifteenAdapter)).call(this));
|
104 |
|
105 | _this.options = (0, _object2['default'])({}, _this.options, {
|
106 | supportPrevContextArgumentOfComponentDidUpdate: true
|
107 | });
|
108 | return _this;
|
109 | }
|
110 |
|
111 | _createClass(ReactFifteenAdapter, [{
|
112 | key: 'createMountRenderer',
|
113 | value: function () {
|
114 | function createMountRenderer(options) {
|
115 | (0, _enzymeAdapterUtils.assertDomAvailable)('mount');
|
116 | var domNode = options.attachTo || global.document.createElement('div');
|
117 | var instance = null;
|
118 | return {
|
119 | render: function () {
|
120 | function render(el, context, callback) {
|
121 | if (instance === null) {
|
122 | var ReactWrapperComponent = (0, _enzymeAdapterUtils.createMountWrapper)(el, options);
|
123 | var wrappedEl = _react2['default'].createElement(ReactWrapperComponent, {
|
124 | Component: el.type,
|
125 | props: el.props,
|
126 | context: context
|
127 | });
|
128 | instance = _reactDom2['default'].render(wrappedEl, domNode);
|
129 | if (typeof callback === 'function') {
|
130 | callback();
|
131 | }
|
132 | } else {
|
133 | instance.setChildProps(el.props, context, callback);
|
134 | }
|
135 | }
|
136 |
|
137 | return render;
|
138 | }(),
|
139 | unmount: function () {
|
140 | function unmount() {
|
141 | _reactDom2['default'].unmountComponentAtNode(domNode);
|
142 | instance = null;
|
143 | }
|
144 |
|
145 | return unmount;
|
146 | }(),
|
147 | getNode: function () {
|
148 | function getNode() {
|
149 | return instance ? instanceToTree(instance._reactInternalInstance).rendered : null;
|
150 | }
|
151 |
|
152 | return getNode;
|
153 | }(),
|
154 | simulateEvent: function () {
|
155 | function simulateEvent(node, event, mock) {
|
156 | var mappedEvent = (0, _enzymeAdapterUtils.mapNativeEventNames)(event);
|
157 | var eventFn = _reactAddonsTestUtils2['default'].Simulate[mappedEvent];
|
158 | if (!eventFn) {
|
159 | throw new TypeError('ReactWrapper::simulate() event \'' + String(event) + '\' does not exist');
|
160 | }
|
161 |
|
162 | eventFn(_reactDom2['default'].findDOMNode(node.instance), mock);
|
163 | }
|
164 |
|
165 | return simulateEvent;
|
166 | }(),
|
167 | batchedUpdates: function () {
|
168 | function batchedUpdates(fn) {
|
169 | return _reactDom2['default'].unstable_batchedUpdates(fn);
|
170 | }
|
171 |
|
172 | return batchedUpdates;
|
173 | }()
|
174 | };
|
175 | }
|
176 |
|
177 | return createMountRenderer;
|
178 | }()
|
179 | }, {
|
180 | key: 'createShallowRenderer',
|
181 | value: function () {
|
182 | function createShallowRenderer() /* options */{
|
183 | var renderer = _reactAddonsTestUtils2['default'].createRenderer();
|
184 | var isDOM = false;
|
185 | var cachedNode = null;
|
186 | return {
|
187 | render: function () {
|
188 | function render(el, context) {
|
189 | cachedNode = el;
|
190 |
|
191 | if (typeof el.type === 'string') {
|
192 | isDOM = true;
|
193 | } else {
|
194 | isDOM = false;
|
195 | return (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
196 | return renderer.render(el, context);
|
197 | });
|
198 | }
|
199 | }
|
200 |
|
201 | return render;
|
202 | }(),
|
203 | unmount: function () {
|
204 | function unmount() {
|
205 | renderer.unmount();
|
206 | }
|
207 |
|
208 | return unmount;
|
209 | }(),
|
210 | getNode: function () {
|
211 | function getNode() {
|
212 | if (isDOM) {
|
213 | return (0, _enzymeAdapterUtils.elementToTree)(cachedNode);
|
214 | }
|
215 | var output = renderer.getRenderOutput();
|
216 | return {
|
217 | nodeType: typeToNodeType(cachedNode.type),
|
218 | type: cachedNode.type,
|
219 | props: cachedNode.props,
|
220 | key: cachedNode.key,
|
221 | ref: cachedNode.ref,
|
222 | instance: renderer._instance._instance,
|
223 | rendered: (0, _enzymeAdapterUtils.elementToTree)(output)
|
224 | };
|
225 | }
|
226 |
|
227 | return getNode;
|
228 | }(),
|
229 | simulateEvent: function () {
|
230 | function simulateEvent(node, event) {
|
231 | for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
232 | args[_key - 2] = arguments[_key];
|
233 | }
|
234 |
|
235 | var handler = node.props[(0, _enzymeAdapterUtils.propFromEvent)(event)];
|
236 | if (handler) {
|
237 | (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
238 |
|
239 |
|
240 | _reactDom2['default'].unstable_batchedUpdates(function () {
|
241 | handler.apply(undefined, _toConsumableArray(args));
|
242 | });
|
243 | });
|
244 | }
|
245 | }
|
246 |
|
247 | return simulateEvent;
|
248 | }(),
|
249 | batchedUpdates: function () {
|
250 | function batchedUpdates(fn) {
|
251 | return (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
252 | return _reactDom2['default'].unstable_batchedUpdates(fn);
|
253 | });
|
254 | }
|
255 |
|
256 | return batchedUpdates;
|
257 | }()
|
258 | };
|
259 | }
|
260 |
|
261 | return createShallowRenderer;
|
262 | }()
|
263 | }, {
|
264 | key: 'createStringRenderer',
|
265 | value: function () {
|
266 | function createStringRenderer(options) {
|
267 | return {
|
268 | render: function () {
|
269 | function render(el, context) {
|
270 | if (options.context && (el.type.contextTypes || options.childContextTypes)) {
|
271 | var childContextTypes = (0, _object2['default'])({}, el.type.contextTypes || {}, options.childContextTypes);
|
272 | var ContextWrapper = (0, _enzymeAdapterUtils.createRenderWrapper)(el, context, childContextTypes);
|
273 | return _server2['default'].renderToStaticMarkup(_react2['default'].createElement(ContextWrapper));
|
274 | }
|
275 | return _server2['default'].renderToStaticMarkup(el);
|
276 | }
|
277 |
|
278 | return render;
|
279 | }()
|
280 | };
|
281 | }
|
282 |
|
283 | return createStringRenderer;
|
284 | }()
|
285 |
|
286 |
|
287 |
|
288 |
|
289 |
|
290 | }, {
|
291 | key: 'createRenderer',
|
292 | value: function () {
|
293 | function createRenderer(options) {
|
294 | switch (options.mode) {
|
295 | case _enzyme.EnzymeAdapter.MODES.MOUNT:
|
296 | return this.createMountRenderer(options);
|
297 | case _enzyme.EnzymeAdapter.MODES.SHALLOW:
|
298 | return this.createShallowRenderer(options);
|
299 | case _enzyme.EnzymeAdapter.MODES.STRING:
|
300 | return this.createStringRenderer(options);
|
301 | default:
|
302 | throw new Error('Enzyme Internal Error: Unrecognized mode: ' + String(options.mode));
|
303 | }
|
304 | }
|
305 |
|
306 | return createRenderer;
|
307 | }()
|
308 |
|
309 |
|
310 |
|
311 |
|
312 |
|
313 |
|
314 | }, {
|
315 | key: 'nodeToElement',
|
316 | value: function () {
|
317 | function nodeToElement(node) {
|
318 | if (!node || (typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') return null;
|
319 | return _react2['default'].createElement(node.type, (0, _enzymeAdapterUtils.propsWithKeysAndRef)(node));
|
320 | }
|
321 |
|
322 | return nodeToElement;
|
323 | }()
|
324 | }, {
|
325 | key: 'elementToNode',
|
326 | value: function () {
|
327 | function elementToNode(element) {
|
328 | return (0, _enzymeAdapterUtils.elementToTree)(element);
|
329 | }
|
330 |
|
331 | return elementToNode;
|
332 | }()
|
333 | }, {
|
334 | key: 'nodeToHostNode',
|
335 | value: function () {
|
336 | function nodeToHostNode(node) {
|
337 | return _reactDom2['default'].findDOMNode(node.instance);
|
338 | }
|
339 |
|
340 | return nodeToHostNode;
|
341 | }()
|
342 | }, {
|
343 | key: 'isValidElement',
|
344 | value: function () {
|
345 | function isValidElement(element) {
|
346 | return _react2['default'].isValidElement(element);
|
347 | }
|
348 |
|
349 | return isValidElement;
|
350 | }()
|
351 | }, {
|
352 | key: 'createElement',
|
353 | value: function () {
|
354 | function createElement() {
|
355 | return _react2['default'].createElement.apply(_react2['default'], arguments);
|
356 | }
|
357 |
|
358 | return createElement;
|
359 | }()
|
360 | }]);
|
361 |
|
362 | return ReactFifteenAdapter;
|
363 | }(_enzyme.EnzymeAdapter);
|
364 |
|
365 | module.exports = ReactFifteenAdapter; |
\ | No newline at end of file |