camox 0.48.0 → 0.52.1

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 (127) hide show
  1. package/dist/core/createApp.d.ts +1 -0
  2. package/dist/core/createApp.js +1 -0
  3. package/dist/core/editing/contentEdits.js +78 -0
  4. package/dist/core/editing/createEditableBlock.js +277 -311
  5. package/dist/core/layoutContext.d.ts +1 -0
  6. package/dist/core/lib/contentType.js +2 -2
  7. package/dist/core/recordItem.js +3 -3
  8. package/dist/features/canvas/CamoxCanvas.js +15 -15
  9. package/dist/features/canvas/CanvasLoadingScreen.js +15 -11
  10. package/dist/features/canvas/CanvasPageFrame.js +81 -87
  11. package/dist/features/canvas/CanvasPreviewPageSlot.js +1 -1
  12. package/dist/features/canvas/DerivedPagePathInput.js +12 -12
  13. package/dist/features/canvas/canvasOverlayGeometry.js +1 -1
  14. package/dist/features/canvas/canvasStore.js +2 -2
  15. package/dist/features/canvas/sidebar/CanvasInspector.js +1 -1
  16. package/dist/features/canvas/sidebar/CuratedPageInspector.js +1 -1
  17. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +23 -31
  18. package/dist/features/canvas/useCanvasCamera.js +1 -1
  19. package/dist/features/canvas/useDiscoveredPreviewPaths.js +16 -9
  20. package/dist/features/content/ContentAssets.js +84 -88
  21. package/dist/features/page/CuratedPageContent.js +1 -1
  22. package/dist/features/preview/CamoxPreview.d.ts +8 -4
  23. package/dist/features/preview/CamoxPreview.js +258 -443
  24. package/dist/features/preview/EditablePageContent.js +244 -2
  25. package/dist/features/preview/EditablePageExperience.js +19 -13
  26. package/dist/features/preview/components/AddBlockSheet.js +55 -15
  27. package/dist/features/preview/components/BlockActionsPopover.js +23 -51
  28. package/dist/features/preview/components/BlockPeek.js +66 -0
  29. package/dist/features/preview/components/BlockThumbnail.js +134 -119
  30. package/dist/features/preview/components/CanvasPreview.js +1 -1
  31. package/dist/features/preview/components/CreatePageModal.js +150 -156
  32. package/dist/features/preview/components/FieldToolbar.js +1 -1
  33. package/dist/features/preview/components/Frame.js +27 -4
  34. package/dist/features/preview/components/MobilePreviewDrawer.js +6 -9
  35. package/dist/features/preview/components/PageInfo.js +161 -126
  36. package/dist/features/preview/components/PagePicker.js +2 -2
  37. package/dist/features/preview/components/PageTree.js +174 -190
  38. package/dist/features/preview/components/PreviewPanel.js +13 -67
  39. package/dist/features/preview/components/PreviewToolbar.js +1 -1
  40. package/dist/features/preview/components/ReferenceFieldEditor.js +4 -4
  41. package/dist/features/preview/components/ReferenceListFieldEditor.js +4 -4
  42. package/dist/features/preview/components/RemovedBlockPlaceholder.js +37 -70
  43. package/dist/features/preview/components/RepeatableItemsList.js +1 -1
  44. package/dist/features/preview/components/SelectionEditor.js +248 -256
  45. package/dist/features/preview/components/StudioEditingFallback.js +22 -26
  46. package/dist/features/preview/components/useFieldWriter.js +19 -19
  47. package/dist/features/preview/components/useRecordView.js +105 -147
  48. package/dist/features/preview/components/useRepeatableItemActions.js +0 -2
  49. package/dist/features/preview/pageRecord.js +30 -24
  50. package/dist/features/preview/previewConstants.js +2 -8
  51. package/dist/features/preview/previewStore.js +2 -0
  52. package/dist/features/preview/studioNotice.js +20 -0
  53. package/dist/features/preview/usePreviewViewportActions.js +1 -1
  54. package/dist/features/provider/AuthenticatedCamoxProvider.js +47 -31
  55. package/dist/features/provider/components/CommandPalette.js +2 -5
  56. package/dist/features/provider/signInShortcut.js +1 -2
  57. package/dist/features/provider/useAdminShortcuts.js +47 -53
  58. package/dist/features/renderer/RendererApp.js +542 -0
  59. package/dist/features/renderer/RendererFrames.js +450 -0
  60. package/dist/features/renderer/definitionAnswers.js +26 -0
  61. package/dist/features/renderer/protocol.js +35 -0
  62. package/dist/features/renderer/rendererHost.js +249 -0
  63. package/dist/features/renderer/studioConnection.js +186 -0
  64. package/dist/features/routes/pageRuntime.d.ts +2 -1
  65. package/dist/features/routes/pageRuntime.js +34 -22
  66. package/dist/features/runtime/RuntimeChrome.js +2 -5
  67. package/dist/features/runtime/assetPrefix.js +14 -0
  68. package/dist/features/runtime/breadcrumbs.js +1 -1
  69. package/dist/features/runtime/editingFallback.js +4 -8
  70. package/dist/features/runtime/livePages.js +1 -1
  71. package/dist/features/runtime/pageApp.js +57 -83
  72. package/dist/features/runtime/pageClient.js +1 -1
  73. package/dist/features/runtime/pageNavigation.js +3 -2
  74. package/dist/features/runtime/publicCache.js +95 -0
  75. package/dist/features/runtime/publishingDraft.js +23 -0
  76. package/dist/features/runtime/rendererClient.d.ts +8 -0
  77. package/dist/features/runtime/rendererClient.js +77 -0
  78. package/dist/features/runtime/runtime.d.ts +22 -3
  79. package/dist/features/runtime/runtime.js +209 -96
  80. package/dist/features/runtime/runtimeRoutes.d.ts +2 -0
  81. package/dist/features/runtime/runtimeRoutes.js +2 -0
  82. package/dist/features/runtime/worker.d.ts +14 -1
  83. package/dist/features/runtime/worker.js +34 -4
  84. package/dist/features/settings/AnalyticsSettings.js +622 -0
  85. package/dist/features/settings/CamoxSettings.js +95 -0
  86. package/dist/features/settings/FaviconSettings.js +254 -0
  87. package/dist/features/settings/ProjectNameSettings.js +145 -0
  88. package/dist/features/settings/SettingsPart.js +73 -0
  89. package/dist/features/settings/SocialProfilesSettings.js +245 -0
  90. package/dist/features/settings/useProjectMutation.js +61 -0
  91. package/dist/features/studio/FollowAgentProvider.js +10 -10
  92. package/dist/features/studio/components/DraftsControl.js +136 -131
  93. package/dist/features/studio/components/LocalePicker.js +178 -174
  94. package/dist/features/studio/components/Navbar.js +107 -66
  95. package/dist/features/studio/components/ProjectMenu.js +119 -171
  96. package/dist/features/studio/components/ReviewDraftSheet.js +1151 -991
  97. package/dist/features/studio/components/ThreadMessages.js +100 -65
  98. package/dist/features/studio/components/UserButton.js +2 -2
  99. package/dist/features/studio/routes.js +3 -1
  100. package/dist/features/studio/showInCanvas.js +129 -0
  101. package/dist/features/vite/definitionsSync.js +5 -6
  102. package/dist/features/vite/hostedChecks.js +127 -0
  103. package/dist/features/vite/runtimeDev.js +58 -17
  104. package/dist/features/vite/staticAssetHeaders.js +52 -0
  105. package/dist/features/vite/vite.d.ts +1 -1
  106. package/dist/features/vite/vite.js +49 -9
  107. package/dist/hooks/use-page-destinations.js +10 -10
  108. package/dist/lib/api-client-server.d.ts +1 -1
  109. package/dist/lib/api-client.d.ts +2 -1
  110. package/dist/lib/draft-scope.d.ts +1 -0
  111. package/dist/lib/locale-path.d.ts +3 -11
  112. package/dist/lib/locale-path.js +3 -27
  113. package/dist/lib/queries.js +7 -1
  114. package/dist/lib/revisions.js +20 -0
  115. package/dist/lib/shortcuts.js +29 -0
  116. package/dist/lib/studio-definitions.js +160 -0
  117. package/dist/lib/studio-reads.d.ts +1 -0
  118. package/dist/lib/studio-reads.js +65 -21
  119. package/dist/lib/use-project-room.js +16 -10
  120. package/dist/lib/utils.js +1 -104
  121. package/dist/package.js +1 -1
  122. package/dist/studio.css +1 -1
  123. package/package.json +9 -4
  124. package/skills/camox/SKILL.md +4 -0
  125. package/skills/camox/references/artifacts.md +1 -1
  126. package/dist/features/studio/components/FaviconDialog.js +0 -318
  127. package/dist/features/studio/components/SocialProfilesDialog.js +0 -342
@@ -0,0 +1,61 @@
1
+ import { reads, useStudioCache } from "../../lib/studio-reads.js";
2
+ import { projectMutations } from "../../lib/queries.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { useMutation } from "@tanstack/react-query";
5
+ import { toast } from "@camox/ui/toaster";
6
+
7
+ //#region src/features/settings/useProjectMutation.ts
8
+ /**
9
+ * One of the project's mutations, as a Settings part saves with it: once it succeeds the studio
10
+ * reads the project afresh, then `onSuccess` runs and a toast says `success`; a failure toasts the
11
+ * API's message, or `failure` when it has none.
12
+ */
13
+ function useProjectMutation(project, mutation, t0) {
14
+ const $ = c(13);
15
+ const { success, failure, onSuccess } = t0;
16
+ const studioCache = useStudioCache();
17
+ let t1;
18
+ if ($[0] !== mutation) {
19
+ t1 = projectMutations[mutation]();
20
+ $[0] = mutation;
21
+ $[1] = t1;
22
+ } else t1 = $[1];
23
+ const options = t1;
24
+ let t2;
25
+ if ($[2] !== onSuccess || $[3] !== project || $[4] !== studioCache || $[5] !== success) {
26
+ t2 = async (_, variables) => {
27
+ await studioCache.invalidate(reads.project({ projectUuid: project.uuid }));
28
+ onSuccess?.(variables);
29
+ toast.success(typeof success === "string" ? success : success(variables));
30
+ };
31
+ $[2] = onSuccess;
32
+ $[3] = project;
33
+ $[4] = studioCache;
34
+ $[5] = success;
35
+ $[6] = t2;
36
+ } else t2 = $[6];
37
+ let t3;
38
+ if ($[7] !== failure) {
39
+ t3 = (error) => {
40
+ toast.error(error.message || failure);
41
+ };
42
+ $[7] = failure;
43
+ $[8] = t3;
44
+ } else t3 = $[8];
45
+ let t4;
46
+ if ($[9] !== options || $[10] !== t2 || $[11] !== t3) {
47
+ t4 = {
48
+ ...options,
49
+ onSuccess: t2,
50
+ onError: t3
51
+ };
52
+ $[9] = options;
53
+ $[10] = t2;
54
+ $[11] = t3;
55
+ $[12] = t4;
56
+ } else t4 = $[12];
57
+ return useMutation(t4);
58
+ }
59
+
60
+ //#endregion
61
+ export { useProjectMutation };
@@ -2,8 +2,8 @@ import { useProjectUuid } from "../../lib/auth.js";
2
2
  import { parseLocalePath } from "../../lib/locale-path.js";
3
3
  import { useViewLocale } from "../../lib/view-locale-context.js";
4
4
  import { useLocation, useNavigate } from "../navigation/navigation.js";
5
- import { useCamoxApp } from "../provider/components/CamoxAppContext.js";
6
5
  import { reads, useReadQueries, useReadQuery } from "../../lib/studio-reads.js";
6
+ import { useRoutableLayouts } from "../../lib/studio-definitions.js";
7
7
  import { FollowAgentContext } from "./followAgentContext.js";
8
8
  import { canvasPageId, getCanvasPages } from "../canvas/canvasPages.js";
9
9
  import { selectedCanvasPage } from "../canvas/canvasSelection.js";
@@ -102,7 +102,7 @@ function _temp(id) {
102
102
  /** Where the editor is, and the Studio content following locates the agent's touches with. */
103
103
  function useFollowWhere(runtimeBasePath) {
104
104
  const $ = c(35);
105
- const app = useCamoxApp();
105
+ const layouts = useRoutableLayouts();
106
106
  const projectUuid = useProjectUuid();
107
107
  const location = useLocation();
108
108
  const { locale, locales } = useViewLocale();
@@ -129,20 +129,20 @@ function useFollowWhere(runtimeBasePath) {
129
129
  const { data: pageList } = useReadQuery(t1, t3);
130
130
  const discoveredPaths = useDiscoveredPreviewPaths(runtimeBasePath);
131
131
  let t4;
132
- if ($[6] !== app || $[7] !== discoveredPaths || $[8] !== locale || $[9] !== pageList) {
133
- t4 = pageList ? getCanvasPages(pageList, app.getLayouts(), discoveredPaths, locale) : [];
134
- $[6] = app;
135
- $[7] = discoveredPaths;
132
+ if ($[6] !== discoveredPaths || $[7] !== layouts || $[8] !== locale || $[9] !== pageList) {
133
+ t4 = pageList ? getCanvasPages(pageList, layouts, discoveredPaths, locale) : [];
134
+ $[6] = discoveredPaths;
135
+ $[7] = layouts;
136
136
  $[8] = locale;
137
137
  $[9] = pageList;
138
138
  $[10] = t4;
139
139
  } else t4 = $[10];
140
140
  const canvasPages = t4;
141
141
  let t5;
142
- if ($[11] !== app || $[12] !== canvasPages || $[13] !== locales || $[14] !== location.pathname) {
143
- t5 = selectedCanvasPage(canvasPages, app.getLayouts(), location.pathname, locales);
144
- $[11] = app;
145
- $[12] = canvasPages;
142
+ if ($[11] !== canvasPages || $[12] !== layouts || $[13] !== locales || $[14] !== location.pathname) {
143
+ t5 = selectedCanvasPage(canvasPages, layouts, location.pathname, locales);
144
+ $[11] = canvasPages;
145
+ $[12] = layouts;
146
146
  $[13] = locales;
147
147
  $[14] = location.pathname;
148
148
  $[15] = t5;
@@ -99,10 +99,13 @@ function useDrafts() {
99
99
  * Picks what the studio is viewing, Live or a draft (#203). Live is read-only; the first edit
100
100
  * starts a draft. The localhost studio works only in the development draft, so it shows that
101
101
  * draft alone, with nothing to switch to (ADR 0006). The command palette offers the same actions,
102
- * and the picker hosts the draft's review and discard confirmation they open.
102
+ * and the picker hosts the draft's review and discard confirmation they open. A `disabled` picker
103
+ * still names what the studio is viewing.
103
104
  */
104
- function DraftPicker() {
105
- const $ = c(56);
105
+ function DraftPicker(t0) {
106
+ const $ = c(57);
107
+ const { disabled: t1 } = t0;
108
+ const disabled = t1 === void 0 ? false : t1;
106
109
  const { draftScope, draftId, developmentMode, projectId, list, current } = useDrafts();
107
110
  const navigate = useNavigate();
108
111
  const leaveDraft = useLeaveDraft();
@@ -110,43 +113,43 @@ function DraftPicker() {
110
113
  const discarding = useSelector(studioStore, _temp2);
111
114
  const [menuOpen, setMenuOpen] = React.useState(false);
112
115
  const [renaming, setRenaming] = React.useState(null);
113
- let t0;
114
- let t1;
116
+ let t2;
117
+ let t3;
115
118
  if ($[0] !== draftScope) {
116
- t0 = () => draftScope.subscribe(_temp3);
117
- t1 = [draftScope];
119
+ t2 = () => draftScope.subscribe(_temp3);
120
+ t3 = [draftScope];
118
121
  $[0] = draftScope;
119
- $[1] = t0;
120
- $[2] = t1;
122
+ $[1] = t2;
123
+ $[2] = t3;
121
124
  } else {
122
- t0 = $[1];
123
- t1 = $[2];
125
+ t2 = $[1];
126
+ t3 = $[2];
124
127
  }
125
- React.useEffect(t0, t1);
126
- let t2;
128
+ React.useEffect(t2, t3);
129
+ let t4;
127
130
  if ($[3] !== draftId) {
128
- t2 = [draftId];
131
+ t4 = [draftId];
129
132
  $[3] = draftId;
130
- $[4] = t2;
131
- } else t2 = $[4];
132
- React.useEffect(_temp5, t2);
133
+ $[4] = t4;
134
+ } else t4 = $[4];
135
+ React.useEffect(_temp5, t4);
133
136
  const drafts = list?.drafts;
134
- let t3;
137
+ let t5;
135
138
  if ($[5] !== drafts) {
136
- t3 = drafts ?? [];
139
+ t5 = drafts ?? [];
137
140
  $[5] = drafts;
138
- $[6] = t3;
139
- } else t3 = $[6];
140
- let t4;
141
- if ($[7] !== t3) {
142
- t4 = t3.filter(_temp6);
143
- $[7] = t3;
144
- $[8] = t4;
145
- } else t4 = $[8];
146
- const regular = t4;
147
- let t5;
141
+ $[6] = t5;
142
+ } else t5 = $[6];
143
+ let t6;
144
+ if ($[7] !== t5) {
145
+ t6 = t5.filter(_temp6);
146
+ $[7] = t5;
147
+ $[8] = t6;
148
+ } else t6 = $[8];
149
+ const regular = t6;
150
+ let t7;
148
151
  if ($[9] !== draftId || $[10] !== navigate) {
149
- t5 = (next) => {
152
+ t7 = (next) => {
150
153
  if (next === draftId) return;
151
154
  navigate({
152
155
  to: window.location.href,
@@ -155,14 +158,14 @@ function DraftPicker() {
155
158
  };
156
159
  $[9] = draftId;
157
160
  $[10] = navigate;
158
- $[11] = t5;
159
- } else t5 = $[11];
160
- const switchTo = t5;
161
- const t6 = !!projectId;
162
- let t7;
163
- if ($[12] !== developmentMode || $[13] !== draftId || $[14] !== regular || $[15] !== switchTo || $[16] !== t6) {
164
- t7 = {
165
- enabled: t6,
161
+ $[11] = t7;
162
+ } else t7 = $[11];
163
+ const switchTo = t7;
164
+ const t8 = !!projectId;
165
+ let t9;
166
+ if ($[12] !== developmentMode || $[13] !== draftId || $[14] !== regular || $[15] !== switchTo || $[16] !== t8) {
167
+ t9 = {
168
+ enabled: t8,
166
169
  draftId,
167
170
  developmentMode,
168
171
  regular,
@@ -172,78 +175,80 @@ function DraftPicker() {
172
175
  $[13] = draftId;
173
176
  $[14] = regular;
174
177
  $[15] = switchTo;
175
- $[16] = t6;
176
- $[17] = t7;
177
- } else t7 = $[17];
178
- useDraftsActions(t7);
178
+ $[16] = t8;
179
+ $[17] = t9;
180
+ } else t9 = $[17];
181
+ useDraftsActions(t9);
179
182
  if (developmentMode && !draftId) return null;
180
183
  if (draftId && !developmentMode && !current) return null;
181
- let t8;
184
+ let t10;
182
185
  if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
183
- t8 = /* @__PURE__ */ jsx(Button, {
186
+ t10 = /* @__PURE__ */ jsx(Button, {
184
187
  type: "button",
185
188
  variant: "ghost"
186
189
  });
187
- $[18] = t8;
188
- } else t8 = $[18];
189
- const t9 = draftId ? "bg-blue-500" : "bg-emerald-500";
190
- let t10;
191
- if ($[19] !== t9) {
192
- t10 = cn("size-2 shrink-0 rounded-full", t9);
193
- $[19] = t9;
194
- $[20] = t10;
195
- } else t10 = $[20];
196
- let t11;
197
- if ($[21] !== t10) {
198
- t11 = /* @__PURE__ */ jsx("span", {
190
+ $[18] = t10;
191
+ } else t10 = $[18];
192
+ const t11 = draftId ? "bg-blue-500" : "bg-emerald-500";
193
+ let t12;
194
+ if ($[19] !== t11) {
195
+ t12 = cn("size-2 shrink-0 rounded-full", t11);
196
+ $[19] = t11;
197
+ $[20] = t12;
198
+ } else t12 = $[20];
199
+ let t13;
200
+ if ($[21] !== t12) {
201
+ t13 = /* @__PURE__ */ jsx("span", {
199
202
  "aria-hidden": true,
200
- className: t10
203
+ className: t12
201
204
  });
202
- $[21] = t10;
203
- $[22] = t11;
204
- } else t11 = $[22];
205
- let t12;
205
+ $[21] = t12;
206
+ $[22] = t13;
207
+ } else t13 = $[22];
208
+ let t14;
206
209
  if ($[23] !== current || $[24] !== developmentMode || $[25] !== draftId) {
207
- t12 = !draftId ? "Live" : developmentMode ? "Development draft" : draftLabel(current);
210
+ t14 = !draftId ? "Live" : developmentMode ? "Development draft" : draftLabel(current);
208
211
  $[23] = current;
209
212
  $[24] = developmentMode;
210
213
  $[25] = draftId;
211
- $[26] = t12;
212
- } else t12 = $[26];
213
- let t13;
214
- if ($[27] !== t12) {
215
- t13 = /* @__PURE__ */ jsx("span", {
214
+ $[26] = t14;
215
+ } else t14 = $[26];
216
+ let t15;
217
+ if ($[27] !== t14) {
218
+ t15 = /* @__PURE__ */ jsx("span", {
216
219
  className: "max-w-48 truncate",
217
- children: t12
220
+ children: t14
218
221
  });
219
- $[27] = t12;
220
- $[28] = t13;
221
- } else t13 = $[28];
222
- let t14;
222
+ $[27] = t14;
223
+ $[28] = t15;
224
+ } else t15 = $[28];
225
+ let t16;
223
226
  if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
224
- t14 = /* @__PURE__ */ jsx(ChevronsUpDown, {
227
+ t16 = /* @__PURE__ */ jsx(ChevronsUpDown, {
225
228
  "aria-hidden": true,
226
229
  className: "size-4 opacity-50"
227
230
  });
228
- $[29] = t14;
229
- } else t14 = $[29];
230
- let t15;
231
- if ($[30] !== t11 || $[31] !== t13) {
232
- t15 = /* @__PURE__ */ jsxs(DropdownMenuTrigger, {
233
- render: t8,
231
+ $[29] = t16;
232
+ } else t16 = $[29];
233
+ let t17;
234
+ if ($[30] !== disabled || $[31] !== t13 || $[32] !== t15) {
235
+ t17 = /* @__PURE__ */ jsxs(DropdownMenuTrigger, {
236
+ disabled,
237
+ render: t10,
234
238
  children: [
235
- t11,
236
239
  t13,
237
- t14
240
+ t15,
241
+ t16
238
242
  ]
239
243
  });
240
- $[30] = t11;
244
+ $[30] = disabled;
241
245
  $[31] = t13;
242
246
  $[32] = t15;
243
- } else t15 = $[32];
244
- let t16;
245
- if ($[33] !== developmentMode || $[34] !== draftId || $[35] !== list || $[36] !== regular || $[37] !== switchTo) {
246
- t16 = /* @__PURE__ */ jsx(DropdownMenuContent, {
247
+ $[33] = t17;
248
+ } else t17 = $[33];
249
+ let t18;
250
+ if ($[34] !== developmentMode || $[35] !== draftId || $[36] !== list || $[37] !== regular || $[38] !== switchTo) {
251
+ t18 = /* @__PURE__ */ jsx(DropdownMenuContent, {
247
252
  className: "w-80",
248
253
  align: "start",
249
254
  children: developmentMode ? /* @__PURE__ */ jsx(DropdownMenuGroup, { children: /* @__PURE__ */ jsx(DropdownMenuLabel, {
@@ -278,41 +283,41 @@ function DraftPicker() {
278
283
  ] })
279
284
  })] })
280
285
  });
281
- $[33] = developmentMode;
282
- $[34] = draftId;
283
- $[35] = list;
284
- $[36] = regular;
285
- $[37] = switchTo;
286
- $[38] = t16;
287
- } else t16 = $[38];
288
- let t17;
289
- if ($[39] !== menuOpen || $[40] !== t15 || $[41] !== t16) {
290
- t17 = /* @__PURE__ */ jsxs(DropdownMenu, {
286
+ $[34] = developmentMode;
287
+ $[35] = draftId;
288
+ $[36] = list;
289
+ $[37] = regular;
290
+ $[38] = switchTo;
291
+ $[39] = t18;
292
+ } else t18 = $[39];
293
+ let t19;
294
+ if ($[40] !== menuOpen || $[41] !== t17 || $[42] !== t18) {
295
+ t19 = /* @__PURE__ */ jsxs(DropdownMenu, {
291
296
  open: menuOpen,
292
297
  onOpenChange: setMenuOpen,
293
- children: [t15, t16]
298
+ children: [t17, t18]
294
299
  });
295
- $[39] = menuOpen;
296
- $[40] = t15;
297
- $[41] = t16;
298
- $[42] = t17;
299
- } else t17 = $[42];
300
- let t18;
301
- if ($[43] !== projectId || $[44] !== renaming) {
302
- t18 = projectId && /* @__PURE__ */ jsx(RenameDraftDialog, {
300
+ $[40] = menuOpen;
301
+ $[41] = t17;
302
+ $[42] = t18;
303
+ $[43] = t19;
304
+ } else t19 = $[43];
305
+ let t20;
306
+ if ($[44] !== projectId || $[45] !== renaming) {
307
+ t20 = projectId && /* @__PURE__ */ jsx(RenameDraftDialog, {
303
308
  projectId,
304
309
  draft: renaming,
305
310
  onOpenChange: (open) => {
306
311
  if (!open) setRenaming(null);
307
312
  }
308
313
  });
309
- $[43] = projectId;
310
- $[44] = renaming;
311
- $[45] = t18;
312
- } else t18 = $[45];
313
- let t19;
314
- if ($[46] !== discarding || $[47] !== draftId || $[48] !== leaveDraft || $[49] !== projectId || $[50] !== review) {
315
- t19 = draftId && projectId && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ReviewDraftSheet, {
314
+ $[44] = projectId;
315
+ $[45] = renaming;
316
+ $[46] = t20;
317
+ } else t20 = $[46];
318
+ let t21;
319
+ if ($[47] !== discarding || $[48] !== draftId || $[49] !== leaveDraft || $[50] !== projectId || $[51] !== review) {
320
+ t21 = draftId && projectId && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ReviewDraftSheet, {
316
321
  projectId,
317
322
  draftId,
318
323
  open: review.open,
@@ -324,26 +329,26 @@ function DraftPicker() {
324
329
  onOpenChange: _temp8,
325
330
  onDiscarded: leaveDraft
326
331
  })] });
327
- $[46] = discarding;
328
- $[47] = draftId;
329
- $[48] = leaveDraft;
330
- $[49] = projectId;
331
- $[50] = review;
332
- $[51] = t19;
333
- } else t19 = $[51];
334
- let t20;
335
- if ($[52] !== t17 || $[53] !== t18 || $[54] !== t19) {
336
- t20 = /* @__PURE__ */ jsxs(Fragment, { children: [
337
- t17,
338
- t18,
339
- t19
332
+ $[47] = discarding;
333
+ $[48] = draftId;
334
+ $[49] = leaveDraft;
335
+ $[50] = projectId;
336
+ $[51] = review;
337
+ $[52] = t21;
338
+ } else t21 = $[52];
339
+ let t22;
340
+ if ($[53] !== t19 || $[54] !== t20 || $[55] !== t21) {
341
+ t22 = /* @__PURE__ */ jsxs(Fragment, { children: [
342
+ t19,
343
+ t20,
344
+ t21
340
345
  ] });
341
- $[52] = t17;
342
- $[53] = t18;
343
- $[54] = t19;
344
- $[55] = t20;
345
- } else t20 = $[55];
346
- return t20;
346
+ $[53] = t19;
347
+ $[54] = t20;
348
+ $[55] = t21;
349
+ $[56] = t22;
350
+ } else t22 = $[56];
351
+ return t22;
347
352
  }
348
353
  function _temp8(open_1) {
349
354
  if (!open_1) studioStore.send({ type: "closeDiscardDraftDialog" });