camox 0.32.0 → 0.33.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.
- package/dist/core/createBlock.d.ts +1 -1
- package/dist/core/createBlock.js +88 -108
- package/dist/core/hooks/useIsEditable.js +6 -10
- package/dist/core/lib/fieldTypes.js +10 -219
- package/dist/features/agent-chat/components/AgentChatSidebar.js +172 -0
- package/dist/features/agent-chat/components/AgentChatThread.js +9 -9
- package/dist/features/preview/CamoxPreview.js +137 -729
- package/dist/features/preview/components/{AddBlockSheet.js → AddBlockSidebar.js} +121 -131
- package/dist/features/preview/components/AssetFieldEditor.js +107 -82
- package/dist/features/preview/components/AssetLightbox.js +4 -4
- package/dist/features/preview/components/AssetPickerModal.js +277 -0
- package/dist/features/preview/components/BlockActionsPopover.js +18 -24
- package/dist/features/preview/components/CreatePageModal.js +6 -6
- package/dist/features/preview/components/FieldToolbar.js +64 -127
- package/dist/features/preview/components/ItemFieldsEditor.js +98 -125
- package/dist/features/preview/components/LeftSidebar.js +64 -0
- package/dist/features/preview/components/LinkFieldEditor.js +1 -1
- package/dist/features/preview/components/MultipleAssetFieldEditor.js +94 -56
- package/dist/features/preview/components/OverlayTracker.js +15 -15
- package/dist/features/preview/components/Overlays.js +12 -12
- package/dist/features/preview/components/PageEditorSidebar.js +563 -0
- package/dist/features/preview/components/PageInfoSidebar.js +1453 -0
- package/dist/features/preview/components/PageNavigatorSidebar.js +590 -0
- package/dist/features/preview/components/PagePicker.js +3 -3
- package/dist/features/preview/components/PageStatusBadge.js +1 -1
- package/dist/features/preview/components/PageTree.js +204 -564
- package/dist/features/preview/components/PreviewPanel.js +123 -158
- package/dist/features/preview/components/PreviewToolbar.js +260 -256
- package/dist/features/preview/components/PublishDialog.js +2 -2
- package/dist/features/preview/components/RepeatableItemsList.js +2 -2
- package/dist/features/preview/components/RightSidebar.js +109 -0
- package/dist/features/preview/components/UnlinkAssetButton.js +2 -2
- package/dist/features/preview/components/useRepeatableItemActions.js +3 -138
- package/dist/features/preview/components/useUpdateBlockPosition.js +1 -1
- package/dist/features/preview/previewQueryFns.js +23 -0
- package/dist/features/preview/previewStore.js +46 -63
- package/dist/features/provider/CamoxProvider.js +255 -70
- package/dist/features/provider/useAdminShortcuts.js +5 -48
- package/dist/features/routes/pageRoute.js +1 -1
- package/dist/features/studio/CamoxStudio.js +6 -5
- package/dist/features/studio/components/EnvironmentMenu.js +2 -2
- package/dist/features/studio/components/Navbar.js +53 -71
- package/dist/features/studio/components/ProjectMenu.js +1 -1
- package/dist/features/studio/components/UserButton.js +1 -1
- package/dist/features/studio/routes.js +7 -0
- package/dist/features/studio/useTheme.js +67 -33
- package/dist/features/vite/routeGeneration.js +68 -66
- package/dist/hooks/use-file-upload.js +1 -1
- package/dist/lib/auth.js +23 -22
- package/dist/lib/utils.js +1 -1
- package/dist/studio-overlays.css +1 -1
- package/dist/studio.css +1 -1
- package/package.json +4 -4
- package/dist/features/agent-chat/components/AgentChatSheet.js +0 -207
- package/dist/features/preview/components/AssetPickerGrid.js +0 -236
- package/dist/features/preview/components/PageContentSheet.js +0 -608
- package/dist/features/preview/components/PageMetadataModal.js +0 -908
- package/dist/features/preview/components/PreviewSideSheet.js +0 -76
|
@@ -5,7 +5,7 @@ import { transformImageUrl } from "../../../core/lib/imageTransform.js";
|
|
|
5
5
|
import { UploadDropZone } from "../../content/components/UploadDropZone.js";
|
|
6
6
|
import { useFileUpload } from "../../../hooks/use-file-upload.js";
|
|
7
7
|
import { AssetLightbox } from "./AssetLightbox.js";
|
|
8
|
-
import {
|
|
8
|
+
import { AssetPickerModal } from "./AssetPickerModal.js";
|
|
9
9
|
import { UnlinkAssetButton } from "./UnlinkAssetButton.js";
|
|
10
10
|
import { AssetActionButtons } from "./AssetFieldEditor.js";
|
|
11
11
|
import { c } from "react/compiler-runtime";
|
|
@@ -22,9 +22,9 @@ import { CSS } from "@dnd-kit/utilities";
|
|
|
22
22
|
//#region src/features/preview/components/MultipleAssetFieldEditor.tsx
|
|
23
23
|
const SortableAssetItem = (t0) => {
|
|
24
24
|
const $ = c(45);
|
|
25
|
-
if ($[0] !== "
|
|
25
|
+
if ($[0] !== "0caea1891823f5fc9c0479c2355a3624a6f7a738eac9bd06dae08f7338ed3b58") {
|
|
26
26
|
for (let $i = 0; $i < 45; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
27
|
-
$[0] = "
|
|
27
|
+
$[0] = "0caea1891823f5fc9c0479c2355a3624a6f7a738eac9bd06dae08f7338ed3b58";
|
|
28
28
|
}
|
|
29
29
|
const { asset, assetType, onRemove, onAssetOpen } = t0;
|
|
30
30
|
const t1 = String(asset._fileId);
|
|
@@ -180,10 +180,10 @@ const SortableAssetItem = (t0) => {
|
|
|
180
180
|
return t17;
|
|
181
181
|
};
|
|
182
182
|
const MultipleAssetFieldEditor = (t0) => {
|
|
183
|
-
const $ = c(
|
|
184
|
-
if ($[0] !== "
|
|
185
|
-
for (let $i = 0; $i <
|
|
186
|
-
$[0] = "
|
|
183
|
+
const $ = c(28);
|
|
184
|
+
if ($[0] !== "0caea1891823f5fc9c0479c2355a3624a6f7a738eac9bd06dae08f7338ed3b58") {
|
|
185
|
+
for (let $i = 0; $i < 28; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
186
|
+
$[0] = "0caea1891823f5fc9c0479c2355a3624a6f7a738eac9bd06dae08f7338ed3b58";
|
|
187
187
|
}
|
|
188
188
|
const { fieldName, assetType, currentData, onFieldChange } = t0;
|
|
189
189
|
const isImage = assetType === "Image";
|
|
@@ -234,67 +234,105 @@ const MultipleAssetFieldEditor = (t0) => {
|
|
|
234
234
|
setPickerOpen(false);
|
|
235
235
|
};
|
|
236
236
|
const T0 = UploadDropZone;
|
|
237
|
-
const t3 =
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
className: "flex flex-col gap-1",
|
|
255
|
-
children: items.map((asset) => /* @__PURE__ */ jsx(SortableAssetItem, {
|
|
256
|
-
asset,
|
|
257
|
-
assetType,
|
|
258
|
-
onRemove: handleRemove,
|
|
259
|
-
onAssetOpen: setLightboxAsset
|
|
260
|
-
}, asset._fileId))
|
|
261
|
-
})
|
|
237
|
+
const t3 = "space-y-4 px-2 py-4";
|
|
238
|
+
const t4 = items.length > 0 && /* @__PURE__ */ jsx(DndContext, {
|
|
239
|
+
sensors,
|
|
240
|
+
collisionDetection: closestCenter,
|
|
241
|
+
onDragEnd: handleDragEnd,
|
|
242
|
+
modifiers: [restrictToVerticalAxis],
|
|
243
|
+
children: /* @__PURE__ */ jsx(SortableContext, {
|
|
244
|
+
items: items.map(_temp5),
|
|
245
|
+
strategy: verticalListSortingStrategy,
|
|
246
|
+
children: /* @__PURE__ */ jsx("ul", {
|
|
247
|
+
className: "flex flex-col gap-1",
|
|
248
|
+
children: items.map((asset) => /* @__PURE__ */ jsx(SortableAssetItem, {
|
|
249
|
+
asset,
|
|
250
|
+
assetType,
|
|
251
|
+
onRemove: handleRemove,
|
|
252
|
+
onAssetOpen: setLightboxAsset
|
|
253
|
+
}, asset._fileId))
|
|
262
254
|
})
|
|
263
|
-
})
|
|
255
|
+
})
|
|
256
|
+
});
|
|
257
|
+
let t5;
|
|
258
|
+
if ($[4] !== setPickerOpen) {
|
|
259
|
+
t5 = () => setPickerOpen(true);
|
|
260
|
+
$[4] = setPickerOpen;
|
|
261
|
+
$[5] = t5;
|
|
262
|
+
} else t5 = $[5];
|
|
263
|
+
let t6;
|
|
264
|
+
if ($[6] !== isImage || $[7] !== t5 || $[8] !== uploadFiles || $[9] !== uploads) {
|
|
265
|
+
t6 = /* @__PURE__ */ jsx(AssetActionButtons, {
|
|
264
266
|
isImage,
|
|
265
267
|
multiple: true,
|
|
266
268
|
fileInputRef,
|
|
267
|
-
onPickerOpen:
|
|
269
|
+
onPickerOpen: t5,
|
|
268
270
|
onFilesSelected: uploadFiles,
|
|
269
271
|
uploads
|
|
270
|
-
})
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
272
|
+
});
|
|
273
|
+
$[6] = isImage;
|
|
274
|
+
$[7] = t5;
|
|
275
|
+
$[8] = uploadFiles;
|
|
276
|
+
$[9] = uploads;
|
|
277
|
+
$[10] = t6;
|
|
278
|
+
} else t6 = $[10];
|
|
279
|
+
let t7;
|
|
280
|
+
if ($[11] !== t4 || $[12] !== t6) {
|
|
281
|
+
t7 = /* @__PURE__ */ jsxs("div", {
|
|
282
|
+
className: t3,
|
|
283
|
+
children: [t4, t6]
|
|
284
|
+
});
|
|
285
|
+
$[11] = t4;
|
|
286
|
+
$[12] = t6;
|
|
287
|
+
$[13] = t7;
|
|
288
|
+
} else t7 = $[13];
|
|
289
|
+
let t8;
|
|
290
|
+
if ($[14] !== assetType || $[15] !== handleSelectMultiple || $[16] !== pickerOpen || $[17] !== setPickerOpen) {
|
|
291
|
+
t8 = /* @__PURE__ */ jsx(AssetPickerModal, {
|
|
292
|
+
open: pickerOpen,
|
|
293
|
+
onOpenChange: setPickerOpen,
|
|
294
|
+
assetType,
|
|
295
|
+
mode: "multiple",
|
|
296
|
+
onSelectSingle: _temp6,
|
|
297
|
+
onSelectMultiple: handleSelectMultiple
|
|
298
|
+
});
|
|
299
|
+
$[14] = assetType;
|
|
300
|
+
$[15] = handleSelectMultiple;
|
|
301
|
+
$[16] = pickerOpen;
|
|
302
|
+
$[17] = setPickerOpen;
|
|
303
|
+
$[18] = t8;
|
|
304
|
+
} else t8 = $[18];
|
|
305
|
+
let t9;
|
|
306
|
+
if ($[19] !== lightboxAsset || $[20] !== setLightboxAsset) {
|
|
307
|
+
t9 = lightboxAsset && /* @__PURE__ */ jsx(AssetLightbox, {
|
|
275
308
|
open: !!lightboxAsset,
|
|
276
309
|
onOpenChange: (open) => {
|
|
277
310
|
if (!open) setLightboxAsset(null);
|
|
278
311
|
},
|
|
279
312
|
fileId: lightboxAsset._fileId
|
|
280
313
|
});
|
|
281
|
-
$[
|
|
282
|
-
$[
|
|
283
|
-
$[
|
|
284
|
-
} else
|
|
285
|
-
let
|
|
286
|
-
if ($[
|
|
287
|
-
|
|
314
|
+
$[19] = lightboxAsset;
|
|
315
|
+
$[20] = setLightboxAsset;
|
|
316
|
+
$[21] = t9;
|
|
317
|
+
} else t9 = $[21];
|
|
318
|
+
let t10;
|
|
319
|
+
if ($[22] !== T0 || $[23] !== t7 || $[24] !== t8 || $[25] !== t9 || $[26] !== uploadFiles) {
|
|
320
|
+
t10 = /* @__PURE__ */ jsxs(T0, {
|
|
288
321
|
onDrop: uploadFiles,
|
|
289
|
-
children: [
|
|
322
|
+
children: [
|
|
323
|
+
t7,
|
|
324
|
+
t8,
|
|
325
|
+
t9
|
|
326
|
+
]
|
|
290
327
|
});
|
|
291
|
-
$[
|
|
292
|
-
$[
|
|
293
|
-
$[
|
|
294
|
-
$[
|
|
295
|
-
$[
|
|
296
|
-
|
|
297
|
-
|
|
328
|
+
$[22] = T0;
|
|
329
|
+
$[23] = t7;
|
|
330
|
+
$[24] = t8;
|
|
331
|
+
$[25] = t9;
|
|
332
|
+
$[26] = uploadFiles;
|
|
333
|
+
$[27] = t10;
|
|
334
|
+
} else t10 = $[27];
|
|
335
|
+
return t10;
|
|
298
336
|
};
|
|
299
337
|
function _temp(a) {
|
|
300
338
|
return !!a && !!a.url;
|
|
@@ -308,10 +346,10 @@ function _temp3(assets) {
|
|
|
308
346
|
function _temp4(f) {
|
|
309
347
|
return { _fileId: f.id };
|
|
310
348
|
}
|
|
311
|
-
function _temp5() {
|
|
312
|
-
function _temp6(a_4) {
|
|
349
|
+
function _temp5(a_4) {
|
|
313
350
|
return String(a_4._fileId);
|
|
314
351
|
}
|
|
352
|
+
function _temp6() {}
|
|
315
353
|
|
|
316
354
|
//#endregion
|
|
317
355
|
export { MultipleAssetFieldEditor };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { previewStore } from "../previewStore.js";
|
|
2
1
|
import { useFrame } from "./Frame.js";
|
|
3
2
|
import { isOverlayMessage } from "../overlayMessages.js";
|
|
3
|
+
import { previewStore } from "../previewStore.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
5
5
|
import { useSelector } from "@xstate/store-react";
|
|
6
6
|
import * as React from "react";
|
|
@@ -12,25 +12,25 @@ import * as React from "react";
|
|
|
12
12
|
*/
|
|
13
13
|
const OverlayTracker = () => {
|
|
14
14
|
const $ = c(9);
|
|
15
|
-
if ($[0] !== "
|
|
15
|
+
if ($[0] !== "e0ea417a1efc597e2017b6de423987462b3c414f4a8241a5bd4f2de04d2dd29e") {
|
|
16
16
|
for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
17
|
-
$[0] = "
|
|
17
|
+
$[0] = "e0ea417a1efc597e2017b6de423987462b3c414f4a8241a5bd4f2de04d2dd29e";
|
|
18
18
|
}
|
|
19
19
|
const { window: iframeWindow } = useFrame();
|
|
20
|
-
const
|
|
21
|
-
const
|
|
20
|
+
const isPageEditorSidebarOpen = useSelector(previewStore, _temp);
|
|
21
|
+
const isAddBlockSidebarOpen = useSelector(previewStore, _temp2);
|
|
22
22
|
let t0;
|
|
23
23
|
let t1;
|
|
24
|
-
if ($[1] !== iframeWindow || $[2] !==
|
|
24
|
+
if ($[1] !== iframeWindow || $[2] !== isAddBlockSidebarOpen) {
|
|
25
25
|
t0 = () => {
|
|
26
|
-
if (!iframeWindow || !
|
|
26
|
+
if (!iframeWindow || !isAddBlockSidebarOpen) return;
|
|
27
27
|
const handleClick = _temp3;
|
|
28
28
|
iframeWindow.document.addEventListener("click", handleClick);
|
|
29
29
|
return () => iframeWindow.document.removeEventListener("click", handleClick);
|
|
30
30
|
};
|
|
31
|
-
t1 = [iframeWindow,
|
|
31
|
+
t1 = [iframeWindow, isAddBlockSidebarOpen];
|
|
32
32
|
$[1] = iframeWindow;
|
|
33
|
-
$[2] =
|
|
33
|
+
$[2] = isAddBlockSidebarOpen;
|
|
34
34
|
$[3] = t0;
|
|
35
35
|
$[4] = t1;
|
|
36
36
|
} else {
|
|
@@ -40,14 +40,14 @@ const OverlayTracker = () => {
|
|
|
40
40
|
React.useEffect(t0, t1);
|
|
41
41
|
let t2;
|
|
42
42
|
let t3;
|
|
43
|
-
if ($[5] !== iframeWindow || $[6] !==
|
|
43
|
+
if ($[5] !== iframeWindow || $[6] !== isPageEditorSidebarOpen) {
|
|
44
44
|
t2 = () => {
|
|
45
45
|
if (!iframeWindow) return;
|
|
46
46
|
const handleMessage = (event) => {
|
|
47
47
|
if (!isOverlayMessage(event.data)) return;
|
|
48
48
|
const { type } = event.data;
|
|
49
49
|
if (type === "CAMOX_FOCUS_FIELD") {
|
|
50
|
-
if (
|
|
50
|
+
if (isPageEditorSidebarOpen) return;
|
|
51
51
|
const { fieldId } = event.data;
|
|
52
52
|
const element = iframeWindow.document.querySelector(`[data-camox-field-id="${fieldId}"]`);
|
|
53
53
|
if (element) element.focus();
|
|
@@ -56,9 +56,9 @@ const OverlayTracker = () => {
|
|
|
56
56
|
iframeWindow.addEventListener("message", handleMessage);
|
|
57
57
|
return () => iframeWindow.removeEventListener("message", handleMessage);
|
|
58
58
|
};
|
|
59
|
-
t3 = [iframeWindow,
|
|
59
|
+
t3 = [iframeWindow, isPageEditorSidebarOpen];
|
|
60
60
|
$[5] = iframeWindow;
|
|
61
|
-
$[6] =
|
|
61
|
+
$[6] = isPageEditorSidebarOpen;
|
|
62
62
|
$[7] = t2;
|
|
63
63
|
$[8] = t3;
|
|
64
64
|
} else {
|
|
@@ -69,10 +69,10 @@ const OverlayTracker = () => {
|
|
|
69
69
|
return null;
|
|
70
70
|
};
|
|
71
71
|
function _temp(state) {
|
|
72
|
-
return state.context.
|
|
72
|
+
return state.context.isPageEditorSidebarOpen;
|
|
73
73
|
}
|
|
74
74
|
function _temp2(state_0) {
|
|
75
|
-
return state_0.context.
|
|
75
|
+
return state_0.context.isAddBlockSidebarOpen;
|
|
76
76
|
}
|
|
77
77
|
function _temp3() {
|
|
78
78
|
previewStore.send({ type: "exitPeekedBlock" });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { previewStore } from "../previewStore.js";
|
|
2
1
|
import { isOverlayMessage } from "../overlayMessages.js";
|
|
2
|
+
import { previewStore } from "../previewStore.js";
|
|
3
3
|
import { usePageBlocks } from "../../../lib/normalized-data.js";
|
|
4
4
|
import { usePreviewedPage } from "../CamoxPreview.js";
|
|
5
5
|
import { c } from "react/compiler-runtime";
|
|
@@ -9,12 +9,12 @@ import * as React from "react";
|
|
|
9
9
|
//#region src/features/preview/components/Overlays.tsx
|
|
10
10
|
const Overlays = (t0) => {
|
|
11
11
|
const $ = c(15);
|
|
12
|
-
if ($[0] !== "
|
|
12
|
+
if ($[0] !== "a159f5febae53b051adcfa6973022c237bd738c0db1dc2c0c91aace28d405412") {
|
|
13
13
|
for (let $i = 0; $i < 15; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
14
|
-
$[0] = "
|
|
14
|
+
$[0] = "a159f5febae53b051adcfa6973022c237bd738c0db1dc2c0c91aace28d405412";
|
|
15
15
|
}
|
|
16
16
|
const { iframeElement } = t0;
|
|
17
|
-
const
|
|
17
|
+
const isPageEditorSidebarOpen = useSelector(previewStore, _temp);
|
|
18
18
|
const selection = useSelector(previewStore, _temp2);
|
|
19
19
|
const peekedBlock = useSelector(previewStore, _temp3);
|
|
20
20
|
const page = usePreviewedPage();
|
|
@@ -40,7 +40,7 @@ const Overlays = (t0) => {
|
|
|
40
40
|
else if (blockIndex === 0) afterPosition = "";
|
|
41
41
|
}
|
|
42
42
|
previewStore.send({
|
|
43
|
-
type: "
|
|
43
|
+
type: "openAddBlockSidebar",
|
|
44
44
|
afterPosition,
|
|
45
45
|
via: "overlay"
|
|
46
46
|
});
|
|
@@ -60,9 +60,9 @@ const Overlays = (t0) => {
|
|
|
60
60
|
} else t2 = $[4];
|
|
61
61
|
React.useEffect(t1, t2);
|
|
62
62
|
let t3;
|
|
63
|
-
if ($[5] !== iframeElement?.contentWindow || $[6] !==
|
|
63
|
+
if ($[5] !== iframeElement?.contentWindow || $[6] !== isPageEditorSidebarOpen || $[7] !== peekedBlock || $[8] !== selection) {
|
|
64
64
|
t3 = () => {
|
|
65
|
-
if (
|
|
65
|
+
if (isPageEditorSidebarOpen) return;
|
|
66
66
|
if (peekedBlock) return;
|
|
67
67
|
if (!selection) return;
|
|
68
68
|
if (selection.type !== "block-field" && selection.type !== "item-field") return;
|
|
@@ -76,21 +76,21 @@ const Overlays = (t0) => {
|
|
|
76
76
|
iframeElement?.contentWindow?.postMessage(message_0, "*");
|
|
77
77
|
};
|
|
78
78
|
$[5] = iframeElement?.contentWindow;
|
|
79
|
-
$[6] =
|
|
79
|
+
$[6] = isPageEditorSidebarOpen;
|
|
80
80
|
$[7] = peekedBlock;
|
|
81
81
|
$[8] = selection;
|
|
82
82
|
$[9] = t3;
|
|
83
83
|
} else t3 = $[9];
|
|
84
84
|
let t4;
|
|
85
|
-
if ($[10] !== iframeElement || $[11] !==
|
|
85
|
+
if ($[10] !== iframeElement || $[11] !== isPageEditorSidebarOpen || $[12] !== peekedBlock || $[13] !== selection) {
|
|
86
86
|
t4 = [
|
|
87
87
|
selection,
|
|
88
|
-
|
|
88
|
+
isPageEditorSidebarOpen,
|
|
89
89
|
peekedBlock,
|
|
90
90
|
iframeElement
|
|
91
91
|
];
|
|
92
92
|
$[10] = iframeElement;
|
|
93
|
-
$[11] =
|
|
93
|
+
$[11] = isPageEditorSidebarOpen;
|
|
94
94
|
$[12] = peekedBlock;
|
|
95
95
|
$[13] = selection;
|
|
96
96
|
$[14] = t4;
|
|
@@ -99,7 +99,7 @@ const Overlays = (t0) => {
|
|
|
99
99
|
return null;
|
|
100
100
|
};
|
|
101
101
|
function _temp(state) {
|
|
102
|
-
return state.context.
|
|
102
|
+
return state.context.isPageEditorSidebarOpen;
|
|
103
103
|
}
|
|
104
104
|
function _temp2(state_0) {
|
|
105
105
|
return state_0.context.selection;
|