UNPKG

patternplate-client

Version:

Universal javascript client application for patternplate

91 lines (60 loc) 6.64 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.client = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _url = require('url'); var _url2 = _interopRequireDefault(_url); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _server = require('react-dom/server'); var _server2 = _interopRequireDefault(_server); var _reactRouter = require('@marionebl/react-router'); var _reactRouter2 = _interopRequireDefault(_reactRouter); var _events = require('events'); var _components = require('../components'); var _components2 = _interopRequireDefault(_components); var _content = require('../components/content'); var _content2 = _interopRequireDefault(_content); var _home = require('../components/content/home'); var _home2 = _interopRequireDefault(_home); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getRoutes() { var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/'; return _react2.default.createElement( _reactRouter.Route, { name: 'root', path: base, handler: _components2.default }, _react2.default.createElement(_reactRouter.DefaultRoute, { handler: _home2.default }), _react2.default.createElement(_reactRouter.Route, { name: 'pattern', path: '/pattern/*', handler: _content2.default }) ); } function router() { var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/'; var data = arguments[1]; return new _promise2.default(function (resolve) { var eventEmitter = new _events.EventEmitter(); _reactRouter2.default.run(getRoutes(), path, function (Handler, state) { var appData = (0, _extends3.default)({}, data, state, { eventEmitter: eventEmitter, base: '/' }); resolve(_server2.default.renderToString(_react2.default.createElement(Handler, appData))); }); }); } function client(data, el) { return new _promise2.default(function (resolve) { var eventEmitter = new _events.EventEmitter(); var base = _url2.default.resolve(global.location.pathname, data.base); _reactRouter2.default.run(getRoutes(base), _reactRouter2.default.HistoryLocation, function (Handler, state) { var appData = (0, _extends3.default)({}, data, state, { eventEmitter: eventEmitter, base: base }); resolve(_reactDom2.default.render(_react2.default.createElement(Handler, appData), el)); }); }); } exports.default = router; exports.client = client; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9hcHBsaWNhdGlvbi9yZWFjdC1yb3V0ZXMvaW5kZXguanN4Il0sIm5hbWVzIjpbImdldFJvdXRlcyIsImJhc2UiLCJyb3V0ZXIiLCJwYXRoIiwiZGF0YSIsImV2ZW50RW1pdHRlciIsInJ1biIsIkhhbmRsZXIiLCJzdGF0ZSIsImFwcERhdGEiLCJyZXNvbHZlIiwicmVuZGVyVG9TdHJpbmciLCJjbGllbnQiLCJlbCIsImdsb2JhbCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJIaXN0b3J5TG9jYXRpb24iLCJyZW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLFNBQVNBLFNBQVQsR0FBK0I7QUFBQSxLQUFaQyxJQUFZLHVFQUFMLEdBQUs7O0FBQzlCLFFBQ0M7QUFBQTtBQUFBLElBQU8sTUFBSyxNQUFaLEVBQW1CLE1BQU1BLElBQXpCLEVBQStCLDZCQUEvQjtBQUNDLDZEQUFjLHVCQUFkLEdBREQ7QUFFQyxzREFBTyxNQUFLLFNBQVosRUFBc0IsTUFBSyxZQUEzQixFQUF3QywwQkFBeEM7QUFGRCxFQUREO0FBTUE7O0FBRUQsU0FBU0MsTUFBVCxHQUFrQztBQUFBLEtBQWxCQyxJQUFrQix1RUFBWCxHQUFXO0FBQUEsS0FBTkMsSUFBTTs7QUFDakMsUUFBTyxzQkFBWSxtQkFBVztBQUM3QixNQUFNQyxlQUFlLDBCQUFyQjs7QUFFQSx3QkFBT0MsR0FBUCxDQUFXTixXQUFYLEVBQXdCRyxJQUF4QixFQUE4QixVQUFDSSxPQUFELEVBQVVDLEtBQVYsRUFBb0I7QUFDakQsT0FBTUMscUNBQWNMLElBQWQsRUFBdUJJLEtBQXZCLElBQThCSCwwQkFBOUIsRUFBNENKLE1BQU0sR0FBbEQsR0FBTjtBQUNBUyxXQUFRLGlCQUFlQyxjQUFmLENBQThCLDhCQUFDLE9BQUQsRUFBYUYsT0FBYixDQUE5QixDQUFSO0FBQ0EsR0FIRDtBQUlBLEVBUE0sQ0FBUDtBQVFBOztBQUVELFNBQVNHLE1BQVQsQ0FBZ0JSLElBQWhCLEVBQXNCUyxFQUF0QixFQUEwQjtBQUN6QixRQUFPLHNCQUFZLG1CQUFXO0FBQzdCLE1BQU1SLGVBQWUsMEJBQXJCO0FBQ0EsTUFBTUosT0FBTyxjQUFJUyxPQUFKLENBQVlJLE9BQU9DLFFBQVAsQ0FBZ0JDLFFBQTVCLEVBQXNDWixLQUFLSCxJQUEzQyxDQUFiOztBQUVBLHdCQUFPSyxHQUFQLENBQVdOLFVBQVVDLElBQVYsQ0FBWCxFQUE0QixzQkFBT2dCLGVBQW5DLEVBQW9ELFVBQUNWLE9BQUQsRUFBVUMsS0FBVixFQUFvQjtBQUN2RSxPQUFNQyxxQ0FBY0wsSUFBZCxFQUF1QkksS0FBdkIsSUFBOEJILDBCQUE5QixFQUE0Q0osVUFBNUMsR0FBTjtBQUNBUyxXQUFRLG1CQUFTUSxNQUFULENBQWdCLDhCQUFDLE9BQUQsRUFBYVQsT0FBYixDQUFoQixFQUF5Q0ksRUFBekMsQ0FBUjtBQUNBLEdBSEQ7QUFJQSxFQVJNLENBQVA7QUFTQTs7a0JBRWNYLE07UUFDR1UsTSxHQUFWQSxNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUmVhY3RET01TZXJ2ZXIgZnJvbSAncmVhY3QtZG9tL3NlcnZlcic7XG5pbXBvcnQgUm91dGVyLCB7RGVmYXVsdFJvdXRlLCBSb3V0ZX0gZnJvbSAnQG1hcmlvbmVibC9yZWFjdC1yb3V0ZXInO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJ2V2ZW50cyc7XG5cbmltcG9ydCBBcHBsaWNhdGlvbiBmcm9tICcuLi9jb21wb25lbnRzJztcbmltcG9ydCBDb250ZW50IGZyb20gJy4uL2NvbXBvbmVudHMvY29udGVudCc7XG5pbXBvcnQgSG9tZSBmcm9tICcuLi9jb21wb25lbnRzL2NvbnRlbnQvaG9tZSc7XG5cbmZ1bmN0aW9uIGdldFJvdXRlcyhiYXNlID0gJy8nKSB7XG5cdHJldHVybiAoXG5cdFx0PFJvdXRlIG5hbWU9XCJyb290XCIgcGF0aD17YmFzZX0gaGFuZGxlcj17QXBwbGljYXRpb259PlxuXHRcdFx0PERlZmF1bHRSb3V0ZSBoYW5kbGVyPXtIb21lfS8+XG5cdFx0XHQ8Um91dGUgbmFtZT1cInBhdHRlcm5cIiBwYXRoPVwiL3BhdHRlcm4vKlwiIGhhbmRsZXI9e0NvbnRlbnR9Lz5cblx0XHQ8L1JvdXRlPlxuXHQpO1xufVxuXG5mdW5jdGlvbiByb3V0ZXIocGF0aCA9ICcvJywgZGF0YSkge1xuXHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0Y29uc3QgZXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdFx0Um91dGVyLnJ1bihnZXRSb3V0ZXMoKSwgcGF0aCwgKEhhbmRsZXIsIHN0YXRlKSA9PiB7XG5cdFx0XHRjb25zdCBhcHBEYXRhID0gey4uLmRhdGEsIC4uLnN0YXRlLCBldmVudEVtaXR0ZXIsIGJhc2U6ICcvJ307XG5cdFx0XHRyZXNvbHZlKFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKDxIYW5kbGVyIHsuLi5hcHBEYXRhfS8+KSk7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBjbGllbnQoZGF0YSwgZWwpIHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXHRcdGNvbnN0IGV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0XHRjb25zdCBiYXNlID0gdXJsLnJlc29sdmUoZ2xvYmFsLmxvY2F0aW9uLnBhdGhuYW1lLCBkYXRhLmJhc2UpO1xuXG5cdFx0Um91dGVyLnJ1bihnZXRSb3V0ZXMoYmFzZSksIFJvdXRlci5IaXN0b3J5TG9jYXRpb24sIChIYW5kbGVyLCBzdGF0ZSkgPT4ge1xuXHRcdFx0Y29uc3QgYXBwRGF0YSA9IHsuLi5kYXRhLCAuLi5zdGF0ZSwgZXZlbnRFbWl0dGVyLCBiYXNlfTtcblx0XHRcdHJlc29sdmUoUmVhY3RET00ucmVuZGVyKDxIYW5kbGVyIHsuLi5hcHBEYXRhfS8+LCBlbCkpO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcm91dGVyO1xuZXhwb3J0IHtjbGllbnQgYXMgY2xpZW50fTtcbiJdfQ==