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

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.
@@ -7270,7 +7270,7 @@ ${_html.style}
7270
7270
  plugin.widgets.forEach((v) => {
7271
7271
  const w = { ...v };
7272
7272
  w.partType = "Widget";
7273
- w.creator = () => _sfc_main$C;
7273
+ w.creator = () => _sfc_main$D;
7274
7274
  partDefinitions$1[v.partName] = w;
7275
7275
  });
7276
7276
  }
@@ -7428,7 +7428,7 @@ ${_html.style}
7428
7428
  }
7429
7429
  });
7430
7430
  const _hoisted_1$1$1 = ["innerHTML"];
7431
- const _hoisted_2$s = { class: "pb-viewer" };
7431
+ const _hoisted_2$t = { class: "pb-viewer" };
7432
7432
  const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
7433
7433
  __name: "PageBuilderViewer",
7434
7434
  props: {
@@ -7469,7 +7469,7 @@ ${_html.style}
7469
7469
  key: 0,
7470
7470
  innerHTML: vue.unref(externalCss)
7471
7471
  }, null, 8, _hoisted_1$1$1)) : vue.createCommentVNode("", true),
7472
- vue.createElementVNode("div", _hoisted_2$s, [
7472
+ vue.createElementVNode("div", _hoisted_2$t, [
7473
7473
  part.value ? (vue.openBlock(), vue.createBlock(_sfc_main$3$1, {
7474
7474
  key: 0,
7475
7475
  "is-mobile-page": _ctx.isMobilePage,
@@ -7480,7 +7480,7 @@ ${_html.style}
7480
7480
  };
7481
7481
  }
7482
7482
  });
7483
- const _hoisted_1$F = {
7483
+ const _hoisted_1$G = {
7484
7484
  key: 1,
7485
7485
  class: "placeholder",
7486
7486
  textContent: "Empty Widget"
@@ -7501,11 +7501,11 @@ ${_html.style}
7501
7501
  key: child.part.partId,
7502
7502
  part: child.part
7503
7503
  }, null, 8, ["part"]);
7504
- }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F)) : vue.createCommentVNode("", true);
7504
+ }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G)) : vue.createCommentVNode("", true);
7505
7505
  };
7506
7506
  }
7507
7507
  });
7508
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
7508
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
7509
7509
  __name: "PbCustomWidget",
7510
7510
  props: {
7511
7511
  part: {},
@@ -8104,6 +8104,7 @@ ${_html.style}
8104
8104
  return {
8105
8105
  "readonly-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorReadonlyText)),
8106
8106
  "text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorText)),
8107
+ "number": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorNumber)),
8107
8108
  "multiline-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorMultilineText)),
8108
8109
  "select": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorSelect)),
8109
8110
  "color": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorColor)),
@@ -8362,10 +8363,10 @@ ${_html.style}
8362
8363
  }
8363
8364
  return target;
8364
8365
  };
8365
- const _sfc_main$B = {};
8366
- const _hoisted_1$E = { class: "pb-add-widget-button" };
8366
+ const _sfc_main$C = {};
8367
+ const _hoisted_1$F = { class: "pb-add-widget-button" };
8367
8368
  function _sfc_render$1(_ctx, _cache) {
8368
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [
8369
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
8369
8370
  vue.createElementVNode("button", {
8370
8371
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8371
8372
  }, _cache[1] || (_cache[1] = [
@@ -8374,7 +8375,7 @@ ${_html.style}
8374
8375
  ]))
8375
8376
  ]);
8376
8377
  }
8377
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$1]]);
8378
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$1]]);
8378
8379
  const MOUSE_TRACKER_KEY = "mouseTracker";
8379
8380
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8380
8381
  class MouseTracker {
@@ -8402,8 +8403,8 @@ ${_html.style}
8402
8403
  if (!mouseTracker) throw Error(MOUSE_TRACKER_NOT_FOUND);
8403
8404
  return mouseTracker;
8404
8405
  };
8405
- const _hoisted_1$D = ["data-part-id", "draggable"];
8406
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8406
+ const _hoisted_1$E = ["data-part-id", "draggable"];
8407
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
8407
8408
  __name: "PbWidget",
8408
8409
  props: {
8409
8410
  part: {},
@@ -8839,15 +8840,15 @@ ${_html.style}
8839
8840
  class: "resize-handle",
8840
8841
  onMousedown: resizeChild
8841
8842
  }, null, 32)) : vue.createCommentVNode("", true)
8842
- ], 14, _hoisted_1$D)), [
8843
+ ], 14, _hoisted_1$E)), [
8843
8844
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8844
8845
  ])
8845
8846
  ], 64);
8846
8847
  };
8847
8848
  }
8848
8849
  });
8849
- const _hoisted_1$C = ["data-part-id"];
8850
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
8850
+ const _hoisted_1$D = ["data-part-id"];
8851
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8851
8852
  __name: "PbBlock",
8852
8853
  props: {
8853
8854
  part: {},
@@ -9037,27 +9038,27 @@ ${_html.style}
9037
9038
  onAddWidget: addWidget
9038
9039
  })) : vue.createCommentVNode("", true),
9039
9040
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9040
- return vue.openBlock(), vue.createBlock(_sfc_main$A, {
9041
+ return vue.openBlock(), vue.createBlock(_sfc_main$B, {
9041
9042
  key: child.partId,
9042
9043
  part: child
9043
9044
  }, null, 8, ["part"]);
9044
9045
  }), 128))
9045
- ], 16, _hoisted_1$C)), [
9046
+ ], 16, _hoisted_1$D)), [
9046
9047
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9047
9048
  ])
9048
9049
  ], 64);
9049
9050
  };
9050
9051
  }
9051
9052
  });
9052
- const _hoisted_1$B = { class: "pb-block" };
9053
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9053
+ const _hoisted_1$C = { class: "pb-block" };
9054
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
9054
9055
  __name: "PbLoginDepart",
9055
9056
  props: {
9056
9057
  part: {}
9057
9058
  },
9058
9059
  setup(__props) {
9059
9060
  return (_ctx, _cache) => {
9060
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, _cache[0] || (_cache[0] = [
9061
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, _cache[0] || (_cache[0] = [
9061
9062
  vue.createElementVNode("div", {
9062
9063
  class: "pb-widget",
9063
9064
  style: { "margin": "0 auto" }
@@ -9070,8 +9071,8 @@ ${_html.style}
9070
9071
  };
9071
9072
  }
9072
9073
  });
9073
- const _hoisted_1$A = ["data-part-id"];
9074
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9074
+ const _hoisted_1$B = ["data-part-id"];
9075
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9075
9076
  __name: "PbSection",
9076
9077
  props: {
9077
9078
  part: {},
@@ -9181,13 +9182,13 @@ ${_html.style}
9181
9182
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9182
9183
  }, properties.value), [
9183
9184
  ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9184
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
9185
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
9185
9186
  key: 0,
9186
9187
  part: _ctx.part
9187
9188
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9188
9189
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9189
9190
  _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9190
- return vue.openBlock(), vue.createBlock(_sfc_main$z, {
9191
+ return vue.openBlock(), vue.createBlock(_sfc_main$A, {
9191
9192
  key: block.partId,
9192
9193
  "is-mobile-page": _ctx.isMobilePage,
9193
9194
  part: block
@@ -9197,21 +9198,21 @@ ${_html.style}
9197
9198
  onAddWidget: addWidget
9198
9199
  }))
9199
9200
  ], 64))
9200
- ], 16, _hoisted_1$A)), [
9201
+ ], 16, _hoisted_1$B)), [
9201
9202
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9202
9203
  ])
9203
9204
  ], 64);
9204
9205
  };
9205
9206
  }
9206
9207
  });
9207
- const _hoisted_1$z = { class: "group-editor group-editor-position" };
9208
- const _hoisted_2$r = { class: "flex-align-center" };
9209
- const _hoisted_3$m = { class: "flex-grow-1" };
9208
+ const _hoisted_1$A = { class: "group-editor group-editor-position" };
9209
+ const _hoisted_2$s = { class: "flex-align-center" };
9210
+ const _hoisted_3$n = { class: "flex-grow-1" };
9210
9211
  const _hoisted_4$d = { class: "bg-gray-100 py-5 rounded-8" };
9211
9212
  const _hoisted_5$7 = { class: "text-center" };
9212
9213
  const _hoisted_6$7 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9213
9214
  const _hoisted_7$6 = { class: "text-center" };
9214
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9215
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9215
9216
  __name: "PbPropertyGroupEditorPosition",
9216
9217
  props: {
9217
9218
  group: {},
@@ -9235,12 +9236,12 @@ ${_html.style}
9235
9236
  const updateTop = (value) => updatePropertyValue({ top: value });
9236
9237
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9237
9238
  return (_ctx, _cache) => {
9238
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9239
- vue.createElementVNode("div", _hoisted_2$r, [
9239
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9240
+ vue.createElementVNode("div", _hoisted_2$s, [
9240
9241
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
9241
9242
  vue.createElementVNode("label", { textContent: "Position" })
9242
9243
  ], -1)),
9243
- vue.createElementVNode("div", _hoisted_3$m, [
9244
+ vue.createElementVNode("div", _hoisted_3$n, [
9244
9245
  vue.createElementVNode("div", _hoisted_4$d, [
9245
9246
  vue.createElementVNode("div", _hoisted_5$7, [
9246
9247
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
@@ -9289,14 +9290,14 @@ ${_html.style}
9289
9290
  };
9290
9291
  }
9291
9292
  });
9292
- const _hoisted_1$y = { class: "group-editor group-editor-size" };
9293
- const _hoisted_2$q = { class: "flex-align-center" };
9294
- const _hoisted_3$l = { class: "flex-grow-1 bs-layout-horizontal" };
9293
+ const _hoisted_1$z = { class: "group-editor group-editor-size" };
9294
+ const _hoisted_2$r = { class: "flex-align-center" };
9295
+ const _hoisted_3$m = { class: "flex-grow-1 bs-layout-horizontal" };
9295
9296
  const _hoisted_4$c = { class: "flex-align-center mt-12" };
9296
9297
  const _hoisted_5$6 = { class: "flex-grow-1 bs-layout-horizontal" };
9297
9298
  const _hoisted_6$6 = { class: "flex-align-center mt-12" };
9298
9299
  const _hoisted_7$5 = { class: "flex-grow-1 bs-layout-horizontal" };
9299
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9300
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9300
9301
  __name: "PbPropertyGroupEditorSize",
9301
9302
  props: {
9302
9303
  group: {},
@@ -9324,12 +9325,12 @@ ${_html.style}
9324
9325
  const updateMinWidth = (value) => updatePropertyValue({ minWidth: value });
9325
9326
  const updateMinHeight = (value) => updatePropertyValue({ minHeight: value });
9326
9327
  return (_ctx, _cache) => {
9327
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9328
- vue.createElementVNode("div", _hoisted_2$q, [
9328
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9329
+ vue.createElementVNode("div", _hoisted_2$r, [
9329
9330
  _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "title" }, [
9330
9331
  vue.createElementVNode("label", { textContent: "Size" })
9331
9332
  ], -1)),
9332
- vue.createElementVNode("div", _hoisted_3$l, [
9333
+ vue.createElementVNode("div", _hoisted_3$m, [
9333
9334
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9334
9335
  "model-value": width.value,
9335
9336
  class: "flex-grow-1 mr-2",
@@ -9542,9 +9543,9 @@ ${_html.style}
9542
9543
  }
9543
9544
  }
9544
9545
  };
9545
- const _hoisted_1$x = { class: "vc-alpha" };
9546
- const _hoisted_2$p = { class: "vc-alpha-checkboard-wrap" };
9547
- const _hoisted_3$k = /* @__PURE__ */ vue.createElementVNode(
9546
+ const _hoisted_1$y = { class: "vc-alpha" };
9547
+ const _hoisted_2$q = { class: "vc-alpha-checkboard-wrap" };
9548
+ const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
9548
9549
  "div",
9549
9550
  { class: "vc-alpha-picker" },
9550
9551
  null,
@@ -9552,12 +9553,12 @@ ${_html.style}
9552
9553
  /* HOISTED */
9553
9554
  );
9554
9555
  const _hoisted_4$b = [
9555
- _hoisted_3$k
9556
+ _hoisted_3$l
9556
9557
  ];
9557
9558
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9558
9559
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9559
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
9560
- vue.createElementVNode("div", _hoisted_2$p, [
9560
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9561
+ vue.createElementVNode("div", _hoisted_2$q, [
9561
9562
  vue.createVNode(_component_Checkboard)
9562
9563
  ]),
9563
9564
  vue.createElementVNode(
@@ -10660,12 +10661,12 @@ ${_html.style}
10660
10661
  // }
10661
10662
  }
10662
10663
  };
10663
- const _hoisted_1$w = { class: "vc-editable-input" };
10664
- const _hoisted_2$o = ["aria-labelledby"];
10665
- const _hoisted_3$j = ["id", "for"];
10664
+ const _hoisted_1$x = { class: "vc-editable-input" };
10665
+ const _hoisted_2$p = ["aria-labelledby"];
10666
+ const _hoisted_3$k = ["id", "for"];
10666
10667
  const _hoisted_4$a = { class: "vc-input__desc" };
10667
10668
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10668
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
10669
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
10669
10670
  vue.withDirectives(vue.createElementVNode("input", {
10670
10671
  ref: "input",
10671
10672
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10673,14 +10674,14 @@ ${_html.style}
10673
10674
  class: "vc-input__input",
10674
10675
  onKeydown: _cache[1] || (_cache[1] = (...args) => $options.handleKeyDown && $options.handleKeyDown(...args)),
10675
10676
  onInput: _cache[2] || (_cache[2] = (...args) => $options.update && $options.update(...args))
10676
- }, null, 40, _hoisted_2$o), [
10677
+ }, null, 40, _hoisted_2$p), [
10677
10678
  [vue.vModelText, $options.val]
10678
10679
  ]),
10679
10680
  vue.createElementVNode("span", {
10680
10681
  id: $options.labelId,
10681
10682
  for: $props.label,
10682
10683
  class: "vc-input__label"
10683
- }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$j),
10684
+ }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$k),
10684
10685
  vue.createElementVNode(
10685
10686
  "span",
10686
10687
  _hoisted_4$a,
@@ -10760,21 +10761,21 @@ ${_html.style}
10760
10761
  }
10761
10762
  }
10762
10763
  };
10763
- const _hoisted_1$v = /* @__PURE__ */ vue.createElementVNode(
10764
+ const _hoisted_1$w = /* @__PURE__ */ vue.createElementVNode(
10764
10765
  "div",
10765
10766
  { class: "vc-saturation--white" },
10766
10767
  null,
10767
10768
  -1
10768
10769
  /* HOISTED */
10769
10770
  );
10770
- const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10771
+ const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode(
10771
10772
  "div",
10772
10773
  { class: "vc-saturation--black" },
10773
10774
  null,
10774
10775
  -1
10775
10776
  /* HOISTED */
10776
10777
  );
10777
- const _hoisted_3$i = /* @__PURE__ */ vue.createElementVNode(
10778
+ const _hoisted_3$j = /* @__PURE__ */ vue.createElementVNode(
10778
10779
  "div",
10779
10780
  { class: "vc-saturation-circle" },
10780
10781
  null,
@@ -10782,7 +10783,7 @@ ${_html.style}
10782
10783
  /* HOISTED */
10783
10784
  );
10784
10785
  const _hoisted_4$9 = [
10785
- _hoisted_3$i
10786
+ _hoisted_3$j
10786
10787
  ];
10787
10788
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10788
10789
  return vue.openBlock(), vue.createElementBlock(
@@ -10796,8 +10797,8 @@ ${_html.style}
10796
10797
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10797
10798
  },
10798
10799
  [
10799
- _hoisted_1$v,
10800
- _hoisted_2$n,
10800
+ _hoisted_1$w,
10801
+ _hoisted_2$o,
10801
10802
  vue.createElementVNode(
10802
10803
  "div",
10803
10804
  {
@@ -10945,16 +10946,16 @@ ${_html.style}
10945
10946
  }
10946
10947
  }
10947
10948
  };
10948
- const _hoisted_1$u = ["aria-valuenow"];
10949
- const _hoisted_2$m = /* @__PURE__ */ vue.createElementVNode(
10949
+ const _hoisted_1$v = ["aria-valuenow"];
10950
+ const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10950
10951
  "div",
10951
10952
  { class: "vc-hue-picker" },
10952
10953
  null,
10953
10954
  -1
10954
10955
  /* HOISTED */
10955
10956
  );
10956
- const _hoisted_3$h = [
10957
- _hoisted_2$m
10957
+ const _hoisted_3$i = [
10958
+ _hoisted_2$n
10958
10959
  ];
10959
10960
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
10960
10961
  return vue.openBlock(), vue.createElementBlock(
@@ -10981,11 +10982,11 @@ ${_html.style}
10981
10982
  style: vue.normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),
10982
10983
  role: "presentation"
10983
10984
  },
10984
- _hoisted_3$h,
10985
+ _hoisted_3$i,
10985
10986
  4
10986
10987
  /* STYLE */
10987
10988
  )
10988
- ], 40, _hoisted_1$u)
10989
+ ], 40, _hoisted_1$v)
10989
10990
  ],
10990
10991
  2
10991
10992
  /* CLASS */
@@ -11081,9 +11082,9 @@ ${_html.style}
11081
11082
  }
11082
11083
  }
11083
11084
  };
11084
- const _hoisted_1$t = { class: "vc-sketch-saturation-wrap" };
11085
- const _hoisted_2$l = { class: "vc-sketch-controls" };
11086
- const _hoisted_3$g = { class: "vc-sketch-sliders" };
11085
+ const _hoisted_1$u = { class: "vc-sketch-saturation-wrap" };
11086
+ const _hoisted_2$m = { class: "vc-sketch-controls" };
11087
+ const _hoisted_3$h = { class: "vc-sketch-sliders" };
11087
11088
  const _hoisted_4$8 = { class: "vc-sketch-hue-wrap" };
11088
11089
  const _hoisted_5$5 = {
11089
11090
  key: 0,
@@ -11124,14 +11125,14 @@ ${_html.style}
11124
11125
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
11125
11126
  },
11126
11127
  [
11127
- vue.createElementVNode("div", _hoisted_1$t, [
11128
+ vue.createElementVNode("div", _hoisted_1$u, [
11128
11129
  vue.createVNode(_component_Saturation, {
11129
11130
  value: _ctx.colors,
11130
11131
  onChange: $options.childChange
11131
11132
  }, null, 8, ["value", "onChange"])
11132
11133
  ]),
11133
- vue.createElementVNode("div", _hoisted_2$l, [
11134
- vue.createElementVNode("div", _hoisted_3$g, [
11134
+ vue.createElementVNode("div", _hoisted_2$m, [
11135
+ vue.createElementVNode("div", _hoisted_3$h, [
11135
11136
  vue.createElementVNode("div", _hoisted_4$8, [
11136
11137
  vue.createVNode(_component_Hue, {
11137
11138
  value: _ctx.colors,
@@ -11236,7 +11237,7 @@ ${_html.style}
11236
11237
  script.render = render;
11237
11238
  script.__file = "src/components/sketch/sketch.vue";
11238
11239
  script.install = install;
11239
- const _sfc_main$u = vue.defineComponent({
11240
+ const _sfc_main$v = vue.defineComponent({
11240
11241
  name: "PbColorPicker",
11241
11242
  components: {
11242
11243
  Sketch: script
@@ -11296,8 +11297,8 @@ ${_html.style}
11296
11297
  };
11297
11298
  }
11298
11299
  });
11299
- const _hoisted_1$s = { class: "buttons" };
11300
- const _hoisted_2$k = { class: "sketch-wrap" };
11300
+ const _hoisted_1$t = { class: "buttons" };
11301
+ const _hoisted_2$l = { class: "sketch-wrap" };
11301
11302
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11302
11303
  const _component_Sketch = vue.resolveComponent("Sketch");
11303
11304
  const _directive_click_outside = vue.resolveDirective("click-outside");
@@ -11306,7 +11307,7 @@ ${_html.style}
11306
11307
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11307
11308
  }, ["stop"]))
11308
11309
  }, [
11309
- vue.createElementVNode("div", _hoisted_1$s, [
11310
+ vue.createElementVNode("div", _hoisted_1$t, [
11310
11311
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11311
11312
  vue.createElementVNode("button", {
11312
11313
  class: vue.normalizeClass([{ none: !_ctx.color }, "picker-button"]),
@@ -11321,7 +11322,7 @@ ${_html.style}
11321
11322
  vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1)
11322
11323
  ]))) : vue.createCommentVNode("", true)
11323
11324
  ]),
11324
- vue.createElementVNode("div", _hoisted_2$k, [
11325
+ vue.createElementVNode("div", _hoisted_2$l, [
11325
11326
  _ctx.isShowColorPicker ? (vue.openBlock(), vue.createBlock(_component_Sketch, {
11326
11327
  key: 0,
11327
11328
  modelValue: _ctx.color,
@@ -11333,12 +11334,12 @@ ${_html.style}
11333
11334
  [_directive_click_outside, () => _ctx.toggle(false)]
11334
11335
  ]);
11335
11336
  }
11336
- const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render]]);
11337
- const _hoisted_1$r = { class: "group-editor group-editor-background" };
11338
- const _hoisted_2$j = { class: "flex-align-center" };
11339
- const _hoisted_3$f = { class: "bs-layout-horizontal" };
11337
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render]]);
11338
+ const _hoisted_1$s = { class: "group-editor group-editor-background" };
11339
+ const _hoisted_2$k = { class: "flex-align-center" };
11340
+ const _hoisted_3$g = { class: "bs-layout-horizontal" };
11340
11341
  const _hoisted_4$7 = { class: "color" };
11341
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11342
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
11342
11343
  __name: "PbPropertyGroupEditorBackground",
11343
11344
  props: {
11344
11345
  group: {},
@@ -11371,12 +11372,12 @@ ${_html.style}
11371
11372
  }
11372
11373
  };
11373
11374
  return (_ctx, _cache) => {
11374
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11375
- vue.createElementVNode("div", _hoisted_2$j, [
11375
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11376
+ vue.createElementVNode("div", _hoisted_2$k, [
11376
11377
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "title" }, [
11377
11378
  vue.createElementVNode("label", { textContent: "Background" })
11378
11379
  ], -1)),
11379
- vue.createElementVNode("div", _hoisted_3$f, [
11380
+ vue.createElementVNode("div", _hoisted_3$g, [
11380
11381
  vue.createElementVNode("div", _hoisted_4$7, [
11381
11382
  vue.createVNode(PbColorPicker, {
11382
11383
  value: color.value,
@@ -11406,9 +11407,9 @@ ${_html.style}
11406
11407
  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";
11407
11408
  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";
11408
11409
  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";
11409
- const _hoisted_1$q = { class: "group-editor group-editor-border" };
11410
- const _hoisted_2$i = { class: "flex-align-center" };
11411
- const _hoisted_3$e = { class: "" };
11410
+ const _hoisted_1$r = { class: "group-editor group-editor-border" };
11411
+ const _hoisted_2$j = { class: "flex-align-center" };
11412
+ const _hoisted_3$f = { class: "" };
11412
11413
  const _hoisted_4$6 = { class: "color" };
11413
11414
  const _hoisted_5$4 = { class: "mt-8" };
11414
11415
  const _hoisted_6$4 = { class: "flex-grow-1 mt-4" };
@@ -11421,7 +11422,7 @@ ${_html.style}
11421
11422
  const _hoisted_13 = { class: "bg-gray-100 py-5 rounded-8" };
11422
11423
  const _hoisted_14 = { class: "" };
11423
11424
  const _hoisted_15 = { class: "mt-2" };
11424
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11425
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11425
11426
  __name: "PbPropertyGroupEditorBorder",
11426
11427
  props: {
11427
11428
  group: {},
@@ -11459,12 +11460,12 @@ ${_html.style}
11459
11460
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11460
11461
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11461
11462
  return (_ctx, _cache) => {
11462
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11463
- vue.createElementVNode("div", _hoisted_2$i, [
11463
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11464
+ vue.createElementVNode("div", _hoisted_2$j, [
11464
11465
  _cache[7] || (_cache[7] = vue.createElementVNode("div", { class: "title" }, [
11465
11466
  vue.createElementVNode("label", { textContent: "Border" })
11466
11467
  ], -1)),
11467
- vue.createElementVNode("div", _hoisted_3$e, [
11468
+ vue.createElementVNode("div", _hoisted_3$f, [
11468
11469
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "sub-title" }, [
11469
11470
  vue.createElementVNode("label", { textContent: "Color" })
11470
11471
  ], -1)),
@@ -11581,14 +11582,14 @@ ${_html.style}
11581
11582
  };
11582
11583
  }
11583
11584
  });
11584
- const _hoisted_1$p = { class: "group-editor group-editor-margin" };
11585
- const _hoisted_2$h = { class: "flex-align-center" };
11586
- const _hoisted_3$d = { class: "flex-grow-1" };
11585
+ const _hoisted_1$q = { class: "group-editor group-editor-margin" };
11586
+ const _hoisted_2$i = { class: "flex-align-center" };
11587
+ const _hoisted_3$e = { class: "flex-grow-1" };
11587
11588
  const _hoisted_4$5 = { class: "bg-gray-100 py-5 rounded-8" };
11588
11589
  const _hoisted_5$3 = { class: "text-center" };
11589
11590
  const _hoisted_6$3 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11590
11591
  const _hoisted_7$2 = { class: "text-center" };
11591
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11592
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11592
11593
  __name: "PbPropertyGroupEditorMargin",
11593
11594
  props: {
11594
11595
  group: {},
@@ -11612,12 +11613,12 @@ ${_html.style}
11612
11613
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11613
11614
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11614
11615
  return (_ctx, _cache) => {
11615
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11616
- vue.createElementVNode("div", _hoisted_2$h, [
11616
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11617
+ vue.createElementVNode("div", _hoisted_2$i, [
11617
11618
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11618
11619
  vue.createElementVNode("label", { textContent: "Margin" })
11619
11620
  ], -1)),
11620
- vue.createElementVNode("div", _hoisted_3$d, [
11621
+ vue.createElementVNode("div", _hoisted_3$e, [
11621
11622
  vue.createElementVNode("div", _hoisted_4$5, [
11622
11623
  vue.createElementVNode("div", _hoisted_5$3, [
11623
11624
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
@@ -11666,14 +11667,14 @@ ${_html.style}
11666
11667
  };
11667
11668
  }
11668
11669
  });
11669
- const _hoisted_1$o = { class: "group-editor group-editor-padding" };
11670
- const _hoisted_2$g = { class: "flex-align-center" };
11671
- const _hoisted_3$c = { class: "flex-grow-1" };
11670
+ const _hoisted_1$p = { class: "group-editor group-editor-padding" };
11671
+ const _hoisted_2$h = { class: "flex-align-center" };
11672
+ const _hoisted_3$d = { class: "flex-grow-1" };
11672
11673
  const _hoisted_4$4 = { class: "bg-gray-100 py-5 rounded-8" };
11673
11674
  const _hoisted_5$2 = { class: "text-center" };
11674
11675
  const _hoisted_6$2 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11675
11676
  const _hoisted_7$1 = { class: "text-center" };
11676
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11677
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11677
11678
  __name: "PbPropertyGroupEditorPadding",
11678
11679
  props: {
11679
11680
  group: {},
@@ -11697,12 +11698,12 @@ ${_html.style}
11697
11698
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11698
11699
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11699
11700
  return (_ctx, _cache) => {
11700
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
11701
- vue.createElementVNode("div", _hoisted_2$g, [
11701
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11702
+ vue.createElementVNode("div", _hoisted_2$h, [
11702
11703
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11703
11704
  vue.createElementVNode("label", { textContent: "Padding" })
11704
11705
  ], -1)),
11705
- vue.createElementVNode("div", _hoisted_3$c, [
11706
+ vue.createElementVNode("div", _hoisted_3$d, [
11706
11707
  vue.createElementVNode("div", _hoisted_4$4, [
11707
11708
  vue.createElementVNode("div", _hoisted_5$2, [
11708
11709
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
@@ -11777,7 +11778,7 @@ ${_html.style}
11777
11778
  propertyType: "text"
11778
11779
  }
11779
11780
  ],
11780
- propertyGroupEditor: () => _sfc_main$w
11781
+ propertyGroupEditor: () => _sfc_main$x
11781
11782
  };
11782
11783
  };
11783
11784
  const sizeGroup = () => {
@@ -11816,7 +11817,7 @@ ${_html.style}
11816
11817
  propertyType: "text"
11817
11818
  }
11818
11819
  ],
11819
- propertyGroupEditor: () => _sfc_main$v
11820
+ propertyGroupEditor: () => _sfc_main$w
11820
11821
  };
11821
11822
  };
11822
11823
  const marginGroup = () => {
@@ -11845,7 +11846,7 @@ ${_html.style}
11845
11846
  propertyType: "text"
11846
11847
  }
11847
11848
  ],
11848
- propertyGroupEditor: () => _sfc_main$r
11849
+ propertyGroupEditor: () => _sfc_main$s
11849
11850
  };
11850
11851
  };
11851
11852
  const paddingGroup = () => {
@@ -11874,7 +11875,7 @@ ${_html.style}
11874
11875
  propertyType: "text"
11875
11876
  }
11876
11877
  ],
11877
- propertyGroupEditor: () => _sfc_main$q
11878
+ propertyGroupEditor: () => _sfc_main$r
11878
11879
  };
11879
11880
  };
11880
11881
  const commonGroup = () => {
@@ -11971,7 +11972,7 @@ ${_html.style}
11971
11972
  propertyType: "image"
11972
11973
  }
11973
11974
  ],
11974
- propertyGroupEditor: () => _sfc_main$t
11975
+ propertyGroupEditor: () => _sfc_main$u
11975
11976
  };
11976
11977
  };
11977
11978
  const borderGroup = () => {
@@ -12025,7 +12026,7 @@ ${_html.style}
12025
12026
  propertyType: "text"
12026
12027
  }
12027
12028
  ],
12028
- propertyGroupEditor: () => _sfc_main$s
12029
+ propertyGroupEditor: () => _sfc_main$t
12029
12030
  };
12030
12031
  };
12031
12032
  const defaultPropertyGroups = () => {
@@ -12034,7 +12035,7 @@ ${_html.style}
12034
12035
  const defaultWidgetPropertyGroups = () => {
12035
12036
  return [alignGroup(), positionGroup(), sizeGroup(), marginGroup(), paddingGroup(), borderGroup(), backgroundGroup(), commonGroup()];
12036
12037
  };
12037
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12038
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12038
12039
  __name: "PbContainerWidget",
12039
12040
  props: {
12040
12041
  part: {},
@@ -12049,7 +12050,7 @@ ${_html.style}
12049
12050
  var _a;
12050
12051
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
12051
12052
  _ctx.part.children ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (child) => {
12052
- return vue.openBlock(), vue.createBlock(_sfc_main$A, {
12053
+ return vue.openBlock(), vue.createBlock(_sfc_main$B, {
12053
12054
  key: child.partId,
12054
12055
  "is-mobile-page": false,
12055
12056
  part: child
@@ -12080,7 +12081,7 @@ ${_html.style}
12080
12081
  align: "center"
12081
12082
  },
12082
12083
  allowsChild: () => true,
12083
- creator: () => _sfc_main$x
12084
+ creator: () => _sfc_main$y
12084
12085
  }
12085
12086
  ];
12086
12087
  const sectionParts = [
@@ -12099,7 +12100,7 @@ ${_html.style}
12099
12100
  align: "center"
12100
12101
  },
12101
12102
  allowsChild: () => true,
12102
- creator: () => _sfc_main$x
12103
+ creator: () => _sfc_main$y
12103
12104
  }
12104
12105
  ];
12105
12106
  const blockParts = [
@@ -12118,7 +12119,7 @@ ${_html.style}
12118
12119
  align: "center"
12119
12120
  },
12120
12121
  allowsChild: () => true,
12121
- creator: () => _sfc_main$z
12122
+ creator: () => _sfc_main$A
12122
12123
  }
12123
12124
  ];
12124
12125
  const widgets = [
@@ -12300,7 +12301,7 @@ ${_html.style}
12300
12301
  height: "300px"
12301
12302
  },
12302
12303
  allowsChild: () => true,
12303
- creator: () => _sfc_main$p
12304
+ creator: () => _sfc_main$q
12304
12305
  }
12305
12306
  ];
12306
12307
  const partDefinitions = {};
@@ -13537,7 +13538,7 @@ ${_html.style}
13537
13538
  plugin.widgets.forEach((v) => {
13538
13539
  const w = { ...v };
13539
13540
  w.partType = "Widget";
13540
- w.creator = () => _sfc_main$C;
13541
+ w.creator = () => _sfc_main$D;
13541
13542
  w.propertyGroups = [...w.propertyGroups, ...defaultWidgetPropertyGroups()];
13542
13543
  partDefinitions2[v.partName] = w;
13543
13544
  const found = this.customWidgets.find((x) => x.partName === v.partName);
@@ -13582,7 +13583,7 @@ ${_html.style}
13582
13583
  name: "Page (Mobile)"
13583
13584
  };
13584
13585
  parts[1].properties = {
13585
- ...parts[0].properties || {},
13586
+ ...parts[1].properties || {},
13586
13587
  name: "Page (PC)"
13587
13588
  };
13588
13589
  }
@@ -13769,8 +13770,8 @@ ${_html.style}
13769
13770
  });
13770
13771
  }
13771
13772
  }
13772
- const _hoisted_1$n = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13773
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13773
+ const _hoisted_1$o = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13774
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13774
13775
  __name: "PbToolbarButton",
13775
13776
  props: {
13776
13777
  button: {}
@@ -13783,7 +13784,7 @@ ${_html.style}
13783
13784
  (_b = (_a = props.button).handler) == null ? void 0 : _b.call(_a, pageBuilder);
13784
13785
  };
13785
13786
  return (_ctx, _cache) => {
13786
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13787
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
13787
13788
  vue.createElementVNode("div", {
13788
13789
  class: "tool-button bs-clickable",
13789
13790
  onClick: handleClick
@@ -13798,17 +13799,17 @@ ${_html.style}
13798
13799
  };
13799
13800
  }
13800
13801
  });
13801
- const _hoisted_1$m = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13802
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13802
+ const _hoisted_1$n = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13803
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13803
13804
  __name: "PbToolbarButtonGroup",
13804
13805
  props: {
13805
13806
  group: {}
13806
13807
  },
13807
13808
  setup(__props) {
13808
13809
  return (_ctx, _cache) => {
13809
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13810
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13810
13811
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.group.buttons, (button) => {
13811
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
13812
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
13812
13813
  key: button.buttonId,
13813
13814
  button
13814
13815
  }, null, 8, ["button"]);
@@ -13817,10 +13818,10 @@ ${_html.style}
13817
13818
  };
13818
13819
  }
13819
13820
  });
13820
- const _hoisted_1$l = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13821
- const _hoisted_2$f = { class: "bs-layout-horizontal align-items-center" };
13822
- const _hoisted_3$b = { class: "mr-8" };
13823
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13821
+ const _hoisted_1$m = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13822
+ const _hoisted_2$g = { class: "bs-layout-horizontal align-items-center" };
13823
+ const _hoisted_3$c = { class: "mr-8" };
13824
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13824
13825
  __name: "PbToolbar",
13825
13826
  props: {
13826
13827
  plugin: {}
@@ -13869,10 +13870,10 @@ ${_html.style}
13869
13870
  });
13870
13871
  return (_ctx, _cache) => {
13871
13872
  var _a, _b, _c;
13872
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13873
- vue.createElementVNode("div", _hoisted_2$f, [
13873
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13874
+ vue.createElementVNode("div", _hoisted_2$g, [
13874
13875
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
13875
- return vue.openBlock(), vue.createBlock(_sfc_main$n, {
13876
+ return vue.openBlock(), vue.createBlock(_sfc_main$o, {
13876
13877
  key: group.groupId,
13877
13878
  group
13878
13879
  }, null, 8, ["group"]);
@@ -13895,29 +13896,29 @@ ${_html.style}
13895
13896
  }, null, 8, ["modelValue"])
13896
13897
  ]),
13897
13898
  _cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "flex-grow-1" }, null, -1)),
13898
- vue.createElementVNode("div", _hoisted_3$b, [
13899
+ vue.createElementVNode("div", _hoisted_3$c, [
13899
13900
  _ctx.plugin ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent((_a = _ctx.plugin) == null ? void 0 : _a.component), vue.mergeProps({ key: 0 }, (_b = _ctx.plugin) == null ? void 0 : _b.bind, vue.toHandlers((_c = _ctx.plugin) == null ? void 0 : _c.on)), null, 16)) : vue.createCommentVNode("", true)
13900
13901
  ])
13901
13902
  ]);
13902
13903
  };
13903
13904
  }
13904
13905
  });
13905
- const _hoisted_1$k = { class: "pb-menu bs-layout-vertical" };
13906
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13906
+ const _hoisted_1$l = { class: "pb-menu bs-layout-vertical" };
13907
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13907
13908
  __name: "PbMenu",
13908
13909
  props: {
13909
13910
  toolbarPlugin: {}
13910
13911
  },
13911
13912
  setup(__props) {
13912
13913
  return (_ctx, _cache) => {
13913
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
13914
- vue.createVNode(_sfc_main$m, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13914
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13915
+ vue.createVNode(_sfc_main$n, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13915
13916
  ]);
13916
13917
  };
13917
13918
  }
13918
13919
  });
13919
- const _hoisted_1$j = { class: "bs-layout-vertical border" };
13920
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13920
+ const _hoisted_1$k = { class: "bs-layout-vertical border" };
13921
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13921
13922
  __name: "PbNavigator",
13922
13923
  setup(__props) {
13923
13924
  const pageBuilder = usePageBuilderEditor();
@@ -14018,7 +14019,7 @@ ${_html.style}
14018
14019
  }
14019
14020
  };
14020
14021
  const expandParent = (part) => {
14021
- if (part.parent && part.parent.partName !== PAGE_TYPE) {
14022
+ if (part.parent && part.parent.partName !== ROOT_TYPE) {
14022
14023
  expandedRows.value.add(part.parent.partId);
14023
14024
  expandParent(part.parent);
14024
14025
  }
@@ -14039,7 +14040,7 @@ ${_html.style}
14039
14040
  PageBuilderEditorEvent.off.modelUpdatedByUI(modelUpdateHandler);
14040
14041
  });
14041
14042
  return (_ctx, _cache) => {
14042
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14043
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14043
14044
  vue.createElementVNode("div", {
14044
14045
  ref_key: "tree",
14045
14046
  ref: tree,
@@ -14072,7 +14073,7 @@ ${_html.style}
14072
14073
  };
14073
14074
  }
14074
14075
  });
14075
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14076
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14076
14077
  __name: "PbSidebarPropertyEditor",
14077
14078
  props: {
14078
14079
  property: {},
@@ -14107,13 +14108,13 @@ ${_html.style}
14107
14108
  };
14108
14109
  }
14109
14110
  });
14110
- const _hoisted_1$i = { class: "pb-sidebar-property-group" };
14111
- const _hoisted_2$e = {
14111
+ const _hoisted_1$j = { class: "pb-sidebar-property-group" };
14112
+ const _hoisted_2$f = {
14112
14113
  key: 0,
14113
14114
  class: "group-title"
14114
14115
  };
14115
- const _hoisted_3$a = ["textContent"];
14116
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14116
+ const _hoisted_3$b = ["textContent"];
14117
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14117
14118
  __name: "PbSidebarPropertyGroupEditor",
14118
14119
  props: {
14119
14120
  group: {},
@@ -14127,11 +14128,11 @@ ${_html.style}
14127
14128
  return (_b = (_a = props.group).propertyGroupEditor) == null ? void 0 : _b.call(_a, props.group, props.selectedParts);
14128
14129
  });
14129
14130
  return (_ctx, _cache) => {
14130
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14131
- _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
14131
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14132
+ _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
14132
14133
  vue.createElementVNode("label", {
14133
14134
  textContent: vue.toDisplayString(_ctx.group.caption)
14134
- }, null, 8, _hoisted_3$a)
14135
+ }, null, 8, _hoisted_3$b)
14135
14136
  ])) : vue.createCommentVNode("", true),
14136
14137
  _ctx.partsKey ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
14137
14138
  groupEditor.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(groupEditor.value), {
@@ -14139,7 +14140,7 @@ ${_html.style}
14139
14140
  group: _ctx.group,
14140
14141
  "selected-parts": _ctx.selectedParts
14141
14142
  }, null, 8, ["group", "selected-parts"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.group.properties, (property) => {
14142
- return vue.openBlock(), vue.createBlock(_sfc_main$j, {
14143
+ return vue.openBlock(), vue.createBlock(_sfc_main$k, {
14143
14144
  key: `${_ctx.partsKey}_${property.propertyName}`,
14144
14145
  property,
14145
14146
  "selected-parts": _ctx.selectedParts
@@ -14150,8 +14151,8 @@ ${_html.style}
14150
14151
  };
14151
14152
  }
14152
14153
  });
14153
- const _hoisted_1$h = { class: "pb-sidebar-properties" };
14154
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14154
+ const _hoisted_1$i = { class: "pb-sidebar-properties" };
14155
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14155
14156
  __name: "PbSidebarProperties",
14156
14157
  setup(__props) {
14157
14158
  const pageBuilder = usePageBuilderEditor();
@@ -14169,12 +14170,12 @@ ${_html.style}
14169
14170
  }
14170
14171
  });
14171
14172
  return (_ctx, _cache) => {
14172
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14173
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14173
14174
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(properties.value, (group) => {
14174
14175
  return vue.openBlock(), vue.createElementBlock("div", {
14175
14176
  key: `${partsKey.value}_${group.groupName}`
14176
14177
  }, [
14177
- vue.createVNode(_sfc_main$i, {
14178
+ vue.createVNode(_sfc_main$j, {
14178
14179
  group,
14179
14180
  partsKey: partsKey.value,
14180
14181
  "selected-parts": vue.unref(selectedParts)
@@ -14185,19 +14186,19 @@ ${_html.style}
14185
14186
  };
14186
14187
  }
14187
14188
  });
14188
- const _hoisted_1$g = { class: "pb-sidebar" };
14189
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14189
+ const _hoisted_1$h = { class: "pb-sidebar" };
14190
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14190
14191
  __name: "PbSidebar",
14191
14192
  setup(__props) {
14192
14193
  return (_ctx, _cache) => {
14193
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
14194
- vue.createVNode(_sfc_main$h)
14194
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14195
+ vue.createVNode(_sfc_main$i)
14195
14196
  ]);
14196
14197
  };
14197
14198
  }
14198
14199
  });
14199
- const _hoisted_1$f = ["data-part-id"];
14200
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14200
+ const _hoisted_1$g = ["data-part-id"];
14201
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14201
14202
  __name: "PbPage",
14202
14203
  props: {
14203
14204
  part: {},
@@ -14271,7 +14272,7 @@ ${_html.style}
14271
14272
  class: [selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"]
14272
14273
  }, properties.value), [
14273
14274
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_b = _ctx.part) == null ? void 0 : _b.children, (section, index) => {
14274
- return vue.openBlock(), vue.createBlock(_sfc_main$x, {
14275
+ return vue.openBlock(), vue.createBlock(_sfc_main$y, {
14275
14276
  key: section.partId,
14276
14277
  "is-mobile-page": _ctx.isMobilePage,
14277
14278
  part: section
@@ -14284,15 +14285,15 @@ ${_html.style}
14284
14285
  }, _cache[0] || (_cache[0] = [
14285
14286
  vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1)
14286
14287
  ]))
14287
- ], 46, _hoisted_1$f),
14288
+ ], 46, _hoisted_1$g),
14288
14289
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { style: { "height": "100px" } }, null, -1))
14289
14290
  ], 64);
14290
14291
  };
14291
14292
  }
14292
14293
  });
14293
- 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}\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}\n\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n}\n\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-text-widget .text {\n color: #333;\n}\n\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-image-widget {\n width: 100%;\n}\n\n.pb-image-widget .image {\n width: 100%;\n}\n\n.pb-image-widget .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}';
14294
- const _hoisted_1$e = ["height", "width"];
14295
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
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({
14296
14297
  __name: "PbPageFrame",
14297
14298
  props: {
14298
14299
  part: {},
@@ -14388,7 +14389,10 @@ ${_html.style}
14388
14389
  }, [
14389
14390
  vue.createVNode(vue.unref(bluesea.BSSelect), {
14390
14391
  modelValue: width.value,
14391
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => width.value = $event),
14392
+ "onUpdate:modelValue": [
14393
+ _cache[0] || (_cache[0] = ($event) => width.value = $event),
14394
+ updateIframeHeight
14395
+ ],
14392
14396
  items: [480, 768, 1024, 1280],
14393
14397
  "label-provider": (v) => `Screen Size: ${v}px`,
14394
14398
  "value-provider": (v) => v,
@@ -14401,12 +14405,12 @@ ${_html.style}
14401
14405
  style: vue.normalizeStyle(style.value),
14402
14406
  width: `${width.value}px`,
14403
14407
  class: "page-frame mt-12"
14404
- }, null, 12, _hoisted_1$e),
14408
+ }, null, 12, _hoisted_1$f),
14405
14409
  ((_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document.body) ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
14406
14410
  key: 0,
14407
14411
  to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
14408
14412
  }, [
14409
- vue.createVNode(_sfc_main$f, {
14413
+ vue.createVNode(_sfc_main$g, {
14410
14414
  "is-mobile-page": isMobilePage.value,
14411
14415
  part: _ctx.part,
14412
14416
  width: width.value
@@ -14416,12 +14420,12 @@ ${_html.style}
14416
14420
  };
14417
14421
  }
14418
14422
  });
14419
- const _hoisted_1$d = { class: "pb-canvas-wrapper" };
14420
- const _hoisted_2$d = {
14423
+ const _hoisted_1$e = { class: "pb-canvas-wrapper" };
14424
+ const _hoisted_2$e = {
14421
14425
  key: 1,
14422
14426
  style: { "width": "20px" }
14423
14427
  };
14424
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14428
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14425
14429
  __name: "PbCanvas",
14426
14430
  setup(__props) {
14427
14431
  const pageBuilder = usePageBuilderEditor();
@@ -14443,15 +14447,15 @@ ${_html.style}
14443
14447
  };
14444
14448
  });
14445
14449
  return (_ctx, _cache) => {
14446
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14450
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14447
14451
  vue.createElementVNode("div", vue.mergeProps({ class: "pb-canvas" }, style.value), [
14448
- partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
14452
+ partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14449
14453
  key: 0,
14450
14454
  part: partS.value,
14451
14455
  width: 480
14452
14456
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
14453
- partL.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d)) : vue.createCommentVNode("", true),
14454
- partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
14457
+ partL.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e)) : vue.createCommentVNode("", true),
14458
+ partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14455
14459
  key: 2,
14456
14460
  part: partL.value,
14457
14461
  width: 1024
@@ -14461,9 +14465,9 @@ ${_html.style}
14461
14465
  };
14462
14466
  }
14463
14467
  });
14464
- const _hoisted_1$c = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14465
- const _hoisted_2$c = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14466
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14468
+ const _hoisted_1$d = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14469
+ const _hoisted_2$d = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14470
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14467
14471
  __name: "PageBuilderEditor",
14468
14472
  props: {
14469
14473
  instanceId: {},
@@ -14506,22 +14510,22 @@ ${_html.style}
14506
14510
  getPageContent
14507
14511
  });
14508
14512
  return (_ctx, _cache) => {
14509
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14510
- vue.createVNode(_sfc_main$l, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14511
- vue.createElementVNode("div", _hoisted_2$c, [
14512
- vue.createVNode(_sfc_main$k),
14513
- vue.createVNode(_sfc_main$d),
14514
- vue.createVNode(_sfc_main$g)
14513
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14514
+ vue.createVNode(_sfc_main$m, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14515
+ vue.createElementVNode("div", _hoisted_2$d, [
14516
+ vue.createVNode(_sfc_main$l),
14517
+ vue.createVNode(_sfc_main$e),
14518
+ vue.createVNode(_sfc_main$h)
14515
14519
  ])
14516
14520
  ]);
14517
14521
  };
14518
14522
  }
14519
14523
  });
14520
- const _hoisted_1$b = { class: "property-editor property-editor-readonly-text" };
14521
- const _hoisted_2$b = { class: "title" };
14522
- const _hoisted_3$9 = ["textContent"];
14524
+ const _hoisted_1$c = { class: "property-editor property-editor-readonly-text" };
14525
+ const _hoisted_2$c = { class: "title" };
14526
+ const _hoisted_3$a = ["textContent"];
14523
14527
  const _hoisted_4$3 = ["textContent"];
14524
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14528
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14525
14529
  __name: "PbPropertyEditorReadonlyText",
14526
14530
  props: {
14527
14531
  property: {},
@@ -14529,11 +14533,11 @@ ${_html.style}
14529
14533
  },
14530
14534
  setup(__props) {
14531
14535
  return (_ctx, _cache) => {
14532
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14533
- vue.createElementVNode("div", _hoisted_2$b, [
14536
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14537
+ vue.createElementVNode("div", _hoisted_2$c, [
14534
14538
  vue.createElementVNode("label", {
14535
14539
  textContent: vue.toDisplayString(_ctx.property.caption)
14536
- }, null, 8, _hoisted_3$9)
14540
+ }, null, 8, _hoisted_3$a)
14537
14541
  ]),
14538
14542
  vue.createElementVNode("div", null, [
14539
14543
  vue.createElementVNode("div", {
@@ -14546,12 +14550,12 @@ ${_html.style}
14546
14550
  });
14547
14551
  const PbPropertyEditorReadonlyText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14548
14552
  __proto__: null,
14549
- default: _sfc_main$b
14553
+ default: _sfc_main$c
14550
14554
  }, Symbol.toStringTag, { value: "Module" }));
14551
- const _hoisted_1$a = { class: "property-editor property-editor-text flex-align-center" };
14552
- const _hoisted_2$a = { class: "title" };
14553
- const _hoisted_3$8 = ["textContent"];
14554
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14555
+ const _hoisted_1$b = { class: "property-editor property-editor-text flex-align-center" };
14556
+ const _hoisted_2$b = { class: "title" };
14557
+ const _hoisted_3$9 = ["textContent"];
14558
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14555
14559
  __name: "PbPropertyEditorText",
14556
14560
  props: {
14557
14561
  property: {},
@@ -14569,11 +14573,11 @@ ${_html.style}
14569
14573
  emit("update-property-value", properties);
14570
14574
  };
14571
14575
  return (_ctx, _cache) => {
14572
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14573
- vue.createElementVNode("div", _hoisted_2$a, [
14576
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14577
+ vue.createElementVNode("div", _hoisted_2$b, [
14574
14578
  vue.createElementVNode("label", {
14575
14579
  textContent: vue.toDisplayString(_ctx.property.caption)
14576
- }, null, 8, _hoisted_3$8)
14580
+ }, null, 8, _hoisted_3$9)
14577
14581
  ]),
14578
14582
  vue.createElementVNode("div", null, [
14579
14583
  _ctx.property.multiLang ? (vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSMultiLangTextInput), {
@@ -14594,6 +14598,46 @@ ${_html.style}
14594
14598
  }
14595
14599
  });
14596
14600
  const PbPropertyEditorText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14601
+ __proto__: null,
14602
+ default: _sfc_main$b
14603
+ }, Symbol.toStringTag, { value: "Module" }));
14604
+ const _hoisted_1$a = { class: "property-editor property-editor-number flex-align-center" };
14605
+ const _hoisted_2$a = { class: "title" };
14606
+ const _hoisted_3$8 = ["textContent"];
14607
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14608
+ __name: "PbPropertyEditorNumber",
14609
+ props: {
14610
+ property: {},
14611
+ value: {}
14612
+ },
14613
+ emits: ["update-property-value"],
14614
+ setup(__props, { emit: __emit }) {
14615
+ const props = __props;
14616
+ const emit = __emit;
14617
+ const emitUpdatePropertyValue = (value) => {
14618
+ const properties = {};
14619
+ properties[props.property.propertyName] = `${value}`;
14620
+ emit("update-property-value", properties);
14621
+ };
14622
+ return (_ctx, _cache) => {
14623
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14624
+ vue.createElementVNode("div", _hoisted_2$a, [
14625
+ vue.createElementVNode("label", {
14626
+ textContent: vue.toDisplayString(_ctx.property.caption)
14627
+ }, null, 8, _hoisted_3$8)
14628
+ ]),
14629
+ vue.createElementVNode("div", null, [
14630
+ vue.createVNode(vue.unref(bluesea.BSNumberInput), {
14631
+ "model-value": Number(_ctx.value),
14632
+ width: "100%",
14633
+ "onUpdate:modelValue": emitUpdatePropertyValue
14634
+ }, null, 8, ["model-value"])
14635
+ ])
14636
+ ]);
14637
+ };
14638
+ }
14639
+ });
14640
+ const PbPropertyEditorNumber = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14597
14641
  __proto__: null,
14598
14642
  default: _sfc_main$a
14599
14643
  }, Symbol.toStringTag, { value: "Module" }));
@@ -14916,7 +14960,7 @@ ${_html.style}
14916
14960
  };
14917
14961
  return (_ctx, _cache) => {
14918
14962
  return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), {
14919
- class: "pb-html-editor-modal",
14963
+ class: "pb-youtube-modal",
14920
14964
  title: "Youtube Video"
14921
14965
  }, {
14922
14966
  default: vue.withCtx(() => [
@@ -15292,12 +15336,12 @@ ${_html.tags}` : "";
15292
15336
  exports2.PAGE_BUILDER_KEY = PAGE_BUILDER_KEY;
15293
15337
  exports2.PAGE_TYPE = PAGE_TYPE$1;
15294
15338
  exports2.Page = Page;
15295
- exports2.PageBuilderEditor = _sfc_main$c;
15339
+ exports2.PageBuilderEditor = _sfc_main$d;
15296
15340
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
15297
15341
  exports2.PageBuilderViewer = _sfc_main$2$1;
15298
15342
  exports2.Part = Part;
15299
15343
  exports2.PbContainerWidget = _sfc_main$1$1;
15300
- exports2.PbCustomWidget = _sfc_main$C;
15344
+ exports2.PbCustomWidget = _sfc_main$D;
15301
15345
  exports2.PbHtmlWidget = _sfc_main$6$1;
15302
15346
  exports2.PbIframeWidget = _sfc_main$5$1;
15303
15347
  exports2.PbImageWidget = _sfc_main$8$1;