camox 0.9.1 → 0.10.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.
- package/dist/core/components/lexical/SidebarLexicalEditor.js +2 -1
- package/dist/core/createApp.d.ts +231 -209
- package/dist/core/createApp.js +17 -17
- package/dist/core/createBlock.d.ts +74 -72
- package/dist/core/createBlock.js +386 -363
- package/dist/core/createLayout.d.ts +100 -80
- package/dist/core/createLayout.js +93 -65
- package/dist/features/preview/CamoxPreview.js +76 -54
- package/dist/features/preview/components/AddBlockSheet.js +13 -13
- package/dist/features/preview/components/AssetFieldEditor.js +1 -1
- package/dist/features/preview/components/AssetLightbox.js +1 -1
- package/dist/features/preview/components/AssetPickerGrid.js +1 -1
- package/dist/features/preview/components/BlockActionsPopover.js +26 -26
- package/dist/features/preview/components/BlockErrorBoundary.js +59 -0
- package/dist/features/preview/components/{CreatePageSheet.js → CreatePageModal.js} +17 -19
- package/dist/features/preview/components/{EditPageSheet.js → EditPageModal.js} +27 -24
- package/dist/features/preview/components/Frame.js +1 -1
- package/dist/features/preview/components/ItemFieldsEditor.js +134 -98
- package/dist/features/preview/components/LinkFieldEditor.js +166 -146
- package/dist/features/preview/components/PageContentSheet.js +42 -37
- package/dist/features/preview/components/PageLocationFieldset.js +28 -26
- package/dist/features/preview/components/PagePicker.js +4 -4
- package/dist/features/preview/components/PageTree.js +337 -351
- package/dist/features/preview/components/PeekedBlock.js +38 -26
- package/dist/features/preview/components/PreviewPanel.js +16 -2
- package/dist/features/preview/components/PreviewSideSheet.js +26 -42
- package/dist/features/preview/components/RepeatableItemsList.js +7 -7
- package/dist/features/preview/components/useUpdateBlockPosition.js +1 -1
- package/dist/features/preview/previewStore.js +7 -7
- package/dist/features/provider/CamoxProvider.js +1 -1
- package/dist/features/routes/ogRoute.js +2 -2
- package/dist/features/routes/pageRoute.js +5 -4
- package/dist/features/studio/CamoxStudio.js +1 -1
- package/dist/features/studio/components/Navbar.js +1 -1
- package/dist/features/studio/components/ProjectMenu.js +1 -1
- package/dist/features/studio/components/UserButton.js +46 -30
- package/dist/features/vite/definitionsSync.js +20 -20
- package/dist/features/vite/routeGeneration.js +1 -0
- package/dist/features/vite/vite.js +51 -7
- package/dist/studio-overlays.css +34 -0
- package/dist/studio.css +1 -1
- package/package.json +4 -4
- package/skills/camox-layout/SKILL.md +34 -30
|
@@ -7,21 +7,21 @@ import { PageLocationFieldset } from "./PageLocationFieldset.js";
|
|
|
7
7
|
import { Label } from "@camox/ui/label";
|
|
8
8
|
import { toast } from "@camox/ui/toaster";
|
|
9
9
|
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
10
|
+
import { useNavigate } from "@tanstack/react-router";
|
|
10
11
|
import { useSelector } from "@xstate/store/react";
|
|
11
12
|
import { useEffect } from "react";
|
|
12
|
-
import * as Sheet from "@camox/ui/sheet";
|
|
13
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
14
|
import { Button } from "@camox/ui/button";
|
|
15
|
-
import {
|
|
15
|
+
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@camox/ui/dialog";
|
|
16
16
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@camox/ui/select";
|
|
17
17
|
import { Spinner } from "@camox/ui/spinner";
|
|
18
18
|
import { Textarea } from "@camox/ui/textarea";
|
|
19
19
|
import { useForm } from "@tanstack/react-form";
|
|
20
20
|
|
|
21
|
-
//#region src/features/preview/components/
|
|
22
|
-
const
|
|
21
|
+
//#region src/features/preview/components/CreatePageModal.tsx
|
|
22
|
+
const CreatePageModal = () => {
|
|
23
23
|
const projectSlug = useProjectSlug();
|
|
24
|
-
const open = useSelector(previewStore, (state) => state.context.
|
|
24
|
+
const open = useSelector(previewStore, (state) => state.context.isCreatePageModalOpen);
|
|
25
25
|
const createPage = useMutation(pageMutations.create());
|
|
26
26
|
const { data: project } = useQuery(projectQueries.getBySlug(projectSlug));
|
|
27
27
|
const { data: pages } = useQuery({
|
|
@@ -66,7 +66,7 @@ const CreatePageSheet = () => {
|
|
|
66
66
|
layoutId: values.value.layoutId,
|
|
67
67
|
hasContentDescription: !!values.value.contentDescription
|
|
68
68
|
});
|
|
69
|
-
previewStore.send({ type: "
|
|
69
|
+
previewStore.send({ type: "closeCreatePageModal" });
|
|
70
70
|
form.reset();
|
|
71
71
|
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
72
72
|
navigate({ to: fullPath });
|
|
@@ -79,23 +79,20 @@ const CreatePageSheet = () => {
|
|
|
79
79
|
useEffect(() => {
|
|
80
80
|
if (layouts && layouts.length > 0 && !form.getFieldValue("layoutId")) form.setFieldValue("layoutId", String(layouts[0].id));
|
|
81
81
|
}, [layouts, form]);
|
|
82
|
-
return /* @__PURE__ */ jsx(
|
|
82
|
+
return /* @__PURE__ */ jsx(Dialog, {
|
|
83
83
|
open,
|
|
84
84
|
onOpenChange: (value) => {
|
|
85
|
-
if (!value) previewStore.send({ type: "
|
|
85
|
+
if (!value) previewStore.send({ type: "closeCreatePageModal" });
|
|
86
86
|
},
|
|
87
|
-
children: /* @__PURE__ */ jsxs(
|
|
88
|
-
className: "flex max-h-
|
|
89
|
-
children: [/* @__PURE__ */ jsxs(
|
|
90
|
-
className: "border-border border-b",
|
|
91
|
-
children: [/* @__PURE__ */ jsx(Sheet.SheetTitle, { children: "Create page" }), /* @__PURE__ */ jsx(Sheet.SheetDescription, { children: "Fill in the details to create a new page. It will be created as a draft." })]
|
|
92
|
-
}), /* @__PURE__ */ jsxs("form", {
|
|
87
|
+
children: /* @__PURE__ */ jsxs(DialogContent, {
|
|
88
|
+
className: "flex max-h-[90vh] flex-col sm:max-w-lg",
|
|
89
|
+
children: [/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Create page" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Fill in the details to create a new page. It will be created as a draft." })] }), /* @__PURE__ */ jsxs("form", {
|
|
93
90
|
onSubmit: (e) => {
|
|
94
91
|
e.preventDefault();
|
|
95
92
|
e.stopPropagation();
|
|
96
93
|
form.handleSubmit();
|
|
97
94
|
},
|
|
98
|
-
className: "space-y-4 overflow-y-auto px-
|
|
95
|
+
className: "-mx-1 space-y-4 overflow-y-auto px-1 py-2",
|
|
99
96
|
children: [
|
|
100
97
|
/* @__PURE__ */ jsx(form.Field, {
|
|
101
98
|
name: "parentPageId",
|
|
@@ -106,7 +103,8 @@ const CreatePageSheet = () => {
|
|
|
106
103
|
onParentPageIdChange: parentField.handleChange,
|
|
107
104
|
pathSegment: pathField.state.value,
|
|
108
105
|
onPathSegmentChange: pathField.handleChange,
|
|
109
|
-
pages
|
|
106
|
+
pages,
|
|
107
|
+
autoFocusPathSegment: true
|
|
110
108
|
})
|
|
111
109
|
})
|
|
112
110
|
}),
|
|
@@ -125,11 +123,11 @@ const CreatePageSheet = () => {
|
|
|
125
123
|
disabled: layouts != null && layouts.length <= 1,
|
|
126
124
|
items: layouts?.map((t) => ({
|
|
127
125
|
value: String(t.id),
|
|
128
|
-
label: camoxApp.getLayoutById(t.layoutId)?.title ?? t.layoutId
|
|
126
|
+
label: camoxApp.getLayoutById(t.layoutId)?._internal.title ?? t.layoutId
|
|
129
127
|
})),
|
|
130
128
|
children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a layout" }) }), /* @__PURE__ */ jsx(SelectContent, { children: layouts?.map((t_0) => /* @__PURE__ */ jsx(SelectItem, {
|
|
131
129
|
value: String(t_0.id),
|
|
132
|
-
children: camoxApp.getLayoutById(t_0.layoutId)?.title ?? t_0.layoutId
|
|
130
|
+
children: camoxApp.getLayoutById(t_0.layoutId)?._internal.title ?? t_0.layoutId
|
|
133
131
|
}, t_0.id)) })]
|
|
134
132
|
})]
|
|
135
133
|
})
|
|
@@ -172,4 +170,4 @@ const CreatePageSheet = () => {
|
|
|
172
170
|
};
|
|
173
171
|
|
|
174
172
|
//#endregion
|
|
175
|
-
export {
|
|
173
|
+
export { CreatePageModal };
|
|
@@ -11,33 +11,33 @@ import { c } from "react/compiler-runtime";
|
|
|
11
11
|
import { Label } from "@camox/ui/label";
|
|
12
12
|
import { toast } from "@camox/ui/toaster";
|
|
13
13
|
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
14
|
+
import { useNavigate } from "@tanstack/react-router";
|
|
14
15
|
import { useSelector } from "@xstate/store/react";
|
|
15
16
|
import * as React from "react";
|
|
16
|
-
import * as Sheet from "@camox/ui/sheet";
|
|
17
17
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
18
|
import { Button } from "@camox/ui/button";
|
|
19
19
|
import { Tooltip, TooltipContent, TooltipTrigger } from "@camox/ui/tooltip";
|
|
20
|
-
import { useNavigate } from "@tanstack/react-router";
|
|
21
20
|
import { Globe, Info } from "lucide-react";
|
|
21
|
+
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@camox/ui/dialog";
|
|
22
22
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@camox/ui/select";
|
|
23
23
|
import { Spinner } from "@camox/ui/spinner";
|
|
24
24
|
import { useForm } from "@tanstack/react-form";
|
|
25
25
|
import { Alert, AlertDescription, AlertTitle } from "@camox/ui/alert";
|
|
26
26
|
import { Switch } from "@camox/ui/switch";
|
|
27
27
|
|
|
28
|
-
//#region src/features/preview/components/
|
|
29
|
-
const
|
|
28
|
+
//#region src/features/preview/components/EditPageModal.tsx
|
|
29
|
+
const EditPageModal = () => {
|
|
30
30
|
const $ = c(2);
|
|
31
31
|
const editingPageId = useSelector(previewStore, _temp);
|
|
32
32
|
let t0;
|
|
33
33
|
if ($[0] !== editingPageId) {
|
|
34
|
-
t0 = /* @__PURE__ */ jsx(
|
|
34
|
+
t0 = /* @__PURE__ */ jsx(EditPageModalContent, { pageId: editingPageId });
|
|
35
35
|
$[0] = editingPageId;
|
|
36
36
|
$[1] = t0;
|
|
37
37
|
} else t0 = $[1];
|
|
38
38
|
return t0;
|
|
39
39
|
};
|
|
40
|
-
const
|
|
40
|
+
const EditPageModalContent = ({ pageId }) => {
|
|
41
41
|
const projectSlug = useProjectSlug();
|
|
42
42
|
const updatePage = useMutation(pageMutations.update());
|
|
43
43
|
const setLayout = useMutation(pageMutations.setLayout());
|
|
@@ -87,7 +87,7 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
87
87
|
});
|
|
88
88
|
const displayName = page.metaTitle ?? formatPathSegment(values.value.pathSegment);
|
|
89
89
|
toast.success(`Updated ${displayName} page`);
|
|
90
|
-
previewStore.send({ type: "
|
|
90
|
+
previewStore.send({ type: "closeEditPageModal" });
|
|
91
91
|
form.reset();
|
|
92
92
|
navigate({ to: fullPath });
|
|
93
93
|
} catch (error) {
|
|
@@ -114,26 +114,26 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
114
114
|
const isRootPage = page?.fullPath === "/";
|
|
115
115
|
const pageLayoutRecord = layouts?.find((l) => l.id === page?.layoutId);
|
|
116
116
|
const layoutDef = pageLayoutRecord ? camoxApp.getLayoutById(pageLayoutRecord.layoutId) : void 0;
|
|
117
|
-
const metaTitle = layoutDef && page ? layoutDef.buildMetaTitle({
|
|
117
|
+
const metaTitle = layoutDef && page ? layoutDef._internal.buildMetaTitle({
|
|
118
118
|
pageMetaTitle: page.metaTitle ?? "",
|
|
119
119
|
projectName: project?.name ?? "",
|
|
120
120
|
pageFullPath: page.fullPath
|
|
121
121
|
}) : page?.metaTitle ?? "";
|
|
122
|
-
return /* @__PURE__ */ jsx(
|
|
122
|
+
return /* @__PURE__ */ jsx(Dialog, {
|
|
123
123
|
open: isOpen,
|
|
124
124
|
onOpenChange: (value) => {
|
|
125
|
-
if (!value) previewStore.send({ type: "
|
|
125
|
+
if (!value) previewStore.send({ type: "closeEditPageModal" });
|
|
126
126
|
},
|
|
127
|
-
children: /* @__PURE__ */ jsxs(
|
|
128
|
-
className: "
|
|
129
|
-
children: [/* @__PURE__ */ jsxs(
|
|
130
|
-
className: "border-border border-b",
|
|
131
|
-
children: [/* @__PURE__ */ jsx(
|
|
127
|
+
children: /* @__PURE__ */ jsxs(DialogContent, {
|
|
128
|
+
className: "flex max-h-[90vh] flex-col gap-0 overflow-hidden p-0 sm:max-w-5xl",
|
|
129
|
+
children: [/* @__PURE__ */ jsxs(DialogHeader, {
|
|
130
|
+
className: "border-border border-b p-4",
|
|
131
|
+
children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Edit page" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Update the page details." })]
|
|
132
132
|
}), page && /* @__PURE__ */ jsxs("div", {
|
|
133
133
|
className: "flex-1 overflow-y-auto",
|
|
134
134
|
children: [
|
|
135
135
|
/* @__PURE__ */ jsxs("div", {
|
|
136
|
-
className: "border-border grid grid-cols-[200px_1fr] gap-x-
|
|
136
|
+
className: "border-border grid grid-cols-[200px_1fr] gap-x-16 border-b px-4 py-4",
|
|
137
137
|
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
138
138
|
className: "text-sm font-medium",
|
|
139
139
|
children: "Page structure"
|
|
@@ -148,7 +148,7 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
148
148
|
e.stopPropagation();
|
|
149
149
|
form.handleSubmit();
|
|
150
150
|
},
|
|
151
|
-
className: "space-y-4",
|
|
151
|
+
className: "-mx-1 space-y-4 px-1",
|
|
152
152
|
children: [
|
|
153
153
|
isRootPage ? /* @__PURE__ */ jsxs(Alert, { children: [
|
|
154
154
|
/* @__PURE__ */ jsx(Info, { className: "size-4" }),
|
|
@@ -177,11 +177,11 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
177
177
|
onValueChange: (value_0) => field.handleChange(Number(value_0)),
|
|
178
178
|
items: layouts.map((t) => ({
|
|
179
179
|
value: String(t.id),
|
|
180
|
-
label: camoxApp.getLayoutById(t.layoutId)?.title ?? t.layoutId
|
|
180
|
+
label: camoxApp.getLayoutById(t.layoutId)?._internal.title ?? t.layoutId
|
|
181
181
|
})),
|
|
182
182
|
children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a layout" }) }), /* @__PURE__ */ jsx(SelectContent, { children: layouts.map((t_0) => /* @__PURE__ */ jsx(SelectItem, {
|
|
183
183
|
value: String(t_0.id),
|
|
184
|
-
children: camoxApp.getLayoutById(t_0.layoutId)?.title ?? t_0.layoutId
|
|
184
|
+
children: camoxApp.getLayoutById(t_0.layoutId)?._internal.title ?? t_0.layoutId
|
|
185
185
|
}, t_0.id)) })]
|
|
186
186
|
})]
|
|
187
187
|
})
|
|
@@ -206,7 +206,7 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
206
206
|
})]
|
|
207
207
|
}),
|
|
208
208
|
/* @__PURE__ */ jsxs("div", {
|
|
209
|
-
className: "grid grid-cols-[200px_1fr] gap-x-
|
|
209
|
+
className: "grid grid-cols-[200px_1fr] gap-x-16 px-4 py-4",
|
|
210
210
|
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
211
211
|
className: "text-sm font-medium",
|
|
212
212
|
children: "SEO data"
|
|
@@ -267,7 +267,7 @@ const EditPageSheetContent = ({ pageId }) => {
|
|
|
267
267
|
})]
|
|
268
268
|
}),
|
|
269
269
|
/* @__PURE__ */ jsxs("div", {
|
|
270
|
-
className: "border-border grid grid-cols-[200px_1fr] gap-x-
|
|
270
|
+
className: "border-border grid grid-cols-[200px_1fr] gap-x-16 border-t px-4 py-4",
|
|
271
271
|
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
272
272
|
className: "text-sm font-medium",
|
|
273
273
|
children: "Markdown content"
|
|
@@ -302,7 +302,10 @@ const SearchEnginePreview = (t0) => {
|
|
|
302
302
|
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
303
303
|
t2 = /* @__PURE__ */ jsxs("div", {
|
|
304
304
|
className: "flex items-center gap-1.5",
|
|
305
|
-
children: [t1, /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
305
|
+
children: [t1, /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
306
|
+
delay: 50,
|
|
307
|
+
render: /* @__PURE__ */ jsx(Info, { className: "text-muted-foreground size-3.5" })
|
|
308
|
+
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Titles are cropped after 60 characters and descriptions after 155, like Google typically does." })] })]
|
|
306
309
|
});
|
|
307
310
|
$[1] = t2;
|
|
308
311
|
} else t2 = $[1];
|
|
@@ -466,7 +469,7 @@ const SocialPreviewSection = (t0) => {
|
|
|
466
469
|
t11 = /* @__PURE__ */ jsxs("div", {
|
|
467
470
|
className: "space-y-2 pt-2",
|
|
468
471
|
children: [t2, /* @__PURE__ */ jsxs("div", {
|
|
469
|
-
className: "border-border overflow-hidden rounded-lg border",
|
|
472
|
+
className: "border-border max-w-xl overflow-hidden rounded-lg border",
|
|
470
473
|
children: [t3, t10]
|
|
471
474
|
})]
|
|
472
475
|
});
|
|
@@ -525,4 +528,4 @@ function _temp(state) {
|
|
|
525
528
|
}
|
|
526
529
|
|
|
527
530
|
//#endregion
|
|
528
|
-
export {
|
|
531
|
+
export { EditPageModal };
|
|
@@ -67,7 +67,7 @@ const Frame = (t0) => {
|
|
|
67
67
|
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
68
68
|
t4 = () => {
|
|
69
69
|
const checkForOpenPopup = () => {
|
|
70
|
-
setHasOpenPopup(document.body.querySelector("
|
|
70
|
+
setHasOpenPopup(document.body.querySelector("[data-base-ui-portal] [data-open]") !== null);
|
|
71
71
|
};
|
|
72
72
|
checkForOpenPopup();
|
|
73
73
|
const observer = new MutationObserver(checkForOpenPopup);
|
|
@@ -30,8 +30,8 @@ const getSchemaFieldsInOrder = (schema) => {
|
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
32
|
const ItemFieldsEditor = (t0) => {
|
|
33
|
-
const $ = c(
|
|
34
|
-
const { schema, data, blockId, itemId, onFieldChange, postToIframe, filesMap, itemsMap } = t0;
|
|
33
|
+
const $ = c(46);
|
|
34
|
+
const { schema, data, blockId, itemId, onFieldChange, postToIframe, filesMap, itemsMap, fieldIdPrefix, autoFocusFieldName } = t0;
|
|
35
35
|
let t1;
|
|
36
36
|
if ($[0] !== schema) {
|
|
37
37
|
t1 = getSchemaFieldsInOrder(schema);
|
|
@@ -44,7 +44,7 @@ const ItemFieldsEditor = (t0) => {
|
|
|
44
44
|
let t2;
|
|
45
45
|
if ($[2] !== blockId || $[3] !== itemId) {
|
|
46
46
|
t2 = (fieldName) => {
|
|
47
|
-
if (itemId) return `${blockId}__${itemId}__${fieldName}`;
|
|
47
|
+
if (itemId != null) return `${blockId}__${itemId}__${fieldName}`;
|
|
48
48
|
return `${blockId}__${fieldName}`;
|
|
49
49
|
};
|
|
50
50
|
$[2] = blockId;
|
|
@@ -53,96 +53,130 @@ const ItemFieldsEditor = (t0) => {
|
|
|
53
53
|
} else t2 = $[4];
|
|
54
54
|
const getFieldId = t2;
|
|
55
55
|
let t3;
|
|
56
|
-
if ($[5] !==
|
|
57
|
-
t3 =
|
|
58
|
-
$[5] =
|
|
56
|
+
if ($[5] !== fieldIdPrefix) {
|
|
57
|
+
t3 = (fieldName_0) => `${fieldIdPrefix}-${fieldName_0}`;
|
|
58
|
+
$[5] = fieldIdPrefix;
|
|
59
59
|
$[6] = t3;
|
|
60
60
|
} else t3 = $[6];
|
|
61
|
-
const
|
|
62
|
-
let values;
|
|
63
|
-
if ($[7] !== data || $[8] !== scalarFields) {
|
|
64
|
-
values = {};
|
|
65
|
-
for (const fieldName_0 of scalarFields) values[fieldName_0] = data[fieldName_0] ?? "";
|
|
66
|
-
$[7] = data;
|
|
67
|
-
$[8] = scalarFields;
|
|
68
|
-
$[9] = values;
|
|
69
|
-
} else values = $[9];
|
|
70
|
-
const defaultValues = values;
|
|
61
|
+
const getFieldElementId = t3;
|
|
71
62
|
let t4;
|
|
72
|
-
if ($[
|
|
73
|
-
t4 = {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
if ($[7] !== autoFocusFieldName || $[8] !== fieldIdPrefix) {
|
|
64
|
+
t4 = {
|
|
65
|
+
fieldName: autoFocusFieldName,
|
|
66
|
+
prefix: fieldIdPrefix
|
|
67
|
+
};
|
|
68
|
+
$[7] = autoFocusFieldName;
|
|
69
|
+
$[8] = fieldIdPrefix;
|
|
70
|
+
$[9] = t4;
|
|
71
|
+
} else t4 = $[9];
|
|
72
|
+
const initialAutoFocusRef = React.useRef(t4);
|
|
78
73
|
let t5;
|
|
79
74
|
let t6;
|
|
80
|
-
if ($[
|
|
75
|
+
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
81
76
|
t5 = () => {
|
|
82
|
-
|
|
77
|
+
const { fieldName: fieldName_1, prefix } = initialAutoFocusRef.current;
|
|
78
|
+
if (!fieldName_1) return;
|
|
79
|
+
document.getElementById(`${prefix}-${fieldName_1}`)?.focus();
|
|
83
80
|
};
|
|
84
|
-
t6 = [
|
|
85
|
-
$[
|
|
86
|
-
$[
|
|
87
|
-
$[14] = t5;
|
|
88
|
-
$[15] = t6;
|
|
81
|
+
t6 = [];
|
|
82
|
+
$[10] = t5;
|
|
83
|
+
$[11] = t6;
|
|
89
84
|
} else {
|
|
90
|
-
t5 = $[
|
|
91
|
-
t6 = $[
|
|
85
|
+
t5 = $[10];
|
|
86
|
+
t6 = $[11];
|
|
92
87
|
}
|
|
93
|
-
React.
|
|
88
|
+
React.useLayoutEffect(t5, t6);
|
|
94
89
|
let t7;
|
|
90
|
+
if ($[12] !== fields) {
|
|
91
|
+
t7 = fields.filter(_temp).map(_temp2);
|
|
92
|
+
$[12] = fields;
|
|
93
|
+
$[13] = t7;
|
|
94
|
+
} else t7 = $[13];
|
|
95
|
+
const scalarFields = t7;
|
|
96
|
+
let values;
|
|
97
|
+
if ($[14] !== data || $[15] !== scalarFields) {
|
|
98
|
+
values = {};
|
|
99
|
+
for (const fieldName_2 of scalarFields) values[fieldName_2] = data[fieldName_2] ?? "";
|
|
100
|
+
$[14] = data;
|
|
101
|
+
$[15] = scalarFields;
|
|
102
|
+
$[16] = values;
|
|
103
|
+
} else values = $[16];
|
|
104
|
+
const defaultValues = values;
|
|
95
105
|
let t8;
|
|
96
|
-
if ($[
|
|
97
|
-
|
|
106
|
+
if ($[17] !== defaultValues) {
|
|
107
|
+
t8 = { defaultValues };
|
|
108
|
+
$[17] = defaultValues;
|
|
109
|
+
$[18] = t8;
|
|
110
|
+
} else t8 = $[18];
|
|
111
|
+
const form = useForm(t8);
|
|
112
|
+
let t10;
|
|
113
|
+
let t9;
|
|
114
|
+
if ($[19] !== defaultValues || $[20] !== form) {
|
|
115
|
+
t9 = () => {
|
|
116
|
+
form.update({ defaultValues });
|
|
117
|
+
};
|
|
118
|
+
t10 = [defaultValues, form];
|
|
119
|
+
$[19] = defaultValues;
|
|
120
|
+
$[20] = form;
|
|
121
|
+
$[21] = t10;
|
|
122
|
+
$[22] = t9;
|
|
123
|
+
} else {
|
|
124
|
+
t10 = $[21];
|
|
125
|
+
t9 = $[22];
|
|
126
|
+
}
|
|
127
|
+
React.useEffect(t9, t10);
|
|
128
|
+
let t11;
|
|
129
|
+
let t12;
|
|
130
|
+
if ($[23] !== postToIframe) {
|
|
131
|
+
t11 = () => () => {
|
|
98
132
|
if (timerRef.current) clearTimeout(timerRef.current);
|
|
99
133
|
if (focusedFieldIdRef.current) postToIframe({
|
|
100
134
|
type: "CAMOX_FOCUS_FIELD_END",
|
|
101
135
|
fieldId: focusedFieldIdRef.current
|
|
102
136
|
});
|
|
103
137
|
};
|
|
104
|
-
|
|
105
|
-
$[
|
|
106
|
-
$[
|
|
107
|
-
$[
|
|
138
|
+
t12 = [postToIframe];
|
|
139
|
+
$[23] = postToIframe;
|
|
140
|
+
$[24] = t11;
|
|
141
|
+
$[25] = t12;
|
|
108
142
|
} else {
|
|
109
|
-
|
|
110
|
-
|
|
143
|
+
t11 = $[24];
|
|
144
|
+
t12 = $[25];
|
|
111
145
|
}
|
|
112
|
-
React.useEffect(
|
|
113
|
-
let
|
|
114
|
-
let
|
|
115
|
-
if ($[
|
|
116
|
-
const handleScalarChange = (
|
|
146
|
+
React.useEffect(t11, t12);
|
|
147
|
+
let t13;
|
|
148
|
+
let t14;
|
|
149
|
+
if ($[26] !== blockId || $[27] !== data || $[28] !== fields || $[29] !== filesMap || $[30] !== form || $[31] !== getFieldElementId || $[32] !== getFieldId || $[33] !== itemId || $[34] !== itemsMap || $[35] !== onFieldChange || $[36] !== postToIframe || $[37] !== schema) {
|
|
150
|
+
const handleScalarChange = (fieldName_3, value, fieldApi) => {
|
|
117
151
|
fieldApi.handleChange(value);
|
|
118
152
|
if (timerRef.current) clearTimeout(timerRef.current);
|
|
119
153
|
timerRef.current = window.setTimeout(() => {
|
|
120
|
-
onFieldChange(
|
|
154
|
+
onFieldChange(fieldName_3, value);
|
|
121
155
|
}, 500);
|
|
122
156
|
};
|
|
123
|
-
const handleFieldFocus = (
|
|
124
|
-
const fieldId = getFieldId(
|
|
157
|
+
const handleFieldFocus = (fieldName_4, fieldType) => {
|
|
158
|
+
const fieldId = getFieldId(fieldName_4);
|
|
125
159
|
focusedFieldIdRef.current = fieldId;
|
|
126
160
|
postToIframe({
|
|
127
161
|
type: "CAMOX_FOCUS_FIELD",
|
|
128
162
|
fieldId
|
|
129
163
|
});
|
|
130
|
-
if (itemId) previewStore.send({
|
|
164
|
+
if (itemId != null) previewStore.send({
|
|
131
165
|
type: "selectItemField",
|
|
132
166
|
blockId,
|
|
133
167
|
itemId,
|
|
134
|
-
fieldName:
|
|
168
|
+
fieldName: fieldName_4,
|
|
135
169
|
fieldType
|
|
136
170
|
});
|
|
137
171
|
else previewStore.send({
|
|
138
172
|
type: "selectBlockField",
|
|
139
173
|
blockId,
|
|
140
|
-
fieldName:
|
|
174
|
+
fieldName: fieldName_4,
|
|
141
175
|
fieldType
|
|
142
176
|
});
|
|
143
177
|
};
|
|
144
|
-
const handleFieldBlur = (
|
|
145
|
-
const fieldId_0 = getFieldId(
|
|
178
|
+
const handleFieldBlur = (fieldName_5) => {
|
|
179
|
+
const fieldId_0 = getFieldId(fieldName_5);
|
|
146
180
|
focusedFieldIdRef.current = null;
|
|
147
181
|
postToIframe({
|
|
148
182
|
type: "CAMOX_FOCUS_FIELD_END",
|
|
@@ -152,30 +186,30 @@ const ItemFieldsEditor = (t0) => {
|
|
|
152
186
|
if (!focusedFieldIdRef.current) previewStore.send({ type: "selectParent" });
|
|
153
187
|
});
|
|
154
188
|
};
|
|
155
|
-
let
|
|
156
|
-
if ($[
|
|
157
|
-
|
|
158
|
-
if (itemId) previewStore.send({
|
|
189
|
+
let t15;
|
|
190
|
+
if ($[40] !== blockId || $[41] !== itemId) {
|
|
191
|
+
t15 = (fieldName_6, fieldType_0) => {
|
|
192
|
+
if (itemId != null) previewStore.send({
|
|
159
193
|
type: "selectItemField",
|
|
160
194
|
blockId,
|
|
161
195
|
itemId,
|
|
162
|
-
fieldName:
|
|
196
|
+
fieldName: fieldName_6,
|
|
163
197
|
fieldType: fieldType_0
|
|
164
198
|
});
|
|
165
199
|
else previewStore.send({
|
|
166
200
|
type: "selectBlockField",
|
|
167
201
|
blockId,
|
|
168
|
-
fieldName:
|
|
202
|
+
fieldName: fieldName_6,
|
|
169
203
|
fieldType: fieldType_0
|
|
170
204
|
});
|
|
171
205
|
};
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
175
|
-
} else
|
|
176
|
-
const drillIntoField =
|
|
177
|
-
|
|
178
|
-
|
|
206
|
+
$[40] = blockId;
|
|
207
|
+
$[41] = itemId;
|
|
208
|
+
$[42] = t15;
|
|
209
|
+
} else t15 = $[42];
|
|
210
|
+
const drillIntoField = t15;
|
|
211
|
+
t13 = "space-y-4 px-4 py-4";
|
|
212
|
+
t14 = fields.map((field) => {
|
|
179
213
|
const label = field.label ?? formatFieldName(field.name);
|
|
180
214
|
const fieldId_1 = getFieldId(field.name);
|
|
181
215
|
if (field.fieldType === "String") return /* @__PURE__ */ jsx(form.Field, {
|
|
@@ -191,9 +225,10 @@ const ItemFieldsEditor = (t0) => {
|
|
|
191
225
|
fieldId: fieldId_1
|
|
192
226
|
}),
|
|
193
227
|
children: [/* @__PURE__ */ jsx(Label, {
|
|
194
|
-
htmlFor: field.name,
|
|
228
|
+
htmlFor: getFieldElementId(field.name),
|
|
195
229
|
children: label
|
|
196
230
|
}), /* @__PURE__ */ jsx(SidebarLexicalEditor, {
|
|
231
|
+
id: getFieldElementId(field.name),
|
|
197
232
|
value: fieldApi_0.state.value,
|
|
198
233
|
onChange: (value_0) => handleScalarChange(field.name, value_0, fieldApi_0),
|
|
199
234
|
onFocus: () => handleFieldFocus(field.name, field.fieldType),
|
|
@@ -214,10 +249,10 @@ const ItemFieldsEditor = (t0) => {
|
|
|
214
249
|
fieldId: fieldId_1
|
|
215
250
|
}),
|
|
216
251
|
children: [/* @__PURE__ */ jsx(Label, {
|
|
217
|
-
htmlFor: field.name,
|
|
252
|
+
htmlFor: getFieldElementId(field.name),
|
|
218
253
|
children: label
|
|
219
254
|
}), /* @__PURE__ */ jsx(Input, {
|
|
220
|
-
id: field.name,
|
|
255
|
+
id: getFieldElementId(field.name),
|
|
221
256
|
type: "url",
|
|
222
257
|
value: fieldApi_1.state.value,
|
|
223
258
|
onChange: (e) => handleScalarChange(field.name, e.target.value, fieldApi_1),
|
|
@@ -260,12 +295,12 @@ const ItemFieldsEditor = (t0) => {
|
|
|
260
295
|
className: "space-y-2",
|
|
261
296
|
onMouseEnter: () => postToIframe({
|
|
262
297
|
type: "CAMOX_HOVER_REPEATER",
|
|
263
|
-
blockId,
|
|
298
|
+
blockId: String(blockId),
|
|
264
299
|
fieldName: field.name
|
|
265
300
|
}),
|
|
266
301
|
onMouseLeave: () => postToIframe({
|
|
267
302
|
type: "CAMOX_HOVER_REPEATER_END",
|
|
268
|
-
blockId,
|
|
303
|
+
blockId: String(blockId),
|
|
269
304
|
fieldName: field.name
|
|
270
305
|
}),
|
|
271
306
|
children: [/* @__PURE__ */ jsx(Label, { children: label }), /* @__PURE__ */ jsxs("button", {
|
|
@@ -289,12 +324,12 @@ const ItemFieldsEditor = (t0) => {
|
|
|
289
324
|
className: "space-y-2",
|
|
290
325
|
onMouseEnter: () => postToIframe({
|
|
291
326
|
type: "CAMOX_HOVER_REPEATER",
|
|
292
|
-
blockId,
|
|
327
|
+
blockId: String(blockId),
|
|
293
328
|
fieldName: field.name
|
|
294
329
|
}),
|
|
295
330
|
onMouseLeave: () => postToIframe({
|
|
296
331
|
type: "CAMOX_HOVER_REPEATER_END",
|
|
297
|
-
blockId,
|
|
332
|
+
blockId: String(blockId),
|
|
298
333
|
fieldName: field.name
|
|
299
334
|
}),
|
|
300
335
|
children: [/* @__PURE__ */ jsx(Label, { children: label }), /* @__PURE__ */ jsxs("button", {
|
|
@@ -376,34 +411,35 @@ const ItemFieldsEditor = (t0) => {
|
|
|
376
411
|
}
|
|
377
412
|
return null;
|
|
378
413
|
});
|
|
379
|
-
$[
|
|
380
|
-
$[
|
|
381
|
-
$[
|
|
382
|
-
$[
|
|
383
|
-
$[
|
|
384
|
-
$[
|
|
385
|
-
$[
|
|
386
|
-
$[
|
|
387
|
-
$[
|
|
388
|
-
$[
|
|
389
|
-
$[
|
|
390
|
-
$[
|
|
391
|
-
$[
|
|
414
|
+
$[26] = blockId;
|
|
415
|
+
$[27] = data;
|
|
416
|
+
$[28] = fields;
|
|
417
|
+
$[29] = filesMap;
|
|
418
|
+
$[30] = form;
|
|
419
|
+
$[31] = getFieldElementId;
|
|
420
|
+
$[32] = getFieldId;
|
|
421
|
+
$[33] = itemId;
|
|
422
|
+
$[34] = itemsMap;
|
|
423
|
+
$[35] = onFieldChange;
|
|
424
|
+
$[36] = postToIframe;
|
|
425
|
+
$[37] = schema;
|
|
426
|
+
$[38] = t13;
|
|
427
|
+
$[39] = t14;
|
|
392
428
|
} else {
|
|
393
|
-
|
|
394
|
-
|
|
429
|
+
t13 = $[38];
|
|
430
|
+
t14 = $[39];
|
|
395
431
|
}
|
|
396
|
-
let
|
|
397
|
-
if ($[
|
|
398
|
-
|
|
399
|
-
className:
|
|
400
|
-
children:
|
|
432
|
+
let t15;
|
|
433
|
+
if ($[43] !== t13 || $[44] !== t14) {
|
|
434
|
+
t15 = /* @__PURE__ */ jsx("form", {
|
|
435
|
+
className: t13,
|
|
436
|
+
children: t14
|
|
401
437
|
});
|
|
402
|
-
$[
|
|
403
|
-
$[
|
|
404
|
-
$[
|
|
405
|
-
} else
|
|
406
|
-
return
|
|
438
|
+
$[43] = t13;
|
|
439
|
+
$[44] = t14;
|
|
440
|
+
$[45] = t15;
|
|
441
|
+
} else t15 = $[45];
|
|
442
|
+
return t15;
|
|
407
443
|
};
|
|
408
444
|
function _temp(f) {
|
|
409
445
|
return f.fieldType === "String" || f.fieldType === "Embed";
|