UNPKG

@storybook/react-native-server

Version:

A better way to develop React Native Components for your app

89 lines (88 loc) 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _api = require("@storybook/api"); var _ui = require("@storybook/ui"); var _channelWebsocket = _interopRequireDefault(require("@storybook/channel-websocket")); var _addons = require("@storybook/addons"); var _coreEvents = _interopRequireDefault(require("@storybook/core-events")); var _uuid = _interopRequireDefault(require("uuid")); var _PreviewHelp = _interopRequireDefault(require("./components/PreviewHelp")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const mapper = _ref => { let { state, api } = _ref; return { api, storiesHash: state.storiesHash, storyId: state.storyId, viewMode: state.viewMode }; }; class ReactProvider extends _ui.Provider { constructor(_ref2) { let { url: domain, options } = _ref2; super(); const { secured, host, port } = options; const websocketType = secured ? 'wss' : 'ws'; let url = `${websocketType}://${domain}`; if (options.manualId) { this.pairedId = (0, _uuid.default)(); url += `/pairedId=${this.pairedId}`; } const channel = this.channel || (0, _channelWebsocket.default)({ url }); _addons.addons.setChannel(channel); channel.emit(_coreEvents.default.CHANNEL_CREATED, { host, pairedId: this.pairedId, port, secured }); this.addons = _addons.addons; this.channel = channel; this.options = options; } getElements(type) { return _addons.addons.getElements(type); } getConfig() { return this.addons.getConfig(); } renderPreview() { return /*#__PURE__*/_react.default.createElement(_api.Consumer, { filter: mapper, pure: true }, _ref3 => { let { storiesHash, storyId, api, viewMode } = _ref3; if (storiesHash[storyId]) { api.emit(_coreEvents.default.SET_CURRENT_STORY, { storyId }); } return viewMode === 'story' ? /*#__PURE__*/_react.default.createElement(_PreviewHelp.default, null) : null; }); } handleAPI(api) { _addons.addons.loadAddons(api); } } exports.default = ReactProvider;