storybook/dist/client/ui/admin.js
2016-03-24 19:46:34 +05:30

115 lines
2.9 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
exports.default = renderAdmin;
exports.getControls = getControls;
exports.getIframe = getIframe;
exports.getActionLogger = getActionLogger;
exports.renderMain = renderMain;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _redboxReact = require('redbox-react');
var _redboxReact2 = _interopRequireDefault(_redboxReact);
var _controls = require('./controls');
var _controls2 = _interopRequireDefault(_controls);
var _action_logger = require('./action_logger');
var _action_logger2 = _interopRequireDefault(_action_logger);
var _layout = require('./layout');
var _layout2 = _interopRequireDefault(_layout);
var _data = require('../data');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var rootEl = document.getElementById('root');
function renderAdmin(data) {
return renderMain(data);
}
function getControls(data) {
return _react2.default.createElement(_controls2.default, {
storybook: data.storybook,
selectedKind: data.selectedKind,
selectedStory: data.selectedStory,
onKind: setSelectedKind.bind(null, data),
onStory: setSelectedStory.bind(null, data) });
}
function getIframe(data) {
var iframeStyle = {
width: '100%',
height: '100%',
border: '0'
};
// We need to send dataId via queryString
// That's how our data layer can start communicate via the iframe.
var queryString = 'dataId=' + data.dataId;
return _react2.default.createElement('iframe', {
style: iframeStyle,
src: '/iframe?' + queryString });
}
function getActionLogger(data) {
var _data$actions = data.actions;
var actions = _data$actions === undefined ? [] : _data$actions;
var log = actions.map(function (action) {
return (0, _stringify2.default)(action, null, 2);
}).join('\n\n');
return _react2.default.createElement(_action_logger2.default, { actionLog: log });
}
function renderMain(data) {
// Inside the main page, we simply render iframe.
var controls = getControls(data);
var iframe = getIframe(data);
var actionLogger = getActionLogger(data);
var root = _react2.default.createElement(_layout2.default, {
controls: controls,
preview: iframe,
actionLogger: actionLogger });
_reactDom2.default.render(root, rootEl);
}
// Event handlers
function setSelectedKind(data, kind) {
data.selectedKind = kind;
data.selectedStory = (0, _keys2.default)(data.storybook[kind])[0];
(0, _data.setData)(data);
}
function setSelectedStory(data, block) {
data.selectedStory = block;
(0, _data.setData)(data);
}