@vibes.diy/base 14.3.21 → 14.3.22

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 (222) hide show
  1. package/components/StyleControls.js +27 -3
  2. package/components/StyleControls.js.map +1 -1
  3. package/components/VibesSwitch.d.ts +1 -2
  4. package/components/VibesSwitch.js +4 -59
  5. package/components/VibesSwitch.js.map +1 -1
  6. package/components/chip-fast-path.d.ts +6 -0
  7. package/components/chip-fast-path.js +2 -0
  8. package/components/chip-fast-path.js.map +1 -0
  9. package/components/editor-tabs.d.ts +3 -0
  10. package/components/editor-tabs.js +1 -0
  11. package/components/editor-tabs.js.map +1 -1
  12. package/components/index.d.ts +2 -17
  13. package/components/index.js +2 -17
  14. package/components/index.js.map +1 -1
  15. package/components/vibe-menu/VibeMenu.d.ts +16 -0
  16. package/components/vibe-menu/VibeMenu.js +99 -0
  17. package/components/vibe-menu/VibeMenu.js.map +1 -0
  18. package/components/vibe-menu/cards/AccountCard.d.ts +40 -0
  19. package/components/vibe-menu/cards/AccountCard.js +234 -0
  20. package/components/vibe-menu/cards/AccountCard.js.map +1 -0
  21. package/components/vibe-menu/cards/CodeCard.d.ts +20 -0
  22. package/components/vibe-menu/cards/CodeCard.js +109 -0
  23. package/components/vibe-menu/cards/CodeCard.js.map +1 -0
  24. package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +31 -0
  25. package/components/vibe-menu/cards/CodeModeWorkspace.js +107 -0
  26. package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -0
  27. package/components/vibe-menu/cards/HomeCard.d.ts +22 -0
  28. package/components/vibe-menu/cards/HomeCard.js +64 -0
  29. package/components/vibe-menu/cards/HomeCard.js.map +1 -0
  30. package/components/vibe-menu/cards/ShareCard.d.ts +9 -0
  31. package/components/vibe-menu/cards/ShareCard.js +84 -0
  32. package/components/vibe-menu/cards/ShareCard.js.map +1 -0
  33. package/components/vibe-menu/cards/ShareDrills.d.ts +35 -0
  34. package/components/vibe-menu/cards/ShareDrills.js +146 -0
  35. package/components/vibe-menu/cards/ShareDrills.js.map +1 -0
  36. package/components/vibe-menu/cards/ShareLinkRows.d.ts +6 -0
  37. package/components/vibe-menu/cards/ShareLinkRows.js +27 -0
  38. package/components/vibe-menu/cards/ShareLinkRows.js.map +1 -0
  39. package/components/vibe-menu/cards/share-actions.d.ts +13 -0
  40. package/components/vibe-menu/cards/share-actions.js +37 -0
  41. package/components/vibe-menu/cards/share-actions.js.map +1 -0
  42. package/components/vibe-menu/cards/share-card.styles.d.ts +1 -0
  43. package/components/vibe-menu/cards/share-card.styles.js +90 -0
  44. package/components/vibe-menu/cards/share-card.styles.js.map +1 -0
  45. package/components/vibe-menu/cards/share-copy.d.ts +24 -0
  46. package/components/vibe-menu/cards/share-copy.js +64 -0
  47. package/components/vibe-menu/cards/share-copy.js.map +1 -0
  48. package/components/vibe-menu/cards/share-parts.d.ts +46 -0
  49. package/components/vibe-menu/cards/share-parts.js +87 -0
  50. package/components/vibe-menu/cards/share-parts.js.map +1 -0
  51. package/components/vibe-menu/code-tabs.d.ts +11 -0
  52. package/components/vibe-menu/code-tabs.js +32 -0
  53. package/components/vibe-menu/code-tabs.js.map +1 -0
  54. package/components/vibe-menu/copy.d.ts +7 -0
  55. package/components/vibe-menu/copy.js +13 -0
  56. package/components/vibe-menu/copy.js.map +1 -0
  57. package/components/vibe-menu/fixtures.d.ts +42 -0
  58. package/components/vibe-menu/fixtures.js +184 -0
  59. package/components/vibe-menu/fixtures.js.map +1 -0
  60. package/components/vibe-menu/geometry.d.ts +24 -0
  61. package/components/vibe-menu/geometry.js +28 -0
  62. package/components/vibe-menu/geometry.js.map +1 -0
  63. package/components/vibe-menu/index.d.ts +42 -0
  64. package/components/vibe-menu/index.js +43 -0
  65. package/components/vibe-menu/index.js.map +1 -0
  66. package/components/vibe-menu/menu-state.d.ts +42 -0
  67. package/components/vibe-menu/menu-state.js +82 -0
  68. package/components/vibe-menu/menu-state.js.map +1 -0
  69. package/components/vibe-menu/moments.d.ts +13 -0
  70. package/components/vibe-menu/moments.js +39 -0
  71. package/components/vibe-menu/moments.js.map +1 -0
  72. package/components/vibe-menu/motion.d.ts +10 -0
  73. package/components/vibe-menu/motion.js +10 -0
  74. package/components/vibe-menu/motion.js.map +1 -0
  75. package/components/vibe-menu/open-resolver.d.ts +46 -0
  76. package/components/vibe-menu/open-resolver.js +91 -0
  77. package/components/vibe-menu/open-resolver.js.map +1 -0
  78. package/components/vibe-menu/parts/AccessToggle.d.ts +13 -0
  79. package/components/vibe-menu/parts/AccessToggle.js +58 -0
  80. package/components/vibe-menu/parts/AccessToggle.js.map +1 -0
  81. package/components/vibe-menu/parts/ActionPill.d.ts +18 -0
  82. package/components/vibe-menu/parts/ActionPill.js +21 -0
  83. package/components/vibe-menu/parts/ActionPill.js.map +1 -0
  84. package/components/vibe-menu/parts/BackRow.d.ts +8 -0
  85. package/components/vibe-menu/parts/BackRow.js +10 -0
  86. package/components/vibe-menu/parts/BackRow.js.map +1 -0
  87. package/components/vibe-menu/parts/Chip.d.ts +37 -0
  88. package/components/vibe-menu/parts/Chip.js +62 -0
  89. package/components/vibe-menu/parts/Chip.js.map +1 -0
  90. package/components/vibe-menu/parts/Composer.d.ts +39 -0
  91. package/components/vibe-menu/parts/Composer.js +47 -0
  92. package/components/vibe-menu/parts/Composer.js.map +1 -0
  93. package/components/vibe-menu/parts/DoneButton.d.ts +5 -0
  94. package/components/vibe-menu/parts/DoneButton.js +5 -0
  95. package/components/vibe-menu/parts/DoneButton.js.map +1 -0
  96. package/components/vibe-menu/parts/Glyph.d.ts +9 -0
  97. package/components/vibe-menu/parts/Glyph.js +123 -0
  98. package/components/vibe-menu/parts/Glyph.js.map +1 -0
  99. package/components/vibe-menu/parts/GrantControls.d.ts +13 -0
  100. package/components/vibe-menu/parts/GrantControls.js +61 -0
  101. package/components/vibe-menu/parts/GrantControls.js.map +1 -0
  102. package/components/vibe-menu/parts/MemberRow.d.ts +37 -0
  103. package/components/vibe-menu/parts/MemberRow.js +70 -0
  104. package/components/vibe-menu/parts/MemberRow.js.map +1 -0
  105. package/components/vibe-menu/parts/MenuCard.d.ts +10 -0
  106. package/components/vibe-menu/parts/MenuCard.js +7 -0
  107. package/components/vibe-menu/parts/MenuCard.js.map +1 -0
  108. package/components/vibe-menu/parts/MomentLine.d.ts +23 -0
  109. package/components/vibe-menu/parts/MomentLine.js +58 -0
  110. package/components/vibe-menu/parts/MomentLine.js.map +1 -0
  111. package/components/vibe-menu/parts/Row.d.ts +41 -0
  112. package/components/vibe-menu/parts/Row.js +60 -0
  113. package/components/vibe-menu/parts/Row.js.map +1 -0
  114. package/components/vibe-menu/parts/SectionStrip.d.ts +14 -0
  115. package/components/vibe-menu/parts/SectionStrip.js +26 -0
  116. package/components/vibe-menu/parts/SectionStrip.js.map +1 -0
  117. package/components/vibe-menu/parts/VibesSwitchGlass.d.ts +24 -0
  118. package/components/vibe-menu/parts/VibesSwitchGlass.js +66 -0
  119. package/components/vibe-menu/parts/VibesSwitchGlass.js.map +1 -0
  120. package/components/vibe-menu/parts/radio-keys.d.ts +5 -0
  121. package/components/vibe-menu/parts/radio-keys.js +13 -0
  122. package/components/vibe-menu/parts/radio-keys.js.map +1 -0
  123. package/components/vibe-menu/parts/use-composer-draft.d.ts +9 -0
  124. package/components/vibe-menu/parts/use-composer-draft.js +94 -0
  125. package/components/vibe-menu/parts/use-composer-draft.js.map +1 -0
  126. package/components/vibe-menu/share-fixtures.d.ts +15 -0
  127. package/components/vibe-menu/share-fixtures.js +72 -0
  128. package/components/vibe-menu/share-fixtures.js.map +1 -0
  129. package/components/vibe-menu/shell/VibeMenuShell.d.ts +30 -0
  130. package/components/vibe-menu/shell/VibeMenuShell.js +124 -0
  131. package/components/vibe-menu/shell/VibeMenuShell.js.map +1 -0
  132. package/components/vibe-menu/shell/menu-sequence.d.ts +20 -0
  133. package/components/vibe-menu/shell/menu-sequence.js +35 -0
  134. package/components/vibe-menu/shell/menu-sequence.js.map +1 -0
  135. package/components/vibe-menu/shell/outline-geometry.d.ts +63 -0
  136. package/components/vibe-menu/shell/outline-geometry.js +83 -0
  137. package/components/vibe-menu/shell/outline-geometry.js.map +1 -0
  138. package/components/vibe-menu/shell/shell.styles.d.ts +1 -0
  139. package/components/vibe-menu/shell/shell.styles.js +386 -0
  140. package/components/vibe-menu/shell/shell.styles.js.map +1 -0
  141. package/components/vibe-menu/shell/useMenuSequencer.d.ts +33 -0
  142. package/components/vibe-menu/shell/useMenuSequencer.js +490 -0
  143. package/components/vibe-menu/shell/useMenuSequencer.js.map +1 -0
  144. package/components/vibe-menu/slices.d.ts +182 -0
  145. package/components/vibe-menu/slices.js +5 -0
  146. package/components/vibe-menu/slices.js.map +1 -0
  147. package/components/vibe-menu/use-remix-hint.d.ts +9 -0
  148. package/components/vibe-menu/use-remix-hint.js +21 -0
  149. package/components/vibe-menu/use-remix-hint.js.map +1 -0
  150. package/components/vibe-menu/vibe-menu.styles.d.ts +5 -0
  151. package/components/vibe-menu/vibe-menu.styles.js +1424 -0
  152. package/components/vibe-menu/vibe-menu.styles.js.map +1 -0
  153. package/package.json +4 -4
  154. package/components/AccountView.d.ts +0 -10
  155. package/components/AccountView.js +0 -31
  156. package/components/AccountView.js.map +0 -1
  157. package/components/AdminModeControl.d.ts +0 -7
  158. package/components/AdminModeControl.js +0 -9
  159. package/components/AdminModeControl.js.map +0 -1
  160. package/components/CodingIndicator.d.ts +0 -6
  161. package/components/CodingIndicator.js +0 -53
  162. package/components/CodingIndicator.js.map +0 -1
  163. package/components/CreditsDetailMenu.d.ts +0 -15
  164. package/components/CreditsDetailMenu.js +0 -97
  165. package/components/CreditsDetailMenu.js.map +0 -1
  166. package/components/CreditsRingView.d.ts +0 -15
  167. package/components/CreditsRingView.js +0 -77
  168. package/components/CreditsRingView.js.map +0 -1
  169. package/components/EditorTabStrip.d.ts +0 -10
  170. package/components/EditorTabStrip.js +0 -15
  171. package/components/EditorTabStrip.js.map +0 -1
  172. package/components/LinkLineControls.d.ts +0 -9
  173. package/components/LinkLineControls.js +0 -72
  174. package/components/LinkLineControls.js.map +0 -1
  175. package/components/MadeHereView.d.ts +0 -8
  176. package/components/MadeHereView.js +0 -37
  177. package/components/MadeHereView.js.map +0 -1
  178. package/components/RecentVibesList.d.ts +0 -19
  179. package/components/RecentVibesList.js +0 -106
  180. package/components/RecentVibesList.js.map +0 -1
  181. package/components/RecommendedView.d.ts +0 -22
  182. package/components/RecommendedView.js +0 -172
  183. package/components/RecommendedView.js.map +0 -1
  184. package/components/RemixInviteView.d.ts +0 -4
  185. package/components/RemixInviteView.js +0 -11
  186. package/components/RemixInviteView.js.map +0 -1
  187. package/components/SeedDataOffer.d.ts +0 -8
  188. package/components/SeedDataOffer.js +0 -15
  189. package/components/SeedDataOffer.js.map +0 -1
  190. package/components/SignedInDiscoveryView.d.ts +0 -17
  191. package/components/SignedInDiscoveryView.js +0 -30
  192. package/components/SignedInDiscoveryView.js.map +0 -1
  193. package/components/SignedOutDiscoveryView.d.ts +0 -7
  194. package/components/SignedOutDiscoveryView.js +0 -15
  195. package/components/SignedOutDiscoveryView.js.map +0 -1
  196. package/components/SignedOutSavePrompt.d.ts +0 -4
  197. package/components/SignedOutSavePrompt.js +0 -33
  198. package/components/SignedOutSavePrompt.js.map +0 -1
  199. package/components/UnifiedVibeCard.d.ts +0 -129
  200. package/components/UnifiedVibeCard.js +0 -1658
  201. package/components/UnifiedVibeCard.js.map +0 -1
  202. package/components/UnifiedVibeCardSettings.styles.d.ts +0 -3
  203. package/components/UnifiedVibeCardSettings.styles.js +0 -95
  204. package/components/UnifiedVibeCardSettings.styles.js.map +0 -1
  205. package/components/UnifiedVibeCardShare.styles.d.ts +0 -3
  206. package/components/UnifiedVibeCardShare.styles.js +0 -72
  207. package/components/UnifiedVibeCardShare.styles.js.map +0 -1
  208. package/components/ViewerAccessSummary.d.ts +0 -28
  209. package/components/ViewerAccessSummary.js +0 -105
  210. package/components/ViewerAccessSummary.js.map +0 -1
  211. package/components/ViewerStandingView.d.ts +0 -7
  212. package/components/ViewerStandingView.js +0 -10
  213. package/components/ViewerStandingView.js.map +0 -1
  214. package/hooks/useCardFloat.d.ts +0 -6
  215. package/hooks/useCardFloat.js +0 -191
  216. package/hooks/useCardFloat.js.map +0 -1
  217. package/hooks/useHomeMotionPress.d.ts +0 -17
  218. package/hooks/useHomeMotionPress.js +0 -93
  219. package/hooks/useHomeMotionPress.js.map +0 -1
  220. package/motion/card-motion-source.d.ts +0 -23
  221. package/motion/card-motion-source.js +0 -50
  222. package/motion/card-motion-source.js.map +0 -1
@@ -0,0 +1,490 @@
1
+ import { createRef, useEffect, useLayoutEffect, useRef, useState } from "react";
2
+ import { MOTION } from "../motion.js";
3
+ import { CLOSE_EASE_POINTS, OPEN_EASE_POINTS, cubicBezier, lerp, lerpSize, menuBox, outlineFrame } from "./outline-geometry.js";
4
+ import { HIDDEN, planPresentation, sameShown, shownKey, wantFor } from "./menu-sequence.js";
5
+ const OPEN_EASE = cubicBezier(OPEN_EASE_POINTS);
6
+ const CLOSE_EASE = cubicBezier(CLOSE_EASE_POINTS);
7
+ function linear(x) {
8
+ return x;
9
+ }
10
+ function ignore(_value) {
11
+ }
12
+ function nextFrame() {
13
+ return new Promise((resolve) => requestAnimationFrame(resolve));
14
+ }
15
+ export function prefersReducedMotion() {
16
+ return typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
17
+ }
18
+ function setRect(input) {
19
+ input.el.setAttribute("x", String(input.rect.x));
20
+ input.el.setAttribute("y", String(input.rect.y));
21
+ input.el.setAttribute("width", String(input.rect.width));
22
+ input.el.setAttribute("height", String(input.rect.height));
23
+ }
24
+ function clearFold(input) {
25
+ if (input.clip !== null) {
26
+ input.clip.style.removeProperty("height");
27
+ input.clip.style.removeProperty("visibility");
28
+ }
29
+ if (input.chev !== null) {
30
+ input.chev.style.removeProperty("transition");
31
+ input.chev.style.removeProperty("transform");
32
+ }
33
+ }
34
+ function logFold(input) {
35
+ const clip = input.body.querySelector("[data-log-clip]");
36
+ if (clip === null)
37
+ return undefined;
38
+ const chev = input.body.querySelector("[data-log-chev]");
39
+ const midFold = clip.style.height !== "";
40
+ const full = clip.scrollHeight;
41
+ const from = midFold ? clip.offsetHeight : input.dir === "open" ? 0 : full;
42
+ const target = input.dir === "open" ? full : 0;
43
+ const turnFrom = full > 0 ? from / full : 0;
44
+ const turnTo = input.dir === "open" ? 1 : 0;
45
+ clip.style.visibility = "visible";
46
+ clip.style.height = `${target}px`;
47
+ if (chev !== null)
48
+ chev.style.transition = "none";
49
+ return {
50
+ set(k) {
51
+ clip.style.height = `${lerp({ from, to: target }, k)}px`;
52
+ if (chev !== null)
53
+ chev.style.transform = `rotate(${90 * lerp({ from: turnFrom, to: turnTo }, k)}deg)`;
54
+ },
55
+ done() {
56
+ clearFold({ clip, chev });
57
+ },
58
+ };
59
+ }
60
+ function createMenuDriver(deps, initial) {
61
+ const drawn = {
62
+ bar: initial.bar,
63
+ section: initial.section,
64
+ p: initial.section === null ? 0 : 1,
65
+ h: 0,
66
+ w: 0,
67
+ cover: null,
68
+ held: false,
69
+ };
70
+ let token = 0;
71
+ function nodes() {
72
+ const r = deps.refs;
73
+ const menu = r.menu.current;
74
+ const slide = r.slide.current;
75
+ const card = r.card.current;
76
+ const body = r.body.current;
77
+ const outline = r.outline.current;
78
+ const band = r.band.current;
79
+ const cover = r.cover.current;
80
+ const edge = r.edge.current;
81
+ if (menu === null || slide === null || card === null || body === null)
82
+ return undefined;
83
+ if (outline === null || band === null || cover === null || edge === null)
84
+ return undefined;
85
+ return { menu, slide, card, body, outline, band, cover, edge };
86
+ }
87
+ function tabSpan(input) {
88
+ const tab = deps.refs.tabs.current[input.section];
89
+ if (tab === null)
90
+ return undefined;
91
+ const box = menuBox({ rect: tab.getBoundingClientRect(), origin: input.n.menu.getBoundingClientRect() });
92
+ return [box.l, box.r];
93
+ }
94
+ function draw() {
95
+ const n = nodes();
96
+ if (n === undefined)
97
+ return;
98
+ const section = drawn.section;
99
+ const show = section !== null && drawn.p > 0;
100
+ n.card.style.visibility = show ? "visible" : "hidden";
101
+ n.outline.style.display = show ? "block" : "none";
102
+ if (section === null || show === false) {
103
+ n.slide.style.removeProperty("--bar-tl");
104
+ return;
105
+ }
106
+ const tab = deps.refs.tabs.current[section];
107
+ if (tab === null)
108
+ return;
109
+ const origin = n.menu.getBoundingClientRect();
110
+ const frame = outlineFrame({
111
+ p: drawn.p,
112
+ h: drawn.h,
113
+ bar: menuBox({ rect: n.slide.getBoundingClientRect(), origin }),
114
+ card: menuBox({ rect: n.card.getBoundingClientRect(), origin }),
115
+ tab: menuBox({ rect: tab.getBoundingClientRect(), origin }),
116
+ cover: drawn.cover,
117
+ });
118
+ n.card.style.clipPath = frame.clipPath;
119
+ setRect({ el: n.band, rect: frame.band });
120
+ setRect({ el: n.cover, rect: frame.cover });
121
+ n.edge.setAttribute("d", frame.edgeD);
122
+ n.slide.style.setProperty("--bar-tl", `${frame.barTopLeft}px`);
123
+ }
124
+ function setProgress(p) {
125
+ drawn.p = p;
126
+ draw();
127
+ }
128
+ function holdSize(input) {
129
+ const n = nodes();
130
+ if (n === undefined)
131
+ return;
132
+ if (input.widthChanges)
133
+ n.card.style.width = `${input.size.w}px`;
134
+ n.card.style.height = `${input.size.h}px`;
135
+ n.card.style.maxHeight = "none";
136
+ n.card.style.overflow = "hidden";
137
+ drawn.held = true;
138
+ drawn.h = input.size.h;
139
+ drawn.w = input.size.w;
140
+ }
141
+ function releaseSize() {
142
+ const n = nodes();
143
+ if (n === undefined)
144
+ return;
145
+ for (const prop of ["width", "height", "max-height", "overflow"])
146
+ n.card.style.removeProperty(prop);
147
+ drawn.held = false;
148
+ }
149
+ function naturalSize() {
150
+ releaseSize();
151
+ const n = nodes();
152
+ if (n === undefined)
153
+ return { w: drawn.w, h: drawn.h };
154
+ return { w: n.card.offsetWidth, h: n.card.offsetHeight };
155
+ }
156
+ function settle() {
157
+ const size = naturalSize();
158
+ drawn.h = size.h;
159
+ drawn.w = size.w;
160
+ draw();
161
+ }
162
+ async function tween(spec) {
163
+ if (deps.reducedMotion() || spec.ms <= 0) {
164
+ spec.set(spec.to);
165
+ return spec.my === token;
166
+ }
167
+ const t0 = performance.now();
168
+ for (;;) {
169
+ await nextFrame();
170
+ if (spec.my !== token)
171
+ return false;
172
+ const k = Math.min(1, (performance.now() - t0) / spec.ms);
173
+ spec.set(lerp({ from: spec.from, to: spec.to }, spec.ease(k)));
174
+ if (k === 1)
175
+ return true;
176
+ }
177
+ }
178
+ function busy() {
179
+ deps.refs.menu.current?.setAttribute("data-motion", "busy");
180
+ }
181
+ function idle(input) {
182
+ const menu = deps.refs.menu.current;
183
+ if (menu === null || input.my !== token)
184
+ return;
185
+ menu.setAttribute("data-motion", "idle");
186
+ if (input.want !== undefined)
187
+ menu.setAttribute("data-idle-for", shownKey(input.want));
188
+ }
189
+ function dropLogFold() {
190
+ const n = nodes();
191
+ if (n === undefined)
192
+ return;
193
+ clearFold({
194
+ clip: n.body.querySelector("[data-log-clip]"),
195
+ chev: n.body.querySelector("[data-log-chev]"),
196
+ });
197
+ }
198
+ async function sink(my) {
199
+ const ok = await tween({ from: drawn.p, to: 0, ms: MOTION.closeMs * drawn.p, ease: CLOSE_EASE, set: setProgress, my });
200
+ if (ok === false)
201
+ return false;
202
+ releaseSize();
203
+ drawn.cover = null;
204
+ drawn.section = null;
205
+ await deps.commitShown({ bar: drawn.bar, section: null });
206
+ if (my !== token)
207
+ return false;
208
+ draw();
209
+ return true;
210
+ }
211
+ async function setBar(input) {
212
+ drawn.bar = input.open;
213
+ await deps.commitShown({ bar: drawn.bar, section: drawn.section });
214
+ return input.my === token;
215
+ }
216
+ async function rise(input) {
217
+ if (drawn.section !== input.section) {
218
+ drawn.section = input.section;
219
+ drawn.cover = null;
220
+ drawn.p = 0;
221
+ await deps.commitShown({ bar: drawn.bar, section: input.section });
222
+ if (input.my !== token)
223
+ return false;
224
+ const size = naturalSize();
225
+ drawn.h = size.h;
226
+ drawn.w = size.w;
227
+ }
228
+ const n = nodes();
229
+ const coverFrom = drawn.cover;
230
+ const coverTo = n === undefined ? undefined : tabSpan({ n, section: input.section });
231
+ const p0 = drawn.p;
232
+ function frame(k) {
233
+ if (coverFrom !== null && coverTo !== undefined) {
234
+ drawn.cover = [lerp({ from: coverFrom[0], to: coverTo[0] }, k), lerp({ from: coverFrom[1], to: coverTo[1] }, k)];
235
+ }
236
+ setProgress(lerp({ from: p0, to: 1 }, k));
237
+ }
238
+ const ok = await tween({ from: 0, to: 1, ms: MOTION.openMs * (1 - p0), ease: OPEN_EASE, set: frame, my: input.my });
239
+ if (ok === false)
240
+ return false;
241
+ drawn.cover = null;
242
+ settle();
243
+ return true;
244
+ }
245
+ async function switchTo(input) {
246
+ const n = nodes();
247
+ const leaving = drawn.section;
248
+ if (n === undefined || leaving === null)
249
+ return false;
250
+ const fromCover = drawn.cover ?? tabSpan({ n, section: leaving });
251
+ if (fromCover === undefined)
252
+ return false;
253
+ const fromSize = { w: n.card.offsetWidth, h: drawn.h };
254
+ const p0 = drawn.p;
255
+ drawn.section = input.section;
256
+ await deps.commitShown({ bar: drawn.bar, section: input.section });
257
+ if (input.my !== token)
258
+ return false;
259
+ const to = naturalSize();
260
+ const target = tabSpan({ n, section: input.section });
261
+ if (target === undefined)
262
+ return false;
263
+ const widthChanges = Math.abs(fromSize.w - to.w) > 0.5;
264
+ function frame(k) {
265
+ if (fromCover === undefined || target === undefined)
266
+ return;
267
+ drawn.cover = [lerp({ from: fromCover[0], to: target[0] }, k), lerp({ from: fromCover[1], to: target[1] }, k)];
268
+ drawn.p = lerp({ from: p0, to: 1 }, k);
269
+ holdSize({ size: lerpSize({ from: fromSize, to }, k), widthChanges });
270
+ draw();
271
+ }
272
+ frame(0);
273
+ const ok = await tween({ from: 0, to: 1, ms: MOTION.settleMs, ease: OPEN_EASE, set: frame, my: input.my });
274
+ if (ok === false)
275
+ return false;
276
+ drawn.cover = null;
277
+ settle();
278
+ return true;
279
+ }
280
+ function runStep(input) {
281
+ const section = input.want.section;
282
+ switch (input.step) {
283
+ case "sink":
284
+ return sink(input.my);
285
+ case "openBar":
286
+ case "closeBar":
287
+ return setBar({ open: input.want.bar, my: input.my });
288
+ case "waitForBar":
289
+ return tween({ from: 0, to: 1, ms: MOTION.openMs, ease: linear, set: ignore, my: input.my });
290
+ case "rise":
291
+ return section === null ? Promise.resolve(false) : rise({ section, my: input.my });
292
+ case "switch":
293
+ return section === null ? Promise.resolve(false) : switchTo({ section, my: input.my });
294
+ }
295
+ }
296
+ async function present(want) {
297
+ token += 1;
298
+ const my = token;
299
+ busy();
300
+ dropLogFold();
301
+ const steps = planPresentation({
302
+ shown: { bar: drawn.bar, section: drawn.section },
303
+ p: drawn.p,
304
+ want,
305
+ reducedMotion: deps.reducedMotion(),
306
+ });
307
+ if (steps.length === 0 && (drawn.cover !== null || drawn.held === true)) {
308
+ drawn.cover = null;
309
+ if (drawn.section !== null)
310
+ settle();
311
+ else
312
+ releaseSize();
313
+ }
314
+ for (const step of steps) {
315
+ deps.onStep(step);
316
+ const ok = await runStep({ step, want, my });
317
+ if (ok === false)
318
+ return;
319
+ }
320
+ idle({ my, want });
321
+ }
322
+ function resizeInPlace(logDir) {
323
+ const n = nodes();
324
+ const section = drawn.section;
325
+ if (n === undefined || section === null)
326
+ return;
327
+ token += 1;
328
+ const my = token;
329
+ busy();
330
+ if (logDir === undefined)
331
+ dropLogFold();
332
+ const heldH = drawn.h;
333
+ const heldW = drawn.w;
334
+ const p0 = drawn.p;
335
+ const coverFrom = drawn.cover;
336
+ const coverTo = tabSpan({ n, section });
337
+ const fold = logDir === undefined ? undefined : logFold({ body: n.body, dir: logDir });
338
+ const to = naturalSize();
339
+ fold?.set(0);
340
+ const from = { w: heldW > 0 ? heldW : to.w, h: heldH };
341
+ const widthChanges = Math.abs(from.w - to.w) > 0.5;
342
+ const unchanged = fold === undefined && widthChanges === false && Math.abs(from.h - to.h) <= 0.5 && p0 >= 1 && coverFrom === null;
343
+ const drawnShown = { bar: drawn.bar, section };
344
+ if (unchanged) {
345
+ settle();
346
+ idle({ my, want: drawnShown });
347
+ return;
348
+ }
349
+ deps.onStep("resize");
350
+ function frame(k) {
351
+ fold?.set(k);
352
+ if (coverFrom !== null && coverTo !== undefined) {
353
+ drawn.cover = [lerp({ from: coverFrom[0], to: coverTo[0] }, k), lerp({ from: coverFrom[1], to: coverTo[1] }, k)];
354
+ }
355
+ drawn.p = lerp({ from: p0, to: 1 }, k);
356
+ holdSize({ size: lerpSize({ from, to }, k), widthChanges });
357
+ draw();
358
+ }
359
+ frame(0);
360
+ void tween({ from: 0, to: 1, ms: MOTION.openMs, ease: OPEN_EASE, set: frame, my }).then(function finish(ok) {
361
+ if (ok === false)
362
+ return;
363
+ fold?.done();
364
+ drawn.cover = null;
365
+ settle();
366
+ idle({ my, want: drawnShown });
367
+ });
368
+ }
369
+ function resnap() {
370
+ if (drawn.section !== null && drawn.held === false && drawn.p > 0)
371
+ settle();
372
+ }
373
+ return {
374
+ present,
375
+ resizeInPlace,
376
+ resnap,
377
+ snap() {
378
+ if (drawn.section !== null)
379
+ settle();
380
+ else
381
+ draw();
382
+ },
383
+ drawnSection() {
384
+ return drawn.section;
385
+ },
386
+ stop() {
387
+ token += 1;
388
+ },
389
+ };
390
+ }
391
+ function createMenuRefs() {
392
+ return {
393
+ menu: createRef(),
394
+ slide: createRef(),
395
+ card: createRef(),
396
+ body: createRef(),
397
+ outline: createRef(),
398
+ band: createRef(),
399
+ cover: createRef(),
400
+ edge: createRef(),
401
+ tabs: { current: { home: null, settings: null, vibe: null, share: null } },
402
+ };
403
+ }
404
+ export function useMenuSequencer(input) {
405
+ const [mountShown] = useState(() => (input.settledAtMount === true ? wantFor(input.state) : HIDDEN));
406
+ const [shown, setShown] = useState(mountShown);
407
+ const waiters = useRef([]);
408
+ const latest = useRef({
409
+ reducedMotion: input.reducedMotion,
410
+ onStep: input.onStep,
411
+ });
412
+ useLayoutEffect(() => {
413
+ latest.current = { reducedMotion: input.reducedMotion, onStep: input.onStep };
414
+ });
415
+ const [refs] = useState(createMenuRefs);
416
+ const [driver] = useState(() => {
417
+ let requested = mountShown;
418
+ return createMenuDriver({
419
+ refs,
420
+ commitShown(next) {
421
+ if (sameShown(next, requested)) {
422
+ if (waiters.current.length === 0)
423
+ return Promise.resolve();
424
+ return new Promise((resolve) => {
425
+ waiters.current.push(resolve);
426
+ });
427
+ }
428
+ requested = next;
429
+ return new Promise((resolve) => {
430
+ waiters.current.push(resolve);
431
+ setShown(next);
432
+ });
433
+ },
434
+ reducedMotion() {
435
+ const forced = latest.current.reducedMotion;
436
+ return forced === undefined ? prefersReducedMotion() : forced;
437
+ },
438
+ onStep(step) {
439
+ latest.current.onStep?.(step);
440
+ },
441
+ }, mountShown);
442
+ });
443
+ useLayoutEffect(() => {
444
+ if (mountShown.bar || mountShown.section !== null)
445
+ driver.snap();
446
+ }, [driver, mountShown]);
447
+ useLayoutEffect(() => {
448
+ const pending = waiters.current;
449
+ waiters.current = [];
450
+ for (const resolve of pending)
451
+ resolve();
452
+ }, [shown]);
453
+ const { phase, section } = input.state;
454
+ useEffect(() => {
455
+ void driver.present(wantFor({ phase, section }));
456
+ }, [driver, phase, section]);
457
+ const previous = useRef({
458
+ contentKey: input.contentKey,
459
+ logOpen: input.logOpen,
460
+ });
461
+ useLayoutEffect(() => {
462
+ const before = previous.current;
463
+ previous.current = { contentKey: input.contentKey, logOpen: input.logOpen };
464
+ if (before.contentKey === input.contentKey && before.logOpen === input.logOpen)
465
+ return;
466
+ const live = phase === "card" && section !== null && driver.drawnSection() === section;
467
+ if (live === false)
468
+ return;
469
+ const logDir = before.logOpen === input.logOpen ? undefined : input.logOpen ? "open" : "close";
470
+ driver.resizeInPlace(logDir);
471
+ }, [driver, input.contentKey, input.logOpen, phase, section]);
472
+ useEffect(() => {
473
+ const body = refs.body.current;
474
+ if (body === null)
475
+ return;
476
+ const observer = new ResizeObserver(() => driver.resnap());
477
+ observer.observe(body);
478
+ function onResize() {
479
+ driver.resnap();
480
+ }
481
+ window.addEventListener("resize", onResize);
482
+ return () => {
483
+ observer.disconnect();
484
+ window.removeEventListener("resize", onResize);
485
+ };
486
+ }, [driver, refs]);
487
+ useEffect(() => () => driver.stop(), [driver]);
488
+ return { shown, refs };
489
+ }
490
+ //# sourceMappingURL=useMenuSequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuSequencer.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/useMenuSequencer.ts"],"names":[],"mappings":"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"}