@orion-studios/payload-studio 0.6.0-beta.113 → 0.6.0-beta.114

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.
@@ -695,6 +695,51 @@ var syncModelBackgroundToBlock = (model) => {
695
695
  })
696
696
  });
697
697
  };
698
+ var spacingLonghands = [
699
+ "margin-top",
700
+ "margin-bottom",
701
+ "margin-left",
702
+ "margin-right",
703
+ "padding-top",
704
+ "padding-bottom",
705
+ "padding-left",
706
+ "padding-right"
707
+ ];
708
+ var hasSpacingStyle = (style, property) => Boolean(style[property] || style[property.replace(/-([a-z])/g, (_, char) => char.toUpperCase())]);
709
+ var hoistPreviewSpacingToModel = (view) => {
710
+ const element = view.el;
711
+ const preview = element?.querySelector?.(".xo-builder-preview");
712
+ if (!preview) {
713
+ return;
714
+ }
715
+ const model = view.model;
716
+ const style = model.getStyle?.() || {};
717
+ const computed = window.getComputedStyle(preview);
718
+ const nextStyle = {};
719
+ spacingLonghands.forEach((property) => {
720
+ const isPadding = property.startsWith("padding-");
721
+ if (hasSpacingStyle(style, property) || hasSpacingStyle(style, isPadding ? "padding" : "margin")) {
722
+ return;
723
+ }
724
+ const value = computed.getPropertyValue(property).trim();
725
+ if (value && (isPadding || value !== "0px")) {
726
+ nextStyle[property] = value;
727
+ }
728
+ });
729
+ if (Object.keys(nextStyle).length > 0) {
730
+ model.addStyle?.(nextStyle);
731
+ }
732
+ preview.style.margin = "0";
733
+ preview.style.marginTop = "0";
734
+ preview.style.marginRight = "0";
735
+ preview.style.marginBottom = "0";
736
+ preview.style.marginLeft = "0";
737
+ preview.style.padding = "0";
738
+ preview.style.paddingTop = "0";
739
+ preview.style.paddingRight = "0";
740
+ preview.style.paddingBottom = "0";
741
+ preview.style.paddingLeft = "0";
742
+ };
698
743
  var previewForDefinition = (definition, props) => definition.editorPreview?.(props) || `<div class="orion-builder-v2-dynamic-placeholder"><strong>${definition.label}</strong></div>`;
699
744
  var blockPreviewForDefinition = (type) => {
700
745
  const normalizedType = type.replace(/[^a-z0-9-]/gi, "-");
@@ -1032,6 +1077,7 @@ var registerProjectDynamicComponents = (editor, adapter) => {
1032
1077
  this.model.addAttributes?.({ "data-orion-background-color": backgroundColor });
1033
1078
  }
1034
1079
  this.model.components(previewForDefinition(definition, props));
1080
+ hoistPreviewSpacingToModel(this);
1035
1081
  lockPreviewChildren(this.model);
1036
1082
  queueMicrotask(() => bindEditablePreview(this, editor));
1037
1083
  }
@@ -1540,7 +1586,7 @@ var spacingProperties = [
1540
1586
  ];
1541
1587
  var spacingTargetForComponent = (component) => {
1542
1588
  const element = component?.getEl?.();
1543
- return element?.querySelector?.(".xo-builder-preview") || element || null;
1589
+ return element || null;
1544
1590
  };
1545
1591
  var hasExplicitHorizontalAlign = (block) => {
1546
1592
  const settings = readNestedRecord(block, "settings");
@@ -571,6 +571,51 @@ var syncModelBackgroundToBlock = (model) => {
571
571
  })
572
572
  });
573
573
  };
574
+ var spacingLonghands = [
575
+ "margin-top",
576
+ "margin-bottom",
577
+ "margin-left",
578
+ "margin-right",
579
+ "padding-top",
580
+ "padding-bottom",
581
+ "padding-left",
582
+ "padding-right"
583
+ ];
584
+ var hasSpacingStyle = (style, property) => Boolean(style[property] || style[property.replace(/-([a-z])/g, (_, char) => char.toUpperCase())]);
585
+ var hoistPreviewSpacingToModel = (view) => {
586
+ const element = view.el;
587
+ const preview = element?.querySelector?.(".xo-builder-preview");
588
+ if (!preview) {
589
+ return;
590
+ }
591
+ const model = view.model;
592
+ const style = model.getStyle?.() || {};
593
+ const computed = window.getComputedStyle(preview);
594
+ const nextStyle = {};
595
+ spacingLonghands.forEach((property) => {
596
+ const isPadding = property.startsWith("padding-");
597
+ if (hasSpacingStyle(style, property) || hasSpacingStyle(style, isPadding ? "padding" : "margin")) {
598
+ return;
599
+ }
600
+ const value = computed.getPropertyValue(property).trim();
601
+ if (value && (isPadding || value !== "0px")) {
602
+ nextStyle[property] = value;
603
+ }
604
+ });
605
+ if (Object.keys(nextStyle).length > 0) {
606
+ model.addStyle?.(nextStyle);
607
+ }
608
+ preview.style.margin = "0";
609
+ preview.style.marginTop = "0";
610
+ preview.style.marginRight = "0";
611
+ preview.style.marginBottom = "0";
612
+ preview.style.marginLeft = "0";
613
+ preview.style.padding = "0";
614
+ preview.style.paddingTop = "0";
615
+ preview.style.paddingRight = "0";
616
+ preview.style.paddingBottom = "0";
617
+ preview.style.paddingLeft = "0";
618
+ };
574
619
  var previewForDefinition = (definition, props) => definition.editorPreview?.(props) || `<div class="orion-builder-v2-dynamic-placeholder"><strong>${definition.label}</strong></div>`;
575
620
  var blockPreviewForDefinition = (type) => {
576
621
  const normalizedType = type.replace(/[^a-z0-9-]/gi, "-");
@@ -908,6 +953,7 @@ var registerProjectDynamicComponents = (editor, adapter) => {
908
953
  this.model.addAttributes?.({ "data-orion-background-color": backgroundColor });
909
954
  }
910
955
  this.model.components(previewForDefinition(definition, props));
956
+ hoistPreviewSpacingToModel(this);
911
957
  lockPreviewChildren(this.model);
912
958
  queueMicrotask(() => bindEditablePreview(this, editor));
913
959
  }
@@ -1416,7 +1462,7 @@ var spacingProperties = [
1416
1462
  ];
1417
1463
  var spacingTargetForComponent = (component) => {
1418
1464
  const element = component?.getEl?.();
1419
- return element?.querySelector?.(".xo-builder-preview") || element || null;
1465
+ return element || null;
1420
1466
  };
1421
1467
  var hasExplicitHorizontalAlign = (block) => {
1422
1468
  const settings = readNestedRecord(block, "settings");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.6.0-beta.113",
3
+ "version": "0.6.0-beta.114",
4
4
  "description": "Base CMS, builder, and custom admin toolkit for Orion Studios websites",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",