@orion-studios/payload-studio 0.5.0-beta.95 → 0.5.0-beta.97

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.
@@ -6,7 +6,7 @@ import {
6
6
  } from "../chunk-ROTPP5CU.mjs";
7
7
 
8
8
  // src/studio-pages/builder/BuilderPageEditor.tsx
9
- import { useCallback, useEffect as useEffect4, useMemo as useMemo2, useRef as useRef2, useState as useState5 } from "react";
9
+ import { useCallback, useEffect as useEffect5, useMemo as useMemo2, useRef as useRef2, useState as useState6 } from "react";
10
10
 
11
11
  // src/blocks/blocks/sectionStyleFields.ts
12
12
  var sectionStyleDefaults = {
@@ -343,19 +343,33 @@ var resolveTypographyStyleFromSettings = (settings) => {
343
343
  };
344
344
 
345
345
  // src/studio-pages/builder/settings-v2/BlockInspectorRenderer.tsx
346
- import { useMemo, useState } from "react";
346
+ import { useMemo, useState as useState2 } from "react";
347
347
 
348
348
  // src/studio-pages/builder/ui/Accordion.tsx
349
+ import { useEffect, useState } from "react";
349
350
  import { jsx, jsxs } from "react/jsx-runtime";
350
351
  function Accordion({ children, defaultOpen = false, onToggle, open, subtitle, title }) {
351
352
  const controlled = typeof open === "boolean";
352
- const isOpen = controlled ? open : defaultOpen;
353
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
354
+ useEffect(() => {
355
+ if (!controlled) {
356
+ setUncontrolledOpen(defaultOpen);
357
+ }
358
+ }, [controlled, defaultOpen]);
359
+ const isOpen = controlled ? open : uncontrolledOpen;
360
+ const handleToggle = () => {
361
+ const next = !isOpen;
362
+ if (!controlled) {
363
+ setUncontrolledOpen(next);
364
+ }
365
+ onToggle?.(next);
366
+ };
353
367
  return /* @__PURE__ */ jsxs("article", { className: "orion-builder-settings-group", children: [
354
368
  /* @__PURE__ */ jsxs(
355
369
  "button",
356
370
  {
357
371
  className: "orion-builder-settings-group-header",
358
- onClick: () => onToggle?.(!isOpen),
372
+ onClick: handleToggle,
359
373
  type: "button",
360
374
  children: [
361
375
  /* @__PURE__ */ jsxs("span", { className: "orion-builder-settings-group-title-wrap", children: [
@@ -1012,7 +1026,7 @@ function BlockInspectorRenderer({
1012
1026
  onUpdateSetting,
1013
1027
  searchQuery
1014
1028
  }) {
1015
- const [expandedGroups, setExpandedGroups] = useState({
1029
+ const [expandedGroups, setExpandedGroups] = useState2({
1016
1030
  advanced: false,
1017
1031
  basics: false,
1018
1032
  layout: false,
@@ -1545,15 +1559,15 @@ var layoutToStudioDocument = (layout, title, metadata) => {
1545
1559
  };
1546
1560
 
1547
1561
  // src/studio-pages/builder/hooks/usePersistentSidebarPanel.ts
1548
- import { useEffect, useState as useState2 } from "react";
1562
+ import { useEffect as useEffect2, useState as useState3 } from "react";
1549
1563
 
1550
1564
  // src/studio-pages/builder/sidebar/types.ts
1551
1565
  var isSidebarPanelKey = (value) => value === "pageDefaults" || value === "addSections" || value === "selected";
1552
1566
 
1553
1567
  // src/studio-pages/builder/hooks/usePersistentSidebarPanel.ts
1554
1568
  function usePersistentSidebarPanel(pageID) {
1555
- const [activeSidebarPanel, setActiveSidebarPanel] = useState2("selected");
1556
- useEffect(() => {
1569
+ const [activeSidebarPanel, setActiveSidebarPanel] = useState3("selected");
1570
+ useEffect2(() => {
1557
1571
  const storageKey = `orion-builder-panels:${pageID}`;
1558
1572
  const raw = window.localStorage.getItem(storageKey);
1559
1573
  if (!raw) {
@@ -1579,7 +1593,7 @@ function usePersistentSidebarPanel(pageID) {
1579
1593
  } catch {
1580
1594
  }
1581
1595
  }, [pageID]);
1582
- useEffect(() => {
1596
+ useEffect2(() => {
1583
1597
  const storageKey = `orion-builder-panels:${pageID}`;
1584
1598
  window.localStorage.setItem(storageKey, JSON.stringify({ activePanel: activeSidebarPanel }));
1585
1599
  }, [activeSidebarPanel, pageID]);
@@ -1851,7 +1865,7 @@ function clonePresetBlocks(blocks) {
1851
1865
  }
1852
1866
 
1853
1867
  // src/studio-pages/builder/ui/InlineText.tsx
1854
- import { useEffect as useEffect2, useRef, useState as useState3 } from "react";
1868
+ import { useEffect as useEffect3, useRef, useState as useState4 } from "react";
1855
1869
  import { jsx as jsx5 } from "react/jsx-runtime";
1856
1870
  function InlineText({
1857
1871
  as = "p",
@@ -1862,7 +1876,7 @@ function InlineText({
1862
1876
  style,
1863
1877
  value
1864
1878
  }) {
1865
- const [editing, setEditing] = useState3(false);
1879
+ const [editing, setEditing] = useState4(false);
1866
1880
  const editableRef = useRef(null);
1867
1881
  const Tag = as;
1868
1882
  const normalizeValue = (raw) => {
@@ -1871,7 +1885,7 @@ function InlineText({
1871
1885
  }
1872
1886
  return raw.replace(/\r?\n/g, " ").replace(/\s+/g, " ").trim();
1873
1887
  };
1874
- useEffect2(() => {
1888
+ useEffect3(() => {
1875
1889
  if (!editing || !editableRef.current) {
1876
1890
  return;
1877
1891
  }
@@ -1949,7 +1963,7 @@ function UploadOverlay({ label = "Uploading image..." }) {
1949
1963
  }
1950
1964
 
1951
1965
  // src/studio-pages/builder/ui/BlockFrame.tsx
1952
- import { useEffect as useEffect3, useState as useState4 } from "react";
1966
+ import { useEffect as useEffect4, useState as useState5 } from "react";
1953
1967
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1954
1968
  function BlockFrame({
1955
1969
  children,
@@ -1961,14 +1975,14 @@ function BlockFrame({
1961
1975
  selected,
1962
1976
  setDragIndex
1963
1977
  }) {
1964
- const [dropPosition, setDropPosition] = useState4(null);
1965
- const [dropHovered, setDropHovered] = useState4(false);
1978
+ const [dropPosition, setDropPosition] = useState5(null);
1979
+ const [dropHovered, setDropHovered] = useState5(false);
1966
1980
  const isDragging = dragIndex === index;
1967
1981
  const isAnyDragging = dragIndex !== null;
1968
1982
  const isDropTarget = dragIndex !== null && dragIndex !== index && dropPosition !== null;
1969
1983
  const showDropBefore = isDropTarget && dropPosition === "before";
1970
1984
  const showDropAfter = isDropTarget && dropPosition === "after";
1971
- useEffect3(() => {
1985
+ useEffect4(() => {
1972
1986
  if (dragIndex === null) {
1973
1987
  setDropPosition(null);
1974
1988
  setDropHovered(false);
@@ -3899,31 +3913,31 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
3899
3913
  pageWidthDefault: sourceMetadata.pageWidthDefault === "wide" || sourceMetadata.pageWidthDefault === "full" ? sourceMetadata.pageWidthDefault : defaultPageDefaults.pageWidthDefault,
3900
3914
  themePage: isRecord6(sourceThemePage.page) ? sourceThemePage.page : {}
3901
3915
  };
3902
- const [layout, setLayout] = useState5(
3916
+ const [layout, setLayout] = useState6(
3903
3917
  migrateLayoutToSettingsV2(cloneBlockLayout(initialLayout).map((block) => withSectionStyleDefaults2(block)))
3904
3918
  );
3905
- const [pageDefaults, setPageDefaults] = useState5(clonePageDefaults(initialPageDefaults));
3906
- const [selectedIndex, setSelectedIndex] = useState5(null);
3907
- const [dragIndex, setDragIndex] = useState5(null);
3908
- const [sidebarOpen, setSidebarOpen] = useState5(true);
3909
- const [savingStatus, setSavingStatus] = useState5(null);
3910
- const [uploadingTarget, setUploadingTarget] = useState5(null);
3911
- const [topViewportHeight, setTopViewportHeight] = useState5(null);
3912
- const [uploadError, setUploadError] = useState5("");
3913
- const [uploadMessage, setUploadMessage] = useState5("");
3914
- const [uploadAltText, setUploadAltText] = useState5("");
3915
- const [mediaLibrary, setMediaLibrary] = useState5([]);
3916
- const [mediaLibraryError, setMediaLibraryError] = useState5("");
3917
- const [mediaLibraryLoading, setMediaLibraryLoading] = useState5(false);
3918
- const [selectedItemIndex, setSelectedItemIndex] = useState5(null);
3919
- const [expandedItemIndex, setExpandedItemIndex] = useState5(null);
3920
- const [testimonialsOffsets, setTestimonialsOffsets] = useState5({});
3921
- const [presetQuery, setPresetQuery] = useState5("");
3922
- const [sessionExpired, setSessionExpired] = useState5(false);
3923
- const [pastSnapshots, setPastSnapshots] = useState5([]);
3924
- const [futureSnapshots, setFutureSnapshots] = useState5([]);
3925
- const [settingsPanelMode, setSettingsPanelMode] = useState5("basic");
3926
- const [settingsSearchQuery, setSettingsSearchQuery] = useState5("");
3919
+ const [pageDefaults, setPageDefaults] = useState6(clonePageDefaults(initialPageDefaults));
3920
+ const [selectedIndex, setSelectedIndex] = useState6(null);
3921
+ const [dragIndex, setDragIndex] = useState6(null);
3922
+ const [sidebarOpen, setSidebarOpen] = useState6(true);
3923
+ const [savingStatus, setSavingStatus] = useState6(null);
3924
+ const [uploadingTarget, setUploadingTarget] = useState6(null);
3925
+ const [topViewportHeight, setTopViewportHeight] = useState6(null);
3926
+ const [uploadError, setUploadError] = useState6("");
3927
+ const [uploadMessage, setUploadMessage] = useState6("");
3928
+ const [uploadAltText, setUploadAltText] = useState6("");
3929
+ const [mediaLibrary, setMediaLibrary] = useState6([]);
3930
+ const [mediaLibraryError, setMediaLibraryError] = useState6("");
3931
+ const [mediaLibraryLoading, setMediaLibraryLoading] = useState6(false);
3932
+ const [selectedItemIndex, setSelectedItemIndex] = useState6(null);
3933
+ const [expandedItemIndex, setExpandedItemIndex] = useState6(null);
3934
+ const [testimonialsOffsets, setTestimonialsOffsets] = useState6({});
3935
+ const [presetQuery, setPresetQuery] = useState6("");
3936
+ const [sessionExpired, setSessionExpired] = useState6(false);
3937
+ const [pastSnapshots, setPastSnapshots] = useState6([]);
3938
+ const [futureSnapshots, setFutureSnapshots] = useState6([]);
3939
+ const [settingsPanelMode, setSettingsPanelMode] = useState6("basic");
3940
+ const [settingsSearchQuery, setSettingsSearchQuery] = useState6("");
3927
3941
  const { activeSidebarPanel, setActiveSidebarPanel } = usePersistentSidebarPanel(pageID);
3928
3942
  const historyBypassRef = useRef2(true);
3929
3943
  const previousSnapshotRef = useRef2({
@@ -3994,10 +4008,10 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
3994
4008
  setMediaLibraryLoading(false);
3995
4009
  }
3996
4010
  }, []);
3997
- useEffect4(() => {
4011
+ useEffect5(() => {
3998
4012
  void loadMediaLibrary();
3999
4013
  }, [loadMediaLibrary]);
4000
- useEffect4(() => {
4014
+ useEffect5(() => {
4001
4015
  const refreshMediaLibrary = () => {
4002
4016
  void loadMediaLibrary();
4003
4017
  };
@@ -4022,7 +4036,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4022
4036
  document.removeEventListener("visibilitychange", onVisibilityChange);
4023
4037
  };
4024
4038
  }, [loadMediaLibrary]);
4025
- useEffect4(() => {
4039
+ useEffect5(() => {
4026
4040
  let active = true;
4027
4041
  const checkSession = async () => {
4028
4042
  try {
@@ -4661,7 +4675,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4661
4675
  }),
4662
4676
  [layout, pageDefaults]
4663
4677
  );
4664
- useEffect4(() => {
4678
+ useEffect5(() => {
4665
4679
  const readTopViewportHeight = () => {
4666
4680
  if (typeof window === "undefined") {
4667
4681
  setTopViewportHeight(null);
@@ -4820,14 +4834,14 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4820
4834
  setSavingStatus(null);
4821
4835
  }
4822
4836
  };
4823
- useEffect4(() => {
4837
+ useEffect5(() => {
4824
4838
  if (selectedIndex === null) {
4825
4839
  return;
4826
4840
  }
4827
4841
  setSidebarOpen(true);
4828
4842
  setActiveSidebarPanel("selected");
4829
4843
  }, [selectedIndex]);
4830
- useEffect4(() => {
4844
+ useEffect5(() => {
4831
4845
  if (selectedIndex === null) {
4832
4846
  setSelectedItemIndex(null);
4833
4847
  setExpandedItemIndex(null);
@@ -4845,7 +4859,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4845
4859
  (current) => typeof current === "number" && current >= 0 && current < selectedItems.length ? current : 0
4846
4860
  );
4847
4861
  }, [selectedIndex, selectedItems.length]);
4848
- useEffect4(() => {
4862
+ useEffect5(() => {
4849
4863
  if (layout.length > 0) {
4850
4864
  return;
4851
4865
  }
@@ -4942,10 +4956,10 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4942
4956
  positionX: parsePercentNumber(selectedItemRecord.imagePositionX, 50),
4943
4957
  positionY: parsePercentNumber(selectedItemRecord.imagePositionY, 50)
4944
4958
  } : void 0;
4945
- useEffect4(() => {
4959
+ useEffect5(() => {
4946
4960
  return;
4947
4961
  }, [layout]);
4948
- useEffect4(() => {
4962
+ useEffect5(() => {
4949
4963
  if (historyBypassRef.current) {
4950
4964
  historyBypassRef.current = false;
4951
4965
  previousSnapshotRef.current = cloneSnapshot(currentSnapshot);
@@ -4956,7 +4970,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4956
4970
  setFutureSnapshots([]);
4957
4971
  previousSnapshotRef.current = cloneSnapshot(currentSnapshot);
4958
4972
  }, [currentSnapshot]);
4959
- useEffect4(() => {
4973
+ useEffect5(() => {
4960
4974
  const onKeyDown = (event) => {
4961
4975
  const key = event.key.toLowerCase();
4962
4976
  const isUndo = (event.metaKey || event.ctrlKey) && key === "z" && !event.shiftKey;
@@ -4974,7 +4988,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4974
4988
  window.addEventListener("keydown", onKeyDown);
4975
4989
  return () => window.removeEventListener("keydown", onKeyDown);
4976
4990
  }, [canRedo, canUndo, futureSnapshots, pastSnapshots, currentSnapshot]);
4977
- useEffect4(() => {
4991
+ useEffect5(() => {
4978
4992
  window.parent?.postMessage(
4979
4993
  {
4980
4994
  dirty: isDirty,
@@ -4984,7 +4998,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4984
4998
  "*"
4985
4999
  );
4986
5000
  }, [isDirty]);
4987
- useEffect4(() => {
5001
+ useEffect5(() => {
4988
5002
  window.parent?.postMessage(
4989
5003
  {
4990
5004
  canRedo,
@@ -4995,7 +5009,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
4995
5009
  "*"
4996
5010
  );
4997
5011
  }, [canRedo, canUndo]);
4998
- useEffect4(() => {
5012
+ useEffect5(() => {
4999
5013
  const onMessage = (event) => {
5000
5014
  const data = event.data;
5001
5015
  if (!data || data.source !== "payload-visual-builder-parent") {
@@ -5048,7 +5062,7 @@ function BuilderPageEditor({ featureFlags: _featureFlags, initialDoc, pageID, si
5048
5062
  window.addEventListener("message", onMessage);
5049
5063
  return () => window.removeEventListener("message", onMessage);
5050
5064
  }, [canRedo, canUndo, isDirty, layout, pageDefaults.pageWidthDefault, title]);
5051
- useEffect4(() => {
5065
+ useEffect5(() => {
5052
5066
  const preventNavigationWhileEditing = (event) => {
5053
5067
  const editorRoot = editorRootRef.current;
5054
5068
  if (!editorRoot) {
@@ -355,9 +355,10 @@ var resolveBuilderThemeTokens = (layers) => {
355
355
  };
356
356
 
357
357
  // src/studio-pages/builder/settings-v2/BlockInspectorRenderer.tsx
358
- var import_react = require("react");
358
+ var import_react2 = require("react");
359
359
 
360
360
  // src/studio-pages/builder/ui/Accordion.tsx
361
+ var import_react = require("react");
361
362
  var import_jsx_runtime = require("react/jsx-runtime");
362
363
 
363
364
  // src/studio-pages/builder/ui/ImageControls.tsx
@@ -8,7 +8,7 @@ import {
8
8
  pageStudioModuleManifest,
9
9
  resolveBuilderThemeTokens,
10
10
  studioDocumentToLayout
11
- } from "../chunk-SHC2KLT3.mjs";
11
+ } from "../chunk-C4J35SPJ.mjs";
12
12
  import "../chunk-SIL2J5MF.mjs";
13
13
  import "../chunk-6BWS3CLP.mjs";
14
14
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.5.0-beta.95",
3
+ "version": "0.5.0-beta.97",
4
4
  "description": "Unified Payload CMS toolkit for Orion Studios",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",