@g1cloud/page-builder-editor 1.0.0-alpha.21 → 1.0.0-alpha.22

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.
@@ -6693,10 +6693,11 @@ var __publicField = (obj, key, value) => {
6693
6693
  return propertyName === PART_ID_KEY$1 ? this.partId : (_a = this.properties) == null ? void 0 : _a[propertyName];
6694
6694
  }
6695
6695
  getClassNames() {
6696
- return "";
6696
+ var _a;
6697
+ return ((_a = this.properties) == null ? void 0 : _a.classNames) || "";
6697
6698
  }
6698
6699
  getStyles() {
6699
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J;
6700
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N;
6700
6701
  const style = {};
6701
6702
  if (((_a = this.properties) == null ? void 0 : _a.direction) === "horizontal") {
6702
6703
  style.display = "flex";
@@ -6740,42 +6741,81 @@ var __publicField = (obj, key, value) => {
6740
6741
  style.width = this.properties.width;
6741
6742
  if ((_s = this.properties) == null ? void 0 : _s.height)
6742
6743
  style.height = this.properties.height;
6743
- if ((_t = this.properties) == null ? void 0 : _t.backgroundColor)
6744
+ if ((_t = this.properties) == null ? void 0 : _t.maxWidth)
6745
+ style.width = this.properties.maxWidth;
6746
+ if ((_u = this.properties) == null ? void 0 : _u.maxHeight)
6747
+ style.height = this.properties.maxHeight;
6748
+ if ((_v = this.properties) == null ? void 0 : _v.minWidth)
6749
+ style.width = this.properties.minWidth;
6750
+ if ((_w = this.properties) == null ? void 0 : _w.minHeight)
6751
+ style.height = this.properties.minHeight;
6752
+ if ((_x = this.properties) == null ? void 0 : _x.backgroundColor)
6744
6753
  style.backgroundColor = this.properties.backgroundColor;
6745
- if ((_u = this.properties) == null ? void 0 : _u.borderLeftWidth)
6754
+ if ((_y = this.properties) == null ? void 0 : _y.borderLeftWidth)
6746
6755
  style.borderLeftWidth = this.properties.borderLeftWidth;
6747
- if ((_v = this.properties) == null ? void 0 : _v.borderRightWidth)
6756
+ if ((_z = this.properties) == null ? void 0 : _z.borderRightWidth)
6748
6757
  style.borderRightWidth = this.properties.borderRightWidth;
6749
- if ((_w = this.properties) == null ? void 0 : _w.borderTopWidth)
6758
+ if ((_A = this.properties) == null ? void 0 : _A.borderTopWidth)
6750
6759
  style.borderTopWidth = this.properties.borderTopWidth;
6751
- if ((_x = this.properties) == null ? void 0 : _x.borderBottomWidth)
6760
+ if ((_B = this.properties) == null ? void 0 : _B.borderBottomWidth)
6752
6761
  style.borderBottomWidth = this.properties.borderBottomWidth;
6753
- if ((_y = this.properties) == null ? void 0 : _y.borderTopLeftRadius)
6762
+ if ((_C = this.properties) == null ? void 0 : _C.borderTopLeftRadius)
6754
6763
  style.borderTopLeftRadius = this.properties.borderTopLeftRadius;
6755
- if ((_z = this.properties) == null ? void 0 : _z.borderTopRightRadius)
6764
+ if ((_D = this.properties) == null ? void 0 : _D.borderTopRightRadius)
6756
6765
  style.borderTopRightRadius = this.properties.borderTopRightRadius;
6757
- if ((_A = this.properties) == null ? void 0 : _A.borderBottomLeftRadius)
6766
+ if ((_E = this.properties) == null ? void 0 : _E.borderBottomLeftRadius)
6758
6767
  style.borderBottomLeftRadius = this.properties.borderBottomLeftRadius;
6759
- if ((_B = this.properties) == null ? void 0 : _B.borderBottomRightRadius)
6768
+ if ((_F = this.properties) == null ? void 0 : _F.borderBottomRightRadius)
6760
6769
  style.borderBottomRightRadius = this.properties.borderBottomRightRadius;
6761
- if (((_C = this.properties) == null ? void 0 : _C.borderColor) && style.borderLeftWidth) {
6770
+ if (((_G = this.properties) == null ? void 0 : _G.borderColor) && style.borderLeftWidth) {
6762
6771
  style.borderLeftStyle = "solid";
6763
- style.borderLeftColor = (_D = this.properties) == null ? void 0 : _D.borderColor;
6772
+ style.borderLeftColor = (_H = this.properties) == null ? void 0 : _H.borderColor;
6764
6773
  }
6765
- if (((_E = this.properties) == null ? void 0 : _E.borderColor) && style.borderRightWidth) {
6774
+ if (((_I = this.properties) == null ? void 0 : _I.borderColor) && style.borderRightWidth) {
6766
6775
  style.borderRightStyle = "solid";
6767
- style.borderRightColor = (_F = this.properties) == null ? void 0 : _F.borderColor;
6776
+ style.borderRightColor = (_J = this.properties) == null ? void 0 : _J.borderColor;
6768
6777
  }
6769
- if (((_G = this.properties) == null ? void 0 : _G.borderColor) && style.borderTopWidth) {
6778
+ if (((_K = this.properties) == null ? void 0 : _K.borderColor) && style.borderTopWidth) {
6770
6779
  style.borderTopStyle = "solid";
6771
- style.borderTopColor = (_H = this.properties) == null ? void 0 : _H.borderColor;
6780
+ style.borderTopColor = (_L = this.properties) == null ? void 0 : _L.borderColor;
6772
6781
  }
6773
- if (((_I = this.properties) == null ? void 0 : _I.borderColor) && style.borderBottomWidth) {
6782
+ if (((_M = this.properties) == null ? void 0 : _M.borderColor) && style.borderBottomWidth) {
6774
6783
  style.borderBottomStyle = "solid";
6775
- style.borderBottomColor = (_J = this.properties) == null ? void 0 : _J.borderColor;
6784
+ style.borderBottomColor = (_N = this.properties) == null ? void 0 : _N.borderColor;
6776
6785
  }
6777
6786
  return style;
6778
6787
  }
6788
+ getInlineStyles() {
6789
+ var _a;
6790
+ const styleObject = {};
6791
+ const inlineStyle = (_a = this.properties) == null ? void 0 : _a.inlineStyle;
6792
+ if (!inlineStyle)
6793
+ return styleObject;
6794
+ inlineStyle.split(";").forEach((rule) => {
6795
+ if (rule.trim()) {
6796
+ const [property, value] = rule.split(":").map((part) => part.trim());
6797
+ if (property && value) {
6798
+ const camelCasedProperty = property.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
6799
+ styleObject[camelCasedProperty] = value;
6800
+ }
6801
+ }
6802
+ });
6803
+ return styleObject;
6804
+ }
6805
+ getStyleTag() {
6806
+ var _a;
6807
+ const css = (_a = this.properties) == null ? void 0 : _a.style;
6808
+ if (!css)
6809
+ return "";
6810
+ return css.replace(/([^{]+){/g, (match) => {
6811
+ if (match.trim().startsWith("@")) {
6812
+ return match;
6813
+ }
6814
+ const selectors = match.split(",").map((selector) => selector.trim());
6815
+ const modifiedSelectors = selectors.map((selector) => `[data-part-id=${this.partId}] ${selector}`).join(", ");
6816
+ return `${modifiedSelectors} `;
6817
+ });
6818
+ }
6779
6819
  }
6780
6820
  class RootPart extends Part {
6781
6821
  constructor() {
@@ -6836,8 +6876,8 @@ var __publicField = (obj, key, value) => {
6836
6876
  this.rootPart = vue.ref(new RootPart());
6837
6877
  }
6838
6878
  };
6839
- const _hoisted_1$8$1 = ["data-model-id"];
6840
- const _hoisted_2$5$1 = {
6879
+ const _hoisted_1$9$1 = ["data-part-id"];
6880
+ const _hoisted_2$6$1 = {
6841
6881
  key: 1,
6842
6882
  class: "pb-nested-widget"
6843
6883
  };
@@ -6848,34 +6888,38 @@ var __publicField = (obj, key, value) => {
6848
6888
  },
6849
6889
  setup(__props) {
6850
6890
  const props = __props;
6851
- const classNames = vue.computed(() => props.part.getClassNames());
6852
6891
  const properties = vue.computed(() => ({ style: props.part.getStyles() }));
6892
+ const styleTag = vue.computed(() => props.part.getStyleTag());
6853
6893
  const thisComponent = vue.computed(() => createPartComponent(props.part));
6854
6894
  const childComponents = vue.computed(() => createPartComponents(props.part.children));
6855
6895
  return (_ctx, _cache) => {
6856
- var _a;
6857
- return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
6858
- class: [classNames.value, "pb-widget"],
6859
- "data-model-id": _ctx.part.partId,
6860
- style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6861
- }, properties.value), [
6862
- thisComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(thisComponent.value), {
6896
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6897
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6863
6898
  key: 0,
6864
- part: _ctx.part
6865
- }, null, 8, ["part"])) : vue.createCommentVNode("", true),
6866
- childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$5$1, [
6867
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
6868
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
6869
- key: child.part.partId,
6870
- part: child.part
6871
- }, null, 8, ["part"]);
6872
- }), 128))
6873
- ])) : vue.createCommentVNode("", true)
6874
- ], 16, _hoisted_1$8$1);
6899
+ innerHTML: styleTag.value
6900
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
6901
+ vue.createElementVNode("div", vue.mergeProps({
6902
+ "data-part-id": _ctx.part.partId,
6903
+ class: "pb-widget"
6904
+ }, properties.value), [
6905
+ thisComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(thisComponent.value), {
6906
+ key: 0,
6907
+ part: _ctx.part
6908
+ }, null, 8, ["part"])) : vue.createCommentVNode("", true),
6909
+ childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6$1, [
6910
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
6911
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
6912
+ key: child.part.partId,
6913
+ part: child.part
6914
+ }, null, 8, ["part"]);
6915
+ }), 128))
6916
+ ])) : vue.createCommentVNode("", true)
6917
+ ], 16, _hoisted_1$9$1)
6918
+ ], 64);
6875
6919
  };
6876
6920
  }
6877
6921
  });
6878
- const _hoisted_1$7$1 = ["data-model-id"];
6922
+ const _hoisted_1$8$1 = ["data-part-id"];
6879
6923
  const _sfc_main$9$1 = /* @__PURE__ */ vue.defineComponent({
6880
6924
  __name: "PbBlock",
6881
6925
  props: {
@@ -6884,27 +6928,39 @@ var __publicField = (obj, key, value) => {
6884
6928
  setup(__props) {
6885
6929
  const props = __props;
6886
6930
  const classNames = vue.computed(() => props.part.getClassNames());
6887
- const properties = vue.computed(() => ({ style: props.part.getStyles() }));
6931
+ const styleTag = vue.computed(() => props.part.getStyleTag());
6932
+ const properties = vue.computed(() => ({
6933
+ style: {
6934
+ ...props.part.getStyles(),
6935
+ ...props.part.getInlineStyles()
6936
+ }
6937
+ }));
6888
6938
  vue.computed(() => createPartComponents(props.part.children));
6889
6939
  return (_ctx, _cache) => {
6890
6940
  var _a;
6891
- return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
6892
- class: [classNames.value, "pb-block"],
6893
- "data-model-id": _ctx.part.partId,
6894
- style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6895
- }, properties.value), [
6896
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
6897
- return vue.openBlock(), vue.createBlock(_sfc_main$a$1, {
6898
- key: child.partId,
6899
- part: child
6900
- }, null, 8, ["part"]);
6901
- }), 128))
6902
- ], 16, _hoisted_1$7$1);
6941
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6942
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6943
+ key: 0,
6944
+ innerHTML: styleTag.value
6945
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
6946
+ vue.createElementVNode("div", vue.mergeProps({
6947
+ class: [classNames.value, "pb-block"],
6948
+ "data-part-id": _ctx.part.partId,
6949
+ style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6950
+ }, properties.value), [
6951
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
6952
+ return vue.openBlock(), vue.createBlock(_sfc_main$a$1, {
6953
+ key: child.partId,
6954
+ part: child
6955
+ }, null, 8, ["part"]);
6956
+ }), 128))
6957
+ ], 16, _hoisted_1$8$1)
6958
+ ], 64);
6903
6959
  };
6904
6960
  }
6905
6961
  });
6906
- const _hoisted_1$6$1 = { class: "pb-block" };
6907
- const _hoisted_2$4$1 = /* @__PURE__ */ vue.createElementVNode("div", {
6962
+ const _hoisted_1$7$1 = { class: "pb-block" };
6963
+ const _hoisted_2$5$1 = /* @__PURE__ */ vue.createElementVNode("div", {
6908
6964
  class: "pb-widget",
6909
6965
  style: { "margin": "0 auto" }
6910
6966
  }, [
@@ -6913,7 +6969,7 @@ var __publicField = (obj, key, value) => {
6913
6969
  ])
6914
6970
  ], -1);
6915
6971
  const _hoisted_3$4$1 = [
6916
- _hoisted_2$4$1
6972
+ _hoisted_2$5$1
6917
6973
  ];
6918
6974
  const _sfc_main$8$1 = /* @__PURE__ */ vue.defineComponent({
6919
6975
  __name: "PbLoginDepart",
@@ -6922,11 +6978,11 @@ var __publicField = (obj, key, value) => {
6922
6978
  },
6923
6979
  setup(__props) {
6924
6980
  return (_ctx, _cache) => {
6925
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6$1, _hoisted_3$4$1);
6981
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7$1, _hoisted_3$4$1);
6926
6982
  };
6927
6983
  }
6928
6984
  });
6929
- const _hoisted_1$5$1 = ["data-model-id"];
6985
+ const _hoisted_1$6$1 = ["data-part-id"];
6930
6986
  const _sfc_main$7$1 = /* @__PURE__ */ vue.defineComponent({
6931
6987
  __name: "PbSection",
6932
6988
  props: {
@@ -6934,36 +6990,48 @@ var __publicField = (obj, key, value) => {
6934
6990
  },
6935
6991
  setup(__props) {
6936
6992
  const props = __props;
6993
+ const styleTag = vue.computed(() => props.part.getStyleTag());
6937
6994
  const classNames = vue.computed(() => props.part.getClassNames());
6938
- const properties = vue.computed(() => ({ style: props.part.getStyles() }));
6995
+ const properties = vue.computed(() => ({
6996
+ style: {
6997
+ ...props.part.getStyles(),
6998
+ ...props.part.getInlineStyles()
6999
+ }
7000
+ }));
6939
7001
  return (_ctx, _cache) => {
6940
7002
  var _a, _b;
6941
- return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
6942
- class: [classNames.value, "pb-section"],
6943
- "data-model-id": _ctx.part.partId,
6944
- style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6945
- }, properties.value), [
6946
- ((_b = _ctx.part.properties) == null ? void 0 : _b.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$8$1, {
7003
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
7004
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6947
7005
  key: 0,
6948
- part: _ctx.part
6949
- }, null, 8, ["part"])) : _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.part.children, (block) => {
6950
- return vue.openBlock(), vue.createBlock(_sfc_main$9$1, {
6951
- key: block.partId,
6952
- part: block
6953
- }, null, 8, ["part"]);
6954
- }), 128)) : vue.createCommentVNode("", true)
6955
- ], 16, _hoisted_1$5$1);
7006
+ innerHTML: styleTag.value
7007
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
7008
+ vue.createElementVNode("div", vue.mergeProps({
7009
+ class: [classNames.value, "pb-section"],
7010
+ "data-part-id": _ctx.part.partId,
7011
+ style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
7012
+ }, properties.value), [
7013
+ ((_b = _ctx.part.properties) == null ? void 0 : _b.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$8$1, {
7014
+ key: 0,
7015
+ part: _ctx.part
7016
+ }, null, 8, ["part"])) : _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.part.children, (block) => {
7017
+ return vue.openBlock(), vue.createBlock(_sfc_main$9$1, {
7018
+ key: block.partId,
7019
+ part: block
7020
+ }, null, 8, ["part"]);
7021
+ }), 128)) : vue.createCommentVNode("", true)
7022
+ ], 16, _hoisted_1$6$1)
7023
+ ], 64);
6956
7024
  };
6957
7025
  }
6958
7026
  });
6959
- const _hoisted_1$4$1 = { class: "pb-image-widget" };
6960
- const _hoisted_2$3$1 = ["src"];
7027
+ const _hoisted_1$5$1 = { class: "pb-image-widget" };
7028
+ const _hoisted_2$4$1 = ["src"];
6961
7029
  const _hoisted_3$3$1 = {
6962
7030
  key: 1,
6963
7031
  class: "placeholder"
6964
7032
  };
6965
7033
  const _hoisted_4$h = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "image", -1);
6966
- const _hoisted_5$8 = [
7034
+ const _hoisted_5$9 = [
6967
7035
  _hoisted_4$h
6968
7036
  ];
6969
7037
  const _sfc_main$6$1 = /* @__PURE__ */ vue.defineComponent({
@@ -6973,21 +7041,29 @@ var __publicField = (obj, key, value) => {
6973
7041
  placeholder: { type: Boolean }
6974
7042
  },
6975
7043
  setup(__props) {
7044
+ const props = __props;
7045
+ const classNames = vue.computed(() => props.part.getClassNames());
7046
+ vue.computed(() => ({
7047
+ style: {
7048
+ ...props.part.getInlineStyles()
7049
+ }
7050
+ }));
6976
7051
  return (_ctx, _cache) => {
6977
- var _a, _b;
6978
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4$1, [
7052
+ var _a, _b, _c;
7053
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5$1, [
6979
7054
  ((_a = _ctx.part.properties) == null ? void 0 : _a.image) ? (vue.openBlock(), vue.createElementBlock("img", {
6980
7055
  key: 0,
7056
+ class: vue.normalizeClass([classNames.value, "image"]),
6981
7057
  src: (_b = _ctx.part.properties) == null ? void 0 : _b.image,
6982
- alt: "",
6983
- class: "image"
6984
- }, null, 8, _hoisted_2$3$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3$1, _hoisted_5$8)) : vue.createCommentVNode("", true)
7058
+ style: vue.normalizeStyle((_c = _ctx.part.properties) == null ? void 0 : _c.inlineStyle),
7059
+ alt: ""
7060
+ }, null, 14, _hoisted_2$4$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3$1, _hoisted_5$9)) : vue.createCommentVNode("", true)
6985
7061
  ]);
6986
7062
  };
6987
7063
  }
6988
7064
  });
6989
- const _hoisted_1$3$1 = { class: "pb-text-widget" };
6990
- const _hoisted_2$2$1 = ["textContent"];
7065
+ const _hoisted_1$4$1 = { class: "pb-text-widget" };
7066
+ const _hoisted_2$3$1 = ["textContent"];
6991
7067
  const _hoisted_3$2$1 = {
6992
7068
  key: 1,
6993
7069
  class: "placeholder",
@@ -7013,29 +7089,33 @@ var __publicField = (obj, key, value) => {
7013
7089
  }
7014
7090
  }
7015
7091
  });
7092
+ const classNames = vue.computed(() => props.part.getClassNames());
7016
7093
  const style = vue.computed(() => {
7017
- var _a, _b;
7094
+ var _a, _b, _c, _d;
7018
7095
  return {
7019
7096
  style: {
7020
7097
  fontSize: (_a = props.part.properties) == null ? void 0 : _a.fontSize,
7021
- color: (_b = props.part.properties) == null ? void 0 : _b.color
7098
+ fontWeight: (_b = props.part.properties) == null ? void 0 : _b.fontWeight,
7099
+ color: (_c = props.part.properties) == null ? void 0 : _c.color,
7100
+ textAlign: (_d = props.part.properties) == null ? void 0 : _d.textAlign,
7101
+ ...props.part.getInlineStyles()
7022
7102
  }
7023
7103
  };
7024
7104
  });
7025
7105
  return (_ctx, _cache) => {
7026
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3$1, [
7106
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4$1, [
7027
7107
  text.value ? (vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
7028
7108
  key: 0,
7029
- class: "text"
7109
+ class: [classNames.value, "text l-header-event__id-text"]
7030
7110
  }, style.value, {
7031
7111
  textContent: vue.toDisplayString(text.value)
7032
- }), null, 16, _hoisted_2$2$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2$1)) : vue.createCommentVNode("", true)
7112
+ }), null, 16, _hoisted_2$3$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2$1)) : vue.createCommentVNode("", true)
7033
7113
  ]);
7034
7114
  };
7035
7115
  }
7036
7116
  });
7037
- const _hoisted_1$2$1 = { class: "pb-html-widget" };
7038
- const _hoisted_2$1$1 = ["innerHTML"];
7117
+ const _hoisted_1$3$1 = { class: "pb-html-widget" };
7118
+ const _hoisted_2$2$1 = ["innerHTML"];
7039
7119
  const _hoisted_3$1$1 = {
7040
7120
  key: 1,
7041
7121
  class: "placeholder",
@@ -7072,21 +7152,28 @@ ${_html.style}
7072
7152
  var _a;
7073
7153
  return getHtml((_a = props.part.properties) == null ? void 0 : _a.html);
7074
7154
  });
7075
- vue.computed(() => props.placeholder ? !html.value : false);
7155
+ const classNames = vue.computed(() => props.part.getClassNames());
7156
+ vue.computed(() => ({
7157
+ style: {
7158
+ ...props.part.getInlineStyles()
7159
+ }
7160
+ }));
7076
7161
  return (_ctx, _cache) => {
7077
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2$1, [
7162
+ var _a;
7163
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3$1, [
7078
7164
  html.value ? (vue.openBlock(), vue.createElementBlock("div", {
7079
7165
  key: 0,
7080
- class: "html",
7166
+ class: vue.normalizeClass([classNames.value, "html"]),
7167
+ style: vue.normalizeStyle((_a = _ctx.part.properties) == null ? void 0 : _a.inlineStyle),
7081
7168
  innerHTML: html.value
7082
- }, null, 8, _hoisted_2$1$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1$1)) : vue.createCommentVNode("", true)
7169
+ }, null, 14, _hoisted_2$2$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1$1)) : vue.createCommentVNode("", true)
7083
7170
  ]);
7084
7171
  };
7085
7172
  }
7086
7173
  });
7087
- const _hoisted_1$1$1 = { class: "pb-iframe-widget" };
7088
- const _hoisted_2$t = ["src"];
7089
- const _hoisted_3$q = {
7174
+ const _hoisted_1$2$1 = { class: "pb-iframe-widget" };
7175
+ const _hoisted_2$1$1 = ["src"];
7176
+ const _hoisted_3$r = {
7090
7177
  key: 1,
7091
7178
  class: "placeholder",
7092
7179
  textContent: "Empty URL"
@@ -7110,10 +7197,12 @@ ${_html.style}
7110
7197
  const locale = pageBuilder.getLocale();
7111
7198
  return url2[locale];
7112
7199
  });
7200
+ const classNames = vue.computed(() => props.part.getClassNames());
7113
7201
  const style = vue.computed(() => ({
7114
7202
  style: {
7115
7203
  width: "100%",
7116
- height: `${height.value}px`
7204
+ height: `${height.value}px`,
7205
+ ...props.part.getInlineStyles()
7117
7206
  }
7118
7207
  }));
7119
7208
  const height = vue.ref(200);
@@ -7129,11 +7218,14 @@ ${_html.style}
7129
7218
  window.removeEventListener("message", updateHeight);
7130
7219
  });
7131
7220
  return (_ctx, _cache) => {
7132
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1$1, [
7221
+ var _a;
7222
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2$1, [
7133
7223
  url.value ? (vue.openBlock(), vue.createElementBlock("iframe", vue.mergeProps({
7134
7224
  key: 0,
7135
- src: url.value
7136
- }, style.value), null, 16, _hoisted_2$t)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$q)) : vue.createCommentVNode("", true)
7225
+ class: classNames.value,
7226
+ src: url.value,
7227
+ style: (_a = _ctx.part.properties) == null ? void 0 : _a.inlineStyle
7228
+ }, style.value), null, 16, _hoisted_2$1$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$r)) : vue.createCommentVNode("", true)
7137
7229
  ]);
7138
7230
  };
7139
7231
  }
@@ -7179,6 +7271,8 @@ ${_html.style}
7179
7271
  __publicField2(this, "locale", vue.ref("en"));
7180
7272
  __publicField2(this, "watchers", {});
7181
7273
  __publicField2(this, "providers", {});
7274
+ __publicField2(this, "externalCssLinks", []);
7275
+ __publicField2(this, "externalCssContent", "");
7182
7276
  this.model = new Model$1();
7183
7277
  }
7184
7278
  getLocale() {
@@ -7192,7 +7286,7 @@ ${_html.style}
7192
7286
  plugin.widgets.forEach((v) => {
7193
7287
  const w = { ...v };
7194
7288
  w.partType = "Widget";
7195
- w.creator = () => _sfc_main$z;
7289
+ w.creator = () => _sfc_main$A;
7196
7290
  partDefinitions$1[v.partName] = w;
7197
7291
  });
7198
7292
  }
@@ -7202,6 +7296,14 @@ ${_html.style}
7202
7296
  if (plugin.providers) {
7203
7297
  this.providers = { ...this.providers, ...plugin.providers };
7204
7298
  }
7299
+ if (plugin.css) {
7300
+ if (plugin.css.links) {
7301
+ this.externalCssLinks = plugin.css.links;
7302
+ }
7303
+ if (plugin.css.content) {
7304
+ this.externalCssContent = plugin.css.content;
7305
+ }
7306
+ }
7205
7307
  }
7206
7308
  watchCustomWidgetData(part) {
7207
7309
  const def = partDefinitions$1[part.partName];
@@ -7271,6 +7373,10 @@ ${_html.style}
7271
7373
  return def.component;
7272
7374
  }
7273
7375
  }
7376
+ getExternalCss() {
7377
+ return `${this.externalCssLinks}
7378
+ <style>${this.externalCssContent}</style>`;
7379
+ }
7274
7380
  }
7275
7381
  const createPageBuilderViewer = () => {
7276
7382
  const viewer = new PageBuilderViewerImpl();
@@ -7309,36 +7415,53 @@ ${_html.style}
7309
7415
  }
7310
7416
  };
7311
7417
  const getPartDefinition = (partName) => partDefinitions$1[partName];
7418
+ const _hoisted_1$1$1 = ["data-part-id"];
7312
7419
  const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
7313
7420
  __name: "PbPage",
7314
7421
  props: {
7315
- page: {},
7422
+ part: {},
7316
7423
  isMobilePage: { type: Boolean }
7317
7424
  },
7318
7425
  setup(__props) {
7426
+ const props = __props;
7427
+ const classNames = vue.computed(() => {
7428
+ var _a;
7429
+ return `${(_a = props.part) == null ? void 0 : _a.getClassNames()} ${props.isMobilePage ? "mobile" : "pc"}`;
7430
+ });
7431
+ const styleTag = vue.computed(() => props.part.getStyleTag());
7319
7432
  const properties = vue.computed(() => ({
7320
7433
  style: {
7321
- // styles here
7434
+ ...props.part.getStyles(),
7435
+ ...props.part.getInlineStyles()
7322
7436
  }
7323
7437
  }));
7324
7438
  return (_ctx, _cache) => {
7325
- var _a;
7326
- return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: "pb-page" }, properties.value), [
7327
- vue.createElementVNode("div", {
7328
- class: vue.normalizeClass([[_ctx.isMobilePage ? "mobile" : "pc"], "pb-page-content"])
7329
- }, [
7330
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_a = _ctx.page) == null ? void 0 : _a.children, (section) => {
7331
- return vue.openBlock(), vue.createBlock(_sfc_main$7$1, {
7332
- key: section.partId,
7333
- part: section
7334
- }, null, 8, ["part"]);
7335
- }), 128))
7336
- ], 2)
7337
- ], 16);
7439
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
7440
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
7441
+ key: 0,
7442
+ innerHTML: styleTag.value
7443
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
7444
+ vue.createElementVNode("div", vue.mergeProps({
7445
+ class: [classNames.value, "pb-page"],
7446
+ "data-part-id": _ctx.part.partId
7447
+ }, properties.value), [
7448
+ vue.createElementVNode("div", {
7449
+ class: vue.normalizeClass([[_ctx.isMobilePage ? "mobile" : "pc"], "pb-page-content"])
7450
+ }, [
7451
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (section) => {
7452
+ return vue.openBlock(), vue.createBlock(_sfc_main$7$1, {
7453
+ key: section.partId,
7454
+ part: section
7455
+ }, null, 8, ["part"]);
7456
+ }), 128))
7457
+ ], 2)
7458
+ ], 16, _hoisted_1$1$1)
7459
+ ], 64);
7338
7460
  };
7339
7461
  }
7340
7462
  });
7341
- const _hoisted_1$D = { class: "pb-viewer" };
7463
+ const _hoisted_1$E = ["innerHTML"];
7464
+ const _hoisted_2$t = { class: "pb-viewer" };
7342
7465
  const _sfc_main$1$1 = /* @__PURE__ */ vue.defineComponent({
7343
7466
  __name: "PageBuilderViewer",
7344
7467
  props: {
@@ -7349,43 +7472,50 @@ ${_html.style}
7349
7472
  },
7350
7473
  setup(__props) {
7351
7474
  const props = __props;
7352
- const pageBuilderViewer = createPageBuilderViewer();
7353
- pageBuilderViewer.setLocale(props.locale);
7475
+ const viewer = createPageBuilderViewer();
7476
+ viewer.setLocale(props.locale);
7354
7477
  if (props.plugin)
7355
- pageBuilderViewer.registerCustomPlugin(props.plugin);
7356
- providePageBuilderViewer(pageBuilderViewer);
7357
- providePageBuilder(pageBuilderViewer);
7358
- const page = vue.computed(() => {
7359
- const pages = pageBuilderViewer.model.rootPart.value.children;
7360
- if (!pages || !pages.length)
7478
+ viewer.registerCustomPlugin(props.plugin);
7479
+ providePageBuilderViewer(viewer);
7480
+ providePageBuilder(viewer);
7481
+ const externalCss = viewer.getExternalCss();
7482
+ const part = vue.computed(() => {
7483
+ const parts = viewer.model.rootPart.value.children;
7484
+ if (!parts || !parts.length)
7361
7485
  return;
7362
- return pages[pages.length === 1 || props.isMobilePage ? 0 : 1];
7486
+ return parts[parts.length === 1 || props.isMobilePage ? 0 : 1];
7363
7487
  });
7364
7488
  vue.onMounted(() => {
7365
7489
  if (props.pageContent) {
7366
- pageBuilderViewer.render(props.pageContent);
7490
+ viewer.render(props.pageContent);
7367
7491
  }
7368
7492
  });
7369
7493
  vue.watch(
7370
7494
  () => props.pageContent,
7371
7495
  (pageContent) => {
7372
7496
  if (pageContent) {
7373
- pageBuilderViewer.render(pageContent);
7497
+ viewer.render(pageContent);
7374
7498
  }
7375
7499
  }
7376
7500
  );
7377
7501
  return (_ctx, _cache) => {
7378
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
7379
- page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$2$1, {
7502
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
7503
+ vue.unref(externalCss) ? (vue.openBlock(), vue.createElementBlock("div", {
7380
7504
  key: 0,
7381
- "is-mobile-page": _ctx.isMobilePage,
7382
- page: page.value
7383
- }, null, 8, ["is-mobile-page", "page"])) : vue.createCommentVNode("", true)
7384
- ]);
7505
+ innerHTML: vue.unref(externalCss)
7506
+ }, null, 8, _hoisted_1$E)) : vue.createCommentVNode("", true),
7507
+ vue.createElementVNode("div", _hoisted_2$t, [
7508
+ part.value ? (vue.openBlock(), vue.createBlock(_sfc_main$2$1, {
7509
+ key: 0,
7510
+ "is-mobile-page": _ctx.isMobilePage,
7511
+ part: part.value
7512
+ }, null, 8, ["is-mobile-page", "part"])) : vue.createCommentVNode("", true)
7513
+ ])
7514
+ ], 64);
7385
7515
  };
7386
7516
  }
7387
7517
  });
7388
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
7518
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
7389
7519
  __name: "PbCustomWidget",
7390
7520
  props: {
7391
7521
  part: {},
@@ -8242,22 +8372,22 @@ ${_html.style}
8242
8372
  }
8243
8373
  return target;
8244
8374
  };
8245
- const _sfc_main$y = {};
8246
- const _hoisted_1$C = { class: "pb-add-widget-button" };
8375
+ const _sfc_main$z = {};
8376
+ const _hoisted_1$D = { class: "pb-add-widget-button" };
8247
8377
  const _hoisted_2$s = /* @__PURE__ */ vue.createElementVNode("span", { class: "icon material-icons-outlined" }, "add_box", -1);
8248
- const _hoisted_3$p = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "Add Widget", -1);
8378
+ const _hoisted_3$q = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "Add Widget", -1);
8249
8379
  const _hoisted_4$g = [
8250
8380
  _hoisted_2$s,
8251
- _hoisted_3$p
8381
+ _hoisted_3$q
8252
8382
  ];
8253
8383
  function _sfc_render$1(_ctx, _cache) {
8254
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, [
8384
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
8255
8385
  vue.createElementVNode("button", {
8256
8386
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8257
8387
  }, _hoisted_4$g)
8258
8388
  ]);
8259
8389
  }
8260
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$1]]);
8390
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$1]]);
8261
8391
  const MOUSE_TRACKER_KEY = "mouseTracker";
8262
8392
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8263
8393
  class MouseTracker {
@@ -8288,12 +8418,12 @@ ${_html.style}
8288
8418
  throw Error(MOUSE_TRACKER_NOT_FOUND);
8289
8419
  return mouseTracker;
8290
8420
  };
8291
- const _hoisted_1$B = ["data-model-id", "draggable"];
8421
+ const _hoisted_1$C = ["data-part-id", "draggable"];
8292
8422
  const _hoisted_2$r = {
8293
8423
  key: 1,
8294
8424
  class: "children"
8295
8425
  };
8296
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
8426
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
8297
8427
  __name: "PbWidget",
8298
8428
  props: {
8299
8429
  part: {}
@@ -8353,6 +8483,7 @@ ${_html.style}
8353
8483
  const pageBuilder = usePageBuilderEditor();
8354
8484
  const selected = vue.computed(() => pageBuilder.context.isSelected(props.part));
8355
8485
  const classNames = vue.computed(() => [selected.value ? "selected" : "", props.part.getClassNames()]);
8486
+ const styleTag = vue.computed(() => props.part.getStyleTag());
8356
8487
  const properties = vue.computed(() => {
8357
8488
  var _a, _b, _c, _d;
8358
8489
  let style = props.part.getStyles();
@@ -8728,45 +8859,51 @@ ${_html.style}
8728
8859
  return index;
8729
8860
  };
8730
8861
  return (_ctx, _cache) => {
8731
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
8732
- ref_key: "widget",
8733
- ref: widget,
8734
- class: [classNames.value, "pb-widget"],
8735
- "data-model-id": _ctx.part.partId,
8736
- draggable: draggable.value
8737
- }, properties.value), [
8738
- thisComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(thisComponent.value), {
8862
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
8863
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
8739
8864
  key: 0,
8740
- part: _ctx.part,
8741
- placeholder: true
8742
- }, null, 8, ["part"])) : vue.createCommentVNode("", true),
8743
- childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$r, [
8744
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
8745
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
8746
- key: child.part.partId,
8747
- part: child.part,
8748
- placeholder: true
8749
- }, null, 8, ["part"]);
8750
- }), 128))
8751
- ])) : vue.createCommentVNode("", true),
8752
- selected.value && _ctx.part.isNestedWidget() ? (vue.openBlock(), vue.createElementBlock("div", {
8753
- key: 2,
8754
- class: "pan-handle",
8755
- onMousedown: _pan_mousedown
8756
- }, null, 32)) : vue.createCommentVNode("", true),
8757
- selected.value && _ctx.part.isNestedWidget() ? (vue.openBlock(), vue.createElementBlock("div", {
8758
- key: 3,
8759
- class: "resize-handle",
8760
- onMousedown: _resize_mousedown
8761
- }, null, 32)) : vue.createCommentVNode("", true)
8762
- ], 16, _hoisted_1$B)), [
8763
- [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8764
- ]);
8865
+ innerHTML: styleTag.value
8866
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
8867
+ vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
8868
+ ref_key: "widget",
8869
+ ref: widget,
8870
+ class: [classNames.value, "pb-widget"],
8871
+ "data-part-id": _ctx.part.partId,
8872
+ draggable: draggable.value
8873
+ }, properties.value), [
8874
+ thisComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(thisComponent.value), {
8875
+ key: 0,
8876
+ part: _ctx.part,
8877
+ placeholder: true
8878
+ }, null, 8, ["part"])) : vue.createCommentVNode("", true),
8879
+ childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$r, [
8880
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
8881
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
8882
+ key: child.part.partId,
8883
+ part: child.part,
8884
+ placeholder: true
8885
+ }, null, 8, ["part"]);
8886
+ }), 128))
8887
+ ])) : vue.createCommentVNode("", true),
8888
+ selected.value && _ctx.part.isNestedWidget() ? (vue.openBlock(), vue.createElementBlock("div", {
8889
+ key: 2,
8890
+ class: "pan-handle",
8891
+ onMousedown: _pan_mousedown
8892
+ }, null, 32)) : vue.createCommentVNode("", true),
8893
+ selected.value && _ctx.part.isNestedWidget() ? (vue.openBlock(), vue.createElementBlock("div", {
8894
+ key: 3,
8895
+ class: "resize-handle",
8896
+ onMousedown: _resize_mousedown
8897
+ }, null, 32)) : vue.createCommentVNode("", true)
8898
+ ], 16, _hoisted_1$C)), [
8899
+ [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8900
+ ])
8901
+ ], 64);
8765
8902
  };
8766
8903
  }
8767
8904
  });
8768
- const _hoisted_1$A = ["data-model-id"];
8769
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
8905
+ const _hoisted_1$B = ["data-part-id"];
8906
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
8770
8907
  __name: "PbBlock",
8771
8908
  props: {
8772
8909
  part: {}
@@ -8779,7 +8916,13 @@ ${_html.style}
8779
8916
  selected.value ? "selected" : "",
8780
8917
  props.part.getClassNames()
8781
8918
  ]);
8782
- const properties = vue.computed(() => ({ style: props.part.getStyles() }));
8919
+ const styleTag = vue.computed(() => props.part.getStyleTag());
8920
+ const properties = vue.computed(() => ({
8921
+ style: {
8922
+ ...props.part.getStyles(),
8923
+ ...props.part.getInlineStyles()
8924
+ }
8925
+ }));
8783
8926
  vue.computed(() => pageBuilder.partManager.createPartComponents(props.part.children));
8784
8927
  const addWidget = () => {
8785
8928
  pageBuilder.commandRegistry.executeCommand(OpenAddWidgetModalCommand.COMMAND_ID);
@@ -8946,28 +9089,34 @@ ${_html.style}
8946
9089
  };
8947
9090
  return (_ctx, _cache) => {
8948
9091
  var _a, _b;
8949
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
8950
- class: [classNames.value, "pb-block"],
8951
- "data-model-id": _ctx.part.partId,
8952
- style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
8953
- }, properties.value), [
8954
- !_ctx.part.children || ((_b = _ctx.part.children) == null ? void 0 : _b.length) === 0 ? (vue.openBlock(), vue.createBlock(PbAddWidgetButton, {
9092
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
9093
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
8955
9094
  key: 0,
8956
- onAddWidget: addWidget
8957
- })) : vue.createCommentVNode("", true),
8958
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
8959
- return vue.openBlock(), vue.createBlock(_sfc_main$x, {
8960
- key: child.partId,
8961
- part: child
8962
- }, null, 8, ["part"]);
8963
- }), 128))
8964
- ], 16, _hoisted_1$A)), [
8965
- [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8966
- ]);
9095
+ innerHTML: styleTag.value
9096
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
9097
+ vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
9098
+ class: [classNames.value, "pb-block"],
9099
+ "data-part-id": _ctx.part.partId,
9100
+ style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9101
+ }, properties.value), [
9102
+ !_ctx.part.children || ((_b = _ctx.part.children) == null ? void 0 : _b.length) === 0 ? (vue.openBlock(), vue.createBlock(PbAddWidgetButton, {
9103
+ key: 0,
9104
+ onAddWidget: addWidget
9105
+ })) : vue.createCommentVNode("", true),
9106
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9107
+ return vue.openBlock(), vue.createBlock(_sfc_main$y, {
9108
+ key: child.partId,
9109
+ part: child
9110
+ }, null, 8, ["part"]);
9111
+ }), 128))
9112
+ ], 16, _hoisted_1$B)), [
9113
+ [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9114
+ ])
9115
+ ], 64);
8967
9116
  };
8968
9117
  }
8969
9118
  });
8970
- const _hoisted_1$z = { class: "pb-block" };
9119
+ const _hoisted_1$A = { class: "pb-block" };
8971
9120
  const _hoisted_2$q = /* @__PURE__ */ vue.createElementVNode("div", {
8972
9121
  class: "pb-widget",
8973
9122
  style: { "margin": "0 auto" }
@@ -8976,22 +9125,22 @@ ${_html.style}
8976
9125
  /* @__PURE__ */ vue.createElementVNode("h3", null, "Login Design Part")
8977
9126
  ])
8978
9127
  ], -1);
8979
- const _hoisted_3$o = [
9128
+ const _hoisted_3$p = [
8980
9129
  _hoisted_2$q
8981
9130
  ];
8982
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9131
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
8983
9132
  __name: "PbLoginDepart",
8984
9133
  props: {
8985
9134
  part: {}
8986
9135
  },
8987
9136
  setup(__props) {
8988
9137
  return (_ctx, _cache) => {
8989
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, _hoisted_3$o);
9138
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, _hoisted_3$p);
8990
9139
  };
8991
9140
  }
8992
9141
  });
8993
- const _hoisted_1$y = ["data-model-id"];
8994
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
9142
+ const _hoisted_1$z = ["data-part-id"];
9143
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
8995
9144
  __name: "PbSection",
8996
9145
  props: {
8997
9146
  part: {}
@@ -9007,7 +9156,13 @@ ${_html.style}
9007
9156
  props.part.getClassNames()
9008
9157
  ];
9009
9158
  });
9010
- const properties = vue.computed(() => ({ style: props.part.getStyles() }));
9159
+ const styleTag = vue.computed(() => props.part.getStyleTag());
9160
+ const properties = vue.computed(() => ({
9161
+ style: {
9162
+ ...props.part.getStyles(),
9163
+ ...props.part.getInlineStyles()
9164
+ }
9165
+ }));
9011
9166
  const disabled = vue.computed(() => {
9012
9167
  var _a;
9013
9168
  return ["static"].includes(((_a = props.part.properties) == null ? void 0 : _a.sectionType) || "");
@@ -9090,50 +9245,56 @@ ${_html.style}
9090
9245
  };
9091
9246
  return (_ctx, _cache) => {
9092
9247
  var _a, _b, _c;
9093
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
9094
- class: [classNames.value, "pb-section"],
9095
- "data-model-id": _ctx.part.partId,
9096
- style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9097
- }, properties.value), [
9098
- ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9099
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$v, {
9100
- key: 0,
9101
- part: _ctx.part
9102
- }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9103
- ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9104
- _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9105
- return vue.openBlock(), vue.createBlock(_sfc_main$w, {
9106
- key: block.partId,
9107
- part: block
9108
- }, null, 8, ["part"]);
9109
- }), 128)) : (vue.openBlock(), vue.createBlock(PbAddWidgetButton, {
9110
- key: 1,
9111
- onAddWidget: addWidget
9112
- }))
9113
- ], 64))
9114
- ], 16, _hoisted_1$y)), [
9115
- [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9116
- ]);
9248
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
9249
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
9250
+ key: 0,
9251
+ innerHTML: styleTag.value
9252
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
9253
+ vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
9254
+ class: [classNames.value, "pb-section"],
9255
+ "data-part-id": _ctx.part.partId,
9256
+ style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9257
+ }, properties.value), [
9258
+ ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9259
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$w, {
9260
+ key: 0,
9261
+ part: _ctx.part
9262
+ }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9263
+ ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9264
+ _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9265
+ return vue.openBlock(), vue.createBlock(_sfc_main$x, {
9266
+ key: block.partId,
9267
+ part: block
9268
+ }, null, 8, ["part"]);
9269
+ }), 128)) : (vue.openBlock(), vue.createBlock(PbAddWidgetButton, {
9270
+ key: 1,
9271
+ onAddWidget: addWidget
9272
+ }))
9273
+ ], 64))
9274
+ ], 16, _hoisted_1$z)), [
9275
+ [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9276
+ ])
9277
+ ], 64);
9117
9278
  };
9118
9279
  }
9119
9280
  });
9120
- const _hoisted_1$x = { class: "group-editor group-editor-position" };
9281
+ const _hoisted_1$y = { class: "group-editor group-editor-position" };
9121
9282
  const _hoisted_2$p = { class: "flex-align-center" };
9122
- const _hoisted_3$n = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9283
+ const _hoisted_3$o = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9123
9284
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Position" })
9124
9285
  ], -1);
9125
9286
  const _hoisted_4$f = { class: "flex-grow-1" };
9126
- const _hoisted_5$7 = { class: "bg-gray-100 py-5 rounded-8" };
9127
- const _hoisted_6$6 = { class: "text-center" };
9128
- const _hoisted_7$6 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9129
- const _hoisted_8$6 = /* @__PURE__ */ vue.createElementVNode("div", {
9287
+ const _hoisted_5$8 = { class: "bg-gray-100 py-5 rounded-8" };
9288
+ const _hoisted_6$7 = { class: "text-center" };
9289
+ const _hoisted_7$7 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9290
+ const _hoisted_8$7 = /* @__PURE__ */ vue.createElementVNode("div", {
9130
9291
  class: "d-inline-block text-center text-gray-300",
9131
9292
  style: { "width": "30%", "font-size": "12px" }
9132
9293
  }, [
9133
9294
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
9134
9295
  ], -1);
9135
9296
  const _hoisted_9$5 = { class: "text-center" };
9136
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
9297
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
9137
9298
  __name: "PbPropertyGroupEditorPosition",
9138
9299
  props: {
9139
9300
  group: {},
@@ -9157,12 +9318,12 @@ ${_html.style}
9157
9318
  const updateTop = (value) => updatePropertyValue({ top: value });
9158
9319
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9159
9320
  return (_ctx, _cache) => {
9160
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
9321
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9161
9322
  vue.createElementVNode("div", _hoisted_2$p, [
9162
- _hoisted_3$n,
9323
+ _hoisted_3$o,
9163
9324
  vue.createElementVNode("div", _hoisted_4$f, [
9164
- vue.createElementVNode("div", _hoisted_5$7, [
9165
- vue.createElementVNode("div", _hoisted_6$6, [
9325
+ vue.createElementVNode("div", _hoisted_5$8, [
9326
+ vue.createElementVNode("div", _hoisted_6$7, [
9166
9327
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9167
9328
  "model-value": top.value,
9168
9329
  class: "ml-4",
@@ -9171,7 +9332,7 @@ ${_html.style}
9171
9332
  "onUpdate:modelValue": updateTop
9172
9333
  }, null, 8, ["model-value"])
9173
9334
  ]),
9174
- vue.createElementVNode("div", _hoisted_7$6, [
9335
+ vue.createElementVNode("div", _hoisted_7$7, [
9175
9336
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9176
9337
  "model-value": left.value,
9177
9338
  class: "ml-4",
@@ -9179,7 +9340,7 @@ ${_html.style}
9179
9340
  width: "30%",
9180
9341
  "onUpdate:modelValue": updateLeft
9181
9342
  }, null, 8, ["model-value"]),
9182
- _hoisted_8$6,
9343
+ _hoisted_8$7,
9183
9344
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9184
9345
  "model-value": right.value,
9185
9346
  class: "ml-4",
@@ -9204,13 +9365,23 @@ ${_html.style}
9204
9365
  };
9205
9366
  }
9206
9367
  });
9207
- const _hoisted_1$w = { class: "group-editor group-editor-size" };
9368
+ const _hoisted_1$x = { class: "group-editor group-editor-size" };
9208
9369
  const _hoisted_2$o = { class: "flex-align-center" };
9209
- const _hoisted_3$m = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9370
+ const _hoisted_3$n = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9210
9371
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Size" })
9211
9372
  ], -1);
9212
9373
  const _hoisted_4$e = { class: "flex-grow-1 bs-layout-horizontal" };
9213
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
9374
+ const _hoisted_5$7 = { class: "flex-align-center mt-12" };
9375
+ const _hoisted_6$6 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9376
+ /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Max Size" })
9377
+ ], -1);
9378
+ const _hoisted_7$6 = { class: "flex-grow-1 bs-layout-horizontal" };
9379
+ const _hoisted_8$6 = { class: "flex-align-center mt-12" };
9380
+ const _hoisted_9$4 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9381
+ /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Min Size" })
9382
+ ], -1);
9383
+ const _hoisted_10$2 = { class: "flex-grow-1 bs-layout-horizontal" };
9384
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
9214
9385
  __name: "PbPropertyGroupEditorSize",
9215
9386
  props: {
9216
9387
  group: {},
@@ -9221,6 +9392,10 @@ ${_html.style}
9221
9392
  const pageBuilder = usePageBuilderEditor();
9222
9393
  const width = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "width"));
9223
9394
  const height = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "height"));
9395
+ const maxWidth = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "maxWidth"));
9396
+ const maxHeight = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "maxHeight"));
9397
+ const minWidth = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "minWidth"));
9398
+ const minHeight = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "minHeight"));
9224
9399
  const updatePropertyValue = (properties) => {
9225
9400
  pageBuilder.commandRegistry.executeCommand(
9226
9401
  ChangePropertyCommand.COMMAND_ID,
@@ -9229,10 +9404,14 @@ ${_html.style}
9229
9404
  };
9230
9405
  const updateWidth = (value) => updatePropertyValue({ width: value });
9231
9406
  const updateHeight = (value) => updatePropertyValue({ height: value });
9407
+ const updateMaxWidth = (value) => updatePropertyValue({ maxWidth: value });
9408
+ const updateMaxHeight = (value) => updatePropertyValue({ maxWeight: value });
9409
+ const updateMinWidth = (value) => updatePropertyValue({ minWidth: value });
9410
+ const updateMinHeight = (value) => updatePropertyValue({ minHeight: value });
9232
9411
  return (_ctx, _cache) => {
9233
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
9412
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
9234
9413
  vue.createElementVNode("div", _hoisted_2$o, [
9235
- _hoisted_3$m,
9414
+ _hoisted_3$n,
9236
9415
  vue.createElementVNode("div", _hoisted_4$e, [
9237
9416
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9238
9417
  "model-value": width.value,
@@ -9247,6 +9426,40 @@ ${_html.style}
9247
9426
  "onUpdate:modelValue": updateHeight
9248
9427
  }, null, 8, ["model-value"])
9249
9428
  ])
9429
+ ]),
9430
+ vue.createElementVNode("div", _hoisted_5$7, [
9431
+ _hoisted_6$6,
9432
+ vue.createElementVNode("div", _hoisted_7$6, [
9433
+ vue.createVNode(vue.unref(bluesea.BSTextInput), {
9434
+ "model-value": maxWidth.value,
9435
+ class: "flex-grow-1 mr-2",
9436
+ prefix: "W",
9437
+ "onUpdate:modelValue": updateMaxWidth
9438
+ }, null, 8, ["model-value"]),
9439
+ vue.createVNode(vue.unref(bluesea.BSTextInput), {
9440
+ "model-value": maxHeight.value,
9441
+ class: "flex-grow-1 ml-2",
9442
+ prefix: "H",
9443
+ "onUpdate:modelValue": updateMaxHeight
9444
+ }, null, 8, ["model-value"])
9445
+ ])
9446
+ ]),
9447
+ vue.createElementVNode("div", _hoisted_8$6, [
9448
+ _hoisted_9$4,
9449
+ vue.createElementVNode("div", _hoisted_10$2, [
9450
+ vue.createVNode(vue.unref(bluesea.BSTextInput), {
9451
+ "model-value": minWidth.value,
9452
+ class: "flex-grow-1 mr-2",
9453
+ prefix: "W",
9454
+ "onUpdate:modelValue": updateMinWidth
9455
+ }, null, 8, ["model-value"]),
9456
+ vue.createVNode(vue.unref(bluesea.BSTextInput), {
9457
+ "model-value": minHeight.value,
9458
+ class: "flex-grow-1 ml-2",
9459
+ prefix: "H",
9460
+ "onUpdate:modelValue": updateMinHeight
9461
+ }, null, 8, ["model-value"])
9462
+ ])
9250
9463
  ])
9251
9464
  ]);
9252
9465
  };
@@ -9409,9 +9622,9 @@ ${_html.style}
9409
9622
  }
9410
9623
  }
9411
9624
  };
9412
- const _hoisted_1$v = { class: "vc-alpha" };
9625
+ const _hoisted_1$w = { class: "vc-alpha" };
9413
9626
  const _hoisted_2$n = { class: "vc-alpha-checkboard-wrap" };
9414
- const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
9627
+ const _hoisted_3$m = /* @__PURE__ */ vue.createElementVNode(
9415
9628
  "div",
9416
9629
  { class: "vc-alpha-picker" },
9417
9630
  null,
@@ -9419,11 +9632,11 @@ ${_html.style}
9419
9632
  /* HOISTED */
9420
9633
  );
9421
9634
  const _hoisted_4$d = [
9422
- _hoisted_3$l
9635
+ _hoisted_3$m
9423
9636
  ];
9424
9637
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9425
9638
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9426
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
9639
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
9427
9640
  vue.createElementVNode("div", _hoisted_2$n, [
9428
9641
  vue.createVNode(_component_Checkboard)
9429
9642
  ]),
@@ -10527,12 +10740,12 @@ ${_html.style}
10527
10740
  // }
10528
10741
  }
10529
10742
  };
10530
- const _hoisted_1$u = { class: "vc-editable-input" };
10743
+ const _hoisted_1$v = { class: "vc-editable-input" };
10531
10744
  const _hoisted_2$m = ["aria-labelledby"];
10532
- const _hoisted_3$k = ["id", "for"];
10745
+ const _hoisted_3$l = ["id", "for"];
10533
10746
  const _hoisted_4$c = { class: "vc-input__desc" };
10534
10747
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10535
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
10748
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
10536
10749
  vue.withDirectives(vue.createElementVNode("input", {
10537
10750
  ref: "input",
10538
10751
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10547,7 +10760,7 @@ ${_html.style}
10547
10760
  id: $options.labelId,
10548
10761
  for: $props.label,
10549
10762
  class: "vc-input__label"
10550
- }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$k),
10763
+ }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$l),
10551
10764
  vue.createElementVNode(
10552
10765
  "span",
10553
10766
  _hoisted_4$c,
@@ -10627,7 +10840,7 @@ ${_html.style}
10627
10840
  }
10628
10841
  }
10629
10842
  };
10630
- const _hoisted_1$t = /* @__PURE__ */ vue.createElementVNode(
10843
+ const _hoisted_1$u = /* @__PURE__ */ vue.createElementVNode(
10631
10844
  "div",
10632
10845
  { class: "vc-saturation--white" },
10633
10846
  null,
@@ -10641,7 +10854,7 @@ ${_html.style}
10641
10854
  -1
10642
10855
  /* HOISTED */
10643
10856
  );
10644
- const _hoisted_3$j = /* @__PURE__ */ vue.createElementVNode(
10857
+ const _hoisted_3$k = /* @__PURE__ */ vue.createElementVNode(
10645
10858
  "div",
10646
10859
  { class: "vc-saturation-circle" },
10647
10860
  null,
@@ -10649,7 +10862,7 @@ ${_html.style}
10649
10862
  /* HOISTED */
10650
10863
  );
10651
10864
  const _hoisted_4$b = [
10652
- _hoisted_3$j
10865
+ _hoisted_3$k
10653
10866
  ];
10654
10867
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10655
10868
  return vue.openBlock(), vue.createElementBlock(
@@ -10663,7 +10876,7 @@ ${_html.style}
10663
10876
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10664
10877
  },
10665
10878
  [
10666
- _hoisted_1$t,
10879
+ _hoisted_1$u,
10667
10880
  _hoisted_2$l,
10668
10881
  vue.createElementVNode(
10669
10882
  "div",
@@ -10812,7 +11025,7 @@ ${_html.style}
10812
11025
  }
10813
11026
  }
10814
11027
  };
10815
- const _hoisted_1$s = ["aria-valuenow"];
11028
+ const _hoisted_1$t = ["aria-valuenow"];
10816
11029
  const _hoisted_2$k = /* @__PURE__ */ vue.createElementVNode(
10817
11030
  "div",
10818
11031
  { class: "vc-hue-picker" },
@@ -10820,7 +11033,7 @@ ${_html.style}
10820
11033
  -1
10821
11034
  /* HOISTED */
10822
11035
  );
10823
- const _hoisted_3$i = [
11036
+ const _hoisted_3$j = [
10824
11037
  _hoisted_2$k
10825
11038
  ];
10826
11039
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
@@ -10848,11 +11061,11 @@ ${_html.style}
10848
11061
  style: vue.normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),
10849
11062
  role: "presentation"
10850
11063
  },
10851
- _hoisted_3$i,
11064
+ _hoisted_3$j,
10852
11065
  4
10853
11066
  /* STYLE */
10854
11067
  )
10855
- ], 40, _hoisted_1$s)
11068
+ ], 40, _hoisted_1$t)
10856
11069
  ],
10857
11070
  2
10858
11071
  /* CLASS */
@@ -10948,9 +11161,9 @@ ${_html.style}
10948
11161
  }
10949
11162
  }
10950
11163
  };
10951
- const _hoisted_1$r = { class: "vc-sketch-saturation-wrap" };
11164
+ const _hoisted_1$s = { class: "vc-sketch-saturation-wrap" };
10952
11165
  const _hoisted_2$j = { class: "vc-sketch-controls" };
10953
- const _hoisted_3$h = { class: "vc-sketch-sliders" };
11166
+ const _hoisted_3$i = { class: "vc-sketch-sliders" };
10954
11167
  const _hoisted_4$a = { class: "vc-sketch-hue-wrap" };
10955
11168
  const _hoisted_5$6 = {
10956
11169
  key: 0,
@@ -10962,11 +11175,11 @@ ${_html.style}
10962
11175
  key: 0,
10963
11176
  class: "vc-sketch-field"
10964
11177
  };
10965
- const _hoisted_9$4 = { class: "vc-sketch-field--double" };
10966
- const _hoisted_10$2 = { class: "vc-sketch-field--single" };
10967
- const _hoisted_11$2 = { class: "vc-sketch-field--single" };
10968
- const _hoisted_12$2 = { class: "vc-sketch-field--single" };
10969
- const _hoisted_13$2 = {
11178
+ const _hoisted_9$3 = { class: "vc-sketch-field--double" };
11179
+ const _hoisted_10$1 = { class: "vc-sketch-field--single" };
11180
+ const _hoisted_11$1 = { class: "vc-sketch-field--single" };
11181
+ const _hoisted_12$1 = { class: "vc-sketch-field--single" };
11182
+ const _hoisted_13$1 = {
10970
11183
  key: 0,
10971
11184
  class: "vc-sketch-field--single"
10972
11185
  };
@@ -10991,14 +11204,14 @@ ${_html.style}
10991
11204
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
10992
11205
  },
10993
11206
  [
10994
- vue.createElementVNode("div", _hoisted_1$r, [
11207
+ vue.createElementVNode("div", _hoisted_1$s, [
10995
11208
  vue.createVNode(_component_Saturation, {
10996
11209
  value: _ctx.colors,
10997
11210
  onChange: $options.childChange
10998
11211
  }, null, 8, ["value", "onChange"])
10999
11212
  ]),
11000
11213
  vue.createElementVNode("div", _hoisted_2$j, [
11001
- vue.createElementVNode("div", _hoisted_3$h, [
11214
+ vue.createElementVNode("div", _hoisted_3$i, [
11002
11215
  vue.createElementVNode("div", _hoisted_4$a, [
11003
11216
  vue.createVNode(_component_Hue, {
11004
11217
  value: _ctx.colors,
@@ -11023,35 +11236,35 @@ ${_html.style}
11023
11236
  ]),
11024
11237
  !$props.disableFields ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$5, [
11025
11238
  vue.createCommentVNode(" rgba "),
11026
- vue.createElementVNode("div", _hoisted_9$4, [
11239
+ vue.createElementVNode("div", _hoisted_9$3, [
11027
11240
  vue.createVNode(_component_EdIn, {
11028
11241
  label: "hex",
11029
11242
  value: $options.hex,
11030
11243
  onChange: $options.inputChange
11031
11244
  }, null, 8, ["value", "onChange"])
11032
11245
  ]),
11033
- vue.createElementVNode("div", _hoisted_10$2, [
11246
+ vue.createElementVNode("div", _hoisted_10$1, [
11034
11247
  vue.createVNode(_component_EdIn, {
11035
11248
  label: "r",
11036
11249
  value: _ctx.colors.rgba.r,
11037
11250
  onChange: $options.inputChange
11038
11251
  }, null, 8, ["value", "onChange"])
11039
11252
  ]),
11040
- vue.createElementVNode("div", _hoisted_11$2, [
11253
+ vue.createElementVNode("div", _hoisted_11$1, [
11041
11254
  vue.createVNode(_component_EdIn, {
11042
11255
  label: "g",
11043
11256
  value: _ctx.colors.rgba.g,
11044
11257
  onChange: $options.inputChange
11045
11258
  }, null, 8, ["value", "onChange"])
11046
11259
  ]),
11047
- vue.createElementVNode("div", _hoisted_12$2, [
11260
+ vue.createElementVNode("div", _hoisted_12$1, [
11048
11261
  vue.createVNode(_component_EdIn, {
11049
11262
  label: "b",
11050
11263
  value: _ctx.colors.rgba.b,
11051
11264
  onChange: $options.inputChange
11052
11265
  }, null, 8, ["value", "onChange"])
11053
11266
  ]),
11054
- !$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13$2, [
11267
+ !$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13$1, [
11055
11268
  vue.createVNode(_component_EdIn, {
11056
11269
  label: "a",
11057
11270
  value: _ctx.colors.a,
@@ -11103,7 +11316,7 @@ ${_html.style}
11103
11316
  script.render = render;
11104
11317
  script.__file = "src/components/sketch/sketch.vue";
11105
11318
  script.install = install;
11106
- const _sfc_main$r = vue.defineComponent({
11319
+ const _sfc_main$s = vue.defineComponent({
11107
11320
  name: "PbColorPicker",
11108
11321
  components: {
11109
11322
  Sketch: script
@@ -11167,9 +11380,9 @@ ${_html.style}
11167
11380
  };
11168
11381
  }
11169
11382
  });
11170
- const _hoisted_1$q = { class: "buttons" };
11383
+ const _hoisted_1$r = { class: "buttons" };
11171
11384
  const _hoisted_2$i = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1);
11172
- const _hoisted_3$g = [
11385
+ const _hoisted_3$h = [
11173
11386
  _hoisted_2$i
11174
11387
  ];
11175
11388
  const _hoisted_4$9 = { class: "sketch-wrap" };
@@ -11181,7 +11394,7 @@ ${_html.style}
11181
11394
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11182
11395
  }, ["stop"]))
11183
11396
  }, [
11184
- vue.createElementVNode("div", _hoisted_1$q, [
11397
+ vue.createElementVNode("div", _hoisted_1$r, [
11185
11398
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11186
11399
  vue.createElementVNode("button", {
11187
11400
  class: vue.normalizeClass([{ none: !_ctx.color }, "pb-button picker-button"]),
@@ -11193,7 +11406,7 @@ ${_html.style}
11193
11406
  key: 0,
11194
11407
  class: "pb-button",
11195
11408
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.emptyColor && _ctx.emptyColor(...args))
11196
- }, _hoisted_3$g)) : vue.createCommentVNode("", true)
11409
+ }, _hoisted_3$h)) : vue.createCommentVNode("", true)
11197
11410
  ]),
11198
11411
  vue.createElementVNode("div", _hoisted_4$9, [
11199
11412
  _ctx.isShowColorPicker ? (vue.openBlock(), vue.createBlock(_component_Sketch, {
@@ -11207,15 +11420,15 @@ ${_html.style}
11207
11420
  [_directive_click_outside, () => _ctx.toggle(false)]
11208
11421
  ]);
11209
11422
  }
11210
- const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render]]);
11211
- const _hoisted_1$p = { class: "group-editor group-editor-background" };
11423
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render]]);
11424
+ const _hoisted_1$q = { class: "group-editor group-editor-background" };
11212
11425
  const _hoisted_2$h = { class: "flex-align-center" };
11213
- const _hoisted_3$f = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11426
+ const _hoisted_3$g = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11214
11427
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Background" })
11215
11428
  ], -1);
11216
11429
  const _hoisted_4$8 = { class: "bs-layout-horizontal" };
11217
11430
  const _hoisted_5$5 = { class: "color" };
11218
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11431
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11219
11432
  __name: "PbPropertyGroupEditorBackground",
11220
11433
  props: {
11221
11434
  group: {},
@@ -11246,9 +11459,9 @@ ${_html.style}
11246
11459
  }
11247
11460
  };
11248
11461
  return (_ctx, _cache) => {
11249
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11462
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11250
11463
  vue.createElementVNode("div", _hoisted_2$h, [
11251
- _hoisted_3$f,
11464
+ _hoisted_3$g,
11252
11465
  vue.createElementVNode("div", _hoisted_4$8, [
11253
11466
  vue.createElementVNode("div", _hoisted_5$5, [
11254
11467
  vue.createVNode(PbColorPicker, {
@@ -11279,9 +11492,9 @@ ${_html.style}
11279
11492
  const TopRightCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11280
11493
  const BottomLeftCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%20transform='rotate(180)'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11281
11494
  const BottomRightCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%20transform='rotate(90)'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11282
- const _hoisted_1$o = { class: "group-editor group-editor-border" };
11495
+ const _hoisted_1$p = { class: "group-editor group-editor-border" };
11283
11496
  const _hoisted_2$g = { class: "flex-align-center" };
11284
- const _hoisted_3$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11497
+ const _hoisted_3$f = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11285
11498
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Border" })
11286
11499
  ], -1);
11287
11500
  const _hoisted_4$7 = { class: "" };
@@ -11293,11 +11506,11 @@ ${_html.style}
11293
11506
  const _hoisted_8$4 = /* @__PURE__ */ vue.createElementVNode("div", { class: "sub-title" }, [
11294
11507
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Border Width" })
11295
11508
  ], -1);
11296
- const _hoisted_9$3 = { class: "flex-grow-1 mt-4" };
11297
- const _hoisted_10$1 = { class: "bg-gray-100 py-5 rounded-8" };
11298
- const _hoisted_11$1 = { class: "text-center" };
11299
- const _hoisted_12$1 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11300
- const _hoisted_13$1 = /* @__PURE__ */ vue.createElementVNode("div", {
11509
+ const _hoisted_9$2 = { class: "flex-grow-1 mt-4" };
11510
+ const _hoisted_10 = { class: "bg-gray-100 py-5 rounded-8" };
11511
+ const _hoisted_11 = { class: "text-center" };
11512
+ const _hoisted_12 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11513
+ const _hoisted_13 = /* @__PURE__ */ vue.createElementVNode("div", {
11301
11514
  class: "d-inline-block text-center text-gray-300",
11302
11515
  style: { "width": "30%", "font-size": "12px" }
11303
11516
  }, [
@@ -11312,7 +11525,7 @@ ${_html.style}
11312
11525
  const _hoisted_18 = { class: "bg-gray-100 py-5 rounded-8" };
11313
11526
  const _hoisted_19 = { class: "" };
11314
11527
  const _hoisted_20 = { class: "mt-2" };
11315
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
11528
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11316
11529
  __name: "PbPropertyGroupEditorBorder",
11317
11530
  props: {
11318
11531
  group: {},
@@ -11350,9 +11563,9 @@ ${_html.style}
11350
11563
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11351
11564
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11352
11565
  return (_ctx, _cache) => {
11353
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
11566
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11354
11567
  vue.createElementVNode("div", _hoisted_2$g, [
11355
- _hoisted_3$e,
11568
+ _hoisted_3$f,
11356
11569
  vue.createElementVNode("div", _hoisted_4$7, [
11357
11570
  _hoisted_5$4,
11358
11571
  vue.createElementVNode("div", _hoisted_6$4, [
@@ -11375,9 +11588,9 @@ ${_html.style}
11375
11588
  ]),
11376
11589
  vue.createElementVNode("div", _hoisted_7$4, [
11377
11590
  _hoisted_8$4,
11378
- vue.createElementVNode("div", _hoisted_9$3, [
11379
- vue.createElementVNode("div", _hoisted_10$1, [
11380
- vue.createElementVNode("div", _hoisted_11$1, [
11591
+ vue.createElementVNode("div", _hoisted_9$2, [
11592
+ vue.createElementVNode("div", _hoisted_10, [
11593
+ vue.createElementVNode("div", _hoisted_11, [
11381
11594
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11382
11595
  "model-value": borderTopWidth.value,
11383
11596
  class: "ml-4",
@@ -11386,7 +11599,7 @@ ${_html.style}
11386
11599
  "onUpdate:modelValue": updateBorderTopWidth
11387
11600
  }, null, 8, ["model-value"])
11388
11601
  ]),
11389
- vue.createElementVNode("div", _hoisted_12$1, [
11602
+ vue.createElementVNode("div", _hoisted_12, [
11390
11603
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11391
11604
  "model-value": borderLeftWidth.value,
11392
11605
  class: "ml-4",
@@ -11394,7 +11607,7 @@ ${_html.style}
11394
11607
  width: "30%",
11395
11608
  "onUpdate:modelValue": updateBorderLeftWidth
11396
11609
  }, null, 8, ["model-value"]),
11397
- _hoisted_13$1,
11610
+ _hoisted_13,
11398
11611
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11399
11612
  "model-value": borderRightWidth.value,
11400
11613
  class: "ml-4",
@@ -11459,9 +11672,9 @@ ${_html.style}
11459
11672
  };
11460
11673
  }
11461
11674
  });
11462
- const _hoisted_1$n = { class: "group-editor group-editor-margin" };
11675
+ const _hoisted_1$o = { class: "group-editor group-editor-margin" };
11463
11676
  const _hoisted_2$f = { class: "flex-align-center" };
11464
- const _hoisted_3$d = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11677
+ const _hoisted_3$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11465
11678
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Margin" })
11466
11679
  ], -1);
11467
11680
  const _hoisted_4$6 = { class: "flex-grow-1" };
@@ -11474,8 +11687,8 @@ ${_html.style}
11474
11687
  }, [
11475
11688
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11476
11689
  ], -1);
11477
- const _hoisted_9$2 = { class: "text-center" };
11478
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11690
+ const _hoisted_9$1 = { class: "text-center" };
11691
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
11479
11692
  __name: "PbPropertyGroupEditorMargin",
11480
11693
  props: {
11481
11694
  group: {},
@@ -11499,9 +11712,9 @@ ${_html.style}
11499
11712
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11500
11713
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11501
11714
  return (_ctx, _cache) => {
11502
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
11715
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
11503
11716
  vue.createElementVNode("div", _hoisted_2$f, [
11504
- _hoisted_3$d,
11717
+ _hoisted_3$e,
11505
11718
  vue.createElementVNode("div", _hoisted_4$6, [
11506
11719
  vue.createElementVNode("div", _hoisted_5$3, [
11507
11720
  vue.createElementVNode("div", _hoisted_6$3, [
@@ -11530,7 +11743,7 @@ ${_html.style}
11530
11743
  "onUpdate:modelValue": updateRight
11531
11744
  }, null, 8, ["model-value"])
11532
11745
  ]),
11533
- vue.createElementVNode("div", _hoisted_9$2, [
11746
+ vue.createElementVNode("div", _hoisted_9$1, [
11534
11747
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11535
11748
  "model-value": bottom.value,
11536
11749
  class: "ml-4",
@@ -11546,9 +11759,9 @@ ${_html.style}
11546
11759
  };
11547
11760
  }
11548
11761
  });
11549
- const _hoisted_1$m = { class: "group-editor group-editor-padding" };
11762
+ const _hoisted_1$n = { class: "group-editor group-editor-padding" };
11550
11763
  const _hoisted_2$e = { class: "flex-align-center" };
11551
- const _hoisted_3$c = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11764
+ const _hoisted_3$d = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11552
11765
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Padding" })
11553
11766
  ], -1);
11554
11767
  const _hoisted_4$5 = { class: "flex-grow-1" };
@@ -11561,8 +11774,8 @@ ${_html.style}
11561
11774
  }, [
11562
11775
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11563
11776
  ], -1);
11564
- const _hoisted_9$1 = { class: "text-center" };
11565
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11777
+ const _hoisted_9 = { class: "text-center" };
11778
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11566
11779
  __name: "PbPropertyGroupEditorPadding",
11567
11780
  props: {
11568
11781
  group: {},
@@ -11586,9 +11799,9 @@ ${_html.style}
11586
11799
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11587
11800
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11588
11801
  return (_ctx, _cache) => {
11589
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
11802
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
11590
11803
  vue.createElementVNode("div", _hoisted_2$e, [
11591
- _hoisted_3$c,
11804
+ _hoisted_3$d,
11592
11805
  vue.createElementVNode("div", _hoisted_4$5, [
11593
11806
  vue.createElementVNode("div", _hoisted_5$2, [
11594
11807
  vue.createElementVNode("div", _hoisted_6$2, [
@@ -11617,7 +11830,7 @@ ${_html.style}
11617
11830
  "onUpdate:modelValue": updateRight
11618
11831
  }, null, 8, ["model-value"])
11619
11832
  ]),
11620
- vue.createElementVNode("div", _hoisted_9$1, [
11833
+ vue.createElementVNode("div", _hoisted_9, [
11621
11834
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11622
11835
  "model-value": bottom.value,
11623
11836
  class: "ml-4",
@@ -11659,7 +11872,7 @@ ${_html.style}
11659
11872
  propertyType: "text"
11660
11873
  }
11661
11874
  ],
11662
- propertyGroupEditor: () => _sfc_main$t
11875
+ propertyGroupEditor: () => _sfc_main$u
11663
11876
  };
11664
11877
  };
11665
11878
  const sizeGroup = () => {
@@ -11698,7 +11911,7 @@ ${_html.style}
11698
11911
  propertyType: "text"
11699
11912
  }
11700
11913
  ],
11701
- propertyGroupEditor: () => _sfc_main$s
11914
+ propertyGroupEditor: () => _sfc_main$t
11702
11915
  };
11703
11916
  };
11704
11917
  const marginGroup = () => {
@@ -11727,7 +11940,7 @@ ${_html.style}
11727
11940
  propertyType: "text"
11728
11941
  }
11729
11942
  ],
11730
- propertyGroupEditor: () => _sfc_main$o
11943
+ propertyGroupEditor: () => _sfc_main$p
11731
11944
  };
11732
11945
  };
11733
11946
  const paddingGroup = () => {
@@ -11756,7 +11969,7 @@ ${_html.style}
11756
11969
  propertyType: "text"
11757
11970
  }
11758
11971
  ],
11759
- propertyGroupEditor: () => _sfc_main$n
11972
+ propertyGroupEditor: () => _sfc_main$o
11760
11973
  };
11761
11974
  };
11762
11975
  const commonGroup = () => {
@@ -11775,8 +11988,18 @@ ${_html.style}
11775
11988
  propertyType: "text"
11776
11989
  },
11777
11990
  {
11778
- propertyName: "css",
11779
- caption: "CSS",
11991
+ propertyName: "classNames",
11992
+ caption: "Class Names",
11993
+ propertyType: "text"
11994
+ },
11995
+ {
11996
+ propertyName: "inlineStyle",
11997
+ caption: "Inline Style",
11998
+ propertyType: "multiline-text"
11999
+ },
12000
+ {
12001
+ propertyName: "style",
12002
+ caption: "Style",
11780
12003
  propertyType: "multiline-text"
11781
12004
  },
11782
12005
  {
@@ -11823,7 +12046,7 @@ ${_html.style}
11823
12046
  propertyType: "image"
11824
12047
  }
11825
12048
  ],
11826
- propertyGroupEditor: () => _sfc_main$q
12049
+ propertyGroupEditor: () => _sfc_main$r
11827
12050
  };
11828
12051
  };
11829
12052
  const borderGroup = () => {
@@ -11877,7 +12100,7 @@ ${_html.style}
11877
12100
  propertyType: "text"
11878
12101
  }
11879
12102
  ],
11880
- propertyGroupEditor: () => _sfc_main$p
12103
+ propertyGroupEditor: () => _sfc_main$q
11881
12104
  };
11882
12105
  };
11883
12106
  const defaultPropertyGroups = () => {
@@ -11900,7 +12123,7 @@ ${_html.style}
11900
12123
  initialProperties: {},
11901
12124
  localized: false,
11902
12125
  allowsChild: () => true,
11903
- creator: () => _sfc_main$u
12126
+ creator: () => _sfc_main$v
11904
12127
  }
11905
12128
  ];
11906
12129
  const sectionParts = [
@@ -11917,7 +12140,7 @@ ${_html.style}
11917
12140
  },
11918
12141
  localized: false,
11919
12142
  allowsChild: () => true,
11920
- creator: () => _sfc_main$u
12143
+ creator: () => _sfc_main$v
11921
12144
  }
11922
12145
  ];
11923
12146
  const blockParts = [
@@ -11932,7 +12155,7 @@ ${_html.style}
11932
12155
  initialProperties: {},
11933
12156
  localized: false,
11934
12157
  allowsChild: () => true,
11935
- creator: () => _sfc_main$w
12158
+ creator: () => _sfc_main$x
11936
12159
  }
11937
12160
  ];
11938
12161
  const widgets = [
@@ -11960,11 +12183,23 @@ ${_html.style}
11960
12183
  propertyType: "text",
11961
12184
  params: ""
11962
12185
  },
12186
+ {
12187
+ propertyName: "fontWeight",
12188
+ caption: "Weight",
12189
+ propertyType: "text",
12190
+ params: ""
12191
+ },
11963
12192
  {
11964
12193
  propertyName: "color",
11965
12194
  caption: "Font Color",
11966
12195
  propertyType: "color",
11967
12196
  params: ""
12197
+ },
12198
+ {
12199
+ propertyName: "textAlign",
12200
+ caption: "Align",
12201
+ propertyType: "select",
12202
+ params: "left,center,right"
11968
12203
  }
11969
12204
  ]
11970
12205
  },
@@ -13287,6 +13522,8 @@ ${_html.style}
13287
13522
  __publicField(this, "customWidgets", []);
13288
13523
  __publicField(this, "watchers", {});
13289
13524
  __publicField(this, "providers", {});
13525
+ __publicField(this, "externalCssLinks", []);
13526
+ __publicField(this, "externalCssContent", "");
13290
13527
  this.model = new Model();
13291
13528
  this.context = new PageBuilderContextImpl(this);
13292
13529
  this.scale.value = 1;
@@ -13353,7 +13590,7 @@ ${_html.style}
13353
13590
  plugin.widgets.forEach((v) => {
13354
13591
  const w = { ...v };
13355
13592
  w.partType = "Widget";
13356
- w.creator = () => _sfc_main$z;
13593
+ w.creator = () => _sfc_main$A;
13357
13594
  w.propertyGroups = [...w.propertyGroups, ...defaultWidgetPropertyGroups()];
13358
13595
  partDefinitions2[v.partName] = w;
13359
13596
  const found = this.customWidgets.find((x) => x.partName === v.partName);
@@ -13372,6 +13609,14 @@ ${_html.style}
13372
13609
  if (plugin.propertyEditors) {
13373
13610
  this.partManager.registerPartPropertyEditors(plugin.propertyEditors);
13374
13611
  }
13612
+ if (plugin.css) {
13613
+ if (plugin.css.links) {
13614
+ this.externalCssLinks = plugin.css.links;
13615
+ }
13616
+ if (plugin.css.content) {
13617
+ this.externalCssContent = plugin.css.content;
13618
+ }
13619
+ }
13375
13620
  }
13376
13621
  initData(data) {
13377
13622
  const _data = JSON.parse(data || "{}") || {};
@@ -13495,6 +13740,10 @@ ${_html.style}
13495
13740
  }
13496
13741
  }
13497
13742
  }
13743
+ getExternalCss() {
13744
+ return `${this.externalCssLinks}
13745
+ <style>${this.externalCssContent}</style>`;
13746
+ }
13498
13747
  extractMediaFromPart(part, urls) {
13499
13748
  if (part.properties) {
13500
13749
  for (const name in part.properties) {
@@ -13593,74 +13842,119 @@ ${_html.style}
13593
13842
  });
13594
13843
  }
13595
13844
  }
13596
- const _hoisted_1$l = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1);
13597
- const _hoisted_2$d = [
13598
- _hoisted_1$l
13845
+ const _hoisted_1$m = ["data-part-id"];
13846
+ const _hoisted_2$d = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1);
13847
+ const _hoisted_3$c = [
13848
+ _hoisted_2$d
13599
13849
  ];
13600
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13850
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13601
13851
  __name: "PbPage",
13602
13852
  props: {
13603
- page: {},
13853
+ part: {},
13604
13854
  width: {},
13605
13855
  isMobilePage: { type: Boolean }
13606
13856
  },
13607
13857
  setup(__props) {
13608
13858
  const props = __props;
13609
13859
  const editor = usePageBuilderEditor();
13860
+ const styleTag = vue.computed(() => props.part.getStyleTag());
13610
13861
  const style = vue.computed(() => {
13611
13862
  var _a, _b;
13612
13863
  return {
13613
13864
  width: `${props.width || 420}px`,
13614
- minHeight: ((_b = (_a = props.page) == null ? void 0 : _a.children) == null ? void 0 : _b.length) ? void 0 : "200px"
13865
+ minHeight: ((_b = (_a = props.part) == null ? void 0 : _a.children) == null ? void 0 : _b.length) ? void 0 : "200px"
13615
13866
  };
13616
13867
  });
13617
13868
  const properties = vue.computed(() => {
13618
- var _a;
13619
- return { style: ((_a = props.page) == null ? void 0 : _a.getStyles()) || {} };
13869
+ var _a, _b;
13870
+ return {
13871
+ style: {
13872
+ ...(_a = props.part) == null ? void 0 : _a.getStyles(),
13873
+ ...(_b = props.part) == null ? void 0 : _b.getInlineStyles()
13874
+ }
13875
+ };
13620
13876
  });
13621
- const selected = vue.computed(() => !!props.page && editor.context.isSelected(props.page));
13877
+ const selected = vue.computed(() => !!props.part && editor.context.isSelected(props.part));
13622
13878
  const insertSection = (index) => {
13623
- if (!props.page)
13624
- return;
13625
13879
  editor.commandRegistry.executeCommand(AddSectionCommand.COMMAND_ID);
13626
13880
  };
13627
13881
  return (_ctx, _cache) => {
13628
- var _a;
13629
- return vue.openBlock(), vue.createElementBlock("div", {
13630
- style: vue.normalizeStyle(style.value),
13631
- class: "pb-page"
13632
- }, [
13633
- vue.createElementVNode("div", vue.mergeProps({
13634
- class: [selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"]
13635
- }, properties.value), [
13636
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_a = _ctx.page) == null ? void 0 : _a.children, (section, index) => {
13637
- return vue.openBlock(), vue.createBlock(_sfc_main$u, {
13638
- key: section.partId,
13639
- part: section
13640
- }, null, 8, ["part"]);
13641
- }), 128))
13642
- ], 16),
13882
+ var _a, _b;
13883
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
13884
+ styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
13885
+ key: 0,
13886
+ innerHTML: styleTag.value
13887
+ }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
13643
13888
  vue.createElementVNode("div", {
13644
- class: "pb-add-section-handle bottom",
13645
- onClick: _cache[0] || (_cache[0] = ($event) => {
13646
- var _a2, _b;
13647
- return insertSection(((_b = (_a2 = _ctx.page) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) || 0);
13648
- })
13649
- }, _hoisted_2$d)
13650
- ], 4);
13889
+ "data-part-id": (_a = _ctx.part) == null ? void 0 : _a.partId,
13890
+ style: vue.normalizeStyle(style.value),
13891
+ class: "pb-page"
13892
+ }, [
13893
+ vue.createElementVNode("div", vue.mergeProps({
13894
+ class: [selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"]
13895
+ }, properties.value), [
13896
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_b = _ctx.part) == null ? void 0 : _b.children, (section, index) => {
13897
+ return vue.openBlock(), vue.createBlock(_sfc_main$v, {
13898
+ key: section.partId,
13899
+ part: section
13900
+ }, null, 8, ["part"]);
13901
+ }), 128))
13902
+ ], 16),
13903
+ vue.createElementVNode("div", {
13904
+ class: "pb-add-section-handle bottom",
13905
+ onClick: _cache[0] || (_cache[0] = ($event) => {
13906
+ var _a2, _b2;
13907
+ return insertSection(((_b2 = (_a2 = _ctx.part) == null ? void 0 : _a2.children) == null ? void 0 : _b2.length) || 0);
13908
+ })
13909
+ }, _hoisted_3$c)
13910
+ ], 12, _hoisted_1$m)
13911
+ ], 64);
13651
13912
  };
13652
13913
  }
13653
13914
  });
13654
- const _hoisted_1$k = /* @__PURE__ */ vue.createElementVNode("div", { style: { "width": "20px" } }, null, -1);
13915
+ const _hoisted_1$l = { class: "pb-page-wrapper" };
13916
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13917
+ __name: "PbPageWrapper",
13918
+ props: {
13919
+ part: {},
13920
+ width: {},
13921
+ isMobilePage: { type: Boolean }
13922
+ },
13923
+ setup(__props) {
13924
+ const props = __props;
13925
+ const width = vue.ref(props.width);
13926
+ return (_ctx, _cache) => {
13927
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13928
+ vue.createVNode(vue.unref(bluesea.BSSelect), {
13929
+ modelValue: width.value,
13930
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => width.value = $event),
13931
+ items: [480, 768, 1024, 1280],
13932
+ "label-provider": (v) => `${v}`,
13933
+ "value-provider": (v) => v,
13934
+ "view-model": false
13935
+ }, null, 8, ["modelValue", "label-provider", "value-provider"]),
13936
+ vue.createVNode(_sfc_main$n, {
13937
+ "is-mobile-page": _ctx.isMobilePage,
13938
+ part: _ctx.part,
13939
+ width: width.value
13940
+ }, null, 8, ["is-mobile-page", "part", "width"])
13941
+ ]);
13942
+ };
13943
+ }
13944
+ });
13945
+ const _hoisted_1$k = {
13946
+ key: 1,
13947
+ style: { "width": "20px" }
13948
+ };
13655
13949
  const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13656
13950
  __name: "PbCanvas",
13657
13951
  setup(__props) {
13658
13952
  const pageBuilder = usePageBuilderEditor();
13659
- const pageS = vue.computed(() => {
13953
+ const partS = vue.computed(() => {
13660
13954
  var _a;
13661
13955
  return (_a = pageBuilder.model.rootPart.children) == null ? void 0 : _a[0];
13662
13956
  });
13663
- const pageL = vue.computed(() => {
13957
+ const partL = vue.computed(() => {
13664
13958
  var _a;
13665
13959
  return (_a = pageBuilder.model.rootPart.children) == null ? void 0 : _a[1];
13666
13960
  });
@@ -13672,7 +13966,11 @@ ${_html.style}
13672
13966
  const contextMenu = bluesea.useContextMenu();
13673
13967
  const style = vue.computed(() => {
13674
13968
  const scale = pageBuilder.scale.value;
13675
- return `transform: scale(${scale}); flex-grow: 1;`;
13969
+ return {
13970
+ style: {
13971
+ transform: `scale(${scale})`
13972
+ }
13973
+ };
13676
13974
  });
13677
13975
  const showContextMenu = (event) => {
13678
13976
  var _a, _b;
@@ -13695,27 +13993,26 @@ ${_html.style}
13695
13993
  onContextmenu: showContextMenu,
13696
13994
  onMousedown: vue.withModifiers(handleClick, ["stop"])
13697
13995
  }, [
13698
- vue.createElementVNode("div", {
13699
- style: vue.normalizeStyle(style.value),
13700
- class: "pb-canvas"
13701
- }, [
13702
- vue.createVNode(_sfc_main$m, {
13996
+ vue.createElementVNode("div", vue.mergeProps({ class: "pb-canvas" }, style.value), [
13997
+ partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
13998
+ key: 0,
13703
13999
  "is-mobile-page": true,
13704
- page: pageS.value,
13705
- width: 420
13706
- }, null, 8, ["page"]),
13707
- _hoisted_1$k,
13708
- vue.createVNode(_sfc_main$m, {
14000
+ part: partS.value,
14001
+ width: 480
14002
+ }, null, 8, ["part"])) : vue.createCommentVNode("", true),
14003
+ partL.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k)) : vue.createCommentVNode("", true),
14004
+ partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
14005
+ key: 2,
13709
14006
  "is-mobile-page": false,
13710
- page: pageL.value,
14007
+ part: partL.value,
13711
14008
  width: 1024
13712
- }, null, 8, ["page"])
13713
- ], 4)
14009
+ }, null, 8, ["part"])) : vue.createCommentVNode("", true)
14010
+ ], 16)
13714
14011
  ], 32);
13715
14012
  };
13716
14013
  }
13717
14014
  });
13718
- const canvasStyle = '.pb-page {\n margin: 0 auto;\n margin-top: 20px;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-page .pb-page-content.selected {\n outline: 2px solid #4998f8;\n outline-offset: 5px;\n}\n.pb-page * {\n box-sizing: border-box;\n}\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n.pb-section {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n.pb-section.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n.pb-section-static .pb-widget {\n outline: none;\n}\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n.pb-block.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-widget.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n}\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n}\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-text-widget .text {\n color: #333;\n}\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-image-widget {\n width: 100%;\n}\n.pb-image-widget .image {\n width: 100%;\n}\n.pb-image-widget .empty {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-image-widget .empty span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\nbody {\n background-color: white;\n height: 100%;\n margin: 0;\n}\n.pb-canvas-wrapper {\n padding: 32px 40px 56px 40px;\n height: 100%;\n background-color: #aaa;\n overflow: auto;\n}\n.pb-canvas-wrapper .pb-canvas {\n display: flex;\n flex-direction: row;\n transform-origin: top left;\n width: fit-content;\n min-width: 40px;\n min-height: 40px;\n margin: 0 auto;\n}\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}\n.pb-button {\n background: none;\n border: none;\n cursor: pointer;\n vertical-align: middle;\n}\n.pb-guideline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n.pb-guideline.selected {\n z-index: 3;\n}\n.pb-guideline.preselect {\n z-index: 4;\n}';
14015
+ const canvasStyle = '.pb-page-wrapper {\n margin: 0 auto;\n padding: 0;\n}\n\n.pb-page {\n margin: 20px 0 auto 0;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.pb-page .pb-page-content.selected {\n outline: 2px solid #4998f8;\n outline-offset: 5px;\n}\n\n.pb-page * {\n box-sizing: border-box;\n}\n\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n\n.pb-section {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-section.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.pb-section-static .pb-widget {\n outline: none;\n}\n\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-block.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.pb-widget.selected {\n outline: 2px solid #4998f8;\n outline-offset: 1px;\n z-index: 999;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n}\n\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n}\n\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-text-widget .text {\n color: #333;\n}\n\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-image-widget {\n width: 100%;\n}\n\n.pb-image-widget .image {\n width: 100%;\n}\n\n.pb-image-widget .empty {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-image-widget .empty span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\n\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background-color: #aaa;\n overflow: auto;\n}\n\n.pb-canvas-wrapper {\n margin: 0;\n padding: 0;\n width: fit-content;\n}\n\n.pb-canvas-wrapper .pb-canvas {\n display: flex;\n flex-direction: row;\n flex: 1 1 auto;\n transform-origin: top left;\n width: fit-content;\n margin: 0;\n padding: 32px 40px 56px 40px;\n}\n\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}\n\n.pb-button {\n background: none;\n border: none;\n cursor: pointer;\n vertical-align: middle;\n}\n\n.pb-guideline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.pb-guideline.selected {\n z-index: 3;\n}\n\n.pb-guideline.preselect {\n z-index: 4;\n}';
13719
14016
  const _hoisted_1$j = { class: "pb-canvas-frame" };
13720
14017
  const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13721
14018
  __name: "PbCanvasFrame",
@@ -13731,6 +14028,7 @@ ${_html.style}
13731
14028
  () => {
13732
14029
  var _a, _b, _c, _d, _e, _f, _g, _h;
13733
14030
  if ((_c = (_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document) == null ? void 0 : _c.head) {
14031
+ const externalCss = pageBuilderEditor.getExternalCss();
13734
14032
  const head = (_e = (_d = iframeRef.value) == null ? void 0 : _d.contentWindow) == null ? void 0 : _e.document.head;
13735
14033
  head.innerHTML = `
13736
14034
  <meta charset="UTF-8"/>
@@ -13746,10 +14044,12 @@ ${_html.style}
13746
14044
  <link
13747
14045
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block"
13748
14046
  rel="stylesheet"/>
13749
- <!--
13750
- <link href="https://bluesea5.g1project.net/assets/index-j48PwPDr.css" rel="stylesheet">
13751
- -->
13752
14047
  <link href="https://fonts.googleapis.com/css2?family=Material+Icons+Outlined" rel="stylesheet" />
14048
+
14049
+ <link href="https://bluesea5.g1project.net/assets/index-DjQFWKLW.css" rel="stylesheet" />
14050
+
14051
+ ${externalCss}
14052
+
13753
14053
  <style>${canvasStyle}</style>
13754
14054
  `;
13755
14055
  const script2 = (_g = (_f = iframeRef.value) == null ? void 0 : _f.contentWindow) == null ? void 0 : _g.document.createElement("script");
@@ -14595,7 +14895,8 @@ ${_html.style}
14595
14895
  bind: {
14596
14896
  html: JSON.parse(JSON.stringify(props.value || {})),
14597
14897
  locales,
14598
- localeTabs
14898
+ localeTabs,
14899
+ pageBuilder
14599
14900
  },
14600
14901
  on: {
14601
14902
  updateHtml: (html) => {
@@ -14767,41 +15068,44 @@ ${_html.style}
14767
15068
  }, Symbol.toStringTag, { value: "Module" }));
14768
15069
  const _hoisted_1 = { class: "bs-layout-vertical flex-grow-1 h-full" };
14769
15070
  const _hoisted_2 = { class: "bs-layout-horizontal h-full pt-8" };
14770
- const _hoisted_3 = { class: "preview flex-grow-1" };
15071
+ const _hoisted_3 = { class: "preview" };
14771
15072
  const _hoisted_4 = { class: "bs-layout-vertical w-full h-full" };
14772
15073
  const _hoisted_5 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title pb-4" }, "Preview", -1);
14773
- const _hoisted_6 = ["innerHTML"];
14774
- const _hoisted_7 = { class: "editor bs-layout-vertical pl-8" };
14775
- const _hoisted_8 = { class: "tags bs-layout-vertical w-full" };
14776
- const _hoisted_9 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title pb-4" }, "HTML", -1);
14777
- const _hoisted_10 = { class: "content flex-grow-1" };
14778
- const _hoisted_11 = { class: "style bs-layout-vertical w-full pt-8" };
14779
- const _hoisted_12 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title pb-4" }, "Style", -1);
14780
- const _hoisted_13 = { class: "content flex-grow-1" };
15074
+ const _hoisted_6 = { class: "content flex-grow-1" };
15075
+ const _hoisted_7 = ["srcdoc"];
15076
+ const _hoisted_8 = { class: "editor bs-layout-vertical pl-8 h-full" };
14781
15077
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
14782
15078
  __name: "PbHtmlEditorModal",
14783
15079
  props: {
14784
15080
  html: {},
14785
15081
  locales: {},
14786
- localeTabs: {}
15082
+ localeTabs: {},
15083
+ pageBuilder: {}
14787
15084
  },
14788
15085
  emits: ["updateHtml"],
14789
15086
  setup(__props, { emit: __emit }) {
14790
15087
  const props = __props;
14791
15088
  const emit = __emit;
14792
- const tabId = vue.ref(props.localeTabs && props.localeTabs[0].tabId);
15089
+ const localeTabId = vue.ref(props.localeTabs && props.localeTabs[0].tabId);
14793
15090
  const modalHandle = bluesea.useModalHandle();
14794
15091
  const html = vue.ref(props.html || {});
14795
15092
  const preview = vue.computed(() => {
14796
15093
  var _a;
14797
15094
  let data = {};
15095
+ const externalCss = props.pageBuilder.getExternalCss();
14798
15096
  (_a = props.locales) == null ? void 0 : _a.forEach((locale) => {
14799
15097
  const _html = html.value[locale] || { tags: "", style: "" };
14800
- data[locale] = _html.tags ? `${_html.tags}
14801
- <style>${_html.style}</style>` : "";
15098
+ data[locale] = _html.tags ? `${externalCss}
15099
+ <style>${_html.style}</style>
15100
+ ${_html.tags}` : "";
14802
15101
  });
14803
15102
  return data;
14804
15103
  });
15104
+ const editorTabs = [
15105
+ { tabId: "tags", caption: "Tags" },
15106
+ { tabId: "style", caption: "Style" }
15107
+ ];
15108
+ const editorTabId = vue.ref("tags");
14805
15109
  const updateTags = (locale, value) => {
14806
15110
  if (!html.value)
14807
15111
  html.value = {};
@@ -14820,6 +15124,35 @@ ${_html.style}
14820
15124
  emit("updateHtml", html.value);
14821
15125
  modalHandle.close();
14822
15126
  };
15127
+ const editorHeight = vue.ref("");
15128
+ const updateEditorHeight = async () => {
15129
+ await bluesea.waitDuring(50);
15130
+ if (editorHeight.value) {
15131
+ const editor = document.querySelector(".bs-code-editor");
15132
+ if (editor) {
15133
+ editor.style.height = editorHeight.value;
15134
+ }
15135
+ }
15136
+ };
15137
+ let resizeObserver;
15138
+ vue.onMounted(async () => {
15139
+ await bluesea.waitDuring(50);
15140
+ const editorParent = document.querySelector(".editor > .bs-tab-sheet > .bs-layout-vertical");
15141
+ resizeObserver = new ResizeObserver(() => {
15142
+ if (editorParent && editorParent.clientHeight) {
15143
+ editorHeight.value = `${editorParent.clientHeight}px`;
15144
+ updateEditorHeight();
15145
+ }
15146
+ });
15147
+ if (editorParent) {
15148
+ resizeObserver.observe(editorParent);
15149
+ }
15150
+ });
15151
+ vue.onBeforeUnmount(() => {
15152
+ if (resizeObserver) {
15153
+ resizeObserver.disconnect();
15154
+ }
15155
+ });
14823
15156
  return (_ctx, _cache) => {
14824
15157
  return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), {
14825
15158
  class: "pb-html-editor-modal",
@@ -14828,8 +15161,11 @@ ${_html.style}
14828
15161
  default: vue.withCtx(() => [
14829
15162
  vue.createElementVNode("div", _hoisted_1, [
14830
15163
  vue.createVNode(vue.unref(bluesea.BSTabSheet), {
14831
- "tab-id": tabId.value,
14832
- "onUpdate:tabId": _cache[0] || (_cache[0] = ($event) => tabId.value = $event),
15164
+ "tab-id": localeTabId.value,
15165
+ "onUpdate:tabId": [
15166
+ _cache[1] || (_cache[1] = ($event) => localeTabId.value = $event),
15167
+ updateEditorHeight
15168
+ ],
14833
15169
  tabs: _ctx.localeTabs,
14834
15170
  class: "flex-grow-1"
14835
15171
  }, vue.createSlots({ _: 2 }, [
@@ -14841,35 +15177,41 @@ ${_html.style}
14841
15177
  vue.createElementVNode("div", _hoisted_3, [
14842
15178
  vue.createElementVNode("div", _hoisted_4, [
14843
15179
  _hoisted_5,
14844
- vue.createElementVNode("div", {
14845
- class: "content flex-grow-1",
14846
- innerHTML: preview.value[locale]
14847
- }, null, 8, _hoisted_6)
15180
+ vue.createElementVNode("div", _hoisted_6, [
15181
+ vue.createElementVNode("iframe", {
15182
+ srcdoc: preview.value[locale]
15183
+ }, null, 8, _hoisted_7)
15184
+ ])
14848
15185
  ])
14849
15186
  ]),
14850
- vue.createElementVNode("div", _hoisted_7, [
14851
- vue.createElementVNode("div", _hoisted_8, [
14852
- _hoisted_9,
14853
- vue.createElementVNode("div", _hoisted_10, [
15187
+ vue.createElementVNode("div", _hoisted_8, [
15188
+ vue.createVNode(vue.unref(bluesea.BSTabSheet), {
15189
+ "tab-id": editorTabId.value,
15190
+ "onUpdate:tabId": [
15191
+ _cache[0] || (_cache[0] = ($event) => editorTabId.value = $event),
15192
+ updateEditorHeight
15193
+ ],
15194
+ tabs: editorTabs,
15195
+ class: "flex-grow-1"
15196
+ }, {
15197
+ tags: vue.withCtx(() => [
14854
15198
  vue.createVNode(vue.unref(bluesea.BSCodeEditor), {
14855
15199
  "model-value": (html.value[locale] || {}).tags,
14856
15200
  "editor-height": "100%",
14857
15201
  lang: "html",
14858
15202
  "onUpdate:modelValue": (value) => updateTags(locale, value)
14859
15203
  }, null, 8, ["model-value", "onUpdate:modelValue"])
14860
- ])
14861
- ]),
14862
- vue.createElementVNode("div", _hoisted_11, [
14863
- _hoisted_12,
14864
- vue.createElementVNode("div", _hoisted_13, [
15204
+ ]),
15205
+ style: vue.withCtx(() => [
14865
15206
  vue.createVNode(vue.unref(bluesea.BSCodeEditor), {
14866
15207
  "model-value": (html.value[locale] || {}).style,
14867
15208
  "editor-height": "100%",
14868
15209
  lang: "css",
14869
15210
  "onUpdate:modelValue": (value) => updateStyle(locale, value)
14870
15211
  }, null, 8, ["model-value", "onUpdate:modelValue"])
14871
- ])
14872
- ])
15212
+ ]),
15213
+ _: 2
15214
+ }, 1032, ["tab-id"])
14873
15215
  ])
14874
15216
  ])
14875
15217
  ])
@@ -14905,7 +15247,7 @@ ${_html.style}
14905
15247
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
14906
15248
  exports2.PageBuilderViewer = _sfc_main$1$1;
14907
15249
  exports2.Part = Part;
14908
- exports2.PbCustomWidget = _sfc_main$z;
15250
+ exports2.PbCustomWidget = _sfc_main$A;
14909
15251
  exports2.PbHtmlWidget = _sfc_main$4$1;
14910
15252
  exports2.PbIframeWidget = _sfc_main$3$1;
14911
15253
  exports2.PbImageWidget = _sfc_main$6$1;