@storybook/addon-docs 10.3.0-alpha.13 → 10.3.0-alpha.15

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.
@@ -903,6 +903,7 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
903
903
  code,
904
904
  dark,
905
905
  format: format2 = !0,
906
+ copyable = !0,
906
907
  ...rest
907
908
  }) => {
908
909
  let { typography } = useTheme();
@@ -914,7 +915,7 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
914
915
  StyledSyntaxHighlighter,
915
916
  {
916
917
  bordered: !0,
917
- copyable: !0,
918
+ copyable,
918
919
  format: format2,
919
920
  language: language ?? "jsx",
920
921
  className: "docblock-source sb-unstyled",
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -12,15 +12,15 @@ var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  stringify
15
- } from "./chunk-CP2XQUAY.js";
15
+ } from "./chunk-JJIKB62L.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-BDSWGEW6.js";
18
+ } from "./chunk-XYBXX55A.js";
19
19
  import {
20
20
  __commonJS,
21
21
  __export,
22
22
  __toESM
23
- } from "./chunk-CQTZVEMS.js";
23
+ } from "./chunk-QGPMGHUJ.js";
24
24
 
25
25
  // ../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/xhtml.js
26
26
  var require_xhtml = __commonJS({
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,23 +1,23 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.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
  compile
14
- } from "./chunk-DA5UIHBB.js";
15
- import "./chunk-CP2XQUAY.js";
16
- import "./chunk-BDSWGEW6.js";
14
+ } from "./chunk-SGHF6HZP.js";
15
+ import "./chunk-JJIKB62L.js";
16
+ import "./chunk-XYBXX55A.js";
17
17
  import {
18
18
  __commonJS,
19
19
  __toESM
20
- } from "./chunk-CQTZVEMS.js";
20
+ } from "./chunk-QGPMGHUJ.js";
21
21
 
22
22
  // ../../../node_modules/@rollup/pluginutils/node_modules/picomatch/lib/constants.js
23
23
  var require_constants = __commonJS({
@@ -1000,7 +1000,7 @@ var hasStringIsWellFormed = "isWellFormed" in String.prototype;
1000
1000
 
1001
1001
  // src/mdx-plugin.ts
1002
1002
  async function mdxPlugin(options) {
1003
- let filter = createFilter(/\.mdx$/), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-QLZVFQPQ.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-5KW3REQO.js")).default;
1003
+ let filter = createFilter(/\.mdx$/), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-DX43MPFV.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-D2POXJ6Q.js")).default;
1004
1004
  return {
1005
1005
  name: "storybook:mdx-plugin",
1006
1006
  enforce: "pre",
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -12,11 +12,11 @@ var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  parse
15
- } from "./chunk-CP2XQUAY.js";
15
+ } from "./chunk-JJIKB62L.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-BDSWGEW6.js";
19
- import "./chunk-CQTZVEMS.js";
18
+ } from "./chunk-XYBXX55A.js";
19
+ import "./chunk-QGPMGHUJ.js";
20
20
 
21
21
  // ../../../node_modules/hast-util-is-element/lib/index.js
22
22
  var convertElement = (
@@ -1,18 +1,18 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.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
  visit
14
- } from "./chunk-BDSWGEW6.js";
15
- import "./chunk-CQTZVEMS.js";
14
+ } from "./chunk-XYBXX55A.js";
15
+ import "./chunk-QGPMGHUJ.js";
16
16
 
17
17
  // ../../../node_modules/github-slugger/regex.js
18
18
  var regex = /[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g;
package/dist/blocks.d.ts CHANGED
@@ -88,6 +88,8 @@ interface SourceCodeProps {
88
88
  format?: ComponentProps<typeof SyntaxHighlighter>['format'];
89
89
  /** Display the source snippet in a dark mode. */
90
90
  dark?: boolean;
91
+ /** Whether to show the copy button. Defaults to true. */
92
+ copyable?: boolean;
91
93
  }
92
94
  interface SourceProps$1 extends SourceCodeProps {
93
95
  isLoading?: boolean;
package/dist/blocks.js CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  curriedOpacify$1,
11
11
  curriedTransparentize$1,
12
12
  rgba
13
- } from "./_browser-chunks/chunk-AAVP3AE4.js";
13
+ } from "./_browser-chunks/chunk-SPXYZZB5.js";
14
14
  import "./_browser-chunks/chunk-SL3VIQZ3.js";
15
15
 
16
16
  // src/blocks/components/ArgsTable/ArgsTable.tsx
@@ -1130,7 +1130,7 @@ var normalizeOptions = (options, labels) => Array.isArray(options) ? options.red
1130
1130
  // src/blocks/controls/Object.tsx
1131
1131
  import React11, { useCallback as useCallback3, useEffect as useEffect4, useMemo, useRef as useRef3, useState as useState4 } from "react";
1132
1132
  import { Button as Button3, Form as Form3, ToggleButton } from "storybook/internal/components";
1133
- import { AddIcon, SubtractIcon } from "@storybook/icons";
1133
+ import { AddIcon, EditIcon, SubtractIcon } from "@storybook/icons";
1134
1134
  import { styled as styled8, useTheme } from "storybook/theming";
1135
1135
 
1136
1136
  // src/blocks/controls/react-editable-json-tree/index.tsx
@@ -1354,7 +1354,7 @@ var JsonArray = class extends Component {
1354
1354
  }
1355
1355
  handleRemoveItem(index) {
1356
1356
  return () => {
1357
- let { beforeRemoveAction, logger: logger4 } = this.props, { data, keyPath, nextDeep: deep } = this.state, oldValue = data[index];
1357
+ let { beforeRemoveAction, logger: logger5 } = this.props, { data, keyPath, nextDeep: deep } = this.state, oldValue = data[index];
1358
1358
  (beforeRemoveAction || Promise.resolve.bind(Promise))(index, keyPath, deep, oldValue).then(() => {
1359
1359
  let deltaUpdateResult = {
1360
1360
  keyPath,
@@ -1366,11 +1366,11 @@ var JsonArray = class extends Component {
1366
1366
  data.splice(index, 1), this.setState({ data });
1367
1367
  let { onUpdate, onDeltaUpdate } = this.props;
1368
1368
  onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate(deltaUpdateResult);
1369
- }).catch(logger4.error);
1369
+ }).catch(logger5.error);
1370
1370
  };
1371
1371
  }
1372
1372
  handleAddValueAdd({ newValue }) {
1373
- let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger4 } = this.props, key = data.length;
1373
+ let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger5 } = this.props, key = data.length;
1374
1374
  (beforeAddAction || Promise.resolve.bind(Promise))(key, keyPath, deep, newValue).then(() => {
1375
1375
  data[key] = newValue, this.setState({
1376
1376
  data
@@ -1383,7 +1383,7 @@ var JsonArray = class extends Component {
1383
1383
  key,
1384
1384
  newValue
1385
1385
  });
1386
- }).catch(logger4.error);
1386
+ }).catch(logger5.error);
1387
1387
  }
1388
1388
  handleAddValueCancel() {
1389
1389
  this.setState({
@@ -1433,7 +1433,7 @@ var JsonArray = class extends Component {
1433
1433
  beforeRemoveAction,
1434
1434
  beforeAddAction,
1435
1435
  beforeUpdateAction,
1436
- logger: logger4,
1436
+ logger: logger5,
1437
1437
  onSubmitValueParser
1438
1438
  } = this.props, isReadOnly = readOnly(name, data, keyPath, deep, dataType), addItemButton = plusMenuElement && cloneElement2(plusMenuElement, {
1439
1439
  onClick: this.handleAddMode,
@@ -1467,7 +1467,7 @@ var JsonArray = class extends Component {
1467
1467
  beforeRemoveAction,
1468
1468
  beforeAddAction,
1469
1469
  beforeUpdateAction,
1470
- logger: logger4,
1470
+ logger: logger5,
1471
1471
  onSubmitValueParser
1472
1472
  }
1473
1473
  ))), !isReadOnly && addFormVisible && React9.createElement("div", { className: "rejt-add-form" }, React9.createElement(
@@ -1531,7 +1531,7 @@ var JsonFunctionValue = class extends Component {
1531
1531
  event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.repeat || inputRef !== event.target || ((event.code === "Enter" || event.key === "Enter") && (event.preventDefault(), this.handleEdit()), (event.code === "Escape" || event.key === "Escape") && (event.preventDefault(), this.handleCancelEdit()));
1532
1532
  }
1533
1533
  handleEdit() {
1534
- let { handleUpdateValue, originalValue, logger: logger4, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
1534
+ let { handleUpdateValue, originalValue, logger: logger5, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
1535
1535
  if (!inputRef)
1536
1536
  return;
1537
1537
  let newValue = onSubmitValueParser(!0, keyPath, deep, name, inputRef.value), result = {
@@ -1540,7 +1540,7 @@ var JsonFunctionValue = class extends Component {
1540
1540
  };
1541
1541
  (handleUpdateValue || Promise.resolve.bind(Promise))(result).then(() => {
1542
1542
  isComponentWillChange(originalValue, newValue) || this.handleCancelEdit();
1543
- }).catch(logger4.error);
1543
+ }).catch(logger5.error);
1544
1544
  }
1545
1545
  handleEditMode() {
1546
1546
  this.setState({
@@ -1628,7 +1628,7 @@ var JsonNode = class extends Component {
1628
1628
  beforeRemoveAction,
1629
1629
  beforeAddAction,
1630
1630
  beforeUpdateAction,
1631
- logger: logger4,
1631
+ logger: logger5,
1632
1632
  onSubmitValueParser
1633
1633
  } = this.props, readOnlyTrue = () => !0, dataType = getObjectType(data);
1634
1634
  switch (dataType) {
@@ -1655,7 +1655,7 @@ var JsonNode = class extends Component {
1655
1655
  beforeRemoveAction,
1656
1656
  beforeAddAction,
1657
1657
  beforeUpdateAction,
1658
- logger: logger4,
1658
+ logger: logger5,
1659
1659
  onSubmitValueParser
1660
1660
  }
1661
1661
  );
@@ -1682,7 +1682,7 @@ var JsonNode = class extends Component {
1682
1682
  beforeRemoveAction,
1683
1683
  beforeAddAction,
1684
1684
  beforeUpdateAction,
1685
- logger: logger4,
1685
+ logger: logger5,
1686
1686
  onSubmitValueParser
1687
1687
  }
1688
1688
  );
@@ -1709,7 +1709,7 @@ var JsonNode = class extends Component {
1709
1709
  beforeRemoveAction,
1710
1710
  beforeAddAction,
1711
1711
  beforeUpdateAction,
1712
- logger: logger4,
1712
+ logger: logger5,
1713
1713
  onSubmitValueParser
1714
1714
  }
1715
1715
  );
@@ -1729,7 +1729,7 @@ var JsonNode = class extends Component {
1729
1729
  cancelButtonElement,
1730
1730
  inputElementGenerator,
1731
1731
  minusMenuElement,
1732
- logger: logger4,
1732
+ logger: logger5,
1733
1733
  onSubmitValueParser
1734
1734
  }
1735
1735
  );
@@ -1749,7 +1749,7 @@ var JsonNode = class extends Component {
1749
1749
  cancelButtonElement,
1750
1750
  inputElementGenerator,
1751
1751
  minusMenuElement,
1752
- logger: logger4,
1752
+ logger: logger5,
1753
1753
  onSubmitValueParser
1754
1754
  }
1755
1755
  );
@@ -1769,7 +1769,7 @@ var JsonNode = class extends Component {
1769
1769
  cancelButtonElement,
1770
1770
  inputElementGenerator,
1771
1771
  minusMenuElement,
1772
- logger: logger4,
1772
+ logger: logger5,
1773
1773
  onSubmitValueParser
1774
1774
  }
1775
1775
  );
@@ -1789,7 +1789,7 @@ var JsonNode = class extends Component {
1789
1789
  cancelButtonElement,
1790
1790
  inputElementGenerator,
1791
1791
  minusMenuElement,
1792
- logger: logger4,
1792
+ logger: logger5,
1793
1793
  onSubmitValueParser
1794
1794
  }
1795
1795
  );
@@ -1809,7 +1809,7 @@ var JsonNode = class extends Component {
1809
1809
  cancelButtonElement,
1810
1810
  inputElementGenerator,
1811
1811
  minusMenuElement,
1812
- logger: logger4,
1812
+ logger: logger5,
1813
1813
  onSubmitValueParser
1814
1814
  }
1815
1815
  );
@@ -1829,7 +1829,7 @@ var JsonNode = class extends Component {
1829
1829
  cancelButtonElement,
1830
1830
  inputElementGenerator,
1831
1831
  minusMenuElement,
1832
- logger: logger4,
1832
+ logger: logger5,
1833
1833
  onSubmitValueParser
1834
1834
  }
1835
1835
  );
@@ -1849,7 +1849,7 @@ var JsonNode = class extends Component {
1849
1849
  cancelButtonElement,
1850
1850
  textareaElementGenerator,
1851
1851
  minusMenuElement,
1852
- logger: logger4,
1852
+ logger: logger5,
1853
1853
  onSubmitValueParser
1854
1854
  }
1855
1855
  );
@@ -1869,7 +1869,7 @@ var JsonNode = class extends Component {
1869
1869
  cancelButtonElement,
1870
1870
  inputElementGenerator,
1871
1871
  minusMenuElement,
1872
- logger: logger4,
1872
+ logger: logger5,
1873
1873
  onSubmitValueParser
1874
1874
  }
1875
1875
  );
@@ -1918,7 +1918,7 @@ var JsonObject = class extends Component {
1918
1918
  });
1919
1919
  }
1920
1920
  handleAddValueAdd({ key, newValue }) {
1921
- let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger4 } = this.props;
1921
+ let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger5 } = this.props;
1922
1922
  (beforeAddAction || Promise.resolve.bind(Promise))(key, keyPath, deep, newValue).then(() => {
1923
1923
  data[key] = newValue, this.setState({
1924
1924
  data
@@ -1931,11 +1931,11 @@ var JsonObject = class extends Component {
1931
1931
  key,
1932
1932
  newValue
1933
1933
  });
1934
- }).catch(logger4.error);
1934
+ }).catch(logger5.error);
1935
1935
  }
1936
1936
  handleRemoveValue(key) {
1937
1937
  return () => {
1938
- let { beforeRemoveAction, logger: logger4 } = this.props, { data, keyPath = [], nextDeep: deep } = this.state, oldValue = data[key];
1938
+ let { beforeRemoveAction, logger: logger5 } = this.props, { data, keyPath = [], nextDeep: deep } = this.state, oldValue = data[key];
1939
1939
  (beforeRemoveAction || Promise.resolve.bind(Promise))(key, keyPath, deep, oldValue).then(() => {
1940
1940
  let deltaUpdateResult = {
1941
1941
  keyPath,
@@ -1947,7 +1947,7 @@ var JsonObject = class extends Component {
1947
1947
  delete data[key], this.setState({ data });
1948
1948
  let { onUpdate, onDeltaUpdate } = this.props;
1949
1949
  onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate(deltaUpdateResult);
1950
- }).catch(logger4.error);
1950
+ }).catch(logger5.error);
1951
1951
  };
1952
1952
  }
1953
1953
  handleCollapseMode() {
@@ -1998,7 +1998,7 @@ var JsonObject = class extends Component {
1998
1998
  beforeRemoveAction,
1999
1999
  beforeAddAction,
2000
2000
  beforeUpdateAction,
2001
- logger: logger4,
2001
+ logger: logger5,
2002
2002
  onSubmitValueParser
2003
2003
  } = this.props, keyList = Object.getOwnPropertyNames(data), isReadOnly = readOnly(name, data, keyPath, deep, dataType), addItemButton = plusMenuElement && cloneElement2(plusMenuElement, {
2004
2004
  onClick: this.handleAddMode,
@@ -2031,7 +2031,7 @@ var JsonObject = class extends Component {
2031
2031
  beforeRemoveAction,
2032
2032
  beforeAddAction,
2033
2033
  beforeUpdateAction,
2034
- logger: logger4,
2034
+ logger: logger5,
2035
2035
  onSubmitValueParser
2036
2036
  }
2037
2037
  ));
@@ -2095,7 +2095,7 @@ var JsonValue = class extends Component {
2095
2095
  event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.repeat || inputRef !== event.target || ((event.code === "Enter" || event.key === "Enter") && (event.preventDefault(), this.handleEdit()), (event.code === "Escape" || event.key === "Escape") && (event.preventDefault(), this.handleCancelEdit()));
2096
2096
  }
2097
2097
  handleEdit() {
2098
- let { handleUpdateValue, originalValue, logger: logger4, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
2098
+ let { handleUpdateValue, originalValue, logger: logger5, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
2099
2099
  if (!inputRef)
2100
2100
  return;
2101
2101
  let newValue = onSubmitValueParser(!0, keyPath, deep, name, inputRef.value), result = {
@@ -2104,7 +2104,7 @@ var JsonValue = class extends Component {
2104
2104
  };
2105
2105
  (handleUpdateValue || Promise.resolve.bind(Promise))(result).then(() => {
2106
2106
  isComponentWillChange(originalValue, newValue) || this.handleCancelEdit();
2107
- }).catch(logger4.error);
2107
+ }).catch(logger5.error);
2108
2108
  }
2109
2109
  handleEditMode() {
2110
2110
  this.setState({
@@ -2201,7 +2201,7 @@ var JsonTree = class extends Component2 {
2201
2201
  beforeRemoveAction,
2202
2202
  beforeAddAction,
2203
2203
  beforeUpdateAction,
2204
- logger: logger4,
2204
+ logger: logger5,
2205
2205
  onSubmitValueParser,
2206
2206
  fallback = null
2207
2207
  } = this.props, dataType = getObjectType(data), readOnlyFunction = readOnly;
@@ -2230,7 +2230,7 @@ var JsonTree = class extends Component2 {
2230
2230
  beforeRemoveAction,
2231
2231
  beforeAddAction,
2232
2232
  beforeUpdateAction,
2233
- logger: logger4 ?? {},
2233
+ logger: logger5 ?? {},
2234
2234
  onSubmitValueParser: onSubmitValueParser ?? ((val) => val)
2235
2235
  }
2236
2236
  )) : fallback;
@@ -2260,7 +2260,9 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2260
2260
  position: "relative",
2261
2261
  display: "flex",
2262
2262
  isolation: "isolate",
2263
+ gap: 8,
2263
2264
  ".rejt-tree": {
2265
+ flex: 1,
2264
2266
  marginLeft: "1rem",
2265
2267
  fontSize: "13px",
2266
2268
  listStyleType: "none"
@@ -2358,10 +2360,9 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2358
2360
  border: `1px solid ${theme.color.secondary}`
2359
2361
  }
2360
2362
  })), RawButton = styled8(ToggleButton)({
2361
- position: "absolute",
2362
- zIndex: 2,
2363
- top: 2,
2364
- right: 2
2363
+ alignSelf: "flex-start",
2364
+ order: 2,
2365
+ marginRight: -10
2365
2366
  }), RawInput = styled8(Form3.Textarea)(({ theme }) => ({
2366
2367
  flex: 1,
2367
2368
  padding: "7px 6px",
@@ -2397,7 +2398,7 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2397
2398
  [onChange]
2398
2399
  ), [forceVisible, setForceVisible] = useState4(!1), onForceVisible = useCallback3(() => {
2399
2400
  onChange({}), setForceVisible(!0);
2400
- }, [setForceVisible]), htmlElRef = useRef3(null);
2401
+ }, [onChange, setForceVisible]), htmlElRef = useRef3(null);
2401
2402
  useEffect4(() => {
2402
2403
  forceVisible && htmlElRef.current && htmlElRef.current.select();
2403
2404
  }, [forceVisible]);
@@ -2434,12 +2435,15 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2434
2435
  {
2435
2436
  disabled: readonly,
2436
2437
  pressed: showRaw,
2437
- ariaLabel: `Edit the ${name} properties in JSON format`,
2438
+ ariaLabel: `Edit ${name} as JSON`,
2438
2439
  onClick: (e2) => {
2439
2440
  e2.preventDefault(), setShowRaw((isRaw) => !isRaw);
2440
- }
2441
+ },
2442
+ variant: "ghost",
2443
+ padding: "small",
2444
+ size: "small"
2441
2445
  },
2442
- "Edit JSON"
2446
+ React11.createElement(EditIcon, null)
2443
2447
  ), showRaw ? rawJSONForm : React11.createElement(
2444
2448
  JsonTree,
2445
2449
  {
@@ -3826,8 +3830,324 @@ var toGlobalSelector = (element) => `& :where(${element}:not(.sb-anchor, .sb-uns
3826
3830
  })), DocsPageWrapper = ({ children, toc }) => React24.createElement(DocsWrapper, { className: "sbdocs sbdocs-wrapper" }, toc, React24.createElement(DocsContent, { className: "sbdocs sbdocs-content" }, children));
3827
3831
 
3828
3832
  // src/blocks/components/Preview.tsx
3829
- import React29, { Children, useCallback as useCallback6, useContext as useContext2, useState as useState13 } from "react";
3830
- import { ActionBar, Zoom } from "storybook/internal/components";
3833
+ import React29, { Children, useCallback as useCallback6, useContext as useContext2, useMemo as useMemo3, useState as useState13 } from "react";
3834
+ import { logger as logger4 } from "storybook/internal/client-logger";
3835
+ import { Bar, Button as Button7, ToggleButton as ToggleButton2, Zoom } from "storybook/internal/components";
3836
+ import { CopyIcon, MarkupIcon } from "@storybook/icons";
3837
+
3838
+ // ../../../node_modules/@react-aria/utils/dist/useLayoutEffect.mjs
3839
+ import $HgANd$react from "react";
3840
+ var $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document < "u" ? $HgANd$react.useLayoutEffect : () => {
3841
+ };
3842
+
3843
+ // ../../../node_modules/@react-aria/utils/dist/useValueEffect.mjs
3844
+ import { useState as $fCAlL$useState, useRef as $fCAlL$useRef, useCallback as $fCAlL$useCallback } from "react";
3845
+
3846
+ // ../../../node_modules/@react-aria/utils/dist/useId.mjs
3847
+ import { useState as $eKkEp$useState, useRef as $eKkEp$useRef, useEffect as $eKkEp$useEffect, useCallback as $eKkEp$useCallback } from "react";
3848
+
3849
+ // ../../../node_modules/@react-aria/ssr/dist/SSRProvider.mjs
3850
+ import $670gB$react, { useContext as $670gB$useContext, useState as $670gB$useState, useMemo as $670gB$useMemo, useLayoutEffect as $670gB$useLayoutEffect, useRef as $670gB$useRef } from "react";
3851
+ var $b5e257d569688ac6$var$defaultContext = {
3852
+ prefix: String(Math.round(Math.random() * 1e10)),
3853
+ current: 0
3854
+ }, $b5e257d569688ac6$var$SSRContext = $670gB$react.createContext($b5e257d569688ac6$var$defaultContext), $b5e257d569688ac6$var$IsSSRContext = $670gB$react.createContext(!1);
3855
+ var $b5e257d569688ac6$var$canUseDOM = !!(typeof window < "u" && window.document && window.document.createElement), $b5e257d569688ac6$var$componentIds = /* @__PURE__ */ new WeakMap();
3856
+ function $b5e257d569688ac6$var$useCounter(isDisabled = !1) {
3857
+ let ctx = $670gB$useContext($b5e257d569688ac6$var$SSRContext), ref = $670gB$useRef(null);
3858
+ if (ref.current === null && !isDisabled) {
3859
+ var _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner, _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
3860
+ let currentOwner = (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = $670gB$react.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === void 0 || (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner = _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner === void 0 ? void 0 : _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner.current;
3861
+ if (currentOwner) {
3862
+ let prevComponentValue = $b5e257d569688ac6$var$componentIds.get(currentOwner);
3863
+ prevComponentValue == null ? $b5e257d569688ac6$var$componentIds.set(currentOwner, {
3864
+ id: ctx.current,
3865
+ state: currentOwner.memoizedState
3866
+ }) : currentOwner.memoizedState !== prevComponentValue.state && (ctx.current = prevComponentValue.id, $b5e257d569688ac6$var$componentIds.delete(currentOwner));
3867
+ }
3868
+ ref.current = ++ctx.current;
3869
+ }
3870
+ return ref.current;
3871
+ }
3872
+ function $b5e257d569688ac6$var$useLegacySSRSafeId(defaultId) {
3873
+ let ctx = $670gB$useContext($b5e257d569688ac6$var$SSRContext);
3874
+ ctx === $b5e257d569688ac6$var$defaultContext && !$b5e257d569688ac6$var$canUseDOM && process.env.NODE_ENV !== "production" && console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");
3875
+ let counter = $b5e257d569688ac6$var$useCounter(!!defaultId), prefix = ctx === $b5e257d569688ac6$var$defaultContext && process.env.NODE_ENV === "test" ? "react-aria" : `react-aria${ctx.prefix}`;
3876
+ return defaultId || `${prefix}-${counter}`;
3877
+ }
3878
+ function $b5e257d569688ac6$var$useModernSSRSafeId(defaultId) {
3879
+ let id = $670gB$react.useId(), [didSSR] = $670gB$useState($b5e257d569688ac6$export$535bd6ca7f90a273()), prefix = didSSR || process.env.NODE_ENV === "test" ? "react-aria" : `react-aria${$b5e257d569688ac6$var$defaultContext.prefix}`;
3880
+ return defaultId || `${prefix}-${id}`;
3881
+ }
3882
+ var $b5e257d569688ac6$export$619500959fc48b26 = typeof $670gB$react.useId == "function" ? $b5e257d569688ac6$var$useModernSSRSafeId : $b5e257d569688ac6$var$useLegacySSRSafeId;
3883
+ function $b5e257d569688ac6$var$getSnapshot() {
3884
+ return !1;
3885
+ }
3886
+ function $b5e257d569688ac6$var$getServerSnapshot() {
3887
+ return !0;
3888
+ }
3889
+ function $b5e257d569688ac6$var$subscribe(onStoreChange) {
3890
+ return () => {
3891
+ };
3892
+ }
3893
+ function $b5e257d569688ac6$export$535bd6ca7f90a273() {
3894
+ return typeof $670gB$react.useSyncExternalStore == "function" ? $670gB$react.useSyncExternalStore($b5e257d569688ac6$var$subscribe, $b5e257d569688ac6$var$getSnapshot, $b5e257d569688ac6$var$getServerSnapshot) : $670gB$useContext($b5e257d569688ac6$var$IsSSRContext);
3895
+ }
3896
+
3897
+ // ../../../node_modules/@react-aria/utils/dist/useId.mjs
3898
+ var $bdb11010cef70236$var$canUseDOM = !!(typeof window < "u" && window.document && window.document.createElement), $bdb11010cef70236$export$d41a04c74483c6ef = /* @__PURE__ */ new Map(), $bdb11010cef70236$var$registry;
3899
+ typeof FinalizationRegistry < "u" && ($bdb11010cef70236$var$registry = new FinalizationRegistry((heldValue) => {
3900
+ $bdb11010cef70236$export$d41a04c74483c6ef.delete(heldValue);
3901
+ }));
3902
+ function $bdb11010cef70236$export$f680877a34711e37(defaultId) {
3903
+ let [value, setValue] = $eKkEp$useState(defaultId), nextId = $eKkEp$useRef(null), res = $b5e257d569688ac6$export$619500959fc48b26(value), cleanupRef = $eKkEp$useRef(null);
3904
+ if ($bdb11010cef70236$var$registry && $bdb11010cef70236$var$registry.register(cleanupRef, res), $bdb11010cef70236$var$canUseDOM) {
3905
+ let cacheIdRef = $bdb11010cef70236$export$d41a04c74483c6ef.get(res);
3906
+ cacheIdRef && !cacheIdRef.includes(nextId) ? cacheIdRef.push(nextId) : $bdb11010cef70236$export$d41a04c74483c6ef.set(res, [
3907
+ nextId
3908
+ ]);
3909
+ }
3910
+ return $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(() => {
3911
+ let r2 = res;
3912
+ return () => {
3913
+ $bdb11010cef70236$var$registry && $bdb11010cef70236$var$registry.unregister(cleanupRef), $bdb11010cef70236$export$d41a04c74483c6ef.delete(r2);
3914
+ };
3915
+ }, [
3916
+ res
3917
+ ]), $eKkEp$useEffect(() => {
3918
+ let newId = nextId.current;
3919
+ return newId && setValue(newId), () => {
3920
+ newId && (nextId.current = null);
3921
+ };
3922
+ }), res;
3923
+ }
3924
+
3925
+ // ../../../node_modules/@react-aria/utils/dist/focusWithoutScrolling.mjs
3926
+ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {
3927
+ if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({
3928
+ preventScroll: !0
3929
+ });
3930
+ else {
3931
+ let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);
3932
+ element.focus(), $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);
3933
+ }
3934
+ }
3935
+ var $7215afc6de606d6b$var$supportsPreventScrollCached = null;
3936
+ function $7215afc6de606d6b$var$supportsPreventScroll() {
3937
+ if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {
3938
+ $7215afc6de606d6b$var$supportsPreventScrollCached = !1;
3939
+ try {
3940
+ document.createElement("div").focus({
3941
+ get preventScroll() {
3942
+ return $7215afc6de606d6b$var$supportsPreventScrollCached = !0, !0;
3943
+ }
3944
+ });
3945
+ } catch {
3946
+ }
3947
+ }
3948
+ return $7215afc6de606d6b$var$supportsPreventScrollCached;
3949
+ }
3950
+ function $7215afc6de606d6b$var$getScrollableElements(element) {
3951
+ let parent = element.parentNode, scrollableElements = [], rootScrollingElement = document.scrollingElement || document.documentElement;
3952
+ for (; parent instanceof HTMLElement && parent !== rootScrollingElement; )
3953
+ (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) && scrollableElements.push({
3954
+ element: parent,
3955
+ scrollTop: parent.scrollTop,
3956
+ scrollLeft: parent.scrollLeft
3957
+ }), parent = parent.parentNode;
3958
+ return rootScrollingElement instanceof HTMLElement && scrollableElements.push({
3959
+ element: rootScrollingElement,
3960
+ scrollTop: rootScrollingElement.scrollTop,
3961
+ scrollLeft: rootScrollingElement.scrollLeft
3962
+ }), scrollableElements;
3963
+ }
3964
+ function $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {
3965
+ for (let { element, scrollTop, scrollLeft } of scrollableElements)
3966
+ element.scrollTop = scrollTop, element.scrollLeft = scrollLeft;
3967
+ }
3968
+
3969
+ // ../../../node_modules/@react-aria/utils/dist/platform.mjs
3970
+ function $c87311424ea30a05$var$testUserAgent(re2) {
3971
+ var _window_navigator_userAgentData;
3972
+ if (typeof window > "u" || window.navigator == null) return !1;
3973
+ let brands = (_window_navigator_userAgentData = window.navigator.userAgentData) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands;
3974
+ return Array.isArray(brands) && brands.some((brand) => re2.test(brand.brand)) || re2.test(window.navigator.userAgent);
3975
+ }
3976
+ function $c87311424ea30a05$var$testPlatform(re2) {
3977
+ var _window_navigator_userAgentData;
3978
+ return typeof window < "u" && window.navigator != null ? re2.test(((_window_navigator_userAgentData = window.navigator.userAgentData) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : !1;
3979
+ }
3980
+ function $c87311424ea30a05$var$cached(fn) {
3981
+ if (process.env.NODE_ENV === "test") return fn;
3982
+ let res = null;
3983
+ return () => (res == null && (res = fn()), res);
3984
+ }
3985
+ var $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {
3986
+ return $c87311424ea30a05$var$testPlatform(/^Mac/i);
3987
+ }), $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {
3988
+ return $c87311424ea30a05$var$testPlatform(/^iPhone/i);
3989
+ }), $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {
3990
+ return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.
3991
+ $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;
3992
+ }), $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {
3993
+ return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();
3994
+ }), $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {
3995
+ return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();
3996
+ }), $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {
3997
+ return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();
3998
+ }), $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {
3999
+ return $c87311424ea30a05$var$testUserAgent(/Chrome/i);
4000
+ }), $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {
4001
+ return $c87311424ea30a05$var$testUserAgent(/Android/i);
4002
+ }), $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {
4003
+ return $c87311424ea30a05$var$testUserAgent(/Firefox/i);
4004
+ });
4005
+
4006
+ // ../../../node_modules/@react-aria/utils/dist/openLink.mjs
4007
+ import $g3jFn$react, { createContext as $g3jFn$createContext, useMemo as $g3jFn$useMemo, useContext as $g3jFn$useContext } from "react";
4008
+ var $ea8dcbcb9ea1b556$var$RouterContext = $g3jFn$createContext({
4009
+ isNative: !0,
4010
+ open: $ea8dcbcb9ea1b556$var$openSyntheticLink,
4011
+ useHref: (href) => href
4012
+ });
4013
+ function $ea8dcbcb9ea1b556$export$95185d699e05d4d7(target, modifiers, setOpening = !0) {
4014
+ var _window_event_type, _window_event;
4015
+ let { metaKey, ctrlKey, altKey, shiftKey } = modifiers;
4016
+ $c87311424ea30a05$export$b7d78993b74f766d() && (!((_window_event = window.event) === null || _window_event === void 0 || (_window_event_type = _window_event.type) === null || _window_event_type === void 0) && _window_event_type.startsWith("key")) && target.target === "_blank" && ($c87311424ea30a05$export$9ac100e40613ea10() ? metaKey = !0 : ctrlKey = !0);
4017
+ let event = $c87311424ea30a05$export$78551043582a6a98() && $c87311424ea30a05$export$9ac100e40613ea10() && !$c87311424ea30a05$export$7bef049ce92e4224() && process.env.NODE_ENV !== "test" ? new KeyboardEvent("keydown", {
4018
+ keyIdentifier: "Enter",
4019
+ metaKey,
4020
+ ctrlKey,
4021
+ altKey,
4022
+ shiftKey
4023
+ }) : new MouseEvent("click", {
4024
+ metaKey,
4025
+ ctrlKey,
4026
+ altKey,
4027
+ shiftKey,
4028
+ detail: 1,
4029
+ bubbles: !0,
4030
+ cancelable: !0
4031
+ });
4032
+ $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = setOpening, $7215afc6de606d6b$export$de79e2c695e052f3(target), target.dispatchEvent(event), $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = !1;
4033
+ }
4034
+ $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = !1;
4035
+ function $ea8dcbcb9ea1b556$var$getSyntheticLink(target, open) {
4036
+ if (target instanceof HTMLAnchorElement) open(target);
4037
+ else if (target.hasAttribute("data-href")) {
4038
+ let link = document.createElement("a");
4039
+ link.href = target.getAttribute("data-href"), target.hasAttribute("data-target") && (link.target = target.getAttribute("data-target")), target.hasAttribute("data-rel") && (link.rel = target.getAttribute("data-rel")), target.hasAttribute("data-download") && (link.download = target.getAttribute("data-download")), target.hasAttribute("data-ping") && (link.ping = target.getAttribute("data-ping")), target.hasAttribute("data-referrer-policy") && (link.referrerPolicy = target.getAttribute("data-referrer-policy")), target.appendChild(link), open(link), target.removeChild(link);
4040
+ }
4041
+ }
4042
+ function $ea8dcbcb9ea1b556$var$openSyntheticLink(target, modifiers) {
4043
+ $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link) => $ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers));
4044
+ }
4045
+
4046
+ // ../../../node_modules/@react-aria/utils/dist/runAfterTransition.mjs
4047
+ var $bbed8b41f857bcc0$var$transitionsByElement = /* @__PURE__ */ new Map(), $bbed8b41f857bcc0$var$transitionCallbacks = /* @__PURE__ */ new Set();
4048
+ function $bbed8b41f857bcc0$var$setupGlobalEvents() {
4049
+ if (typeof window > "u") return;
4050
+ function isTransitionEvent(event) {
4051
+ return "propertyName" in event;
4052
+ }
4053
+ let onTransitionStart = (e2) => {
4054
+ if (!isTransitionEvent(e2) || !e2.target) return;
4055
+ let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e2.target);
4056
+ transitions || (transitions = /* @__PURE__ */ new Set(), $bbed8b41f857bcc0$var$transitionsByElement.set(e2.target, transitions), e2.target.addEventListener("transitioncancel", onTransitionEnd, {
4057
+ once: !0
4058
+ })), transitions.add(e2.propertyName);
4059
+ }, onTransitionEnd = (e2) => {
4060
+ if (!isTransitionEvent(e2) || !e2.target) return;
4061
+ let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e2.target);
4062
+ if (properties && (properties.delete(e2.propertyName), properties.size === 0 && (e2.target.removeEventListener("transitioncancel", onTransitionEnd), $bbed8b41f857bcc0$var$transitionsByElement.delete(e2.target)), $bbed8b41f857bcc0$var$transitionsByElement.size === 0)) {
4063
+ for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks) cb();
4064
+ $bbed8b41f857bcc0$var$transitionCallbacks.clear();
4065
+ }
4066
+ };
4067
+ document.body.addEventListener("transitionrun", onTransitionStart), document.body.addEventListener("transitionend", onTransitionEnd);
4068
+ }
4069
+ typeof document < "u" && (document.readyState !== "loading" ? $bbed8b41f857bcc0$var$setupGlobalEvents() : document.addEventListener("DOMContentLoaded", $bbed8b41f857bcc0$var$setupGlobalEvents));
4070
+
4071
+ // ../../../node_modules/@react-aria/utils/dist/useDrag1D.mjs
4072
+ import { useRef as $1rnCS$useRef } from "react";
4073
+
4074
+ // ../../../node_modules/@react-aria/utils/dist/useGlobalListeners.mjs
4075
+ import { useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect } from "react";
4076
+
4077
+ // ../../../node_modules/@react-aria/utils/dist/useObjectRef.mjs
4078
+ import { useRef as $gbmns$useRef, useCallback as $gbmns$useCallback, useMemo as $gbmns$useMemo } from "react";
4079
+
4080
+ // ../../../node_modules/@react-aria/utils/dist/useEffectEvent.mjs
4081
+ import $lmaYr$react, { useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback } from "react";
4082
+ var $8ae05eaa5c114e9c$var$_React_useInsertionEffect, $8ae05eaa5c114e9c$var$useEarlyEffect = ($8ae05eaa5c114e9c$var$_React_useInsertionEffect = $lmaYr$react.useInsertionEffect) !== null && $8ae05eaa5c114e9c$var$_React_useInsertionEffect !== void 0 ? $8ae05eaa5c114e9c$var$_React_useInsertionEffect : $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c;
4083
+
4084
+ // ../../../node_modules/@react-aria/utils/dist/useUpdateEffect.mjs
4085
+ import { useRef as $9vW05$useRef, useEffect as $9vW05$useEffect } from "react";
4086
+
4087
+ // ../../../node_modules/@react-aria/utils/dist/useUpdateLayoutEffect.mjs
4088
+ import { useRef as $azsE2$useRef } from "react";
4089
+
4090
+ // ../../../node_modules/@react-aria/utils/dist/useResizeObserver.mjs
4091
+ import { useEffect as $Vsl8o$useEffect } from "react";
4092
+
4093
+ // ../../../node_modules/@react-aria/utils/dist/useViewportSize.mjs
4094
+ import { useState as $fuDHA$useState, useEffect as $fuDHA$useEffect } from "react";
4095
+ var $5df64b3807dc15ee$var$visualViewport = typeof document < "u" && window.visualViewport;
4096
+
4097
+ // ../../../node_modules/@react-aria/utils/dist/useDescription.mjs
4098
+ import { useState as $hQ5Hp$useState } from "react";
4099
+
4100
+ // ../../../node_modules/@react-aria/utils/dist/useEvent.mjs
4101
+ import { useEffect as $ceQd6$useEffect } from "react";
4102
+
4103
+ // ../../../node_modules/@react-aria/utils/dist/useDeepMemo.mjs
4104
+ import { useRef as $jtQ6z$useRef } from "react";
4105
+
4106
+ // ../../../node_modules/@react-aria/utils/dist/useFormReset.mjs
4107
+ import { useEffect as $8rM3G$useEffect } from "react";
4108
+
4109
+ // ../../../node_modules/@react-aria/utils/dist/useLoadMore.mjs
4110
+ import { useRef as $hDRkU$useRef, useCallback as $hDRkU$useCallback } from "react";
4111
+
4112
+ // ../../../node_modules/@react-aria/utils/dist/useLoadMoreSentinel.mjs
4113
+ import { useRef as $7FoZl$useRef } from "react";
4114
+
4115
+ // ../../../node_modules/@react-aria/utils/dist/inertValue.mjs
4116
+ import { version as $iulvE$version } from "react";
4117
+
4118
+ // ../../../node_modules/@react-aria/utils/dist/animation.mjs
4119
+ import { flushSync as $jJMAe$flushSync } from "react-dom";
4120
+ import { useState as $jJMAe$useState, useCallback as $jJMAe$useCallback } from "react";
4121
+
4122
+ // ../../../node_modules/@react-aria/utils/dist/isElementVisible.mjs
4123
+ var $7d2416ea0959daaa$var$supportsCheckVisibility = typeof Element < "u" && "checkVisibility" in Element.prototype;
4124
+
4125
+ // ../../../node_modules/@react-aria/utils/dist/isFocusable.mjs
4126
+ var $b4b717babfbb907b$var$focusableElements = [
4127
+ "input:not([disabled]):not([type=hidden])",
4128
+ "select:not([disabled])",
4129
+ "textarea:not([disabled])",
4130
+ "button:not([disabled])",
4131
+ "a[href]",
4132
+ "area[href]",
4133
+ "summary",
4134
+ "iframe",
4135
+ "object",
4136
+ "embed",
4137
+ "audio[controls]",
4138
+ "video[controls]",
4139
+ '[contenteditable]:not([contenteditable^="false"])',
4140
+ "permission"
4141
+ ], $b4b717babfbb907b$var$FOCUSABLE_ELEMENT_SELECTOR = $b4b717babfbb907b$var$focusableElements.join(":not([hidden]),") + ",[tabindex]:not([disabled]):not([hidden])";
4142
+ $b4b717babfbb907b$var$focusableElements.push('[tabindex]:not([tabindex="-1"]):not([disabled])');
4143
+ var $b4b717babfbb907b$var$TABBABLE_ELEMENT_SELECTOR = $b4b717babfbb907b$var$focusableElements.join(':not([hidden]):not([tabindex="-1"]),');
4144
+
4145
+ // ../../../node_modules/@react-stately/utils/dist/useControlledState.mjs
4146
+ import $3whtM$react, { useState as $3whtM$useState, useRef as $3whtM$useRef, useEffect as $3whtM$useEffect, useReducer as $3whtM$useReducer, useCallback as $3whtM$useCallback } from "react";
4147
+ var $458b0a5536c1a7cf$var$_React_useInsertionEffect, $458b0a5536c1a7cf$var$useEarlyEffect = typeof document < "u" ? ($458b0a5536c1a7cf$var$_React_useInsertionEffect = $3whtM$react.useInsertionEffect) !== null && $458b0a5536c1a7cf$var$_React_useInsertionEffect !== void 0 ? $458b0a5536c1a7cf$var$_React_useInsertionEffect : $3whtM$react.useLayoutEffect : () => {
4148
+ };
4149
+
4150
+ // src/blocks/components/Preview.tsx
3831
4151
  import { styled as styled22 } from "storybook/theming";
3832
4152
 
3833
4153
  // src/blocks/blocks/DocsContext.ts
@@ -4118,7 +4438,10 @@ var ChildrenContainer = styled22.div(
4118
4438
  alignItems: "center"
4119
4439
  } : {},
4120
4440
  ({ columns }) => columns && columns > 1 ? { ".innerZoomElementWrapper > *": { minWidth: `calc(100% / ${columns} - 20px)` } } : {}
4121
- ), StyledSource = styled22(Source)(({ theme }) => ({
4441
+ ), ActionBar = styled22(Bar)({
4442
+ marginTop: -40,
4443
+ marginBottom: 40
4444
+ }), StyledSource = styled22(Source)(({ theme }) => ({
4122
4445
  margin: 0,
4123
4446
  borderTopLeftRadius: 0,
4124
4447
  borderTopRightRadius: 0,
@@ -4131,51 +4454,17 @@ var ChildrenContainer = styled22.div(
4131
4454
  background: theme.base === "light" ? "rgba(0, 0, 0, 0.85)" : curriedDarken$1(0.05, theme.background.content)
4132
4455
  }
4133
4456
  })), PreviewContainer = styled22.div(
4134
- ({ theme, withSource, isExpanded }) => ({
4457
+ ({ theme }) => ({
4135
4458
  position: "relative",
4136
4459
  overflow: "hidden",
4137
4460
  margin: "25px 0 40px",
4138
4461
  ...getBlockBackgroundStyle(theme),
4139
- borderBottomLeftRadius: withSource && isExpanded && 0,
4140
- borderBottomRightRadius: withSource && isExpanded && 0,
4141
- borderBottomWidth: isExpanded && 0,
4142
4462
  "h3 + &": {
4143
4463
  marginTop: "16px"
4144
4464
  }
4145
4465
  }),
4146
4466
  ({ withToolbar }) => withToolbar && { paddingTop: 40 }
4147
- ), getSource = (withSource, expanded, setExpanded) => {
4148
- switch (!0) {
4149
- case !!(withSource && withSource.error):
4150
- return {
4151
- source: null,
4152
- actionItem: {
4153
- title: "No code available",
4154
- className: "docblock-code-toggle docblock-code-toggle--disabled",
4155
- disabled: !0,
4156
- onClick: () => setExpanded(!1)
4157
- }
4158
- };
4159
- case expanded:
4160
- return {
4161
- source: React29.createElement(StyledSource, { ...withSource, dark: !0 }),
4162
- actionItem: {
4163
- title: "Hide code",
4164
- className: "docblock-code-toggle docblock-code-toggle--expanded",
4165
- onClick: () => setExpanded(!1)
4166
- }
4167
- };
4168
- default:
4169
- return {
4170
- source: React29.createElement(StyledSource, { ...withSource, dark: !0 }),
4171
- actionItem: {
4172
- title: "Show code",
4173
- className: "docblock-code-toggle",
4174
- onClick: () => setExpanded(!0)
4175
- }
4176
- };
4177
- }
4178
- };
4467
+ );
4179
4468
  function getChildProps(children) {
4180
4469
  if (Children.count(children) === 1) {
4181
4470
  let elt = children;
@@ -4190,10 +4479,7 @@ var PositionedToolbar = styled22(Toolbar)({
4190
4479
  left: 0,
4191
4480
  right: 0,
4192
4481
  height: 40
4193
- }), Relative = styled22.div({
4194
- overflow: "hidden",
4195
- position: "relative"
4196
- }), Preview = ({
4482
+ }), COPIED_LABEL_ANIMATION_DURATION = 2e3, Preview = ({
4197
4483
  isLoading,
4198
4484
  isColumn,
4199
4485
  columns,
@@ -4207,30 +4493,21 @@ var PositionedToolbar = styled22(Toolbar)({
4207
4493
  inline = !1,
4208
4494
  ...props
4209
4495
  }) => {
4210
- let [expanded, setExpanded] = useState13(isExpanded), { source, actionItem } = getSource(withSource, expanded, setExpanded), [scale, setScale] = useState13(1), previewClasses = [className].concat(["sbdocs", "sbdocs-preview", "sb-unstyled"]), defaultActionItems = withSource ? [actionItem] : [], [additionalActionItems, setAdditionalActionItems] = useState13(
4211
- additionalActions ? [...additionalActions] : []
4212
- ), actionItems = [...defaultActionItems, ...additionalActionItems], { window: globalWindow4 } = globalThis, context = useContext2(DocsContext), copyToClipboard = useCallback6(async (text) => {
4496
+ let [expanded, setExpanded] = useState13(isExpanded), [copied, setCopied] = useState13(null), [scale, setScale] = useState13(1), additionalActionItems = useMemo3(
4497
+ () => additionalActions ? [...additionalActions] : [],
4498
+ [additionalActions]
4499
+ ), sourceId = $bdb11010cef70236$export$f680877a34711e37(), previewClasses = [className].concat(["sbdocs", "sbdocs-preview", "sb-unstyled"]), context = useContext2(DocsContext), copyToClipboard = useCallback6(async (text) => {
4213
4500
  let { createCopyToClipboardFunction } = await import("storybook/internal/components");
4214
- createCopyToClipboardFunction();
4215
- }, []), onCopyCapture = (e2) => {
4216
- let selection = globalWindow4.getSelection();
4217
- selection && selection.type === "Range" || (e2.preventDefault(), additionalActionItems.filter((item) => item.title === "Copied").length === 0 && copyToClipboard(source?.props.code ?? "").then(() => {
4218
- setAdditionalActionItems([
4219
- ...additionalActionItems,
4220
- {
4221
- title: "Copied",
4222
- onClick: () => {
4223
- }
4224
- }
4225
- ]), globalWindow4.setTimeout(
4226
- () => setAdditionalActionItems(
4227
- additionalActionItems.filter((item) => item.title !== "Copied")
4228
- ),
4229
- 1500
4230
- );
4231
- }));
4232
- }, childProps = getChildProps(children);
4233
- return React29.createElement(
4501
+ await createCopyToClipboardFunction()(text);
4502
+ }, []), handleCopyCode = useCallback6(async () => {
4503
+ try {
4504
+ await copyToClipboard(withSource?.code ?? ""), setCopied("Copied!");
4505
+ } catch (err) {
4506
+ logger4.error(err), setCopied("Copy error!");
4507
+ }
4508
+ globalThis.window.setTimeout(() => setCopied(null), COPIED_LABEL_ANIMATION_DURATION);
4509
+ }, [copyToClipboard, withSource?.code]), childProps = getChildProps(children), hasSourceError = !!(withSource && withSource.error), hasValidSource = !!(withSource && !withSource.error);
4510
+ return React29.createElement(React29.Fragment, null, React29.createElement(
4234
4511
  PreviewContainer,
4235
4512
  {
4236
4513
  withSource,
@@ -4248,18 +4525,53 @@ var PositionedToolbar = styled22(Toolbar)({
4248
4525
  storyId: !isLoading && childProps ? getStoryId(childProps, context) : void 0
4249
4526
  }
4250
4527
  ),
4251
- React29.createElement(ZoomContext.Provider, { value: { scale } }, React29.createElement(Relative, { className: "docs-story", onCopyCapture: withSource && onCopyCapture }, React29.createElement(
4528
+ React29.createElement(ZoomContext.Provider, { value: { scale } }, React29.createElement(
4252
4529
  ChildrenContainer,
4253
4530
  {
4254
4531
  isColumn: isColumn || !Array.isArray(children),
4255
4532
  columns,
4256
4533
  layout,
4257
- inline
4534
+ inline,
4535
+ className: "docs-story"
4258
4536
  },
4259
4537
  React29.createElement(Zoom.Element, { centered: layout === "centered", scale: inline ? scale : 1 }, Array.isArray(children) ? children.map((child, i2) => React29.createElement("div", { key: i2 }, child)) : React29.createElement("div", null, children))
4260
- ), React29.createElement(ActionBar, { actionItems }))),
4261
- withSource && expanded && source
4262
- );
4538
+ )),
4539
+ hasValidSource && expanded && React29.createElement("div", { id: sourceId }, React29.createElement(StyledSource, { ...withSource, dark: !0, copyable: !1 }))
4540
+ ), (withSource || additionalActionItems.length > 0) && React29.createElement(ActionBar, { className: "sbdocs sbdocs-preview-actions", innerStyle: { paddingInline: 0 } }, hasSourceError && React29.createElement(
4541
+ Button7,
4542
+ {
4543
+ ariaLabel: !1,
4544
+ disabled: !0,
4545
+ variant: "ghost",
4546
+ className: "docblock-code-toggle docblock-code-toggle--disabled"
4547
+ },
4548
+ React29.createElement(MarkupIcon, null),
4549
+ " No code available"
4550
+ ), hasValidSource && React29.createElement(React29.Fragment, null, React29.createElement(
4551
+ ToggleButton2,
4552
+ {
4553
+ ariaLabel: !1,
4554
+ pressed: expanded,
4555
+ "aria-expanded": expanded,
4556
+ "aria-controls": sourceId,
4557
+ onClick: () => setExpanded(!expanded),
4558
+ variant: "ghost",
4559
+ className: `docblock-code-toggle${expanded ? " docblock-code-toggle--expanded" : ""}`
4560
+ },
4561
+ React29.createElement(MarkupIcon, null),
4562
+ " ",
4563
+ expanded ? "Hide code" : "Show code"
4564
+ ), React29.createElement(Button7, { ariaLabel: !1, variant: "ghost", onClick: handleCopyCode }, React29.createElement(CopyIcon, null), " ", copied ?? "Copy code")), additionalActionItems.map(({ title, className: className2, onClick, disabled }, index) => React29.createElement(
4565
+ Button7,
4566
+ {
4567
+ key: index,
4568
+ className: className2,
4569
+ onClick,
4570
+ disabled: !!disabled,
4571
+ variant: "ghost"
4572
+ },
4573
+ title
4574
+ ))));
4263
4575
  }, StyledPreview = styled22(Preview)(() => ({
4264
4576
  ".docs-story": {
4265
4577
  paddingTop: 32,
@@ -5188,7 +5500,7 @@ var ArgTypes = (props) => {
5188
5500
  import React39, { useContext as useContext5 } from "react";
5189
5501
 
5190
5502
  // src/blocks/blocks/Source.tsx
5191
- import React38, { useContext as useContext4, useMemo as useMemo3 } from "react";
5503
+ import React38, { useContext as useContext4, useMemo as useMemo4 } from "react";
5192
5504
  import { SourceType } from "storybook/internal/docs-tools";
5193
5505
 
5194
5506
  // src/blocks/blocks/SourceContainer.tsx
@@ -6275,7 +6587,7 @@ var getStorySource = (storyId, args, sourceContext) => {
6275
6587
  type === SourceType.AUTO && snippet && isArgsStory ? snippet : sourceParameters.originalSource || "", transformer = transformFromProps ?? sourceParameters.transform, transformedCode = transformer ? useTransformCode(code, transformer, storyContext) : code;
6276
6588
  return sourceParameters.code !== void 0 ? sourceParameters.code : transformedCode;
6277
6589
  }, useSourceProps = (props, docsContext, sourceContext) => {
6278
- let { of } = props, story = useMemo3(() => {
6590
+ let { of } = props, story = useMemo4(() => {
6279
6591
  if (of)
6280
6592
  return docsContext.resolveOf(of, ["story"]).story;
6281
6593
  try {
package/dist/manager.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Source
3
- } from "./_browser-chunks/chunk-AAVP3AE4.js";
3
+ } from "./_browser-chunks/chunk-SPXYZZB5.js";
4
4
  import "./_browser-chunks/chunk-SL3VIQZ3.js";
5
5
 
6
6
  // src/manager.tsx
@@ -1,20 +1,20 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.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
  compile
14
- } from "./_node-chunks/chunk-DA5UIHBB.js";
15
- import "./_node-chunks/chunk-CP2XQUAY.js";
16
- import "./_node-chunks/chunk-BDSWGEW6.js";
17
- import "./_node-chunks/chunk-CQTZVEMS.js";
14
+ } from "./_node-chunks/chunk-SGHF6HZP.js";
15
+ import "./_node-chunks/chunk-JJIKB62L.js";
16
+ import "./_node-chunks/chunk-XYBXX55A.js";
17
+ import "./_node-chunks/chunk-QGPMGHUJ.js";
18
18
 
19
19
  // src/mdx-loader.ts
20
20
  var DEFAULT_RENDERER = `
package/dist/preset.js CHANGED
@@ -1,15 +1,15 @@
1
- import CJS_COMPAT_NODE_URL_89otmpc1et from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_89otmpc1et from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_89otmpc1et from "node:module";
1
+ import CJS_COMPAT_NODE_URL_tb0oct6qdd9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_tb0oct6qdd9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_tb0oct6qdd9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_89otmpc1et.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_89otmpc1et.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_89otmpc1et.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_tb0oct6qdd9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_tb0oct6qdd9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_tb0oct6qdd9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
- import "./_node-chunks/chunk-CQTZVEMS.js";
12
+ import "./_node-chunks/chunk-QGPMGHUJ.js";
13
13
 
14
14
  // src/preset.ts
15
15
  import { isAbsolute as isAbsolute2 } from "node:path";
@@ -17,6 +17,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
17
17
  import { logger as logger2 } from "storybook/internal/node-logger";
18
18
 
19
19
  // ../../core/src/shared/utils/module.ts
20
+ import { createRequire, register } from "node:module";
20
21
  import { fileURLToPath, pathToFileURL } from "node:url";
21
22
 
22
23
  // ../../../node_modules/exsolve/dist/index.mjs
@@ -208,7 +209,12 @@ var importMetaResolve = (...args) => typeof import.meta.resolve != "function" &&
208
209
  try {
209
210
  return dirname(fileURLToPath(importMetaResolve(join(pkg, "package.json"), parent)));
210
211
  } catch {
211
- return dirname(fileURLToPath(importMetaResolve(join(pkg, "package.json"))));
212
+ try {
213
+ return dirname(fileURLToPath(importMetaResolve(join(pkg, "package.json"))));
214
+ } catch {
215
+ let req = createRequire(parent ?? import.meta.url);
216
+ return dirname(req.resolve(join(pkg, "package.json")));
217
+ }
212
218
  }
213
219
  };
214
220
 
@@ -306,7 +312,7 @@ var getResolvedReact = async (options) => {
306
312
  };
307
313
  };
308
314
  async function webpack(webpackConfig = {}, options) {
309
- let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-QLZVFQPQ.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-5KW3REQO.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
315
+ let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-DX43MPFV.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-D2POXJ6Q.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
310
316
  ...mdxPluginOptions,
311
317
  mdxCompileOptions: {
312
318
  providerImportSource: import.meta.resolve("@storybook/addon-docs/mdx-react-shim"),
@@ -382,7 +388,7 @@ var docs = (input = {}, options) => {
382
388
  }, addons = [
383
389
  import.meta.resolve("@storybook/react-dom-shim/preset")
384
390
  ], viteFinal = async (config, options) => {
385
- let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-PO2CSRRX.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
391
+ let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-SMQNL6EV.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
386
392
  name: "storybook:package-deduplication",
387
393
  enforce: "pre",
388
394
  config: () => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/addon-docs",
3
- "version": "10.3.0-alpha.13",
3
+ "version": "10.3.0-alpha.15",
4
4
  "description": "Storybook Docs: Document UI components automatically with stories and MDX",
5
5
  "keywords": [
6
6
  "docs",
@@ -87,9 +87,9 @@
87
87
  ],
88
88
  "dependencies": {
89
89
  "@mdx-js/react": "^3.0.0",
90
- "@storybook/csf-plugin": "10.3.0-alpha.13",
90
+ "@storybook/csf-plugin": "10.3.0-alpha.15",
91
91
  "@storybook/icons": "^2.0.1",
92
- "@storybook/react-dom-shim": "10.3.0-alpha.13",
92
+ "@storybook/react-dom-shim": "10.3.0-alpha.15",
93
93
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
94
94
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
95
95
  "ts-dedent": "^2.0.0"
@@ -116,7 +116,7 @@
116
116
  "vite": "^7.0.4"
117
117
  },
118
118
  "peerDependencies": {
119
- "storybook": "^10.3.0-alpha.13"
119
+ "storybook": "^10.3.0-alpha.15"
120
120
  },
121
121
  "publishConfig": {
122
122
  "access": "public"