@parhelia/core 0.1.12601 → 0.1.12612

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.
@@ -352,6 +352,18 @@ export type EditContextType = {
352
352
  setComponentNavigatorOpenForSlot: (slotId: string | null, value: boolean | ((prev: boolean) => boolean)) => void;
353
353
  showAgentsPanel: boolean;
354
354
  setShowAgentsPanel: React.Dispatch<React.SetStateAction<boolean>>;
355
+ /** When true the editor form (right panel) is hidden. Persisted in user preferences. */
356
+ editorFormHidden: boolean;
357
+ setEditorFormHidden: (value: boolean) => void;
358
+ /** Whether the user has seen the one-time hint that explains how to re-open the form. */
359
+ editorFormHintSeen: boolean;
360
+ markEditorFormHintSeen: () => void;
361
+ /** Transient flag: the hint popover should be shown right now. */
362
+ editorFormHintVisible: boolean;
363
+ showEditorFormHint: () => void;
364
+ dismissEditorFormHint: () => void;
365
+ /** Ref registered by the toolbar toggle button; used to anchor the hint popover. */
366
+ editorFormToggleButtonRef: React.MutableRefObject<HTMLButtonElement | null>;
355
367
  showMinimap: boolean;
356
368
  setShowMinimap: React.Dispatch<React.SetStateAction<boolean>>;
357
369
  showHelpTerminal: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"editContext.js","sourceRoot":"","sources":["../../../src/editor/client/editContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAGZ,UAAU,EACV,SAAS,EACT,MAAM,GACP,MAAM,OAAO,CAAC;AA0lBf,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA8B,SAAS,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IACpC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,UAAU,CAAC;AACpB,CAAC;AAyCD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAEpE,mDAAmD;AACnD,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IACpC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,UAAU,CAAC;AACpB,CAAC;AASD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"editContext.js","sourceRoot":"","sources":["../../../src/editor/client/editContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAGZ,UAAU,EACV,SAAS,EACT,MAAM,GACP,MAAM,OAAO,CAAC;AAumBf,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA8B,SAAS,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IACpC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,UAAU,CAAC;AACpB,CAAC;AAyCD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAEpE,mDAAmD;AACnD,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IACpC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,UAAU,CAAC;AACpB,CAAC;AASD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
@@ -18,17 +18,12 @@ export function handleErrorResult(result, ui, state) {
18
18
  state.configuration.events.onUnauthorized();
19
19
  return true;
20
20
  }
21
- ui.confirmationDialogRef.current?.confirm({
22
- header: "Not logged in",
23
- message: "You are not logged in anymore. Proceed to login page?",
24
- accept: () => {
25
- window.location.href = "/sitecore/login";
26
- },
27
- });
28
- ui.showErrorToast({
29
- summary: result.summary || "Error",
30
- details: result.details || "An error occurred",
31
- });
21
+ // Session expired (e.g. timeout or logout in another tab). Let the
22
+ // EditorShell render a single, debounced "Your session has expired"
23
+ // toast with a Login action instead of a confirmation dialog.
24
+ window.dispatchEvent(new CustomEvent("parhelia:session-expired", {
25
+ detail: { reason: result.details || "unauthorized" },
26
+ }));
32
27
  return true;
33
28
  }
34
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/editor/client/helpers.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,iBAAiB,CAC/B,MAAgC,EAChC,EAGC,EACD,KAEC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAExC,EAAE,CAAC,cAAc,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,mBAAmB;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;YACzC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,0BAA0B,EAAE;gBAC1C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB,EAAE;aACxD,CAAC,CACH,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC9C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC;YACxC,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,uDAAuD;YAChE,MAAM,EAAE,GAAG,EAAE;gBACX,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;QACH,EAAE,CAAC,cAAc,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,mBAAmB;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/editor/client/helpers.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,iBAAiB,CAC/B,MAAgC,EAChC,EAGC,EACD,KAEC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAExC,EAAE,CAAC,cAAc,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,mBAAmB;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;YACzC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,0BAA0B,EAAE;gBAC1C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB,EAAE;aACxD,CAAC,CACH,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC9C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,0BAA0B,EAAE;YAC1C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,cAAc,EAAE;SACrD,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -2,10 +2,11 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { CompareIcon } from "../../ui/Icons";
3
3
  import { useEditContext } from "../../client/editContext";
4
4
  import { SimpleIconButton } from "../../ui/SimpleIconButton";
5
- import { Monitor, Smartphone, Table, MessageSquareMore, Map, } from "lucide-react";
5
+ import { Monitor, Smartphone, Table, MessageSquareMore, Map, PanelRight, } from "lucide-react";
6
6
  import { Separator } from "../Separator";
7
7
  import { useEffect, useState } from "react";
8
8
  import { DEVICE_CHANGE_EVENT } from "../../page-viewer/pageViewContext";
9
+ import { cn } from "../../../lib/utils";
9
10
  export function ViewportControls() {
10
11
  const editContext = useEditContext();
11
12
  // Counter to force re-renders when device changes.
@@ -29,6 +30,9 @@ export function ViewportControls() {
29
30
  const device = pageViewContext.device;
30
31
  const setDevice = pageViewContext.setDevice;
31
32
  const commentsCount = editContext.comments?.filter((x) => !x.isResolved).length || 0;
33
+ const canToggleEditorForm = editContext.workspaceId === "editor" &&
34
+ !!pageViewContext.page?.item?.hasLayout;
35
+ const editorFormVisible = !editContext.editorFormHidden;
32
36
  return (_jsxs(_Fragment, { children: [_jsx(SimpleIconButton, { icon: _jsx(Monitor, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: "Desktop", size: "large", "data-testid": "desktop-viewport-button", selected: device === "desktop", onClick: () => setDevice("desktop") }), _jsx(SimpleIconButton, { icon: _jsx(Smartphone, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: "Mobile", size: "large", "data-testid": "mobile-viewport-button", selected: Boolean(device && device !== "desktop"), onClick: () => {
33
37
  if (editContext.configuration.devices[0]) {
34
38
  setDevice(editContext.configuration.devices[0].name);
@@ -40,7 +44,13 @@ export function ViewportControls() {
40
44
  if (slotContext) {
41
45
  slotContext.setCompareMode(!slotContext.compareMode);
42
46
  }
43
- } })), _jsx(Separator, { size: "large" }), " ", _jsx(SimpleIconButton, { className: "relative", selected: !!editContext.showComments, icon: _jsx(MessageSquareMore, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: "Show comments", size: "large", "data-testid": "toggle-comments-button", onClick: () => {
47
+ } })), _jsx(Separator, { size: "large" }), " ", canToggleEditorForm && (_jsx(SimpleIconButton, { ref: editContext.editorFormToggleButtonRef, icon: _jsx(PanelRight, { className: "h-6 w-6 rotate-180 p-1", strokeWidth: 1 }), label: editorFormVisible ? "Hide editor form" : "Show editor form", size: "large", "data-testid": "editor-form-toggle-button", selected: editorFormVisible, className: cn(editContext.editorFormHintVisible &&
48
+ "ring-theme-secondary animate-pulse ring-2 ring-offset-2"), onClick: () => {
49
+ editContext.setEditorFormHidden(editorFormVisible);
50
+ if (editContext.editorFormHintVisible) {
51
+ editContext.dismissEditorFormHint();
52
+ }
53
+ } })), _jsx(SimpleIconButton, { className: "relative", selected: !!editContext.showComments, icon: _jsx(MessageSquareMore, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: "Show comments", size: "large", "data-testid": "toggle-comments-button", onClick: () => {
44
54
  const newShowComments = !editContext.showComments;
45
55
  editContext.setShowComments(newShowComments);
46
56
  // Open the feedback sidebar when enabling comments
@@ -1 +1 @@
1
- {"version":3,"file":"ViewportControls.js","sourceRoot":"","sources":["../../../../src/editor/menubar/toolbar-sections/ViewportControls.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewportControls.js","sourceRoot":"","sources":["../../../../src/editor/menubar/toolbar-sections/ViewportControls.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * One-time hint shown the first time the user closes the editor form.
3
+ * Anchors to the toolbar toggle button (registered via
4
+ * `editContext.editorFormToggleButtonRef`) and stays open until the user
5
+ * dismisses it.
6
+ */
7
+ export declare function EditorFormHintPopover(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from "react";
3
+ import { useEditContext } from "../client/editContext";
4
+ import { Popover, PopoverAnchor, PopoverContent, } from "../../components/ui/popover";
5
+ import { Button } from "../../components/ui/button";
6
+ /**
7
+ * One-time hint shown the first time the user closes the editor form.
8
+ * Anchors to the toolbar toggle button (registered via
9
+ * `editContext.editorFormToggleButtonRef`) and stays open until the user
10
+ * dismisses it.
11
+ */
12
+ export function EditorFormHintPopover() {
13
+ const editContext = useEditContext();
14
+ const [anchorReady, setAnchorReady] = useState(false);
15
+ const virtualRef = useMemo(() => ({
16
+ get current() {
17
+ return editContext?.editorFormToggleButtonRef?.current ?? null;
18
+ },
19
+ }), [editContext?.editorFormToggleButtonRef]);
20
+ // Poll briefly after the hint is requested to wait for the toolbar button
21
+ // to mount (it only renders when a page with layout is active).
22
+ useEffect(() => {
23
+ if (!editContext?.editorFormHintVisible) {
24
+ setAnchorReady(false);
25
+ return;
26
+ }
27
+ let cancelled = false;
28
+ const check = () => {
29
+ if (cancelled)
30
+ return;
31
+ if (editContext.editorFormToggleButtonRef?.current) {
32
+ setAnchorReady(true);
33
+ }
34
+ else {
35
+ requestAnimationFrame(check);
36
+ }
37
+ };
38
+ check();
39
+ return () => {
40
+ cancelled = true;
41
+ };
42
+ }, [
43
+ editContext?.editorFormHintVisible,
44
+ editContext?.editorFormToggleButtonRef,
45
+ ]);
46
+ if (!editContext)
47
+ return null;
48
+ const open = editContext.editorFormHintVisible && anchorReady;
49
+ return (_jsxs(Popover, { open: open, onOpenChange: (next) => {
50
+ if (!next) {
51
+ editContext.dismissEditorFormHint();
52
+ }
53
+ }, enableIframeClickDetection: false, children: [_jsx(PopoverAnchor, { virtualRef: virtualRef }), _jsx(PopoverContent, { side: "bottom", align: "end", sideOffset: 8, className: "w-80", "data-testid": "editor-form-hint-popover", children: _jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "text-sm font-semibold", children: "Editor form hidden" }), _jsx("p", { className: "text-sm text-gray-600", children: "You can bring the editor form back any time using this toolbar button." }), _jsx("div", { className: "flex justify-end pt-1", children: _jsx(Button, { size: "sm", onClick: () => editContext.dismissEditorFormHint(), "data-testid": "editor-form-hint-dismiss", children: "Got it" }) })] }) })] }));
54
+ }
55
+ //# sourceMappingURL=EditorFormHintPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorFormHintPopover.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/EditorFormHintPopover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,OAAO,EACP,aAAa,EACb,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,OAAO;YACT,OAAO,WAAW,EAAE,yBAAyB,EAAE,OAAO,IAAI,IAAI,CAAC;QACjE,CAAC;KACF,CAAC,EACF,CAAC,WAAW,EAAE,yBAAyB,CAAC,CACzC,CAAC;IAEF,0EAA0E;IAC1E,gEAAgE;IAChE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,qBAAqB,EAAE,CAAC;YACxC,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,SAAS;gBAAE,OAAO;YACtB,IAAI,WAAW,CAAC,yBAAyB,EAAE,OAAO,EAAE,CAAC;gBACnD,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QACF,KAAK,EAAE,CAAC;QAER,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,yBAAyB;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,IAAI,WAAW,CAAC;IAE9D,OAAO,CACL,MAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACtC,CAAC;QACH,CAAC,EACD,0BAA0B,EAAE,KAAK,aAEjC,KAAC,aAAa,IAAC,UAAU,EAAE,UAAiB,GAAI,EAChD,KAAC,cAAc,IACb,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,KAAK,EACX,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,MAAM,iBACJ,0BAA0B,YAEtC,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,uBAAuB,mCAAyB,EAC/D,YAAG,SAAS,EAAC,uBAAuB,uFAGhC,EACJ,cAAK,SAAS,EAAC,uBAAuB,YACpC,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,EAAE,iBACtC,0BAA0B,uBAG/B,GACL,IACF,GACS,IACT,CACX,CAAC;AACJ,CAAC"}
@@ -14,6 +14,8 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
14
14
  const [minimapReady, setMinimapReady] = useState(false);
15
15
  const [refreshScale, setRefreshScale] = useState(0);
16
16
  const observerRef = useRef(null);
17
+ const resizeObserverRef = useRef(null);
18
+ const assetLoadHandlerRef = useRef(null);
17
19
  const minimapContainerRef = useRef(null);
18
20
  if (!mainViewIframeRef.current)
19
21
  return null;
@@ -34,6 +36,7 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
34
36
  const newScale = Math.min(scaleX, scaleY, 1);
35
37
  updateScale(newScale);
36
38
  setScale(newScale);
39
+ syncDimensions();
37
40
  return newScale;
38
41
  };
39
42
  // Prevent scale/width feedback loop by tracking previous values
@@ -138,6 +141,12 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
138
141
  if (!iframeRef.current)
139
142
  return;
140
143
  observerRef.current?.disconnect();
144
+ resizeObserverRef.current?.disconnect();
145
+ const sourceDoc = mainViewIframeRef.current.contentWindow.document;
146
+ if (assetLoadHandlerRef.current) {
147
+ sourceDoc.removeEventListener("load", assetLoadHandlerRef.current, true);
148
+ assetLoadHandlerRef.current = null;
149
+ }
141
150
  mirrorIframeContent(mainViewIframeRef.current, iframeRef.current);
142
151
  const observer = new MutationObserver((mutationsList) => {
143
152
  const minimapDoc = iframeRef.current?.contentDocument;
@@ -186,6 +195,10 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
186
195
  filteredNodes.forEach((targetNode) => {
187
196
  updateCorrespondingNode(targetNode);
188
197
  });
198
+ // Re-bake dimensions in the same tick as the structural sync so the
199
+ // source/destination tree pairing stays consistent — MutationObserver
200
+ // callbacks are microtasks, no other JS can run between the two.
201
+ syncDimensions();
189
202
  setRefreshScale((x) => x + 1);
190
203
  });
191
204
  observer.observe(mainViewIframeRef.current.contentWindow.document, {
@@ -194,6 +207,21 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
194
207
  characterData: true, // observe text changes
195
208
  attributes: true, // observe attribute changes (like style or class)
196
209
  });
210
+ // Catch async layout changes that don't trigger the MutationObserver:
211
+ // image/video metadata loading, web font swap-in, CSS animations
212
+ // settling, and iframe-size changes from device-mode toggles.
213
+ const ro = new ResizeObserver(() => {
214
+ syncDimensions();
215
+ });
216
+ ro.observe(sourceDoc.documentElement);
217
+ resizeObserverRef.current = ro;
218
+ const onAssetLoad = () => {
219
+ syncDimensions();
220
+ };
221
+ // <img>/<video>/<iframe> 'load' events don't bubble — capture phase
222
+ // catches them at the document root.
223
+ sourceDoc.addEventListener("load", onAssetLoad, true);
224
+ assetLoadHandlerRef.current = onAssetLoad;
197
225
  setMinimapReady(true);
198
226
  observerRef.current = observer;
199
227
  };
@@ -206,6 +234,13 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
206
234
  return () => {
207
235
  observerRef.current?.disconnect();
208
236
  observerRef.current = null;
237
+ resizeObserverRef.current?.disconnect();
238
+ resizeObserverRef.current = null;
239
+ const sourceDoc = mainViewIframeRef?.current?.contentWindow?.document ?? null;
240
+ if (sourceDoc && assetLoadHandlerRef.current) {
241
+ sourceDoc.removeEventListener("load", assetLoadHandlerRef.current, true);
242
+ }
243
+ assetLoadHandlerRef.current = null;
209
244
  mainViewIframeRef?.current?.removeEventListener("load", handleLoad);
210
245
  };
211
246
  }, [mainViewIframeRef.current, iframeRef.current]);
@@ -246,7 +281,10 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
246
281
  targetDoc.documentElement.innerHTML = sourceHtml;
247
282
  targetDoc.documentElement.style.overflow = "hidden";
248
283
  const targetHead = targetDoc.documentElement.querySelector("head");
249
- // Inject CSS to constrain video and media elements in minimap
284
+ // Inject CSS to constrain media elements in minimap. Width/height for
285
+ // <video> are now baked by syncDimensions() so we no longer need the
286
+ // viewport-unit (`max-height: 100vh`) hack that misresolved against the
287
+ // tall minimap iframe.
250
288
  let style = targetHead?.querySelector("style[data-minimap-constraints]");
251
289
  if (!style && targetHead) {
252
290
  style = targetDoc.createElement("style");
@@ -256,16 +294,65 @@ export function MiniMap({ deviceHeight, scroll, mainViewIframeRef, pageViewConte
256
294
  max-width: 100% !important;
257
295
  height: auto !important;
258
296
  }
259
- video {
260
- width: 100% !important;
261
- max-height: 100vh !important;
262
- }
263
297
  `;
264
298
  targetHead.appendChild(style);
265
299
  }
266
300
  }
301
+ syncDimensions();
267
302
  setRefreshScale((x) => x + 1);
268
303
  }
304
+ // Bake the main iframe's resolved layout (width/height per element, plus
305
+ // top/left for absolute/fixed elements) into the minimap clone as inline
306
+ // !important px styles. This neutralizes vh/vw drift between the two
307
+ // iframes (their layout viewports differ — main = deviceHeight, minimap =
308
+ // scrollHeight) and any other unit/calc/percentage that would resolve
309
+ // differently inside the minimap document.
310
+ function syncDimensions() {
311
+ const sourceDoc = mainViewIframeRef.current?.contentDocument;
312
+ const targetDoc = iframeRef.current?.contentDocument;
313
+ if (!sourceDoc?.body || !targetDoc?.body)
314
+ return;
315
+ const srcView = sourceDoc.defaultView;
316
+ if (!srcView)
317
+ return;
318
+ walkDimensions(sourceDoc.body, targetDoc.body, srcView);
319
+ }
320
+ function walkDimensions(src, dst, srcView) {
321
+ // We can't use `instanceof HTMLElement` here because src/dst live in
322
+ // different window realms (main iframe / minimap iframe) than this
323
+ // component, so each realm has its own HTMLElement constructor and the
324
+ // check would always be false. Use duck typing instead.
325
+ const srcEl = src;
326
+ const dstEl = dst;
327
+ const dstStyle = dstEl.style;
328
+ if (dstStyle && typeof srcEl.getBoundingClientRect === "function") {
329
+ const rect = srcEl.getBoundingClientRect();
330
+ if (rect.width > 0 || rect.height > 0) {
331
+ dstStyle.setProperty("width", `${rect.width}px`, "important");
332
+ dstStyle.setProperty("height", `${rect.height}px`, "important");
333
+ }
334
+ const cs = srcView.getComputedStyle(srcEl);
335
+ if (cs.position === "absolute" || cs.position === "fixed") {
336
+ const offsetParent = srcEl.offsetParent;
337
+ const parentRect = offsetParent?.getBoundingClientRect();
338
+ if (parentRect) {
339
+ dstStyle.setProperty("left", `${rect.left - parentRect.left}px`, "important");
340
+ dstStyle.setProperty("top", `${rect.top - parentRect.top}px`, "important");
341
+ dstStyle.removeProperty("right");
342
+ dstStyle.removeProperty("bottom");
343
+ }
344
+ }
345
+ }
346
+ // Walk children in lock-step. Bail at any divergent subtree — the
347
+ // MutationObserver path keeps structures aligned, so this is purely
348
+ // defensive.
349
+ const sChildren = src.children;
350
+ const dChildren = dst.children;
351
+ const len = Math.min(sChildren.length, dChildren.length);
352
+ for (let i = 0; i < len; i++) {
353
+ walkDimensions(sChildren[i], dChildren[i], srcView);
354
+ }
355
+ }
269
356
  const updateScale = (scale) => {
270
357
  const scrollContainer = getScrollContainer();
271
358
  if (!iframeRef.current || !scaleContainerRef.current)
@@ -1 +1 @@
1
- {"version":3,"file":"MiniMap.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/MiniMap.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MiniMap.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/MiniMap.tsx"],"names":[],"mappings":"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"}
@@ -2,109 +2,41 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { EditorForm } from "./EditorForm";
3
3
  import { PageViewerFrame } from "./PageViewerFrame";
4
4
  import { ComponentTree } from "../sidebar/ComponentTree";
5
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { useCallback, useEffect, useState } from "react";
6
6
  import { SimpleIconButton } from "../ui/SimpleIconButton";
7
7
  import { useEditContext, useFieldsEditContext } from "../client/editContext";
8
8
  import { Layers, StepForward, X } from "lucide-react";
9
9
  import { cn } from "../../lib/utils";
10
10
  import { Splitter } from "../ui/Splitter";
11
- import { getComponentById } from "../componentTreeHelper";
12
11
  import { useSlotContext } from "../views/editorSlotContext";
13
12
  import { localStorageService } from "../services/localStorageService";
14
13
  export const SLOT_COMPONENT_NAVIGATOR_DEFAULT_WIDTH = 320;
14
+ const EDITOR_FORM_DEFAULT_WIDTH = 320;
15
15
  export function PageViewer({ pageViewContext, showFormEditor, compareView, name, followEditsDefault, className, noMargins, slotCloseButton, }) {
16
16
  const editContext = useEditContext();
17
17
  const modifiedFieldsContext = useFieldsEditContext();
18
18
  const slotContext = useSlotContext();
19
19
  const [followEdits, setFollowEdits] = useState(followEditsDefault);
20
- const [formEditorCollapsed, setFormEditorCollapsed] = useState(false);
21
- const [dismissedAutoOpenToken, setDismissedAutoOpenToken] = useState(null);
22
- const wasSlotActiveRef = useRef(false);
23
- const dismissContextToken = useMemo(() => {
24
- const selectionKey = (editContext?.selection || []).join(",");
25
- return [
26
- slotContext?.slotId || "no-slot",
27
- selectionKey,
28
- editContext?.insertMode ? "insert" : "browse",
29
- ].join("|");
30
- }, [
31
- editContext?.insertMode,
32
- editContext?.selection,
33
- slotContext?.slotId,
34
- ]);
20
+ const formHidden = editContext?.editorFormHidden ?? false;
21
+ // Insert mode always needs the form open so the user can pick a component or
22
+ // configure the new item, even when the user has hidden the panel. The
23
+ // preference itself is preserved, so the form returns to its hidden state as
24
+ // soon as insert mode ends.
25
+ const formEffectivelyHidden = formHidden && !editContext?.insertMode;
35
26
  const collapseFormEditor = useCallback(() => {
36
- setFormEditorCollapsed(true);
37
- setDismissedAutoOpenToken(dismissContextToken);
38
- }, [dismissContextToken]);
27
+ if (!editContext)
28
+ return;
29
+ editContext.setEditorFormHidden(true);
30
+ if (!editContext.editorFormHintSeen) {
31
+ editContext.showEditorFormHint();
32
+ }
33
+ }, [editContext]);
39
34
  useEffect(() => {
40
- // Remove keys matching the pattern (will match new format with parhelia.* prefix)
35
+ // Clean up legacy per-slot collapse state from older PageViewer implementation.
41
36
  localStorageService.removeAllMatchingKeys("editor.pageViewer.slot-");
42
37
  }, []);
43
38
  if (!pageViewContext)
44
39
  return null;
45
- useEffect(() => {
46
- const wasActive = wasSlotActiveRef.current;
47
- const isActive = !!slotContext?.isActive;
48
- if (!wasActive && isActive) {
49
- setDismissedAutoOpenToken(null);
50
- setFormEditorCollapsed(false);
51
- }
52
- wasSlotActiveRef.current = isActive;
53
- }, [slotContext?.isActive]);
54
- useEffect(() => {
55
- // Only open form editor automatically if this slot is active and the user
56
- // hasn't manually dismissed it for the current selection/intent context.
57
- if (!slotContext?.isActive) {
58
- return;
59
- }
60
- if (editContext?.activeEditorTab) {
61
- setFormEditorCollapsed(false);
62
- return;
63
- }
64
- if (!editContext?.insertMode) {
65
- return;
66
- }
67
- if (dismissedAutoOpenToken === dismissContextToken) {
68
- return;
69
- }
70
- setFormEditorCollapsed(false);
71
- }, [
72
- dismissContextToken,
73
- dismissedAutoOpenToken,
74
- editContext?.activeEditorTab,
75
- editContext?.insertMode,
76
- slotContext?.isActive,
77
- ]);
78
- useEffect(() => {
79
- // Only reset collapsed state if:
80
- // 1. This slot is active
81
- // 2. The selection contains components relevant to THIS slot's page
82
- if (!slotContext?.isActive) {
83
- return;
84
- }
85
- const selection = editContext?.selection || [];
86
- const page = pageViewContext?.page;
87
- if (!page || selection.length === 0) {
88
- return;
89
- }
90
- // Check if any selected component exists in this page
91
- const hasRelevantSelection = selection.some((componentId) => {
92
- const component = getComponentById(componentId, page);
93
- return !!component;
94
- });
95
- if (hasRelevantSelection) {
96
- if (dismissedAutoOpenToken === dismissContextToken) {
97
- return;
98
- }
99
- setFormEditorCollapsed(false);
100
- }
101
- }, [
102
- dismissContextToken,
103
- dismissedAutoOpenToken,
104
- editContext?.selection,
105
- pageViewContext?.page,
106
- slotContext?.isActive,
107
- ]);
108
40
  useEffect(() => {
109
41
  if (followEdits &&
110
42
  modifiedFieldsContext?.recentEdits &&
@@ -144,16 +76,11 @@ export function PageViewer({ pageViewContext, showFormEditor, compareView, name,
144
76
  (pageViewContext.page?.item?.hasLayout ?? treeItem?.hasLayout ?? false);
145
77
  const hasOuterRightPanel = !!editContext?.showAgentsPanel ||
146
78
  !!(editContext?.showHelpTerminal && editContext?.currentItemDescriptor);
147
- // Create panels array for the Splitter component
79
+ // The form panel is rendered outside of the Splitter so we can animate its
80
+ // width when the user opens or closes it. The Splitter itself only handles
81
+ // the canvas + Component Navigator pair (which still need a draggable
82
+ // resize handle).
148
83
  const panels = [];
149
- if (showFormEditor && !formEditorCollapsed) {
150
- panels.push({
151
- name: "form",
152
- defaultSize: 300,
153
- collapsible: true,
154
- content: (_jsx("div", { className: cn("h-full w-full", noMargins ? "py-2" : "py-2 pl-2", formEditorCollapsed && "hidden"), children: _jsxs("div", { className: "border-gray-3 flex h-full w-full flex-col rounded-md border bg-white", children: [_jsx("div", { className: "flex-1", children: _jsx(EditorForm, { pageViewContext: pageViewContext, readonly: editContext?.mode !== "edit", compareView: compareView || false, onCollapse: collapseFormEditor }) }), _jsxs("div", { className: "flex items-center justify-between gap-1 p-1", children: [_jsx("div", { className: "p-1 text-xs text-gray-500", children: editContext?.statusMessage }), _jsx("div", { className: "flex gap-1", children: _jsx(SimpleIconButton, { "data-testid": "followEditsButton", icon: _jsx(StepForward, { className: "h-4 w-4", strokeWidth: 1 }), selected: followEdits, label: "Follow", onClick: () => setFollowEdits((f) => !f) }) })] })] }) })),
155
- });
156
- }
157
84
  panels.push({
158
85
  name: "frame",
159
86
  defaultSize: "auto",
@@ -170,6 +97,21 @@ export function PageViewer({ pageViewContext, showFormEditor, compareView, name,
170
97
  content: (_jsx("div", { className: cn("h-full w-full py-2 pl-2", !hasOuterRightPanel && "pr-2"), children: _jsxs("div", { className: "border-gray-3 flex h-full w-full flex-col rounded-md border bg-white", "data-testid": "slot-component-navigator", children: [_jsxs("div", { className: "border-gray-3 flex items-center border-b p-1.5 text-xs text-gray-500 uppercase", children: [_jsx("div", { className: "mr-2", children: _jsx(Layers, { className: "h-4 w-4", strokeWidth: 1 }) }), _jsx("div", { className: "mr-auto truncate", children: "Component Navigator" }), _jsx(SimpleIconButton, { onClick: () => editContext?.setComponentNavigatorOpenForSlot?.(slotContext?.slotId ?? null, false), icon: _jsx(X, { className: "size-4" }), label: "Close", className: "ml-2" })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: _jsx(ComponentTree, { pageViewContext: pageViewContext, itemDescriptor: treeItemDescriptor, item: treeItem, isLoading: treeIsLoading }) })] }) })),
171
98
  });
172
99
  }
173
- return (_jsx("div", { className: cn("h-full w-full", className), children: _jsx(Splitter, { panels: panels, splitterClassName: "bg-transparent -mr-2 md:w-[6px]", direction: editContext?.isMobile ? "vertical" : "horizontal", localStorageKey: "editor.pageViewer.panels.v2" }) }));
100
+ const isVertical = !!editContext?.isMobile;
101
+ const formPanelOpen = showFormEditor && !formEffectivelyHidden;
102
+ const formPanelWidth = EDITOR_FORM_DEFAULT_WIDTH;
103
+ return (_jsxs("div", { className: cn("flex h-full w-full", isVertical ? "flex-col" : "flex-row", className), children: [showFormEditor && (_jsx("div", { "data-testid": "editor-form-slider", "aria-hidden": !formPanelOpen, className: cn("relative shrink-0 overflow-hidden", "transition-[width,height,opacity] duration-200 ease-in-out motion-reduce:transition-none"), style: isVertical
104
+ ? {
105
+ width: "100%",
106
+ height: formPanelOpen ? formPanelWidth : 0,
107
+ opacity: formPanelOpen ? 1 : 0,
108
+ }
109
+ : {
110
+ height: "100%",
111
+ width: formPanelOpen ? formPanelWidth : 0,
112
+ opacity: formPanelOpen ? 1 : 0,
113
+ }, children: _jsx("div", { className: cn("h-full", noMargins ? "py-2" : "py-2 pl-2"), style: isVertical
114
+ ? { width: "100%", height: formPanelWidth }
115
+ : { width: formPanelWidth, height: "100%" }, children: _jsxs("div", { className: "border-gray-3 flex h-full w-full flex-col rounded-md border bg-white", children: [_jsx("div", { className: "flex-1 min-h-0", children: _jsx(EditorForm, { pageViewContext: pageViewContext, readonly: editContext?.mode !== "edit", compareView: compareView || false, onCollapse: collapseFormEditor }) }), _jsxs("div", { className: "flex items-center justify-between gap-1 p-1", children: [_jsx("div", { className: "p-1 text-xs text-gray-500", children: editContext?.statusMessage }), _jsx("div", { className: "flex gap-1", children: _jsx(SimpleIconButton, { "data-testid": "followEditsButton", icon: _jsx(StepForward, { className: "h-4 w-4", strokeWidth: 1 }), selected: followEdits, label: "Follow", onClick: () => setFollowEdits((f) => !f) }) })] })] }) }) })), _jsx("div", { className: "min-w-0 min-h-0 flex-1", children: _jsx(Splitter, { panels: panels, splitterClassName: "bg-transparent -mr-2 md:w-[6px]", direction: isVertical ? "vertical" : "horizontal", localStorageKey: "editor.pageViewer.panels.v2" }) })] }));
174
116
  }
175
117
  //# sourceMappingURL=PageViewer.js.map