1 | "use strict";
|
2 |
|
3 | require("core-js/modules/es.object.keys.js");
|
4 |
|
5 | require("core-js/modules/es.symbol.js");
|
6 |
|
7 | require("core-js/modules/es.array.slice.js");
|
8 |
|
9 | require("core-js/modules/es.object.freeze.js");
|
10 |
|
11 | require("core-js/modules/es.symbol.description.js");
|
12 |
|
13 | require("core-js/modules/es.symbol.iterator.js");
|
14 |
|
15 | require("core-js/modules/es.array.iterator.js");
|
16 |
|
17 | require("core-js/modules/es.string.iterator.js");
|
18 |
|
19 | require("core-js/modules/web.dom-collections.iterator.js");
|
20 |
|
21 | require("core-js/modules/es.function.name.js");
|
22 |
|
23 | require("core-js/modules/es.array.from.js");
|
24 |
|
25 | require("core-js/modules/es.regexp.exec.js");
|
26 |
|
27 | Object.defineProperty(exports, "__esModule", {
|
28 | value: true
|
29 | });
|
30 | exports.init = void 0;
|
31 |
|
32 | require("core-js/modules/es.array.includes.js");
|
33 |
|
34 | require("core-js/modules/es.array.map.js");
|
35 |
|
36 | require("core-js/modules/es.array.sort.js");
|
37 |
|
38 | require("core-js/modules/es.array.filter.js");
|
39 |
|
40 | require("core-js/modules/es.object.to-string.js");
|
41 |
|
42 | require("core-js/modules/es.object.entries.js");
|
43 |
|
44 | require("core-js/modules/es.array.concat.js");
|
45 |
|
46 | require("core-js/modules/es.array.join.js");
|
47 |
|
48 | require("core-js/modules/es.object.assign.js");
|
49 |
|
50 | var _clientLogger = require("@storybook/client-logger");
|
51 |
|
52 | var _coreEvents = require("@storybook/core-events");
|
53 |
|
54 | var _router = require("@storybook/router");
|
55 |
|
56 | var _csf = require("@storybook/csf");
|
57 |
|
58 | var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
59 |
|
60 | var _global = _interopRequireDefault(require("global"));
|
61 |
|
62 | var _tsDedent = _interopRequireDefault(require("ts-dedent"));
|
63 |
|
64 | var _stories = require("../lib/stories");
|
65 |
|
66 | var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
67 |
|
68 | var _excluded = ["full", "panel", "nav", "shortcuts", "addonPanel", "tabs", "addons", "panelRight", "stories", "selectedKind", "selectedStory", "path"],
|
69 | _excluded2 = ["store", "navigate", "state", "provider", "fullAPI"];
|
70 |
|
71 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
72 |
|
73 | function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
74 |
|
75 | function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
76 |
|
77 | function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
78 |
|
79 | function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
80 |
|
81 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
82 |
|
83 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
84 |
|
85 | function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
86 |
|
87 | function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
88 |
|
89 | function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
90 |
|
91 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
92 |
|
93 | function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
94 |
|
95 | function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
96 |
|
97 | function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
98 |
|
99 | var globalWindow = _global.default.window;
|
100 |
|
101 | var parseBoolean = function parseBoolean(value) {
|
102 | if (value === 'true' || value === '1') return true;
|
103 | if (value === 'false' || value === '0') return false;
|
104 | return undefined;
|
105 | };
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 | var prevParams;
|
117 |
|
118 | var initialUrlSupport = function initialUrlSupport(_ref) {
|
119 | var _ref$state = _ref.state,
|
120 | location = _ref$state.location,
|
121 | path = _ref$state.path,
|
122 | viewMode = _ref$state.viewMode,
|
123 | storyIdFromUrl = _ref$state.storyId,
|
124 | singleStory = _ref.singleStory;
|
125 |
|
126 | var _queryFromLocation = (0, _router.queryFromLocation)(location),
|
127 | full = _queryFromLocation.full,
|
128 | panel = _queryFromLocation.panel,
|
129 | nav = _queryFromLocation.nav,
|
130 | shortcuts = _queryFromLocation.shortcuts,
|
131 | addonPanel = _queryFromLocation.addonPanel,
|
132 | tabs = _queryFromLocation.tabs,
|
133 | addons = _queryFromLocation.addons,
|
134 | panelRight = _queryFromLocation.panelRight,
|
135 | stories = _queryFromLocation.stories,
|
136 | selectedKind = _queryFromLocation.selectedKind,
|
137 | selectedStory = _queryFromLocation.selectedStory,
|
138 | queryPath = _queryFromLocation.path,
|
139 | otherParams = _objectWithoutProperties(_queryFromLocation, _excluded);
|
140 |
|
141 | var layout = {
|
142 | isFullscreen: parseBoolean(full),
|
143 | showNav: !singleStory && parseBoolean(nav),
|
144 | showPanel: parseBoolean(panel),
|
145 | panelPosition: ['right', 'bottom'].includes(panel) ? panel : undefined,
|
146 | showTabs: parseBoolean(tabs)
|
147 | };
|
148 | var ui = {
|
149 | enableShortcuts: parseBoolean(shortcuts)
|
150 | };
|
151 | var selectedPanel = addonPanel || undefined;
|
152 |
|
153 | if (addons === '0') {
|
154 | _clientLogger.once.warn((0, _tsDedent.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n The 'addons' query param is deprecated and will be removed in Storybook 7.0. Use 'panel=false' instead.\n\n More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-layout-url-params\n "]))));
|
155 |
|
156 | layout.showPanel = false;
|
157 | }
|
158 |
|
159 |
|
160 | if (panelRight === '1') {
|
161 | _clientLogger.once.warn((0, _tsDedent.default)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n The 'panelRight' query param is deprecated and will be removed in Storybook 7.0. Use 'panel=right' instead.\n\n More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-layout-url-params\n "]))));
|
162 |
|
163 | layout.panelPosition = 'right';
|
164 | }
|
165 |
|
166 |
|
167 | if (stories === '0') {
|
168 | _clientLogger.once.warn((0, _tsDedent.default)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n The 'stories' query param is deprecated and will be removed in Storybook 7.0. Use 'nav=false' instead.\n\n More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-layout-url-params\n "]))));
|
169 |
|
170 | layout.showNav = false;
|
171 | }
|
172 |
|
173 |
|
174 |
|
175 |
|
176 | var storyId = storyIdFromUrl;
|
177 |
|
178 | if (!storyId && selectedKind) {
|
179 | _clientLogger.once.warn((0, _tsDedent.default)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n The 'selectedKind' and 'selectedStory' query params are deprecated and will be removed in Storybook 7.0. Use 'path' instead.\n\n More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-layout-url-params\n "]))));
|
180 |
|
181 | storyId = selectedStory ? (0, _csf.toId)(selectedKind, selectedStory) : (0, _csf.sanitize)(selectedKind);
|
182 | }
|
183 |
|
184 |
|
185 | var customQueryParams = (0, _fastDeepEqual.default)(prevParams, otherParams) ? prevParams : otherParams;
|
186 | prevParams = customQueryParams;
|
187 | return {
|
188 | viewMode: viewMode,
|
189 | layout: layout,
|
190 | ui: ui,
|
191 | selectedPanel: selectedPanel,
|
192 | location: location,
|
193 | path: path,
|
194 | customQueryParams: customQueryParams,
|
195 | storyId: storyId
|
196 | };
|
197 | };
|
198 |
|
199 | var init = function init(_ref2) {
|
200 | var store = _ref2.store,
|
201 | navigate = _ref2.navigate,
|
202 | state = _ref2.state,
|
203 | provider = _ref2.provider,
|
204 | fullAPI = _ref2.fullAPI,
|
205 | rest = _objectWithoutProperties(_ref2, _excluded2);
|
206 |
|
207 | var navigateTo = function navigateTo(path) {
|
208 | var queryParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
209 | var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
210 | var params = Object.entries(queryParams).filter(function (_ref3) {
|
211 | var _ref4 = _slicedToArray(_ref3, 2),
|
212 | v = _ref4[1];
|
213 |
|
214 | return v;
|
215 | }).sort(function (_ref5, _ref6) {
|
216 | var _ref7 = _slicedToArray(_ref5, 1),
|
217 | a = _ref7[0];
|
218 |
|
219 | var _ref8 = _slicedToArray(_ref6, 1),
|
220 | b = _ref8[0];
|
221 |
|
222 | return a < b ? -1 : 1;
|
223 | }).map(function (_ref9) {
|
224 | var _ref10 = _slicedToArray(_ref9, 2),
|
225 | k = _ref10[0],
|
226 | v = _ref10[1];
|
227 |
|
228 | return "".concat(k, "=").concat(v);
|
229 | });
|
230 | var to = [path].concat(_toConsumableArray(params)).join('&');
|
231 | return navigate(to, options);
|
232 | };
|
233 |
|
234 | var api = {
|
235 | getQueryParam: function getQueryParam(key) {
|
236 | var _store$getState = store.getState(),
|
237 | customQueryParams = _store$getState.customQueryParams;
|
238 |
|
239 | return customQueryParams ? customQueryParams[key] : undefined;
|
240 | },
|
241 | getUrlState: function getUrlState() {
|
242 | var _store$getState2 = store.getState(),
|
243 | path = _store$getState2.path,
|
244 | customQueryParams = _store$getState2.customQueryParams,
|
245 | storyId = _store$getState2.storyId,
|
246 | url = _store$getState2.url,
|
247 | viewMode = _store$getState2.viewMode;
|
248 |
|
249 | return {
|
250 | path: path,
|
251 | queryParams: customQueryParams,
|
252 | storyId: storyId,
|
253 | url: url,
|
254 | viewMode: viewMode
|
255 | };
|
256 | },
|
257 | setQueryParams: function setQueryParams(input) {
|
258 | var _store$getState3 = store.getState(),
|
259 | customQueryParams = _store$getState3.customQueryParams;
|
260 |
|
261 | var queryParams = {};
|
262 | var update = Object.assign({}, customQueryParams, Object.entries(input).reduce(function (acc, _ref11) {
|
263 | var _ref12 = _slicedToArray(_ref11, 2),
|
264 | key = _ref12[0],
|
265 | value = _ref12[1];
|
266 |
|
267 | if (value !== null) {
|
268 | acc[key] = value;
|
269 | }
|
270 |
|
271 | return acc;
|
272 | }, queryParams));
|
273 |
|
274 | if (!(0, _fastDeepEqual.default)(customQueryParams, update)) {
|
275 | store.setState({
|
276 | customQueryParams: update
|
277 | });
|
278 | fullAPI.emit(_coreEvents.UPDATE_QUERY_PARAMS, update);
|
279 | }
|
280 | },
|
281 | navigateUrl: function navigateUrl(url, options) {
|
282 | navigate(url, Object.assign({}, options, {
|
283 | plain: true
|
284 | }));
|
285 | }
|
286 | };
|
287 |
|
288 | var initModule = function initModule() {
|
289 |
|
290 | var updateArgsParam = function updateArgsParam() {
|
291 | var _fullAPI$getUrlState = fullAPI.getUrlState(),
|
292 | path = _fullAPI$getUrlState.path,
|
293 | queryParams = _fullAPI$getUrlState.queryParams,
|
294 | viewMode = _fullAPI$getUrlState.viewMode;
|
295 |
|
296 | if (viewMode !== 'story') return;
|
297 | var currentStory = fullAPI.getCurrentStoryData();
|
298 | if (!(0, _stories.isStory)(currentStory)) return;
|
299 | var args = currentStory.args,
|
300 | initialArgs = currentStory.initialArgs;
|
301 | var argsString = (0, _router.buildArgsParam)(initialArgs, args);
|
302 | navigateTo(path, Object.assign({}, queryParams, {
|
303 | args: argsString
|
304 | }), {
|
305 | replace: true
|
306 | });
|
307 | api.setQueryParams({
|
308 | args: argsString
|
309 | });
|
310 | };
|
311 |
|
312 | fullAPI.on(_coreEvents.SET_CURRENT_STORY, function () {
|
313 | return updateArgsParam();
|
314 | });
|
315 | var handleOrId;
|
316 | fullAPI.on(_coreEvents.STORY_ARGS_UPDATED, function () {
|
317 | if ('requestIdleCallback' in globalWindow) {
|
318 | if (handleOrId) globalWindow.cancelIdleCallback(handleOrId);
|
319 | handleOrId = globalWindow.requestIdleCallback(updateArgsParam, {
|
320 | timeout: 1000
|
321 | });
|
322 | } else {
|
323 | if (handleOrId) clearTimeout(handleOrId);
|
324 | setTimeout(updateArgsParam, 100);
|
325 | }
|
326 | });
|
327 | fullAPI.on(_coreEvents.GLOBALS_UPDATED, function (_ref13) {
|
328 | var globals = _ref13.globals,
|
329 | initialGlobals = _ref13.initialGlobals;
|
330 |
|
331 | var _fullAPI$getUrlState2 = fullAPI.getUrlState(),
|
332 | path = _fullAPI$getUrlState2.path,
|
333 | queryParams = _fullAPI$getUrlState2.queryParams;
|
334 |
|
335 | var globalsString = (0, _router.buildArgsParam)(initialGlobals, globals);
|
336 | navigateTo(path, Object.assign({}, queryParams, {
|
337 | globals: globalsString
|
338 | }), {
|
339 | replace: true
|
340 | });
|
341 | api.setQueryParams({
|
342 | globals: globalsString
|
343 | });
|
344 | });
|
345 | fullAPI.on(_coreEvents.NAVIGATE_URL, function (url, options) {
|
346 | fullAPI.navigateUrl(url, options);
|
347 | });
|
348 |
|
349 | if (fullAPI.showReleaseNotesOnLaunch()) {
|
350 | navigate('/settings/release-notes');
|
351 | }
|
352 | };
|
353 |
|
354 | return {
|
355 | api: api,
|
356 | state: initialUrlSupport(Object.assign({
|
357 | store: store,
|
358 | navigate: navigate,
|
359 | state: state,
|
360 | provider: provider,
|
361 | fullAPI: fullAPI
|
362 | }, rest)),
|
363 | init: initModule
|
364 | };
|
365 | };
|
366 |
|
367 | exports.init = init; |
\ | No newline at end of file |