storybook 10.0.0-beta.5 → 10.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/assets/server/openBrowser.applescript +94 -0
  2. package/dist/_browser-chunks/{WithTooltip-ERFLZL6W.js → WithTooltip-SK46ZJ2J.js} +1 -1
  3. package/dist/_browser-chunks/{chunk-EOILZP2R.js → chunk-BOOOPFZF.js} +7 -2
  4. package/dist/_node-chunks/{builder-manager-ZTS4EIKQ.js → builder-manager-V33CQT2M.js} +21 -151
  5. package/dist/_node-chunks/camelcase-BZ55OCHI.js +18 -0
  6. package/dist/_node-chunks/{chunk-WCSHG2QT.js → chunk-2DMFI367.js} +7 -7
  7. package/dist/_node-chunks/{chunk-VQN4WAIA.js → chunk-4TOI4VSK.js} +7 -7
  8. package/dist/_node-chunks/{chunk-TBWOUVTA.js → chunk-55VWKF63.js} +709 -935
  9. package/dist/_node-chunks/{chunk-P3TWEOO5.js → chunk-5IEY46LQ.js} +7 -7
  10. package/dist/_node-chunks/{chunk-EIHJ5J3O.js → chunk-6PTV7XGR.js} +8 -8
  11. package/dist/_node-chunks/{chunk-D7SDB4XE.js → chunk-7NJGTQ3W.js} +8 -8
  12. package/dist/_node-chunks/{chunk-4VDRH7SM.js → chunk-7WH7AGOR.js} +7 -7
  13. package/dist/_node-chunks/{chunk-AK5PHLUA.js → chunk-A7CUP23N.js} +7 -7
  14. package/dist/_node-chunks/{chunk-K4YETNYJ.js → chunk-B3AMFGAL.js} +7 -7
  15. package/dist/_node-chunks/{chunk-PIKDGR3O.js → chunk-BNOZ3EKF.js} +7 -7
  16. package/dist/_node-chunks/{chunk-F7YW5W6B.js → chunk-DC7OWBHB.js} +12 -12
  17. package/dist/_node-chunks/{chunk-VX5P3IYA.js → chunk-E6TLN2J2.js} +7 -7
  18. package/dist/_node-chunks/{chunk-TVKUJ3SE.js → chunk-EAOPWIKA.js} +8 -8
  19. package/dist/_node-chunks/{chunk-TKN5TEZV.js → chunk-EY5PTUZL.js} +13 -13
  20. package/dist/_node-chunks/{chunk-DZJNLBBL.js → chunk-F3PO67U3.js} +7 -7
  21. package/dist/_node-chunks/chunk-FDDJHDCE.js +62 -0
  22. package/dist/_node-chunks/{chunk-KZB7ELL6.js → chunk-HEBHWRWL.js} +7 -7
  23. package/dist/_node-chunks/{chunk-VWSUFVUF.js → chunk-HPFXREVG.js} +7 -7
  24. package/dist/_node-chunks/{chunk-OC3TVLYU.js → chunk-IINJT47N.js} +7 -7
  25. package/dist/_node-chunks/{chunk-J3DQMIO4.js → chunk-JNHUDBJL.js} +7 -7
  26. package/dist/_node-chunks/{chunk-SW3VZAH7.js → chunk-JOXYGIZK.js} +9 -9
  27. package/dist/_node-chunks/{chunk-P7YMEOXF.js → chunk-MLBTKECD.js} +7 -7
  28. package/dist/_node-chunks/{chunk-UTCFHTQH.js → chunk-NJXBURX7.js} +7 -7
  29. package/dist/_node-chunks/{chunk-H52PBBSK.js → chunk-NKZ4UPPV.js} +7 -7
  30. package/dist/_node-chunks/{chunk-F3WE3456.js → chunk-NUVGSFQI.js} +7 -7
  31. package/dist/_node-chunks/chunk-R5DIBOM6.js +18 -0
  32. package/dist/_node-chunks/{chunk-ACUNHBEO.js → chunk-RIPA4LFD.js} +22 -22
  33. package/dist/_node-chunks/{chunk-KU3JBNPY.js → chunk-TJIMCNYJ.js} +8 -8
  34. package/dist/_node-chunks/{chunk-4KRR46V2.js → chunk-UYKQJMQY.js} +15 -15
  35. package/dist/_node-chunks/{chunk-3VVGIILJ.js → chunk-VQH4ZFTS.js} +8 -8
  36. package/dist/_node-chunks/{chunk-QHIU5I7C.js → chunk-VSC6LSCQ.js} +6 -6
  37. package/dist/_node-chunks/{chunk-2VMDKLSW.js → chunk-XZTBG2TG.js} +6 -6
  38. package/dist/_node-chunks/{dist-OGRBL76N.js → dist-CGGAYWME.js} +9 -9
  39. package/dist/_node-chunks/{globby-65LOULA6.js → globby-3IFB7BJC.js} +17 -13
  40. package/dist/_node-chunks/{lib-TF7JCT3A.js → lib-IT6OBSID.js} +7 -7
  41. package/dist/_node-chunks/{mdx-N42X6CFJ-6ZJEUZMZ.js → mdx-N42X6CFJ-WM36SSZ6.js} +8 -8
  42. package/dist/_node-chunks/{p-limit-PF7JSPDT.js → p-limit-3V5XIKA7.js} +7 -7
  43. package/dist/_node-chunks/{plugin-LGHGAC6J.js → plugin-3YREMMJJ.js} +10 -10
  44. package/dist/_node-chunks/{plugin-A6XAWMXN.js → plugin-GJUBUKCT.js} +10 -10
  45. package/dist/_node-chunks/{webpack-inject-mocker-runtime-plugin-HDSEOU3Z.js → webpack-inject-mocker-runtime-plugin-DCJQFJQ5.js} +10 -10
  46. package/dist/_node-chunks/{webpack-mock-plugin-ZJJVMJUS.js → webpack-mock-plugin-XJNFAHBI.js} +9 -9
  47. package/dist/babel/index.js +11 -11
  48. package/dist/bin/core.js +11 -11
  49. package/dist/bin/dispatcher.js +11 -11
  50. package/dist/bin/loader.js +8 -8
  51. package/dist/cli/index.js +27 -22
  52. package/dist/common/index.js +21 -21
  53. package/dist/components/index.js +3 -3
  54. package/dist/core-events/index.d.ts +18 -2
  55. package/dist/core-events/index.js +7 -1
  56. package/dist/core-server/index.js +1104 -999
  57. package/dist/core-server/presets/common-manager.js +67 -27
  58. package/dist/core-server/presets/common-override-preset.js +9 -9
  59. package/dist/core-server/presets/common-preset.js +691 -29
  60. package/dist/core-server/presets/webpack/loaders/storybook-mock-transform-loader.js +9 -9
  61. package/dist/core-server/presets/webpack/loaders/webpack-automock-loader.js +10 -10
  62. package/dist/csf-tools/index.js +9 -9
  63. package/dist/manager/globals-runtime.js +1250 -972
  64. package/dist/manager/globals.d.ts +0 -4
  65. package/dist/manager/globals.js +1 -6
  66. package/dist/manager/runtime.js +1724 -464
  67. package/dist/manager-api/index.d.ts +2 -0
  68. package/dist/manager-api/index.js +284 -48
  69. package/dist/node-logger/index.js +14 -14
  70. package/dist/preview/runtime.js +7 -1
  71. package/dist/server-errors.js +10 -10
  72. package/dist/telemetry/index.d.ts +1 -1
  73. package/dist/telemetry/index.js +24 -24
  74. package/dist/types/index.d.ts +4 -0
  75. package/package.json +5 -4
  76. package/dist/_node-chunks/camelcase-K3BM7RII.js +0 -18
  77. package/dist/_node-chunks/chunk-7LG5CLCT.js +0 -18
  78. package/dist/_node-chunks/chunk-DWJ7TV2O.js +0 -62
  79. package/dist/_node-chunks/default-browser-id-4RZZMHJE.js +0 -1719
@@ -483,6 +483,8 @@ interface API_Shortcuts {
483
483
  collapseAll: API_KeyCollection;
484
484
  expandAll: API_KeyCollection;
485
485
  remount: API_KeyCollection;
486
+ openInEditor: API_KeyCollection;
487
+ copyStoryLink: API_KeyCollection;
486
488
  }
487
489
  type API_Action = keyof API_Shortcuts;
488
490
  interface API_AddonShortcut {
@@ -44,10 +44,147 @@ import {
44
44
  __toESM
45
45
  } from "../_browser-chunks/chunk-MM7DTO55.js";
46
46
 
47
+ // ../node_modules/toggle-selection/index.js
48
+ var require_toggle_selection = __commonJS({
49
+ "../node_modules/toggle-selection/index.js"(exports, module) {
50
+ module.exports = function() {
51
+ var selection = document.getSelection();
52
+ if (!selection.rangeCount) {
53
+ return function() {
54
+ };
55
+ }
56
+ var active = document.activeElement;
57
+ var ranges = [];
58
+ for (var i = 0; i < selection.rangeCount; i++) {
59
+ ranges.push(selection.getRangeAt(i));
60
+ }
61
+ switch (active.tagName.toUpperCase()) {
62
+ // .toUpperCase handles XHTML
63
+ case "INPUT":
64
+ case "TEXTAREA":
65
+ active.blur();
66
+ break;
67
+ default:
68
+ active = null;
69
+ break;
70
+ }
71
+ selection.removeAllRanges();
72
+ return function() {
73
+ selection.type === "Caret" && selection.removeAllRanges();
74
+ if (!selection.rangeCount) {
75
+ ranges.forEach(function(range) {
76
+ selection.addRange(range);
77
+ });
78
+ }
79
+ active && active.focus();
80
+ };
81
+ };
82
+ }
83
+ });
84
+
85
+ // ../node_modules/copy-to-clipboard/index.js
86
+ var require_copy_to_clipboard = __commonJS({
87
+ "../node_modules/copy-to-clipboard/index.js"(exports, module) {
88
+ "use strict";
89
+ var deselectCurrent = require_toggle_selection();
90
+ var clipboardToIE11Formatting = {
91
+ "text/plain": "Text",
92
+ "text/html": "Url",
93
+ "default": "Text"
94
+ };
95
+ var defaultMessage = "Copy to clipboard: #{key}, Enter";
96
+ function format(message) {
97
+ var copyKey = (/mac os x/i.test(navigator.userAgent) ? "\u2318" : "Ctrl") + "+C";
98
+ return message.replace(/#{\s*key\s*}/g, copyKey);
99
+ }
100
+ __name(format, "format");
101
+ function copy2(text, options) {
102
+ var debug, message, reselectPrevious, range, selection, mark, success = false;
103
+ if (!options) {
104
+ options = {};
105
+ }
106
+ debug = options.debug || false;
107
+ try {
108
+ reselectPrevious = deselectCurrent();
109
+ range = document.createRange();
110
+ selection = document.getSelection();
111
+ mark = document.createElement("span");
112
+ mark.textContent = text;
113
+ mark.ariaHidden = "true";
114
+ mark.style.all = "unset";
115
+ mark.style.position = "fixed";
116
+ mark.style.top = 0;
117
+ mark.style.clip = "rect(0, 0, 0, 0)";
118
+ mark.style.whiteSpace = "pre";
119
+ mark.style.webkitUserSelect = "text";
120
+ mark.style.MozUserSelect = "text";
121
+ mark.style.msUserSelect = "text";
122
+ mark.style.userSelect = "text";
123
+ mark.addEventListener("copy", function(e) {
124
+ e.stopPropagation();
125
+ if (options.format) {
126
+ e.preventDefault();
127
+ if (typeof e.clipboardData === "undefined") {
128
+ debug && console.warn("unable to use e.clipboardData");
129
+ debug && console.warn("trying IE specific stuff");
130
+ window.clipboardData.clearData();
131
+ var format2 = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"];
132
+ window.clipboardData.setData(format2, text);
133
+ } else {
134
+ e.clipboardData.clearData();
135
+ e.clipboardData.setData(options.format, text);
136
+ }
137
+ }
138
+ if (options.onCopy) {
139
+ e.preventDefault();
140
+ options.onCopy(e.clipboardData);
141
+ }
142
+ });
143
+ document.body.appendChild(mark);
144
+ range.selectNodeContents(mark);
145
+ selection.addRange(range);
146
+ var successful = document.execCommand("copy");
147
+ if (!successful) {
148
+ throw new Error("copy command was unsuccessful");
149
+ }
150
+ success = true;
151
+ } catch (err) {
152
+ debug && console.error("unable to copy using execCommand: ", err);
153
+ debug && console.warn("trying IE specific stuff");
154
+ try {
155
+ window.clipboardData.setData(options.format || "text", text);
156
+ options.onCopy && options.onCopy(window.clipboardData);
157
+ success = true;
158
+ } catch (err2) {
159
+ debug && console.error("unable to copy using clipboardData: ", err2);
160
+ debug && console.error("falling back to prompt");
161
+ message = format("message" in options ? options.message : defaultMessage);
162
+ window.prompt(message, text);
163
+ }
164
+ } finally {
165
+ if (selection) {
166
+ if (typeof selection.removeRange == "function") {
167
+ selection.removeRange(range);
168
+ } else {
169
+ selection.removeAllRanges();
170
+ }
171
+ }
172
+ if (mark) {
173
+ document.body.removeChild(mark);
174
+ }
175
+ reselectPrevious();
176
+ }
177
+ return success;
178
+ }
179
+ __name(copy2, "copy");
180
+ module.exports = copy2;
181
+ }
182
+ });
183
+
47
184
  // ../node_modules/store2/dist/store2.js
48
185
  var require_store2 = __commonJS({
49
186
  "../node_modules/store2/dist/store2.js"(exports, module) {
50
- (function(window, define) {
187
+ (function(window2, define) {
51
188
  var _ = {
52
189
  version: "2.14.4",
53
190
  areas: {},
@@ -374,17 +511,17 @@ var require_store2 = __commonJS({
374
511
  } else if (typeof module !== "undefined" && module.exports) {
375
512
  module.exports = store2;
376
513
  } else {
377
- if (window.store) {
378
- _.conflict = window.store;
514
+ if (window2.store) {
515
+ _.conflict = window2.store;
379
516
  }
380
- window.store = store2;
517
+ window2.store = store2;
381
518
  }
382
519
  })(exports, exports && exports.define);
383
520
  }
384
521
  });
385
522
 
386
523
  // src/manager-api/root.tsx
387
- import React3, {
524
+ import React4, {
388
525
  Component,
389
526
  Fragment,
390
527
  useCallback as useCallback2,
@@ -943,6 +1080,9 @@ var transformStoryIndexToStoriesHash = /* @__PURE__ */ __name((input, { provider
943
1080
  return currentTags === null ? child.tags : intersect_default(currentTags, child.tags);
944
1081
  }, null);
945
1082
  }
1083
+ if (item.type === "component") {
1084
+ item.importPath = acc[item.children[0]].importPath;
1085
+ }
946
1086
  return acc;
947
1087
  }
948
1088
  __name(addItem, "addItem");
@@ -1326,7 +1466,7 @@ __export(layout_exports, {
1326
1466
  import { SET_CONFIG as SET_CONFIG2 } from "storybook/internal/core-events";
1327
1467
  import { global as global3 } from "@storybook/global";
1328
1468
  import { create } from "storybook/theming/create";
1329
- var { document } = global3;
1469
+ var { document: document2 } = global3;
1330
1470
  var isFunction = /* @__PURE__ */ __name((val) => typeof val === "function", "isFunction");
1331
1471
  var ActiveTabs = {
1332
1472
  SIDEBAR: "sidebar",
@@ -1520,7 +1660,7 @@ var init5 = /* @__PURE__ */ __name(({ store: store2, provider, singleStory }) =>
1520
1660
  if (!elementId) {
1521
1661
  return;
1522
1662
  }
1523
- const element = document.getElementById(elementId);
1663
+ const element = document2.getElementById(elementId);
1524
1664
  if (element) {
1525
1665
  element.focus();
1526
1666
  if (select) {
@@ -1655,15 +1795,68 @@ var init6 = /* @__PURE__ */ __name(({ store: store2 }) => {
1655
1795
  }, "clearNotification")
1656
1796
  };
1657
1797
  const state = { notifications: [] };
1658
- return { api, state };
1798
+ return {
1799
+ api,
1800
+ state
1801
+ };
1802
+ }, "init");
1803
+
1804
+ // src/manager-api/modules/open-in-editor.tsx
1805
+ var open_in_editor_exports = {};
1806
+ __export(open_in_editor_exports, {
1807
+ init: () => init7
1808
+ });
1809
+ import React from "react";
1810
+ import {
1811
+ OPEN_IN_EDITOR_REQUEST,
1812
+ OPEN_IN_EDITOR_RESPONSE
1813
+ } from "storybook/internal/core-events";
1814
+ import { FailedIcon } from "@storybook/icons";
1815
+ import { color } from "storybook/theming";
1816
+ var init7 = /* @__PURE__ */ __name(({ provider, fullAPI }) => {
1817
+ const api = {
1818
+ openInEditor(payload) {
1819
+ return new Promise((resolve) => {
1820
+ const { file, line, column } = payload;
1821
+ const handler = /* @__PURE__ */ __name((res) => {
1822
+ if (res.file === file && res.line === line && res.column === column) {
1823
+ provider.channel?.off(OPEN_IN_EDITOR_RESPONSE, handler);
1824
+ resolve(res);
1825
+ }
1826
+ }, "handler");
1827
+ provider.channel?.on(OPEN_IN_EDITOR_RESPONSE, handler);
1828
+ provider.channel?.emit(OPEN_IN_EDITOR_REQUEST, payload);
1829
+ });
1830
+ }
1831
+ };
1832
+ const state = { notifications: [] };
1833
+ return {
1834
+ api,
1835
+ state,
1836
+ init: /* @__PURE__ */ __name(async () => {
1837
+ provider.channel?.on(OPEN_IN_EDITOR_RESPONSE, (payload) => {
1838
+ if (payload.error !== null) {
1839
+ fullAPI.addNotification({
1840
+ id: "open-in-editor-error",
1841
+ content: {
1842
+ headline: "Failed to open in editor",
1843
+ subHeadline: payload.error || "Check the Storybook process on the command line for more details."
1844
+ },
1845
+ icon: React.createElement(FailedIcon, { color: color.negative }),
1846
+ duration: 8e3
1847
+ });
1848
+ }
1849
+ });
1850
+ }, "init")
1851
+ };
1659
1852
  }, "init");
1660
1853
 
1661
1854
  // src/manager-api/modules/provider.ts
1662
1855
  var provider_exports = {};
1663
1856
  __export(provider_exports, {
1664
- init: () => init7
1857
+ init: () => init8
1665
1858
  });
1666
- var init7 = /* @__PURE__ */ __name(({ provider, fullAPI }) => {
1859
+ var init8 = /* @__PURE__ */ __name(({ provider, fullAPI }) => {
1667
1860
  return {
1668
1861
  api: provider.renderPreview ? { renderPreview: provider.renderPreview } : {},
1669
1862
  state: {},
@@ -1676,9 +1869,9 @@ var init7 = /* @__PURE__ */ __name(({ provider, fullAPI }) => {
1676
1869
  // src/manager-api/modules/settings.ts
1677
1870
  var settings_exports = {};
1678
1871
  __export(settings_exports, {
1679
- init: () => init8
1872
+ init: () => init9
1680
1873
  });
1681
- var init8 = /* @__PURE__ */ __name(({ store: store2, navigate, fullAPI }) => {
1874
+ var init9 = /* @__PURE__ */ __name(({ store: store2, navigate, fullAPI }) => {
1682
1875
  const isSettingsScreenActive = /* @__PURE__ */ __name(() => {
1683
1876
  const { path } = fullAPI.getUrlState();
1684
1877
  return !!(path || "").match(/^\/settings/);
@@ -1720,10 +1913,11 @@ var shortcuts_exports = {};
1720
1913
  __export(shortcuts_exports, {
1721
1914
  controlOrMetaKey: () => controlOrMetaKey2,
1722
1915
  defaultShortcuts: () => defaultShortcuts,
1723
- init: () => init9,
1916
+ init: () => init10,
1724
1917
  isMacLike: () => isMacLike2,
1725
1918
  keys: () => keys
1726
1919
  });
1920
+ var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
1727
1921
  import {
1728
1922
  FORCE_REMOUNT,
1729
1923
  PREVIEW_KEYDOWN,
@@ -1734,8 +1928,8 @@ import { global as global5 } from "@storybook/global";
1734
1928
 
1735
1929
  // src/manager-api/lib/shortcut.ts
1736
1930
  import { global as global4 } from "@storybook/global";
1737
- var { navigator } = global4;
1738
- var isMacLike = /* @__PURE__ */ __name(() => navigator && navigator.platform ? !!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) : false, "isMacLike");
1931
+ var { navigator: navigator2 } = global4;
1932
+ var isMacLike = /* @__PURE__ */ __name(() => navigator2 && navigator2.platform ? !!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i) : false, "isMacLike");
1739
1933
  var controlOrMetaSymbol = /* @__PURE__ */ __name(() => isMacLike() ? "\u2318" : "ctrl", "controlOrMetaSymbol");
1740
1934
  var controlOrMetaKey = /* @__PURE__ */ __name(() => isMacLike() ? "meta" : "control", "controlOrMetaKey");
1741
1935
  var optionOrAltSymbol = /* @__PURE__ */ __name(() => isMacLike() ? "\u2325" : "alt", "optionOrAltSymbol");
@@ -1757,14 +1951,31 @@ var eventToShortcut = /* @__PURE__ */ __name((e) => {
1757
1951
  if (e.shiftKey) {
1758
1952
  keys2.push("shift");
1759
1953
  }
1954
+ const codeUpper = e.code?.toUpperCase();
1955
+ const codeToCharMap = {
1956
+ MINUS: "-",
1957
+ EQUAL: "=",
1958
+ BRACKETLEFT: "[",
1959
+ BRACKETRIGHT: "]",
1960
+ BACKSLASH: "\\",
1961
+ SEMICOLON: ";",
1962
+ QUOTE: "'",
1963
+ BACKQUOTE: "`",
1964
+ COMMA: ",",
1965
+ PERIOD: ".",
1966
+ SLASH: "/"
1967
+ };
1968
+ const codeChar = codeUpper ? codeUpper.startsWith("KEY") && codeUpper.length === 4 ? codeUpper.replace("KEY", "") : codeUpper.startsWith("DIGIT") ? codeUpper.replace("DIGIT", "") : codeToCharMap[codeUpper] : void 0;
1760
1969
  if (e.key && e.key.length === 1 && e.key !== " ") {
1761
1970
  const key = e.key.toUpperCase();
1762
- const code = e.code?.toUpperCase().replace("KEY", "").replace("DIGIT", "");
1971
+ const code = codeChar;
1763
1972
  if (code && code.length === 1 && code !== key) {
1764
1973
  keys2.push([key, code]);
1765
1974
  } else {
1766
1975
  keys2.push(key);
1767
1976
  }
1977
+ } else if (e.key === "Dead" && codeChar) {
1978
+ keys2.push(codeChar);
1768
1979
  }
1769
1980
  if (e.key === " ") {
1770
1981
  keys2.push("space");
@@ -1837,15 +2048,15 @@ var keyToSymbol = /* @__PURE__ */ __name((key) => {
1837
2048
  if (key === "ArrowRight") {
1838
2049
  return "\u2192";
1839
2050
  }
1840
- return key.toUpperCase();
2051
+ return key?.toUpperCase();
1841
2052
  }, "keyToSymbol");
1842
2053
  var shortcutToHumanString = /* @__PURE__ */ __name((shortcut) => {
1843
2054
  return shortcut.map(keyToSymbol).join(" ");
1844
2055
  }, "shortcutToHumanString");
1845
2056
 
1846
2057
  // src/manager-api/modules/shortcuts.ts
1847
- var { navigator: navigator2, document: document2 } = global5;
1848
- var isMacLike2 = /* @__PURE__ */ __name(() => navigator2 && navigator2.platform ? !!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i) : false, "isMacLike");
2058
+ var { navigator: navigator3, document: document3 } = global5;
2059
+ var isMacLike2 = /* @__PURE__ */ __name(() => navigator3 && navigator3.platform ? !!navigator3.platform.match(/(Mac|iPhone|iPod|iPad)/i) : false, "isMacLike");
1849
2060
  var controlOrMetaKey2 = /* @__PURE__ */ __name(() => isMacLike2() ? "meta" : "control", "controlOrMetaKey");
1850
2061
  function keys(o) {
1851
2062
  return Object.keys(o);
@@ -1871,7 +2082,11 @@ var defaultShortcuts = Object.freeze({
1871
2082
  // This one is not customizable
1872
2083
  collapseAll: [controlOrMetaKey2(), "shift", "ArrowUp"],
1873
2084
  expandAll: [controlOrMetaKey2(), "shift", "ArrowDown"],
1874
- remount: ["alt", "R"]
2085
+ remount: ["alt", "R"],
2086
+ openInEditor: ["alt", "shift", "E"],
2087
+ copyStoryLink: ["alt", "shift", "L"]
2088
+ // TODO: bring this back once we want to add shortcuts for this
2089
+ // copyStoryName: ['alt', 'shift', 'C'],
1875
2090
  });
1876
2091
  var addonsShortcuts = {};
1877
2092
  function shouldSkipShortcut(event) {
@@ -1886,7 +2101,7 @@ function shouldSkipShortcut(event) {
1886
2101
  return false;
1887
2102
  }
1888
2103
  __name(shouldSkipShortcut, "shouldSkipShortcut");
1889
- var init9 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
2104
+ var init10 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
1890
2105
  const api = {
1891
2106
  // Getting and setting shortcuts
1892
2107
  getShortcutKeys() {
@@ -1996,7 +2211,7 @@ var init9 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
1996
2211
  break;
1997
2212
  }
1998
2213
  case "focusIframe": {
1999
- const element = document2.getElementById("storybook-preview-iframe");
2214
+ const element = document3.getElementById("storybook-preview-iframe");
2000
2215
  if (element) {
2001
2216
  try {
2002
2217
  element.contentWindow.focus();
@@ -2077,6 +2292,26 @@ var init9 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
2077
2292
  fullAPI.emit(FORCE_REMOUNT, { storyId });
2078
2293
  break;
2079
2294
  }
2295
+ case "openInEditor": {
2296
+ if (global5.CONFIG_TYPE === "DEVELOPMENT") {
2297
+ fullAPI.openInEditor({
2298
+ file: fullAPI.getCurrentStoryData().importPath
2299
+ });
2300
+ }
2301
+ break;
2302
+ }
2303
+ // TODO: bring this back once we want to add shortcuts for this
2304
+ // case 'copyStoryName': {
2305
+ // const storyData = fullAPI.getCurrentStoryData();
2306
+ // if (storyData.type === 'story') {
2307
+ // copy(storyData.exportName);
2308
+ // }
2309
+ // break;
2310
+ // }
2311
+ case "copyStoryLink": {
2312
+ (0, import_copy_to_clipboard.default)(window.location.href);
2313
+ break;
2314
+ }
2080
2315
  default:
2081
2316
  addonsShortcuts[feature].action();
2082
2317
  break;
@@ -2092,7 +2327,7 @@ var init9 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
2092
2327
  )
2093
2328
  };
2094
2329
  const initModule = /* @__PURE__ */ __name(() => {
2095
- document2.addEventListener("keydown", (event) => {
2330
+ document3.addEventListener("keydown", (event) => {
2096
2331
  if (!shouldSkipShortcut(event)) {
2097
2332
  api.handleKeydownEvent(event);
2098
2333
  }
@@ -2107,7 +2342,7 @@ var init9 = /* @__PURE__ */ __name(({ store: store2, fullAPI, provider }) => {
2107
2342
  // src/manager-api/modules/stories.ts
2108
2343
  var stories_exports = {};
2109
2344
  __export(stories_exports, {
2110
- init: () => init10
2345
+ init: () => init11
2111
2346
  });
2112
2347
  import { logger as logger5 } from "storybook/internal/client-logger";
2113
2348
  import {
@@ -2275,12 +2510,12 @@ function createStatusStore({
2275
2510
  __name(createStatusStore, "createStatusStore");
2276
2511
 
2277
2512
  // src/shared/universal-store/use-universal-store-manager.ts
2278
- import * as React from "react";
2513
+ import * as React2 from "react";
2279
2514
  var useUniversalStore = /* @__PURE__ */ __name((universalStore, selector) => {
2280
- const snapshotRef = React.useRef(
2515
+ const snapshotRef = React2.useRef(
2281
2516
  selector ? selector(universalStore.getState()) : universalStore.getState()
2282
2517
  );
2283
- const subscribe = React.useCallback(
2518
+ const subscribe = React2.useCallback(
2284
2519
  (listener) => universalStore.onStateChange((state2, previousState) => {
2285
2520
  if (!selector) {
2286
2521
  snapshotRef.current = state2;
@@ -2297,7 +2532,7 @@ var useUniversalStore = /* @__PURE__ */ __name((universalStore, selector) => {
2297
2532
  }),
2298
2533
  [universalStore, selector]
2299
2534
  );
2300
- const getSnapshot = React.useCallback(() => {
2535
+ const getSnapshot = React2.useCallback(() => {
2301
2536
  const currentState = universalStore.getState();
2302
2537
  const selectedState = selector ? selector(currentState) : currentState;
2303
2538
  if (isEqual(selectedState, snapshotRef.current)) {
@@ -2306,7 +2541,7 @@ var useUniversalStore = /* @__PURE__ */ __name((universalStore, selector) => {
2306
2541
  snapshotRef.current = selectedState;
2307
2542
  return snapshotRef.current;
2308
2543
  }, [universalStore, selector]);
2309
- const state = React.useSyncExternalStore(subscribe, getSnapshot);
2544
+ const state = React2.useSyncExternalStore(subscribe, getSnapshot);
2310
2545
  return [state, universalStore.setState];
2311
2546
  }, "useUniversalStore");
2312
2547
 
@@ -2338,7 +2573,7 @@ function removeRemovedOptions(options) {
2338
2573
  return result;
2339
2574
  }
2340
2575
  __name(removeRemovedOptions, "removeRemovedOptions");
2341
- var init10 = /* @__PURE__ */ __name(({
2576
+ var init11 = /* @__PURE__ */ __name(({
2342
2577
  fullAPI,
2343
2578
  store: store2,
2344
2579
  navigate,
@@ -2839,7 +3074,7 @@ var init10 = /* @__PURE__ */ __name(({
2839
3074
  // src/manager-api/modules/url.ts
2840
3075
  var url_exports = {};
2841
3076
  __export(url_exports, {
2842
- init: () => init11
3077
+ init: () => init12
2843
3078
  });
2844
3079
  import {
2845
3080
  GLOBALS_UPDATED as GLOBALS_UPDATED2,
@@ -2916,7 +3151,7 @@ var initialUrlSupport = /* @__PURE__ */ __name(({
2916
3151
  prevParams = customQueryParams;
2917
3152
  return { viewMode, layout, ui, selectedPanel, location: location2, path, customQueryParams, storyId };
2918
3153
  }, "initialUrlSupport");
2919
- var init11 = /* @__PURE__ */ __name((moduleArgs) => {
3154
+ var init12 = /* @__PURE__ */ __name((moduleArgs) => {
2920
3155
  const { store: store2, navigate, provider, fullAPI } = moduleArgs;
2921
3156
  const navigateTo = /* @__PURE__ */ __name((path, queryParams = {}, options = {}) => {
2922
3157
  const params = Object.entries(queryParams).filter(([, v]) => v).sort(([a], [b]) => a < b ? -1 : 1).map(([k, v]) => `${k}=${v}`);
@@ -3012,14 +3247,14 @@ var init11 = /* @__PURE__ */ __name((moduleArgs) => {
3012
3247
  // src/manager-api/modules/versions.ts
3013
3248
  var versions_exports = {};
3014
3249
  __export(versions_exports, {
3015
- init: () => init12
3250
+ init: () => init13
3016
3251
  });
3017
3252
  var import_memoizerific2 = __toESM(require_memoizerific(), 1);
3018
3253
  import { global as global8 } from "@storybook/global";
3019
3254
  import semver from "semver";
3020
3255
 
3021
3256
  // src/manager-api/version.ts
3022
- var version = "10.0.0-beta.5";
3257
+ var version = "10.0.0-beta.6";
3023
3258
 
3024
3259
  // src/manager-api/modules/versions.ts
3025
3260
  var { VERSIONCHECK } = global8;
@@ -3036,7 +3271,7 @@ var normalizeRendererName = /* @__PURE__ */ __name((renderer) => {
3036
3271
  }
3037
3272
  return renderer;
3038
3273
  }, "normalizeRendererName");
3039
- var init12 = /* @__PURE__ */ __name(({ store: store2 }) => {
3274
+ var init13 = /* @__PURE__ */ __name(({ store: store2 }) => {
3040
3275
  const { dismissedVersionNotification } = store2.getState();
3041
3276
  const state = {
3042
3277
  versions: {
@@ -3125,9 +3360,9 @@ var init12 = /* @__PURE__ */ __name(({ store: store2 }) => {
3125
3360
  // src/manager-api/modules/whatsnew.tsx
3126
3361
  var whatsnew_exports = {};
3127
3362
  __export(whatsnew_exports, {
3128
- init: () => init13
3363
+ init: () => init14
3129
3364
  });
3130
- import React2 from "react";
3365
+ import React3 from "react";
3131
3366
  import {
3132
3367
  REQUEST_WHATS_NEW_DATA,
3133
3368
  RESULT_WHATS_NEW_DATA,
@@ -3136,8 +3371,8 @@ import {
3136
3371
  } from "storybook/internal/core-events";
3137
3372
  import { global as global9 } from "@storybook/global";
3138
3373
  var WHATS_NEW_NOTIFICATION_ID = "whats-new";
3139
- var StorybookIcon = /* @__PURE__ */ __name(({ color = "currentColor", size = 14 }) => {
3140
- return React2.createElement(
3374
+ var StorybookIcon = /* @__PURE__ */ __name(({ color: color2 = "currentColor", size = 14 }) => {
3375
+ return React3.createElement(
3141
3376
  "svg",
3142
3377
  {
3143
3378
  width: size,
@@ -3146,18 +3381,18 @@ var StorybookIcon = /* @__PURE__ */ __name(({ color = "currentColor", size = 14
3146
3381
  fill: "none",
3147
3382
  xmlns: "http://www.w3.org/2000/svg"
3148
3383
  },
3149
- React2.createElement(
3384
+ React3.createElement(
3150
3385
  "path",
3151
3386
  {
3152
3387
  fillRule: "evenodd",
3153
3388
  clipRule: "evenodd",
3154
3389
  d: "M2.042.616a.704.704 0 00-.66.729L1.816 12.9c.014.367.306.66.672.677l9.395.422h.032a.704.704 0 00.704-.703V.704c0-.015 0-.03-.002-.044a.704.704 0 00-.746-.659l-.773.049.057 1.615a.105.105 0 01-.17.086l-.52-.41-.617.468a.105.105 0 01-.168-.088L9.746.134 2.042.616zm8.003 4.747c-.247.192-2.092.324-2.092.05.04-1.045-.429-1.091-.689-1.091-.247 0-.662.075-.662.634 0 .57.607.893 1.32 1.27 1.014.538 2.24 1.188 2.24 2.823 0 1.568-1.273 2.433-2.898 2.433-1.676 0-3.141-.678-2.976-3.03.065-.275 2.197-.21 2.197 0-.026.971.195 1.256.753 1.256.43 0 .624-.236.624-.634 0-.602-.633-.958-1.361-1.367-.987-.554-2.148-1.205-2.148-2.7 0-1.494 1.027-2.489 2.86-2.489 1.832 0 2.832.98 2.832 2.845z",
3155
- fill: color
3390
+ fill: color2
3156
3391
  }
3157
3392
  )
3158
3393
  );
3159
3394
  }, "StorybookIcon");
3160
- var init13 = /* @__PURE__ */ __name(({ fullAPI, store: store2, provider }) => {
3395
+ var init14 = /* @__PURE__ */ __name(({ fullAPI, store: store2, provider }) => {
3161
3396
  const state = {
3162
3397
  whatsNewData: void 0
3163
3398
  };
@@ -3219,7 +3454,7 @@ var init13 = /* @__PURE__ */ __name(({ fullAPI, store: store2, provider }) => {
3219
3454
  headline: whatsNewData.title,
3220
3455
  subHeadline: "Learn what's new in Storybook"
3221
3456
  },
3222
- icon: React2.createElement(StorybookIcon, null),
3457
+ icon: React3.createElement(StorybookIcon, null),
3223
3458
  onClear({ dismissed }) {
3224
3459
  if (dismissed) {
3225
3460
  setWhatsNewCache({ lastDismissedPost: whatsNewData.url });
@@ -3412,7 +3647,8 @@ var _ManagerProvider = class _ManagerProvider extends Component {
3412
3647
  globals_exports,
3413
3648
  url_exports,
3414
3649
  versions_exports,
3415
- whatsnew_exports
3650
+ whatsnew_exports,
3651
+ open_in_editor_exports
3416
3652
  ].map(
3417
3653
  (m) => m.init({ ...routeData, ...optionsData, ...apiData, state: this.state, fullAPI: this.api })
3418
3654
  );
@@ -3445,14 +3681,14 @@ var _ManagerProvider = class _ManagerProvider extends Component {
3445
3681
  state: this.state,
3446
3682
  api: this.api
3447
3683
  };
3448
- return React3.createElement(EffectOnMount, { effect: this.initModules }, React3.createElement(ManagerContext.Provider, { value }, React3.createElement(ManagerConsumer, null, children)));
3684
+ return React4.createElement(EffectOnMount, { effect: this.initModules }, React4.createElement(ManagerContext.Provider, { value }, React4.createElement(ManagerConsumer, null, children)));
3449
3685
  }
3450
3686
  };
3451
3687
  __name(_ManagerProvider, "ManagerProvider");
3452
3688
  _ManagerProvider.displayName = "Manager";
3453
3689
  var ManagerProvider = _ManagerProvider;
3454
3690
  var EffectOnMount = /* @__PURE__ */ __name(({ children, effect }) => {
3455
- React3.useEffect(effect, []);
3691
+ React4.useEffect(effect, []);
3456
3692
  return children;
3457
3693
  }, "EffectOnMount");
3458
3694
  var defaultFilter = /* @__PURE__ */ __name((c) => c, "defaultFilter");
@@ -3465,7 +3701,7 @@ function ManagerConsumer({
3465
3701
  const renderer = useRef2(children);
3466
3702
  const filterer = useRef2(filter);
3467
3703
  if (typeof renderer.current !== "function") {
3468
- return React3.createElement(Fragment, null, renderer.current);
3704
+ return React4.createElement(Fragment, null, renderer.current);
3469
3705
  }
3470
3706
  const comboData = filterer.current(managerContext);
3471
3707
  const comboDataArray = useMemo(() => {
@@ -3473,7 +3709,7 @@ function ManagerConsumer({
3473
3709
  }, [managerContext.state]);
3474
3710
  return useMemo(() => {
3475
3711
  const Child = renderer.current;
3476
- return React3.createElement(Child, { ...comboData });
3712
+ return React4.createElement(Child, { ...comboData });
3477
3713
  }, comboDataArray);
3478
3714
  }
3479
3715
  __name(ManagerConsumer, "ManagerConsumer");
@@ -1,43 +1,43 @@
1
- import CJS_COMPAT_NODE_URL_0oz6lpav6bgq from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_0oz6lpav6bgq from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_0oz6lpav6bgq from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_0oz6lpav6bgq.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_0oz6lpav6bgq.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_0oz6lpav6bgq.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
13
  require_pretty_hrtime
14
- } from "../_node-chunks/chunk-F3WE3456.js";
14
+ } from "../_node-chunks/chunk-NUVGSFQI.js";
15
15
  import {
16
16
  ansi_styles_default,
17
17
  boxen,
18
18
  require_string_width,
19
19
  stripAnsi
20
- } from "../_node-chunks/chunk-TVKUJ3SE.js";
21
- import "../_node-chunks/chunk-AK5PHLUA.js";
20
+ } from "../_node-chunks/chunk-EAOPWIKA.js";
21
+ import "../_node-chunks/chunk-A7CUP23N.js";
22
22
  import {
23
23
  execaSync,
24
24
  optionalEnvToBoolean
25
- } from "../_node-chunks/chunk-TBWOUVTA.js";
26
- import "../_node-chunks/chunk-DZJNLBBL.js";
25
+ } from "../_node-chunks/chunk-55VWKF63.js";
26
+ import "../_node-chunks/chunk-F3PO67U3.js";
27
27
  import {
28
28
  require_prompts,
29
29
  require_src
30
- } from "../_node-chunks/chunk-VX5P3IYA.js";
30
+ } from "../_node-chunks/chunk-E6TLN2J2.js";
31
31
  import {
32
32
  require_picocolors
33
- } from "../_node-chunks/chunk-P3TWEOO5.js";
33
+ } from "../_node-chunks/chunk-5IEY46LQ.js";
34
34
  import {
35
35
  __commonJS,
36
36
  __export,
37
37
  __name,
38
38
  __require,
39
39
  __toESM
40
- } from "../_node-chunks/chunk-2VMDKLSW.js";
40
+ } from "../_node-chunks/chunk-XZTBG2TG.js";
41
41
 
42
42
  // ../node_modules/are-we-there-yet/lib/tracker-base.js
43
43
  var require_tracker_base = __commonJS({