camox 0.14.2 → 0.16.0

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 (75) hide show
  1. package/dist/components/AuthGate.js +6 -0
  2. package/dist/core/components/AddBlockControlBar.js +30 -26
  3. package/dist/core/components/lexical/InlineContentEditable.js +19 -15
  4. package/dist/core/components/lexical/InlineLexicalEditor.js +62 -42
  5. package/dist/core/components/lexical/SelectionBroadcaster.js +25 -21
  6. package/dist/core/components/lexical/SidebarLexicalEditor.js +33 -21
  7. package/dist/core/createBlock.js +524 -488
  8. package/dist/core/createLayout.js +40 -28
  9. package/dist/core/hooks/useFieldSelection.js +12 -8
  10. package/dist/core/hooks/useIsEditable.js +6 -0
  11. package/dist/core/hooks/useOverlayMessage.js +19 -15
  12. package/dist/core/lib/contentType.d.ts +8 -8
  13. package/dist/core/lib/contentType.js +63 -0
  14. package/dist/features/content/CamoxContent.js +92 -88
  15. package/dist/features/content/components/AssetCard.js +46 -42
  16. package/dist/features/content/components/AssetCardSkeleton.js +8 -4
  17. package/dist/features/content/components/ContentSidebar.js +8 -4
  18. package/dist/features/content/components/UploadDropZone.js +31 -27
  19. package/dist/features/content/components/UploadProgressDrawer.js +98 -90
  20. package/dist/features/preview/CamoxPreview.js +162 -146
  21. package/dist/features/preview/components/AddBlockSheet.js +105 -101
  22. package/dist/features/preview/components/AgentChatSheet.js +74 -21
  23. package/dist/features/preview/components/AssetFieldEditor.js +98 -90
  24. package/dist/features/preview/components/AssetLightbox.js +21 -17
  25. package/dist/features/preview/components/AssetPickerGrid.js +84 -80
  26. package/dist/features/preview/components/BlockActionsPopover.js +35 -31
  27. package/dist/features/preview/components/BlockErrorBoundary.js +12 -8
  28. package/dist/features/preview/components/CreatePageModal.js +1 -1
  29. package/dist/features/preview/components/DebouncedFieldEditor.js +41 -37
  30. package/dist/features/preview/components/EditPageModal.js +114 -98
  31. package/dist/features/preview/components/FieldOverlayStyles.js +8 -4
  32. package/dist/features/preview/components/FieldToolbar.js +95 -54
  33. package/dist/features/preview/components/Frame.js +50 -46
  34. package/dist/features/preview/components/ItemFieldsEditor.js +81 -79
  35. package/dist/features/preview/components/LinkFieldEditor.js +138 -134
  36. package/dist/features/preview/components/MultipleAssetFieldEditor.js +105 -97
  37. package/dist/features/preview/components/OverlayTracker.js +19 -15
  38. package/dist/features/preview/components/Overlays.js +27 -23
  39. package/dist/features/preview/components/PageContentSheet.js +54 -4
  40. package/dist/features/preview/components/PageLocationFieldset.js +113 -109
  41. package/dist/features/preview/components/PagePicker.js +1 -1
  42. package/dist/features/preview/components/PageTree.js +443 -399
  43. package/dist/features/preview/components/PeekedBlock.js +69 -65
  44. package/dist/features/preview/components/PreviewPanel.js +64 -52
  45. package/dist/features/preview/components/PreviewSideSheet.js +25 -16
  46. package/dist/features/preview/components/PreviewToolbar.js +127 -123
  47. package/dist/features/preview/components/RepeatableItemsList.js +176 -171
  48. package/dist/features/preview/components/ShikiMarkdown.js +18 -14
  49. package/dist/features/preview/components/UnlinkAssetButton.js +74 -70
  50. package/dist/features/preview/components/useRepeatableItemActions.js +266 -0
  51. package/dist/features/preview/components/useUpdateBlockPosition.js +13 -9
  52. package/dist/features/provider/CamoxProvider.js +60 -52
  53. package/dist/features/provider/components/CamoxAppContext.js +10 -6
  54. package/dist/features/provider/components/CommandPalette.js +77 -69
  55. package/dist/features/provider/useAdminShortcuts.js +11 -7
  56. package/dist/features/routes/pageRoute.js +8 -4
  57. package/dist/features/studio/CamoxStudio.js +23 -19
  58. package/dist/features/studio/components/EnvironmentMenu.js +32 -28
  59. package/dist/features/studio/components/Navbar.js +62 -54
  60. package/dist/features/studio/components/ProjectMenu.js +131 -123
  61. package/dist/features/studio/components/UserButton.js +15 -11
  62. package/dist/features/studio/useTheme.js +82 -42
  63. package/dist/features/vite/definitionsSync.js +5 -5
  64. package/dist/features/vite/skillGeneration.js +43 -8
  65. package/dist/features/vite/vite.d.ts +1 -1
  66. package/dist/features/vite/vite.js +20 -2
  67. package/dist/hooks/use-marquee-selection.js +36 -32
  68. package/dist/lib/auth.js +49 -22
  69. package/dist/lib/normalized-data.js +55 -47
  70. package/dist/lib/use-project-room.js +22 -18
  71. package/dist/studio.css +1 -1
  72. package/package.json +10 -11
  73. package/skills/camox-block/SKILL.md +4 -0
  74. package/skills/camox-cli/SKILL.md +142 -0
  75. package/skills/camox-layout/SKILL.md +4 -0
@@ -19,69 +19,73 @@ function assetLabel(isImage, multiple) {
19
19
  return multiple ? "files" : "file";
20
20
  }
21
21
  const AssetActionButtons = (t0) => {
22
- const $ = c(26);
22
+ const $ = c(27);
23
+ if ($[0] !== "511bbc6572b1a9ed249b95be0b61223953390bf5d43cd01f6b380f115b1aadaa") {
24
+ for (let $i = 0; $i < 27; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
25
+ $[0] = "511bbc6572b1a9ed249b95be0b61223953390bf5d43cd01f6b380f115b1aadaa";
26
+ }
23
27
  const { isImage, multiple, fileInputRef, onPickerOpen, onFilesSelected, uploads } = t0;
24
28
  let t1;
25
- if ($[0] !== isImage || $[1] !== multiple) {
29
+ if ($[1] !== isImage || $[2] !== multiple) {
26
30
  t1 = assetLabel(isImage, multiple);
27
- $[0] = isImage;
28
- $[1] = multiple;
29
- $[2] = t1;
30
- } else t1 = $[2];
31
+ $[1] = isImage;
32
+ $[2] = multiple;
33
+ $[3] = t1;
34
+ } else t1 = $[3];
31
35
  let t2;
32
- if ($[3] !== onPickerOpen || $[4] !== t1) {
36
+ if ($[4] !== onPickerOpen || $[5] !== t1) {
33
37
  t2 = /* @__PURE__ */ jsxs(Button, {
34
38
  variant: "default",
35
39
  className: "mx-auto flex w-full",
36
40
  onClick: onPickerOpen,
37
41
  children: ["Select existing ", t1]
38
42
  });
39
- $[3] = onPickerOpen;
40
- $[4] = t1;
41
- $[5] = t2;
42
- } else t2 = $[5];
43
+ $[4] = onPickerOpen;
44
+ $[5] = t1;
45
+ $[6] = t2;
46
+ } else t2 = $[6];
43
47
  let t3;
44
- if ($[6] !== fileInputRef) {
48
+ if ($[7] !== fileInputRef) {
45
49
  t3 = () => fileInputRef.current?.click();
46
- $[6] = fileInputRef;
47
- $[7] = t3;
48
- } else t3 = $[7];
50
+ $[7] = fileInputRef;
51
+ $[8] = t3;
52
+ } else t3 = $[8];
49
53
  let t4;
50
- if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
54
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
51
55
  t4 = /* @__PURE__ */ jsx(Upload, { className: "h-4 w-4" });
52
- $[8] = t4;
53
- } else t4 = $[8];
56
+ $[9] = t4;
57
+ } else t4 = $[9];
54
58
  let t5;
55
- if ($[9] !== t3) {
59
+ if ($[10] !== t3) {
56
60
  t5 = /* @__PURE__ */ jsxs(Button, {
57
61
  variant: "secondary",
58
62
  className: "mx-auto flex w-full",
59
63
  onClick: t3,
60
64
  children: [t4, "Upload new"]
61
65
  });
62
- $[9] = t3;
63
- $[10] = t5;
64
- } else t5 = $[10];
66
+ $[10] = t3;
67
+ $[11] = t5;
68
+ } else t5 = $[11];
65
69
  let t6;
66
- if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
70
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
67
71
  t6 = /* @__PURE__ */ jsx("p", {
68
72
  className: "text-muted-foreground text-center text-xs",
69
73
  children: "Or drag anywhere to upload"
70
74
  });
71
- $[11] = t6;
72
- } else t6 = $[11];
75
+ $[12] = t6;
76
+ } else t6 = $[12];
73
77
  const t7 = isImage ? "image/*" : "*/*";
74
78
  let t8;
75
- if ($[12] !== onFilesSelected) {
79
+ if ($[13] !== onFilesSelected) {
76
80
  t8 = (e) => {
77
81
  if (e.target.files) onFilesSelected(e.target.files);
78
82
  e.target.value = "";
79
83
  };
80
- $[12] = onFilesSelected;
81
- $[13] = t8;
82
- } else t8 = $[13];
84
+ $[13] = onFilesSelected;
85
+ $[14] = t8;
86
+ } else t8 = $[14];
83
87
  let t9;
84
- if ($[14] !== fileInputRef || $[15] !== multiple || $[16] !== t7 || $[17] !== t8) {
88
+ if ($[15] !== fileInputRef || $[16] !== multiple || $[17] !== t7 || $[18] !== t8) {
85
89
  t9 = /* @__PURE__ */ jsx("input", {
86
90
  type: "file",
87
91
  ref: fileInputRef,
@@ -90,20 +94,20 @@ const AssetActionButtons = (t0) => {
90
94
  multiple,
91
95
  onChange: t8
92
96
  });
93
- $[14] = fileInputRef;
94
- $[15] = multiple;
95
- $[16] = t7;
96
- $[17] = t8;
97
- $[18] = t9;
98
- } else t9 = $[18];
97
+ $[15] = fileInputRef;
98
+ $[16] = multiple;
99
+ $[17] = t7;
100
+ $[18] = t8;
101
+ $[19] = t9;
102
+ } else t9 = $[19];
99
103
  let t10;
100
- if ($[19] !== uploads) {
104
+ if ($[20] !== uploads) {
101
105
  t10 = uploads.length > 0 && /* @__PURE__ */ jsx("div", { children: uploads.map(_temp) });
102
- $[19] = uploads;
103
- $[20] = t10;
104
- } else t10 = $[20];
106
+ $[20] = uploads;
107
+ $[21] = t10;
108
+ } else t10 = $[21];
105
109
  let t11;
106
- if ($[21] !== t10 || $[22] !== t2 || $[23] !== t5 || $[24] !== t9) {
110
+ if ($[22] !== t10 || $[23] !== t2 || $[24] !== t5 || $[25] !== t9) {
107
111
  t11 = /* @__PURE__ */ jsxs(Fragment, { children: [
108
112
  t2,
109
113
  t5,
@@ -111,16 +115,20 @@ const AssetActionButtons = (t0) => {
111
115
  t9,
112
116
  t10
113
117
  ] });
114
- $[21] = t10;
115
- $[22] = t2;
116
- $[23] = t5;
117
- $[24] = t9;
118
- $[25] = t11;
119
- } else t11 = $[25];
118
+ $[22] = t10;
119
+ $[23] = t2;
120
+ $[24] = t5;
121
+ $[25] = t9;
122
+ $[26] = t11;
123
+ } else t11 = $[26];
120
124
  return t11;
121
125
  };
122
126
  const SingleAssetFieldEditor = (t0) => {
123
- const $ = c(28);
127
+ const $ = c(29);
128
+ if ($[0] !== "511bbc6572b1a9ed249b95be0b61223953390bf5d43cd01f6b380f115b1aadaa") {
129
+ for (let $i = 0; $i < 29; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
130
+ $[0] = "511bbc6572b1a9ed249b95be0b61223953390bf5d43cd01f6b380f115b1aadaa";
131
+ }
124
132
  const { fieldName, assetType, currentData, onFieldChange } = t0;
125
133
  const asset = currentData[fieldName];
126
134
  const hasAsset = !!asset?.url;
@@ -130,57 +138,57 @@ const SingleAssetFieldEditor = (t0) => {
130
138
  const fileInputRef = React.useRef(null);
131
139
  const projectSlug = useProjectSlug();
132
140
  let t1;
133
- if ($[0] !== projectSlug) {
141
+ if ($[1] !== projectSlug) {
134
142
  t1 = projectQueries.getBySlug(projectSlug);
135
- $[0] = projectSlug;
136
- $[1] = t1;
137
- } else t1 = $[1];
143
+ $[1] = projectSlug;
144
+ $[2] = t1;
145
+ } else t1 = $[2];
138
146
  const { data: project } = useQuery(t1);
139
147
  const t2 = project?.id;
140
148
  let t3;
141
- if ($[2] !== fieldName || $[3] !== onFieldChange) {
149
+ if ($[3] !== fieldName || $[4] !== onFieldChange) {
142
150
  t3 = (result) => {
143
151
  onFieldChange(fieldName, { _fileId: Number(result.fileId) });
144
152
  };
145
- $[2] = fieldName;
146
- $[3] = onFieldChange;
147
- $[4] = t3;
148
- } else t3 = $[4];
153
+ $[3] = fieldName;
154
+ $[4] = onFieldChange;
155
+ $[5] = t3;
156
+ } else t3 = $[5];
149
157
  let t4;
150
- if ($[5] !== t2 || $[6] !== t3) {
158
+ if ($[6] !== t2 || $[7] !== t3) {
151
159
  t4 = {
152
160
  projectId: t2,
153
161
  onFileCommitted: t3
154
162
  };
155
- $[5] = t2;
156
- $[6] = t3;
157
- $[7] = t4;
158
- } else t4 = $[7];
163
+ $[6] = t2;
164
+ $[7] = t3;
165
+ $[8] = t4;
166
+ } else t4 = $[8];
159
167
  const { uploads, uploadFiles } = useFileUpload(t4);
160
168
  let t5;
161
- if ($[8] !== uploadFiles) {
169
+ if ($[9] !== uploadFiles) {
162
170
  t5 = (files) => {
163
171
  const dt = new DataTransfer();
164
172
  dt.items.add(files[0]);
165
173
  uploadFiles(dt.files);
166
174
  };
167
- $[8] = uploadFiles;
168
- $[9] = t5;
169
- } else t5 = $[9];
175
+ $[9] = uploadFiles;
176
+ $[10] = t5;
177
+ } else t5 = $[10];
170
178
  const handleDrop = t5;
171
179
  let t6;
172
- if ($[10] !== fieldName || $[11] !== onFieldChange) {
180
+ if ($[11] !== fieldName || $[12] !== onFieldChange) {
173
181
  t6 = (file) => {
174
182
  onFieldChange(fieldName, { _fileId: file.id });
175
183
  setPickerOpen(false);
176
184
  };
177
- $[10] = fieldName;
178
- $[11] = onFieldChange;
179
- $[12] = t6;
180
- } else t6 = $[12];
185
+ $[11] = fieldName;
186
+ $[12] = onFieldChange;
187
+ $[13] = t6;
188
+ } else t6 = $[13];
181
189
  const handleSelectExisting = t6;
182
190
  let t7;
183
- if ($[13] !== asset || $[14] !== assetType || $[15] !== fieldName || $[16] !== handleDrop || $[17] !== handleSelectExisting || $[18] !== hasAsset || $[19] !== isImage || $[20] !== lightboxOpen || $[21] !== onFieldChange || $[22] !== pickerOpen || $[23] !== uploads) {
191
+ if ($[14] !== asset || $[15] !== assetType || $[16] !== fieldName || $[17] !== handleDrop || $[18] !== handleSelectExisting || $[19] !== hasAsset || $[20] !== isImage || $[21] !== lightboxOpen || $[22] !== onFieldChange || $[23] !== pickerOpen || $[24] !== uploads) {
184
192
  t7 = pickerOpen ? /* @__PURE__ */ jsx(AssetPickerGrid, {
185
193
  assetType,
186
194
  mode: "single",
@@ -233,29 +241,29 @@ const SingleAssetFieldEditor = (t0) => {
233
241
  uploads
234
242
  })]
235
243
  });
236
- $[13] = asset;
237
- $[14] = assetType;
238
- $[15] = fieldName;
239
- $[16] = handleDrop;
240
- $[17] = handleSelectExisting;
241
- $[18] = hasAsset;
242
- $[19] = isImage;
243
- $[20] = lightboxOpen;
244
- $[21] = onFieldChange;
245
- $[22] = pickerOpen;
246
- $[23] = uploads;
247
- $[24] = t7;
248
- } else t7 = $[24];
244
+ $[14] = asset;
245
+ $[15] = assetType;
246
+ $[16] = fieldName;
247
+ $[17] = handleDrop;
248
+ $[18] = handleSelectExisting;
249
+ $[19] = hasAsset;
250
+ $[20] = isImage;
251
+ $[21] = lightboxOpen;
252
+ $[22] = onFieldChange;
253
+ $[23] = pickerOpen;
254
+ $[24] = uploads;
255
+ $[25] = t7;
256
+ } else t7 = $[25];
249
257
  let t8;
250
- if ($[25] !== handleDrop || $[26] !== t7) {
258
+ if ($[26] !== handleDrop || $[27] !== t7) {
251
259
  t8 = /* @__PURE__ */ jsx(UploadDropZone, {
252
260
  onDrop: handleDrop,
253
261
  children: t7
254
262
  });
255
- $[25] = handleDrop;
256
- $[26] = t7;
257
- $[27] = t8;
258
- } else t8 = $[27];
263
+ $[26] = handleDrop;
264
+ $[27] = t7;
265
+ $[28] = t8;
266
+ } else t8 = $[28];
259
267
  return t8;
260
268
  };
261
269
  function _temp(item) {
@@ -18,33 +18,37 @@ import { ButtonGroup } from "@camox/ui/button-group";
18
18
 
19
19
  //#region src/features/preview/components/AssetLightbox.tsx
20
20
  function MetadataRow(t0) {
21
- const $ = c(8);
21
+ const $ = c(9);
22
+ if ($[0] !== "05f9e0872c77757727f460fb2be404c5141b1efde25a7aff370b8c6c80f3014c") {
23
+ for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
24
+ $[0] = "05f9e0872c77757727f460fb2be404c5141b1efde25a7aff370b8c6c80f3014c";
25
+ }
22
26
  const { label, children } = t0;
23
27
  let t1;
24
- if ($[0] !== label) {
28
+ if ($[1] !== label) {
25
29
  t1 = /* @__PURE__ */ jsx("span", {
26
30
  className: "shrink-0",
27
31
  children: label
28
32
  });
29
- $[0] = label;
30
- $[1] = t1;
31
- } else t1 = $[1];
33
+ $[1] = label;
34
+ $[2] = t1;
35
+ } else t1 = $[2];
32
36
  let t2;
33
- if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
37
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
34
38
  t2 = /* @__PURE__ */ jsx("span", { className: "border-border min-w-0 flex-1 border-b" });
35
- $[2] = t2;
36
- } else t2 = $[2];
39
+ $[3] = t2;
40
+ } else t2 = $[3];
37
41
  let t3;
38
- if ($[3] !== children) {
42
+ if ($[4] !== children) {
39
43
  t3 = /* @__PURE__ */ jsx("span", {
40
44
  className: "text-foreground shrink-0",
41
45
  children
42
46
  });
43
- $[3] = children;
44
- $[4] = t3;
45
- } else t3 = $[4];
47
+ $[4] = children;
48
+ $[5] = t3;
49
+ } else t3 = $[5];
46
50
  let t4;
47
- if ($[5] !== t1 || $[6] !== t3) {
51
+ if ($[6] !== t1 || $[7] !== t3) {
48
52
  t4 = /* @__PURE__ */ jsxs("div", {
49
53
  className: "flex items-baseline gap-2",
50
54
  children: [
@@ -53,10 +57,10 @@ function MetadataRow(t0) {
53
57
  t3
54
58
  ]
55
59
  });
56
- $[5] = t1;
57
- $[6] = t3;
58
- $[7] = t4;
59
- } else t4 = $[7];
60
+ $[6] = t1;
61
+ $[7] = t3;
62
+ $[8] = t4;
63
+ } else t4 = $[8];
60
64
  return t4;
61
65
  }
62
66
  function formatRelativeTime(epochMs) {
@@ -12,39 +12,43 @@ import { Skeleton } from "@camox/ui/skeleton";
12
12
 
13
13
  //#region src/features/preview/components/AssetPickerGrid.tsx
14
14
  const AssetPickerGrid = (t0) => {
15
- const $ = c(45);
15
+ const $ = c(46);
16
+ if ($[0] !== "304cb8ddef70ef73677034ff5f21cf46713e477681a8d7ac41df1f9785316fcf") {
17
+ for (let $i = 0; $i < 46; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
18
+ $[0] = "304cb8ddef70ef73677034ff5f21cf46713e477681a8d7ac41df1f9785316fcf";
19
+ }
16
20
  const { assetType, mode, onSelectSingle, onSelectMultiple, onClose } = t0;
17
21
  const projectSlug = useProjectSlug();
18
22
  let t1;
19
- if ($[0] !== projectSlug) {
23
+ if ($[1] !== projectSlug) {
20
24
  t1 = projectQueries.getBySlug(projectSlug);
21
- $[0] = projectSlug;
22
- $[1] = t1;
23
- } else t1 = $[1];
25
+ $[1] = projectSlug;
26
+ $[2] = t1;
27
+ } else t1 = $[2];
24
28
  const { data: project } = useQuery(t1);
25
29
  let t2;
26
- if ($[2] !== project?.id) {
30
+ if ($[3] !== project?.id) {
27
31
  t2 = fileQueries.list(project?.id ?? 0);
28
- $[2] = project?.id;
29
- $[3] = t2;
30
- } else t2 = $[3];
32
+ $[3] = project?.id;
33
+ $[4] = t2;
34
+ } else t2 = $[4];
31
35
  const t3 = !!project;
32
36
  let t4;
33
- if ($[4] !== t2 || $[5] !== t3) {
37
+ if ($[5] !== t2 || $[6] !== t3) {
34
38
  t4 = {
35
39
  ...t2,
36
40
  enabled: t3
37
41
  };
38
- $[4] = t2;
39
- $[5] = t3;
40
- $[6] = t4;
41
- } else t4 = $[6];
42
+ $[5] = t2;
43
+ $[6] = t3;
44
+ $[7] = t4;
45
+ } else t4 = $[7];
42
46
  const { data: allFiles } = useQuery(t4);
43
47
  let t5;
44
- if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
48
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
45
49
  t5 = /* @__PURE__ */ new Set();
46
- $[7] = t5;
47
- } else t5 = $[7];
50
+ $[8] = t5;
51
+ } else t5 = $[8];
48
52
  const [selectedIds, setSelectedIds] = React.useState(t5);
49
53
  const [lightboxFile, setLightboxFile] = React.useState(null);
50
54
  const isImage = assetType === "Image";
@@ -59,16 +63,16 @@ const AssetPickerGrid = (t0) => {
59
63
  break bb0;
60
64
  }
61
65
  let t7;
62
- if ($[8] !== allFiles) {
66
+ if ($[9] !== allFiles) {
63
67
  t7 = allFiles.filter(_temp);
64
- $[8] = allFiles;
65
- $[9] = t7;
66
- } else t7 = $[9];
68
+ $[9] = allFiles;
69
+ $[10] = t7;
70
+ } else t7 = $[10];
67
71
  t6 = t7;
68
72
  }
69
73
  const files = t6;
70
74
  let t7;
71
- if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
75
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
72
76
  t7 = (fileId) => {
73
77
  setSelectedIds((prev) => {
74
78
  const next = new Set(prev);
@@ -77,41 +81,41 @@ const AssetPickerGrid = (t0) => {
77
81
  return next;
78
82
  });
79
83
  };
80
- $[10] = t7;
81
- } else t7 = $[10];
84
+ $[11] = t7;
85
+ } else t7 = $[11];
82
86
  const toggleSelection = t7;
83
87
  let t8;
84
- if ($[11] !== files || $[12] !== onSelectMultiple || $[13] !== selectedIds) {
88
+ if ($[12] !== files || $[13] !== onSelectMultiple || $[14] !== selectedIds) {
85
89
  t8 = () => {
86
90
  if (!files) return;
87
91
  onSelectMultiple(files.filter((f_0) => selectedIds.has(f_0.id)));
88
92
  };
89
- $[11] = files;
90
- $[12] = onSelectMultiple;
91
- $[13] = selectedIds;
92
- $[14] = t8;
93
- } else t8 = $[14];
93
+ $[12] = files;
94
+ $[13] = onSelectMultiple;
95
+ $[14] = selectedIds;
96
+ $[15] = t8;
97
+ } else t8 = $[15];
94
98
  const handleConfirmMultiple = t8;
95
99
  const title = mode === "multiple" ? `Select ${isImage ? "images" : "files"}` : `Select ${isImage ? "image" : "file"}`;
96
100
  let t9;
97
- if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
101
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
98
102
  t9 = /* @__PURE__ */ jsx(ArrowLeft, { className: "h-4 w-4" });
99
- $[15] = t9;
100
- } else t9 = $[15];
103
+ $[16] = t9;
104
+ } else t9 = $[16];
101
105
  let t10;
102
- if ($[16] !== onClose || $[17] !== title) {
106
+ if ($[17] !== onClose || $[18] !== title) {
103
107
  t10 = /* @__PURE__ */ jsxs(Button, {
104
108
  variant: "ghost",
105
109
  size: "sm",
106
110
  onClick: onClose,
107
111
  children: [t9, title]
108
112
  });
109
- $[16] = onClose;
110
- $[17] = title;
111
- $[18] = t10;
112
- } else t10 = $[18];
113
+ $[17] = onClose;
114
+ $[18] = title;
115
+ $[19] = t10;
116
+ } else t10 = $[19];
113
117
  let t11;
114
- if ($[19] !== handleConfirmMultiple || $[20] !== mode || $[21] !== selectedIds) {
118
+ if ($[20] !== handleConfirmMultiple || $[21] !== mode || $[22] !== selectedIds) {
115
119
  t11 = mode === "multiple" && /* @__PURE__ */ jsxs(Button, {
116
120
  variant: "default",
117
121
  size: "sm",
@@ -124,41 +128,41 @@ const AssetPickerGrid = (t0) => {
124
128
  ")"
125
129
  ]
126
130
  });
127
- $[19] = handleConfirmMultiple;
128
- $[20] = mode;
129
- $[21] = selectedIds;
130
- $[22] = t11;
131
- } else t11 = $[22];
131
+ $[20] = handleConfirmMultiple;
132
+ $[21] = mode;
133
+ $[22] = selectedIds;
134
+ $[23] = t11;
135
+ } else t11 = $[23];
132
136
  let t12;
133
- if ($[23] !== t10 || $[24] !== t11) {
137
+ if ($[24] !== t10 || $[25] !== t11) {
134
138
  t12 = /* @__PURE__ */ jsxs("div", {
135
139
  className: "sticky top-0 z-10 flex items-center gap-2 px-4 py-4",
136
140
  children: [t10, t11]
137
141
  });
138
- $[23] = t10;
139
- $[24] = t11;
140
- $[25] = t12;
141
- } else t12 = $[25];
142
+ $[24] = t10;
143
+ $[25] = t11;
144
+ $[26] = t12;
145
+ } else t12 = $[26];
142
146
  let t13;
143
- if ($[26] !== files) {
147
+ if ($[27] !== files) {
144
148
  t13 = files === void 0 && /* @__PURE__ */ jsx("div", {
145
149
  className: "grid grid-cols-[repeat(auto-fill,minmax(140px,1fr))] gap-3",
146
150
  children: Array.from({ length: 6 }).map(_temp2)
147
151
  });
148
- $[26] = files;
149
- $[27] = t13;
150
- } else t13 = $[27];
152
+ $[27] = files;
153
+ $[28] = t13;
154
+ } else t13 = $[28];
151
155
  let t14;
152
- if ($[28] !== files?.length) {
156
+ if ($[29] !== files?.length) {
153
157
  t14 = files?.length === 0 && /* @__PURE__ */ jsx("p", {
154
158
  className: "text-muted-foreground py-8 text-center text-sm",
155
159
  children: "No assets yet"
156
160
  });
157
- $[28] = files?.length;
158
- $[29] = t14;
159
- } else t14 = $[29];
161
+ $[29] = files?.length;
162
+ $[30] = t14;
163
+ } else t14 = $[30];
160
164
  let t15;
161
- if ($[30] !== files || $[31] !== mode || $[32] !== onSelectSingle || $[33] !== selectedIds) {
165
+ if ($[31] !== files || $[32] !== mode || $[33] !== onSelectSingle || $[34] !== selectedIds) {
162
166
  t15 = files && files.length > 0 && /* @__PURE__ */ jsx("div", {
163
167
  className: "grid grid-cols-[repeat(auto-fill,minmax(140px,1fr))] gap-3",
164
168
  children: files.map((file) => /* @__PURE__ */ jsx(AssetCard, {
@@ -171,14 +175,14 @@ const AssetPickerGrid = (t0) => {
171
175
  onOpen: () => setLightboxFile(file)
172
176
  }, file.id))
173
177
  });
174
- $[30] = files;
175
- $[31] = mode;
176
- $[32] = onSelectSingle;
177
- $[33] = selectedIds;
178
- $[34] = t15;
179
- } else t15 = $[34];
178
+ $[31] = files;
179
+ $[32] = mode;
180
+ $[33] = onSelectSingle;
181
+ $[34] = selectedIds;
182
+ $[35] = t15;
183
+ } else t15 = $[35];
180
184
  let t16;
181
- if ($[35] !== t13 || $[36] !== t14 || $[37] !== t15) {
185
+ if ($[36] !== t13 || $[37] !== t14 || $[38] !== t15) {
182
186
  t16 = /* @__PURE__ */ jsxs("div", {
183
187
  className: "px-4 pb-4",
184
188
  children: [
@@ -187,13 +191,13 @@ const AssetPickerGrid = (t0) => {
187
191
  t15
188
192
  ]
189
193
  });
190
- $[35] = t13;
191
- $[36] = t14;
192
- $[37] = t15;
193
- $[38] = t16;
194
- } else t16 = $[38];
194
+ $[36] = t13;
195
+ $[37] = t14;
196
+ $[38] = t15;
197
+ $[39] = t16;
198
+ } else t16 = $[39];
195
199
  let t17;
196
- if ($[39] !== lightboxFile) {
200
+ if ($[40] !== lightboxFile) {
197
201
  t17 = lightboxFile && /* @__PURE__ */ jsx(AssetLightbox, {
198
202
  open: !!lightboxFile,
199
203
  onOpenChange: (open) => {
@@ -201,21 +205,21 @@ const AssetPickerGrid = (t0) => {
201
205
  },
202
206
  fileId: lightboxFile.id
203
207
  });
204
- $[39] = lightboxFile;
205
- $[40] = t17;
206
- } else t17 = $[40];
208
+ $[40] = lightboxFile;
209
+ $[41] = t17;
210
+ } else t17 = $[41];
207
211
  let t18;
208
- if ($[41] !== t12 || $[42] !== t16 || $[43] !== t17) {
212
+ if ($[42] !== t12 || $[43] !== t16 || $[44] !== t17) {
209
213
  t18 = /* @__PURE__ */ jsxs("div", { children: [
210
214
  t12,
211
215
  t16,
212
216
  t17
213
217
  ] });
214
- $[41] = t12;
215
- $[42] = t16;
216
- $[43] = t17;
217
- $[44] = t18;
218
- } else t18 = $[44];
218
+ $[42] = t12;
219
+ $[43] = t16;
220
+ $[44] = t17;
221
+ $[45] = t18;
222
+ } else t18 = $[45];
219
223
  return t18;
220
224
  };
221
225
  function _temp(f) {