UNPKG

3 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.init = void 0;
7
8require("core-js/modules/es.object.keys.js");
9
10var _coreEvents = require("@storybook/core-events");
11
12var _clientLogger = require("@storybook/client-logger");
13
14var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
15
16var _events = require("../lib/events");
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20var init = function init(_ref) {
21 var store = _ref.store,
22 fullAPI = _ref.fullAPI;
23 var api = {
24 getGlobals: function getGlobals() {
25 return store.getState().globals;
26 },
27 getGlobalTypes: function getGlobalTypes() {
28 return store.getState().globalTypes;
29 },
30 updateGlobals: function updateGlobals(newGlobals) {
31 // Only emit the message to the local ref
32 fullAPI.emit(_coreEvents.UPDATE_GLOBALS, {
33 globals: newGlobals,
34 options: {
35 target: 'storybook-preview-iframe'
36 }
37 });
38 }
39 };
40 var state = {
41 globals: {},
42 globalTypes: {}
43 };
44
45 var updateGlobals = function updateGlobals(globals) {
46 var _store$getState;
47
48 var currentGlobals = (_store$getState = store.getState()) === null || _store$getState === void 0 ? void 0 : _store$getState.globals;
49
50 if (!(0, _fastDeepEqual.default)(globals, currentGlobals)) {
51 store.setState({
52 globals: globals
53 });
54 }
55 };
56
57 var initModule = function initModule() {
58 fullAPI.on(_coreEvents.GLOBALS_UPDATED, function handleGlobalsUpdated(_ref2) {
59 var globals = _ref2.globals;
60
61 var _getEventMetadata = (0, _events.getEventMetadata)(this, fullAPI),
62 ref = _getEventMetadata.ref;
63
64 if (!ref) {
65 updateGlobals(globals);
66 } else {
67 _clientLogger.logger.warn('received a GLOBALS_UPDATED from a non-local ref. This is not currently supported.');
68 }
69 }); // Emitted by the preview on initialization
70
71 fullAPI.on(_coreEvents.SET_GLOBALS, function handleSetStories(_ref3) {
72 var _store$getState2;
73
74 var globals = _ref3.globals,
75 globalTypes = _ref3.globalTypes;
76
77 var _getEventMetadata2 = (0, _events.getEventMetadata)(this, fullAPI),
78 ref = _getEventMetadata2.ref;
79
80 var currentGlobals = (_store$getState2 = store.getState()) === null || _store$getState2 === void 0 ? void 0 : _store$getState2.globals;
81
82 if (!ref) {
83 store.setState({
84 globals: globals,
85 globalTypes: globalTypes
86 });
87 } else if (Object.keys(globals).length > 0) {
88 _clientLogger.logger.warn('received globals from a non-local ref. This is not currently supported.');
89 }
90
91 if (currentGlobals && Object.keys(currentGlobals).length !== 0 && !(0, _fastDeepEqual.default)(globals, currentGlobals)) {
92 api.updateGlobals(currentGlobals);
93 }
94 });
95 };
96
97 return {
98 api: api,
99 state: state,
100 init: initModule
101 };
102};
103
104exports.init = init;
\No newline at end of file