1 | module.exports =
|
2 | (function(modules) {
|
3 |
|
4 | var installedModules = {};
|
5 |
|
6 |
|
7 | function __webpack_require__(moduleId) {
|
8 |
|
9 |
|
10 | if(installedModules[moduleId]) {
|
11 | return installedModules[moduleId].exports;
|
12 | }
|
13 |
|
14 | var module = installedModules[moduleId] = {
|
15 | i: moduleId,
|
16 | l: false,
|
17 | exports: {}
|
18 | };
|
19 |
|
20 |
|
21 | modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
22 |
|
23 |
|
24 | module.l = true;
|
25 |
|
26 |
|
27 | return module.exports;
|
28 | }
|
29 |
|
30 |
|
31 |
|
32 | __webpack_require__.m = modules;
|
33 |
|
34 |
|
35 | __webpack_require__.c = installedModules;
|
36 |
|
37 |
|
38 | __webpack_require__.i = function(value) { return value; };
|
39 |
|
40 |
|
41 | __webpack_require__.d = function(exports, name, getter) {
|
42 | if(!__webpack_require__.o(exports, name)) {
|
43 | Object.defineProperty(exports, name, {
|
44 | configurable: false,
|
45 | enumerable: true,
|
46 | get: getter
|
47 | /******/ });
|
48 | /******/ }
|
49 | /******/ };
|
50 | /******/
|
51 | /******/ // getDefaultExport function for compatibility with non-harmony modules
|
52 | /******/ __webpack_require__.n = function(module) {
|
53 | var getter = module && module.__esModule ?
|
54 | function getDefault() { return module['default']; } :
|
55 | function getModuleExports() { return module; };
|
56 | __webpack_require__.d(getter, 'a', getter);
|
57 | return getter;
|
58 | };
|
59 |
|
60 |
|
61 | __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
62 |
|
63 |
|
64 | __webpack_require__.p = "";
|
65 |
|
66 |
|
67 | return __webpack_require__(__webpack_require__.s = 8);
|
68 | })
|
69 |
|
70 | ([
|
71 |
|
72 | (function(module, exports) {
|
73 |
|
74 | module.exports = require("babel-runtime/helpers/objectWithoutProperties");
|
75 |
|
76 | }),
|
77 |
|
78 | (function(module, exports) {
|
79 |
|
80 | module.exports = require("babel-runtime/helpers/toConsumableArray");
|
81 |
|
82 | }),
|
83 |
|
84 | (function(module, exports) {
|
85 |
|
86 | module.exports = require("ejson");
|
87 |
|
88 | }),
|
89 |
|
90 | (function(module, exports) {
|
91 |
|
92 | module.exports = require("react");
|
93 |
|
94 | }),
|
95 |
|
96 | (function(module, exports, __webpack_require__) {
|
97 |
|
98 | "use strict";
|
99 |
|
100 |
|
101 | Object.defineProperty(exports, "__esModule", {
|
102 | value: true
|
103 | });
|
104 |
|
105 | var _objectWithoutProperties2 = __webpack_require__(0);
|
106 |
|
107 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
108 |
|
109 | var _toConsumableArray2 = __webpack_require__(1);
|
110 |
|
111 | var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
|
112 |
|
113 | var _extends2 = __webpack_require__(12);
|
114 |
|
115 | var _extends3 = _interopRequireDefault(_extends2);
|
116 |
|
117 | exports.default = configure;
|
118 |
|
119 | var _react = __webpack_require__(3);
|
120 |
|
121 | var _react2 = _interopRequireDefault(_react);
|
122 |
|
123 | var _reactDom = __webpack_require__(14);
|
124 |
|
125 | var _render = __webpack_require__(6);
|
126 |
|
127 | var _serialize = __webpack_require__(7);
|
128 |
|
129 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
130 |
|
131 |
|
132 | var chromaticRoot = void 0;
|
133 |
|
134 | var drawn = false;
|
135 | function drawIsolator() {
|
136 | if (drawn) {
|
137 | return;
|
138 | }
|
139 | var styles = '\n /* ensure a given element is not laid out at all */\n .' + _render.NO_LAYOUT_CLASS + ' {\n margin: 0 !important;\n padding: 0 !important;\n position: static !important;\n }\n ';
|
140 | var el = document.createElement('style');
|
141 | el.type = 'text/css';
|
142 | el.innerHTML = styles;
|
143 | document.head.appendChild(el);
|
144 |
|
145 | chromaticRoot = document.createElement('div');
|
146 |
|
147 |
|
148 | document.querySelectorAll('body > *').forEach(function (e) {
|
149 | e.style.display = 'none';
|
150 | });
|
151 |
|
152 |
|
153 | document.body.appendChild(chromaticRoot);
|
154 | drawn = true;
|
155 | }
|
156 |
|
157 | function configure(_ref) {
|
158 | var runtimes = _ref.runtimes,
|
159 | clearScreen = _ref.clearScreen;
|
160 |
|
161 | if (clearScreen) {
|
162 | drawIsolator();
|
163 | }
|
164 |
|
165 | var runtimeRenderers = {};
|
166 | runtimes.forEach(function (r) {
|
167 | runtimeRenderers[r.runtime] = r.renderSpec;
|
168 | });
|
169 |
|
170 | function runtimeSpecs() {
|
171 | return runtimes.map(function (_ref2) {
|
172 | var runtime = _ref2.runtime,
|
173 | specs = _ref2.specs;
|
174 | return specs().map(function (spec) {
|
175 | return (0, _extends3.default)({ runtime: runtime }, spec);
|
176 | });
|
177 | }).reduce(function (a, b) {
|
178 | return [].concat((0, _toConsumableArray3.default)(a), (0, _toConsumableArray3.default)(b));
|
179 | }, []);
|
180 | }
|
181 |
|
182 | function renderSpecToDom(spec) {
|
183 | drawIsolator();
|
184 |
|
185 | var parsedSpec = (0, _extends3.default)({}, spec, {
|
186 | input: typeof spec.input === 'string' ? (0, _serialize.parse)(spec.input) : spec.input
|
187 | });
|
188 |
|
189 | var element = void 0;
|
190 | if (spec.runtime) {
|
191 | var renderer = runtimeRenderers[spec.runtime];
|
192 | if (!renderer) {
|
193 | throw new Error('Didn\'t find a renderer for runtime \'' + spec.runtime + '\' -- are you sure you added it in your client configuration?');
|
194 | }
|
195 | var renderedSpec = renderer(parsedSpec);
|
196 | element = _react2.default.createElement(
|
197 | 'div',
|
198 | { className: _render.CONTAINER_CLASS },
|
199 | renderedSpec
|
200 | );
|
201 | } else {
|
202 | throw new Error('No runtime passed for spec', spec);
|
203 | }
|
204 |
|
205 | (0, _reactDom.unmountComponentAtNode)(chromaticRoot);
|
206 | (0, _reactDom.render)(element, chromaticRoot);
|
207 | }
|
208 |
|
209 |
|
210 | window.__chromaticRuntimeSpecs__ = runtimeSpecs;
|
211 |
|
212 |
|
213 | window.__renderChromaticSpec__ = renderSpecToDom;
|
214 |
|
215 | function handleMessage(_ref3) {
|
216 | var data = _ref3.data,
|
217 | source = _ref3.source,
|
218 | origin = _ref3.origin;
|
219 |
|
220 |
|
221 |
|
222 | var message = data.message,
|
223 | rest = (0, _objectWithoutProperties3.default)(data, ['message']);
|
224 |
|
225 | if (message === 'requestCapabilities') {
|
226 | source.postMessage({
|
227 | message: 'capabilities',
|
228 | service: 'chromatic-isolator',
|
229 | version: 0
|
230 | }, origin);
|
231 | } else if (message === 'renderSpec') {
|
232 | try {
|
233 | renderSpecToDom(rest.spec);
|
234 | } catch (error) {
|
235 | source.postMessage({
|
236 | message: 'renderSpecError',
|
237 | error: error.toString()
|
238 | }, origin);
|
239 |
|
240 |
|
241 | throw error;
|
242 | }
|
243 | }
|
244 | }
|
245 |
|
246 | window.addEventListener('message', handleMessage, false);
|
247 | }
|
248 |
|
249 | }),
|
250 |
|
251 | (function(module, exports, __webpack_require__) {
|
252 |
|
253 | "use strict";
|
254 |
|
255 |
|
256 | Object.defineProperty(exports, "__esModule", {
|
257 | value: true
|
258 | });
|
259 |
|
260 | var _classCallCheck2 = __webpack_require__(10);
|
261 |
|
262 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
263 |
|
264 | var _createClass2 = __webpack_require__(11);
|
265 |
|
266 | var _createClass3 = _interopRequireDefault(_createClass2);
|
267 |
|
268 | var _ejson = __webpack_require__(2);
|
269 |
|
270 | var _ejson2 = _interopRequireDefault(_ejson);
|
271 |
|
272 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
273 |
|
274 | var Callback = function () {
|
275 | function Callback(name) {
|
276 | (0, _classCallCheck3.default)(this, Callback);
|
277 |
|
278 |
|
279 | this.name = name;
|
280 | }
|
281 |
|
282 | (0, _createClass3.default)(Callback, [{
|
283 | key: 'toString',
|
284 | value: function toString() {
|
285 | return 'function ' + this.name + '()';
|
286 | }
|
287 | }, {
|
288 | key: 'toJSONValue',
|
289 | value: function toJSONValue() {
|
290 | return this.name;
|
291 | }
|
292 |
|
293 |
|
294 |
|
295 | }, {
|
296 | key: 'typeName',
|
297 | value: function typeName() {
|
298 | return 'ChromaticCallback';
|
299 | }
|
300 | }]);
|
301 | return Callback;
|
302 | }();
|
303 |
|
304 |
|
305 |
|
306 |
|
307 | exports.default = Callback;
|
308 | if (!_ejson2.default._getTypes().ChromaticCallback) {
|
309 | _ejson2.default.addType('ChromaticCallback', function (name) {
|
310 | return new Callback(name);
|
311 | });
|
312 | }
|
313 |
|
314 | }),
|
315 |
|
316 | (function(module, exports, __webpack_require__) {
|
317 |
|
318 | "use strict";
|
319 |
|
320 |
|
321 | Object.defineProperty(exports, "__esModule", {
|
322 | value: true
|
323 | });
|
324 | exports.CONTAINER_CLASS = exports.NO_LAYOUT_CLASS = undefined;
|
325 |
|
326 | var _toConsumableArray2 = __webpack_require__(1);
|
327 |
|
328 | var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
|
329 |
|
330 | var _keys = __webpack_require__(9);
|
331 |
|
332 | var _keys2 = _interopRequireDefault(_keys);
|
333 |
|
334 | var _objectWithoutProperties2 = __webpack_require__(0);
|
335 |
|
336 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
337 |
|
338 | var _typeof2 = __webpack_require__(13);
|
339 |
|
340 | var _typeof3 = _interopRequireDefault(_typeof2);
|
341 |
|
342 | exports.default = renderSpec;
|
343 |
|
344 | var _react = __webpack_require__(3);
|
345 |
|
346 | var _react2 = _interopRequireDefault(_react);
|
347 |
|
348 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
349 |
|
350 | var NO_LAYOUT_CLASS = exports.NO_LAYOUT_CLASS = '__chromatic__no_layout';
|
351 |
|
352 |
|
353 |
|
354 |
|
355 |
|
356 | var CONTAINER_CLASS = exports.CONTAINER_CLASS = '__chromatic_rendered_spec_container';
|
357 |
|
358 |
|
359 | var defaultAncestors = [{ name: 'div' }];
|
360 |
|
361 | var defaultDimensions = { width: '', height: '' };
|
362 |
|
363 | function wrapInAncestors(element, ancestors, _ref) {
|
364 | var width = _ref.width,
|
365 | height = _ref.height;
|
366 |
|
367 | return ancestors.reduceRight(function (output, _ref2, index) {
|
368 | var Tag = _ref2.name,
|
369 | id = _ref2.id,
|
370 | className = _ref2.className;
|
371 |
|
372 | var classes = [NO_LAYOUT_CLASS, className];
|
373 | if (index === ancestors.length - 1) {
|
374 | classes.push(CONTAINER_CLASS);
|
375 | }
|
376 | return _react2.default.createElement(
|
377 | Tag,
|
378 | { id: id, className: classes.join(' '), style: { width: width, height: height } },
|
379 | output
|
380 | );
|
381 | }, element);
|
382 | }
|
383 |
|
384 | function renderInputElement(element, options) {
|
385 | if ((typeof element === 'undefined' ? 'undefined' : (0, _typeof3.default)(element)) !== 'object') {
|
386 | return element;
|
387 | }
|
388 |
|
389 | var name = element.name,
|
390 | props = element.props;
|
391 |
|
392 |
|
393 | var mappedProps = {};
|
394 | var mappedChildren = [];
|
395 | if (props) {
|
396 | var children = props.children,
|
397 | otherProps = (0, _objectWithoutProperties3.default)(props, ['children']);
|
398 |
|
399 |
|
400 | (0, _keys2.default)(otherProps).forEach(function (propName) {
|
401 | mappedProps[propName] = options.mapProps(propName, props[propName]);
|
402 | });
|
403 |
|
404 | if (children) {
|
405 | mappedChildren = [].concat(children).map(function (e) {
|
406 | return renderInputElement(e, options);
|
407 | });
|
408 | }
|
409 | }
|
410 |
|
411 | var component = options.nameToComponent(name);
|
412 |
|
413 | return _react.createElement.apply(undefined, [component, mappedProps].concat((0, _toConsumableArray3.default)(mappedChildren)));
|
414 | }
|
415 |
|
416 | function renderSpec(_ref3) {
|
417 | var _ref3$input = _ref3.input,
|
418 | element = _ref3$input.element,
|
419 | _ref3$input$ancestors = _ref3$input.ancestors,
|
420 | ancestors = _ref3$input$ancestors === undefined ? defaultAncestors : _ref3$input$ancestors,
|
421 | _ref3$input$dimension = _ref3$input.dimensions,
|
422 | dimensions = _ref3$input$dimension === undefined ? defaultDimensions : _ref3$input$dimension;
|
423 | var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { nameToComponent: function nameToComponent(name) {
|
424 | return name;
|
425 | }, mapProps: function mapProps(name, value) {
|
426 | return value;
|
427 | } };
|
428 |
|
429 | var reactElement = renderInputElement(element, options);
|
430 |
|
431 | return wrapInAncestors(reactElement, ancestors, dimensions);
|
432 | }
|
433 |
|
434 | }),
|
435 |
|
436 | (function(module, exports, __webpack_require__) {
|
437 |
|
438 | "use strict";
|
439 |
|
440 |
|
441 | Object.defineProperty(exports, "__esModule", {
|
442 | value: true
|
443 | });
|
444 | exports.Callback = exports.parse = exports.stringify = undefined;
|
445 |
|
446 | var _ejson = __webpack_require__(2);
|
447 |
|
448 | var _Callback = __webpack_require__(5);
|
449 |
|
450 | var _Callback2 = _interopRequireDefault(_Callback);
|
451 |
|
452 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
453 |
|
454 | exports.stringify = _ejson.stringify;
|
455 | exports.parse = _ejson.parse;
|
456 | exports.Callback = _Callback2.default;
|
457 |
|
458 |
|
459 |
|
460 | }),
|
461 |
|
462 | (function(module, exports, __webpack_require__) {
|
463 |
|
464 | "use strict";
|
465 |
|
466 |
|
467 | Object.defineProperty(exports, "__esModule", {
|
468 | value: true
|
469 | });
|
470 |
|
471 | var _isolator = __webpack_require__(4);
|
472 |
|
473 | var _isolator2 = _interopRequireDefault(_isolator);
|
474 |
|
475 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
476 |
|
477 | var hasSetup = false;
|
478 |
|
479 | function configure() {
|
480 | var runtimes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
481 |
|
482 | if (hasSetup) {
|
483 | throw new Error('Chromatic already configured.');
|
484 | }
|
485 | hasSetup = true;
|
486 |
|
487 | if (runtimes === []) {
|
488 | throw new Error('Chromatic must be configured with at least one runtime. http://docs.chromaticqa.com/runtime-api');
|
489 | }
|
490 |
|
491 |
|
492 |
|
493 | var isIsolator = document.location.hash.match('__chromatic_isolator__');
|
494 |
|
495 | (0, _isolator2.default)({
|
496 | runtimes: [].concat(runtimes),
|
497 | clearScreen: isIsolator
|
498 | });
|
499 | }
|
500 |
|
501 | exports.default = configure;
|
502 |
|
503 | }),
|
504 |
|
505 | (function(module, exports) {
|
506 |
|
507 | module.exports = require("babel-runtime/core-js/object/keys");
|
508 |
|
509 | }),
|
510 |
|
511 | (function(module, exports) {
|
512 |
|
513 | module.exports = require("babel-runtime/helpers/classCallCheck");
|
514 |
|
515 | }),
|
516 |
|
517 | (function(module, exports) {
|
518 |
|
519 | module.exports = require("babel-runtime/helpers/createClass");
|
520 |
|
521 | }),
|
522 |
|
523 | (function(module, exports) {
|
524 |
|
525 | module.exports = require("babel-runtime/helpers/extends");
|
526 |
|
527 | }),
|
528 |
|
529 | (function(module, exports) {
|
530 |
|
531 | module.exports = require("babel-runtime/helpers/typeof");
|
532 |
|
533 | }),
|
534 |
|
535 | (function(module, exports) {
|
536 |
|
537 | module.exports = require("react-dom");
|
538 |
|
539 | })
|
540 | ]);
|
541 |
|
\ | No newline at end of file |