@g1cloud/page-builder-editor 1.0.0-alpha.12 → 1.0.0-alpha.14

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.
@@ -7199,8 +7199,8 @@ ${_html.style}
7199
7199
  }
7200
7200
  };
7201
7201
  const _hoisted_1$1$1 = { class: "pb-product-list-widget" };
7202
- const _hoisted_2$v = { class: "product" };
7203
- const _hoisted_3$s = { class: "image" };
7202
+ const _hoisted_2$w = { class: "product" };
7203
+ const _hoisted_3$t = { class: "image" };
7204
7204
  const _hoisted_4$i = ["src"];
7205
7205
  const _hoisted_5$8 = { class: "name" };
7206
7206
  const _hoisted_6$7 = { class: "price" };
@@ -7246,9 +7246,9 @@ ${_html.style}
7246
7246
  key: index,
7247
7247
  class: "product-wrapper"
7248
7248
  }, [
7249
- vue.createElementVNode("div", _hoisted_2$v, [
7249
+ vue.createElementVNode("div", _hoisted_2$w, [
7250
7250
  products.value[index - 1] ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
7251
- vue.createElementVNode("div", _hoisted_3$s, [
7251
+ vue.createElementVNode("div", _hoisted_3$t, [
7252
7252
  vue.createElementVNode("img", {
7253
7253
  src: products.value[index - 1].image,
7254
7254
  alt: ""
@@ -7434,8 +7434,8 @@ ${_html.style}
7434
7434
  };
7435
7435
  }
7436
7436
  });
7437
- const _hoisted_1$E = { class: "pb-viewer" };
7438
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
7437
+ const _hoisted_1$G = { class: "pb-viewer" };
7438
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
7439
7439
  __name: "PageBuilderViewer",
7440
7440
  props: {
7441
7441
  instanceId: {},
@@ -7465,7 +7465,7 @@ ${_html.style}
7465
7465
  }
7466
7466
  );
7467
7467
  return (_ctx, _cache) => {
7468
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [
7468
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [
7469
7469
  page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1$1, {
7470
7470
  key: 0,
7471
7471
  "is-mobile-page": _ctx.isMobilePage,
@@ -7522,8 +7522,9 @@ ${_html.style}
7522
7522
  object.partName = part.partName;
7523
7523
  object.partId = part.partId;
7524
7524
  if (part.properties) {
7525
+ object.properties = {};
7525
7526
  for (const name in part.properties) {
7526
- object[name] = part.properties[name];
7527
+ object.properties[name] = part.properties[name];
7527
7528
  }
7528
7529
  }
7529
7530
  if (part.children) {
@@ -7708,21 +7709,12 @@ ${_html.style}
7708
7709
  this.yjsDoc = new Doc();
7709
7710
  this.yjsRoot = this.yjsDoc.get("root", YXmlElement);
7710
7711
  const rootPartId = getNewPartId();
7711
- const pages = [];
7712
7712
  this.yjsDoc.transact(() => {
7713
7713
  this.yjsRoot.nodeName = ROOT_TYPE;
7714
7714
  this.yjsRoot.setAttribute(PART_ID_KEY, rootPartId);
7715
- for (let i = 0; i < 3; ++i) {
7716
- const pageElement = new YXmlElement(PAGE_TYPE);
7717
- pageElement.setAttribute(PART_NAME_KEY, PAGE_TYPE);
7718
- pageElement.setAttribute(PART_ID_KEY, getNewPartId());
7719
- this.yjsRoot.push([pageElement]);
7720
- pages.push(new Page());
7721
- }
7722
7715
  });
7723
7716
  this.rootPart = vue.reactive(new RootPart());
7724
7717
  this.rootPart.partId = rootPartId;
7725
- this.rootPart.children = pages;
7726
7718
  this.yjsRoot.observeDeep((events, _) => {
7727
7719
  applyChangeEvents(this.rootPart, events);
7728
7720
  this.emitUpdateModelEvent(events);
@@ -8303,22 +8295,22 @@ ${_html.style}
8303
8295
  }
8304
8296
  return target;
8305
8297
  };
8306
- const _sfc_main$A = {};
8307
- const _hoisted_1$D = { class: "pb-add-widget-button" };
8308
- const _hoisted_2$u = /* @__PURE__ */ vue.createElementVNode("span", { class: "icon material-icons-outlined" }, "add_box", -1);
8309
- const _hoisted_3$r = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "Add Widget", -1);
8298
+ const _sfc_main$B = {};
8299
+ const _hoisted_1$F = { class: "pb-add-widget-button" };
8300
+ const _hoisted_2$v = /* @__PURE__ */ vue.createElementVNode("span", { class: "icon material-icons-outlined" }, "add_box", -1);
8301
+ const _hoisted_3$s = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "Add Widget", -1);
8310
8302
  const _hoisted_4$h = [
8311
- _hoisted_2$u,
8312
- _hoisted_3$r
8303
+ _hoisted_2$v,
8304
+ _hoisted_3$s
8313
8305
  ];
8314
8306
  function _sfc_render$1(_ctx, _cache) {
8315
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
8307
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
8316
8308
  vue.createElementVNode("button", {
8317
8309
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8318
8310
  }, _hoisted_4$h)
8319
8311
  ]);
8320
8312
  }
8321
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$1]]);
8313
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$1]]);
8322
8314
  const MOUSE_TRACKER_KEY = "mouseTracker";
8323
8315
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8324
8316
  class MouseTracker {
@@ -8349,12 +8341,12 @@ ${_html.style}
8349
8341
  throw Error(MOUSE_TRACKER_NOT_FOUND);
8350
8342
  return mouseTracker;
8351
8343
  };
8352
- const _hoisted_1$C = ["data-model-id", "draggable"];
8353
- const _hoisted_2$t = {
8344
+ const _hoisted_1$E = ["data-model-id", "draggable"];
8345
+ const _hoisted_2$u = {
8354
8346
  key: 1,
8355
8347
  class: "children"
8356
8348
  };
8357
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
8349
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8358
8350
  __name: "PbWidget",
8359
8351
  props: {
8360
8352
  part: {}
@@ -8800,7 +8792,7 @@ ${_html.style}
8800
8792
  key: 0,
8801
8793
  part: _ctx.part
8802
8794
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
8803
- childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$t, [
8795
+ childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$u, [
8804
8796
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
8805
8797
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
8806
8798
  key: child.part.partId,
@@ -8818,14 +8810,14 @@ ${_html.style}
8818
8810
  class: "resize-handle",
8819
8811
  onMousedown: _resize_mousedown
8820
8812
  }, null, 32)) : vue.createCommentVNode("", true)
8821
- ], 16, _hoisted_1$C)), [
8813
+ ], 16, _hoisted_1$E)), [
8822
8814
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8823
8815
  ]);
8824
8816
  };
8825
8817
  }
8826
8818
  });
8827
- const _hoisted_1$B = ["data-model-id"];
8828
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
8819
+ const _hoisted_1$D = ["data-model-id"];
8820
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
8829
8821
  __name: "PbBlock",
8830
8822
  props: {
8831
8823
  part: {}
@@ -9015,19 +9007,19 @@ ${_html.style}
9015
9007
  onAddWidget: addWidget
9016
9008
  })) : vue.createCommentVNode("", true),
9017
9009
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9018
- return vue.openBlock(), vue.createBlock(_sfc_main$z, {
9010
+ return vue.openBlock(), vue.createBlock(_sfc_main$A, {
9019
9011
  key: child.partId,
9020
9012
  part: child
9021
9013
  }, null, 8, ["part"]);
9022
9014
  }), 128))
9023
- ], 16, _hoisted_1$B)), [
9015
+ ], 16, _hoisted_1$D)), [
9024
9016
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9025
9017
  ]);
9026
9018
  };
9027
9019
  }
9028
9020
  });
9029
- const _hoisted_1$A = { class: "pb-block" };
9030
- const _hoisted_2$s = /* @__PURE__ */ vue.createElementVNode("div", {
9021
+ const _hoisted_1$C = { class: "pb-block" };
9022
+ const _hoisted_2$t = /* @__PURE__ */ vue.createElementVNode("div", {
9031
9023
  class: "pb-widget",
9032
9024
  style: { "margin": "0 auto" }
9033
9025
  }, [
@@ -9035,22 +9027,22 @@ ${_html.style}
9035
9027
  /* @__PURE__ */ vue.createElementVNode("h3", null, "Login Design Part")
9036
9028
  ])
9037
9029
  ], -1);
9038
- const _hoisted_3$q = [
9039
- _hoisted_2$s
9030
+ const _hoisted_3$r = [
9031
+ _hoisted_2$t
9040
9032
  ];
9041
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9033
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9042
9034
  __name: "PbLoginDepart",
9043
9035
  props: {
9044
9036
  part: {}
9045
9037
  },
9046
9038
  setup(__props) {
9047
9039
  return (_ctx, _cache) => {
9048
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, _hoisted_3$q);
9040
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, _hoisted_3$r);
9049
9041
  };
9050
9042
  }
9051
9043
  });
9052
- const _hoisted_1$z = ["data-model-id"];
9053
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9044
+ const _hoisted_1$B = ["data-model-id"];
9045
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9054
9046
  __name: "PbSection",
9055
9047
  props: {
9056
9048
  part: {}
@@ -9161,13 +9153,13 @@ ${_html.style}
9161
9153
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9162
9154
  }, properties.value), [
9163
9155
  ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9164
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$x, {
9156
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
9165
9157
  key: 0,
9166
9158
  part: _ctx.part
9167
9159
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9168
9160
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9169
9161
  _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9170
- return vue.openBlock(), vue.createBlock(_sfc_main$y, {
9162
+ return vue.openBlock(), vue.createBlock(_sfc_main$z, {
9171
9163
  key: block.partId,
9172
9164
  part: block
9173
9165
  }, null, 8, ["part"]);
@@ -9176,15 +9168,15 @@ ${_html.style}
9176
9168
  onAddWidget: addWidget
9177
9169
  }))
9178
9170
  ], 64))
9179
- ], 16, _hoisted_1$z)), [
9171
+ ], 16, _hoisted_1$B)), [
9180
9172
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9181
9173
  ]);
9182
9174
  };
9183
9175
  }
9184
9176
  });
9185
- const _hoisted_1$y = { class: "group-editor group-editor-position" };
9186
- const _hoisted_2$r = { class: "flex-align-center" };
9187
- const _hoisted_3$p = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9177
+ const _hoisted_1$A = { class: "group-editor group-editor-position" };
9178
+ const _hoisted_2$s = { class: "flex-align-center" };
9179
+ const _hoisted_3$q = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9188
9180
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Position" })
9189
9181
  ], -1);
9190
9182
  const _hoisted_4$g = { class: "flex-grow-1" };
@@ -9198,7 +9190,7 @@ ${_html.style}
9198
9190
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
9199
9191
  ], -1);
9200
9192
  const _hoisted_9$5 = { class: "text-center" };
9201
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9193
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9202
9194
  __name: "PbPropertyGroupEditorPosition",
9203
9195
  props: {
9204
9196
  group: {},
@@ -9222,9 +9214,9 @@ ${_html.style}
9222
9214
  const updateTop = (value) => updatePropertyValue({ top: value });
9223
9215
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9224
9216
  return (_ctx, _cache) => {
9225
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9226
- vue.createElementVNode("div", _hoisted_2$r, [
9227
- _hoisted_3$p,
9217
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9218
+ vue.createElementVNode("div", _hoisted_2$s, [
9219
+ _hoisted_3$q,
9228
9220
  vue.createElementVNode("div", _hoisted_4$g, [
9229
9221
  vue.createElementVNode("div", _hoisted_5$7, [
9230
9222
  vue.createElementVNode("div", _hoisted_6$6, [
@@ -9269,13 +9261,13 @@ ${_html.style}
9269
9261
  };
9270
9262
  }
9271
9263
  });
9272
- const _hoisted_1$x = { class: "group-editor group-editor-size" };
9273
- const _hoisted_2$q = { class: "flex-align-center" };
9274
- const _hoisted_3$o = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9264
+ const _hoisted_1$z = { class: "group-editor group-editor-size" };
9265
+ const _hoisted_2$r = { class: "flex-align-center" };
9266
+ const _hoisted_3$p = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9275
9267
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Size" })
9276
9268
  ], -1);
9277
9269
  const _hoisted_4$f = { class: "flex-grow-1 bs-layout-horizontal" };
9278
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
9270
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9279
9271
  __name: "PbPropertyGroupEditorSize",
9280
9272
  props: {
9281
9273
  group: {},
@@ -9295,9 +9287,9 @@ ${_html.style}
9295
9287
  const updateWidth = (value) => updatePropertyValue({ width: value });
9296
9288
  const updateHeight = (value) => updatePropertyValue({ height: value });
9297
9289
  return (_ctx, _cache) => {
9298
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
9299
- vue.createElementVNode("div", _hoisted_2$q, [
9300
- _hoisted_3$o,
9290
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9291
+ vue.createElementVNode("div", _hoisted_2$r, [
9292
+ _hoisted_3$p,
9301
9293
  vue.createElementVNode("div", _hoisted_4$f, [
9302
9294
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9303
9295
  "model-value": width.value,
@@ -9474,9 +9466,9 @@ ${_html.style}
9474
9466
  }
9475
9467
  }
9476
9468
  };
9477
- const _hoisted_1$w = { class: "vc-alpha" };
9478
- const _hoisted_2$p = { class: "vc-alpha-checkboard-wrap" };
9479
- const _hoisted_3$n = /* @__PURE__ */ vue.createElementVNode(
9469
+ const _hoisted_1$y = { class: "vc-alpha" };
9470
+ const _hoisted_2$q = { class: "vc-alpha-checkboard-wrap" };
9471
+ const _hoisted_3$o = /* @__PURE__ */ vue.createElementVNode(
9480
9472
  "div",
9481
9473
  { class: "vc-alpha-picker" },
9482
9474
  null,
@@ -9484,12 +9476,12 @@ ${_html.style}
9484
9476
  /* HOISTED */
9485
9477
  );
9486
9478
  const _hoisted_4$e = [
9487
- _hoisted_3$n
9479
+ _hoisted_3$o
9488
9480
  ];
9489
9481
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9490
9482
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9491
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
9492
- vue.createElementVNode("div", _hoisted_2$p, [
9483
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9484
+ vue.createElementVNode("div", _hoisted_2$q, [
9493
9485
  vue.createVNode(_component_Checkboard)
9494
9486
  ]),
9495
9487
  vue.createElementVNode(
@@ -10592,12 +10584,12 @@ ${_html.style}
10592
10584
  // }
10593
10585
  }
10594
10586
  };
10595
- const _hoisted_1$v = { class: "vc-editable-input" };
10596
- const _hoisted_2$o = ["aria-labelledby"];
10597
- const _hoisted_3$m = ["id", "for"];
10587
+ const _hoisted_1$x = { class: "vc-editable-input" };
10588
+ const _hoisted_2$p = ["aria-labelledby"];
10589
+ const _hoisted_3$n = ["id", "for"];
10598
10590
  const _hoisted_4$d = { class: "vc-input__desc" };
10599
10591
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10600
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
10592
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
10601
10593
  vue.withDirectives(vue.createElementVNode("input", {
10602
10594
  ref: "input",
10603
10595
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10605,14 +10597,14 @@ ${_html.style}
10605
10597
  class: "vc-input__input",
10606
10598
  onKeydown: _cache[1] || (_cache[1] = (...args) => $options.handleKeyDown && $options.handleKeyDown(...args)),
10607
10599
  onInput: _cache[2] || (_cache[2] = (...args) => $options.update && $options.update(...args))
10608
- }, null, 40, _hoisted_2$o), [
10600
+ }, null, 40, _hoisted_2$p), [
10609
10601
  [vue.vModelText, $options.val]
10610
10602
  ]),
10611
10603
  vue.createElementVNode("span", {
10612
10604
  id: $options.labelId,
10613
10605
  for: $props.label,
10614
10606
  class: "vc-input__label"
10615
- }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$m),
10607
+ }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$n),
10616
10608
  vue.createElementVNode(
10617
10609
  "span",
10618
10610
  _hoisted_4$d,
@@ -10692,21 +10684,21 @@ ${_html.style}
10692
10684
  }
10693
10685
  }
10694
10686
  };
10695
- const _hoisted_1$u = /* @__PURE__ */ vue.createElementVNode(
10687
+ const _hoisted_1$w = /* @__PURE__ */ vue.createElementVNode(
10696
10688
  "div",
10697
10689
  { class: "vc-saturation--white" },
10698
10690
  null,
10699
10691
  -1
10700
10692
  /* HOISTED */
10701
10693
  );
10702
- const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10694
+ const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode(
10703
10695
  "div",
10704
10696
  { class: "vc-saturation--black" },
10705
10697
  null,
10706
10698
  -1
10707
10699
  /* HOISTED */
10708
10700
  );
10709
- const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
10701
+ const _hoisted_3$m = /* @__PURE__ */ vue.createElementVNode(
10710
10702
  "div",
10711
10703
  { class: "vc-saturation-circle" },
10712
10704
  null,
@@ -10714,7 +10706,7 @@ ${_html.style}
10714
10706
  /* HOISTED */
10715
10707
  );
10716
10708
  const _hoisted_4$c = [
10717
- _hoisted_3$l
10709
+ _hoisted_3$m
10718
10710
  ];
10719
10711
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10720
10712
  return vue.openBlock(), vue.createElementBlock(
@@ -10728,8 +10720,8 @@ ${_html.style}
10728
10720
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10729
10721
  },
10730
10722
  [
10731
- _hoisted_1$u,
10732
- _hoisted_2$n,
10723
+ _hoisted_1$w,
10724
+ _hoisted_2$o,
10733
10725
  vue.createElementVNode(
10734
10726
  "div",
10735
10727
  {
@@ -10877,16 +10869,16 @@ ${_html.style}
10877
10869
  }
10878
10870
  }
10879
10871
  };
10880
- const _hoisted_1$t = ["aria-valuenow"];
10881
- const _hoisted_2$m = /* @__PURE__ */ vue.createElementVNode(
10872
+ const _hoisted_1$v = ["aria-valuenow"];
10873
+ const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10882
10874
  "div",
10883
10875
  { class: "vc-hue-picker" },
10884
10876
  null,
10885
10877
  -1
10886
10878
  /* HOISTED */
10887
10879
  );
10888
- const _hoisted_3$k = [
10889
- _hoisted_2$m
10880
+ const _hoisted_3$l = [
10881
+ _hoisted_2$n
10890
10882
  ];
10891
10883
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
10892
10884
  return vue.openBlock(), vue.createElementBlock(
@@ -10913,11 +10905,11 @@ ${_html.style}
10913
10905
  style: vue.normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),
10914
10906
  role: "presentation"
10915
10907
  },
10916
- _hoisted_3$k,
10908
+ _hoisted_3$l,
10917
10909
  4
10918
10910
  /* STYLE */
10919
10911
  )
10920
- ], 40, _hoisted_1$t)
10912
+ ], 40, _hoisted_1$v)
10921
10913
  ],
10922
10914
  2
10923
10915
  /* CLASS */
@@ -11013,9 +11005,9 @@ ${_html.style}
11013
11005
  }
11014
11006
  }
11015
11007
  };
11016
- const _hoisted_1$s = { class: "vc-sketch-saturation-wrap" };
11017
- const _hoisted_2$l = { class: "vc-sketch-controls" };
11018
- const _hoisted_3$j = { class: "vc-sketch-sliders" };
11008
+ const _hoisted_1$u = { class: "vc-sketch-saturation-wrap" };
11009
+ const _hoisted_2$m = { class: "vc-sketch-controls" };
11010
+ const _hoisted_3$k = { class: "vc-sketch-sliders" };
11019
11011
  const _hoisted_4$b = { class: "vc-sketch-hue-wrap" };
11020
11012
  const _hoisted_5$6 = {
11021
11013
  key: 0,
@@ -11056,14 +11048,14 @@ ${_html.style}
11056
11048
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
11057
11049
  },
11058
11050
  [
11059
- vue.createElementVNode("div", _hoisted_1$s, [
11051
+ vue.createElementVNode("div", _hoisted_1$u, [
11060
11052
  vue.createVNode(_component_Saturation, {
11061
11053
  value: _ctx.colors,
11062
11054
  onChange: $options.childChange
11063
11055
  }, null, 8, ["value", "onChange"])
11064
11056
  ]),
11065
- vue.createElementVNode("div", _hoisted_2$l, [
11066
- vue.createElementVNode("div", _hoisted_3$j, [
11057
+ vue.createElementVNode("div", _hoisted_2$m, [
11058
+ vue.createElementVNode("div", _hoisted_3$k, [
11067
11059
  vue.createElementVNode("div", _hoisted_4$b, [
11068
11060
  vue.createVNode(_component_Hue, {
11069
11061
  value: _ctx.colors,
@@ -11168,7 +11160,7 @@ ${_html.style}
11168
11160
  script.render = render;
11169
11161
  script.__file = "src/components/sketch/sketch.vue";
11170
11162
  script.install = install;
11171
- const _sfc_main$t = vue.defineComponent({
11163
+ const _sfc_main$u = vue.defineComponent({
11172
11164
  name: "PbColorPicker",
11173
11165
  components: {
11174
11166
  Sketch: script
@@ -11232,10 +11224,10 @@ ${_html.style}
11232
11224
  };
11233
11225
  }
11234
11226
  });
11235
- const _hoisted_1$r = { class: "buttons" };
11236
- const _hoisted_2$k = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1);
11237
- const _hoisted_3$i = [
11238
- _hoisted_2$k
11227
+ const _hoisted_1$t = { class: "buttons" };
11228
+ const _hoisted_2$l = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1);
11229
+ const _hoisted_3$j = [
11230
+ _hoisted_2$l
11239
11231
  ];
11240
11232
  const _hoisted_4$a = { class: "sketch-wrap" };
11241
11233
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -11246,7 +11238,7 @@ ${_html.style}
11246
11238
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11247
11239
  }, ["stop"]))
11248
11240
  }, [
11249
- vue.createElementVNode("div", _hoisted_1$r, [
11241
+ vue.createElementVNode("div", _hoisted_1$t, [
11250
11242
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11251
11243
  vue.createElementVNode("button", {
11252
11244
  class: vue.normalizeClass([{ none: !_ctx.color }, "pb-button picker-button"]),
@@ -11258,7 +11250,7 @@ ${_html.style}
11258
11250
  key: 0,
11259
11251
  class: "pb-button",
11260
11252
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.emptyColor && _ctx.emptyColor(...args))
11261
- }, _hoisted_3$i)) : vue.createCommentVNode("", true)
11253
+ }, _hoisted_3$j)) : vue.createCommentVNode("", true)
11262
11254
  ]),
11263
11255
  vue.createElementVNode("div", _hoisted_4$a, [
11264
11256
  _ctx.isShowColorPicker ? (vue.openBlock(), vue.createBlock(_component_Sketch, {
@@ -11272,15 +11264,15 @@ ${_html.style}
11272
11264
  [_directive_click_outside, () => _ctx.toggle(false)]
11273
11265
  ]);
11274
11266
  }
11275
- const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render]]);
11276
- const _hoisted_1$q = { class: "group-editor group-editor-background" };
11277
- const _hoisted_2$j = { class: "flex-align-center" };
11278
- const _hoisted_3$h = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11267
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render]]);
11268
+ const _hoisted_1$s = { class: "group-editor group-editor-background" };
11269
+ const _hoisted_2$k = { class: "flex-align-center" };
11270
+ const _hoisted_3$i = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11279
11271
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Background" })
11280
11272
  ], -1);
11281
11273
  const _hoisted_4$9 = { class: "bs-layout-horizontal" };
11282
11274
  const _hoisted_5$5 = { class: "color" };
11283
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11275
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11284
11276
  __name: "PbPropertyGroupEditorBackground",
11285
11277
  props: {
11286
11278
  group: {},
@@ -11310,9 +11302,9 @@ ${_html.style}
11310
11302
  });
11311
11303
  };
11312
11304
  return (_ctx, _cache) => {
11313
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11314
- vue.createElementVNode("div", _hoisted_2$j, [
11315
- _hoisted_3$h,
11305
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11306
+ vue.createElementVNode("div", _hoisted_2$k, [
11307
+ _hoisted_3$i,
11316
11308
  vue.createElementVNode("div", _hoisted_4$9, [
11317
11309
  vue.createElementVNode("div", _hoisted_5$5, [
11318
11310
  vue.createVNode(PbColorPicker, {
@@ -11343,9 +11335,9 @@ ${_html.style}
11343
11335
  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";
11344
11336
  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";
11345
11337
  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";
11346
- const _hoisted_1$p = { class: "group-editor group-editor-border" };
11347
- const _hoisted_2$i = { class: "flex-align-center" };
11348
- const _hoisted_3$g = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11338
+ const _hoisted_1$r = { class: "group-editor group-editor-border" };
11339
+ const _hoisted_2$j = { class: "flex-align-center" };
11340
+ const _hoisted_3$h = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11349
11341
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Border" })
11350
11342
  ], -1);
11351
11343
  const _hoisted_4$8 = { class: "" };
@@ -11376,7 +11368,7 @@ ${_html.style}
11376
11368
  const _hoisted_18 = { class: "bg-gray-100 py-5 rounded-8" };
11377
11369
  const _hoisted_19 = { class: "" };
11378
11370
  const _hoisted_20 = { class: "mt-2" };
11379
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11371
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11380
11372
  __name: "PbPropertyGroupEditorBorder",
11381
11373
  props: {
11382
11374
  group: {},
@@ -11414,9 +11406,9 @@ ${_html.style}
11414
11406
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11415
11407
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11416
11408
  return (_ctx, _cache) => {
11417
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11418
- vue.createElementVNode("div", _hoisted_2$i, [
11419
- _hoisted_3$g,
11409
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11410
+ vue.createElementVNode("div", _hoisted_2$j, [
11411
+ _hoisted_3$h,
11420
11412
  vue.createElementVNode("div", _hoisted_4$8, [
11421
11413
  _hoisted_5$4,
11422
11414
  vue.createElementVNode("div", _hoisted_6$4, [
@@ -11523,9 +11515,9 @@ ${_html.style}
11523
11515
  };
11524
11516
  }
11525
11517
  });
11526
- const _hoisted_1$o = { class: "group-editor group-editor-margin" };
11527
- const _hoisted_2$h = { class: "flex-align-center" };
11528
- const _hoisted_3$f = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11518
+ const _hoisted_1$q = { class: "group-editor group-editor-margin" };
11519
+ const _hoisted_2$i = { class: "flex-align-center" };
11520
+ const _hoisted_3$g = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11529
11521
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Margin" })
11530
11522
  ], -1);
11531
11523
  const _hoisted_4$7 = { class: "flex-grow-1" };
@@ -11539,7 +11531,7 @@ ${_html.style}
11539
11531
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11540
11532
  ], -1);
11541
11533
  const _hoisted_9$2 = { class: "text-center" };
11542
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11534
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11543
11535
  __name: "PbPropertyGroupEditorMargin",
11544
11536
  props: {
11545
11537
  group: {},
@@ -11563,9 +11555,9 @@ ${_html.style}
11563
11555
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11564
11556
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11565
11557
  return (_ctx, _cache) => {
11566
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
11567
- vue.createElementVNode("div", _hoisted_2$h, [
11568
- _hoisted_3$f,
11558
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11559
+ vue.createElementVNode("div", _hoisted_2$i, [
11560
+ _hoisted_3$g,
11569
11561
  vue.createElementVNode("div", _hoisted_4$7, [
11570
11562
  vue.createElementVNode("div", _hoisted_5$3, [
11571
11563
  vue.createElementVNode("div", _hoisted_6$3, [
@@ -11610,9 +11602,9 @@ ${_html.style}
11610
11602
  };
11611
11603
  }
11612
11604
  });
11613
- const _hoisted_1$n = { class: "group-editor group-editor-padding" };
11614
- const _hoisted_2$g = { class: "flex-align-center" };
11615
- const _hoisted_3$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11605
+ const _hoisted_1$p = { class: "group-editor group-editor-padding" };
11606
+ const _hoisted_2$h = { class: "flex-align-center" };
11607
+ const _hoisted_3$f = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11616
11608
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Padding" })
11617
11609
  ], -1);
11618
11610
  const _hoisted_4$6 = { class: "flex-grow-1" };
@@ -11626,7 +11618,7 @@ ${_html.style}
11626
11618
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11627
11619
  ], -1);
11628
11620
  const _hoisted_9$1 = { class: "text-center" };
11629
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
11621
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11630
11622
  __name: "PbPropertyGroupEditorPadding",
11631
11623
  props: {
11632
11624
  group: {},
@@ -11650,9 +11642,9 @@ ${_html.style}
11650
11642
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11651
11643
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11652
11644
  return (_ctx, _cache) => {
11653
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
11654
- vue.createElementVNode("div", _hoisted_2$g, [
11655
- _hoisted_3$e,
11645
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11646
+ vue.createElementVNode("div", _hoisted_2$h, [
11647
+ _hoisted_3$f,
11656
11648
  vue.createElementVNode("div", _hoisted_4$6, [
11657
11649
  vue.createElementVNode("div", _hoisted_5$2, [
11658
11650
  vue.createElementVNode("div", _hoisted_6$2, [
@@ -11723,7 +11715,7 @@ ${_html.style}
11723
11715
  propertyType: "text"
11724
11716
  }
11725
11717
  ],
11726
- propertyGroupEditor: () => _sfc_main$v
11718
+ propertyGroupEditor: () => _sfc_main$w
11727
11719
  };
11728
11720
  };
11729
11721
  const sizeGroup = () => {
@@ -11762,7 +11754,7 @@ ${_html.style}
11762
11754
  propertyType: "text"
11763
11755
  }
11764
11756
  ],
11765
- propertyGroupEditor: () => _sfc_main$u
11757
+ propertyGroupEditor: () => _sfc_main$v
11766
11758
  };
11767
11759
  };
11768
11760
  const marginGroup = () => {
@@ -11791,7 +11783,7 @@ ${_html.style}
11791
11783
  propertyType: "text"
11792
11784
  }
11793
11785
  ],
11794
- propertyGroupEditor: () => _sfc_main$q
11786
+ propertyGroupEditor: () => _sfc_main$r
11795
11787
  };
11796
11788
  };
11797
11789
  const paddingGroup = () => {
@@ -11820,7 +11812,7 @@ ${_html.style}
11820
11812
  propertyType: "text"
11821
11813
  }
11822
11814
  ],
11823
- propertyGroupEditor: () => _sfc_main$p
11815
+ propertyGroupEditor: () => _sfc_main$q
11824
11816
  };
11825
11817
  };
11826
11818
  const commonGroup = () => {
@@ -11887,7 +11879,7 @@ ${_html.style}
11887
11879
  propertyType: "image"
11888
11880
  }
11889
11881
  ],
11890
- propertyGroupEditor: () => _sfc_main$s
11882
+ propertyGroupEditor: () => _sfc_main$t
11891
11883
  };
11892
11884
  };
11893
11885
  const borderGroup = () => {
@@ -11941,7 +11933,7 @@ ${_html.style}
11941
11933
  propertyType: "text"
11942
11934
  }
11943
11935
  ],
11944
- propertyGroupEditor: () => _sfc_main$r
11936
+ propertyGroupEditor: () => _sfc_main$s
11945
11937
  };
11946
11938
  };
11947
11939
  const defaultPropertyGroups = () => {
@@ -11965,7 +11957,7 @@ ${_html.style}
11965
11957
  },
11966
11958
  localized: false,
11967
11959
  allowsChild: () => true,
11968
- creator: () => _sfc_main$w
11960
+ creator: () => _sfc_main$x
11969
11961
  },
11970
11962
  {
11971
11963
  partType: "Section",
@@ -11981,7 +11973,7 @@ ${_html.style}
11981
11973
  },
11982
11974
  localized: true,
11983
11975
  allowsChild: () => true,
11984
- creator: () => _sfc_main$w
11976
+ creator: () => _sfc_main$x
11985
11977
  },
11986
11978
  {
11987
11979
  partType: "Section",
@@ -11997,7 +11989,7 @@ ${_html.style}
11997
11989
  },
11998
11990
  localized: true,
11999
11991
  allowsChild: () => true,
12000
- creator: () => _sfc_main$w
11992
+ creator: () => _sfc_main$x
12001
11993
  }
12002
11994
  ];
12003
11995
  const sectionParts = [
@@ -12014,7 +12006,7 @@ ${_html.style}
12014
12006
  },
12015
12007
  localized: false,
12016
12008
  allowsChild: () => true,
12017
- creator: () => _sfc_main$w
12009
+ creator: () => _sfc_main$x
12018
12010
  }
12019
12011
  ];
12020
12012
  const blockParts = [
@@ -12029,7 +12021,7 @@ ${_html.style}
12029
12021
  initialProperties: {},
12030
12022
  localized: false,
12031
12023
  allowsChild: () => true,
12032
- creator: () => _sfc_main$y
12024
+ creator: () => _sfc_main$z
12033
12025
  }
12034
12026
  ];
12035
12027
  const widgets = [
@@ -13444,6 +13436,40 @@ ${_html.style}
13444
13436
  zoom(scale) {
13445
13437
  this.scale.value = scale;
13446
13438
  }
13439
+ makeSingleScreen(screenToKeep) {
13440
+ var _a;
13441
+ if (!this.model.rootPart.children)
13442
+ return;
13443
+ const screenCount = ((_a = this.model.rootPart.children) == null ? void 0 : _a.length) || 0;
13444
+ if (screenCount !== 2)
13445
+ return;
13446
+ const part = this.model.rootPart.children[screenToKeep === 0 ? 1 : 0];
13447
+ this.model.updateModel({
13448
+ delete: [part.partId]
13449
+ });
13450
+ }
13451
+ makeMultipleScreen() {
13452
+ var _a;
13453
+ if (!this.model.rootPart.children)
13454
+ return;
13455
+ const screenCount = ((_a = this.model.rootPart.children) == null ? void 0 : _a.length) || 0;
13456
+ if (screenCount !== 1)
13457
+ return;
13458
+ const part = this.model.rootPart.children[0];
13459
+ const json = this.model.serializePageModel([part.partId]);
13460
+ const copied = this.model.parsePageModel(json);
13461
+ if (!copied)
13462
+ return;
13463
+ this.model.updateModel({
13464
+ insert: [
13465
+ {
13466
+ partId: this.model.rootPart.partId,
13467
+ index: 1,
13468
+ parts: copied
13469
+ }
13470
+ ]
13471
+ });
13472
+ }
13447
13473
  getEmptyPageContent() {
13448
13474
  const block = new Block();
13449
13475
  const section = new Section();
@@ -13464,11 +13490,11 @@ ${_html.style}
13464
13490
  });
13465
13491
  }
13466
13492
  }
13467
- const _hoisted_1$m = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1);
13468
- const _hoisted_2$f = [
13469
- _hoisted_1$m
13493
+ const _hoisted_1$o = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1);
13494
+ const _hoisted_2$g = [
13495
+ _hoisted_1$o
13470
13496
  ];
13471
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13497
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13472
13498
  __name: "PbPage",
13473
13499
  props: {
13474
13500
  page: {},
@@ -13501,7 +13527,7 @@ ${_html.style}
13501
13527
  class: vue.normalizeClass([selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"])
13502
13528
  }, [
13503
13529
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_a = _ctx.page) == null ? void 0 : _a.children, (section, index) => {
13504
- return vue.openBlock(), vue.createBlock(_sfc_main$w, {
13530
+ return vue.openBlock(), vue.createBlock(_sfc_main$x, {
13505
13531
  key: section.partId,
13506
13532
  part: section
13507
13533
  }, null, 8, ["part"]);
@@ -13513,13 +13539,13 @@ ${_html.style}
13513
13539
  var _a2, _b;
13514
13540
  return insertSection(((_b = (_a2 = _ctx.page) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) || 0);
13515
13541
  })
13516
- }, _hoisted_2$f)
13542
+ }, _hoisted_2$g)
13517
13543
  ], 4);
13518
13544
  };
13519
13545
  }
13520
13546
  });
13521
- const _hoisted_1$l = /* @__PURE__ */ vue.createElementVNode("div", { style: { "width": "20px" } }, null, -1);
13522
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13547
+ const _hoisted_1$n = /* @__PURE__ */ vue.createElementVNode("div", { style: { "width": "20px" } }, null, -1);
13548
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13523
13549
  __name: "PbCanvas",
13524
13550
  setup(__props) {
13525
13551
  const pageBuilder = usePageBuilderEditor();
@@ -13566,13 +13592,13 @@ ${_html.style}
13566
13592
  style: vue.normalizeStyle(style.value),
13567
13593
  class: "pb-canvas"
13568
13594
  }, [
13569
- vue.createVNode(_sfc_main$o, {
13595
+ vue.createVNode(_sfc_main$p, {
13570
13596
  "is-mobile-page": true,
13571
13597
  page: pageS.value,
13572
13598
  width: 420
13573
13599
  }, null, 8, ["page"]),
13574
- _hoisted_1$l,
13575
- vue.createVNode(_sfc_main$o, {
13600
+ _hoisted_1$n,
13601
+ vue.createVNode(_sfc_main$p, {
13576
13602
  "is-mobile-page": false,
13577
13603
  page: pageL.value,
13578
13604
  width: 1024
@@ -13582,9 +13608,9 @@ ${_html.style}
13582
13608
  };
13583
13609
  }
13584
13610
  });
13585
- const canvasStyle = '.pb-page {\n margin: 0 auto;\n margin-top: 20px;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-page .pb-page-content.selected {\n outline: 2px solid #4998f8;\n outline-offset: 5px;\n}\n.pb-page * {\n box-sizing: border-box;\n}\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n.pb-section {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n.pb-section.selected {\n outline: 1px solid #e67e22;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n.pb-section-static .pb-widget {\n outline: none;\n}\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n.pb-block.selected {\n outline: 1px solid #8e44ad;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-widget.selected {\n outline: 2px solid #27ae60;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n}\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n}\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-text-widget .text {\n color: #333;\n}\n.pb-text-widget.empty .text {\n color: #999;\n}\n.pb-image-widget {\n width: 100%;\n}\n.pb-image-widget .image {\n width: 100%;\n}\n.pb-image-widget .empty {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-image-widget .empty span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-html-widget.empty {\n padding: 4px 0;\n font-size: 18px;\n color: #999;\n}\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n.pb-login-widget h3 {\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\nbody {\n background-color: white;\n height: 100%;\n margin: 0;\n}\n.pb-canvas-wrapper {\n padding: 32px 40px 56px 40px;\n height: 100%;\n background-color: #aaa;\n overflow: auto;\n}\n.pb-canvas-wrapper .pb-canvas {\n display: flex;\n flex-direction: row;\n transform-origin: top left;\n width: fit-content;\n min-width: 40px;\n min-height: 40px;\n margin: 0 auto;\n}\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: -20px;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}\n.pb-button {\n background: none;\n border: none;\n cursor: pointer;\n vertical-align: middle;\n}\n.pb-guideline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n.pb-guideline.selected {\n z-index: 3;\n}\n.pb-guideline.preselect {\n z-index: 4;\n}';
13586
- const _hoisted_1$k = { class: "pb-canvas-frame" };
13587
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13611
+ const canvasStyle = '.pb-page {\n margin: 0 auto;\n margin-top: 20px;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-page .pb-page-content.selected {\n outline: 2px solid #4998f8;\n outline-offset: 5px;\n}\n.pb-page * {\n box-sizing: border-box;\n}\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n.pb-section {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n.pb-section.selected {\n outline: 1px solid #e67e22;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n.pb-section-static .pb-widget {\n outline: none;\n}\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n.pb-block.selected {\n outline: 1px solid #8e44ad;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-widget.selected {\n outline: 2px solid #27ae60;\n outline-offset: 1px;\n z-index: 999;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n}\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n}\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-text-widget .text {\n color: #333;\n}\n.pb-text-widget.empty .text {\n color: #999;\n}\n.pb-image-widget {\n width: 100%;\n}\n.pb-image-widget .image {\n width: 100%;\n}\n.pb-image-widget .empty {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-image-widget .empty span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-html-widget.empty {\n padding: 4px 0;\n font-size: 18px;\n color: #999;\n}\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\nbody {\n background-color: white;\n height: 100%;\n margin: 0;\n}\n.pb-canvas-wrapper {\n padding: 32px 40px 56px 40px;\n height: 100%;\n background-color: #aaa;\n overflow: auto;\n}\n.pb-canvas-wrapper .pb-canvas {\n display: flex;\n flex-direction: row;\n transform-origin: top left;\n width: fit-content;\n min-width: 40px;\n min-height: 40px;\n margin: 0 auto;\n}\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: -20px;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}\n.pb-button {\n background: none;\n border: none;\n cursor: pointer;\n vertical-align: middle;\n}\n.pb-guideline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n.pb-guideline.selected {\n z-index: 3;\n}\n.pb-guideline.preselect {\n z-index: 4;\n}';
13612
+ const _hoisted_1$m = { class: "pb-canvas-frame" };
13613
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13588
13614
  __name: "PbCanvasFrame",
13589
13615
  setup(__props) {
13590
13616
  const pageBuilderEditor = usePageBuilderEditor();
@@ -13626,7 +13652,7 @@ ${_html.style}
13626
13652
  );
13627
13653
  return (_ctx, _cache) => {
13628
13654
  var _a, _b, _c, _d;
13629
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
13655
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13630
13656
  vue.createElementVNode("iframe", {
13631
13657
  ref_key: "iframeRef",
13632
13658
  ref: iframeRef,
@@ -13636,14 +13662,14 @@ ${_html.style}
13636
13662
  key: 0,
13637
13663
  to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
13638
13664
  }, [
13639
- vue.createVNode(_sfc_main$n)
13665
+ vue.createVNode(_sfc_main$o)
13640
13666
  ], 8, ["to"])) : vue.createCommentVNode("", true)
13641
13667
  ]);
13642
13668
  };
13643
13669
  }
13644
13670
  });
13645
- const _hoisted_1$j = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13646
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13671
+ const _hoisted_1$l = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13672
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13647
13673
  __name: "PbToolbarButton",
13648
13674
  props: {
13649
13675
  button: {}
@@ -13656,7 +13682,7 @@ ${_html.style}
13656
13682
  (_b = (_a = props.button).handler) == null ? void 0 : _b.call(_a, pageBuilder);
13657
13683
  };
13658
13684
  return (_ctx, _cache) => {
13659
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
13685
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13660
13686
  vue.createElementVNode("div", {
13661
13687
  class: "tool-button bs-clickable",
13662
13688
  onClick: handleClick
@@ -13671,17 +13697,17 @@ ${_html.style}
13671
13697
  };
13672
13698
  }
13673
13699
  });
13674
- const _hoisted_1$i = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13675
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13700
+ const _hoisted_1$k = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13701
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13676
13702
  __name: "PbToolbarButtonGroup",
13677
13703
  props: {
13678
13704
  group: {}
13679
13705
  },
13680
13706
  setup(__props) {
13681
13707
  return (_ctx, _cache) => {
13682
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
13708
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
13683
13709
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.group.buttons, (button) => {
13684
- return vue.openBlock(), vue.createBlock(_sfc_main$l, {
13710
+ return vue.openBlock(), vue.createBlock(_sfc_main$m, {
13685
13711
  key: button.buttonId,
13686
13712
  button
13687
13713
  }, null, 8, ["button"]);
@@ -13690,61 +13716,113 @@ ${_html.style}
13690
13716
  };
13691
13717
  }
13692
13718
  });
13693
- const _hoisted_1$h = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13694
- const _hoisted_2$e = { class: "bs-layout-horizontal" };
13695
- const _hoisted_3$d = /* @__PURE__ */ vue.createElementVNode("div", { class: "flex-grow-1" }, null, -1);
13696
- const _hoisted_4$5 = { class: "ml-8 w-64" };
13697
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
13719
+ const _hoisted_1$j = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13720
+ const _hoisted_2$f = { class: "bs-layout-horizontal align-items-center" };
13721
+ const _hoisted_3$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "flex-grow-1" }, null, -1);
13722
+ const _hoisted_4$5 = { class: "mr-8" };
13723
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13698
13724
  __name: "PbToolbar",
13725
+ props: {
13726
+ plugin: {}
13727
+ },
13699
13728
  setup(__props) {
13700
13729
  const pageBuilder = usePageBuilderEditor();
13701
13730
  const buttonGroups = pageBuilder.toolButtonRegistry.getToolButtonGroups();
13702
- const scale = vue.computed(() => `${Math.round(100 * pageBuilder.scale.value)}%`);
13703
- const zoom = async (scaleString) => {
13704
- if (!scaleString)
13705
- return;
13706
- const scale2 = parseInt(scaleString.replaceAll(/[^0-9]+/g, "")) / 100;
13707
- pageBuilder.zoom(scale2);
13731
+ const modal = bluesea.useModal();
13732
+ const screenCount = vue.computed({
13733
+ get: () => {
13734
+ var _a;
13735
+ return ((_a = pageBuilder.model.rootPart.children) == null ? void 0 : _a.length) || 2;
13736
+ },
13737
+ set: (count) => {
13738
+ var _a;
13739
+ if (!count)
13740
+ return;
13741
+ console.log(count);
13742
+ if (count === (((_a = pageBuilder.model.rootPart.children) == null ? void 0 : _a.length) || 0))
13743
+ return;
13744
+ if (count >= 2) {
13745
+ makeMultipleScreen();
13746
+ } else {
13747
+ makeSingleScreen();
13748
+ }
13749
+ }
13750
+ });
13751
+ const makeMultipleScreen = () => {
13752
+ pageBuilder.makeMultipleScreen();
13708
13753
  };
13754
+ const makeSingleScreen = () => {
13755
+ modal.openModal({
13756
+ component: vue.defineAsyncComponent(() => Promise.resolve().then(() => PbScreenSelectModal)),
13757
+ bind: {},
13758
+ on: {
13759
+ select: (selection) => {
13760
+ pageBuilder.makeSingleScreen(selection);
13761
+ }
13762
+ }
13763
+ });
13764
+ };
13765
+ const scale = vue.computed({
13766
+ get: () => `${Math.round(100 * pageBuilder.scale.value)}%`,
13767
+ set: (value) => {
13768
+ const scale2 = parseInt(value.replaceAll(/[^0-9]+/g, "")) / 100;
13769
+ pageBuilder.zoom(scale2);
13770
+ }
13771
+ });
13709
13772
  return (_ctx, _cache) => {
13710
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
13711
- vue.createElementVNode("div", _hoisted_2$e, [
13773
+ var _a, _b, _c;
13774
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
13775
+ vue.createElementVNode("div", _hoisted_2$f, [
13712
13776
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
13713
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
13777
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
13714
13778
  key: group.groupId,
13715
13779
  group
13716
13780
  }, null, 8, ["group"]);
13717
- }), 128))
13718
- ]),
13719
- _hoisted_3$d,
13720
- vue.createElementVNode("div", _hoisted_4$5, [
13781
+ }), 128)),
13782
+ vue.createVNode(vue.unref(bluesea.BSSelect), {
13783
+ modelValue: screenCount.value,
13784
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => screenCount.value = $event),
13785
+ items: [{ value: 2, label: "Multiple Screen" }, { value: 1, label: "Single Screen" }],
13786
+ "label-provider": (v) => v.label,
13787
+ "value-provider": (v) => v.value,
13788
+ "view-mode": false
13789
+ }, null, 8, ["modelValue", "label-provider", "value-provider"]),
13721
13790
  vue.createVNode(vue.unref(bluesea.BSSelect), {
13722
13791
  modelValue: scale.value,
13723
- "onUpdate:modelValue": [
13724
- _cache[0] || (_cache[0] = ($event) => scale.value = $event),
13725
- zoom
13726
- ],
13792
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => scale.value = $event),
13727
13793
  items: ["100%", "75%", "50%", "25%", "10%"],
13728
13794
  "view-mode": false,
13795
+ class: "ml-4",
13729
13796
  placeholder: "Scale"
13730
13797
  }, null, 8, ["modelValue"])
13798
+ ]),
13799
+ _hoisted_3$e,
13800
+ vue.createElementVNode("div", _hoisted_4$5, [
13801
+ _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)
13731
13802
  ])
13732
13803
  ]);
13733
13804
  };
13734
13805
  }
13735
13806
  });
13736
- const _hoisted_1$g = { class: "pb-menu bs-layout-vertical" };
13737
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13807
+ const _hoisted_1$i = { class: "pb-menu bs-layout-vertical" };
13808
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
13738
13809
  __name: "PbMenu",
13810
+ props: {
13811
+ toolbarPlugin: {}
13812
+ },
13739
13813
  setup(__props) {
13740
13814
  return (_ctx, _cache) => {
13741
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
13742
- vue.createVNode(_sfc_main$j)
13815
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
13816
+ vue.createVNode(_sfc_main$k, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13743
13817
  ]);
13744
13818
  };
13745
13819
  }
13746
13820
  });
13747
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13821
+ const _hoisted_1$h = {
13822
+ key: 1,
13823
+ class: "bs-layout-vertical border"
13824
+ };
13825
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13748
13826
  __name: "PbNavigator",
13749
13827
  setup(__props) {
13750
13828
  const pageBuilder = usePageBuilderEditor();
@@ -13762,8 +13840,18 @@ ${_html.style}
13762
13840
  { tabId: "pageS", caption: "Mobile", icon: "phone_iphone" },
13763
13841
  { tabId: "pageL", caption: "PC", icon: "desktop_windows" }
13764
13842
  ];
13765
- const pageS = vue.computed(() => (pageBuilder.model.rootPart.children || [])[0].children || []);
13766
- const pageL = vue.computed(() => (pageBuilder.model.rootPart.children || [])[1].children || []);
13843
+ const isMultipleScreen = vue.computed(() => {
13844
+ var _a;
13845
+ return (((_a = pageBuilder.model.rootPart.children) == null ? void 0 : _a.length) || 0) >= 2;
13846
+ });
13847
+ const pageS = vue.computed(() => {
13848
+ var _a;
13849
+ return ((_a = (pageBuilder.model.rootPart.children || [])[0]) == null ? void 0 : _a.children) || [];
13850
+ });
13851
+ const pageL = vue.computed(() => {
13852
+ var _a;
13853
+ return ((_a = (pageBuilder.model.rootPart.children || [])[1]) == null ? void 0 : _a.children) || [];
13854
+ });
13767
13855
  const tabId = vue.computed({
13768
13856
  get() {
13769
13857
  const page = pageBuilder.context.getSelectedPage();
@@ -13893,7 +13981,8 @@ ${_html.style}
13893
13981
  PageBuilderEditorEvent.off.modelUpdatedByUI(modelUpdateHandler);
13894
13982
  });
13895
13983
  return (_ctx, _cache) => {
13896
- return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSTabSheet), {
13984
+ return isMultipleScreen.value ? (vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSTabSheet), {
13985
+ key: 0,
13897
13986
  "tab-id": tabId.value,
13898
13987
  "onUpdate:tabId": _cache[4] || (_cache[4] = ($event) => tabId.value = $event),
13899
13988
  tabs
@@ -13959,11 +14048,40 @@ ${_html.style}
13959
14048
  ], 512)
13960
14049
  ]),
13961
14050
  _: 1
13962
- }, 8, ["tab-id"]);
14051
+ }, 8, ["tab-id"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14052
+ vue.createElementVNode("div", {
14053
+ ref_key: "treeS",
14054
+ ref: treeS,
14055
+ class: "pb-navigator",
14056
+ tabindex: "0"
14057
+ }, [
14058
+ vue.createVNode(vue.unref(bluesea.BSTree), {
14059
+ expandedRows: expandedRows.value,
14060
+ "onUpdate:expandedRows": [
14061
+ _cache[5] || (_cache[5] = ($event) => expandedRows.value = $event),
14062
+ expandedRowsChanged
14063
+ ],
14064
+ selectedRows: selectedRows.value,
14065
+ "onUpdate:selectedRows": [
14066
+ _cache[6] || (_cache[6] = ($event) => selectedRows.value = $event),
14067
+ selectedRowsChanged
14068
+ ],
14069
+ data: pageS.value,
14070
+ "enable-drag-and-drop": treeDragAndDropPolicy,
14071
+ "icon-provider": iconProvider,
14072
+ "key-provider": (part) => part.partId,
14073
+ "label-provider": labelProvider,
14074
+ class: "max-w-320",
14075
+ "dont-change-data-when-rowmoved": "",
14076
+ "show-move-button": "",
14077
+ onRowMoved: rowMoved
14078
+ }, null, 8, ["expandedRows", "selectedRows", "data", "key-provider"])
14079
+ ], 512)
14080
+ ]));
13963
14081
  };
13964
14082
  }
13965
14083
  });
13966
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14084
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13967
14085
  __name: "PbSidebarPropertyEditor",
13968
14086
  props: {
13969
14087
  property: {},
@@ -14018,13 +14136,13 @@ ${_html.style}
14018
14136
  };
14019
14137
  }
14020
14138
  });
14021
- const _hoisted_1$f = { class: "pb-sidebar-property-group" };
14022
- const _hoisted_2$d = {
14139
+ const _hoisted_1$g = { class: "pb-sidebar-property-group" };
14140
+ const _hoisted_2$e = {
14023
14141
  key: 0,
14024
14142
  class: "group-title"
14025
14143
  };
14026
- const _hoisted_3$c = ["textContent"];
14027
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14144
+ const _hoisted_3$d = ["textContent"];
14145
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14028
14146
  __name: "PbSidebarPropertyGroupEditor",
14029
14147
  props: {
14030
14148
  group: {},
@@ -14058,11 +14176,11 @@ ${_html.style}
14058
14176
  return (_b = (_a = props.group).propertyGroupEditor) == null ? void 0 : _b.call(_a, props.group, props.selectedParts);
14059
14177
  });
14060
14178
  return (_ctx, _cache) => {
14061
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14062
- _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d, [
14179
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
14180
+ _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
14063
14181
  vue.createElementVNode("label", {
14064
14182
  textContent: vue.toDisplayString(_ctx.group.caption)
14065
- }, null, 8, _hoisted_3$c)
14183
+ }, null, 8, _hoisted_3$d)
14066
14184
  ])) : vue.createCommentVNode("", true),
14067
14185
  _ctx.partsKey ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
14068
14186
  groupEditor.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(groupEditor.value), {
@@ -14070,7 +14188,7 @@ ${_html.style}
14070
14188
  group: _ctx.group,
14071
14189
  "selected-parts": _ctx.selectedParts
14072
14190
  }, null, 8, ["group", "selected-parts"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.group.properties, (property) => {
14073
- return vue.openBlock(), vue.createBlock(_sfc_main$g, {
14191
+ return vue.openBlock(), vue.createBlock(_sfc_main$h, {
14074
14192
  key: `${_ctx.partsKey}_${property.propertyName}`,
14075
14193
  property,
14076
14194
  "selected-parts": _ctx.selectedParts
@@ -14081,17 +14199,17 @@ ${_html.style}
14081
14199
  };
14082
14200
  }
14083
14201
  });
14084
- const _hoisted_1$e = { class: "property-editor property-editor-local-part flex-align-center pt-16" };
14085
- const _hoisted_2$c = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
14202
+ const _hoisted_1$f = { class: "property-editor property-editor-local-part flex-align-center pt-16" };
14203
+ const _hoisted_2$d = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
14086
14204
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Display Schedule" })
14087
14205
  ], -1);
14088
- const _hoisted_3$b = { class: "bs-layout-horizontal" };
14206
+ const _hoisted_3$c = { class: "bs-layout-horizontal" };
14089
14207
  const _hoisted_4$4 = { class: "mr-2" };
14090
14208
  const _hoisted_5$1 = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "more_horiz", -1);
14091
14209
  const _hoisted_6$1 = [
14092
14210
  _hoisted_5$1
14093
14211
  ];
14094
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14212
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14095
14213
  __name: "PbPropertyLocalMarketingPart",
14096
14214
  props: {
14097
14215
  selectedPart: {}
@@ -14160,9 +14278,9 @@ ${_html.style}
14160
14278
  }
14161
14279
  };
14162
14280
  return (_ctx, _cache) => {
14163
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14164
- _hoisted_2$c,
14165
- vue.createElementVNode("div", _hoisted_3$b, [
14281
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14282
+ _hoisted_2$d,
14283
+ vue.createElementVNode("div", _hoisted_3$c, [
14166
14284
  vue.createElementVNode("div", _hoisted_4$4, [
14167
14285
  vue.createVNode(vue.unref(bluesea.BSDateRange), {
14168
14286
  "from-value": startDt.value,
@@ -14179,8 +14297,8 @@ ${_html.style}
14179
14297
  };
14180
14298
  }
14181
14299
  });
14182
- const _hoisted_1$d = { class: "pb-sidebar-properties" };
14183
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14300
+ const _hoisted_1$e = { class: "pb-sidebar-properties" };
14301
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14184
14302
  __name: "PbSidebarProperties",
14185
14303
  setup(__props) {
14186
14304
  const pageBuilder = usePageBuilderEditor();
@@ -14206,8 +14324,8 @@ ${_html.style}
14206
14324
  return part.isLocalMarketingPart();
14207
14325
  });
14208
14326
  return (_ctx, _cache) => {
14209
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14210
- showLocalMarketingPart.value ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
14327
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14328
+ showLocalMarketingPart.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14211
14329
  key: 0,
14212
14330
  "selected-part": vue.unref(selectedParts)[0]
14213
14331
  }, null, 8, ["selected-part"])) : vue.createCommentVNode("", true),
@@ -14215,7 +14333,7 @@ ${_html.style}
14215
14333
  return vue.openBlock(), vue.createElementBlock("div", {
14216
14334
  key: `${partsKey.value}_${group.groupName}`
14217
14335
  }, [
14218
- vue.createVNode(_sfc_main$f, {
14336
+ vue.createVNode(_sfc_main$g, {
14219
14337
  group,
14220
14338
  partsKey: partsKey.value,
14221
14339
  "selected-parts": vue.unref(selectedParts)
@@ -14226,20 +14344,20 @@ ${_html.style}
14226
14344
  };
14227
14345
  }
14228
14346
  });
14229
- const _hoisted_1$c = { class: "pb-sidebar" };
14230
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14347
+ const _hoisted_1$d = { class: "pb-sidebar" };
14348
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14231
14349
  __name: "PbSidebar",
14232
14350
  setup(__props) {
14233
14351
  return (_ctx, _cache) => {
14234
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14235
- vue.createVNode(_sfc_main$d)
14352
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14353
+ vue.createVNode(_sfc_main$e)
14236
14354
  ]);
14237
14355
  };
14238
14356
  }
14239
14357
  });
14240
- const _hoisted_1$b = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14241
- const _hoisted_2$b = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14242
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14358
+ const _hoisted_1$c = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14359
+ const _hoisted_2$c = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14360
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14243
14361
  __name: "PageBuilderEditor",
14244
14362
  props: {
14245
14363
  instanceId: {},
@@ -14247,7 +14365,8 @@ ${_html.style}
14247
14365
  editMode: {},
14248
14366
  pageContent: {},
14249
14367
  locales: {},
14250
- locale: {}
14368
+ locale: {},
14369
+ toolbarPlugin: {}
14251
14370
  },
14252
14371
  setup(__props, { expose: __expose }) {
14253
14372
  const props = __props;
@@ -14329,22 +14448,22 @@ ${_html.style}
14329
14448
  getLocalDesignPartContent
14330
14449
  });
14331
14450
  return (_ctx, _cache) => {
14332
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14333
- vue.createVNode(_sfc_main$i),
14334
- vue.createElementVNode("div", _hoisted_2$b, [
14335
- vue.createVNode(_sfc_main$h),
14336
- vue.createVNode(_sfc_main$m, { class: "flex-grow-1" }),
14337
- vue.createVNode(_sfc_main$c)
14451
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14452
+ vue.createVNode(_sfc_main$j, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14453
+ vue.createElementVNode("div", _hoisted_2$c, [
14454
+ vue.createVNode(_sfc_main$i),
14455
+ vue.createVNode(_sfc_main$n, { class: "flex-grow-1" }),
14456
+ vue.createVNode(_sfc_main$d)
14338
14457
  ])
14339
14458
  ]);
14340
14459
  };
14341
14460
  }
14342
14461
  });
14343
- const _hoisted_1$a = { class: "property-editor property-editor-readonly-text" };
14344
- const _hoisted_2$a = { class: "title" };
14345
- const _hoisted_3$a = ["textContent"];
14462
+ const _hoisted_1$b = { class: "property-editor property-editor-readonly-text" };
14463
+ const _hoisted_2$b = { class: "title" };
14464
+ const _hoisted_3$b = ["textContent"];
14346
14465
  const _hoisted_4$3 = ["textContent"];
14347
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14466
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14348
14467
  __name: "PbPropertyEditorReadonlyText",
14349
14468
  props: {
14350
14469
  property: {},
@@ -14352,11 +14471,11 @@ ${_html.style}
14352
14471
  },
14353
14472
  setup(__props) {
14354
14473
  return (_ctx, _cache) => {
14355
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14356
- vue.createElementVNode("div", _hoisted_2$a, [
14474
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14475
+ vue.createElementVNode("div", _hoisted_2$b, [
14357
14476
  vue.createElementVNode("label", {
14358
14477
  textContent: vue.toDisplayString(_ctx.property.caption)
14359
- }, null, 8, _hoisted_3$a)
14478
+ }, null, 8, _hoisted_3$b)
14360
14479
  ]),
14361
14480
  vue.createElementVNode("div", null, [
14362
14481
  vue.createElementVNode("div", {
@@ -14369,12 +14488,12 @@ ${_html.style}
14369
14488
  });
14370
14489
  const PbPropertyEditorReadonlyText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14371
14490
  __proto__: null,
14372
- default: _sfc_main$a
14491
+ default: _sfc_main$b
14373
14492
  }, Symbol.toStringTag, { value: "Module" }));
14374
- const _hoisted_1$9 = { class: "property-editor property-editor-text flex-align-center" };
14375
- const _hoisted_2$9 = { class: "title" };
14376
- const _hoisted_3$9 = ["textContent"];
14377
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
14493
+ const _hoisted_1$a = { class: "property-editor property-editor-text flex-align-center" };
14494
+ const _hoisted_2$a = { class: "title" };
14495
+ const _hoisted_3$a = ["textContent"];
14496
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14378
14497
  __name: "PbPropertyEditorText",
14379
14498
  props: {
14380
14499
  property: {},
@@ -14390,11 +14509,11 @@ ${_html.style}
14390
14509
  emit("update-property-value", properties);
14391
14510
  };
14392
14511
  return (_ctx, _cache) => {
14393
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
14394
- vue.createElementVNode("div", _hoisted_2$9, [
14512
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14513
+ vue.createElementVNode("div", _hoisted_2$a, [
14395
14514
  vue.createElementVNode("label", {
14396
14515
  textContent: vue.toDisplayString(_ctx.property.caption)
14397
- }, null, 8, _hoisted_3$9)
14516
+ }, null, 8, _hoisted_3$a)
14398
14517
  ]),
14399
14518
  vue.createElementVNode("div", null, [
14400
14519
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
@@ -14409,12 +14528,12 @@ ${_html.style}
14409
14528
  });
14410
14529
  const PbPropertyEditorText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14411
14530
  __proto__: null,
14412
- default: _sfc_main$9
14531
+ default: _sfc_main$a
14413
14532
  }, Symbol.toStringTag, { value: "Module" }));
14414
- const _hoisted_1$8 = { class: "property-editor property-editor-multiline-text" };
14415
- const _hoisted_2$8 = { class: "title" };
14416
- const _hoisted_3$8 = ["textContent"];
14417
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
14533
+ const _hoisted_1$9 = { class: "property-editor property-editor-multiline-text" };
14534
+ const _hoisted_2$9 = { class: "title" };
14535
+ const _hoisted_3$9 = ["textContent"];
14536
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
14418
14537
  __name: "PbPropertyEditorMultilineText",
14419
14538
  props: {
14420
14539
  property: {},
@@ -14440,11 +14559,11 @@ ${_html.style}
14440
14559
  emit("update-property-value", properties);
14441
14560
  };
14442
14561
  return (_ctx, _cache) => {
14443
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
14444
- vue.createElementVNode("div", _hoisted_2$8, [
14562
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
14563
+ vue.createElementVNode("div", _hoisted_2$9, [
14445
14564
  vue.createElementVNode("label", {
14446
14565
  textContent: vue.toDisplayString(_ctx.property.caption)
14447
- }, null, 8, _hoisted_3$8)
14566
+ }, null, 8, _hoisted_3$9)
14448
14567
  ]),
14449
14568
  vue.createElementVNode("div", null, [
14450
14569
  _ctx.property.multiLang ? (vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSMultiLangTextArea), {
@@ -14474,12 +14593,12 @@ ${_html.style}
14474
14593
  });
14475
14594
  const PbPropertyEditorMultilineText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14476
14595
  __proto__: null,
14477
- default: _sfc_main$8
14596
+ default: _sfc_main$9
14478
14597
  }, Symbol.toStringTag, { value: "Module" }));
14479
- const _hoisted_1$7 = { class: "property-editor property-editor-select flex-align-center" };
14480
- const _hoisted_2$7 = { class: "title" };
14481
- const _hoisted_3$7 = ["textContent"];
14482
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
14598
+ const _hoisted_1$8 = { class: "property-editor property-editor-select flex-align-center" };
14599
+ const _hoisted_2$8 = { class: "title" };
14600
+ const _hoisted_3$8 = ["textContent"];
14601
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
14483
14602
  __name: "PbPropertyEditorSelect",
14484
14603
  props: {
14485
14604
  property: {},
@@ -14498,11 +14617,11 @@ ${_html.style}
14498
14617
  emit("update-property-value", properties);
14499
14618
  };
14500
14619
  return (_ctx, _cache) => {
14501
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
14502
- vue.createElementVNode("div", _hoisted_2$7, [
14620
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
14621
+ vue.createElementVNode("div", _hoisted_2$8, [
14503
14622
  vue.createElementVNode("label", {
14504
14623
  textContent: vue.toDisplayString(_ctx.property.caption)
14505
- }, null, 8, _hoisted_3$7)
14624
+ }, null, 8, _hoisted_3$8)
14506
14625
  ]),
14507
14626
  vue.createElementVNode("div", null, [
14508
14627
  vue.createVNode(vue.unref(bluesea.BSSelect), {
@@ -14517,13 +14636,13 @@ ${_html.style}
14517
14636
  });
14518
14637
  const PbPropertyEditorSelect = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14519
14638
  __proto__: null,
14520
- default: _sfc_main$7
14639
+ default: _sfc_main$8
14521
14640
  }, Symbol.toStringTag, { value: "Module" }));
14522
- const _hoisted_1$6 = { class: "property-editor property-editor-color" };
14523
- const _hoisted_2$6 = { class: "title" };
14524
- const _hoisted_3$6 = ["textContent"];
14641
+ const _hoisted_1$7 = { class: "property-editor property-editor-color" };
14642
+ const _hoisted_2$7 = { class: "title" };
14643
+ const _hoisted_3$7 = ["textContent"];
14525
14644
  const _hoisted_4$2 = { class: "bs-layout-horizontal flex-align-center color" };
14526
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
14645
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
14527
14646
  __name: "PbPropertyEditorColor",
14528
14647
  props: {
14529
14648
  property: {},
@@ -14543,11 +14662,11 @@ ${_html.style}
14543
14662
  emit("update-property-value", properties);
14544
14663
  };
14545
14664
  return (_ctx, _cache) => {
14546
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
14547
- vue.createElementVNode("div", _hoisted_2$6, [
14665
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
14666
+ vue.createElementVNode("div", _hoisted_2$7, [
14548
14667
  vue.createElementVNode("label", {
14549
14668
  textContent: vue.toDisplayString(_ctx.property.caption)
14550
- }, null, 8, _hoisted_3$6)
14669
+ }, null, 8, _hoisted_3$7)
14551
14670
  ]),
14552
14671
  vue.createElementVNode("div", _hoisted_4$2, [
14553
14672
  vue.createVNode(PbColorPicker, {
@@ -14572,12 +14691,12 @@ ${_html.style}
14572
14691
  });
14573
14692
  const PbPropertyEditorColor = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14574
14693
  __proto__: null,
14575
- default: _sfc_main$6
14694
+ default: _sfc_main$7
14576
14695
  }, Symbol.toStringTag, { value: "Module" }));
14577
- const _hoisted_1$5 = { class: "property-editor property-editor-image flex-align-center" };
14578
- const _hoisted_2$5 = { class: "title" };
14579
- const _hoisted_3$5 = ["textContent"];
14580
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
14696
+ const _hoisted_1$6 = { class: "property-editor property-editor-image flex-align-center" };
14697
+ const _hoisted_2$6 = { class: "title" };
14698
+ const _hoisted_3$6 = ["textContent"];
14699
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
14581
14700
  __name: "PbPropertyEditorImage",
14582
14701
  props: {
14583
14702
  property: {},
@@ -14597,11 +14716,11 @@ ${_html.style}
14597
14716
  });
14598
14717
  };
14599
14718
  return (_ctx, _cache) => {
14600
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
14601
- vue.createElementVNode("div", _hoisted_2$5, [
14719
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
14720
+ vue.createElementVNode("div", _hoisted_2$6, [
14602
14721
  vue.createElementVNode("label", {
14603
14722
  textContent: vue.toDisplayString(_ctx.property.caption)
14604
- }, null, 8, _hoisted_3$5)
14723
+ }, null, 8, _hoisted_3$6)
14605
14724
  ]),
14606
14725
  vue.createElementVNode("div", null, [
14607
14726
  vue.createElementVNode("button", { onClick: selectImage }, "Select Image")
@@ -14612,12 +14731,12 @@ ${_html.style}
14612
14731
  });
14613
14732
  const PbPropertyEditorImage = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14614
14733
  __proto__: null,
14615
- default: _sfc_main$5
14734
+ default: _sfc_main$6
14616
14735
  }, Symbol.toStringTag, { value: "Module" }));
14617
- const _hoisted_1$4 = { class: "property-editor property-editor-image flex-align-center" };
14618
- const _hoisted_2$4 = { class: "title" };
14619
- const _hoisted_3$4 = ["textContent"];
14620
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
14736
+ const _hoisted_1$5 = { class: "property-editor property-editor-image flex-align-center" };
14737
+ const _hoisted_2$5 = { class: "title" };
14738
+ const _hoisted_3$5 = ["textContent"];
14739
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
14621
14740
  __name: "PbPropertyEditorHtml",
14622
14741
  props: {
14623
14742
  property: {},
@@ -14633,7 +14752,7 @@ ${_html.style}
14633
14752
  const locales = pageBuilder.getLocales();
14634
14753
  const localeTabs = locales.map((v) => ({ tabId: `tab-${v}`, caption: v }));
14635
14754
  modal.openModal({
14636
- component: vue.defineAsyncComponent(() => Promise.resolve().then(() => HtmlEditorModal)),
14755
+ component: vue.defineAsyncComponent(() => Promise.resolve().then(() => PbHtmlEditorModal)),
14637
14756
  style: {
14638
14757
  width: "80%",
14639
14758
  height: "80%",
@@ -14653,11 +14772,11 @@ ${_html.style}
14653
14772
  });
14654
14773
  };
14655
14774
  return (_ctx, _cache) => {
14656
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
14657
- vue.createElementVNode("div", _hoisted_2$4, [
14775
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
14776
+ vue.createElementVNode("div", _hoisted_2$5, [
14658
14777
  vue.createElementVNode("label", {
14659
14778
  textContent: vue.toDisplayString(_ctx.property.caption)
14660
- }, null, 8, _hoisted_3$4)
14779
+ }, null, 8, _hoisted_3$5)
14661
14780
  ]),
14662
14781
  vue.createElementVNode("div", null, [
14663
14782
  vue.createElementVNode("button", { onClick: editHtml }, "Edit HTML")
@@ -14668,12 +14787,12 @@ ${_html.style}
14668
14787
  });
14669
14788
  const PbPropertyEditorHtml = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14670
14789
  __proto__: null,
14671
- default: _sfc_main$4
14790
+ default: _sfc_main$5
14672
14791
  }, Symbol.toStringTag, { value: "Module" }));
14673
- const _hoisted_1$3 = { class: "property-editor property-editor-product flex-align-center" };
14674
- const _hoisted_2$3 = { class: "title" };
14675
- const _hoisted_3$3 = ["textContent"];
14676
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
14792
+ const _hoisted_1$4 = { class: "property-editor property-editor-product flex-align-center" };
14793
+ const _hoisted_2$4 = { class: "title" };
14794
+ const _hoisted_3$4 = ["textContent"];
14795
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
14677
14796
  __name: "PbPropertyEditorProduct",
14678
14797
  props: {
14679
14798
  property: {},
@@ -14700,11 +14819,11 @@ ${_html.style}
14700
14819
  });
14701
14820
  };
14702
14821
  return (_ctx, _cache) => {
14703
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
14704
- vue.createElementVNode("div", _hoisted_2$3, [
14822
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
14823
+ vue.createElementVNode("div", _hoisted_2$4, [
14705
14824
  vue.createElementVNode("label", {
14706
14825
  textContent: vue.toDisplayString(_ctx.property.caption)
14707
- }, null, 8, _hoisted_3$3)
14826
+ }, null, 8, _hoisted_3$4)
14708
14827
  ]),
14709
14828
  vue.createElementVNode("div", null, [
14710
14829
  vue.createElementVNode("button", { onClick: selectProducts }, "Select Product")
@@ -14715,12 +14834,12 @@ ${_html.style}
14715
14834
  });
14716
14835
  const PbPropertyEditorProduct = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14717
14836
  __proto__: null,
14718
- default: _sfc_main$3
14837
+ default: _sfc_main$4
14719
14838
  }, Symbol.toStringTag, { value: "Module" }));
14720
- const _hoisted_1$2 = { class: "bs-layout-vertical pb-part-add-modal" };
14721
- const _hoisted_2$2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14722
- const _hoisted_3$2 = ["onClick", "textContent"];
14723
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
14839
+ const _hoisted_1$3 = { class: "bs-layout-vertical pb-part-add-modal" };
14840
+ const _hoisted_2$3 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14841
+ const _hoisted_3$3 = ["onClick", "textContent"];
14842
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
14724
14843
  __name: "PbPartAddModal",
14725
14844
  props: {
14726
14845
  pageBuilder: {},
@@ -14737,20 +14856,20 @@ ${_html.style}
14737
14856
  return (_ctx, _cache) => {
14738
14857
  return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), { title: "Add Design Part" }, {
14739
14858
  default: vue.withCtx(() => [
14740
- vue.createElementVNode("div", _hoisted_1$2, [
14859
+ vue.createElementVNode("div", _hoisted_1$3, [
14741
14860
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.partDefinitionGroups, (group) => {
14742
14861
  return vue.openBlock(), vue.createElementBlock("div", {
14743
14862
  key: group.groupName,
14744
14863
  class: "group mb-16"
14745
14864
  }, [
14746
- vue.createElementVNode("div", _hoisted_2$2, [
14865
+ vue.createElementVNode("div", _hoisted_2$3, [
14747
14866
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(group.partDefinitions, (part) => {
14748
14867
  return vue.openBlock(), vue.createElementBlock("div", {
14749
14868
  key: part.partName,
14750
14869
  class: "part",
14751
14870
  onClick: ($event) => select(part),
14752
14871
  textContent: vue.toDisplayString(part.caption)
14753
- }, null, 8, _hoisted_3$2);
14872
+ }, null, 8, _hoisted_3$3);
14754
14873
  }), 128))
14755
14874
  ])
14756
14875
  ]);
@@ -14764,13 +14883,13 @@ ${_html.style}
14764
14883
  });
14765
14884
  const PbPartAddModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14766
14885
  __proto__: null,
14767
- default: _sfc_main$2
14886
+ default: _sfc_main$3
14768
14887
  }, Symbol.toStringTag, { value: "Module" }));
14769
- const _hoisted_1$1 = { class: "bs-layout-vertical pb-part-add-modal" };
14770
- const _hoisted_2$1 = ["textContent"];
14771
- const _hoisted_3$1 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14888
+ const _hoisted_1$2 = { class: "bs-layout-vertical pb-part-add-modal" };
14889
+ const _hoisted_2$2 = ["textContent"];
14890
+ const _hoisted_3$2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14772
14891
  const _hoisted_4$1 = ["onClick", "textContent"];
14773
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
14892
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
14774
14893
  __name: "PbWidgetAddModal",
14775
14894
  props: {
14776
14895
  pageBuilder: {},
@@ -14787,7 +14906,7 @@ ${_html.style}
14787
14906
  return (_ctx, _cache) => {
14788
14907
  return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), { title: "Add Block/Widget" }, {
14789
14908
  default: vue.withCtx(() => [
14790
- vue.createElementVNode("div", _hoisted_1$1, [
14909
+ vue.createElementVNode("div", _hoisted_1$2, [
14791
14910
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.partDefinitionGroups, (group) => {
14792
14911
  return vue.openBlock(), vue.createElementBlock("div", {
14793
14912
  key: group.groupName,
@@ -14796,8 +14915,8 @@ ${_html.style}
14796
14915
  vue.createElementVNode("div", {
14797
14916
  class: "mb-8",
14798
14917
  textContent: vue.toDisplayString(group.caption)
14799
- }, null, 8, _hoisted_2$1),
14800
- vue.createElementVNode("div", _hoisted_3$1, [
14918
+ }, null, 8, _hoisted_2$2),
14919
+ vue.createElementVNode("div", _hoisted_3$2, [
14801
14920
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(group.partDefinitions, (part) => {
14802
14921
  return vue.openBlock(), vue.createElementBlock("div", {
14803
14922
  key: part.partName,
@@ -14817,6 +14936,72 @@ ${_html.style}
14817
14936
  }
14818
14937
  });
14819
14938
  const PbWidgetAddModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14939
+ __proto__: null,
14940
+ default: _sfc_main$2
14941
+ }, Symbol.toStringTag, { value: "Module" }));
14942
+ const _hoisted_1$1 = { class: "mb-16" };
14943
+ const _hoisted_2$1 = /* @__PURE__ */ vue.createElementVNode("label", { class: "mr-8" }, "Which screen do you want to keep?", -1);
14944
+ const _hoisted_3$1 = { class: "text-right" };
14945
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
14946
+ __name: "PbScreenSelectModal",
14947
+ emits: ["select"],
14948
+ setup(__props, { emit: __emit }) {
14949
+ const emit = __emit;
14950
+ const selection = vue.ref("0");
14951
+ const modalHandle = bluesea.useModalHandle();
14952
+ const close = () => {
14953
+ modalHandle.close();
14954
+ };
14955
+ const ok = () => {
14956
+ emit("select", parseInt(selection.value));
14957
+ modalHandle.close();
14958
+ };
14959
+ return (_ctx, _cache) => {
14960
+ return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), { title: "Screen Selection" }, {
14961
+ default: vue.withCtx(() => [
14962
+ vue.createElementVNode("div", null, [
14963
+ vue.createElementVNode("div", _hoisted_1$1, [
14964
+ _hoisted_2$1,
14965
+ vue.createElementVNode("div", null, [
14966
+ vue.createVNode(vue.unref(bluesea.BSRadioButton), {
14967
+ modelValue: selection.value,
14968
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selection.value = $event),
14969
+ "item-value": "0",
14970
+ label: "Mobile",
14971
+ name: "mobile"
14972
+ }, null, 8, ["modelValue"]),
14973
+ vue.createVNode(vue.unref(bluesea.BSRadioButton), {
14974
+ modelValue: selection.value,
14975
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selection.value = $event),
14976
+ "item-value": "1",
14977
+ class: "ml-8",
14978
+ label: "PC",
14979
+ name: "pc"
14980
+ }, null, 8, ["modelValue"])
14981
+ ])
14982
+ ])
14983
+ ])
14984
+ ]),
14985
+ buttons: vue.withCtx(() => [
14986
+ vue.createElementVNode("div", _hoisted_3$1, [
14987
+ vue.createVNode(vue.unref(bluesea.BSButton), {
14988
+ "button-color": "blue",
14989
+ caption: "OK",
14990
+ onClick: ok
14991
+ }),
14992
+ vue.createVNode(vue.unref(bluesea.BSButton), {
14993
+ caption: "Cancel",
14994
+ class: "ml-8",
14995
+ onClick: close
14996
+ })
14997
+ ])
14998
+ ]),
14999
+ _: 1
15000
+ });
15001
+ };
15002
+ }
15003
+ });
15004
+ const PbScreenSelectModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14820
15005
  __proto__: null,
14821
15006
  default: _sfc_main$1
14822
15007
  }, Symbol.toStringTag, { value: "Module" }));
@@ -14834,7 +15019,7 @@ ${_html.style}
14834
15019
  const _hoisted_12 = /* @__PURE__ */ vue.createElementVNode("div", { class: "title pb-4" }, "Style", -1);
14835
15020
  const _hoisted_13 = { class: "content flex-grow-1" };
14836
15021
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
14837
- __name: "HtmlEditorModal",
15022
+ __name: "PbHtmlEditorModal",
14838
15023
  props: {
14839
15024
  html: {},
14840
15025
  locales: {},
@@ -14946,7 +15131,7 @@ ${_html.style}
14946
15131
  };
14947
15132
  }
14948
15133
  });
14949
- const HtmlEditorModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
15134
+ const PbHtmlEditorModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14950
15135
  __proto__: null,
14951
15136
  default: _sfc_main
14952
15137
  }, Symbol.toStringTag, { value: "Module" }));
@@ -14956,9 +15141,9 @@ ${_html.style}
14956
15141
  exports2.PAGE_BUILDER_KEY = PAGE_BUILDER_KEY;
14957
15142
  exports2.PAGE_TYPE = PAGE_TYPE$1;
14958
15143
  exports2.Page = Page;
14959
- exports2.PageBuilderEditor = _sfc_main$b;
15144
+ exports2.PageBuilderEditor = _sfc_main$c;
14960
15145
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
14961
- exports2.PageBuilderViewer = _sfc_main$B;
15146
+ exports2.PageBuilderViewer = _sfc_main$C;
14962
15147
  exports2.PageBuilderViewerEvent = PageBuilderViewerEvent;
14963
15148
  exports2.Part = Part;
14964
15149
  exports2.PbHtmlWidget = _sfc_main$3$1;