@storybook/react-native-server
Version:
A better way to develop React Native Components for your app
89 lines (88 loc) • 2.35 kB
JavaScript
;
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;