@g1cloud/page-builder-editor 1.0.0-alpha.5 → 1.0.0-alpha.7

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.
Files changed (32) hide show
  1. package/css/page-builder-editor.scss +74 -12
  2. package/css/property-editor-color.scss +5 -0
  3. package/css/property-editor-html.scss +16 -0
  4. package/css/property-group-editor-background.scss +0 -12
  5. package/css/property-group-editor-border.scss +6 -12
  6. package/css/property-group-editor-margin.scss +0 -11
  7. package/css/property-group-editor-padding.scss +0 -11
  8. package/css/property-group-editor-position.scss +0 -11
  9. package/css/property-group-editor-size.scss +0 -11
  10. package/css/property-localpart.scss +2 -2
  11. package/dist/HtmlEditorModal-BV5E6G70.js +90 -0
  12. package/dist/PageBuilderEditor.vue.d.ts +0 -2
  13. package/dist/PbPropertyEditorColor-y7y6ZUQs.js +57 -0
  14. package/dist/PbPropertyEditorHtml-CbQR_BzH.js +67 -0
  15. package/dist/{PbPropertyEditorImage-EuqsavTF.js → PbPropertyEditorImage-BXEXm2Px.js} +2 -2
  16. package/dist/{PbPropertyEditorMultilineText-CfRbKELF.js → PbPropertyEditorMultilineText-sb-oS_gz.js} +2 -2
  17. package/dist/{PbPropertyEditorProduct-COnCyYJl.js → PbPropertyEditorProduct-p0zOCA9R.js} +2 -2
  18. package/dist/{PbPropertyEditorReadonlyText-Bk0WJxA0.js → PbPropertyEditorReadonlyText-Dgp_AVOD.js} +1 -1
  19. package/dist/{PbPropertyEditorSelect-BJovN1su.js → PbPropertyEditorSelect-CWedbXJI.js} +1 -1
  20. package/dist/{PbPropertyEditorText-DNdXl-Tr.js → PbPropertyEditorText-BWOKvwD9.js} +1 -1
  21. package/dist/components/modal/HtmlEditorModal.vue.d.ts +23 -0
  22. package/dist/components/sidebar/property/PbPropertyEditorColor.vue.d.ts +23 -0
  23. package/dist/components/sidebar/property/PbPropertyEditorHtml.vue.d.ts +23 -0
  24. package/dist/components/ui/PbColorPicker.vue.d.ts +2 -2
  25. package/dist/{index-Mob7K7vK.js → index-BTlwA7HP.js} +673 -413
  26. package/dist/model/context.d.ts +3 -6
  27. package/dist/model/model.d.ts +1 -1
  28. package/dist/model/page-builder-editor.d.ts +6 -8
  29. package/dist/model/part-definintion.d.ts +1 -0
  30. package/dist/page-builder-editor.js +23 -19
  31. package/dist/page-builder-editor.umd.cjs +1109 -641
  32. package/package.json +4 -3
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
5
5
  return value;
6
6
  };
7
7
  import { ref, defineComponent, openBlock, createElementBlock, createCommentVNode, computed, normalizeClass, createElementVNode, mergeProps, toDisplayString, onMounted, watch, Fragment, renderList, provide, inject, createBlock as createBlock$1, resolveDynamicComponent, reactive, defineAsyncComponent, withDirectives, unref, createVNode, normalizeStyle, resolveComponent, vModelText, onBeforeUnmount, resolveDirective, withModifiers, renderSlot, normalizeProps, guardReactiveProps, markRaw, Teleport, withCtx } from "vue";
8
- import { notNull, BSTextInput, vClickOutside, useModal, useContextMenu, BSSelect, BSLocaleSelect, BSTabSheet, BSTree, BSDateRange } from "@g1cloud/bluesea";
8
+ import { notNull, BSTextInput, vClickOutside, useContextMenu, BSSelect, BSTabSheet, BSTree, useModal, BSDateRange } from "@g1cloud/bluesea";
9
9
  const create$5 = () => /* @__PURE__ */ new Map();
10
10
  const copy = (m) => {
11
11
  const r = create$5();
@@ -6721,7 +6721,7 @@ class Part {
6721
6721
  return "";
6722
6722
  }
6723
6723
  getStyles() {
6724
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
6724
+ 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;
6725
6725
  const style = {};
6726
6726
  if (((_a = this.properties) == null ? void 0 : _a.direction) === "horizontal") {
6727
6727
  style.display = "flex";
@@ -6765,6 +6765,40 @@ class Part {
6765
6765
  style.width = this.properties.width;
6766
6766
  if ((_s = this.properties) == null ? void 0 : _s.height)
6767
6767
  style.height = this.properties.height;
6768
+ if ((_t = this.properties) == null ? void 0 : _t.backgroundColor)
6769
+ style.backgroundColor = this.properties.backgroundColor;
6770
+ if ((_u = this.properties) == null ? void 0 : _u.borderLeftWidth)
6771
+ style.borderLeftWidth = this.properties.borderLeftWidth;
6772
+ if ((_v = this.properties) == null ? void 0 : _v.borderRightWidth)
6773
+ style.borderRightWidth = this.properties.borderRightWidth;
6774
+ if ((_w = this.properties) == null ? void 0 : _w.borderTopWidth)
6775
+ style.borderTopWidth = this.properties.borderTopWidth;
6776
+ if ((_x = this.properties) == null ? void 0 : _x.borderBottomWidth)
6777
+ style.borderBottomWidth = this.properties.borderBottomWidth;
6778
+ if ((_y = this.properties) == null ? void 0 : _y.borderTopLeftRadius)
6779
+ style.borderTopLeftRadius = this.properties.borderTopLeftRadius;
6780
+ if ((_z = this.properties) == null ? void 0 : _z.borderTopRightRadius)
6781
+ style.borderTopRightRadius = this.properties.borderTopRightRadius;
6782
+ if ((_A = this.properties) == null ? void 0 : _A.borderBottomLeftRadius)
6783
+ style.borderBottomLeftRadius = this.properties.borderBottomLeftRadius;
6784
+ if ((_B = this.properties) == null ? void 0 : _B.borderBottomRightRadius)
6785
+ style.borderBottomRightRadius = this.properties.borderBottomRightRadius;
6786
+ if (((_C = this.properties) == null ? void 0 : _C.borderColor) && style.borderLeftWidth) {
6787
+ style.borderLeftStyle = "solid";
6788
+ style.borderLeftColor = (_D = this.properties) == null ? void 0 : _D.borderColor;
6789
+ }
6790
+ if (((_E = this.properties) == null ? void 0 : _E.borderColor) && style.borderRightWidth) {
6791
+ style.borderRightStyle = "solid";
6792
+ style.borderRightColor = (_F = this.properties) == null ? void 0 : _F.borderColor;
6793
+ }
6794
+ if (((_G = this.properties) == null ? void 0 : _G.borderColor) && style.borderTopWidth) {
6795
+ style.borderTopStyle = "solid";
6796
+ style.borderTopColor = (_H = this.properties) == null ? void 0 : _H.borderColor;
6797
+ }
6798
+ if (((_I = this.properties) == null ? void 0 : _I.borderColor) && style.borderBottomWidth) {
6799
+ style.borderBottomStyle = "solid";
6800
+ style.borderBottomColor = (_J = this.properties) == null ? void 0 : _J.borderColor;
6801
+ }
6768
6802
  return style;
6769
6803
  }
6770
6804
  getPageBuilderId() {
@@ -6773,12 +6807,6 @@ class Part {
6773
6807
  if (this.parent)
6774
6808
  return this.parent.getPageBuilderId();
6775
6809
  }
6776
- getLanguage() {
6777
- if (this.isRoot())
6778
- return this.language;
6779
- if (this.parent)
6780
- return this.parent.getLanguage();
6781
- }
6782
6810
  isGlobalDesignPart() {
6783
6811
  return false;
6784
6812
  }
@@ -6864,12 +6892,12 @@ let Model$1 = class Model {
6864
6892
  this.rootPart = ref(new RootPart());
6865
6893
  }
6866
6894
  };
6867
- const _hoisted_1$7$1 = ["data-model-id"];
6868
- const _hoisted_2$3$1 = {
6895
+ const _hoisted_1$8$1 = ["data-model-id"];
6896
+ const _hoisted_2$4$1 = {
6869
6897
  key: 1,
6870
6898
  class: "pb-nested-widget"
6871
6899
  };
6872
- const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
6900
+ const _sfc_main$9$1 = /* @__PURE__ */ defineComponent({
6873
6901
  __name: "PbWidget",
6874
6902
  props: {
6875
6903
  part: {}
@@ -6891,7 +6919,7 @@ const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
6891
6919
  key: 0,
6892
6920
  part: _ctx.part
6893
6921
  }, null, 8, ["part"])) : createCommentVNode("", true),
6894
- childComponents.value && childComponents.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$3$1, [
6922
+ childComponents.value && childComponents.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$4$1, [
6895
6923
  (openBlock(true), createElementBlock(Fragment, null, renderList(childComponents.value, (child) => {
6896
6924
  return openBlock(), createBlock$1(resolveDynamicComponent(child.component), {
6897
6925
  key: child.part.partId,
@@ -6899,12 +6927,12 @@ const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
6899
6927
  }, null, 8, ["part"]);
6900
6928
  }), 128))
6901
6929
  ])) : createCommentVNode("", true)
6902
- ], 16, _hoisted_1$7$1);
6930
+ ], 16, _hoisted_1$8$1);
6903
6931
  };
6904
6932
  }
6905
6933
  });
6906
- const _hoisted_1$6$1 = ["data-model-id"];
6907
- const _sfc_main$7$1 = /* @__PURE__ */ defineComponent({
6934
+ const _hoisted_1$7$1 = ["data-model-id"];
6935
+ const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
6908
6936
  __name: "PbBlock",
6909
6937
  props: {
6910
6938
  part: {}
@@ -6922,17 +6950,17 @@ const _sfc_main$7$1 = /* @__PURE__ */ defineComponent({
6922
6950
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6923
6951
  }, properties.value), [
6924
6952
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.part.children, (child) => {
6925
- return openBlock(), createBlock$1(_sfc_main$8$1, {
6953
+ return openBlock(), createBlock$1(_sfc_main$9$1, {
6926
6954
  key: child.partId,
6927
6955
  part: child
6928
6956
  }, null, 8, ["part"]);
6929
6957
  }), 128))
6930
- ], 16, _hoisted_1$6$1);
6958
+ ], 16, _hoisted_1$7$1);
6931
6959
  };
6932
6960
  }
6933
6961
  });
6934
- const _hoisted_1$5$1 = { class: "pb-block" };
6935
- const _hoisted_2$2$1 = /* @__PURE__ */ createElementVNode("div", {
6962
+ const _hoisted_1$6$1 = { class: "pb-block" };
6963
+ const _hoisted_2$3$1 = /* @__PURE__ */ createElementVNode("div", {
6936
6964
  class: "pb-widget",
6937
6965
  style: { "margin": "0 auto" }
6938
6966
  }, [
@@ -6941,21 +6969,21 @@ const _hoisted_2$2$1 = /* @__PURE__ */ createElementVNode("div", {
6941
6969
  ])
6942
6970
  ], -1);
6943
6971
  const _hoisted_3$2$1 = [
6944
- _hoisted_2$2$1
6972
+ _hoisted_2$3$1
6945
6973
  ];
6946
- const _sfc_main$6$1 = /* @__PURE__ */ defineComponent({
6974
+ const _sfc_main$7$1 = /* @__PURE__ */ defineComponent({
6947
6975
  __name: "PbLoginDepart",
6948
6976
  props: {
6949
6977
  part: {}
6950
6978
  },
6951
6979
  setup(__props) {
6952
6980
  return (_ctx, _cache) => {
6953
- return openBlock(), createElementBlock("div", _hoisted_1$5$1, _hoisted_3$2$1);
6981
+ return openBlock(), createElementBlock("div", _hoisted_1$6$1, _hoisted_3$2$1);
6954
6982
  };
6955
6983
  }
6956
6984
  });
6957
- const _hoisted_1$4$1 = ["data-model-id"];
6958
- const _sfc_main$5$1 = /* @__PURE__ */ defineComponent({
6985
+ const _hoisted_1$5$1 = ["data-model-id"];
6986
+ const _sfc_main$6$1 = /* @__PURE__ */ defineComponent({
6959
6987
  __name: "PbSection",
6960
6988
  props: {
6961
6989
  part: {}
@@ -6971,21 +6999,21 @@ const _sfc_main$5$1 = /* @__PURE__ */ defineComponent({
6971
6999
  "data-model-id": _ctx.part.partId,
6972
7000
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
6973
7001
  }, properties.value), [
6974
- ((_b = _ctx.part.properties) == null ? void 0 : _b.name) === "Login Design Part" ? (openBlock(), createBlock$1(_sfc_main$6$1, {
7002
+ ((_b = _ctx.part.properties) == null ? void 0 : _b.name) === "Login Design Part" ? (openBlock(), createBlock$1(_sfc_main$7$1, {
6975
7003
  key: 0,
6976
7004
  part: _ctx.part
6977
7005
  }, null, 8, ["part"])) : _ctx.part.children && _ctx.part.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.part.children, (block) => {
6978
- return openBlock(), createBlock$1(_sfc_main$7$1, {
7006
+ return openBlock(), createBlock$1(_sfc_main$8$1, {
6979
7007
  key: block.partId,
6980
7008
  part: block
6981
7009
  }, null, 8, ["part"]);
6982
7010
  }), 128)) : createCommentVNode("", true)
6983
- ], 16, _hoisted_1$4$1);
7011
+ ], 16, _hoisted_1$5$1);
6984
7012
  };
6985
7013
  }
6986
7014
  });
6987
- const _hoisted_1$3$1 = { class: "pb-image-widget" };
6988
- const _hoisted_2$1$1 = ["src"];
7015
+ const _hoisted_1$4$1 = { class: "pb-image-widget" };
7016
+ const _hoisted_2$2$1 = ["src"];
6989
7017
  const _hoisted_3$1$1 = {
6990
7018
  key: 1,
6991
7019
  class: "empty"
@@ -6994,7 +7022,7 @@ const _hoisted_4$1$1 = /* @__PURE__ */ createElementVNode("span", { class: "font
6994
7022
  const _hoisted_5$1$1 = [
6995
7023
  _hoisted_4$1$1
6996
7024
  ];
6997
- const _sfc_main$4$1 = /* @__PURE__ */ defineComponent({
7025
+ const _sfc_main$5$1 = /* @__PURE__ */ defineComponent({
6998
7026
  __name: "PbImageWidget",
6999
7027
  props: {
7000
7028
  part: {},
@@ -7003,19 +7031,19 @@ const _sfc_main$4$1 = /* @__PURE__ */ defineComponent({
7003
7031
  setup(__props) {
7004
7032
  return (_ctx, _cache) => {
7005
7033
  var _a, _b;
7006
- return openBlock(), createElementBlock("div", _hoisted_1$3$1, [
7034
+ return openBlock(), createElementBlock("div", _hoisted_1$4$1, [
7007
7035
  ((_a = _ctx.part.properties) == null ? void 0 : _a.image) ? (openBlock(), createElementBlock("img", {
7008
7036
  key: 0,
7009
7037
  src: (_b = _ctx.part.properties) == null ? void 0 : _b.image,
7010
7038
  alt: "",
7011
7039
  class: "image"
7012
- }, null, 8, _hoisted_2$1$1)) : !_ctx.viewMode ? (openBlock(), createElementBlock("div", _hoisted_3$1$1, _hoisted_5$1$1)) : createCommentVNode("", true)
7040
+ }, null, 8, _hoisted_2$2$1)) : !_ctx.viewMode ? (openBlock(), createElementBlock("div", _hoisted_3$1$1, _hoisted_5$1$1)) : createCommentVNode("", true)
7013
7041
  ]);
7014
7042
  };
7015
7043
  }
7016
7044
  });
7017
- const _hoisted_1$2$1 = ["textContent"];
7018
- const _sfc_main$3$1 = /* @__PURE__ */ defineComponent({
7045
+ const _hoisted_1$3$1 = ["textContent"];
7046
+ const _sfc_main$4$1 = /* @__PURE__ */ defineComponent({
7019
7047
  __name: "PbTextWidget",
7020
7048
  props: {
7021
7049
  part: {},
@@ -7023,34 +7051,114 @@ const _sfc_main$3$1 = /* @__PURE__ */ defineComponent({
7023
7051
  },
7024
7052
  setup(__props) {
7025
7053
  const props = __props;
7054
+ const pageBuilder = usePageBuilder();
7055
+ const emptyClass = computed(() => {
7056
+ var _a;
7057
+ if (props.viewMode) {
7058
+ return false;
7059
+ } else if ((_a = props.part.properties) == null ? void 0 : _a.text) {
7060
+ if (typeof props.part.properties.text === "string") {
7061
+ return true;
7062
+ } else {
7063
+ return !props.part.properties.text[pageBuilder.language.value];
7064
+ }
7065
+ } else {
7066
+ return true;
7067
+ }
7068
+ });
7026
7069
  const text = computed(() => {
7027
7070
  var _a;
7028
7071
  if ((_a = props.part.properties) == null ? void 0 : _a.text) {
7029
7072
  if (typeof props.part.properties.text === "string") {
7030
- return props.part.properties.text;
7073
+ if (props.viewMode) {
7074
+ return "";
7075
+ } else {
7076
+ return "Empty text";
7077
+ }
7031
7078
  } else {
7032
- return props.part.properties.text[props.part.getLanguage() || "en"];
7079
+ const t = props.part.properties.text[pageBuilder.language.value];
7080
+ if (props.viewMode) {
7081
+ return t || "";
7082
+ } else {
7083
+ return t || "Empty text";
7084
+ }
7033
7085
  }
7034
- } else if (!props.viewMode) {
7086
+ } else if (props.viewMode) {
7087
+ return "";
7088
+ } else {
7035
7089
  return "Empty text";
7036
7090
  }
7037
- return "";
7038
7091
  });
7039
7092
  const style = computed(() => {
7040
- var _a;
7093
+ var _a, _b;
7041
7094
  return {
7042
7095
  style: {
7043
- fontSize: (_a = props.part.properties) == null ? void 0 : _a.fontSize
7096
+ fontSize: (_a = props.part.properties) == null ? void 0 : _a.fontSize,
7097
+ color: (_b = props.part.properties) == null ? void 0 : _b.color
7044
7098
  }
7045
7099
  };
7046
7100
  });
7047
7101
  return (_ctx, _cache) => {
7048
7102
  return openBlock(), createElementBlock("div", {
7049
- class: normalizeClass([[!_ctx.viewMode && !text.value ? "empty" : ""], "pb-text-widget"])
7103
+ class: normalizeClass([[emptyClass.value ? "empty" : ""], "pb-text-widget"])
7050
7104
  }, [
7051
7105
  createElementVNode("div", mergeProps({ class: "text" }, style.value, {
7052
7106
  textContent: toDisplayString(text.value)
7053
- }), null, 16, _hoisted_1$2$1)
7107
+ }), null, 16, _hoisted_1$3$1)
7108
+ ], 2);
7109
+ };
7110
+ }
7111
+ });
7112
+ const _hoisted_1$2$1 = ["innerHTML"];
7113
+ const _hoisted_2$1$1 = { key: 1 };
7114
+ const _sfc_main$3$1 = /* @__PURE__ */ defineComponent({
7115
+ __name: "PbHtmlWidget",
7116
+ props: {
7117
+ part: {},
7118
+ viewMode: { type: Boolean, default: false }
7119
+ },
7120
+ setup(__props) {
7121
+ const props = __props;
7122
+ const pageBuilder = usePageBuilder();
7123
+ const getHtml = (html2) => {
7124
+ if (!html2)
7125
+ return;
7126
+ if (typeof html2 !== "object")
7127
+ return;
7128
+ const language = pageBuilder.language.value;
7129
+ let _html = html2[language];
7130
+ if (!_html && html2.tags) {
7131
+ _html = html2;
7132
+ }
7133
+ return `${_html.tags}
7134
+ <style>
7135
+ ${_html.style}
7136
+ </style>`;
7137
+ };
7138
+ const html = computed(() => {
7139
+ var _a, _b;
7140
+ console.log("---------");
7141
+ console.log((_a = props.part.properties) == null ? void 0 : _a.html);
7142
+ console.log("---------");
7143
+ console.log(props.part);
7144
+ return getHtml((_b = props.part.properties) == null ? void 0 : _b.html);
7145
+ });
7146
+ const emptyClass = computed(() => {
7147
+ if (props.viewMode) {
7148
+ return false;
7149
+ } else {
7150
+ return !html.value;
7151
+ }
7152
+ });
7153
+ return (_ctx, _cache) => {
7154
+ return openBlock(), createElementBlock("div", {
7155
+ class: normalizeClass([[emptyClass.value ? "empty" : ""], "pb-html-widget"])
7156
+ }, [
7157
+ html.value ? (openBlock(), createElementBlock("div", {
7158
+ key: 0,
7159
+ class: "html",
7160
+ innerHTML: html.value
7161
+ }, null, 8, _hoisted_1$2$1)) : (openBlock(), createElementBlock("span", _hoisted_2$1$1, "Empty HTML"))
7054
7162
  ], 2);
7055
7163
  };
7056
7164
  }
@@ -7091,16 +7199,16 @@ const PageBuilderViewerEvent = {
7091
7199
  };
7092
7200
  const _hoisted_1$1$1 = { class: "pb-product-list-widget" };
7093
7201
  const _hoisted_2$l = { class: "product" };
7094
- const _hoisted_3$g = { class: "image" };
7095
- const _hoisted_4$d = ["src"];
7096
- const _hoisted_5$8 = { class: "name" };
7097
- const _hoisted_6$7 = { class: "price" };
7202
+ const _hoisted_3$h = { class: "image" };
7203
+ const _hoisted_4$e = ["src"];
7204
+ const _hoisted_5$7 = { class: "name" };
7205
+ const _hoisted_6$6 = { class: "price" };
7098
7206
  const _hoisted_7$5 = {
7099
7207
  key: 1,
7100
7208
  class: "empty"
7101
7209
  };
7102
7210
  const _hoisted_8$5 = /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "image", -1);
7103
- const _hoisted_9$2 = [
7211
+ const _hoisted_9$5 = [
7104
7212
  _hoisted_8$5
7105
7213
  ];
7106
7214
  const _sfc_main$2$1 = /* @__PURE__ */ defineComponent({
@@ -7139,15 +7247,15 @@ const _sfc_main$2$1 = /* @__PURE__ */ defineComponent({
7139
7247
  }, [
7140
7248
  createElementVNode("div", _hoisted_2$l, [
7141
7249
  products.value[index - 1] ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
7142
- createElementVNode("div", _hoisted_3$g, [
7250
+ createElementVNode("div", _hoisted_3$h, [
7143
7251
  createElementVNode("img", {
7144
7252
  src: products.value[index - 1].image,
7145
7253
  alt: ""
7146
- }, null, 8, _hoisted_4$d)
7254
+ }, null, 8, _hoisted_4$e)
7147
7255
  ]),
7148
- createElementVNode("div", _hoisted_5$8, toDisplayString(products.value[index - 1].itemName), 1),
7149
- createElementVNode("div", _hoisted_6$7, toDisplayString(products.value[index - 1].price), 1)
7150
- ], 64)) : (openBlock(), createElementBlock("div", _hoisted_7$5, _hoisted_9$2))
7256
+ createElementVNode("div", _hoisted_5$7, toDisplayString(products.value[index - 1].itemName), 1),
7257
+ createElementVNode("div", _hoisted_6$6, toDisplayString(products.value[index - 1].price), 1)
7258
+ ], 64)) : (openBlock(), createElementBlock("div", _hoisted_7$5, _hoisted_9$5))
7151
7259
  ])
7152
7260
  ]);
7153
7261
  }), 128)) : createCommentVNode("", true)
@@ -7159,37 +7267,42 @@ const partDefinitions$1 = {
7159
7267
  "Section": {
7160
7268
  partType: "Section",
7161
7269
  partName: "Section",
7162
- creator: () => _sfc_main$5$1
7270
+ creator: () => _sfc_main$6$1
7163
7271
  },
7164
7272
  "GlobalDesignPart": {
7165
7273
  partType: "Section",
7166
7274
  partName: "GlobalDesignPart",
7167
- creator: () => _sfc_main$5$1
7275
+ creator: () => _sfc_main$6$1
7168
7276
  },
7169
7277
  "LocalDesignPart": {
7170
7278
  partType: "Section",
7171
7279
  partName: "LocalDesignPart",
7172
- creator: () => _sfc_main$5$1
7280
+ creator: () => _sfc_main$6$1
7173
7281
  },
7174
7282
  "LocalMarketingPart": {
7175
7283
  partType: "Section",
7176
7284
  partName: "LocalMarketingPart",
7177
- creator: () => _sfc_main$5$1
7285
+ creator: () => _sfc_main$6$1
7178
7286
  },
7179
7287
  "Block": {
7180
7288
  partType: "Block",
7181
7289
  partName: "Block",
7182
- creator: () => _sfc_main$7$1
7290
+ creator: () => _sfc_main$8$1
7183
7291
  },
7184
7292
  "TextWidget": {
7185
7293
  partType: "Widget",
7186
7294
  partName: "TextWidget",
7187
- creator: () => _sfc_main$3$1
7295
+ creator: () => _sfc_main$4$1
7188
7296
  },
7189
7297
  "ImageWidget": {
7190
7298
  partType: "Widget",
7191
7299
  partName: "ImageWidget",
7192
- creator: () => _sfc_main$4$1
7300
+ creator: () => _sfc_main$5$1
7301
+ },
7302
+ "HtmlWidget": {
7303
+ partType: "Widget",
7304
+ partName: "HtmlWidget",
7305
+ creator: () => _sfc_main$3$1
7193
7306
  },
7194
7307
  "ProductListWidget": {
7195
7308
  partType: "Widget",
@@ -7197,19 +7310,24 @@ const partDefinitions$1 = {
7197
7310
  creator: () => _sfc_main$2$1
7198
7311
  }
7199
7312
  };
7313
+ const PAGE_BUILDER_KEY = "PageBuilder";
7200
7314
  const PAGE_BUILDER_VIEWER_KEY = "PageBuilderViewer";
7201
7315
  class PageBuilderViewerImpl {
7202
7316
  constructor() {
7203
7317
  __publicField2(this, "instanceId");
7204
7318
  __publicField2(this, "model");
7205
- __publicField2(this, "language");
7319
+ __publicField2(this, "language", ref("en"));
7206
7320
  this.model = new Model$1();
7207
- this.language = "en";
7321
+ }
7322
+ getLanguage() {
7323
+ return this.language.value;
7324
+ }
7325
+ setLanguage(language) {
7326
+ this.language.value = language || "en";
7208
7327
  }
7209
7328
  render(pageContent) {
7210
7329
  const rootPart = new RootPart();
7211
7330
  rootPart.pageBuilderId = this.instanceId;
7212
- rootPart.language = this.language;
7213
7331
  rootPart.children = this.parsePageContent(pageContent);
7214
7332
  if (rootPart.children) {
7215
7333
  for (let page of rootPart.children) {
@@ -7253,13 +7371,22 @@ const createPageBuilderViewer = () => {
7253
7371
  const viewer = new PageBuilderViewerImpl();
7254
7372
  return viewer;
7255
7373
  };
7374
+ const providePageBuilder = (pageBuilder) => {
7375
+ provide(PAGE_BUILDER_KEY, pageBuilder);
7376
+ };
7256
7377
  const providePageBuilderViewer = (pageBuilderViewer) => {
7257
7378
  provide(PAGE_BUILDER_VIEWER_KEY, pageBuilderViewer);
7258
7379
  };
7380
+ const usePageBuilder = () => {
7381
+ const pageBuilder = inject(PAGE_BUILDER_KEY);
7382
+ if (!pageBuilder)
7383
+ throw Error("PageBuilder not found");
7384
+ return pageBuilder;
7385
+ };
7259
7386
  const usePageBuilderViewer = () => {
7260
7387
  const pageBuilderViewer = inject(PAGE_BUILDER_VIEWER_KEY);
7261
7388
  if (!pageBuilderViewer)
7262
- throw Error("PageBuilder not found");
7389
+ throw Error("PageBuilderViewer not found");
7263
7390
  return pageBuilderViewer;
7264
7391
  };
7265
7392
  const createPartComponents = (parts) => {
@@ -7296,7 +7423,7 @@ const _sfc_main$1$1 = /* @__PURE__ */ defineComponent({
7296
7423
  class: normalizeClass([[_ctx.isMobilePage ? "mobile" : "pc"], "pb-page-content"])
7297
7424
  }, [
7298
7425
  (openBlock(true), createElementBlock(Fragment, null, renderList((_a = _ctx.page) == null ? void 0 : _a.children, (section) => {
7299
- return openBlock(), createBlock$1(_sfc_main$5$1, {
7426
+ return openBlock(), createBlock$1(_sfc_main$6$1, {
7300
7427
  key: section.partId,
7301
7428
  part: section
7302
7429
  }, null, 8, ["part"]);
@@ -7319,8 +7446,9 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
7319
7446
  const props = __props;
7320
7447
  const pageBuilderViewer = createPageBuilderViewer();
7321
7448
  pageBuilderViewer.instanceId = props.instanceId;
7322
- pageBuilderViewer.language = props.language || "en";
7449
+ pageBuilderViewer.setLanguage(props.language);
7323
7450
  providePageBuilderViewer(pageBuilderViewer);
7451
+ providePageBuilder(pageBuilderViewer);
7324
7452
  const page = computed(() => pageBuilderViewer.model.rootPart.value.children && pageBuilderViewer.model.rootPart.value.children[props.isMobilePage ? 0 : 1]);
7325
7453
  onMounted(() => {
7326
7454
  if (props.pageContent) {
@@ -7636,7 +7764,7 @@ class Model2 {
7636
7764
  parsePageModel(json, keepPartId = false) {
7637
7765
  return partsFromJsonString(json, keepPartId);
7638
7766
  }
7639
- moveElements(partId, destPartId, destIndex, update) {
7767
+ moveElements(partId, destPartId, destIndex, update, doNotChangeIndex) {
7640
7768
  var _a;
7641
7769
  if (partId === destPartId)
7642
7770
  return;
@@ -7644,7 +7772,7 @@ class Model2 {
7644
7772
  if (element) {
7645
7773
  if (((_a = element.parent) == null ? void 0 : _a.getAttribute(PART_ID_KEY)) === destPartId) {
7646
7774
  const index = this.getIndexOfElement(element);
7647
- if (index !== void 0 && index < destIndex)
7775
+ if (!doNotChangeIndex && index !== void 0 && index < destIndex)
7648
7776
  destIndex--;
7649
7777
  }
7650
7778
  const parts = this.findPartsByIds([partId]);
@@ -7755,10 +7883,8 @@ class Model2 {
7755
7883
  return node;
7756
7884
  }
7757
7885
  setElementAttribute(node, name, value) {
7758
- if (!value)
7759
- return;
7760
- if (typeof value === "string") {
7761
- node.setAttribute(name, value);
7886
+ if (!value || typeof value === "string") {
7887
+ node.setAttribute(name, value ? value : "");
7762
7888
  } else if (typeof value === "object") {
7763
7889
  node.setAttribute(`${name}.object`, JSON.stringify(value));
7764
7890
  }
@@ -7939,12 +8065,14 @@ class PartManager {
7939
8065
  }
7940
8066
  const defaultPartPropertyEditors = () => {
7941
8067
  return {
7942
- "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-Bk0WJxA0.js")),
7943
- "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-DNdXl-Tr.js")),
7944
- "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-CfRbKELF.js")),
7945
- "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-BJovN1su.js")),
7946
- "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-EuqsavTF.js")),
7947
- "product": () => defineAsyncComponent(() => import("./PbPropertyEditorProduct-COnCyYJl.js"))
8068
+ "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-Dgp_AVOD.js")),
8069
+ "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-BWOKvwD9.js")),
8070
+ "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-sb-oS_gz.js")),
8071
+ "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-CWedbXJI.js")),
8072
+ "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-y7y6ZUQs.js")),
8073
+ "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-BXEXm2Px.js")),
8074
+ "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-CbQR_BzH.js")),
8075
+ "product": () => defineAsyncComponent(() => import("./PbPropertyEditorProduct-p0zOCA9R.js"))
7948
8076
  };
7949
8077
  };
7950
8078
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -8177,16 +8305,16 @@ const _export_sfc = (sfc, props) => {
8177
8305
  const _sfc_main$p = {};
8178
8306
  const _hoisted_1$t = { class: "pb-add-widget-button" };
8179
8307
  const _hoisted_2$k = /* @__PURE__ */ createElementVNode("span", { class: "icon material-icons-outlined" }, "add_box", -1);
8180
- const _hoisted_3$f = /* @__PURE__ */ createElementVNode("span", { class: "text" }, "Add Widget", -1);
8181
- const _hoisted_4$c = [
8308
+ const _hoisted_3$g = /* @__PURE__ */ createElementVNode("span", { class: "text" }, "Add Widget", -1);
8309
+ const _hoisted_4$d = [
8182
8310
  _hoisted_2$k,
8183
- _hoisted_3$f
8311
+ _hoisted_3$g
8184
8312
  ];
8185
8313
  function _sfc_render$1(_ctx, _cache) {
8186
8314
  return openBlock(), createElementBlock("div", _hoisted_1$t, [
8187
8315
  createElementVNode("button", {
8188
8316
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8189
- }, _hoisted_4$c)
8317
+ }, _hoisted_4$d)
8190
8318
  ]);
8191
8319
  }
8192
8320
  const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$1]]);
@@ -8906,7 +9034,7 @@ const _hoisted_2$i = /* @__PURE__ */ createElementVNode("div", {
8906
9034
  /* @__PURE__ */ createElementVNode("h3", null, "Login Design Part")
8907
9035
  ])
8908
9036
  ], -1);
8909
- const _hoisted_3$e = [
9037
+ const _hoisted_3$f = [
8910
9038
  _hoisted_2$i
8911
9039
  ];
8912
9040
  const _sfc_main$m = /* @__PURE__ */ defineComponent({
@@ -8916,7 +9044,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
8916
9044
  },
8917
9045
  setup(__props) {
8918
9046
  return (_ctx, _cache) => {
8919
- return openBlock(), createElementBlock("div", _hoisted_1$q, _hoisted_3$e);
9047
+ return openBlock(), createElementBlock("div", _hoisted_1$q, _hoisted_3$f);
8920
9048
  };
8921
9049
  }
8922
9050
  });
@@ -9055,14 +9183,20 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
9055
9183
  });
9056
9184
  const _hoisted_1$o = { class: "group-editor group-editor-position" };
9057
9185
  const _hoisted_2$h = { class: "flex-align-center" };
9058
- const _hoisted_3$d = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
9059
- /* @__PURE__ */ createElementVNode("label", null, "Position")
9186
+ const _hoisted_3$e = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
9187
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Position" })
9060
9188
  ], -1);
9061
- const _hoisted_4$b = { class: "flex-grow-1" };
9062
- const _hoisted_5$7 = /* @__PURE__ */ createElementVNode("span", null, "L", -1);
9063
- const _hoisted_6$6 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "R", -1);
9064
- const _hoisted_7$4 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "T", -1);
9065
- const _hoisted_8$4 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "B", -1);
9189
+ const _hoisted_4$c = { class: "flex-grow-1" };
9190
+ const _hoisted_5$6 = { class: "bg-gray-100 py-5 rounded-8" };
9191
+ const _hoisted_6$5 = { class: "text-center" };
9192
+ const _hoisted_7$4 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9193
+ const _hoisted_8$4 = /* @__PURE__ */ createElementVNode("div", {
9194
+ class: "d-inline-block text-center text-gray-300",
9195
+ style: { "width": "30%", "font-size": "12px" }
9196
+ }, [
9197
+ /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "add")
9198
+ ], -1);
9199
+ const _hoisted_9$4 = { class: "text-center" };
9066
9200
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
9067
9201
  __name: "PbPropertyGroupEditorPosition",
9068
9202
  props: {
@@ -9089,37 +9223,44 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
9089
9223
  return (_ctx, _cache) => {
9090
9224
  return openBlock(), createElementBlock("div", _hoisted_1$o, [
9091
9225
  createElementVNode("div", _hoisted_2$h, [
9092
- _hoisted_3$d,
9093
- createElementVNode("div", _hoisted_4$b, [
9094
- createElementVNode("div", null, [
9095
- _hoisted_5$7,
9096
- createVNode(unref(BSTextInput), {
9097
- "model-value": left.value,
9098
- class: "ml-4",
9099
- width: "4em",
9100
- "onUpdate:modelValue": updateLeft
9101
- }, null, 8, ["model-value"]),
9102
- _hoisted_6$6,
9103
- createVNode(unref(BSTextInput), {
9104
- "model-value": right.value,
9105
- class: "ml-4",
9106
- width: "4em",
9107
- "onUpdate:modelValue": updateRight
9108
- }, null, 8, ["model-value"]),
9109
- _hoisted_7$4,
9110
- createVNode(unref(BSTextInput), {
9111
- "model-value": top.value,
9112
- class: "ml-4",
9113
- width: "4em",
9114
- "onUpdate:modelValue": updateTop
9115
- }, null, 8, ["model-value"]),
9116
- _hoisted_8$4,
9117
- createVNode(unref(BSTextInput), {
9118
- "model-value": bottom.value,
9119
- class: "ml-4",
9120
- width: "4em",
9121
- "onUpdate:modelValue": updateBottom
9122
- }, null, 8, ["model-value"])
9226
+ _hoisted_3$e,
9227
+ createElementVNode("div", _hoisted_4$c, [
9228
+ createElementVNode("div", _hoisted_5$6, [
9229
+ createElementVNode("div", _hoisted_6$5, [
9230
+ createVNode(unref(BSTextInput), {
9231
+ "model-value": top.value,
9232
+ class: "ml-4",
9233
+ prefix: "T",
9234
+ width: "30%",
9235
+ "onUpdate:modelValue": updateTop
9236
+ }, null, 8, ["model-value"])
9237
+ ]),
9238
+ createElementVNode("div", _hoisted_7$4, [
9239
+ createVNode(unref(BSTextInput), {
9240
+ "model-value": left.value,
9241
+ class: "ml-4",
9242
+ prefix: "L",
9243
+ width: "30%",
9244
+ "onUpdate:modelValue": updateLeft
9245
+ }, null, 8, ["model-value"]),
9246
+ _hoisted_8$4,
9247
+ createVNode(unref(BSTextInput), {
9248
+ "model-value": right.value,
9249
+ class: "ml-4",
9250
+ prefix: "R",
9251
+ width: "30%",
9252
+ "onUpdate:modelValue": updateRight
9253
+ }, null, 8, ["model-value"])
9254
+ ]),
9255
+ createElementVNode("div", _hoisted_9$4, [
9256
+ createVNode(unref(BSTextInput), {
9257
+ "model-value": bottom.value,
9258
+ class: "ml-4",
9259
+ prefix: "B",
9260
+ width: "30%",
9261
+ "onUpdate:modelValue": updateBottom
9262
+ }, null, 8, ["model-value"])
9263
+ ])
9123
9264
  ])
9124
9265
  ])
9125
9266
  ])
@@ -9129,12 +9270,10 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
9129
9270
  });
9130
9271
  const _hoisted_1$n = { class: "group-editor group-editor-size" };
9131
9272
  const _hoisted_2$g = { class: "flex-align-center" };
9132
- const _hoisted_3$c = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
9133
- /* @__PURE__ */ createElementVNode("label", null, "Size")
9273
+ const _hoisted_3$d = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
9274
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Size" })
9134
9275
  ], -1);
9135
- const _hoisted_4$a = { class: "flex-grow-1" };
9136
- const _hoisted_5$6 = /* @__PURE__ */ createElementVNode("span", null, "W", -1);
9137
- const _hoisted_6$5 = /* @__PURE__ */ createElementVNode("span", { class: "ml-16" }, "H", -1);
9276
+ const _hoisted_4$b = { class: "flex-grow-1 bs-layout-horizontal" };
9138
9277
  const _sfc_main$j = /* @__PURE__ */ defineComponent({
9139
9278
  __name: "PbPropertyGroupEditorSize",
9140
9279
  props: {
@@ -9157,20 +9296,18 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
9157
9296
  return (_ctx, _cache) => {
9158
9297
  return openBlock(), createElementBlock("div", _hoisted_1$n, [
9159
9298
  createElementVNode("div", _hoisted_2$g, [
9160
- _hoisted_3$c,
9161
- createElementVNode("div", _hoisted_4$a, [
9162
- _hoisted_5$6,
9299
+ _hoisted_3$d,
9300
+ createElementVNode("div", _hoisted_4$b, [
9163
9301
  createVNode(unref(BSTextInput), {
9164
9302
  "model-value": width.value,
9165
- class: "ml-4",
9166
- width: "5em",
9303
+ class: "flex-grow-1 mr-2",
9304
+ prefix: "W",
9167
9305
  "onUpdate:modelValue": updateWidth
9168
9306
  }, null, 8, ["model-value"]),
9169
- _hoisted_6$5,
9170
9307
  createVNode(unref(BSTextInput), {
9171
9308
  "model-value": height.value,
9172
- class: "ml-4",
9173
- width: "5em",
9309
+ class: "flex-grow-1 ml-2",
9310
+ prefix: "H",
9174
9311
  "onUpdate:modelValue": updateHeight
9175
9312
  }, null, 8, ["model-value"])
9176
9313
  ])
@@ -9338,15 +9475,15 @@ var script$4 = {
9338
9475
  };
9339
9476
  const _hoisted_1$m = { class: "vc-alpha" };
9340
9477
  const _hoisted_2$f = { class: "vc-alpha-checkboard-wrap" };
9341
- const _hoisted_3$b = /* @__PURE__ */ createElementVNode(
9478
+ const _hoisted_3$c = /* @__PURE__ */ createElementVNode(
9342
9479
  "div",
9343
9480
  { class: "vc-alpha-picker" },
9344
9481
  null,
9345
9482
  -1
9346
9483
  /* HOISTED */
9347
9484
  );
9348
- const _hoisted_4$9 = [
9349
- _hoisted_3$b
9485
+ const _hoisted_4$a = [
9486
+ _hoisted_3$c
9350
9487
  ];
9351
9488
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9352
9489
  const _component_Checkboard = resolveComponent("Checkboard");
@@ -9380,7 +9517,7 @@ function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9380
9517
  class: "vc-alpha-pointer",
9381
9518
  style: normalizeStyle({ left: `${$options.colors.a * 100}%` })
9382
9519
  },
9383
- _hoisted_4$9,
9520
+ _hoisted_4$a,
9384
9521
  4
9385
9522
  /* STYLE */
9386
9523
  )
@@ -10456,8 +10593,8 @@ var script$3 = {
10456
10593
  };
10457
10594
  const _hoisted_1$l = { class: "vc-editable-input" };
10458
10595
  const _hoisted_2$e = ["aria-labelledby"];
10459
- const _hoisted_3$a = ["id", "for"];
10460
- const _hoisted_4$8 = { class: "vc-input__desc" };
10596
+ const _hoisted_3$b = ["id", "for"];
10597
+ const _hoisted_4$9 = { class: "vc-input__desc" };
10461
10598
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10462
10599
  return openBlock(), createElementBlock("div", _hoisted_1$l, [
10463
10600
  withDirectives(createElementVNode("input", {
@@ -10474,10 +10611,10 @@ function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10474
10611
  id: $options.labelId,
10475
10612
  for: $props.label,
10476
10613
  class: "vc-input__label"
10477
- }, toDisplayString($options.labelSpanText), 9, _hoisted_3$a),
10614
+ }, toDisplayString($options.labelSpanText), 9, _hoisted_3$b),
10478
10615
  createElementVNode(
10479
10616
  "span",
10480
- _hoisted_4$8,
10617
+ _hoisted_4$9,
10481
10618
  toDisplayString($props.desc),
10482
10619
  1
10483
10620
  /* TEXT */
@@ -10568,15 +10705,15 @@ const _hoisted_2$d = /* @__PURE__ */ createElementVNode(
10568
10705
  -1
10569
10706
  /* HOISTED */
10570
10707
  );
10571
- const _hoisted_3$9 = /* @__PURE__ */ createElementVNode(
10708
+ const _hoisted_3$a = /* @__PURE__ */ createElementVNode(
10572
10709
  "div",
10573
10710
  { class: "vc-saturation-circle" },
10574
10711
  null,
10575
10712
  -1
10576
10713
  /* HOISTED */
10577
10714
  );
10578
- const _hoisted_4$7 = [
10579
- _hoisted_3$9
10715
+ const _hoisted_4$8 = [
10716
+ _hoisted_3$a
10580
10717
  ];
10581
10718
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10582
10719
  return openBlock(), createElementBlock(
@@ -10598,7 +10735,7 @@ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10598
10735
  class: "vc-saturation-pointer",
10599
10736
  style: normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft })
10600
10737
  },
10601
- _hoisted_4$7,
10738
+ _hoisted_4$8,
10602
10739
  4
10603
10740
  /* STYLE */
10604
10741
  )
@@ -10747,7 +10884,7 @@ const _hoisted_2$c = /* @__PURE__ */ createElementVNode(
10747
10884
  -1
10748
10885
  /* HOISTED */
10749
10886
  );
10750
- const _hoisted_3$8 = [
10887
+ const _hoisted_3$9 = [
10751
10888
  _hoisted_2$c
10752
10889
  ];
10753
10890
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
@@ -10775,7 +10912,7 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
10775
10912
  style: normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),
10776
10913
  role: "presentation"
10777
10914
  },
10778
- _hoisted_3$8,
10915
+ _hoisted_3$9,
10779
10916
  4
10780
10917
  /* STYLE */
10781
10918
  )
@@ -10877,8 +11014,8 @@ var script = {
10877
11014
  };
10878
11015
  const _hoisted_1$i = { class: "vc-sketch-saturation-wrap" };
10879
11016
  const _hoisted_2$b = { class: "vc-sketch-controls" };
10880
- const _hoisted_3$7 = { class: "vc-sketch-sliders" };
10881
- const _hoisted_4$6 = { class: "vc-sketch-hue-wrap" };
11017
+ const _hoisted_3$8 = { class: "vc-sketch-sliders" };
11018
+ const _hoisted_4$7 = { class: "vc-sketch-hue-wrap" };
10882
11019
  const _hoisted_5$5 = {
10883
11020
  key: 0,
10884
11021
  class: "vc-sketch-alpha-wrap"
@@ -10889,7 +11026,7 @@ const _hoisted_8$3 = {
10889
11026
  key: 0,
10890
11027
  class: "vc-sketch-field"
10891
11028
  };
10892
- const _hoisted_9$1 = { class: "vc-sketch-field--double" };
11029
+ const _hoisted_9$3 = { class: "vc-sketch-field--double" };
10893
11030
  const _hoisted_10$1 = { class: "vc-sketch-field--single" };
10894
11031
  const _hoisted_11$1 = { class: "vc-sketch-field--single" };
10895
11032
  const _hoisted_12$1 = { class: "vc-sketch-field--single" };
@@ -10902,8 +11039,8 @@ const _hoisted_14$1 = {
10902
11039
  role: "group",
10903
11040
  "aria-label": "A color preset, pick one to set as current color"
10904
11041
  };
10905
- const _hoisted_15 = ["aria-label", "onClick"];
10906
- const _hoisted_16 = ["aria-label", "onClick"];
11042
+ const _hoisted_15$1 = ["aria-label", "onClick"];
11043
+ const _hoisted_16$1 = ["aria-label", "onClick"];
10907
11044
  function render(_ctx, _cache, $props, $setup, $data, $options) {
10908
11045
  const _component_Saturation = resolveComponent("Saturation");
10909
11046
  const _component_Hue = resolveComponent("Hue");
@@ -10925,8 +11062,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
10925
11062
  }, null, 8, ["value", "onChange"])
10926
11063
  ]),
10927
11064
  createElementVNode("div", _hoisted_2$b, [
10928
- createElementVNode("div", _hoisted_3$7, [
10929
- createElementVNode("div", _hoisted_4$6, [
11065
+ createElementVNode("div", _hoisted_3$8, [
11066
+ createElementVNode("div", _hoisted_4$7, [
10930
11067
  createVNode(_component_Hue, {
10931
11068
  value: _ctx.colors,
10932
11069
  onChange: $options.childChange
@@ -10950,7 +11087,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
10950
11087
  ]),
10951
11088
  !$props.disableFields ? (openBlock(), createElementBlock("div", _hoisted_8$3, [
10952
11089
  createCommentVNode(" rgba "),
10953
- createElementVNode("div", _hoisted_9$1, [
11090
+ createElementVNode("div", _hoisted_9$3, [
10954
11091
  createVNode(_component_EdIn, {
10955
11092
  label: "hex",
10956
11093
  value: $options.hex,
@@ -11003,14 +11140,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
11003
11140
  "aria-label": `Color:${c}`,
11004
11141
  style: normalizeStyle({ background: c }),
11005
11142
  onClick: ($event) => $options.handlePreset(c)
11006
- }, null, 12, _hoisted_15)) : (openBlock(), createElementBlock("div", {
11143
+ }, null, 12, _hoisted_15$1)) : (openBlock(), createElementBlock("div", {
11007
11144
  key: c,
11008
11145
  "aria-label": `Color:${c}`,
11009
11146
  class: "vc-sketch-presets-color",
11010
11147
  onClick: ($event) => $options.handlePreset(c)
11011
11148
  }, [
11012
11149
  createVNode(_component_Checkboard)
11013
- ], 8, _hoisted_16))
11150
+ ], 8, _hoisted_16$1))
11014
11151
  ],
11015
11152
  64
11016
11153
  /* STABLE_FRAGMENT */
@@ -11047,7 +11184,14 @@ const _sfc_main$i = defineComponent({
11047
11184
  },
11048
11185
  setup(props, { emit }) {
11049
11186
  const color = ref(props.value);
11050
- const appliedColor = computed(() => color.value);
11187
+ const appliedColor = computed(() => {
11188
+ if (typeof color.value === "string")
11189
+ return color.value;
11190
+ else if (typeof color.value === "object" && color.value.hasOwnProperty("hex"))
11191
+ return color.value.hex;
11192
+ else
11193
+ return;
11194
+ });
11051
11195
  const isShowColorPicker = ref(false);
11052
11196
  const toggle = (value) => {
11053
11197
  isShowColorPicker.value = value !== void 0 ? value : !isShowColorPicker.value;
@@ -11060,7 +11204,7 @@ const _sfc_main$i = defineComponent({
11060
11204
  }
11061
11205
  );
11062
11206
  watch(
11063
- color,
11207
+ () => color.value,
11064
11208
  () => setTimeout(() => {
11065
11209
  if (appliedColor.value)
11066
11210
  emit("change-color", appliedColor.value);
@@ -11070,8 +11214,7 @@ const _sfc_main$i = defineComponent({
11070
11214
  watch(
11071
11215
  () => props.value,
11072
11216
  (value) => {
11073
- if (typeof value === "string")
11074
- color.value = value;
11217
+ color.value = value;
11075
11218
  },
11076
11219
  { deep: true }
11077
11220
  );
@@ -11090,10 +11233,10 @@ const _sfc_main$i = defineComponent({
11090
11233
  });
11091
11234
  const _hoisted_1$h = { class: "buttons" };
11092
11235
  const _hoisted_2$a = /* @__PURE__ */ createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1);
11093
- const _hoisted_3$6 = [
11236
+ const _hoisted_3$7 = [
11094
11237
  _hoisted_2$a
11095
11238
  ];
11096
- const _hoisted_4$5 = { class: "sketch-wrap" };
11239
+ const _hoisted_4$6 = { class: "sketch-wrap" };
11097
11240
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11098
11241
  const _component_Sketch = resolveComponent("Sketch");
11099
11242
  const _directive_click_outside = resolveDirective("click-outside");
@@ -11114,9 +11257,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11114
11257
  key: 0,
11115
11258
  class: "pb-button",
11116
11259
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.emptyColor && _ctx.emptyColor(...args))
11117
- }, _hoisted_3$6)) : createCommentVNode("", true)
11260
+ }, _hoisted_3$7)) : createCommentVNode("", true)
11118
11261
  ]),
11119
- createElementVNode("div", _hoisted_4$5, [
11262
+ createElementVNode("div", _hoisted_4$6, [
11120
11263
  _ctx.isShowColorPicker ? (openBlock(), createBlock$1(_component_Sketch, {
11121
11264
  key: 0,
11122
11265
  modelValue: _ctx.color,
@@ -11131,10 +11274,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11131
11274
  const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render]]);
11132
11275
  const _hoisted_1$g = { class: "group-editor group-editor-background" };
11133
11276
  const _hoisted_2$9 = { class: "flex-align-center" };
11134
- const _hoisted_3$5 = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
11135
- /* @__PURE__ */ createElementVNode("label", null, "Background")
11277
+ const _hoisted_3$6 = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
11278
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Background" })
11136
11279
  ], -1);
11137
- const _hoisted_4$4 = { class: "bs-layout-horizontal" };
11280
+ const _hoisted_4$5 = { class: "bs-layout-horizontal" };
11138
11281
  const _hoisted_5$4 = { class: "color" };
11139
11282
  const _sfc_main$h = /* @__PURE__ */ defineComponent({
11140
11283
  __name: "PbPropertyGroupEditorBackground",
@@ -11145,7 +11288,6 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
11145
11288
  setup(__props) {
11146
11289
  const props = __props;
11147
11290
  const pageBuilder = usePageBuilderEditor();
11148
- useModal();
11149
11291
  const color = computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundColor"));
11150
11292
  const emptyColor = () => {
11151
11293
  };
@@ -11169,8 +11311,8 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
11169
11311
  return (_ctx, _cache) => {
11170
11312
  return openBlock(), createElementBlock("div", _hoisted_1$g, [
11171
11313
  createElementVNode("div", _hoisted_2$9, [
11172
- _hoisted_3$5,
11173
- createElementVNode("div", _hoisted_4$4, [
11314
+ _hoisted_3$6,
11315
+ createElementVNode("div", _hoisted_4$5, [
11174
11316
  createElementVNode("div", _hoisted_5$4, [
11175
11317
  createVNode(PbColorPicker, {
11176
11318
  value: color.value,
@@ -11196,22 +11338,43 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
11196
11338
  };
11197
11339
  }
11198
11340
  });
11341
+ const TopLeftCornerIcon = "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(270)'%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";
11342
+ 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";
11343
+ 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";
11344
+ 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";
11199
11345
  const _hoisted_1$f = { class: "group-editor group-editor-border" };
11200
11346
  const _hoisted_2$8 = { class: "flex-align-center" };
11201
- const _hoisted_3$4 = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
11202
- /* @__PURE__ */ createElementVNode("label", null, "Border")
11347
+ const _hoisted_3$5 = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
11348
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Border" })
11349
+ ], -1);
11350
+ const _hoisted_4$4 = { class: "" };
11351
+ const _hoisted_5$3 = /* @__PURE__ */ createElementVNode("div", { class: "sub-title" }, [
11352
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Color" })
11353
+ ], -1);
11354
+ const _hoisted_6$3 = { class: "color" };
11355
+ const _hoisted_7$2 = { class: "mt-8" };
11356
+ const _hoisted_8$2 = /* @__PURE__ */ createElementVNode("div", { class: "sub-title" }, [
11357
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Border Width" })
11358
+ ], -1);
11359
+ const _hoisted_9$2 = { class: "flex-grow-1 mt-4" };
11360
+ const _hoisted_10 = { class: "bg-gray-100 py-5 rounded-8" };
11361
+ const _hoisted_11 = { class: "text-center" };
11362
+ const _hoisted_12 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11363
+ const _hoisted_13 = /* @__PURE__ */ createElementVNode("div", {
11364
+ class: "d-inline-block text-center text-gray-300",
11365
+ style: { "width": "30%", "font-size": "12px" }
11366
+ }, [
11367
+ /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "add")
11203
11368
  ], -1);
11204
- const _hoisted_4$3 = { class: "color" };
11205
- const _hoisted_5$3 = { class: "bs-layout-horizontal mt-8" };
11206
- const _hoisted_6$3 = /* @__PURE__ */ createElementVNode("span", null, "WL", -1);
11207
- const _hoisted_7$2 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "WR", -1);
11208
- const _hoisted_8$2 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "WT", -1);
11209
- const _hoisted_9 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "WB", -1);
11210
- const _hoisted_10 = { class: "bs-layout-horizontal mt-8" };
11211
- const _hoisted_11 = /* @__PURE__ */ createElementVNode("span", null, "RTL", -1);
11212
- const _hoisted_12 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "RTR", -1);
11213
- const _hoisted_13 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "RBL", -1);
11214
- const _hoisted_14 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "RBR", -1);
11369
+ const _hoisted_14 = { class: "text-center" };
11370
+ const _hoisted_15 = { class: "mt-8" };
11371
+ const _hoisted_16 = /* @__PURE__ */ createElementVNode("div", { class: "sub-title" }, [
11372
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Border Radius" })
11373
+ ], -1);
11374
+ const _hoisted_17 = { class: "flex-grow-1 mt-4" };
11375
+ const _hoisted_18 = { class: "bg-gray-100 py-5 rounded-8" };
11376
+ const _hoisted_19 = { class: "" };
11377
+ const _hoisted_20 = { class: "mt-2" };
11215
11378
  const _sfc_main$g = /* @__PURE__ */ defineComponent({
11216
11379
  __name: "PbPropertyGroupEditorBorder",
11217
11380
  props: {
@@ -11252,85 +11415,106 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
11252
11415
  return (_ctx, _cache) => {
11253
11416
  return openBlock(), createElementBlock("div", _hoisted_1$f, [
11254
11417
  createElementVNode("div", _hoisted_2$8, [
11255
- _hoisted_3$4,
11256
- createElementVNode("div", _hoisted_4$3, [
11257
- createVNode(PbColorPicker, {
11258
- value: color.value,
11259
- "hide-delete": "",
11260
- onEmpty: _cache[0] || (_cache[0] = ($event) => emptyColor()),
11261
- onHide: _cache[1] || (_cache[1] = ($event) => updateColor($event)),
11262
- onShow: saveOriginalColor,
11263
- onChangeColor: _cache[2] || (_cache[2] = ($event) => updateColor($event))
11264
- }, null, 8, ["value"]),
11265
- createVNode(unref(BSTextInput), {
11266
- "model-value": color.value,
11267
- class: "ml-4",
11268
- width: "",
11269
- "onUpdate:modelValue": updateColor
11270
- }, null, 8, ["model-value"])
11271
- ]),
11272
- createElementVNode("div", _hoisted_5$3, [
11273
- createElementVNode("div", null, [
11274
- _hoisted_6$3,
11275
- createVNode(unref(BSTextInput), {
11276
- "model-value": borderLeftWidth.value,
11277
- class: "ml-4",
11278
- width: "3em",
11279
- "onUpdate:modelValue": updateBorderLeftWidth
11280
- }, null, 8, ["model-value"]),
11281
- _hoisted_7$2,
11282
- createVNode(unref(BSTextInput), {
11283
- "model-value": borderRightWidth.value,
11284
- class: "ml-4",
11285
- width: "3em",
11286
- "onUpdate:modelValue": updateBorderRightWidth
11287
- }, null, 8, ["model-value"]),
11288
- _hoisted_8$2,
11289
- createVNode(unref(BSTextInput), {
11290
- "model-value": borderTopWidth.value,
11291
- class: "ml-4",
11292
- width: "3em",
11293
- "onUpdate:modelValue": updateBorderTopWidth
11294
- }, null, 8, ["model-value"]),
11295
- _hoisted_9,
11418
+ _hoisted_3$5,
11419
+ createElementVNode("div", _hoisted_4$4, [
11420
+ _hoisted_5$3,
11421
+ createElementVNode("div", _hoisted_6$3, [
11422
+ createVNode(PbColorPicker, {
11423
+ value: color.value,
11424
+ "hide-delete": "",
11425
+ onEmpty: _cache[0] || (_cache[0] = ($event) => emptyColor()),
11426
+ onHide: _cache[1] || (_cache[1] = ($event) => updateColor($event)),
11427
+ onShow: saveOriginalColor,
11428
+ onChangeColor: _cache[2] || (_cache[2] = ($event) => updateColor($event))
11429
+ }, null, 8, ["value"]),
11296
11430
  createVNode(unref(BSTextInput), {
11297
- "model-value": borderBottomWidth.value,
11431
+ "model-value": color.value,
11432
+ prefix: { type: "font-icon", value: "palette" },
11298
11433
  class: "ml-4",
11299
- width: "3em",
11300
- "onUpdate:modelValue": updateBorderBottomWidth
11434
+ width: "",
11435
+ "onUpdate:modelValue": updateColor
11301
11436
  }, null, 8, ["model-value"])
11302
11437
  ])
11303
11438
  ]),
11304
- createElementVNode("div", _hoisted_10, [
11305
- createElementVNode("div", null, [
11306
- _hoisted_11,
11307
- createVNode(unref(BSTextInput), {
11308
- "model-value": borderTopLeftRadius.value,
11309
- class: "ml-4",
11310
- width: "3em",
11311
- "onUpdate:modelValue": updateBorderTopLeftRadius
11312
- }, null, 8, ["model-value"]),
11313
- _hoisted_12,
11314
- createVNode(unref(BSTextInput), {
11315
- "model-value": borderTopRightRadius.value,
11316
- class: "ml-4",
11317
- width: "3em",
11318
- "onUpdate:modelValue": updateBorderTopRightRadius
11319
- }, null, 8, ["model-value"]),
11320
- _hoisted_13,
11321
- createVNode(unref(BSTextInput), {
11322
- "model-value": borderBottomLeftRadius.value,
11323
- class: "ml-4",
11324
- width: "3em",
11325
- "onUpdate:modelValue": updateBorderBottomLeftRadius
11326
- }, null, 8, ["model-value"]),
11327
- _hoisted_14,
11328
- createVNode(unref(BSTextInput), {
11329
- "model-value": borderBottomRightRadius.value,
11330
- class: "ml-4",
11331
- width: "3em",
11332
- "onUpdate:modelValue": updateBorderBottomRightRadius
11333
- }, null, 8, ["model-value"])
11439
+ createElementVNode("div", _hoisted_7$2, [
11440
+ _hoisted_8$2,
11441
+ createElementVNode("div", _hoisted_9$2, [
11442
+ createElementVNode("div", _hoisted_10, [
11443
+ createElementVNode("div", _hoisted_11, [
11444
+ createVNode(unref(BSTextInput), {
11445
+ "model-value": borderTopWidth.value,
11446
+ class: "ml-4",
11447
+ prefix: "T",
11448
+ width: "30%",
11449
+ "onUpdate:modelValue": updateBorderTopWidth
11450
+ }, null, 8, ["model-value"])
11451
+ ]),
11452
+ createElementVNode("div", _hoisted_12, [
11453
+ createVNode(unref(BSTextInput), {
11454
+ "model-value": borderLeftWidth.value,
11455
+ class: "ml-4",
11456
+ prefix: "L",
11457
+ width: "30%",
11458
+ "onUpdate:modelValue": updateBorderLeftWidth
11459
+ }, null, 8, ["model-value"]),
11460
+ _hoisted_13,
11461
+ createVNode(unref(BSTextInput), {
11462
+ "model-value": borderRightWidth.value,
11463
+ class: "ml-4",
11464
+ prefix: "R",
11465
+ width: "30%",
11466
+ "onUpdate:modelValue": updateBorderRightWidth
11467
+ }, null, 8, ["model-value"])
11468
+ ]),
11469
+ createElementVNode("div", _hoisted_14, [
11470
+ createVNode(unref(BSTextInput), {
11471
+ "model-value": borderBottomWidth.value,
11472
+ class: "ml-4",
11473
+ prefix: "B",
11474
+ width: "30%",
11475
+ "onUpdate:modelValue": updateBorderBottomWidth
11476
+ }, null, 8, ["model-value"])
11477
+ ])
11478
+ ])
11479
+ ])
11480
+ ]),
11481
+ createElementVNode("div", _hoisted_15, [
11482
+ _hoisted_16,
11483
+ createElementVNode("div", _hoisted_17, [
11484
+ createElementVNode("div", _hoisted_18, [
11485
+ createElementVNode("div", _hoisted_19, [
11486
+ createVNode(unref(BSTextInput), {
11487
+ "model-value": borderTopLeftRadius.value,
11488
+ prefix: { type: "image-url", value: unref(TopLeftCornerIcon) },
11489
+ class: "ml-4",
11490
+ width: "48%",
11491
+ "onUpdate:modelValue": updateBorderTopLeftRadius
11492
+ }, null, 8, ["model-value", "prefix"]),
11493
+ createVNode(unref(BSTextInput), {
11494
+ "model-value": borderTopRightRadius.value,
11495
+ prefix: { type: "image-url", value: unref(TopRightCornerIcon) },
11496
+ class: "ml-4",
11497
+ width: "48%",
11498
+ "onUpdate:modelValue": updateBorderTopRightRadius
11499
+ }, null, 8, ["model-value", "prefix"])
11500
+ ]),
11501
+ createElementVNode("div", _hoisted_20, [
11502
+ createVNode(unref(BSTextInput), {
11503
+ "model-value": borderBottomLeftRadius.value,
11504
+ prefix: { type: "image-url", value: unref(BottomLeftCornerIcon) },
11505
+ class: "ml-4",
11506
+ width: "48%",
11507
+ "onUpdate:modelValue": updateBorderBottomLeftRadius
11508
+ }, null, 8, ["model-value", "prefix"]),
11509
+ createVNode(unref(BSTextInput), {
11510
+ "model-value": borderBottomRightRadius.value,
11511
+ prefix: { type: "image-url", value: unref(BottomRightCornerIcon) },
11512
+ class: "ml-4",
11513
+ width: "48%",
11514
+ "onUpdate:modelValue": updateBorderBottomRightRadius
11515
+ }, null, 8, ["model-value", "prefix"])
11516
+ ])
11517
+ ])
11334
11518
  ])
11335
11519
  ])
11336
11520
  ])
@@ -11340,14 +11524,20 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
11340
11524
  });
11341
11525
  const _hoisted_1$e = { class: "group-editor group-editor-margin" };
11342
11526
  const _hoisted_2$7 = { class: "flex-align-center" };
11343
- const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
11344
- /* @__PURE__ */ createElementVNode("label", null, "Margin")
11527
+ const _hoisted_3$4 = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
11528
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Margin" })
11345
11529
  ], -1);
11346
- const _hoisted_4$2 = { class: "flex-grow-1" };
11347
- const _hoisted_5$2 = /* @__PURE__ */ createElementVNode("span", null, "L", -1);
11348
- const _hoisted_6$2 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "R", -1);
11349
- const _hoisted_7$1 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "T", -1);
11350
- const _hoisted_8$1 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "B", -1);
11530
+ const _hoisted_4$3 = { class: "flex-grow-1" };
11531
+ const _hoisted_5$2 = { class: "bg-gray-100 py-5 rounded-8" };
11532
+ const _hoisted_6$2 = { class: "text-center" };
11533
+ const _hoisted_7$1 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11534
+ const _hoisted_8$1 = /* @__PURE__ */ createElementVNode("div", {
11535
+ class: "d-inline-block text-center text-gray-300",
11536
+ style: { "width": "30%", "font-size": "12px" }
11537
+ }, [
11538
+ /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "add")
11539
+ ], -1);
11540
+ const _hoisted_9$1 = { class: "text-center" };
11351
11541
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
11352
11542
  __name: "PbPropertyGroupEditorMargin",
11353
11543
  props: {
@@ -11374,37 +11564,44 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
11374
11564
  return (_ctx, _cache) => {
11375
11565
  return openBlock(), createElementBlock("div", _hoisted_1$e, [
11376
11566
  createElementVNode("div", _hoisted_2$7, [
11377
- _hoisted_3$3,
11378
- createElementVNode("div", _hoisted_4$2, [
11379
- createElementVNode("div", null, [
11380
- _hoisted_5$2,
11381
- createVNode(unref(BSTextInput), {
11382
- "model-value": left.value,
11383
- class: "ml-4",
11384
- width: "4em",
11385
- "onUpdate:modelValue": updateLeft
11386
- }, null, 8, ["model-value"]),
11387
- _hoisted_6$2,
11388
- createVNode(unref(BSTextInput), {
11389
- "model-value": right.value,
11390
- class: "ml-4",
11391
- width: "4em",
11392
- "onUpdate:modelValue": updateRight
11393
- }, null, 8, ["model-value"]),
11394
- _hoisted_7$1,
11395
- createVNode(unref(BSTextInput), {
11396
- "model-value": top.value,
11397
- class: "ml-4",
11398
- width: "4em",
11399
- "onUpdate:modelValue": updateTop
11400
- }, null, 8, ["model-value"]),
11401
- _hoisted_8$1,
11402
- createVNode(unref(BSTextInput), {
11403
- "model-value": bottom.value,
11404
- class: "ml-4",
11405
- width: "4em",
11406
- "onUpdate:modelValue": updateBottom
11407
- }, null, 8, ["model-value"])
11567
+ _hoisted_3$4,
11568
+ createElementVNode("div", _hoisted_4$3, [
11569
+ createElementVNode("div", _hoisted_5$2, [
11570
+ createElementVNode("div", _hoisted_6$2, [
11571
+ createVNode(unref(BSTextInput), {
11572
+ "model-value": top.value,
11573
+ class: "ml-4",
11574
+ prefix: "T",
11575
+ width: "30%",
11576
+ "onUpdate:modelValue": updateTop
11577
+ }, null, 8, ["model-value"])
11578
+ ]),
11579
+ createElementVNode("div", _hoisted_7$1, [
11580
+ createVNode(unref(BSTextInput), {
11581
+ "model-value": left.value,
11582
+ class: "ml-4",
11583
+ prefix: "L",
11584
+ width: "30%",
11585
+ "onUpdate:modelValue": updateLeft
11586
+ }, null, 8, ["model-value"]),
11587
+ _hoisted_8$1,
11588
+ createVNode(unref(BSTextInput), {
11589
+ "model-value": right.value,
11590
+ class: "ml-4",
11591
+ prefix: "R",
11592
+ width: "30%",
11593
+ "onUpdate:modelValue": updateRight
11594
+ }, null, 8, ["model-value"])
11595
+ ]),
11596
+ createElementVNode("div", _hoisted_9$1, [
11597
+ createVNode(unref(BSTextInput), {
11598
+ "model-value": bottom.value,
11599
+ class: "ml-4",
11600
+ prefix: "B",
11601
+ width: "30%",
11602
+ "onUpdate:modelValue": updateBottom
11603
+ }, null, 8, ["model-value"])
11604
+ ])
11408
11605
  ])
11409
11606
  ])
11410
11607
  ])
@@ -11412,16 +11609,22 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
11412
11609
  };
11413
11610
  }
11414
11611
  });
11415
- const _hoisted_1$d = { class: "group-editor group-editor-margin" };
11612
+ const _hoisted_1$d = { class: "group-editor group-editor-padding" };
11416
11613
  const _hoisted_2$6 = { class: "flex-align-center" };
11417
- const _hoisted_3$2 = /* @__PURE__ */ createElementVNode("div", { class: "label" }, [
11418
- /* @__PURE__ */ createElementVNode("label", null, "Padding")
11614
+ const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
11615
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Padding" })
11419
11616
  ], -1);
11420
- const _hoisted_4$1 = { class: "flex-grow-1" };
11421
- const _hoisted_5$1 = /* @__PURE__ */ createElementVNode("span", null, "L", -1);
11422
- const _hoisted_6$1 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "R", -1);
11423
- const _hoisted_7 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "T", -1);
11424
- const _hoisted_8 = /* @__PURE__ */ createElementVNode("span", { class: "ml-8" }, "B", -1);
11617
+ const _hoisted_4$2 = { class: "flex-grow-1" };
11618
+ const _hoisted_5$1 = { class: "bg-gray-100 py-5 rounded-8" };
11619
+ const _hoisted_6$1 = { class: "text-center" };
11620
+ const _hoisted_7 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11621
+ const _hoisted_8 = /* @__PURE__ */ createElementVNode("div", {
11622
+ class: "d-inline-block text-center text-gray-300",
11623
+ style: { "width": "30%", "font-size": "12px" }
11624
+ }, [
11625
+ /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "add")
11626
+ ], -1);
11627
+ const _hoisted_9 = { class: "text-center" };
11425
11628
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
11426
11629
  __name: "PbPropertyGroupEditorPadding",
11427
11630
  props: {
@@ -11448,37 +11651,44 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11448
11651
  return (_ctx, _cache) => {
11449
11652
  return openBlock(), createElementBlock("div", _hoisted_1$d, [
11450
11653
  createElementVNode("div", _hoisted_2$6, [
11451
- _hoisted_3$2,
11452
- createElementVNode("div", _hoisted_4$1, [
11453
- createElementVNode("div", null, [
11454
- _hoisted_5$1,
11455
- createVNode(unref(BSTextInput), {
11456
- "model-value": left.value,
11457
- class: "ml-4",
11458
- width: "4em",
11459
- "onUpdate:modelValue": updateLeft
11460
- }, null, 8, ["model-value"]),
11461
- _hoisted_6$1,
11462
- createVNode(unref(BSTextInput), {
11463
- "model-value": right.value,
11464
- class: "ml-4",
11465
- width: "4em",
11466
- "onUpdate:modelValue": updateRight
11467
- }, null, 8, ["model-value"]),
11468
- _hoisted_7,
11469
- createVNode(unref(BSTextInput), {
11470
- "model-value": top.value,
11471
- class: "ml-4",
11472
- width: "4em",
11473
- "onUpdate:modelValue": updateTop
11474
- }, null, 8, ["model-value"]),
11475
- _hoisted_8,
11476
- createVNode(unref(BSTextInput), {
11477
- "model-value": bottom.value,
11478
- class: "ml-4",
11479
- width: "4em",
11480
- "onUpdate:modelValue": updateBottom
11481
- }, null, 8, ["model-value"])
11654
+ _hoisted_3$3,
11655
+ createElementVNode("div", _hoisted_4$2, [
11656
+ createElementVNode("div", _hoisted_5$1, [
11657
+ createElementVNode("div", _hoisted_6$1, [
11658
+ createVNode(unref(BSTextInput), {
11659
+ "model-value": top.value,
11660
+ class: "ml-4",
11661
+ prefix: "T",
11662
+ width: "30%",
11663
+ "onUpdate:modelValue": updateTop
11664
+ }, null, 8, ["model-value"])
11665
+ ]),
11666
+ createElementVNode("div", _hoisted_7, [
11667
+ createVNode(unref(BSTextInput), {
11668
+ "model-value": left.value,
11669
+ class: "ml-4",
11670
+ prefix: "L",
11671
+ width: "30%",
11672
+ "onUpdate:modelValue": updateLeft
11673
+ }, null, 8, ["model-value"]),
11674
+ _hoisted_8,
11675
+ createVNode(unref(BSTextInput), {
11676
+ "model-value": right.value,
11677
+ class: "ml-4",
11678
+ prefix: "R",
11679
+ width: "30%",
11680
+ "onUpdate:modelValue": updateRight
11681
+ }, null, 8, ["model-value"])
11682
+ ]),
11683
+ createElementVNode("div", _hoisted_9, [
11684
+ createVNode(unref(BSTextInput), {
11685
+ "model-value": bottom.value,
11686
+ class: "ml-4",
11687
+ prefix: "B",
11688
+ width: "30%",
11689
+ "onUpdate:modelValue": updateBottom
11690
+ }, null, 8, ["model-value"])
11691
+ ])
11482
11692
  ])
11483
11693
  ])
11484
11694
  ])
@@ -11744,6 +11954,7 @@ const designParts = [
11744
11954
  partType: "Section",
11745
11955
  partName: "GlobalDesignPart",
11746
11956
  caption: "Global Design Part",
11957
+ icon: "rectangle",
11747
11958
  propertyGroups: [
11748
11959
  ...defaultPropertyGroups()
11749
11960
  ],
@@ -11759,6 +11970,7 @@ const designParts = [
11759
11970
  partType: "Section",
11760
11971
  partName: "LocalDesignPart",
11761
11972
  caption: "Local Design Part",
11973
+ icon: "rectangle",
11762
11974
  propertyGroups: [
11763
11975
  ...defaultPropertyGroups()
11764
11976
  ],
@@ -11774,6 +11986,7 @@ const designParts = [
11774
11986
  partType: "Section",
11775
11987
  partName: "LocalMarketingPart",
11776
11988
  caption: "Local Marketing Part",
11989
+ icon: "rectangle",
11777
11990
  propertyGroups: [
11778
11991
  ...defaultPropertyGroups()
11779
11992
  ],
@@ -11791,6 +12004,7 @@ const sectionParts = [
11791
12004
  partType: "Section",
11792
12005
  partName: "Section",
11793
12006
  caption: "Section",
12007
+ icon: "rectangle",
11794
12008
  propertyGroups: [
11795
12009
  ...defaultPropertyGroups()
11796
12010
  ],
@@ -11807,6 +12021,7 @@ const blockParts = [
11807
12021
  partType: "Block",
11808
12022
  partName: "Block",
11809
12023
  caption: "Block",
12024
+ icon: "space_dashboard",
11810
12025
  propertyGroups: [
11811
12026
  ...defaultPropertyGroups()
11812
12027
  ],
@@ -11821,6 +12036,7 @@ const widgets = [
11821
12036
  partType: "Widget",
11822
12037
  partName: "TextWidget",
11823
12038
  caption: "Text Widget",
12039
+ icon: "insert_text",
11824
12040
  propertyGroups: [
11825
12041
  {
11826
12042
  groupName: "text",
@@ -11838,6 +12054,12 @@ const widgets = [
11838
12054
  caption: "Font Size",
11839
12055
  propertyType: "text",
11840
12056
  params: ""
12057
+ },
12058
+ {
12059
+ propertyName: "color",
12060
+ caption: "Font Color",
12061
+ propertyType: "color",
12062
+ params: ""
11841
12063
  }
11842
12064
  ]
11843
12065
  },
@@ -11850,12 +12072,13 @@ const widgets = [
11850
12072
  },
11851
12073
  localized: true,
11852
12074
  allowsChild: () => false,
11853
- creator: () => _sfc_main$3$1
12075
+ creator: () => _sfc_main$4$1
11854
12076
  },
11855
12077
  {
11856
12078
  partType: "Widget",
11857
12079
  partName: "ImageWidget",
11858
12080
  caption: "Image Widget",
12081
+ icon: "imagesmode",
11859
12082
  propertyGroups: [
11860
12083
  {
11861
12084
  groupName: "image",
@@ -11875,12 +12098,39 @@ const widgets = [
11875
12098
  initialProperties: {},
11876
12099
  localized: true,
11877
12100
  allowsChild: () => false,
11878
- creator: () => _sfc_main$4$1
12101
+ creator: () => _sfc_main$5$1
12102
+ },
12103
+ {
12104
+ partType: "Widget",
12105
+ partName: "HtmlWidget",
12106
+ caption: "HTML Widget",
12107
+ icon: "code",
12108
+ propertyGroups: [
12109
+ {
12110
+ groupName: "html",
12111
+ caption: "HTML",
12112
+ properties: [
12113
+ {
12114
+ propertyName: "html",
12115
+ caption: "HTML",
12116
+ propertyType: "html",
12117
+ params: "",
12118
+ localized: true
12119
+ }
12120
+ ]
12121
+ },
12122
+ ...defaultWidgetPropertyGroups()
12123
+ ],
12124
+ initialProperties: {},
12125
+ localized: true,
12126
+ allowsChild: () => false,
12127
+ creator: () => _sfc_main$3$1
11879
12128
  },
11880
12129
  {
11881
12130
  partType: "Widget",
11882
12131
  partName: "ProductListWidget",
11883
12132
  caption: "Product List Widget",
12133
+ icon: "lists",
11884
12134
  propertyGroups: [
11885
12135
  {
11886
12136
  groupName: "productList",
@@ -12862,16 +13112,6 @@ const createDefaultKeyHandlers = () => {
12862
13112
  };
12863
13113
  const createDefaultToolButtonGroups = () => {
12864
13114
  const groups = [
12865
- {
12866
- groupId: "file",
12867
- buttons: [
12868
- {
12869
- buttonId: "core:template",
12870
- caption: "Load Template",
12871
- icon: "account_balance"
12872
- }
12873
- ]
12874
- },
12875
13115
  {
12876
13116
  groupId: "edit",
12877
13117
  buttons: [
@@ -12919,13 +13159,13 @@ const createDefaultToolButtonGroups = () => {
12919
13159
  {
12920
13160
  buttonId: "core:openAddPartLayer",
12921
13161
  caption: "Add Design Part...",
12922
- icon: "box_add",
13162
+ icon: "add_row_below",
12923
13163
  handler: (modeler) => modeler.commandRegistry.executeCommand(OpenAddPartModalCommand.COMMAND_ID)
12924
13164
  },
12925
13165
  {
12926
13166
  buttonId: "core:openAddWidgetLayer",
12927
13167
  caption: "Add Widget...",
12928
- icon: "add_box",
13168
+ icon: "desktop_landscape_add",
12929
13169
  handler: (modeler) => modeler.commandRegistry.executeCommand(OpenAddWidgetModalCommand.COMMAND_ID)
12930
13170
  }
12931
13171
  ]
@@ -13128,7 +13368,6 @@ class PageBuilderEditorImpl {
13128
13368
  __publicField(this, "title");
13129
13369
  __publicField(this, "editMode");
13130
13370
  __publicField(this, "scale", ref(1));
13131
- __publicField(this, "locales", ref(["en"]));
13132
13371
  __publicField(this, "language", ref("en"));
13133
13372
  this.model = new Model2();
13134
13373
  this.context = new PageBuilderContextImpl(this);
@@ -13136,6 +13375,12 @@ class PageBuilderEditorImpl {
13136
13375
  this.scale.value = 1;
13137
13376
  this.initPlugins();
13138
13377
  }
13378
+ getLanguage() {
13379
+ return this.language.value;
13380
+ }
13381
+ setLanguage(language) {
13382
+ this.language.value = language || "en";
13383
+ }
13139
13384
  registerPlugin(plugin) {
13140
13385
  if (plugin.partDefinitions)
13141
13386
  this.partManager.registerPartDefinitions(plugin.partDefinitions);
@@ -13189,15 +13434,6 @@ class PageBuilderEditorImpl {
13189
13434
  zoom(scale) {
13190
13435
  this.scale.value = scale;
13191
13436
  }
13192
- setLocales(locales) {
13193
- this.locales.value = locales;
13194
- if (!locales.includes(this.language.value)) {
13195
- this.language.value = locales[0];
13196
- }
13197
- }
13198
- setLanguage(language) {
13199
- this.language.value = language;
13200
- }
13201
13437
  getEmptyPageContent() {
13202
13438
  const block = new Block();
13203
13439
  const section = new Section();
@@ -13336,7 +13572,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
13336
13572
  };
13337
13573
  }
13338
13574
  });
13339
- 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: 1px solid #e67e22;\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: 1px solid #8e44ad;\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 #27ae60;\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.empty .text {\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-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 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: -20px;\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}';
13575
+ 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: 1px solid #e67e22;\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: 1px solid #8e44ad;\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 #27ae60;\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.empty .text {\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.empty {\n padding: 4px 0;\n font-size: 18px;\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 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: -20px;\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}';
13340
13576
  const _hoisted_1$a = { class: "pb-canvas-frame" };
13341
13577
  const _sfc_main$b = /* @__PURE__ */ defineComponent({
13342
13578
  __name: "PbCanvasFrame",
@@ -13417,7 +13653,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
13417
13653
  }, [
13418
13654
  _ctx.button.icon ? (openBlock(), createElementBlock("span", {
13419
13655
  key: 0,
13420
- style: normalizeStyle({ fontSize: _ctx.button.iconFontSize || "16px" }),
13656
+ style: normalizeStyle({ fontSize: _ctx.button.iconFontSize || "20px" }),
13421
13657
  class: "font-icon"
13422
13658
  }, toDisplayString(_ctx.button.icon), 5)) : createCommentVNode("", true)
13423
13659
  ])
@@ -13445,16 +13681,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13445
13681
  }
13446
13682
  });
13447
13683
  const _hoisted_1$7 = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13448
- const _hoisted_2$4 = { class: "ml-8 w-64" };
13449
- const _hoisted_3$1 = { class: "ml-8 w-80" };
13684
+ const _hoisted_2$4 = { class: "bs-layout-horizontal" };
13685
+ const _hoisted_3$2 = /* @__PURE__ */ createElementVNode("div", { class: "flex-grow-1" }, null, -1);
13686
+ const _hoisted_4$1 = { class: "ml-8 w-64" };
13450
13687
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
13451
13688
  __name: "PbToolbar",
13452
13689
  setup(__props) {
13453
13690
  const pageBuilder = usePageBuilderEditor();
13454
13691
  const buttonGroups = pageBuilder.toolButtonRegistry.getToolButtonGroups();
13455
- const locales = computed(() => {
13456
- return pageBuilder.locales.value;
13457
- });
13458
13692
  const scale = computed(() => `${Math.round(100 * pageBuilder.scale.value)}%`);
13459
13693
  const zoom = async (scaleString) => {
13460
13694
  if (!scaleString)
@@ -13462,18 +13696,18 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
13462
13696
  const scale2 = parseInt(scaleString.replaceAll(/[^0-9]+/g, "")) / 100;
13463
13697
  pageBuilder.zoom(scale2);
13464
13698
  };
13465
- const changeLocale = (locale) => {
13466
- pageBuilder.setLanguage(locale);
13467
- };
13468
13699
  return (_ctx, _cache) => {
13469
13700
  return openBlock(), createElementBlock("div", _hoisted_1$7, [
13470
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(buttonGroups), (group) => {
13471
- return openBlock(), createBlock$1(_sfc_main$9, {
13472
- key: group.groupId,
13473
- group
13474
- }, null, 8, ["group"]);
13475
- }), 128)),
13476
13701
  createElementVNode("div", _hoisted_2$4, [
13702
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(buttonGroups), (group) => {
13703
+ return openBlock(), createBlock$1(_sfc_main$9, {
13704
+ key: group.groupId,
13705
+ group
13706
+ }, null, 8, ["group"]);
13707
+ }), 128))
13708
+ ]),
13709
+ _hoisted_3$2,
13710
+ createElementVNode("div", _hoisted_4$1, [
13477
13711
  createVNode(unref(BSSelect), {
13478
13712
  modelValue: scale.value,
13479
13713
  "onUpdate:modelValue": [
@@ -13484,12 +13718,6 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
13484
13718
  "view-mode": false,
13485
13719
  placeholder: "Scale"
13486
13720
  }, null, 8, ["modelValue"])
13487
- ]),
13488
- createElementVNode("div", _hoisted_3$1, [
13489
- createVNode(unref(BSLocaleSelect), {
13490
- locales: locales.value,
13491
- onChangeLocale: changeLocale
13492
- }, null, 8, ["locales"])
13493
13721
  ])
13494
13722
  ]);
13495
13723
  };
@@ -13513,8 +13741,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13513
13741
  setup(__props) {
13514
13742
  const pageBuilder = usePageBuilderEditor();
13515
13743
  const tabs = [
13516
- { tabId: "pageS", caption: "Mobile" },
13517
- { tabId: "pageL", caption: "PC" }
13744
+ { tabId: "pageS", caption: "Mobile", icon: "phone_iphone" },
13745
+ { tabId: "pageL", caption: "PC", icon: "desktop_windows" }
13518
13746
  ];
13519
13747
  const pageS = computed(() => (pageBuilder.model.rootPart.children || [])[0].children || []);
13520
13748
  const pageL = computed(() => (pageBuilder.model.rootPart.children || [])[1].children || []);
@@ -13527,6 +13755,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13527
13755
  set(value) {
13528
13756
  }
13529
13757
  });
13758
+ let savedPartSelection = null;
13530
13759
  const treeDragAndDropPolicy = {
13531
13760
  dropStep: () => 3,
13532
13761
  isDroppable(_srcRow, _srcParentRow, _destRow, _destParentRow) {
@@ -13579,7 +13808,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13579
13808
  }
13580
13809
  }
13581
13810
  if (ok) {
13582
- pageBuilder.model.moveElements(event.row.partId, parentPartId, event.destIndex);
13811
+ backupPartSelection();
13812
+ pageBuilder.model.moveElements(event.row.partId, parentPartId, event.destIndex, void 0, true);
13583
13813
  }
13584
13814
  };
13585
13815
  const selectedRows = computed({
@@ -13595,6 +13825,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13595
13825
  const selectedRowsChanged = (rows) => {
13596
13826
  pageBuilder.context.setSelection([...rows]);
13597
13827
  };
13828
+ const iconProvider = (part) => {
13829
+ const def = pageBuilder.partManager.getPartDefinition(part.partName);
13830
+ return (def == null ? void 0 : def.icon) || "";
13831
+ };
13598
13832
  const labelProvider = (part) => {
13599
13833
  var _a;
13600
13834
  return part.getName() || ((_a = pageBuilder.partManager.getPartDefinition(part.partName)) == null ? void 0 : _a.caption) || part.partName;
@@ -13615,6 +13849,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13615
13849
  const modelUpdateHandler = (event) => {
13616
13850
  var _a;
13617
13851
  (_a = event.inserted) == null ? void 0 : _a.map((target) => findLeafPart(pageBuilder.model.findPartById(target.partId))).filter(notNull).forEach((part) => expandParent(part));
13852
+ if (savedPartSelection) {
13853
+ restorePartSelection();
13854
+ }
13618
13855
  };
13619
13856
  const expandParent = (part) => {
13620
13857
  if (part.parent && part.parent.partName !== PAGE_TYPE) {
@@ -13622,6 +13859,15 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13622
13859
  expandParent(part.parent);
13623
13860
  }
13624
13861
  };
13862
+ const backupPartSelection = () => {
13863
+ savedPartSelection = [...pageBuilder.context.getSelectedParts()];
13864
+ };
13865
+ const restorePartSelection = () => {
13866
+ if (savedPartSelection) {
13867
+ pageBuilder.context.setSelection(savedPartSelection);
13868
+ savedPartSelection = null;
13869
+ }
13870
+ };
13625
13871
  onMounted(() => {
13626
13872
  PageBuilderEditorEvent.on.modelUpdatedByUI(modelUpdateHandler);
13627
13873
  });
@@ -13649,6 +13895,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13649
13895
  ],
13650
13896
  data: pageS.value,
13651
13897
  "enable-drag-and-drop": treeDragAndDropPolicy,
13898
+ "icon-provider": iconProvider,
13652
13899
  "key-provider": (part) => part.partId,
13653
13900
  "label-provider": labelProvider,
13654
13901
  class: "max-w-320",
@@ -13673,6 +13920,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
13673
13920
  ],
13674
13921
  data: pageL.value,
13675
13922
  "enable-drag-and-drop": treeDragAndDropPolicy,
13923
+ "icon-provider": iconProvider,
13676
13924
  "key-provider": (part) => part.partId,
13677
13925
  "label-provider": labelProvider,
13678
13926
  class: "max-w-320",
@@ -13743,7 +13991,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
13743
13991
  }
13744
13992
  });
13745
13993
  const _hoisted_1$4 = { class: "pb-sidebar-property-group" };
13746
- const _hoisted_2$2 = ["textContent"];
13994
+ const _hoisted_2$2 = {
13995
+ key: 0,
13996
+ class: "group-title"
13997
+ };
13998
+ const _hoisted_3$1 = ["textContent"];
13747
13999
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
13748
14000
  __name: "PbSidebarPropertyGroupEditor",
13749
14001
  props: {
@@ -13779,11 +14031,11 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
13779
14031
  });
13780
14032
  return (_ctx, _cache) => {
13781
14033
  return openBlock(), createElementBlock("div", _hoisted_1$4, [
13782
- _ctx.group.showGroupName ? (openBlock(), createElementBlock("div", {
13783
- key: 0,
13784
- class: "group-title",
13785
- textContent: toDisplayString(_ctx.group.caption)
13786
- }, null, 8, _hoisted_2$2)) : createCommentVNode("", true),
14034
+ _ctx.group.showGroupName ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
14035
+ createElementVNode("label", {
14036
+ textContent: toDisplayString(_ctx.group.caption)
14037
+ }, null, 8, _hoisted_3$1)
14038
+ ])) : createCommentVNode("", true),
13787
14039
  _ctx.partsKey ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
13788
14040
  groupEditor.value ? (openBlock(), createBlock$1(resolveDynamicComponent(groupEditor.value), {
13789
14041
  key: 0,
@@ -13802,7 +14054,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
13802
14054
  }
13803
14055
  });
13804
14056
  const _hoisted_1$3 = { class: "property-editor property-editor-local-part flex-align-center pt-16" };
13805
- const _hoisted_2$1 = /* @__PURE__ */ createElementVNode("div", { class: "label" }, " Display Schedule ", -1);
14057
+ const _hoisted_2$1 = /* @__PURE__ */ createElementVNode("div", { class: "title" }, [
14058
+ /* @__PURE__ */ createElementVNode("label", { textContent: "Display Schedule" })
14059
+ ], -1);
13806
14060
  const _hoisted_3 = { class: "bs-layout-horizontal" };
13807
14061
  const _hoisted_4 = { class: "mr-2" };
13808
14062
  const _hoisted_5 = /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "more_horiz", -1);
@@ -13964,7 +14218,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13964
14218
  title: {},
13965
14219
  editMode: {},
13966
14220
  pageContent: {},
13967
- locales: {},
13968
14221
  language: {}
13969
14222
  },
13970
14223
  setup(__props, { expose: __expose }) {
@@ -13974,8 +14227,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13974
14227
  pageBuilderEditor.instanceId = props.instanceId;
13975
14228
  pageBuilderEditor.title = props.title;
13976
14229
  pageBuilderEditor.editMode = props.editMode || "free";
13977
- if (props.locales)
13978
- pageBuilderEditor.setLocales(props.locales);
13979
14230
  if (props.language)
13980
14231
  pageBuilderEditor.setLanguage(props.language);
13981
14232
  pageBuilderEditor.registerPlugin({
@@ -13984,8 +14235,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13984
14235
  });
13985
14236
  pageBuilderEditor.keyHandlers.addDocumentKeyEventListener(window.document);
13986
14237
  providePageBuilderEditor(pageBuilderEditor);
14238
+ providePageBuilder(pageBuilderEditor);
13987
14239
  onMounted(() => pageBuilderEditor.initData(props.pageContent));
13988
14240
  watch(() => props.pageContent, (pageContent) => pageContent && pageBuilderEditor.initData(pageContent));
14241
+ watch(() => props.language, (language) => {
14242
+ pageBuilderEditor.setLanguage(language);
14243
+ });
13989
14244
  const colorHistory = ref([]);
13990
14245
  provide("colorHistory", colorHistory);
13991
14246
  const getLocalDesignPartContent = () => {
@@ -14055,27 +14310,32 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14055
14310
  export {
14056
14311
  BLOCK_TYPE$1 as B,
14057
14312
  Model$1 as M,
14058
- PageBuilderEditorEvent as P,
14313
+ PbColorPicker as P,
14059
14314
  ROOT_TYPE$1 as R,
14060
14315
  SECTION_TYPE$1 as S,
14061
14316
  WIDGET_TYPE$1 as W,
14062
14317
  _sfc_main as _,
14063
- Block as a,
14064
- PAGE_TYPE$1 as b,
14065
- Page as c,
14066
- _sfc_main$q as d,
14067
- PageBuilderViewerEvent as e,
14068
- Part as f,
14069
- _sfc_main$4$1 as g,
14070
- _sfc_main$2$1 as h,
14318
+ PageBuilderEditorEvent as a,
14319
+ Block as b,
14320
+ PAGE_BUILDER_KEY as c,
14321
+ PAGE_TYPE$1 as d,
14322
+ Page as e,
14323
+ _sfc_main$q as f,
14324
+ PageBuilderViewerEvent as g,
14325
+ Part as h,
14071
14326
  _sfc_main$3$1 as i,
14072
- RootPart as j,
14073
- Section as k,
14074
- Widget as l,
14075
- createPageBuilderViewer as m,
14076
- createPartComponent as n,
14077
- createPartComponents as o,
14078
- providePageBuilderViewer as p,
14079
- usePageBuilderViewer as q,
14080
- usePageBuilderEditor as u
14327
+ _sfc_main$5$1 as j,
14328
+ _sfc_main$2$1 as k,
14329
+ _sfc_main$4$1 as l,
14330
+ RootPart as m,
14331
+ Section as n,
14332
+ Widget as o,
14333
+ createPageBuilderViewer as p,
14334
+ createPartComponent as q,
14335
+ createPartComponents as r,
14336
+ providePageBuilder as s,
14337
+ providePageBuilderViewer as t,
14338
+ usePageBuilderEditor as u,
14339
+ usePageBuilder as v,
14340
+ usePageBuilderViewer as w
14081
14341
  };