@measured/puck 0.14.3-canary.9a1cc7c → 0.15.0-canary.46aa8ff

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/index.js CHANGED
@@ -8033,9 +8033,9 @@ var require_react_dom_development = __commonJS({
8033
8033
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") {
8034
8034
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
8035
8035
  }
8036
- var React2 = require("react");
8036
+ var React3 = require("react");
8037
8037
  var Scheduler = require_scheduler();
8038
- var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
8038
+ var ReactSharedInternals = React3.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
8039
8039
  var suppressWarning = false;
8040
8040
  function setSuppressWarning(newSuppressWarning) {
8041
8041
  {
@@ -8084,7 +8084,7 @@ var require_react_dom_development = __commonJS({
8084
8084
  var HostPortal = 4;
8085
8085
  var HostComponent = 5;
8086
8086
  var HostText = 6;
8087
- var Fragment17 = 7;
8087
+ var Fragment18 = 7;
8088
8088
  var Mode = 8;
8089
8089
  var ContextConsumer = 9;
8090
8090
  var ContextProvider = 10;
@@ -9240,7 +9240,7 @@ var require_react_dom_development = __commonJS({
9240
9240
  return "DehydratedFragment";
9241
9241
  case ForwardRef:
9242
9242
  return getWrappedName$1(type, type.render, "ForwardRef");
9243
- case Fragment17:
9243
+ case Fragment18:
9244
9244
  return "Fragment";
9245
9245
  case HostComponent:
9246
9246
  return type;
@@ -9640,7 +9640,7 @@ var require_react_dom_development = __commonJS({
9640
9640
  {
9641
9641
  if (props.value == null) {
9642
9642
  if (typeof props.children === "object" && props.children !== null) {
9643
- React2.Children.forEach(props.children, function(child) {
9643
+ React3.Children.forEach(props.children, function(child) {
9644
9644
  if (child == null) {
9645
9645
  return;
9646
9646
  }
@@ -18087,7 +18087,7 @@ var require_react_dom_development = __commonJS({
18087
18087
  }
18088
18088
  }
18089
18089
  var fakeInternalInstance = {};
18090
- var emptyRefsObject = new React2.Component().refs;
18090
+ var emptyRefsObject = new React3.Component().refs;
18091
18091
  var didWarnAboutStateAssignmentForComponent;
18092
18092
  var didWarnAboutUninitializedState;
18093
18093
  var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;
@@ -18911,7 +18911,7 @@ var require_react_dom_development = __commonJS({
18911
18911
  }
18912
18912
  }
18913
18913
  function updateFragment2(returnFiber, current2, fragment, lanes, key) {
18914
- if (current2 === null || current2.tag !== Fragment17) {
18914
+ if (current2 === null || current2.tag !== Fragment18) {
18915
18915
  var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
18916
18916
  created.return = returnFiber;
18917
18917
  return created;
@@ -19314,7 +19314,7 @@ var require_react_dom_development = __commonJS({
19314
19314
  if (child.key === key) {
19315
19315
  var elementType = element.type;
19316
19316
  if (elementType === REACT_FRAGMENT_TYPE) {
19317
- if (child.tag === Fragment17) {
19317
+ if (child.tag === Fragment18) {
19318
19318
  deleteRemainingChildren(returnFiber, child.sibling);
19319
19319
  var existing = useFiber(child, element.props.children);
19320
19320
  existing.return = returnFiber;
@@ -23489,7 +23489,7 @@ var require_react_dom_development = __commonJS({
23489
23489
  var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
23490
23490
  return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);
23491
23491
  }
23492
- case Fragment17:
23492
+ case Fragment18:
23493
23493
  return updateFragment(current2, workInProgress2, renderLanes2);
23494
23494
  case Mode:
23495
23495
  return updateMode(current2, workInProgress2, renderLanes2);
@@ -23762,7 +23762,7 @@ var require_react_dom_development = __commonJS({
23762
23762
  case SimpleMemoComponent:
23763
23763
  case FunctionComponent:
23764
23764
  case ForwardRef:
23765
- case Fragment17:
23765
+ case Fragment18:
23766
23766
  case Mode:
23767
23767
  case Profiler:
23768
23768
  case ContextConsumer:
@@ -28021,7 +28021,7 @@ var require_react_dom_development = __commonJS({
28021
28021
  return fiber;
28022
28022
  }
28023
28023
  function createFiberFromFragment(elements, mode, lanes, key) {
28024
- var fiber = createFiber(Fragment17, elements, key, mode);
28024
+ var fiber = createFiber(Fragment18, elements, key, mode);
28025
28025
  fiber.lanes = lanes;
28026
28026
  return fiber;
28027
28027
  }
@@ -30528,7 +30528,7 @@ var IconButton = ({
30528
30528
 
30529
30529
  // components/Puck/index.tsx
30530
30530
  init_react_import();
30531
- var import_react28 = require("react");
30531
+ var import_react29 = require("react");
30532
30532
 
30533
30533
  // lib/use-placeholder-style.ts
30534
30534
  init_react_import();
@@ -31095,6 +31095,20 @@ var import_react13 = require("react");
31095
31095
 
31096
31096
  // lib/resolve-component-data.ts
31097
31097
  init_react_import();
31098
+
31099
+ // lib/get-changed.ts
31100
+ init_react_import();
31101
+ var getChanged = (newItem, oldItem) => {
31102
+ return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
31103
+ const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
31104
+ const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
31105
+ return __spreadProps(__spreadValues({}, acc), {
31106
+ [item]: oldItemProps[item] !== newItemProps[item]
31107
+ });
31108
+ }, {}) : {};
31109
+ };
31110
+
31111
+ // lib/resolve-component-data.ts
31098
31112
  var cache = { lastChange: {} };
31099
31113
  var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
31100
31114
  return yield Promise.all(
@@ -31111,25 +31125,15 @@ var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) =>
31111
31125
  var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
31112
31126
  const configForItem = config.components[item.type];
31113
31127
  if (configForItem.resolveData) {
31114
- let changed = Object.keys(item.props).reduce(
31115
- (acc, item2) => __spreadProps(__spreadValues({}, acc), { [item2]: true }),
31116
- {}
31117
- );
31118
- if (cache.lastChange[item.props.id]) {
31119
- const { item: oldItem, resolved } = cache.lastChange[item.props.id];
31120
- if (oldItem === item) {
31121
- return resolved;
31122
- }
31123
- Object.keys(item.props).forEach((propName) => {
31124
- if (oldItem.props[propName] === item.props[propName]) {
31125
- changed[propName] = false;
31126
- }
31127
- });
31128
+ const { item: oldItem = {}, resolved = {} } = cache.lastChange[item.props.id] || {};
31129
+ if (item && item === oldItem) {
31130
+ return resolved;
31128
31131
  }
31132
+ const changed = getChanged(item, oldItem);
31129
31133
  if (onResolveStart) {
31130
31134
  onResolveStart(item);
31131
31135
  }
31132
- const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed });
31136
+ const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed, lastData: oldItem });
31133
31137
  const { readOnly: existingReadOnly = {} } = item || {};
31134
31138
  const newReadOnly = __spreadValues(__spreadValues({}, existingReadOnly), readOnly);
31135
31139
  const resolvedItem = __spreadProps(__spreadValues({}, item), {
@@ -31172,26 +31176,16 @@ var applyDynamicProps = (data, dynamicProps, rootData) => {
31172
31176
  init_react_import();
31173
31177
  var cache2 = {};
31174
31178
  var resolveRootData = (data, config) => __async(void 0, null, function* () {
31175
- var _a, _b;
31179
+ var _a, _b, _c, _d, _e;
31176
31180
  if (((_a = config.root) == null ? void 0 : _a.resolveData) && data.root.props) {
31177
- let changed = Object.keys(data.root.props).reduce(
31178
- (acc, item) => __spreadProps(__spreadValues({}, acc), { [item]: true }),
31179
- {}
31180
- );
31181
- if (cache2.lastChange) {
31182
- const { original, resolved } = cache2.lastChange;
31183
- if (original === data.root) {
31184
- return resolved;
31185
- }
31186
- Object.keys(data.root.props).forEach((propName) => {
31187
- if (original.props[propName] === data.root.props[propName]) {
31188
- changed[propName] = false;
31189
- }
31190
- });
31181
+ if (((_b = cache2.lastChange) == null ? void 0 : _b.original) === data.root) {
31182
+ return cache2.lastChange.resolved;
31191
31183
  }
31184
+ const changed = getChanged(data.root, (_c = cache2.lastChange) == null ? void 0 : _c.original);
31192
31185
  const rootWithProps = data.root;
31193
- const resolvedRoot = yield (_b = config.root) == null ? void 0 : _b.resolveData(rootWithProps, {
31194
- changed
31186
+ const resolvedRoot = yield (_e = config.root) == null ? void 0 : _e.resolveData(rootWithProps, {
31187
+ changed,
31188
+ lastData: ((_d = cache2.lastChange) == null ? void 0 : _d.original) || {}
31195
31189
  });
31196
31190
  cache2.lastChange = {
31197
31191
  original: data.root,
@@ -31213,7 +31207,7 @@ var useResolvedData = (appState, config, dispatch) => {
31213
31207
  const [componentState, setComponentState] = (0, import_react13.useState)({});
31214
31208
  const deferredSetStates = {};
31215
31209
  const setComponentLoading = (0, import_react13.useCallback)(
31216
- (id, loading, defer = 0) => {
31210
+ (id, loading, defer2 = 0) => {
31217
31211
  if (deferredSetStates[id]) {
31218
31212
  clearTimeout(deferredSetStates[id]);
31219
31213
  delete deferredSetStates[id];
@@ -31223,7 +31217,7 @@ var useResolvedData = (appState, config, dispatch) => {
31223
31217
  [id]: __spreadProps(__spreadValues({}, prev[id]), { loading })
31224
31218
  }));
31225
31219
  delete deferredSetStates[id];
31226
- }, defer);
31220
+ }, defer2);
31227
31221
  },
31228
31222
  []
31229
31223
  );
@@ -31354,17 +31348,7 @@ var MenuBar = ({
31354
31348
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: renderHeaderActions && renderHeaderActions({
31355
31349
  state: appState,
31356
31350
  dispatch
31357
- }) }),
31358
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
31359
- Button,
31360
- {
31361
- onClick: () => {
31362
- onPublish && onPublish(data);
31363
- },
31364
- icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Globe, { size: "14px" }),
31365
- children: "Publish"
31366
- }
31367
- ) })
31351
+ }) })
31368
31352
  ] })
31369
31353
  }
31370
31354
  );
@@ -32331,7 +32315,7 @@ var InputOrGroup = (_a) => {
32331
32315
 
32332
32316
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Fields/styles.module.css#css-module
32333
32317
  init_react_import();
32334
- var styles_module_default14 = { "PuckFields": "_PuckFields_17k3p_1", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_17k3p_6" };
32318
+ var styles_module_default14 = { "PuckFields": "_PuckFields_1o0if_1", "PuckFields--isLoading": "_PuckFields--isLoading_1o0if_6", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_1o0if_10" };
32335
32319
 
32336
32320
  // components/Puck/components/Fields/index.tsx
32337
32321
  var import_react19 = require("react");
@@ -32344,13 +32328,73 @@ var DefaultFields = ({
32344
32328
  children,
32345
32329
  isLoading
32346
32330
  }) => {
32347
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: getClassName19(), children: [
32331
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: getClassName19({ isLoading }), children: [
32348
32332
  children,
32349
32333
  isLoading && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: getClassName19("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_spinners6.ClipLoader, { "aria-label": "loading" }) })
32350
32334
  ] });
32351
32335
  };
32336
+ var useResolvedFields = () => {
32337
+ var _a;
32338
+ const { selectedItem, state, config } = useAppContext();
32339
+ const { data } = state;
32340
+ const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
32341
+ const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
32342
+ const defaultFields = selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields;
32343
+ const rootProps = data.root.props || data.root;
32344
+ const [lastSelectedData, setLastSelectedData] = (0, import_react19.useState)(
32345
+ {}
32346
+ );
32347
+ const [resolvedFields, setResolvedFields] = (0, import_react19.useState)(defaultFields || {});
32348
+ const [fieldsLoading, setFieldsLoading] = (0, import_react19.useState)(false);
32349
+ const defaultResolveFields = (_componentData, _params) => defaultFields;
32350
+ const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
32351
+ const resolveFields = (0, import_react19.useCallback)(
32352
+ (..._0) => __async(void 0, [..._0], function* (fields = {}) {
32353
+ var _a2, _b, _c;
32354
+ const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : {};
32355
+ const changed = getChanged(componentData, lastData);
32356
+ setLastSelectedData(componentData);
32357
+ if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields)) {
32358
+ return yield componentConfig == null ? void 0 : componentConfig.resolveFields(
32359
+ componentData,
32360
+ {
32361
+ changed,
32362
+ fields,
32363
+ lastFields: resolvedFields,
32364
+ lastData,
32365
+ appState: state
32366
+ }
32367
+ );
32368
+ }
32369
+ if (!selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields)) {
32370
+ return yield (_c = config.root) == null ? void 0 : _c.resolveFields(componentData, {
32371
+ changed,
32372
+ fields,
32373
+ lastFields: resolvedFields,
32374
+ lastData,
32375
+ appState: state
32376
+ });
32377
+ }
32378
+ return defaultResolveFields(componentData, {
32379
+ changed,
32380
+ fields,
32381
+ lastFields: resolvedFields,
32382
+ lastData
32383
+ });
32384
+ }),
32385
+ [data, config, componentData, selectedItem, resolvedFields, state]
32386
+ );
32387
+ (0, import_react19.useEffect)(() => {
32388
+ setFieldsLoading(true);
32389
+ resolveFields(defaultFields).then((fields) => {
32390
+ setResolvedFields(fields || {});
32391
+ setFieldsLoading(false);
32392
+ });
32393
+ }, [data, defaultFields]);
32394
+ return [resolvedFields, fieldsLoading];
32395
+ };
32352
32396
  var Fields = () => {
32353
- var _a, _b, _c, _d;
32397
+ var _a, _b;
32354
32398
  const {
32355
32399
  selectedItem,
32356
32400
  state,
@@ -32362,9 +32406,9 @@ var Fields = () => {
32362
32406
  } = useAppContext();
32363
32407
  const { data, ui } = state;
32364
32408
  const { itemSelector } = ui;
32365
- const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
32366
- const fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
32367
- const isLoading = selectedItem ? (_c = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _c.loading : (_d = componentState["puck-root"]) == null ? void 0 : _d.loading;
32409
+ const [fields, fieldsResolving] = useResolvedFields();
32410
+ const componentResolving = selectedItem ? (_a = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _a.loading : (_b = componentState["puck-root"]) == null ? void 0 : _b.loading;
32411
+ const isLoading = fieldsResolving || componentResolving;
32368
32412
  const rootProps = data.root.props || data.root;
32369
32413
  const Wrapper = (0, import_react19.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
32370
32414
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
@@ -32376,6 +32420,8 @@ var Fields = () => {
32376
32420
  },
32377
32421
  children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Wrapper, { isLoading, itemSelector, children: Object.keys(fields).map((fieldName) => {
32378
32422
  const field = fields[fieldName];
32423
+ if (!(field == null ? void 0 : field.type))
32424
+ return null;
32379
32425
  const onChange = (value, updatedUi) => {
32380
32426
  var _a2, _b2;
32381
32427
  let currentProps;
@@ -32627,19 +32673,218 @@ var Components = () => {
32627
32673
 
32628
32674
  // components/Puck/components/Preview/index.tsx
32629
32675
  init_react_import();
32630
- var import_react22 = require("react");
32631
- var import_auto_frame_component = __toESM(require("@measured/auto-frame-component"));
32676
+ var import_react23 = require("react");
32677
+
32678
+ // components/AutoFrame/index.tsx
32679
+ init_react_import();
32680
+ var import_react22 = __toESM(require("react"));
32681
+ var import_react_frame_component = __toESM(require("react-frame-component"));
32682
+ var import_object_hash = __toESM(require("object-hash"));
32683
+ var import_jsx_runtime29 = require("react/jsx-runtime");
32684
+ var styleSelector = 'style, link[rel="stylesheet"]';
32685
+ var collectStyles = (doc) => {
32686
+ const collected = [];
32687
+ doc.head.querySelectorAll(styleSelector).forEach((style) => {
32688
+ collected.push(style);
32689
+ });
32690
+ return collected;
32691
+ };
32692
+ var getStyleSheet = (el) => {
32693
+ return Array.from(document.styleSheets).find((ss) => {
32694
+ const ownerNode = ss.ownerNode;
32695
+ return ownerNode.href === el.href;
32696
+ });
32697
+ };
32698
+ var getStyles = (styleSheet) => {
32699
+ if (styleSheet) {
32700
+ try {
32701
+ return [...styleSheet.cssRules].map((rule) => rule.cssText).join("");
32702
+ } catch (e) {
32703
+ console.warn(
32704
+ "Access to stylesheet %s is denied. Ignoring\u2026",
32705
+ styleSheet.href
32706
+ );
32707
+ }
32708
+ }
32709
+ return "";
32710
+ };
32711
+ var defer = (fn) => setTimeout(fn, 0);
32712
+ var CopyHostStyles = ({
32713
+ children,
32714
+ debug = false,
32715
+ onStylesLoaded = () => null
32716
+ }) => {
32717
+ const { document: doc, window: win } = (0, import_react_frame_component.useFrame)();
32718
+ (0, import_react22.useEffect)(() => {
32719
+ if (!win || !doc) {
32720
+ return () => {
32721
+ };
32722
+ }
32723
+ let elements = [];
32724
+ const hashes = {};
32725
+ const lookupEl = (el) => elements.findIndex((elementMap) => elementMap.original === el);
32726
+ const mirrorEl = (el, inlineStyles = false) => __async(void 0, null, function* () {
32727
+ let mirror;
32728
+ if (el.nodeName === "LINK" && inlineStyles) {
32729
+ mirror = document.createElement("style");
32730
+ mirror.type = "text/css";
32731
+ let styleSheet = getStyleSheet(el);
32732
+ if (!styleSheet) {
32733
+ yield new Promise((resolve) => {
32734
+ const fn = () => {
32735
+ resolve();
32736
+ el.removeEventListener("load", fn);
32737
+ };
32738
+ el.addEventListener("load", fn);
32739
+ });
32740
+ styleSheet = getStyleSheet(el);
32741
+ }
32742
+ const styles = getStyles(styleSheet);
32743
+ if (!styles) {
32744
+ if (debug) {
32745
+ console.warn(
32746
+ `Tried to load styles for link element, but couldn't find them. Skipping...`
32747
+ );
32748
+ }
32749
+ return;
32750
+ }
32751
+ mirror.innerHTML = styles;
32752
+ mirror.setAttribute("data-href", el.getAttribute("href"));
32753
+ } else {
32754
+ mirror = el.cloneNode(true);
32755
+ }
32756
+ return mirror;
32757
+ });
32758
+ const addEl = (el) => __async(void 0, null, function* () {
32759
+ const index = lookupEl(el);
32760
+ if (index > -1) {
32761
+ if (debug)
32762
+ console.log(
32763
+ `Tried to add an element that was already mirrored. Updating instead...`
32764
+ );
32765
+ elements[index].mirror.innerText = el.innerText;
32766
+ return;
32767
+ }
32768
+ const mirror = yield mirrorEl(el);
32769
+ if (!mirror) {
32770
+ return;
32771
+ }
32772
+ const elHash = (0, import_object_hash.default)(mirror.outerHTML);
32773
+ if (hashes[elHash]) {
32774
+ if (debug)
32775
+ console.log(
32776
+ `iframe already contains element that is being mirrored. Skipping...`
32777
+ );
32778
+ return;
32779
+ }
32780
+ hashes[elHash] = true;
32781
+ doc.head.append(mirror);
32782
+ elements.push({ original: el, mirror });
32783
+ if (debug)
32784
+ console.log(`Added style node ${el.outerHTML}`);
32785
+ });
32786
+ const removeEl = (el) => {
32787
+ var _a, _b;
32788
+ const index = lookupEl(el);
32789
+ if (index === -1) {
32790
+ if (debug)
32791
+ console.log(
32792
+ `Tried to remove an element that did not exist. Skipping...`
32793
+ );
32794
+ return;
32795
+ }
32796
+ const elHash = (0, import_object_hash.default)(el.outerHTML);
32797
+ (_b = (_a = elements[index]) == null ? void 0 : _a.mirror) == null ? void 0 : _b.remove();
32798
+ delete hashes[elHash];
32799
+ if (debug)
32800
+ console.log(`Removed style node ${el.outerHTML}`);
32801
+ };
32802
+ const observer = new MutationObserver((mutations) => {
32803
+ mutations.forEach((mutation) => {
32804
+ if (mutation.type === "childList") {
32805
+ mutation.addedNodes.forEach((node) => {
32806
+ if (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE) {
32807
+ const el = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
32808
+ if (el && el.matches(styleSelector)) {
32809
+ defer(() => addEl(el));
32810
+ }
32811
+ }
32812
+ });
32813
+ mutation.removedNodes.forEach((node) => {
32814
+ if (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE) {
32815
+ const el = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
32816
+ if (el && el.matches(styleSelector)) {
32817
+ defer(() => removeEl(el));
32818
+ }
32819
+ }
32820
+ });
32821
+ }
32822
+ });
32823
+ });
32824
+ const parentDocument = win.parent.document;
32825
+ const collectedStyles = collectStyles(parentDocument);
32826
+ const hrefs = [];
32827
+ let stylesLoaded = 0;
32828
+ Promise.all(
32829
+ collectedStyles.map((styleNode, i) => __async(void 0, null, function* () {
32830
+ if (styleNode.nodeName === "LINK") {
32831
+ const linkHref = styleNode.href;
32832
+ if (hrefs.indexOf(linkHref) > -1) {
32833
+ return;
32834
+ }
32835
+ hrefs.push(linkHref);
32836
+ }
32837
+ const mirror = yield mirrorEl(styleNode);
32838
+ if (!mirror)
32839
+ return;
32840
+ elements.push({ original: styleNode, mirror });
32841
+ return mirror;
32842
+ }))
32843
+ ).then((mirrorStyles) => {
32844
+ const filtered = mirrorStyles.filter(
32845
+ (el) => typeof el !== "undefined"
32846
+ );
32847
+ filtered.forEach((mirror) => {
32848
+ mirror.onload = () => {
32849
+ stylesLoaded = stylesLoaded + 1;
32850
+ if (stylesLoaded >= elements.length) {
32851
+ onStylesLoaded();
32852
+ }
32853
+ };
32854
+ });
32855
+ doc.head.innerHTML = "";
32856
+ doc.head.append(...filtered);
32857
+ observer.observe(parentDocument.head, { childList: true, subtree: true });
32858
+ filtered.forEach((el) => {
32859
+ const elHash = (0, import_object_hash.default)(el.outerHTML);
32860
+ hashes[elHash] = true;
32861
+ });
32862
+ });
32863
+ return () => {
32864
+ observer.disconnect();
32865
+ };
32866
+ }, []);
32867
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jsx_runtime29.Fragment, { children });
32868
+ };
32869
+ var AutoFrameComponent = import_react22.default.forwardRef(
32870
+ function(_a, ref) {
32871
+ var _b = _a, { children, debug, onStylesLoaded } = _b, props = __objRest(_b, ["children", "debug", "onStylesLoaded"]);
32872
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_frame_component.default, __spreadProps(__spreadValues({}, props), { ref, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CopyHostStyles, { debug, onStylesLoaded, children }) }));
32873
+ }
32874
+ );
32875
+ AutoFrameComponent.displayName = "AutoFrameComponent";
32876
+ var AutoFrame_default = AutoFrameComponent;
32632
32877
 
32633
32878
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Preview/styles.module.css#css-module
32634
32879
  init_react_import();
32635
32880
  var styles_module_default16 = { "PuckPreview": "_PuckPreview_rxwlr_1", "PuckPreview-frame": "_PuckPreview-frame_rxwlr_5" };
32636
32881
 
32637
32882
  // components/Puck/components/Preview/index.tsx
32638
- var import_jsx_runtime29 = require("react/jsx-runtime");
32883
+ var import_jsx_runtime30 = require("react/jsx-runtime");
32639
32884
  var getClassName21 = get_class_name_factory_default("PuckPreview", styles_module_default16);
32640
32885
  var Preview = ({ id = "puck-preview" }) => {
32641
32886
  const { config, dispatch, state, setStatus, iframe } = useAppContext();
32642
- const Page = (0, import_react22.useCallback)(
32887
+ const Page = (0, import_react23.useCallback)(
32643
32888
  (pageProps) => {
32644
32889
  var _a, _b;
32645
32890
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadProps(__spreadValues({
@@ -32647,13 +32892,13 @@ var Preview = ({ id = "puck-preview" }) => {
32647
32892
  }, pageProps), {
32648
32893
  editMode: true,
32649
32894
  puck: { renderDropZone: DropZone }
32650
- })) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jsx_runtime29.Fragment, { children: pageProps.children });
32895
+ })) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children: pageProps.children });
32651
32896
  },
32652
32897
  [config.root]
32653
32898
  );
32654
32899
  const rootProps = state.data.root.props || state.data.root;
32655
- const ref = (0, import_react22.useRef)(null);
32656
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
32900
+ const ref = (0, import_react23.useRef)(null);
32901
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
32657
32902
  "div",
32658
32903
  {
32659
32904
  className: getClassName21(),
@@ -32661,8 +32906,8 @@ var Preview = ({ id = "puck-preview" }) => {
32661
32906
  onClick: () => {
32662
32907
  dispatch({ type: "setUi", ui: __spreadProps(__spreadValues({}, state.ui), { itemSelector: null }) });
32663
32908
  },
32664
- children: iframe.enabled ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
32665
- import_auto_frame_component.default,
32909
+ children: iframe.enabled ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
32910
+ AutoFrame_default,
32666
32911
  {
32667
32912
  id: "preview-frame",
32668
32913
  className: getClassName21("frame"),
@@ -32671,9 +32916,9 @@ var Preview = ({ id = "puck-preview" }) => {
32671
32916
  onStylesLoaded: () => {
32672
32917
  setStatus("READY");
32673
32918
  },
32674
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DropZone, { zone: rootDroppableId }) }))
32919
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropZone, { zone: rootDroppableId }) }))
32675
32920
  }
32676
- ) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { id: "preview-frame", className: getClassName21("frame"), children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DropZone, { zone: rootDroppableId }) })) })
32921
+ ) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { id: "preview-frame", className: getClassName21("frame"), children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DropZone, { zone: rootDroppableId }) })) })
32677
32922
  }
32678
32923
  );
32679
32924
  };
@@ -32721,7 +32966,7 @@ var scrollIntoView = (el) => {
32721
32966
  };
32722
32967
 
32723
32968
  // components/LayerTree/index.tsx
32724
- var import_react23 = require("react");
32969
+ var import_react24 = require("react");
32725
32970
 
32726
32971
  // lib/is-child-of-zone.ts
32727
32972
  init_react_import();
@@ -32735,7 +32980,7 @@ var isChildOfZone = (item, maybeChild, ctx) => {
32735
32980
  };
32736
32981
 
32737
32982
  // components/LayerTree/index.tsx
32738
- var import_jsx_runtime30 = require("react/jsx-runtime");
32983
+ var import_jsx_runtime31 = require("react/jsx-runtime");
32739
32984
  var getClassName22 = get_class_name_factory_default("LayerTree", styles_module_default17);
32740
32985
  var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default17);
32741
32986
  var LayerTree = ({
@@ -32748,15 +32993,15 @@ var LayerTree = ({
32748
32993
  label
32749
32994
  }) => {
32750
32995
  const zones = data.zones || {};
32751
- const ctx = (0, import_react23.useContext)(dropZoneContext);
32752
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
32753
- label && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: getClassName22("zoneTitle"), children: [
32754
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassName22("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Layers, { size: "16" }) }),
32996
+ const ctx = (0, import_react24.useContext)(dropZoneContext);
32997
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
32998
+ label && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: getClassName22("zoneTitle"), children: [
32999
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassName22("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Layers, { size: "16" }) }),
32755
33000
  " ",
32756
33001
  label
32757
33002
  ] }),
32758
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("ul", { className: getClassName22(), children: [
32759
- zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassName22("helper"), children: "No items" }),
33003
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("ul", { className: getClassName22(), children: [
33004
+ zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassName22("helper"), children: "No items" }),
32760
33005
  zoneContent.map((item, i) => {
32761
33006
  var _a;
32762
33007
  const isSelected = (itemSelector == null ? void 0 : itemSelector.index) === i && (itemSelector.zone === zone || itemSelector.zone === rootDroppableId && !zone);
@@ -32772,7 +33017,7 @@ var LayerTree = ({
32772
33017
  const selectedItem = itemSelector && data ? getItem(itemSelector, data) : null;
32773
33018
  const isHovering = hoveringComponent === item.props.id;
32774
33019
  const childIsSelected = isChildOfZone(item, selectedItem, ctx);
32775
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
33020
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
32776
33021
  "li",
32777
33022
  {
32778
33023
  className: getClassNameLayer({
@@ -32782,7 +33027,7 @@ var LayerTree = ({
32782
33027
  childIsSelected
32783
33028
  }),
32784
33029
  children: [
32785
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
33030
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
32786
33031
  "button",
32787
33032
  {
32788
33033
  className: getClassNameLayer("clickable"),
@@ -32814,22 +33059,22 @@ var LayerTree = ({
32814
33059
  setHoveringComponent(null);
32815
33060
  },
32816
33061
  children: [
32817
- containsZone && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
33062
+ containsZone && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
32818
33063
  "div",
32819
33064
  {
32820
33065
  className: getClassNameLayer("chevron"),
32821
33066
  title: isSelected ? "Collapse" : "Expand",
32822
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ChevronDown, { size: "12" })
33067
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ChevronDown, { size: "12" })
32823
33068
  }
32824
33069
  ),
32825
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: getClassNameLayer("title"), children: [
32826
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Type, { size: "16" }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LayoutGrid, { size: "16" }) }),
32827
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassNameLayer("name"), children: (_a = config.components[item.type]["label"]) != null ? _a : item.type })
33070
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: getClassNameLayer("title"), children: [
33071
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Type, { size: "16" }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(LayoutGrid, { size: "16" }) }),
33072
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassNameLayer("name"), children: (_a = config.components[item.type]["label"]) != null ? _a : item.type })
32828
33073
  ] })
32829
33074
  ]
32830
33075
  }
32831
33076
  ) }),
32832
- containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
33077
+ containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
32833
33078
  LayerTree,
32834
33079
  {
32835
33080
  config,
@@ -32851,13 +33096,13 @@ var LayerTree = ({
32851
33096
  };
32852
33097
 
32853
33098
  // components/Puck/components/Outline/index.tsx
32854
- var import_react24 = require("react");
32855
- var import_jsx_runtime31 = require("react/jsx-runtime");
33099
+ var import_react25 = require("react");
33100
+ var import_jsx_runtime32 = require("react/jsx-runtime");
32856
33101
  var Outline = () => {
32857
33102
  const { dispatch, state, overrides, config } = useAppContext();
32858
33103
  const { data, ui } = state;
32859
33104
  const { itemSelector } = ui;
32860
- const setItemSelector = (0, import_react24.useCallback)(
33105
+ const setItemSelector = (0, import_react25.useCallback)(
32861
33106
  (newItemSelector) => {
32862
33107
  dispatch({
32863
33108
  type: "setUi",
@@ -32866,9 +33111,9 @@ var Outline = () => {
32866
33111
  },
32867
33112
  []
32868
33113
  );
32869
- const Wrapper = (0, import_react24.useMemo)(() => overrides.outline || "div", [overrides]);
32870
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
32871
- (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
33114
+ const Wrapper = (0, import_react25.useMemo)(() => overrides.outline || "div", [overrides]);
33115
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
33116
+ (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
32872
33117
  LayerTree,
32873
33118
  {
32874
33119
  config,
@@ -32881,7 +33126,7 @@ var Outline = () => {
32881
33126
  ),
32882
33127
  Object.entries(findZonesForArea(data, "root")).map(
32883
33128
  ([zoneKey, zone]) => {
32884
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
33129
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
32885
33130
  LayerTree,
32886
33131
  {
32887
33132
  config,
@@ -32966,12 +33211,12 @@ function usePuckHistory({
32966
33211
 
32967
33212
  // lib/use-history-store.ts
32968
33213
  init_react_import();
32969
- var import_react25 = require("react");
33214
+ var import_react26 = require("react");
32970
33215
  var import_use_debounce3 = require("use-debounce");
32971
33216
  var EMPTY_HISTORY_INDEX = -1;
32972
33217
  function useHistoryStore() {
32973
- const [histories, setHistories] = (0, import_react25.useState)([]);
32974
- const [index, setIndex] = (0, import_react25.useState)(EMPTY_HISTORY_INDEX);
33218
+ const [histories, setHistories] = (0, import_react26.useState)([]);
33219
+ const [index, setIndex] = (0, import_react26.useState)(EMPTY_HISTORY_INDEX);
32975
33220
  const hasPast = index > EMPTY_HISTORY_INDEX;
32976
33221
  const hasFuture = index < histories.length - 1;
32977
33222
  const currentHistory = histories[index];
@@ -33131,22 +33376,22 @@ var getBox = function getBox2(el) {
33131
33376
  };
33132
33377
 
33133
33378
  // components/Puck/components/Canvas/index.tsx
33134
- var import_react27 = require("react");
33379
+ var import_react28 = require("react");
33135
33380
 
33136
33381
  // components/ViewportControls/index.tsx
33137
33382
  init_react_import();
33138
- var import_react26 = require("react");
33383
+ var import_react27 = require("react");
33139
33384
 
33140
33385
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
33141
33386
  init_react_import();
33142
33387
  var styles_module_default18 = { "ViewportControls": "_ViewportControls_3zdvn_1", "ViewportControls-divider": "_ViewportControls-divider_3zdvn_15", "ViewportControls-zoomSelect": "_ViewportControls-zoomSelect_3zdvn_21", "ViewportButton--isActive": "_ViewportButton--isActive_3zdvn_33", "ViewportButton-inner": "_ViewportButton-inner_3zdvn_33" };
33143
33388
 
33144
33389
  // components/ViewportControls/index.tsx
33145
- var import_jsx_runtime32 = require("react/jsx-runtime");
33390
+ var import_jsx_runtime33 = require("react/jsx-runtime");
33146
33391
  var icons = {
33147
- Smartphone: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Smartphone, { size: 16 }),
33148
- Tablet: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Tablet, { size: 16 }),
33149
- Monitor: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Monitor, { size: 16 })
33392
+ Smartphone: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Smartphone, { size: 16 }),
33393
+ Tablet: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Tablet, { size: 16 }),
33394
+ Monitor: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Monitor, { size: 16 })
33150
33395
  };
33151
33396
  var getClassName23 = get_class_name_factory_default("ViewportControls", styles_module_default18);
33152
33397
  var getClassNameButton = get_class_name_factory_default("ViewportButton", styles_module_default18);
@@ -33158,11 +33403,11 @@ var ViewportButton = ({
33158
33403
  onClick
33159
33404
  }) => {
33160
33405
  const { state } = useAppContext();
33161
- const [isActive, setIsActive] = (0, import_react26.useState)(false);
33162
- (0, import_react26.useEffect)(() => {
33406
+ const [isActive, setIsActive] = (0, import_react27.useState)(false);
33407
+ (0, import_react27.useEffect)(() => {
33163
33408
  setIsActive(width === state.ui.viewports.current.width);
33164
33409
  }, [width, state.ui.viewports.current.width]);
33165
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33410
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33166
33411
  IconButton,
33167
33412
  {
33168
33413
  title,
@@ -33171,7 +33416,7 @@ var ViewportButton = ({
33171
33416
  e.stopPropagation();
33172
33417
  onClick({ width, height });
33173
33418
  },
33174
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: getClassNameButton("inner"), children })
33419
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: getClassNameButton("inner"), children })
33175
33420
  }
33176
33421
  ) });
33177
33422
  };
@@ -33195,7 +33440,7 @@ var ViewportControls = ({
33195
33440
  const defaultsContainAutoZoom = defaultZoomOptions.find(
33196
33441
  (option) => option.value === autoZoom
33197
33442
  );
33198
- const zoomOptions = (0, import_react26.useMemo)(
33443
+ const zoomOptions = (0, import_react27.useMemo)(
33199
33444
  () => [
33200
33445
  ...defaultZoomOptions,
33201
33446
  ...defaultsContainAutoZoom ? [] : [
@@ -33207,8 +33452,8 @@ var ViewportControls = ({
33207
33452
  ].filter((a) => a.value <= autoZoom).sort((a, b) => a.value > b.value ? 1 : -1),
33208
33453
  [autoZoom]
33209
33454
  );
33210
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: getClassName23(), children: [
33211
- viewports.map((viewport, i) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33455
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: getClassName23(), children: [
33456
+ viewports.map((viewport, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33212
33457
  ViewportButton,
33213
33458
  {
33214
33459
  height: viewport.height,
@@ -33219,8 +33464,8 @@ var ViewportControls = ({
33219
33464
  },
33220
33465
  i
33221
33466
  )),
33222
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: getClassName23("divider") }),
33223
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33467
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: getClassName23("divider") }),
33468
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33224
33469
  IconButton,
33225
33470
  {
33226
33471
  title: "Zoom viewport out",
@@ -33234,10 +33479,10 @@ var ViewportControls = ({
33234
33479
  )].value
33235
33480
  );
33236
33481
  },
33237
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ZoomOut, { size: 16 })
33482
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ZoomOut, { size: 16 })
33238
33483
  }
33239
33484
  ),
33240
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33485
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33241
33486
  IconButton,
33242
33487
  {
33243
33488
  title: "Zoom viewport in",
@@ -33251,11 +33496,11 @@ var ViewportControls = ({
33251
33496
  )].value
33252
33497
  );
33253
33498
  },
33254
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ZoomIn, { size: 16 })
33499
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ZoomIn, { size: 16 })
33255
33500
  }
33256
33501
  ),
33257
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: getClassName23("divider") }),
33258
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33502
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: getClassName23("divider") }),
33503
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33259
33504
  "select",
33260
33505
  {
33261
33506
  className: getClassName23("zoomSelect"),
@@ -33263,7 +33508,7 @@ var ViewportControls = ({
33263
33508
  onChange: (e) => {
33264
33509
  onZoom(parseFloat(e.currentTarget.value));
33265
33510
  },
33266
- children: zoomOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
33511
+ children: zoomOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33267
33512
  "option",
33268
33513
  {
33269
33514
  value: option.value,
@@ -33311,24 +33556,24 @@ var getZoomConfig = (uiViewport, frame, zoom) => {
33311
33556
  };
33312
33557
 
33313
33558
  // components/Puck/components/Canvas/index.tsx
33314
- var import_jsx_runtime33 = require("react/jsx-runtime");
33559
+ var import_jsx_runtime34 = require("react/jsx-runtime");
33315
33560
  var getClassName24 = get_class_name_factory_default("PuckCanvas", styles_module_default19);
33316
33561
  var ZOOM_ON_CHANGE = true;
33317
33562
  var Canvas = () => {
33318
33563
  const { status, iframe } = useAppContext();
33319
33564
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
33320
33565
  const { ui } = state;
33321
- const frameRef = (0, import_react27.useRef)(null);
33322
- const [showTransition, setShowTransition] = (0, import_react27.useState)(false);
33323
- const defaultRender = (0, import_react27.useMemo)(() => {
33324
- const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment, { children });
33566
+ const frameRef = (0, import_react28.useRef)(null);
33567
+ const [showTransition, setShowTransition] = (0, import_react28.useState)(false);
33568
+ const defaultRender = (0, import_react28.useMemo)(() => {
33569
+ const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children });
33325
33570
  return PuckDefault;
33326
33571
  }, []);
33327
- const CustomPreview = (0, import_react27.useMemo)(
33572
+ const CustomPreview = (0, import_react28.useMemo)(
33328
33573
  () => overrides.preview || defaultRender,
33329
33574
  [overrides]
33330
33575
  );
33331
- const getFrameDimensions = (0, import_react27.useCallback)(() => {
33576
+ const getFrameDimensions = (0, import_react28.useCallback)(() => {
33332
33577
  if (frameRef.current) {
33333
33578
  const frame = frameRef.current;
33334
33579
  const box = getBox(frame);
@@ -33336,7 +33581,7 @@ var Canvas = () => {
33336
33581
  }
33337
33582
  return { width: 0, height: 0 };
33338
33583
  }, [frameRef]);
33339
- const resetAutoZoom = (0, import_react27.useCallback)(
33584
+ const resetAutoZoom = (0, import_react28.useCallback)(
33340
33585
  (ui2 = state.ui) => {
33341
33586
  if (frameRef.current) {
33342
33587
  setZoomConfig(
@@ -33346,11 +33591,11 @@ var Canvas = () => {
33346
33591
  },
33347
33592
  [frameRef, zoomConfig, state.ui]
33348
33593
  );
33349
- (0, import_react27.useEffect)(() => {
33594
+ (0, import_react28.useEffect)(() => {
33350
33595
  setShowTransition(false);
33351
33596
  resetAutoZoom();
33352
33597
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
33353
- (0, import_react27.useEffect)(() => {
33598
+ (0, import_react28.useEffect)(() => {
33354
33599
  const { height: frameHeight } = getFrameDimensions();
33355
33600
  if (ui.viewports.current.height === "auto") {
33356
33601
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -33358,7 +33603,7 @@ var Canvas = () => {
33358
33603
  }));
33359
33604
  }
33360
33605
  }, [zoomConfig.zoom]);
33361
- (0, import_react27.useEffect)(() => {
33606
+ (0, import_react28.useEffect)(() => {
33362
33607
  const observer = new ResizeObserver(() => {
33363
33608
  setShowTransition(false);
33364
33609
  resetAutoZoom();
@@ -33370,7 +33615,7 @@ var Canvas = () => {
33370
33615
  observer.disconnect();
33371
33616
  };
33372
33617
  }, []);
33373
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
33618
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
33374
33619
  "div",
33375
33620
  {
33376
33621
  className: getClassName24({
@@ -33382,7 +33627,7 @@ var Canvas = () => {
33382
33627
  recordHistory: true
33383
33628
  }),
33384
33629
  children: [
33385
- ui.viewports.controlsVisible && iframe.enabled && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: getClassName24("controls"), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33630
+ ui.viewports.controlsVisible && iframe.enabled && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("controls"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33386
33631
  ViewportControls,
33387
33632
  {
33388
33633
  autoZoom: zoomConfig.autoZoom,
@@ -33407,7 +33652,7 @@ var Canvas = () => {
33407
33652
  }
33408
33653
  }
33409
33654
  ) }),
33410
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: getClassName24("inner"), ref: frameRef, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
33655
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("inner"), ref: frameRef, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33411
33656
  "div",
33412
33657
  {
33413
33658
  className: getClassName24("root"),
@@ -33419,7 +33664,7 @@ var Canvas = () => {
33419
33664
  overflow: iframe.enabled ? void 0 : "auto"
33420
33665
  },
33421
33666
  suppressHydrationWarning: true,
33422
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CustomPreview, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Preview, {}) })
33667
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CustomPreview, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Preview, {}) })
33423
33668
  }
33424
33669
  ) })
33425
33670
  ]
@@ -33428,7 +33673,7 @@ var Canvas = () => {
33428
33673
  };
33429
33674
 
33430
33675
  // components/Puck/index.tsx
33431
- var import_jsx_runtime34 = require("react/jsx-runtime");
33676
+ var import_jsx_runtime35 = require("react/jsx-runtime");
33432
33677
  var getClassName25 = get_class_name_factory_default("Puck", styles_module_default8);
33433
33678
  function Puck({
33434
33679
  children,
@@ -33451,11 +33696,11 @@ function Puck({
33451
33696
  }) {
33452
33697
  var _a;
33453
33698
  const historyStore = useHistoryStore();
33454
- const [reducer] = (0, import_react28.useState)(
33699
+ const [reducer] = (0, import_react29.useState)(
33455
33700
  () => createReducer({ config, record: historyStore.record })
33456
33701
  );
33457
- const [initialAppState] = (0, import_react28.useState)(() => {
33458
- var _a2, _b, _c, _d, _e;
33702
+ const [initialAppState] = (0, import_react29.useState)(() => {
33703
+ var _a2, _b, _c, _d, _e, _f, _g;
33459
33704
  const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
33460
33705
  let clientUiState = {};
33461
33706
  if (typeof window !== "undefined") {
@@ -33482,11 +33727,17 @@ function Puck({
33482
33727
  };
33483
33728
  }
33484
33729
  }
33485
- const rootProps2 = initialData.root.props || initialData.root;
33486
- const defaultedRootProps = __spreadValues(__spreadValues({}, (_e = config.root) == null ? void 0 : _e.defaultProps), rootProps2);
33730
+ if (Object.keys((initialData == null ? void 0 : initialData.root) || {}).length > 0 && !((_e = initialData == null ? void 0 : initialData.root) == null ? void 0 : _e.props)) {
33731
+ console.error(
33732
+ "Warning: Defining props on `root` is deprecated. Please use `root.props`, or republish this page to migrate automatically."
33733
+ );
33734
+ }
33735
+ const rootProps2 = ((_f = initialData == null ? void 0 : initialData.root) == null ? void 0 : _f.props) || (initialData == null ? void 0 : initialData.root) || {};
33736
+ const defaultedRootProps = __spreadValues(__spreadValues({}, (_g = config.root) == null ? void 0 : _g.defaultProps), rootProps2);
33487
33737
  return __spreadProps(__spreadValues({}, defaultAppState), {
33488
33738
  data: __spreadProps(__spreadValues({}, initialData), {
33489
- root: defaultedRootProps
33739
+ root: __spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: defaultedRootProps }),
33740
+ content: initialData.content || []
33490
33741
  }),
33491
33742
  ui: __spreadProps(__spreadValues(__spreadValues({}, initial), clientUiState), {
33492
33743
  // Store categories under componentList on state to allow render functions and plugins to modify
@@ -33506,7 +33757,7 @@ function Puck({
33506
33757
  })
33507
33758
  });
33508
33759
  });
33509
- const [appState, dispatch] = (0, import_react28.useReducer)(
33760
+ const [appState, dispatch] = (0, import_react29.useReducer)(
33510
33761
  reducer,
33511
33762
  flushZones(initialAppState)
33512
33763
  );
@@ -33517,9 +33768,9 @@ function Puck({
33517
33768
  config,
33518
33769
  dispatch
33519
33770
  );
33520
- const [menuOpen, setMenuOpen] = (0, import_react28.useState)(false);
33771
+ const [menuOpen, setMenuOpen] = (0, import_react29.useState)(false);
33521
33772
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
33522
- const setItemSelector = (0, import_react28.useCallback)(
33773
+ const setItemSelector = (0, import_react29.useCallback)(
33523
33774
  (newItemSelector) => {
33524
33775
  if (newItemSelector === itemSelector)
33525
33776
  return;
@@ -33532,21 +33783,14 @@ function Puck({
33532
33783
  [itemSelector]
33533
33784
  );
33534
33785
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
33535
- (0, import_react28.useEffect)(() => {
33786
+ (0, import_react29.useEffect)(() => {
33536
33787
  if (onChange)
33537
33788
  onChange(data);
33538
33789
  }, [data]);
33539
33790
  const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
33540
- const [draggedItem, setDraggedItem] = (0, import_react28.useState)();
33791
+ const [draggedItem, setDraggedItem] = (0, import_react29.useState)();
33541
33792
  const rootProps = data.root.props || data.root;
33542
- (0, import_react28.useEffect)(() => {
33543
- if (Object.keys(data.root).length > 0 && !data.root.props) {
33544
- console.error(
33545
- "Warning: Defining props on `root` is deprecated. Please use `root.props`. This will be a breaking change in a future release."
33546
- );
33547
- }
33548
- }, []);
33549
- const toggleSidebars = (0, import_react28.useCallback)(
33793
+ const toggleSidebars = (0, import_react29.useCallback)(
33550
33794
  (sidebar) => {
33551
33795
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
33552
33796
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -33560,7 +33804,7 @@ function Puck({
33560
33804
  },
33561
33805
  [dispatch, leftSideBarVisible, rightSideBarVisible]
33562
33806
  );
33563
- (0, import_react28.useEffect)(() => {
33807
+ (0, import_react29.useEffect)(() => {
33564
33808
  if (!window.matchMedia("(min-width: 638px)").matches) {
33565
33809
  dispatch({
33566
33810
  type: "setUi",
@@ -33583,11 +33827,11 @@ function Puck({
33583
33827
  window.removeEventListener("resize", handleResize);
33584
33828
  };
33585
33829
  }, []);
33586
- const defaultRender = (0, import_react28.useMemo)(() => {
33587
- const PuckDefault = ({ children: children2 }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: children2 });
33830
+ const defaultRender = (0, import_react29.useMemo)(() => {
33831
+ const PuckDefault = ({ children: children2 }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: children2 });
33588
33832
  return PuckDefault;
33589
33833
  }, []);
33590
- const defaultHeaderRender = (0, import_react28.useMemo)(() => {
33834
+ const defaultHeaderRender = (0, import_react29.useMemo)(() => {
33591
33835
  if (renderHeader) {
33592
33836
  console.warn(
33593
33837
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -33595,45 +33839,45 @@ function Puck({
33595
33839
  const RenderHeader = (_a2) => {
33596
33840
  var _b = _a2, { actions } = _b, props = __objRest(_b, ["actions"]);
33597
33841
  const Comp = renderHeader;
33598
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Comp, __spreadProps(__spreadValues({}, props), { dispatch, state: appState, children: actions }));
33842
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Comp, __spreadProps(__spreadValues({}, props), { dispatch, state: appState, children: actions }));
33599
33843
  };
33600
33844
  return RenderHeader;
33601
33845
  }
33602
33846
  return defaultRender;
33603
33847
  }, [renderHeader]);
33604
- const defaultHeaderActionsRender = (0, import_react28.useMemo)(() => {
33848
+ const defaultHeaderActionsRender = (0, import_react29.useMemo)(() => {
33605
33849
  if (renderHeaderActions) {
33606
33850
  console.warn(
33607
33851
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
33608
33852
  );
33609
33853
  const RenderHeader = (props) => {
33610
33854
  const Comp = renderHeaderActions;
33611
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Comp, __spreadProps(__spreadValues({}, props), { dispatch, state: appState }));
33855
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Comp, __spreadProps(__spreadValues({}, props), { dispatch, state: appState }));
33612
33856
  };
33613
33857
  return RenderHeader;
33614
33858
  }
33615
33859
  return defaultRender;
33616
33860
  }, [renderHeader]);
33617
- const loadedOverrides = (0, import_react28.useMemo)(() => {
33861
+ const loadedOverrides = (0, import_react29.useMemo)(() => {
33618
33862
  return loadOverrides({ overrides, plugins });
33619
33863
  }, [plugins]);
33620
- const CustomPuck = (0, import_react28.useMemo)(
33864
+ const CustomPuck = (0, import_react29.useMemo)(
33621
33865
  () => loadedOverrides.puck || defaultRender,
33622
33866
  [loadedOverrides]
33623
33867
  );
33624
- const CustomHeader = (0, import_react28.useMemo)(
33868
+ const CustomHeader = (0, import_react29.useMemo)(
33625
33869
  () => loadedOverrides.header || defaultHeaderRender,
33626
33870
  [loadedOverrides]
33627
33871
  );
33628
- const CustomHeaderActions = (0, import_react28.useMemo)(
33872
+ const CustomHeaderActions = (0, import_react29.useMemo)(
33629
33873
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
33630
33874
  [loadedOverrides]
33631
33875
  );
33632
- const [mounted, setMounted] = (0, import_react28.useState)(false);
33633
- (0, import_react28.useEffect)(() => {
33876
+ const [mounted, setMounted] = (0, import_react29.useState)(false);
33877
+ (0, import_react29.useEffect)(() => {
33634
33878
  setMounted(true);
33635
33879
  }, []);
33636
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "Puck", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33880
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "Puck", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33637
33881
  AppProvider,
33638
33882
  {
33639
33883
  value: {
@@ -33648,7 +33892,7 @@ function Puck({
33648
33892
  viewports,
33649
33893
  iframe
33650
33894
  },
33651
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33895
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33652
33896
  DragDropContext,
33653
33897
  {
33654
33898
  autoScrollerOptions: { disabled: dnd == null ? void 0 : dnd.disableAutoScroll },
@@ -33704,7 +33948,7 @@ function Puck({
33704
33948
  });
33705
33949
  }
33706
33950
  },
33707
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33951
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33708
33952
  DropZoneProvider,
33709
33953
  {
33710
33954
  value: {
@@ -33718,7 +33962,7 @@ function Puck({
33718
33962
  mode: "edit",
33719
33963
  areaId: "root"
33720
33964
  },
33721
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CustomPuck, { children: children || /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
33965
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CustomPuck, { children: children || /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
33722
33966
  "div",
33723
33967
  {
33724
33968
  className: getClassName25({
@@ -33728,65 +33972,62 @@ function Puck({
33728
33972
  rightSideBarVisible
33729
33973
  }),
33730
33974
  children: [
33731
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName25("layout"), children: [
33732
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33975
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: getClassName25("layout"), children: [
33976
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33733
33977
  CustomHeader,
33734
33978
  {
33735
- actions: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
33736
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CustomHeaderActions, {}),
33737
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33738
- Button,
33739
- {
33740
- onClick: () => {
33741
- onPublish && onPublish(data);
33742
- },
33743
- icon: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Globe, { size: "14px" }),
33744
- children: "Publish"
33745
- }
33746
- )
33747
- ] }),
33748
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("header", { className: getClassName25("header"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName25("headerInner"), children: [
33749
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName25("headerToggle"), children: [
33750
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName25("leftSideBarToggle"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
33979
+ actions: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CustomHeaderActions, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33980
+ Button,
33981
+ {
33982
+ onClick: () => {
33983
+ onPublish && onPublish(data);
33984
+ },
33985
+ icon: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Globe, { size: "14px" }),
33986
+ children: "Publish"
33987
+ }
33988
+ ) }) }),
33989
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("header", { className: getClassName25("header"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: getClassName25("headerInner"), children: [
33990
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: getClassName25("headerToggle"), children: [
33991
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: getClassName25("leftSideBarToggle"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33751
33992
  IconButton,
33752
33993
  {
33753
33994
  onClick: () => {
33754
33995
  toggleSidebars("left");
33755
33996
  },
33756
33997
  title: "Toggle left sidebar",
33757
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(PanelLeft, { focusable: "false" })
33998
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PanelLeft, { focusable: "false" })
33758
33999
  }
33759
34000
  ) }),
33760
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName25("rightSideBarToggle"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
34001
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: getClassName25("rightSideBarToggle"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33761
34002
  IconButton,
33762
34003
  {
33763
34004
  onClick: () => {
33764
34005
  toggleSidebars("right");
33765
34006
  },
33766
34007
  title: "Toggle right sidebar",
33767
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(PanelRight, { focusable: "false" })
34008
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PanelRight, { focusable: "false" })
33768
34009
  }
33769
34010
  ) })
33770
34011
  ] }),
33771
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName25("headerTitle"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Heading, { rank: 2, size: "xs", children: [
34012
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: getClassName25("headerTitle"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Heading, { rank: 2, size: "xs", children: [
33772
34013
  headerTitle || rootProps.title || "Page",
33773
- headerPath && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
34014
+ headerPath && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
33774
34015
  " ",
33775
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("code", { className: getClassName25("headerPath"), children: headerPath })
34016
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("code", { className: getClassName25("headerPath"), children: headerPath })
33776
34017
  ] })
33777
34018
  ] }) }),
33778
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName25("headerTools"), children: [
33779
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName25("menuButton"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
34019
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: getClassName25("headerTools"), children: [
34020
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: getClassName25("menuButton"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33780
34021
  IconButton,
33781
34022
  {
33782
34023
  onClick: () => {
33783
34024
  return setMenuOpen(!menuOpen);
33784
34025
  },
33785
34026
  title: "Toggle menu bar",
33786
- children: menuOpen ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ChevronUp, { focusable: "false" }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ChevronDown, { focusable: "false" })
34027
+ children: menuOpen ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ChevronUp, { focusable: "false" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ChevronDown, { focusable: "false" })
33787
34028
  }
33788
34029
  ) }),
33789
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
34030
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33790
34031
  MenuBar,
33791
34032
  {
33792
34033
  appState,
@@ -33794,7 +34035,16 @@ function Puck({
33794
34035
  dispatch,
33795
34036
  onPublish,
33796
34037
  menuOpen,
33797
- renderHeaderActions: () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CustomHeaderActions, {}),
34038
+ renderHeaderActions: () => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CustomHeaderActions, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
34039
+ Button,
34040
+ {
34041
+ onClick: () => {
34042
+ onPublish && onPublish(data);
34043
+ },
34044
+ icon: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Globe, { size: "14px" }),
34045
+ children: "Publish"
34046
+ }
34047
+ ) }),
33798
34048
  setMenuOpen
33799
34049
  }
33800
34050
  )
@@ -33802,23 +34052,23 @@ function Puck({
33802
34052
  ] }) })
33803
34053
  }
33804
34054
  ),
33805
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName25("leftSideBar"), children: [
33806
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SidebarSection, { title: "Components", noBorderTop: true, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Components, {}) }),
33807
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SidebarSection, { title: "Outline", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Outline, {}) })
34055
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: getClassName25("leftSideBar"), children: [
34056
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SidebarSection, { title: "Components", noBorderTop: true, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Components, {}) }),
34057
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SidebarSection, { title: "Outline", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Outline, {}) })
33808
34058
  ] }),
33809
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Canvas, {}),
33810
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName25("rightSideBar"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
34059
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Canvas, {}),
34060
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: getClassName25("rightSideBar"), children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33811
34061
  SidebarSection,
33812
34062
  {
33813
34063
  noPadding: true,
33814
34064
  noBorderTop: true,
33815
34065
  showBreadcrumbs: true,
33816
34066
  title: selectedItem ? (_a = config.components[selectedItem.type]["label"]) != null ? _a : selectedItem.type : "Page",
33817
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Fields, {})
34067
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Fields, {})
33818
34068
  }
33819
34069
  ) })
33820
34070
  ] }),
33821
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
34071
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
33822
34072
  "div",
33823
34073
  {
33824
34074
  id: "puck-portal-root",
@@ -33842,16 +34092,20 @@ Puck.Preview = Preview;
33842
34092
 
33843
34093
  // components/Render/index.tsx
33844
34094
  init_react_import();
33845
- var import_jsx_runtime35 = require("react/jsx-runtime");
34095
+ var import_jsx_runtime36 = require("react/jsx-runtime");
33846
34096
  function Render({
33847
34097
  config,
33848
34098
  data
33849
34099
  }) {
33850
34100
  var _a;
33851
- const rootProps = data.root.props || data.root;
34101
+ const defaultedData = __spreadProps(__spreadValues({}, data), {
34102
+ root: data.root || {},
34103
+ content: data.content || []
34104
+ });
34105
+ const rootProps = defaultedData.root.props || defaultedData.root;
33852
34106
  const title = (rootProps == null ? void 0 : rootProps.title) || "";
33853
34107
  if ((_a = config.root) == null ? void 0 : _a.render) {
33854
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
34108
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data: defaultedData, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
33855
34109
  config.root.render,
33856
34110
  __spreadProps(__spreadValues({}, rootProps), {
33857
34111
  puck: {
@@ -33860,11 +34114,11 @@ function Render({
33860
34114
  title,
33861
34115
  editMode: false,
33862
34116
  id: "puck-root",
33863
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(DropZone, { zone: rootDroppableId })
34117
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZone, { zone: rootDroppableId })
33864
34118
  })
33865
34119
  ) });
33866
34120
  }
33867
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(DropZone, { zone: rootDroppableId }) });
34121
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data: defaultedData, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZone, { zone: rootDroppableId }) });
33868
34122
  }
33869
34123
 
33870
34124
  // lib/migrate.ts
@@ -33892,6 +34146,15 @@ function migrate(data) {
33892
34146
 
33893
34147
  // lib/transform-props.ts
33894
34148
  init_react_import();
34149
+
34150
+ // lib/default-data.ts
34151
+ init_react_import();
34152
+ var defaultData = (data) => __spreadProps(__spreadValues({}, data), {
34153
+ root: data.root || {},
34154
+ content: data.content || []
34155
+ });
34156
+
34157
+ // lib/transform-props.ts
33895
34158
  function transformProps(data, propTransforms) {
33896
34159
  const mapItem = (item) => {
33897
34160
  if (propTransforms[item.type]) {
@@ -33901,18 +34164,19 @@ function transformProps(data, propTransforms) {
33901
34164
  }
33902
34165
  return item;
33903
34166
  };
33904
- const rootProps = data.root.props || data.root;
33905
- let newRoot = __spreadValues({}, data.root);
34167
+ const defaultedData = defaultData(data);
34168
+ const rootProps = defaultedData.root.props || defaultedData.root;
34169
+ let newRoot = __spreadValues({}, defaultedData.root);
33906
34170
  if (propTransforms["root"]) {
33907
- if (data.root.props) {
34171
+ if (defaultedData.root.props) {
33908
34172
  newRoot.props = propTransforms["root"](rootProps);
33909
34173
  } else {
33910
34174
  newRoot = propTransforms["root"](rootProps);
33911
34175
  }
33912
34176
  }
33913
- const afterPropTransforms = __spreadProps(__spreadValues({}, data), {
34177
+ const afterPropTransforms = __spreadProps(__spreadValues({}, defaultedData), {
33914
34178
  root: newRoot,
33915
- content: data.content.map(mapItem),
34179
+ content: defaultedData.content.map(mapItem),
33916
34180
  zones: Object.keys(data.zones || {}).reduce(
33917
34181
  (acc, zoneKey) => __spreadProps(__spreadValues({}, acc), {
33918
34182
  [zoneKey]: data.zones[zoneKey].map(mapItem)
@@ -33927,7 +34191,8 @@ function transformProps(data, propTransforms) {
33927
34191
  init_react_import();
33928
34192
  function resolveAllData(data, config, onResolveStart, onResolveEnd) {
33929
34193
  return __async(this, null, function* () {
33930
- const dynamicRoot = yield resolveRootData(data, config);
34194
+ const defaultedData = defaultData(data);
34195
+ const dynamicRoot = yield resolveRootData(defaultedData, config);
33931
34196
  const { zones = {} } = data;
33932
34197
  const zoneKeys = Object.keys(zones);
33933
34198
  const resolvedZones = {};
@@ -33940,10 +34205,10 @@ function resolveAllData(data, config, onResolveStart, onResolveEnd) {
33940
34205
  onResolveEnd
33941
34206
  );
33942
34207
  }
33943
- return __spreadProps(__spreadValues({}, data), {
34208
+ return __spreadProps(__spreadValues({}, defaultedData), {
33944
34209
  root: dynamicRoot,
33945
34210
  content: yield resolveAllComponentData(
33946
- data.content,
34211
+ defaultedData.content,
33947
34212
  config,
33948
34213
  onResolveStart,
33949
34214
  onResolveEnd