@g1cloud/page-builder-editor 1.0.0-alpha.31 → 1.0.0-alpha.33

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.
@@ -6694,6 +6694,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6694
6694
  const align = ((_a = this.properties) == null ? void 0 : _a.align) || "center";
6695
6695
  if (this.isWidget()) {
6696
6696
  style.alignSelf = this.getAlignStyleValue(align);
6697
+ } else if (this.isPage()) {
6698
+ style.display = "flex";
6699
+ style.flexDirection = "column";
6700
+ style.alignItems = this.getAlignStyleValue(align);
6697
6701
  } else {
6698
6702
  const direction = isMobilePage ? (_b = this.properties) == null ? void 0 : _b.directionSm : (_c = this.properties) == null ? void 0 : _c.directionLg;
6699
6703
  if (direction === "horizontal") {
@@ -6725,10 +6729,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6725
6729
  if ((_r = this.properties) == null ? void 0 : _r.bottom) style.bottom = this.properties.bottom;
6726
6730
  if ((_s = this.properties) == null ? void 0 : _s.width) style.width = this.properties.width;
6727
6731
  if ((_t = this.properties) == null ? void 0 : _t.height) style.height = this.properties.height;
6728
- if ((_u = this.properties) == null ? void 0 : _u.maxWidth) style.width = this.properties.maxWidth;
6729
- if ((_v = this.properties) == null ? void 0 : _v.maxHeight) style.height = this.properties.maxHeight;
6730
- if ((_w = this.properties) == null ? void 0 : _w.minWidth) style.width = this.properties.minWidth;
6731
- if ((_x = this.properties) == null ? void 0 : _x.minHeight) style.height = this.properties.minHeight;
6732
+ if ((_u = this.properties) == null ? void 0 : _u.maxWidth) style.maxWidth = this.properties.maxWidth;
6733
+ if ((_v = this.properties) == null ? void 0 : _v.maxHeight) style.maxHeight = this.properties.maxHeight;
6734
+ if ((_w = this.properties) == null ? void 0 : _w.minWidth) style.minWidth = this.properties.minWidth;
6735
+ if ((_x = this.properties) == null ? void 0 : _x.minHeight) style.minHeight = this.properties.minHeight;
6732
6736
  if ((_y = this.properties) == null ? void 0 : _y.textAlign) style.textAlign = this.properties.textAlign;
6733
6737
  if ((_z = this.properties) == null ? void 0 : _z.backgroundColor) style.backgroundColor = this.properties.backgroundColor;
6734
6738
  if ((_A = this.properties) == null ? void 0 : _A.borderLeftWidth) style.borderLeftWidth = this.properties.borderLeftWidth;
@@ -6982,8 +6986,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6982
6986
  };
6983
6987
  }
6984
6988
  });
6985
- const _hoisted_1$7$1 = ["alt", "src"];
6986
- const _hoisted_2$4$1 = {
6989
+ const _hoisted_1$7$1 = ["href", "target"];
6990
+ const _hoisted_2$4$1 = ["alt", "src"];
6991
+ const _hoisted_3$o = ["alt", "src"];
6992
+ const _hoisted_4$e = {
6987
6993
  key: 1,
6988
6994
  class: "placeholder"
6989
6995
  };
@@ -7016,14 +7022,27 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
7016
7022
  return {};
7017
7023
  });
7018
7024
  return (_ctx, _cache) => {
7019
- var _a, _b;
7020
- return ((_a = _ctx.part.properties) == null ? void 0 : _a.media) ? (vue.openBlock(), vue.createElementBlock("img", {
7021
- key: 0,
7022
- alt: altText.value,
7023
- src: ((_b = _ctx.part.properties) == null ? void 0 : _b.media).url,
7024
- style: vue.normalizeStyle(style.value),
7025
- class: "image"
7026
- }, null, 12, _hoisted_1$7$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4$1, _cache[0] || (_cache[0] = [
7025
+ var _a, _b, _c, _d, _e, _f;
7026
+ return ((_a = _ctx.part.properties) == null ? void 0 : _a.media) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
7027
+ ((_b = _ctx.part.properties) == null ? void 0 : _b.link) ? (vue.openBlock(), vue.createElementBlock("a", {
7028
+ key: 0,
7029
+ href: (_c = _ctx.part.properties) == null ? void 0 : _c.link,
7030
+ target: (_d = _ctx.part.properties) == null ? void 0 : _d.linkTarget
7031
+ }, [
7032
+ vue.createElementVNode("img", {
7033
+ alt: altText.value,
7034
+ src: ((_e = _ctx.part.properties) == null ? void 0 : _e.media).url,
7035
+ style: vue.normalizeStyle(style.value),
7036
+ class: "image"
7037
+ }, null, 12, _hoisted_2$4$1)
7038
+ ], 8, _hoisted_1$7$1)) : (vue.openBlock(), vue.createElementBlock("img", {
7039
+ key: 1,
7040
+ alt: altText.value,
7041
+ src: ((_f = _ctx.part.properties) == null ? void 0 : _f.media).url,
7042
+ style: vue.normalizeStyle(style.value),
7043
+ class: "image"
7044
+ }, null, 12, _hoisted_3$o))
7045
+ ], 64)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$e, _cache[0] || (_cache[0] = [
7027
7046
  vue.createElementVNode("span", { class: "font-icon" }, "image", -1)
7028
7047
  ]))) : vue.createCommentVNode("", true);
7029
7048
  };
@@ -7270,7 +7289,7 @@ ${_html.style}
7270
7289
  plugin.widgets.forEach((v) => {
7271
7290
  const w = { ...v };
7272
7291
  w.partType = "Widget";
7273
- w.creator = () => _sfc_main$D;
7292
+ w.creator = () => _sfc_main$E;
7274
7293
  partDefinitions$1[v.partName] = w;
7275
7294
  });
7276
7295
  }
@@ -7480,7 +7499,7 @@ ${_html.style}
7480
7499
  };
7481
7500
  }
7482
7501
  });
7483
- const _hoisted_1$G = {
7502
+ const _hoisted_1$H = {
7484
7503
  key: 1,
7485
7504
  class: "placeholder",
7486
7505
  textContent: "Empty Widget"
@@ -7501,11 +7520,11 @@ ${_html.style}
7501
7520
  key: child.part.partId,
7502
7521
  part: child.part
7503
7522
  }, null, 8, ["part"]);
7504
- }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G)) : vue.createCommentVNode("", true);
7523
+ }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$H)) : vue.createCommentVNode("", true);
7505
7524
  };
7506
7525
  }
7507
7526
  });
7508
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
7527
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
7509
7528
  __name: "PbCustomWidget",
7510
7529
  props: {
7511
7530
  part: {},
@@ -8105,6 +8124,7 @@ ${_html.style}
8105
8124
  "readonly-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorReadonlyText)),
8106
8125
  "text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorText)),
8107
8126
  "number": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorNumber)),
8127
+ "boolean": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorBoolean)),
8108
8128
  "multiline-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorMultilineText)),
8109
8129
  "select": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorSelect)),
8110
8130
  "color": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorColor)),
@@ -8363,10 +8383,10 @@ ${_html.style}
8363
8383
  }
8364
8384
  return target;
8365
8385
  };
8366
- const _sfc_main$C = {};
8367
- const _hoisted_1$F = { class: "pb-add-widget-button" };
8386
+ const _sfc_main$D = {};
8387
+ const _hoisted_1$G = { class: "pb-add-widget-button" };
8368
8388
  function _sfc_render$1(_ctx, _cache) {
8369
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
8389
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [
8370
8390
  vue.createElementVNode("button", {
8371
8391
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8372
8392
  }, _cache[1] || (_cache[1] = [
@@ -8375,7 +8395,7 @@ ${_html.style}
8375
8395
  ]))
8376
8396
  ]);
8377
8397
  }
8378
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$1]]);
8398
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$1]]);
8379
8399
  const MOUSE_TRACKER_KEY = "mouseTracker";
8380
8400
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8381
8401
  class MouseTracker {
@@ -8403,8 +8423,8 @@ ${_html.style}
8403
8423
  if (!mouseTracker) throw Error(MOUSE_TRACKER_NOT_FOUND);
8404
8424
  return mouseTracker;
8405
8425
  };
8406
- const _hoisted_1$E = ["data-part-id", "draggable"];
8407
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
8426
+ const _hoisted_1$F = ["data-part-id", "draggable"];
8427
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
8408
8428
  __name: "PbWidget",
8409
8429
  props: {
8410
8430
  part: {},
@@ -8840,15 +8860,15 @@ ${_html.style}
8840
8860
  class: "resize-handle",
8841
8861
  onMousedown: resizeChild
8842
8862
  }, null, 32)) : vue.createCommentVNode("", true)
8843
- ], 14, _hoisted_1$E)), [
8863
+ ], 14, _hoisted_1$F)), [
8844
8864
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8845
8865
  ])
8846
8866
  ], 64);
8847
8867
  };
8848
8868
  }
8849
8869
  });
8850
- const _hoisted_1$D = ["data-part-id"];
8851
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8870
+ const _hoisted_1$E = ["data-part-id"];
8871
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
8852
8872
  __name: "PbBlock",
8853
8873
  props: {
8854
8874
  part: {},
@@ -9038,27 +9058,27 @@ ${_html.style}
9038
9058
  onAddWidget: addWidget
9039
9059
  })) : vue.createCommentVNode("", true),
9040
9060
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9041
- return vue.openBlock(), vue.createBlock(_sfc_main$B, {
9061
+ return vue.openBlock(), vue.createBlock(_sfc_main$C, {
9042
9062
  key: child.partId,
9043
9063
  part: child
9044
9064
  }, null, 8, ["part"]);
9045
9065
  }), 128))
9046
- ], 16, _hoisted_1$D)), [
9066
+ ], 16, _hoisted_1$E)), [
9047
9067
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9048
9068
  ])
9049
9069
  ], 64);
9050
9070
  };
9051
9071
  }
9052
9072
  });
9053
- const _hoisted_1$C = { class: "pb-block" };
9054
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
9073
+ const _hoisted_1$D = { class: "pb-block" };
9074
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
9055
9075
  __name: "PbLoginDepart",
9056
9076
  props: {
9057
9077
  part: {}
9058
9078
  },
9059
9079
  setup(__props) {
9060
9080
  return (_ctx, _cache) => {
9061
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, _cache[0] || (_cache[0] = [
9081
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, _cache[0] || (_cache[0] = [
9062
9082
  vue.createElementVNode("div", {
9063
9083
  class: "pb-widget",
9064
9084
  style: { "margin": "0 auto" }
@@ -9071,8 +9091,8 @@ ${_html.style}
9071
9091
  };
9072
9092
  }
9073
9093
  });
9074
- const _hoisted_1$B = ["data-part-id"];
9075
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9094
+ const _hoisted_1$C = ["data-part-id"];
9095
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
9076
9096
  __name: "PbSection",
9077
9097
  props: {
9078
9098
  part: {},
@@ -9182,13 +9202,13 @@ ${_html.style}
9182
9202
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9183
9203
  }, properties.value), [
9184
9204
  ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9185
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
9205
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$A, {
9186
9206
  key: 0,
9187
9207
  part: _ctx.part
9188
9208
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9189
9209
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9190
9210
  _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9191
- return vue.openBlock(), vue.createBlock(_sfc_main$A, {
9211
+ return vue.openBlock(), vue.createBlock(_sfc_main$B, {
9192
9212
  key: block.partId,
9193
9213
  "is-mobile-page": _ctx.isMobilePage,
9194
9214
  part: block
@@ -9198,21 +9218,21 @@ ${_html.style}
9198
9218
  onAddWidget: addWidget
9199
9219
  }))
9200
9220
  ], 64))
9201
- ], 16, _hoisted_1$B)), [
9221
+ ], 16, _hoisted_1$C)), [
9202
9222
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9203
9223
  ])
9204
9224
  ], 64);
9205
9225
  };
9206
9226
  }
9207
9227
  });
9208
- const _hoisted_1$A = { class: "group-editor group-editor-position" };
9228
+ const _hoisted_1$B = { class: "group-editor group-editor-position" };
9209
9229
  const _hoisted_2$s = { class: "flex-align-center" };
9210
9230
  const _hoisted_3$n = { class: "flex-grow-1" };
9211
9231
  const _hoisted_4$d = { class: "bg-gray-100 py-5 rounded-8" };
9212
9232
  const _hoisted_5$7 = { class: "text-center" };
9213
9233
  const _hoisted_6$7 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9214
9234
  const _hoisted_7$6 = { class: "text-center" };
9215
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9235
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9216
9236
  __name: "PbPropertyGroupEditorPosition",
9217
9237
  props: {
9218
9238
  group: {},
@@ -9236,7 +9256,7 @@ ${_html.style}
9236
9256
  const updateTop = (value) => updatePropertyValue({ top: value });
9237
9257
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9238
9258
  return (_ctx, _cache) => {
9239
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9259
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, [
9240
9260
  vue.createElementVNode("div", _hoisted_2$s, [
9241
9261
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
9242
9262
  vue.createElementVNode("label", { textContent: "Position" })
@@ -9290,14 +9310,14 @@ ${_html.style}
9290
9310
  };
9291
9311
  }
9292
9312
  });
9293
- const _hoisted_1$z = { class: "group-editor group-editor-size" };
9313
+ const _hoisted_1$A = { class: "group-editor group-editor-size" };
9294
9314
  const _hoisted_2$r = { class: "flex-align-center" };
9295
9315
  const _hoisted_3$m = { class: "flex-grow-1 bs-layout-horizontal" };
9296
9316
  const _hoisted_4$c = { class: "flex-align-center mt-12" };
9297
9317
  const _hoisted_5$6 = { class: "flex-grow-1 bs-layout-horizontal" };
9298
9318
  const _hoisted_6$6 = { class: "flex-align-center mt-12" };
9299
9319
  const _hoisted_7$5 = { class: "flex-grow-1 bs-layout-horizontal" };
9300
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9320
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9301
9321
  __name: "PbPropertyGroupEditorSize",
9302
9322
  props: {
9303
9323
  group: {},
@@ -9321,11 +9341,11 @@ ${_html.style}
9321
9341
  const updateWidth = (value) => updatePropertyValue({ width: value });
9322
9342
  const updateHeight = (value) => updatePropertyValue({ height: value });
9323
9343
  const updateMaxWidth = (value) => updatePropertyValue({ maxWidth: value });
9324
- const updateMaxHeight = (value) => updatePropertyValue({ maxWeight: value });
9344
+ const updateMaxHeight = (value) => updatePropertyValue({ maxHeight: value });
9325
9345
  const updateMinWidth = (value) => updatePropertyValue({ minWidth: value });
9326
9346
  const updateMinHeight = (value) => updatePropertyValue({ minHeight: value });
9327
9347
  return (_ctx, _cache) => {
9328
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9348
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9329
9349
  vue.createElementVNode("div", _hoisted_2$r, [
9330
9350
  _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "title" }, [
9331
9351
  vue.createElementVNode("label", { textContent: "Size" })
@@ -9543,7 +9563,7 @@ ${_html.style}
9543
9563
  }
9544
9564
  }
9545
9565
  };
9546
- const _hoisted_1$y = { class: "vc-alpha" };
9566
+ const _hoisted_1$z = { class: "vc-alpha" };
9547
9567
  const _hoisted_2$q = { class: "vc-alpha-checkboard-wrap" };
9548
9568
  const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
9549
9569
  "div",
@@ -9557,7 +9577,7 @@ ${_html.style}
9557
9577
  ];
9558
9578
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9559
9579
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9560
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9580
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9561
9581
  vue.createElementVNode("div", _hoisted_2$q, [
9562
9582
  vue.createVNode(_component_Checkboard)
9563
9583
  ]),
@@ -10661,12 +10681,12 @@ ${_html.style}
10661
10681
  // }
10662
10682
  }
10663
10683
  };
10664
- const _hoisted_1$x = { class: "vc-editable-input" };
10684
+ const _hoisted_1$y = { class: "vc-editable-input" };
10665
10685
  const _hoisted_2$p = ["aria-labelledby"];
10666
10686
  const _hoisted_3$k = ["id", "for"];
10667
10687
  const _hoisted_4$a = { class: "vc-input__desc" };
10668
10688
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10669
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
10689
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
10670
10690
  vue.withDirectives(vue.createElementVNode("input", {
10671
10691
  ref: "input",
10672
10692
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10761,7 +10781,7 @@ ${_html.style}
10761
10781
  }
10762
10782
  }
10763
10783
  };
10764
- const _hoisted_1$w = /* @__PURE__ */ vue.createElementVNode(
10784
+ const _hoisted_1$x = /* @__PURE__ */ vue.createElementVNode(
10765
10785
  "div",
10766
10786
  { class: "vc-saturation--white" },
10767
10787
  null,
@@ -10797,7 +10817,7 @@ ${_html.style}
10797
10817
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10798
10818
  },
10799
10819
  [
10800
- _hoisted_1$w,
10820
+ _hoisted_1$x,
10801
10821
  _hoisted_2$o,
10802
10822
  vue.createElementVNode(
10803
10823
  "div",
@@ -10946,7 +10966,7 @@ ${_html.style}
10946
10966
  }
10947
10967
  }
10948
10968
  };
10949
- const _hoisted_1$v = ["aria-valuenow"];
10969
+ const _hoisted_1$w = ["aria-valuenow"];
10950
10970
  const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10951
10971
  "div",
10952
10972
  { class: "vc-hue-picker" },
@@ -10986,7 +11006,7 @@ ${_html.style}
10986
11006
  4
10987
11007
  /* STYLE */
10988
11008
  )
10989
- ], 40, _hoisted_1$v)
11009
+ ], 40, _hoisted_1$w)
10990
11010
  ],
10991
11011
  2
10992
11012
  /* CLASS */
@@ -11082,7 +11102,7 @@ ${_html.style}
11082
11102
  }
11083
11103
  }
11084
11104
  };
11085
- const _hoisted_1$u = { class: "vc-sketch-saturation-wrap" };
11105
+ const _hoisted_1$v = { class: "vc-sketch-saturation-wrap" };
11086
11106
  const _hoisted_2$m = { class: "vc-sketch-controls" };
11087
11107
  const _hoisted_3$h = { class: "vc-sketch-sliders" };
11088
11108
  const _hoisted_4$8 = { class: "vc-sketch-hue-wrap" };
@@ -11125,7 +11145,7 @@ ${_html.style}
11125
11145
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
11126
11146
  },
11127
11147
  [
11128
- vue.createElementVNode("div", _hoisted_1$u, [
11148
+ vue.createElementVNode("div", _hoisted_1$v, [
11129
11149
  vue.createVNode(_component_Saturation, {
11130
11150
  value: _ctx.colors,
11131
11151
  onChange: $options.childChange
@@ -11237,7 +11257,7 @@ ${_html.style}
11237
11257
  script.render = render;
11238
11258
  script.__file = "src/components/sketch/sketch.vue";
11239
11259
  script.install = install;
11240
- const _sfc_main$v = vue.defineComponent({
11260
+ const _sfc_main$w = vue.defineComponent({
11241
11261
  name: "PbColorPicker",
11242
11262
  components: {
11243
11263
  Sketch: script
@@ -11297,7 +11317,7 @@ ${_html.style}
11297
11317
  };
11298
11318
  }
11299
11319
  });
11300
- const _hoisted_1$t = { class: "buttons" };
11320
+ const _hoisted_1$u = { class: "buttons" };
11301
11321
  const _hoisted_2$l = { class: "sketch-wrap" };
11302
11322
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11303
11323
  const _component_Sketch = vue.resolveComponent("Sketch");
@@ -11307,7 +11327,7 @@ ${_html.style}
11307
11327
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11308
11328
  }, ["stop"]))
11309
11329
  }, [
11310
- vue.createElementVNode("div", _hoisted_1$t, [
11330
+ vue.createElementVNode("div", _hoisted_1$u, [
11311
11331
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11312
11332
  vue.createElementVNode("button", {
11313
11333
  class: vue.normalizeClass([{ none: !_ctx.color }, "picker-button"]),
@@ -11334,12 +11354,12 @@ ${_html.style}
11334
11354
  [_directive_click_outside, () => _ctx.toggle(false)]
11335
11355
  ]);
11336
11356
  }
11337
- const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render]]);
11338
- const _hoisted_1$s = { class: "group-editor group-editor-background" };
11357
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render]]);
11358
+ const _hoisted_1$t = { class: "group-editor group-editor-background" };
11339
11359
  const _hoisted_2$k = { class: "flex-align-center" };
11340
11360
  const _hoisted_3$g = { class: "bs-layout-horizontal" };
11341
11361
  const _hoisted_4$7 = { class: "color" };
11342
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
11362
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
11343
11363
  __name: "PbPropertyGroupEditorBackground",
11344
11364
  props: {
11345
11365
  group: {},
@@ -11372,7 +11392,7 @@ ${_html.style}
11372
11392
  }
11373
11393
  };
11374
11394
  return (_ctx, _cache) => {
11375
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11395
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
11376
11396
  vue.createElementVNode("div", _hoisted_2$k, [
11377
11397
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "title" }, [
11378
11398
  vue.createElementVNode("label", { textContent: "Background" })
@@ -11407,7 +11427,7 @@ ${_html.style}
11407
11427
  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";
11408
11428
  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";
11409
11429
  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";
11410
- const _hoisted_1$r = { class: "group-editor group-editor-border" };
11430
+ const _hoisted_1$s = { class: "group-editor group-editor-border" };
11411
11431
  const _hoisted_2$j = { class: "flex-align-center" };
11412
11432
  const _hoisted_3$f = { class: "" };
11413
11433
  const _hoisted_4$6 = { class: "color" };
@@ -11422,7 +11442,7 @@ ${_html.style}
11422
11442
  const _hoisted_13 = { class: "bg-gray-100 py-5 rounded-8" };
11423
11443
  const _hoisted_14 = { class: "" };
11424
11444
  const _hoisted_15 = { class: "mt-2" };
11425
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11445
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
11426
11446
  __name: "PbPropertyGroupEditorBorder",
11427
11447
  props: {
11428
11448
  group: {},
@@ -11460,7 +11480,7 @@ ${_html.style}
11460
11480
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11461
11481
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11462
11482
  return (_ctx, _cache) => {
11463
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11483
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11464
11484
  vue.createElementVNode("div", _hoisted_2$j, [
11465
11485
  _cache[7] || (_cache[7] = vue.createElementVNode("div", { class: "title" }, [
11466
11486
  vue.createElementVNode("label", { textContent: "Border" })
@@ -11582,14 +11602,14 @@ ${_html.style}
11582
11602
  };
11583
11603
  }
11584
11604
  });
11585
- const _hoisted_1$q = { class: "group-editor group-editor-margin" };
11605
+ const _hoisted_1$r = { class: "group-editor group-editor-margin" };
11586
11606
  const _hoisted_2$i = { class: "flex-align-center" };
11587
11607
  const _hoisted_3$e = { class: "flex-grow-1" };
11588
11608
  const _hoisted_4$5 = { class: "bg-gray-100 py-5 rounded-8" };
11589
11609
  const _hoisted_5$3 = { class: "text-center" };
11590
11610
  const _hoisted_6$3 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11591
11611
  const _hoisted_7$2 = { class: "text-center" };
11592
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11612
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11593
11613
  __name: "PbPropertyGroupEditorMargin",
11594
11614
  props: {
11595
11615
  group: {},
@@ -11613,7 +11633,7 @@ ${_html.style}
11613
11633
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11614
11634
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11615
11635
  return (_ctx, _cache) => {
11616
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11636
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11617
11637
  vue.createElementVNode("div", _hoisted_2$i, [
11618
11638
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11619
11639
  vue.createElementVNode("label", { textContent: "Margin" })
@@ -11667,14 +11687,14 @@ ${_html.style}
11667
11687
  };
11668
11688
  }
11669
11689
  });
11670
- const _hoisted_1$p = { class: "group-editor group-editor-padding" };
11690
+ const _hoisted_1$q = { class: "group-editor group-editor-padding" };
11671
11691
  const _hoisted_2$h = { class: "flex-align-center" };
11672
11692
  const _hoisted_3$d = { class: "flex-grow-1" };
11673
11693
  const _hoisted_4$4 = { class: "bg-gray-100 py-5 rounded-8" };
11674
11694
  const _hoisted_5$2 = { class: "text-center" };
11675
11695
  const _hoisted_6$2 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11676
11696
  const _hoisted_7$1 = { class: "text-center" };
11677
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11697
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11678
11698
  __name: "PbPropertyGroupEditorPadding",
11679
11699
  props: {
11680
11700
  group: {},
@@ -11698,7 +11718,7 @@ ${_html.style}
11698
11718
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11699
11719
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11700
11720
  return (_ctx, _cache) => {
11701
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11721
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11702
11722
  vue.createElementVNode("div", _hoisted_2$h, [
11703
11723
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11704
11724
  vue.createElementVNode("label", { textContent: "Padding" })
@@ -11778,7 +11798,7 @@ ${_html.style}
11778
11798
  propertyType: "text"
11779
11799
  }
11780
11800
  ],
11781
- propertyGroupEditor: () => _sfc_main$x
11801
+ propertyGroupEditor: () => _sfc_main$y
11782
11802
  };
11783
11803
  };
11784
11804
  const sizeGroup = () => {
@@ -11797,27 +11817,27 @@ ${_html.style}
11797
11817
  propertyType: "text"
11798
11818
  },
11799
11819
  {
11800
- propertyName: "min-width",
11820
+ propertyName: "minWidth",
11801
11821
  caption: "Min Width",
11802
11822
  propertyType: "text"
11803
11823
  },
11804
11824
  {
11805
- propertyName: "min-height",
11825
+ propertyName: "minHeight",
11806
11826
  caption: "Min Height",
11807
11827
  propertyType: "text"
11808
11828
  },
11809
11829
  {
11810
- propertyName: "max-width",
11830
+ propertyName: "maxWidth",
11811
11831
  caption: "Max Width",
11812
11832
  propertyType: "text"
11813
11833
  },
11814
11834
  {
11815
- propertyName: "max-height",
11835
+ propertyName: "maxHeight",
11816
11836
  caption: "Max Height",
11817
11837
  propertyType: "text"
11818
11838
  }
11819
11839
  ],
11820
- propertyGroupEditor: () => _sfc_main$w
11840
+ propertyGroupEditor: () => _sfc_main$x
11821
11841
  };
11822
11842
  };
11823
11843
  const marginGroup = () => {
@@ -11846,7 +11866,7 @@ ${_html.style}
11846
11866
  propertyType: "text"
11847
11867
  }
11848
11868
  ],
11849
- propertyGroupEditor: () => _sfc_main$s
11869
+ propertyGroupEditor: () => _sfc_main$t
11850
11870
  };
11851
11871
  };
11852
11872
  const paddingGroup = () => {
@@ -11875,7 +11895,7 @@ ${_html.style}
11875
11895
  propertyType: "text"
11876
11896
  }
11877
11897
  ],
11878
- propertyGroupEditor: () => _sfc_main$r
11898
+ propertyGroupEditor: () => _sfc_main$s
11879
11899
  };
11880
11900
  };
11881
11901
  const commonGroup = () => {
@@ -11972,7 +11992,7 @@ ${_html.style}
11972
11992
  propertyType: "image"
11973
11993
  }
11974
11994
  ],
11975
- propertyGroupEditor: () => _sfc_main$u
11995
+ propertyGroupEditor: () => _sfc_main$v
11976
11996
  };
11977
11997
  };
11978
11998
  const borderGroup = () => {
@@ -12026,7 +12046,7 @@ ${_html.style}
12026
12046
  propertyType: "text"
12027
12047
  }
12028
12048
  ],
12029
- propertyGroupEditor: () => _sfc_main$t
12049
+ propertyGroupEditor: () => _sfc_main$u
12030
12050
  };
12031
12051
  };
12032
12052
  const defaultPropertyGroups = () => {
@@ -12035,7 +12055,7 @@ ${_html.style}
12035
12055
  const defaultWidgetPropertyGroups = () => {
12036
12056
  return [alignGroup(), positionGroup(), sizeGroup(), marginGroup(), paddingGroup(), borderGroup(), backgroundGroup(), commonGroup()];
12037
12057
  };
12038
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12058
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
12039
12059
  __name: "PbContainerWidget",
12040
12060
  props: {
12041
12061
  part: {},
@@ -12050,7 +12070,7 @@ ${_html.style}
12050
12070
  var _a;
12051
12071
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
12052
12072
  _ctx.part.children ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (child) => {
12053
- return vue.openBlock(), vue.createBlock(_sfc_main$B, {
12073
+ return vue.openBlock(), vue.createBlock(_sfc_main$C, {
12054
12074
  key: child.partId,
12055
12075
  "is-mobile-page": false,
12056
12076
  part: child
@@ -12072,6 +12092,18 @@ ${_html.style}
12072
12092
  icon: "draft",
12073
12093
  className: "pb-page",
12074
12094
  propertyGroups: [
12095
+ {
12096
+ groupName: "size",
12097
+ caption: "Size",
12098
+ properties: [
12099
+ {
12100
+ propertyName: "maxWidth",
12101
+ caption: "Max Width",
12102
+ propertyType: "text",
12103
+ params: ""
12104
+ }
12105
+ ]
12106
+ },
12075
12107
  alignGroup(),
12076
12108
  paddingGroup(),
12077
12109
  backgroundGroup(),
@@ -12081,7 +12113,7 @@ ${_html.style}
12081
12113
  align: "center"
12082
12114
  },
12083
12115
  allowsChild: () => true,
12084
- creator: () => _sfc_main$y
12116
+ creator: () => _sfc_main$z
12085
12117
  }
12086
12118
  ];
12087
12119
  const sectionParts = [
@@ -12100,7 +12132,7 @@ ${_html.style}
12100
12132
  align: "center"
12101
12133
  },
12102
12134
  allowsChild: () => true,
12103
- creator: () => _sfc_main$y
12135
+ creator: () => _sfc_main$z
12104
12136
  }
12105
12137
  ];
12106
12138
  const blockParts = [
@@ -12119,7 +12151,7 @@ ${_html.style}
12119
12151
  align: "center"
12120
12152
  },
12121
12153
  allowsChild: () => true,
12122
- creator: () => _sfc_main$A
12154
+ creator: () => _sfc_main$B
12123
12155
  }
12124
12156
  ];
12125
12157
  const widgets = [
@@ -12197,6 +12229,18 @@ ${_html.style}
12197
12229
  caption: "Image",
12198
12230
  propertyType: "image",
12199
12231
  params: ""
12232
+ },
12233
+ {
12234
+ propertyName: "link",
12235
+ caption: "Link",
12236
+ propertyType: "text",
12237
+ params: ""
12238
+ },
12239
+ {
12240
+ propertyName: "linkTarget",
12241
+ caption: "Link Target",
12242
+ propertyType: "text",
12243
+ params: ""
12200
12244
  }
12201
12245
  ]
12202
12246
  },
@@ -12301,7 +12345,7 @@ ${_html.style}
12301
12345
  height: "300px"
12302
12346
  },
12303
12347
  allowsChild: () => true,
12304
- creator: () => _sfc_main$q
12348
+ creator: () => _sfc_main$r
12305
12349
  }
12306
12350
  ];
12307
12351
  const partDefinitions = {};
@@ -13538,7 +13582,7 @@ ${_html.style}
13538
13582
  plugin.widgets.forEach((v) => {
13539
13583
  const w = { ...v };
13540
13584
  w.partType = "Widget";
13541
- w.creator = () => _sfc_main$D;
13585
+ w.creator = () => _sfc_main$E;
13542
13586
  w.propertyGroups = [...w.propertyGroups, ...defaultWidgetPropertyGroups()];
13543
13587
  partDefinitions2[v.partName] = w;
13544
13588
  const found = this.customWidgets.find((x) => x.partName === v.partName);
@@ -13770,8 +13814,8 @@ ${_html.style}
13770
13814
  });
13771
13815
  }
13772
13816
  }
13773
- const _hoisted_1$o = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13774
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13817
+ const _hoisted_1$p = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13818
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
13775
13819
  __name: "PbToolbarButton",
13776
13820
  props: {
13777
13821
  button: {}
@@ -13784,7 +13828,7 @@ ${_html.style}
13784
13828
  (_b = (_a = props.button).handler) == null ? void 0 : _b.call(_a, pageBuilder);
13785
13829
  };
13786
13830
  return (_ctx, _cache) => {
13787
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
13831
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
13788
13832
  vue.createElementVNode("div", {
13789
13833
  class: "tool-button bs-clickable",
13790
13834
  onClick: handleClick
@@ -13799,17 +13843,17 @@ ${_html.style}
13799
13843
  };
13800
13844
  }
13801
13845
  });
13802
- const _hoisted_1$n = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13803
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13846
+ const _hoisted_1$o = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13847
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13804
13848
  __name: "PbToolbarButtonGroup",
13805
13849
  props: {
13806
13850
  group: {}
13807
13851
  },
13808
13852
  setup(__props) {
13809
13853
  return (_ctx, _cache) => {
13810
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13854
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
13811
13855
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.group.buttons, (button) => {
13812
- return vue.openBlock(), vue.createBlock(_sfc_main$p, {
13856
+ return vue.openBlock(), vue.createBlock(_sfc_main$q, {
13813
13857
  key: button.buttonId,
13814
13858
  button
13815
13859
  }, null, 8, ["button"]);
@@ -13818,10 +13862,10 @@ ${_html.style}
13818
13862
  };
13819
13863
  }
13820
13864
  });
13821
- const _hoisted_1$m = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13865
+ const _hoisted_1$n = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13822
13866
  const _hoisted_2$g = { class: "bs-layout-horizontal align-items-center" };
13823
13867
  const _hoisted_3$c = { class: "mr-8" };
13824
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13868
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13825
13869
  __name: "PbToolbar",
13826
13870
  props: {
13827
13871
  plugin: {}
@@ -13870,10 +13914,10 @@ ${_html.style}
13870
13914
  });
13871
13915
  return (_ctx, _cache) => {
13872
13916
  var _a, _b, _c;
13873
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13917
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13874
13918
  vue.createElementVNode("div", _hoisted_2$g, [
13875
13919
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
13876
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
13920
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
13877
13921
  key: group.groupId,
13878
13922
  group
13879
13923
  }, null, 8, ["group"]);
@@ -13903,22 +13947,22 @@ ${_html.style}
13903
13947
  };
13904
13948
  }
13905
13949
  });
13906
- const _hoisted_1$l = { class: "pb-menu bs-layout-vertical" };
13907
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13950
+ const _hoisted_1$m = { class: "pb-menu bs-layout-vertical" };
13951
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13908
13952
  __name: "PbMenu",
13909
13953
  props: {
13910
13954
  toolbarPlugin: {}
13911
13955
  },
13912
13956
  setup(__props) {
13913
13957
  return (_ctx, _cache) => {
13914
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13915
- vue.createVNode(_sfc_main$n, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13958
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13959
+ vue.createVNode(_sfc_main$o, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13916
13960
  ]);
13917
13961
  };
13918
13962
  }
13919
13963
  });
13920
- const _hoisted_1$k = { class: "bs-layout-vertical border" };
13921
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13964
+ const _hoisted_1$l = { class: "bs-layout-vertical border" };
13965
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13922
13966
  __name: "PbNavigator",
13923
13967
  setup(__props) {
13924
13968
  const pageBuilder = usePageBuilderEditor();
@@ -14040,7 +14084,7 @@ ${_html.style}
14040
14084
  PageBuilderEditorEvent.off.modelUpdatedByUI(modelUpdateHandler);
14041
14085
  });
14042
14086
  return (_ctx, _cache) => {
14043
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14087
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
14044
14088
  vue.createElementVNode("div", {
14045
14089
  ref_key: "tree",
14046
14090
  ref: tree,
@@ -14073,7 +14117,7 @@ ${_html.style}
14073
14117
  };
14074
14118
  }
14075
14119
  });
14076
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14120
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
14077
14121
  __name: "PbSidebarPropertyEditor",
14078
14122
  props: {
14079
14123
  property: {},
@@ -14108,13 +14152,13 @@ ${_html.style}
14108
14152
  };
14109
14153
  }
14110
14154
  });
14111
- const _hoisted_1$j = { class: "pb-sidebar-property-group" };
14155
+ const _hoisted_1$k = { class: "pb-sidebar-property-group" };
14112
14156
  const _hoisted_2$f = {
14113
14157
  key: 0,
14114
14158
  class: "group-title"
14115
14159
  };
14116
14160
  const _hoisted_3$b = ["textContent"];
14117
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14161
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14118
14162
  __name: "PbSidebarPropertyGroupEditor",
14119
14163
  props: {
14120
14164
  group: {},
@@ -14128,7 +14172,7 @@ ${_html.style}
14128
14172
  return (_b = (_a = props.group).propertyGroupEditor) == null ? void 0 : _b.call(_a, props.group, props.selectedParts);
14129
14173
  });
14130
14174
  return (_ctx, _cache) => {
14131
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14175
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14132
14176
  _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
14133
14177
  vue.createElementVNode("label", {
14134
14178
  textContent: vue.toDisplayString(_ctx.group.caption)
@@ -14140,7 +14184,7 @@ ${_html.style}
14140
14184
  group: _ctx.group,
14141
14185
  "selected-parts": _ctx.selectedParts
14142
14186
  }, null, 8, ["group", "selected-parts"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.group.properties, (property) => {
14143
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
14187
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
14144
14188
  key: `${_ctx.partsKey}_${property.propertyName}`,
14145
14189
  property,
14146
14190
  "selected-parts": _ctx.selectedParts
@@ -14151,8 +14195,8 @@ ${_html.style}
14151
14195
  };
14152
14196
  }
14153
14197
  });
14154
- const _hoisted_1$i = { class: "pb-sidebar-properties" };
14155
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14198
+ const _hoisted_1$j = { class: "pb-sidebar-properties" };
14199
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14156
14200
  __name: "PbSidebarProperties",
14157
14201
  setup(__props) {
14158
14202
  const pageBuilder = usePageBuilderEditor();
@@ -14170,12 +14214,12 @@ ${_html.style}
14170
14214
  }
14171
14215
  });
14172
14216
  return (_ctx, _cache) => {
14173
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14217
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14174
14218
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(properties.value, (group) => {
14175
14219
  return vue.openBlock(), vue.createElementBlock("div", {
14176
14220
  key: `${partsKey.value}_${group.groupName}`
14177
14221
  }, [
14178
- vue.createVNode(_sfc_main$j, {
14222
+ vue.createVNode(_sfc_main$k, {
14179
14223
  group,
14180
14224
  partsKey: partsKey.value,
14181
14225
  "selected-parts": vue.unref(selectedParts)
@@ -14186,19 +14230,19 @@ ${_html.style}
14186
14230
  };
14187
14231
  }
14188
14232
  });
14189
- const _hoisted_1$h = { class: "pb-sidebar" };
14190
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14233
+ const _hoisted_1$i = { class: "pb-sidebar" };
14234
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14191
14235
  __name: "PbSidebar",
14192
14236
  setup(__props) {
14193
14237
  return (_ctx, _cache) => {
14194
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14195
- vue.createVNode(_sfc_main$i)
14238
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14239
+ vue.createVNode(_sfc_main$j)
14196
14240
  ]);
14197
14241
  };
14198
14242
  }
14199
14243
  });
14200
- const _hoisted_1$g = ["data-part-id"];
14201
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14244
+ const _hoisted_1$h = ["data-part-id"];
14245
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14202
14246
  __name: "PbPage",
14203
14247
  props: {
14204
14248
  part: {},
@@ -14272,7 +14316,7 @@ ${_html.style}
14272
14316
  class: [selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"]
14273
14317
  }, properties.value), [
14274
14318
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_b = _ctx.part) == null ? void 0 : _b.children, (section, index) => {
14275
- return vue.openBlock(), vue.createBlock(_sfc_main$y, {
14319
+ return vue.openBlock(), vue.createBlock(_sfc_main$z, {
14276
14320
  key: section.partId,
14277
14321
  "is-mobile-page": _ctx.isMobilePage,
14278
14322
  part: section
@@ -14285,15 +14329,15 @@ ${_html.style}
14285
14329
  }, _cache[0] || (_cache[0] = [
14286
14330
  vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1)
14287
14331
  ]))
14288
- ], 46, _hoisted_1$g),
14332
+ ], 46, _hoisted_1$h),
14289
14333
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { style: { "height": "100px" } }, null, -1))
14290
14334
  ], 64);
14291
14335
  };
14292
14336
  }
14293
14337
  });
14294
- const canvasStyle = '.pb-page-wrapper {\n margin: 0 auto;\n padding: 0;\n}\n\n.pb-page {\n width: 100%;\n margin: 0 auto;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.pb-page .pb-page-content.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-page * {\n box-sizing: border-box;\n}\n\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n\n.pb-section {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-section.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.pb-section-static .pb-widget {\n outline: none;\n}\n\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-block.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n pointer-events: auto !important;\n}\n\n.pb-widget * {\n pointer-events: none;\n}\n\n.pb-widget.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n pointer-events: auto !important;\n}\n\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n pointer-events: auto !important;\n}\n\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-text-widget .text {\n color: #333;\n}\n\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-image-widget {\n width: 100%;\n}\n\n.pb-image-widget .image {\n width: 100%;\n}\n\n.pb-image-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-image-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-youtube-widget {\n width: 100%;\n}\n\n.pb-youtube-widget .youtube {\n width: 100%;\n height: 100%;\n}\n\n.pb-youtube-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-youtube-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-container-widget {\n width: 100%;\n}\n\n.pb-container-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-container-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\n\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background-color: #aaa;\n overflow: hidden;\n}\n\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}';
14295
- const _hoisted_1$f = ["height", "width"];
14296
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14338
+ const canvasStyle = '.pb-page-wrapper {\n margin: 0 auto;\n padding: 0;\n}\n\n.pb-page {\n width: 100%;\n margin: 0 auto;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.pb-page .pb-page-content.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-page * {\n box-sizing: border-box;\n}\n\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n\n.pb-section {\n position: relative;\n width: 100%;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-section.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.pb-section-static .pb-widget {\n outline: none;\n}\n\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-block.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n pointer-events: auto !important;\n}\n\n.pb-widget * {\n pointer-events: none;\n}\n\n.pb-widget.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n pointer-events: auto !important;\n}\n\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n pointer-events: auto !important;\n}\n\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-text-widget .text {\n color: #333;\n}\n\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-image-widget {\n width: 100%;\n}\n\n.pb-image-widget .image {\n width: 100%;\n}\n\n.pb-image-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-image-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-youtube-widget {\n width: 100%;\n}\n\n.pb-youtube-widget .youtube {\n width: 100%;\n height: 100%;\n}\n\n.pb-youtube-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-youtube-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-container-widget {\n width: 100%;\n}\n\n.pb-container-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-container-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\n\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background-color: #aaa;\n overflow: hidden;\n}\n\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}';
14339
+ const _hoisted_1$g = ["height", "width"];
14340
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14297
14341
  __name: "PbPageFrame",
14298
14342
  props: {
14299
14343
  part: {},
@@ -14359,7 +14403,7 @@ ${_html.style}
14359
14403
  // width: `${width.value}px`,
14360
14404
  // height: `${height.value}px`,
14361
14405
  }));
14362
- let iframeObserver;
14406
+ let resizeObserver;
14363
14407
  const updateIframeHeight = () => {
14364
14408
  setTimeout(() => {
14365
14409
  if (!iframeRef.value || !iframeRef.value.contentDocument) return;
@@ -14372,13 +14416,15 @@ ${_html.style}
14372
14416
  vue.onMounted(() => {
14373
14417
  if (!iframeRef.value || !iframeRef.value.contentDocument) return;
14374
14418
  const iframeBody = iframeRef.value.contentDocument.body;
14375
- iframeObserver = new MutationObserver(updateIframeHeight);
14376
- iframeObserver.observe(iframeBody, { childList: true, subtree: true });
14419
+ resizeObserver = new ResizeObserver(() => {
14420
+ updateIframeHeight();
14421
+ });
14422
+ resizeObserver.observe(iframeBody, {});
14377
14423
  iframeRef.value.onload = updateIframeHeight;
14378
14424
  });
14379
14425
  vue.onBeforeUnmount(() => {
14380
- if (iframeObserver) {
14381
- iframeObserver.disconnect();
14426
+ if (resizeObserver) {
14427
+ resizeObserver.disconnect();
14382
14428
  }
14383
14429
  });
14384
14430
  return (_ctx, _cache) => {
@@ -14405,12 +14451,12 @@ ${_html.style}
14405
14451
  style: vue.normalizeStyle(style.value),
14406
14452
  width: `${width.value}px`,
14407
14453
  class: "page-frame mt-12"
14408
- }, null, 12, _hoisted_1$f),
14454
+ }, null, 12, _hoisted_1$g),
14409
14455
  ((_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document.body) ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
14410
14456
  key: 0,
14411
14457
  to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
14412
14458
  }, [
14413
- vue.createVNode(_sfc_main$g, {
14459
+ vue.createVNode(_sfc_main$h, {
14414
14460
  "is-mobile-page": isMobilePage.value,
14415
14461
  part: _ctx.part,
14416
14462
  width: width.value
@@ -14420,12 +14466,12 @@ ${_html.style}
14420
14466
  };
14421
14467
  }
14422
14468
  });
14423
- const _hoisted_1$e = { class: "pb-canvas-wrapper" };
14469
+ const _hoisted_1$f = { class: "pb-canvas-wrapper" };
14424
14470
  const _hoisted_2$e = {
14425
14471
  key: 1,
14426
14472
  style: { "width": "20px" }
14427
14473
  };
14428
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14474
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14429
14475
  __name: "PbCanvas",
14430
14476
  setup(__props) {
14431
14477
  const pageBuilder = usePageBuilderEditor();
@@ -14447,15 +14493,15 @@ ${_html.style}
14447
14493
  };
14448
14494
  });
14449
14495
  return (_ctx, _cache) => {
14450
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14496
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14451
14497
  vue.createElementVNode("div", vue.mergeProps({ class: "pb-canvas" }, style.value), [
14452
- partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14498
+ partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
14453
14499
  key: 0,
14454
14500
  part: partS.value,
14455
14501
  width: 480
14456
14502
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
14457
14503
  partL.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e)) : vue.createCommentVNode("", true),
14458
- partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14504
+ partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
14459
14505
  key: 2,
14460
14506
  part: partL.value,
14461
14507
  width: 1024
@@ -14465,9 +14511,9 @@ ${_html.style}
14465
14511
  };
14466
14512
  }
14467
14513
  });
14468
- const _hoisted_1$d = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14514
+ const _hoisted_1$e = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14469
14515
  const _hoisted_2$d = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14470
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14516
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14471
14517
  __name: "PageBuilderEditor",
14472
14518
  props: {
14473
14519
  instanceId: {},
@@ -14510,22 +14556,22 @@ ${_html.style}
14510
14556
  getPageContent
14511
14557
  });
14512
14558
  return (_ctx, _cache) => {
14513
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14514
- vue.createVNode(_sfc_main$m, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14559
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14560
+ vue.createVNode(_sfc_main$n, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14515
14561
  vue.createElementVNode("div", _hoisted_2$d, [
14516
- vue.createVNode(_sfc_main$l),
14517
- vue.createVNode(_sfc_main$e),
14518
- vue.createVNode(_sfc_main$h)
14562
+ vue.createVNode(_sfc_main$m),
14563
+ vue.createVNode(_sfc_main$f),
14564
+ vue.createVNode(_sfc_main$i)
14519
14565
  ])
14520
14566
  ]);
14521
14567
  };
14522
14568
  }
14523
14569
  });
14524
- const _hoisted_1$c = { class: "property-editor property-editor-readonly-text" };
14570
+ const _hoisted_1$d = { class: "property-editor property-editor-readonly-text" };
14525
14571
  const _hoisted_2$c = { class: "title" };
14526
14572
  const _hoisted_3$a = ["textContent"];
14527
14573
  const _hoisted_4$3 = ["textContent"];
14528
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14574
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14529
14575
  __name: "PbPropertyEditorReadonlyText",
14530
14576
  props: {
14531
14577
  property: {},
@@ -14533,7 +14579,7 @@ ${_html.style}
14533
14579
  },
14534
14580
  setup(__props) {
14535
14581
  return (_ctx, _cache) => {
14536
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14582
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14537
14583
  vue.createElementVNode("div", _hoisted_2$c, [
14538
14584
  vue.createElementVNode("label", {
14539
14585
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14550,12 +14596,12 @@ ${_html.style}
14550
14596
  });
14551
14597
  const PbPropertyEditorReadonlyText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14552
14598
  __proto__: null,
14553
- default: _sfc_main$c
14599
+ default: _sfc_main$d
14554
14600
  }, Symbol.toStringTag, { value: "Module" }));
14555
- const _hoisted_1$b = { class: "property-editor property-editor-text flex-align-center" };
14601
+ const _hoisted_1$c = { class: "property-editor property-editor-text flex-align-center" };
14556
14602
  const _hoisted_2$b = { class: "title" };
14557
14603
  const _hoisted_3$9 = ["textContent"];
14558
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14604
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14559
14605
  __name: "PbPropertyEditorText",
14560
14606
  props: {
14561
14607
  property: {},
@@ -14573,7 +14619,7 @@ ${_html.style}
14573
14619
  emit("update-property-value", properties);
14574
14620
  };
14575
14621
  return (_ctx, _cache) => {
14576
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14622
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14577
14623
  vue.createElementVNode("div", _hoisted_2$b, [
14578
14624
  vue.createElementVNode("label", {
14579
14625
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14599,12 +14645,12 @@ ${_html.style}
14599
14645
  });
14600
14646
  const PbPropertyEditorText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14601
14647
  __proto__: null,
14602
- default: _sfc_main$b
14648
+ default: _sfc_main$c
14603
14649
  }, Symbol.toStringTag, { value: "Module" }));
14604
- const _hoisted_1$a = { class: "property-editor property-editor-number flex-align-center" };
14650
+ const _hoisted_1$b = { class: "property-editor property-editor-number flex-align-center" };
14605
14651
  const _hoisted_2$a = { class: "title" };
14606
14652
  const _hoisted_3$8 = ["textContent"];
14607
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14653
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14608
14654
  __name: "PbPropertyEditorNumber",
14609
14655
  props: {
14610
14656
  property: {},
@@ -14614,13 +14660,20 @@ ${_html.style}
14614
14660
  setup(__props, { emit: __emit }) {
14615
14661
  const props = __props;
14616
14662
  const emit = __emit;
14663
+ const modelValue = vue.computed(() => {
14664
+ if (props.value && !isNaN(Number(props.value))) {
14665
+ return Number(props.value);
14666
+ } else {
14667
+ return void 0;
14668
+ }
14669
+ });
14617
14670
  const emitUpdatePropertyValue = (value) => {
14618
14671
  const properties = {};
14619
14672
  properties[props.property.propertyName] = `${value}`;
14620
14673
  emit("update-property-value", properties);
14621
14674
  };
14622
14675
  return (_ctx, _cache) => {
14623
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14676
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14624
14677
  vue.createElementVNode("div", _hoisted_2$a, [
14625
14678
  vue.createElementVNode("label", {
14626
14679
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14628,7 +14681,7 @@ ${_html.style}
14628
14681
  ]),
14629
14682
  vue.createElementVNode("div", null, [
14630
14683
  vue.createVNode(vue.unref(bluesea.BSNumberInput), {
14631
- "model-value": Number(_ctx.value),
14684
+ "model-value": modelValue.value,
14632
14685
  width: "100%",
14633
14686
  "onUpdate:modelValue": emitUpdatePropertyValue
14634
14687
  }, null, 8, ["model-value"])
@@ -14638,6 +14691,43 @@ ${_html.style}
14638
14691
  }
14639
14692
  });
14640
14693
  const PbPropertyEditorNumber = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14694
+ __proto__: null,
14695
+ default: _sfc_main$b
14696
+ }, Symbol.toStringTag, { value: "Module" }));
14697
+ const _hoisted_1$a = { class: "property-editor property-editor-boolean flex-align-center my-12" };
14698
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14699
+ __name: "PbPropertyEditorBoolean",
14700
+ props: {
14701
+ property: {},
14702
+ value: {}
14703
+ },
14704
+ emits: ["update-property-value"],
14705
+ setup(__props, { emit: __emit }) {
14706
+ const props = __props;
14707
+ const booleanValue = vue.ref((props == null ? void 0 : props.value) === "true");
14708
+ const emit = __emit;
14709
+ const emitUpdatePropertyValue = (value) => {
14710
+ const properties = {};
14711
+ properties[props.property.propertyName] = value ? "true" : "false";
14712
+ emit("update-property-value", properties);
14713
+ };
14714
+ return (_ctx, _cache) => {
14715
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14716
+ vue.createElementVNode("div", null, [
14717
+ vue.createVNode(vue.unref(bluesea.BSCheckbox), {
14718
+ modelValue: booleanValue.value,
14719
+ "onUpdate:modelValue": [
14720
+ _cache[0] || (_cache[0] = ($event) => booleanValue.value = $event),
14721
+ emitUpdatePropertyValue
14722
+ ],
14723
+ label: _ctx.property.caption
14724
+ }, null, 8, ["modelValue", "label"])
14725
+ ])
14726
+ ]);
14727
+ };
14728
+ }
14729
+ });
14730
+ const PbPropertyEditorBoolean = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14641
14731
  __proto__: null,
14642
14732
  default: _sfc_main$a
14643
14733
  }, Symbol.toStringTag, { value: "Module" }));
@@ -15336,12 +15426,12 @@ ${_html.tags}` : "";
15336
15426
  exports2.PAGE_BUILDER_KEY = PAGE_BUILDER_KEY;
15337
15427
  exports2.PAGE_TYPE = PAGE_TYPE$1;
15338
15428
  exports2.Page = Page;
15339
- exports2.PageBuilderEditor = _sfc_main$d;
15429
+ exports2.PageBuilderEditor = _sfc_main$e;
15340
15430
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
15341
15431
  exports2.PageBuilderViewer = _sfc_main$2$1;
15342
15432
  exports2.Part = Part;
15343
15433
  exports2.PbContainerWidget = _sfc_main$1$1;
15344
- exports2.PbCustomWidget = _sfc_main$D;
15434
+ exports2.PbCustomWidget = _sfc_main$E;
15345
15435
  exports2.PbHtmlWidget = _sfc_main$6$1;
15346
15436
  exports2.PbIframeWidget = _sfc_main$5$1;
15347
15437
  exports2.PbImageWidget = _sfc_main$8$1;