storybook 9.0.0-beta.4 → 9.0.0-beta.5

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 (58) hide show
  1. package/assets/server/base-preview-head.html +2 -1
  2. package/dist/babel/index.cjs +15060 -14974
  3. package/dist/babel/index.d.ts +37 -18
  4. package/dist/babel/index.js +15097 -15011
  5. package/dist/bin/index.cjs +44 -44
  6. package/dist/bin/index.js +44 -44
  7. package/dist/builder-manager/index.cjs +104 -99
  8. package/dist/builder-manager/index.js +103 -98
  9. package/dist/cli/bin/index.cjs +1 -1
  10. package/dist/cli/bin/index.js +1 -1
  11. package/dist/cli/index.cjs +19438 -19340
  12. package/dist/cli/index.js +19449 -19351
  13. package/dist/common/index.cjs +4997 -4925
  14. package/dist/common/index.js +5088 -5012
  15. package/dist/components/index.cjs +4581 -4419
  16. package/dist/components/index.d.ts +12 -12
  17. package/dist/components/index.js +3847 -3681
  18. package/dist/core-server/index.cjs +6358 -6274
  19. package/dist/core-server/index.js +6406 -6318
  20. package/dist/core-server/presets/common-manager.js +3863 -3468
  21. package/dist/core-server/presets/common-preset.cjs +2302 -2236
  22. package/dist/core-server/presets/common-preset.js +2389 -2319
  23. package/dist/docs-tools/index.cjs +484 -464
  24. package/dist/docs-tools/index.js +502 -482
  25. package/dist/highlight/index.cjs +19 -18
  26. package/dist/highlight/index.d.ts +4 -5
  27. package/dist/highlight/index.js +3 -2
  28. package/dist/highlight/preview.cjs +311 -307
  29. package/dist/highlight/preview.js +293 -289
  30. package/dist/instrumenter/index.cjs +561 -559
  31. package/dist/instrumenter/index.js +1551 -1498
  32. package/dist/manager/globals-module-info.cjs +1 -0
  33. package/dist/manager/globals-module-info.js +1 -0
  34. package/dist/manager/globals-runtime.js +19639 -19374
  35. package/dist/manager/runtime.js +4372 -4133
  36. package/dist/manager-api/index.cjs +2375 -2319
  37. package/dist/manager-api/index.js +1722 -1666
  38. package/dist/node-logger/index.cjs +25 -25
  39. package/dist/node-logger/index.js +25 -25
  40. package/dist/preview/runtime.js +12774 -12699
  41. package/dist/preview-api/index.cjs +1113 -1094
  42. package/dist/preview-api/index.js +1161 -1142
  43. package/dist/router/index.cjs +1366 -1347
  44. package/dist/router/index.js +594 -575
  45. package/dist/server-errors.cjs +6 -6
  46. package/dist/server-errors.js +6 -6
  47. package/dist/telemetry/index.cjs +696 -691
  48. package/dist/telemetry/index.js +764 -759
  49. package/dist/test/index.cjs +69 -70
  50. package/dist/test/index.d.ts +1216 -74
  51. package/dist/test/index.js +128 -130
  52. package/dist/test/preview.cjs +16 -16
  53. package/dist/test/preview.js +15 -15
  54. package/dist/theming/create.cjs +16 -17
  55. package/dist/theming/create.js +346 -228
  56. package/dist/theming/index.cjs +16 -17
  57. package/dist/theming/index.js +948 -839
  58. package/package.json +4 -12
@@ -1,36 +1,36 @@
1
- var ce = Object.defineProperty;
2
- var l = (s, e) => ce(s, "name", { value: e, configurable: !0 });
1
+ var ie = Object.defineProperty;
2
+ var l = (i, o) => ie(i, "name", { value: o, configurable: !0 });
3
3
 
4
4
  // src/highlight/preview.ts
5
- import { addons as j, definePreview as ue } from "storybook/preview-api";
5
+ import { addons as te, definePreview as ue } from "storybook/preview-api";
6
6
 
7
7
  // src/highlight/useHighlights.ts
8
- import { STORY_CHANGED as re } from "storybook/internal/core-events";
8
+ import { STORY_RENDER_PHASE_CHANGED as ce } from "storybook/internal/core-events";
9
9
 
10
10
  // src/highlight/constants.ts
11
- var F = "storybook/highlight", N = `${F}/add`, ee = `${F}/remove`, G = `${F}/reset`, X = `${F}/scroll-into-view`, P = 2147483647;
11
+ var B = "storybook/highlight", V = `${B}/add`, q = `${B}/remove`, z = `${B}/reset`, j = `${B}/scroll-into-view`, D = 2147483647;
12
12
 
13
13
  // src/highlight/utils.ts
14
- var ae = "svg,path,rect,circle,line,polyline,polygon,ellipse,text".split(","), y = /* @__PURE__ */ l((s, e, d) => {
15
- let c = ae.includes(s) ? document.createElementNS("http://www.w3.org/2000/svg", s) : document.createElement(s);
16
- return Object.entries(e).forEach(([i, g]) => {
17
- /[A-Z]/.test(i) ? (i === "onClick" && (c.addEventListener("click", g), c.addEventListener("keydown", (p) => {
18
- (p.key === "Enter" || p.key === " ") && (p.preventDefault(), g());
19
- })), i === "onMouseEnter" && c.addEventListener("mouseenter", g), i === "onMouseLeave" && c.addEventListener("mouseleave", g)) : c.setAttribute(
20
- i, g);
21
- }), d?.forEach((i) => {
22
- if (!(i == null || i === !1))
14
+ var re = "svg,path,rect,circle,line,polyline,polygon,ellipse,text".split(","), x = /* @__PURE__ */ l((i, o, d) => {
15
+ let c = re.includes(i) ? document.createElementNS("http://www.w3.org/2000/svg", i) : document.createElement(i);
16
+ return Object.entries(o).forEach(([r, p]) => {
17
+ /[A-Z]/.test(r) ? (r === "onClick" && (c.addEventListener("click", p), c.addEventListener("keydown", (u) => {
18
+ (u.key === "Enter" || u.key === " ") && (u.preventDefault(), p());
19
+ })), r === "onMouseEnter" && c.addEventListener("mouseenter", p), r === "onMouseLeave" && c.addEventListener("mouseleave", p)) : c.setAttribute(
20
+ r, p);
21
+ }), d?.forEach((r) => {
22
+ if (!(r == null || r === !1))
23
23
  try {
24
- c.appendChild(i);
24
+ c.appendChild(r);
25
25
  } catch {
26
- c.appendChild(document.createTextNode(String(i)));
26
+ c.appendChild(document.createTextNode(String(r)));
27
27
  }
28
28
  }), c;
29
- }, "createElement"), te = /* @__PURE__ */ l((s) => {
30
- if ("elements" in s) {
31
- let { elements: e, color: d, style: c } = s;
29
+ }, "createElement"), Z = /* @__PURE__ */ l((i) => {
30
+ if ("elements" in i) {
31
+ let { elements: o, color: d, style: c } = i;
32
32
  return {
33
- selectors: e,
33
+ selectors: o,
34
34
  styles: {
35
35
  outline: `2px ${c} ${d}`,
36
36
  outlineOffset: "2px",
@@ -38,107 +38,119 @@ var ae = "svg,path,rect,circle,line,polyline,polygon,ellipse,text".split(","), y
38
38
  }
39
39
  };
40
40
  }
41
- return s;
42
- }, "convertLegacy"), de = /* @__PURE__ */ l((s) => s instanceof Function, "isFunction"), R = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(),
43
- D = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ l((s) => {
44
- let e = Symbol();
45
- return O.set(e, []), R.set(e, s), { get: /* @__PURE__ */ l(() => R.get(e), "get"), set: /* @__PURE__ */ l((p) => {
46
- let u = R.get(e), m = de(p) ? p(u) : p;
47
- m !== u && (R.set(e, m), O.get(e)?.forEach((x) => {
48
- D.get(x)?.(), D.set(x, x(m));
41
+ return {
42
+ styles: {
43
+ outline: "2px dashed #029cfd"
44
+ },
45
+ ...i
46
+ };
47
+ }, "convertLegacy"), le = /* @__PURE__ */ l((i) => i instanceof Function, "isFunction"), S = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(),
48
+ A = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ l((i) => {
49
+ let o = Symbol();
50
+ return I.set(o, []), S.set(o, i), { get: /* @__PURE__ */ l(() => S.get(o), "get"), set: /* @__PURE__ */ l((u) => {
51
+ let m = S.get(o), g = le(u) ? u(m) : u;
52
+ g !== m && (S.set(o, g), I.get(o)?.forEach((w) => {
53
+ A.get(w)?.(), A.set(w, w(g));
49
54
  }));
50
- }, "set"), subscribe: /* @__PURE__ */ l((p) => (O.get(e)?.push(p), () => {
51
- let u = O.get(e);
52
- u && O.set(
53
- e,
54
- u.filter((m) => m !== p)
55
+ }, "set"), subscribe: /* @__PURE__ */ l((u) => (I.get(o)?.push(u), () => {
56
+ let m = I.get(o);
57
+ m && I.set(
58
+ o,
59
+ m.filter((g) => g !== u)
55
60
  );
56
61
  }), "subscribe"), teardown: /* @__PURE__ */ l(() => {
57
- O.get(e)?.forEach((p) => {
58
- D.get(p)?.(), D.delete(p);
59
- }), O.delete(e), R.delete(e);
62
+ I.get(o)?.forEach((u) => {
63
+ A.get(u)?.(), A.delete(u);
64
+ }), I.delete(o), S.delete(o);
60
65
  }, "teardown") };
61
- }, "useStore"), Y = /* @__PURE__ */ l((s) => {
62
- let e = document.getElementById("storybook-root"), d = /* @__PURE__ */ new Map();
63
- for (let c of s) {
64
- let { priority: i = 0, selectable: g = !!c.menu } = c;
65
- for (let p of c.selectors)
66
- for (let u of e?.querySelectorAll(p) || []) {
67
- let m = d.get(u);
68
- (!m || m.priority < i) && d.set(u, {
66
+ }, "useStore"), F = /* @__PURE__ */ l((i) => {
67
+ let o = document.getElementById("storybook-root"), d = /* @__PURE__ */ new Map();
68
+ for (let c of i) {
69
+ let { priority: r = 0 } = c;
70
+ for (let p of c.selectors) {
71
+ let u = [
72
+ ...document.querySelectorAll(
73
+ // Elements matching the selector, excluding storybook elements and their descendants.
74
+ // Necessary to find portaled elements (e.g. children of `body`).
75
+ `:is(${p}):not([id^="storybook-"], [id^="storybook-"] *, [class^="sb-"], [class^="sb-"] *)`
76
+ ),
77
+ // Elements matching the selector inside the storybook root, as these were excluded above.
78
+ ...o?.querySelectorAll(p) || []
79
+ ];
80
+ for (let m of u) {
81
+ let g = d.get(m);
82
+ (!g || g.priority <= r) && d.set(m, {
69
83
  ...c,
70
- priority: i,
71
- selectors: (m?.selectors || []).concat(p),
72
- selectable: g
84
+ priority: r,
85
+ selectors: Array.from(new Set((g?.selectors || []).concat(p)))
73
86
  });
74
87
  }
88
+ }
75
89
  }
76
90
  return d;
77
- }, "mapElements"), oe = /* @__PURE__ */ l((s) => Array.from(s.entries()).map(([e, { selectors: d, styles: c, hoverStyles: i, focusStyles: g,
78
- selectable: p, menu: u }]) => {
79
- let { top: m, left: x, width: E, height: M } = e.getBoundingClientRect(), { position: v } = getComputedStyle(e);
91
+ }, "mapElements"), W = /* @__PURE__ */ l((i) => Array.from(i.entries()).map(([o, { selectors: d, styles: c, hoverStyles: r, focusStyles: p, menu: u }]) => {
92
+ let { top: m, left: g, width: w, height: E } = o.getBoundingClientRect(), { position: v } = getComputedStyle(o);
80
93
  return {
81
- element: e,
94
+ element: o,
82
95
  selectors: d,
83
- selectable: p,
84
96
  styles: c,
85
- hoverStyles: i,
86
- focusStyles: g,
97
+ hoverStyles: r,
98
+ focusStyles: p,
87
99
  menu: u,
88
100
  top: v === "fixed" ? m : m + window.scrollY,
89
- left: v === "fixed" ? x : x + window.scrollX,
90
- width: E,
91
- height: M
101
+ left: v === "fixed" ? g : g + window.scrollX,
102
+ width: w,
103
+ height: E
92
104
  };
93
- }).sort((e, d) => d.width * d.height - e.width * e.height), "mapBoxes"), V = /* @__PURE__ */ l((s, e) => {
94
- let d = s.getBoundingClientRect(), { x: c, y: i } = e;
95
- return d?.top && d?.left && c >= d.left && c <= d.left + d.width && i >= d.top && i <= d.top + d.height;
96
- }, "isOverMenu"), q = /* @__PURE__ */ l((s, e, d) => {
97
- if (!d)
105
+ }).sort((o, d) => d.width * d.height - o.width * o.height), "mapBoxes"), _ = /* @__PURE__ */ l((i, o) => {
106
+ let d = i.getBoundingClientRect(), { x: c, y: r } = o;
107
+ return d?.top && d?.left && c >= d.left && c <= d.left + d.width && r >= d.top && r <= d.top + d.height;
108
+ }, "isOverMenu"), N = /* @__PURE__ */ l((i, o, d) => {
109
+ if (!o || !d)
98
110
  return !1;
99
- let { left: c, top: i, width: g, height: p } = s;
100
- (p === 0 || g === 0) && (c -= 10, i -= 10, g += 20, p += 20), e.style.position === "fixed" && (c += window.scrollX, i += window.scrollY);
101
- let { x: u, y: m } = d;
102
- return u >= c && u <= c + g && m >= i && m <= i + p;
103
- }, "isTargeted"), ne = /* @__PURE__ */ l((s, e, d = {}) => {
104
- let { x: c, y: i } = e, { margin: g = 5, topOffset: p = 0, centered: u = !1 } = d, { scrollX: m, scrollY: x, innerHeight: E, innerWidth: M } = window,
105
- v = Math.min(
106
- s.style.position === "fixed" ? i - x : i,
107
- E - s.clientHeight - g - p + x
108
- ), w = u ? s.clientWidth / 2 : 0, H = s.style.position === "fixed" ? Math.max(Math.min(c - m, M - w - g), w + g) : Math.max(
109
- Math.min(c, M - w - g + m),
110
- w + g + m
111
+ let { left: c, top: r, width: p, height: u } = i;
112
+ (u === 0 || p === 0) && (c -= 10, r -= 10, p += 20, u += 20), o.style.position === "fixed" && (c += window.scrollX, r += window.scrollY);
113
+ let { x: m, y: g } = d;
114
+ return m >= c && m <= c + p && g >= r && g <= r + u;
115
+ }, "isTargeted"), K = /* @__PURE__ */ l((i, o, d = {}) => {
116
+ let { x: c, y: r } = o, { margin: p = 5, topOffset: u = 0, centered: m = !1 } = d, { scrollX: g, scrollY: w, innerHeight: E, innerWidth: v } = window,
117
+ M = Math.min(
118
+ i.style.position === "fixed" ? r - w : r,
119
+ E - i.clientHeight - p - u + w
120
+ ), H = m ? i.clientWidth / 2 : 0, C = i.style.position === "fixed" ? Math.max(Math.min(c - g, v - H - p), H + p) : Math.max(
121
+ Math.min(c, v - H - p + g),
122
+ H + p + g
111
123
  );
112
- Object.assign(s.style, {
113
- ...H !== c && { left: `${H}px` },
114
- ...v !== i && { top: `${v}px` }
124
+ Object.assign(i.style, {
125
+ ...C !== c && { left: `${C}px` },
126
+ ...M !== r && { top: `${M}px` }
115
127
  });
116
- }, "keepInViewport"), z = /* @__PURE__ */ l((s) => {
117
- window.HTMLElement.prototype.hasOwnProperty("showPopover") && s.showPopover();
118
- }, "showPopover"), se = /* @__PURE__ */ l((s) => {
119
- window.HTMLElement.prototype.hasOwnProperty("showPopover") && s.hidePopover();
120
- }, "hidePopover"), ie = /* @__PURE__ */ l((s) => ({
121
- top: s.top,
122
- left: s.left,
123
- width: s.width,
124
- height: s.height,
125
- selectors: s.selectors,
128
+ }, "keepInViewport"), G = /* @__PURE__ */ l((i) => {
129
+ window.HTMLElement.prototype.hasOwnProperty("showPopover") && i.showPopover();
130
+ }, "showPopover"), U = /* @__PURE__ */ l((i) => {
131
+ window.HTMLElement.prototype.hasOwnProperty("showPopover") && i.hidePopover();
132
+ }, "hidePopover"), J = /* @__PURE__ */ l((i) => ({
133
+ top: i.top,
134
+ left: i.left,
135
+ width: i.width,
136
+ height: i.height,
137
+ selectors: i.selectors,
126
138
  element: {
127
139
  attributes: Object.fromEntries(
128
- Array.from(s.element.attributes).map((e) => [e.name, e.value])
140
+ Array.from(i.element.attributes).map((o) => [o.name, o.value])
129
141
  ),
130
- localName: s.element.localName,
131
- tagName: s.element.tagName,
132
- outerHTML: s.element.outerHTML
142
+ localName: i.element.localName,
143
+ tagName: i.element.tagName,
144
+ outerHTML: i.element.outerHTML
133
145
  }
134
146
  }), "getEventDetails");
135
147
 
136
148
  // src/highlight/useHighlights.ts
137
- var pe = /* @__PURE__ */ l(() => y(
149
+ var f = "storybook-highlights-menu", Q = "storybook-highlights-root", de = "storybook-root", ae = /* @__PURE__ */ l(() => x(
138
150
  "svg",
139
151
  { width: "14", height: "14", viewBox: "0 0 14 14", xmlns: "http://www.w3.org/2000/svg" },
140
152
  [
141
- y("path", {
153
+ x("path", {
142
154
  fillRule: "evenodd",
143
155
  clipRule: "evenodd",
144
156
  d: "M9.10355 10.1464C9.29882 10.3417 9.29882 10.6583 9.10355 10.8536C8.90829 11.0488 8.59171 11.0488 8.39645 10.8536L4.89645 7.35355C4\
@@ -147,11 +159,11 @@ var pe = /* @__PURE__ */ l(() => y(
147
159
  fill: "currentColor"
148
160
  })
149
161
  ]
150
- ), "chevronLeft"), ge = /* @__PURE__ */ l(() => y(
162
+ ), "chevronLeft"), pe = /* @__PURE__ */ l(() => x(
151
163
  "svg",
152
164
  { width: "14", height: "14", viewBox: "0 0 14 14", xmlns: "http://www.w3.org/2000/svg" },
153
165
  [
154
- y("path", {
166
+ x("path", {
155
167
  fillRule: "evenodd",
156
168
  clipRule: "evenodd",
157
169
  d: "M4.89645 10.1464C4.70118 10.3417 4.70118 10.6583 4.89645 10.8536C5.09171 11.0488 5.40829 11.0488 5.60355 10.8536L9.10355 7.35355C9\
@@ -160,117 +172,114 @@ var pe = /* @__PURE__ */ l(() => y(
160
172
  fill: "currentColor"
161
173
  })
162
174
  ]
163
- ), "chevronRight"), le = /* @__PURE__ */ l(({
164
- channel: s,
165
- menuId: e = "storybook-highlights-menu",
166
- rootId: d = "storybook-highlights-root",
167
- storybookRootId: c = "storybook-root"
168
- }) => {
169
- globalThis.__STORYBOOK_HIGHLIGHT_TEARDOWN?.();
170
- let { document: i } = globalThis, g = T([]), p = T(/* @__PURE__ */ new Map()), u = T([]), m = T(), x = T(), E = T([]), M = T([]), v = T(),
171
- w = T(), H = i.getElementById(d);
172
- g.subscribe(() => {
173
- H || (H = y("div", { id: d }), i.body.appendChild(H));
174
- }), g.subscribe((t) => {
175
- let o = i.getElementById(c);
176
- if (!o)
175
+ ), "chevronRight"), ee = /* @__PURE__ */ l((i) => {
176
+ if (globalThis.__STORYBOOK_HIGHLIGHT_INITIALIZED)
177
+ return;
178
+ globalThis.__STORYBOOK_HIGHLIGHT_INITIALIZED = !0;
179
+ let { document: o } = globalThis, d = T([]), c = T(/* @__PURE__ */ new Map()), r = T([]), p = T(), u = T(), m = T([]), g = T([]), w = T(),
180
+ E = T(), v = o.getElementById(Q);
181
+ d.subscribe(() => {
182
+ v || (v = x("div", { id: Q }), o.body.appendChild(v));
183
+ }), d.subscribe((n) => {
184
+ let e = o.getElementById(de);
185
+ if (!e)
177
186
  return;
178
- p.set(Y(t));
179
- let n = new MutationObserver(() => p.set(Y(t)));
180
- return n.observe(o, { subtree: !0, childList: !0 }), () => {
181
- n.disconnect();
187
+ c.set(F(n));
188
+ let t = new MutationObserver(() => c.set(F(n)));
189
+ return t.observe(e, { subtree: !0, childList: !0 }), () => {
190
+ t.disconnect();
182
191
  };
183
- }), p.subscribe((t) => {
184
- let o = /* @__PURE__ */ l(() => requestAnimationFrame(() => u.set(oe(t))), "updateBoxes"), n = new ResizeObserver(o);
185
- n.observe(i.body), Array.from(t.keys()).forEach((r) => n.observe(r));
186
- let a = Array.from(i.body.querySelectorAll("*")).filter((r) => {
187
- let { overflow: h, overflowX: f, overflowY: b } = window.getComputedStyle(r);
188
- return ["auto", "scroll"].some((L) => [h, f, b].includes(L));
192
+ }), c.subscribe((n) => {
193
+ let e = /* @__PURE__ */ l(() => requestAnimationFrame(() => r.set(W(n))), "updateBoxes"), t = new ResizeObserver(e);
194
+ t.observe(o.body), Array.from(n.keys()).forEach((s) => t.observe(s));
195
+ let a = Array.from(o.body.querySelectorAll("*")).filter((s) => {
196
+ let { overflow: h, overflowX: b, overflowY: y } = window.getComputedStyle(s);
197
+ return ["auto", "scroll"].some((L) => [h, b, y].includes(L));
189
198
  });
190
- return a.forEach((r) => r.addEventListener("scroll", o)), () => {
191
- n.disconnect(), a.forEach((r) => r.removeEventListener("scroll", o));
199
+ return a.forEach((s) => s.addEventListener("scroll", e)), () => {
200
+ t.disconnect(), a.forEach((s) => s.removeEventListener("scroll", e));
192
201
  };
193
- }), p.subscribe((t) => {
194
- let o = Array.from(t.keys()).filter(({ style: a }) => a.position === "sticky"), n = /* @__PURE__ */ l(() => requestAnimationFrame(() => {
195
- u.set(
196
- (a) => a.map((r) => {
197
- if (o.includes(r.element)) {
198
- let { top: h, left: f } = r.element.getBoundingClientRect();
199
- return { ...r, top: h + window.scrollY, left: f + window.scrollX };
202
+ }), c.subscribe((n) => {
203
+ let e = Array.from(n.keys()).filter(({ style: a }) => a.position === "sticky"), t = /* @__PURE__ */ l(() => requestAnimationFrame(() => {
204
+ r.set(
205
+ (a) => a.map((s) => {
206
+ if (e.includes(s.element)) {
207
+ let { top: h, left: b } = s.element.getBoundingClientRect();
208
+ return { ...s, top: h + window.scrollY, left: b + window.scrollX };
200
209
  }
201
- return r;
210
+ return s;
202
211
  })
203
212
  );
204
213
  }), "updateBoxes");
205
- return i.addEventListener("scroll", n), () => i.removeEventListener("scroll", n);
206
- }), p.subscribe((t) => {
207
- E.set((o) => o.filter(({ element: n }) => t.has(n)));
208
- }), E.subscribe((t) => {
209
- t.length ? (w.set((o) => t.some((n) => n.element === o?.element) ? o : void 0), v.set((o) => t.some((n) => n.element === o?.element) ? o :
210
- void 0)) : (w.set(void 0), v.set(void 0), m.set(void 0));
214
+ return o.addEventListener("scroll", t), () => o.removeEventListener("scroll", t);
215
+ }), c.subscribe((n) => {
216
+ m.set((e) => e.filter(({ element: t }) => n.has(t)));
217
+ }), m.subscribe((n) => {
218
+ n.length ? (E.set((e) => n.some((t) => t.element === e?.element) ? e : void 0), w.set((e) => n.some((t) => t.element === e?.element) ? e :
219
+ void 0)) : (E.set(void 0), w.set(void 0), p.set(void 0));
211
220
  });
212
- let $ = new Map(/* @__PURE__ */ new Map());
213
- g.subscribe((t) => {
214
- t.forEach(({ keyframes: o }) => {
215
- if (o) {
216
- let n = $.get(o);
217
- n || (n = i.createElement("style"), n.setAttribute("data-highlight", "keyframes"), $.set(o, n), i.head.appendChild(n)), n.innerHTML =
218
- o;
221
+ let M = new Map(/* @__PURE__ */ new Map());
222
+ d.subscribe((n) => {
223
+ n.forEach(({ keyframes: e }) => {
224
+ if (e) {
225
+ let t = M.get(e);
226
+ t || (t = o.createElement("style"), t.setAttribute("data-highlight", "keyframes"), M.set(e, t), o.head.appendChild(t)), t.innerHTML =
227
+ e;
219
228
  }
220
- }), $.forEach((o, n) => {
221
- t.some((a) => a.keyframes === n) || (o.remove(), $.delete(n));
229
+ }), M.forEach((e, t) => {
230
+ n.some((a) => a.keyframes === t) || (e.remove(), M.delete(t));
222
231
  });
223
232
  });
224
- let C = new Map(/* @__PURE__ */ new Map());
225
- u.subscribe((t) => {
226
- t.forEach((o) => {
227
- let n = C.get(o.element);
228
- if (H && !n) {
233
+ let H = new Map(/* @__PURE__ */ new Map());
234
+ r.subscribe((n) => {
235
+ n.forEach((e) => {
236
+ let t = H.get(e.element);
237
+ if (v && !t) {
229
238
  let a = {
230
239
  popover: "manual",
231
- "data-highlight-dimensions": `w${o.width.toFixed(0)}h${o.height.toFixed(0)}`,
232
- "data-highlight-coordinates": `x${o.left.toFixed(0)}y${o.top.toFixed(0)}`
240
+ "data-highlight-dimensions": `w${e.width.toFixed(0)}h${e.height.toFixed(0)}`,
241
+ "data-highlight-coordinates": `x${e.left.toFixed(0)}y${e.top.toFixed(0)}`
233
242
  };
234
- n = H.appendChild(y("div", a)), C.set(o.element, n);
243
+ t = v.appendChild(x("div", a)), H.set(e.element, t);
235
244
  }
236
- }), C.forEach((o, n) => {
237
- t.some(({ element: a }) => a === n) || (o.remove(), C.delete(n));
245
+ }), H.forEach((e, t) => {
246
+ n.some(({ element: a }) => a === t) || (e.remove(), H.delete(t));
238
247
  });
239
- }), u.subscribe((t) => {
240
- let o = t.filter((a) => a.selectable);
241
- if (!o.length)
248
+ }), r.subscribe((n) => {
249
+ let e = n.filter((a) => a.menu);
250
+ if (!e.length)
242
251
  return;
243
- let n = /* @__PURE__ */ l((a) => {
252
+ let t = /* @__PURE__ */ l((a) => {
244
253
  requestAnimationFrame(() => {
245
- let r = i.getElementById(e), h = { x: a.pageX, y: a.pageY };
246
- if (r && !V(r, h)) {
247
- let f = o.filter((b) => {
248
- let L = C.get(b.element);
249
- return q(b, L, h);
254
+ let s = o.getElementById(f), h = { x: a.pageX, y: a.pageY };
255
+ if (s && !_(s, h)) {
256
+ let b = e.filter((y) => {
257
+ let L = H.get(y.element);
258
+ return N(y, L, h);
250
259
  });
251
- m.set(f.length ? h : void 0), E.set(f);
260
+ p.set(b.length ? h : void 0), m.set(b);
252
261
  }
253
262
  });
254
263
  }, "onClick");
255
- return i.addEventListener("click", n), () => i.removeEventListener("click", n);
264
+ return o.addEventListener("click", t), () => o.removeEventListener("click", t);
256
265
  });
257
- let W = /* @__PURE__ */ l(() => {
258
- let t = i.getElementById(e), o = x.get();
259
- !o || t && V(t, o) || M.set((n) => {
260
- let a = u.get().filter((b) => {
261
- let L = C.get(b.element);
262
- return q(b, L, o);
263
- }), r = n.filter((b) => a.includes(b)), h = a.filter((b) => !n.includes(b)), f = n.length - r.length;
264
- return h.length || f ? [...r, ...h] : n;
266
+ let C = /* @__PURE__ */ l(() => {
267
+ let n = o.getElementById(f), e = u.get();
268
+ !e || n && _(n, e) || g.set((t) => {
269
+ let a = r.get().filter((y) => {
270
+ let L = H.get(y.element);
271
+ return N(y, L, e);
272
+ }), s = t.filter((y) => a.includes(y)), h = a.filter((y) => !t.includes(y)), b = t.length - s.length;
273
+ return h.length || b ? [...s, ...h] : t;
265
274
  });
266
275
  }, "updateHovered");
267
- x.subscribe(W), u.subscribe(W);
268
- let k = /* @__PURE__ */ l(() => {
269
- let t = w.get(), o = t ? [t] : E.get(), n = o.length === 1 ? o[0] : v.get(), a = m.get() !== void 0;
270
- u.get().forEach((r) => {
271
- let h = C.get(r.element);
276
+ u.subscribe(C), r.subscribe(C);
277
+ let O = /* @__PURE__ */ l(() => {
278
+ let n = E.get(), e = n ? [n] : m.get(), t = e.length === 1 ? e[0] : w.get(), a = p.get() !== void 0;
279
+ r.get().forEach((s) => {
280
+ let h = H.get(s.element);
272
281
  if (h) {
273
- let f = n === r, b = a ? n ? f : o.includes(r) : M.get()?.includes(r);
282
+ let b = t === s, y = a ? t ? b : e.includes(s) : g.get()?.includes(s);
274
283
  Object.assign(h.style, {
275
284
  animation: "none",
276
285
  background: "transparent",
@@ -278,38 +287,38 @@ var pe = /* @__PURE__ */ l(() => y(
278
287
  boxSizing: "border-box",
279
288
  outline: "none",
280
289
  outlineOffset: "0px",
281
- ...r.styles,
282
- ...b ? r.hoverStyles : {},
283
- ...f ? r.focusStyles : {},
284
- position: getComputedStyle(r.element).position === "fixed" ? "fixed" : "absolute",
285
- zIndex: P - 10,
286
- top: `${r.top}px`,
287
- left: `${r.left}px`,
288
- width: `${r.width}px`,
289
- height: `${r.height}px`,
290
+ ...s.styles,
291
+ ...y ? s.hoverStyles : {},
292
+ ...b ? s.focusStyles : {},
293
+ position: getComputedStyle(s.element).position === "fixed" ? "fixed" : "absolute",
294
+ zIndex: D - 10,
295
+ top: `${s.top}px`,
296
+ left: `${s.left}px`,
297
+ width: `${s.width}px`,
298
+ height: `${s.height}px`,
290
299
  margin: 0,
291
300
  padding: 0,
292
- cursor: r.selectable ? "pointer" : "default",
293
- pointerEvents: r.selectable ? "auto" : "none"
294
- }), z(h);
301
+ cursor: s.menu ? "pointer" : "default",
302
+ pointerEvents: s.menu ? "auto" : "none"
303
+ }), G(h);
295
304
  }
296
305
  });
297
306
  }, "updateBoxStyles");
298
- u.subscribe(k), E.subscribe(k), M.subscribe(k), v.subscribe(k), w.subscribe(k);
299
- let Z = /* @__PURE__ */ l(() => {
300
- if (!H)
307
+ r.subscribe(O), m.subscribe(O), g.subscribe(O), w.subscribe(O), E.subscribe(O);
308
+ let P = /* @__PURE__ */ l(() => {
309
+ if (!v)
301
310
  return;
302
- let t = i.getElementById(e);
303
- if (t)
304
- t.innerHTML = "";
311
+ let n = o.getElementById(f);
312
+ if (n)
313
+ n.innerHTML = "";
305
314
  else {
306
- let r = { id: e, popover: "manual" };
307
- t = H.appendChild(y("div", r)), H.appendChild(
308
- y("style", {}, [
315
+ let s = { id: f, popover: "manual" };
316
+ n = v.appendChild(x("div", s)), v.appendChild(
317
+ x("style", {}, [
309
318
  `
310
- #${e} {
319
+ #${f} {
311
320
  position: absolute;
312
- z-index: ${P};
321
+ z-index: ${D};
313
322
  width: 300px;
314
323
  padding: 0px;
315
324
  margin: 15px 0 0 0;
@@ -323,18 +332,18 @@ ue", Helvetica, Arial, sans-serif;
323
332
  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.05), 0 5px 15px 0 rgba(0, 0, 0, 0.1);
324
333
  color: #2E3438;
325
334
  }
326
- #${e} ul {
335
+ #${f} ul {
327
336
  list-style: none;
328
337
  padding: 4px 0;
329
338
  margin: 0;
330
339
  max-height: 300px;
331
340
  overflow-y: auto;
332
341
  }
333
- #${e} li {
342
+ #${f} li {
334
343
  padding: 0 4px;
335
344
  margin: 0;
336
345
  }
337
- #${e} li > * {
346
+ #${f} li > * {
338
347
  display: flex;
339
348
  padding: 8px;
340
349
  margin: 0;
@@ -342,7 +351,7 @@ ue", Helvetica, Arial, sans-serif;
342
351
  gap: 8px;
343
352
  border-radius: 4px;
344
353
  }
345
- #${e} button {
354
+ #${f} button {
346
355
  width: 100%;
347
356
  border: 0;
348
357
  background: transparent;
@@ -351,48 +360,48 @@ ue", Helvetica, Arial, sans-serif;
351
360
  font-family: inherit;
352
361
  font-size: inherit;
353
362
  }
354
- #${e} button:focus {
363
+ #${f} button:focus {
355
364
  outline-color: #029CFD;
356
365
  }
357
- #${e} button:hover {
366
+ #${f} button:hover {
358
367
  background: rgba(2, 156, 253, 0.07);
359
368
  color: #029CFD;
360
369
  cursor: pointer;
361
370
  }
362
- #${e} li code {
371
+ #${f} li code {
363
372
  white-space: nowrap;
364
373
  overflow: hidden;
365
374
  text-overflow: ellipsis;
366
375
  line-height: 16px;
367
376
  font-size: 11px;
368
377
  }
369
- #${e} li svg {
378
+ #${f} li svg {
370
379
  display: none;
371
380
  flex-shrink: 0;
372
381
  margin: 1px;
373
382
  color: #73828C;
374
383
  }
375
- #${e} li > button:hover svg, #${e} li > button:focus svg {
384
+ #${f} li > button:hover svg, #${f} li > button:focus svg {
376
385
  color: #029CFD;
377
386
  }
378
- #${e} li.selectable svg, #${e} li.selected svg {
387
+ #${f} li.selectable svg, #${f} li.selected svg {
379
388
  display: block;
380
389
  }
381
- #${e} .menu-list {
390
+ #${f} .menu-list {
382
391
  border-top: 1px solid rgba(38, 85, 115, 0.15);
383
392
  }
384
- #${e} .menu-list li:not(:last-child) {
393
+ #${f} .menu-list li:not(:last-child) {
385
394
  padding-bottom: 4px;
386
395
  margin-bottom: 4px;
387
396
  border-bottom: 1px solid rgba(38, 85, 115, 0.15);
388
397
  }
389
- #${e} .menu-list li div {
398
+ #${f} .menu-list li div {
390
399
  display: flex;
391
400
  flex-direction: column;
392
401
  align-items: flex-start;
393
402
  gap: 0;
394
403
  }
395
- #${e} .menu-list li small {
404
+ #${f} .menu-list li small {
396
405
  color: #5C6870;
397
406
  font-size: 11px;
398
407
  }
@@ -400,47 +409,47 @@ ue", Helvetica, Arial, sans-serif;
400
409
  ])
401
410
  );
402
411
  }
403
- let o = w.get(), n = o ? [o] : E.get();
404
- if (n.length && (t.style.position = getComputedStyle(n[0].element).position === "fixed" ? "fixed" : "absolute", t.appendChild(
405
- y(
412
+ let e = E.get(), t = e ? [e] : m.get();
413
+ if (t.length && (n.style.position = getComputedStyle(t[0].element).position === "fixed" ? "fixed" : "absolute", n.appendChild(
414
+ x(
406
415
  "ul",
407
416
  { class: "element-list" },
408
- n.map((r) => {
409
- let h = r.menu?.filter(
410
- (B) => !B.selectors || B.selectors.some((S) => r.selectors.includes(S))
411
- ), f = n.length > 1 && !!h?.length, b = f ? {
417
+ t.map((s) => {
418
+ let h = s.menu?.filter(
419
+ ($) => !$.selectors || $.selectors.some((k) => s.selectors.includes(k))
420
+ ), b = t.length > 1 && !!h?.length, y = b ? {
412
421
  class: "selectable",
413
- onClick: /* @__PURE__ */ l(() => w.set(r), "onClick"),
414
- onMouseEnter: /* @__PURE__ */ l(() => v.set(r), "onMouseEnter"),
415
- onMouseLeave: /* @__PURE__ */ l(() => v.set(void 0), "onMouseLeave")
416
- } : o ? { class: "selected", onClick: /* @__PURE__ */ l(() => w.set(void 0), "onClick") } : {}, L = f || o;
417
- return y("li", b, [
418
- y(L ? "button" : "div", L ? { type: "button" } : {}, [
419
- o ? pe() : null,
420
- y("code", {}, [r.element.outerHTML]),
421
- f ? ge() : null
422
+ onClick: /* @__PURE__ */ l(() => E.set(s), "onClick"),
423
+ onMouseEnter: /* @__PURE__ */ l(() => w.set(s), "onMouseEnter"),
424
+ onMouseLeave: /* @__PURE__ */ l(() => w.set(void 0), "onMouseLeave")
425
+ } : e ? { class: "selected", onClick: /* @__PURE__ */ l(() => E.set(void 0), "onClick") } : {}, L = b || e;
426
+ return x("li", y, [
427
+ x(L ? "button" : "div", L ? { type: "button" } : {}, [
428
+ e ? ae() : null,
429
+ x("code", {}, [s.element.outerHTML]),
430
+ b ? pe() : null
422
431
  ])
423
432
  ]);
424
433
  })
425
434
  )
426
- )), w.get() || E.get().length === 1) {
427
- let r = w.get() || E.get()[0], h = r.menu?.filter(
428
- (f) => !f.selectors || f.selectors.some((b) => r.selectors.includes(b))
435
+ )), E.get() || m.get().length === 1) {
436
+ let s = E.get() || m.get()[0], h = s.menu?.filter(
437
+ (b) => !b.selectors || b.selectors.some((y) => s.selectors.includes(y))
429
438
  );
430
- h?.length && t.appendChild(
431
- y(
439
+ h?.length && n.appendChild(
440
+ x(
432
441
  "ul",
433
442
  { class: "menu-list" },
434
- h.map(({ id: f, title: b, description: L, clickEvent: B }) => {
435
- let S = B && (() => s.emit(B, f, ie(r)));
436
- return y("li", {}, [
437
- y(
438
- S ? "button" : "div",
439
- S ? { type: "button", onClick: S } : {},
443
+ h.map(({ id: b, title: y, description: L, clickEvent: $ }) => {
444
+ let k = $ && (() => i.emit($, b, J(s)));
445
+ return x("li", {}, [
446
+ x(
447
+ k ? "button" : "div",
448
+ k ? { type: "button", onClick: k } : {},
440
449
  [
441
- y("div", {}, [
442
- y("strong", {}, [b]),
443
- L && y("small", {}, [L])
450
+ x("div", {}, [
451
+ x("strong", {}, [y]),
452
+ L && x("small", {}, [L])
444
453
  ])
445
454
  ]
446
455
  )
@@ -449,44 +458,46 @@ ue", Helvetica, Arial, sans-serif;
449
458
  )
450
459
  );
451
460
  }
452
- let a = m.get();
453
- a ? (Object.assign(t.style, {
461
+ let a = p.get();
462
+ a ? (Object.assign(n.style, {
454
463
  display: "block",
455
- left: `${t.style.position === "fixed" ? a.x - window.scrollX : a.x}px`,
456
- top: `${t.style.position === "fixed" ? a.y - window.scrollY : a.y}px`
457
- }), z(t), requestAnimationFrame(() => ne(t, a, { topOffset: 15, centered: !0 }))) : (se(t), Object.assign(t.style, { display: "none" }));
464
+ left: `${n.style.position === "fixed" ? a.x - window.scrollX : a.x}px`,
465
+ top: `${n.style.position === "fixed" ? a.y - window.scrollY : a.y}px`
466
+ }), G(n), requestAnimationFrame(() => K(n, a, { topOffset: 15, centered: !0 }))) : (U(n), Object.assign(n.style, { display: "none" }));
458
467
  }, "renderMenu");
459
- E.subscribe(Z), w.subscribe(Z);
460
- let K = /* @__PURE__ */ l((t) => {
461
- let o = te(t);
462
- o.selectors?.length && g.set((n) => [...n, o]);
463
- }, "addHighlight"), _ = /* @__PURE__ */ l((t) => {
464
- g.set((o) => o.filter((n) => n.id !== t));
465
- }, "removeHighlight"), A = /* @__PURE__ */ l(() => {
466
- g.set([]);
467
- }, "clearHighlights"), I, U = /* @__PURE__ */ l((t, o) => {
468
- let n = "scrollIntoView-highlight";
469
- clearTimeout(I), _(n);
470
- let a = i.querySelector(t);
468
+ m.subscribe(P), E.subscribe(P);
469
+ let oe = /* @__PURE__ */ l((n) => {
470
+ let e = Z(n);
471
+ d.set((t) => {
472
+ let a = e.id ? t.filter((s) => s.id !== e.id) : t;
473
+ return e.selectors?.length ? [...a, e] : a;
474
+ });
475
+ }, "addHighlight"), R = /* @__PURE__ */ l((n) => {
476
+ d.set((e) => e.filter((t) => t.id !== n));
477
+ }, "removeHighlight"), X = /* @__PURE__ */ l(() => {
478
+ d.set([]), c.set(/* @__PURE__ */ new Map()), r.set([]), p.set(void 0), u.set(void 0), m.set([]), g.set([]), w.set(void 0), E.set(void 0);
479
+ }, "resetState"), Y, ne = /* @__PURE__ */ l((n, e) => {
480
+ let t = "scrollIntoView-highlight";
481
+ clearTimeout(Y), R(t);
482
+ let a = o.querySelector(n);
471
483
  if (!a) {
472
- console.warn(`Cannot scroll into view: ${t} not found`);
484
+ console.warn(`Cannot scroll into view: ${n} not found`);
473
485
  return;
474
486
  }
475
- a.scrollIntoView({ behavior: "smooth", block: "center", ...o });
476
- let r = `kf-${Math.random().toString(36).substring(2, 15)}`;
477
- g.set((h) => [
487
+ a.scrollIntoView({ behavior: "smooth", block: "center", ...e });
488
+ let s = `kf-${Math.random().toString(36).substring(2, 15)}`;
489
+ d.set((h) => [
478
490
  ...h,
479
491
  {
480
- id: n,
492
+ id: t,
481
493
  priority: 1e3,
482
- selectors: [t],
483
- selectable: !1,
494
+ selectors: [n],
484
495
  styles: {
485
496
  outline: "2px solid #1EA7FD",
486
- outlineOffset: "2px",
487
- animation: `${r} 3s linear forwards`
497
+ outlineOffset: "-1px",
498
+ animation: `${s} 3s linear forwards`
488
499
  },
489
- keyframes: `@keyframes ${r} {
500
+ keyframes: `@keyframes ${s} {
490
501
  0% { outline: 2px solid #1EA7FD; }
491
502
  20% { outline: 2px solid #1EA7FD00; }
492
503
  40% { outline: 2px solid #1EA7FD; }
@@ -495,25 +506,18 @@ ue", Helvetica, Arial, sans-serif;
495
506
  100% { outline: 2px solid #1EA7FD00; }
496
507
  }`
497
508
  }
498
- ]), I = setTimeout(() => _(n), 3500);
499
- }, "scrollIntoView"), J = /* @__PURE__ */ l((t) => {
500
- requestAnimationFrame(() => x.set({ x: t.pageX, y: t.pageY }));
509
+ ]), Y = setTimeout(() => R(t), 3500);
510
+ }, "scrollIntoView"), se = /* @__PURE__ */ l((n) => {
511
+ requestAnimationFrame(() => u.set({ x: n.pageX, y: n.pageY }));
501
512
  }, "onMouseMove");
502
- i.body.addEventListener("mousemove", J), s.on(N, K), s.on(ee, _), s.on(G, A), s.on(re, A), s.on(X, U);
503
- let Q = /* @__PURE__ */ l(() => {
504
- clearTimeout(I), i.body.removeEventListener("mousemove", J), s.off(N, K), s.off(G, A), s.off(re, A), s.off(X, U), g.teardown(), p.teardown(),
505
- u.teardown(), E.teardown(), m.teardown(), x.teardown(), M.teardown(), v.teardown(), w.teardown(), $.forEach((t) => t.remove()), C.forEach(
506
- (t) => t.remove()), i.getElementById(e)?.remove(), i.getElementById(d)?.remove();
507
- }, "teardown");
508
- return globalThis.__STORYBOOK_HIGHLIGHT_TEARDOWN = Q, Q;
513
+ o.body.addEventListener("mousemove", se), i.on(V, oe), i.on(q, R), i.on(z, X), i.on(j, ne), i.on(ce, ({ newPhase: n }) => {
514
+ n === "loading" && X();
515
+ });
509
516
  }, "useHighlights");
510
517
 
511
518
  // src/highlight/preview.ts
512
- globalThis?.FEATURES?.highlight && j?.ready && j.ready().then(() => {
513
- let s = j.getChannel();
514
- le({ channel: s });
515
- });
516
- var Te = /* @__PURE__ */ l(() => ue({}), "default");
519
+ globalThis?.FEATURES?.highlight && te?.ready && te.ready().then(ee);
520
+ var Le = /* @__PURE__ */ l(() => ue({}), "default");
517
521
  export {
518
- Te as default
522
+ Le as default
519
523
  };