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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,38 @@
1
+ import { defineComponent, ref, openBlock, createElementBlock, createElementVNode, createVNode, unref } from "vue";
2
+ import { BSCheckbox } from "@g1cloud/bluesea";
3
+ const _hoisted_1 = { class: "property-editor property-editor-boolean flex-align-center my-12" };
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ __name: "PbPropertyEditorBoolean",
6
+ props: {
7
+ property: {},
8
+ value: {}
9
+ },
10
+ emits: ["update-property-value"],
11
+ setup(__props, { emit: __emit }) {
12
+ const props = __props;
13
+ const booleanValue = ref((props == null ? void 0 : props.value) === "true");
14
+ const emit = __emit;
15
+ const emitUpdatePropertyValue = (value) => {
16
+ const properties = {};
17
+ properties[props.property.propertyName] = value ? "true" : "false";
18
+ emit("update-property-value", properties);
19
+ };
20
+ return (_ctx, _cache) => {
21
+ return openBlock(), createElementBlock("div", _hoisted_1, [
22
+ createElementVNode("div", null, [
23
+ createVNode(unref(BSCheckbox), {
24
+ modelValue: booleanValue.value,
25
+ "onUpdate:modelValue": [
26
+ _cache[0] || (_cache[0] = ($event) => booleanValue.value = $event),
27
+ emitUpdatePropertyValue
28
+ ],
29
+ label: _ctx.property.caption
30
+ }, null, 8, ["modelValue", "label"])
31
+ ])
32
+ ]);
33
+ };
34
+ }
35
+ });
36
+ export {
37
+ _sfc_main as default
38
+ };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, createVNode, unref } from "vue";
2
2
  import { BSTextInput } from "@g1cloud/bluesea";
3
- import { P as PbColorPicker } from "./index-iOtzsn-m.js";
3
+ import { P as PbColorPicker } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-color" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, defineAsyncComponent } from "vue";
2
2
  import { useModal } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-iOtzsn-m.js";
3
+ import { u as usePageBuilderEditor } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString } from "vue";
2
- import { u as usePageBuilderEditor } from "./index-iOtzsn-m.js";
2
+ import { u as usePageBuilderEditor } from "./index-B8JifwHW.js";
3
3
  import { useModal } from "@g1cloud/bluesea";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, toDisplayString, createBlock, unref } from "vue";
2
2
  import { BSMultiLangTextArea, BSTextArea } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-iOtzsn-m.js";
3
+ import { u as usePageBuilderEditor } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-multiline-text" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,4 +1,4 @@
1
- import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, createVNode, unref } from "vue";
1
+ import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, toDisplayString, createVNode, unref } from "vue";
2
2
  import { BSNumberInput } from "@g1cloud/bluesea";
3
3
  const _hoisted_1 = { class: "property-editor property-editor-number flex-align-center" };
4
4
  const _hoisted_2 = { class: "title" };
@@ -13,6 +13,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  setup(__props, { emit: __emit }) {
14
14
  const props = __props;
15
15
  const emit = __emit;
16
+ const modelValue = computed(() => {
17
+ if (props.value && !isNaN(Number(props.value))) {
18
+ return Number(props.value);
19
+ } else {
20
+ return void 0;
21
+ }
22
+ });
16
23
  const emitUpdatePropertyValue = (value) => {
17
24
  const properties = {};
18
25
  properties[props.property.propertyName] = `${value}`;
@@ -27,7 +34,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
34
  ]),
28
35
  createElementVNode("div", null, [
29
36
  createVNode(unref(BSNumberInput), {
30
- "model-value": Number(_ctx.value),
37
+ "model-value": modelValue.value,
31
38
  width: "100%",
32
39
  "onUpdate:modelValue": emitUpdatePropertyValue
33
40
  }, null, 8, ["model-value"])
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, toDisplayString, createBlock, unref } from "vue";
2
2
  import { BSMultiLangTextInput, BSTextInput } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-iOtzsn-m.js";
3
+ import { u as usePageBuilderEditor } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-text flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString } from "vue";
2
2
  import { useModal } from "@g1cloud/bluesea";
3
- import { s as selectYoutubeVideo } from "./index-iOtzsn-m.js";
3
+ import { s as selectYoutubeVideo } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString } from "vue";
2
2
  import { useModalHandle, BSModalFrame } from "@g1cloud/bluesea";
3
- import { w as widgetPartDefinitions } from "./index-iOtzsn-m.js";
3
+ import { w as widgetPartDefinitions } from "./index-B8JifwHW.js";
4
4
  const _hoisted_1 = { class: "bs-layout-vertical pb-part-add-modal" };
5
5
  const _hoisted_2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
6
6
  const _hoisted_3 = ["onClick", "textContent"];
@@ -0,0 +1,23 @@
1
+ import { PartProperty } from '../../../model/part-property.ts';
2
+
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ property: PartProperty;
5
+ value?: string | undefined;
6
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update-property-value": (properties: Record<string, string>) => void;
8
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
9
+ property: PartProperty;
10
+ value?: string | undefined;
11
+ }>>> & Readonly<{
12
+ "onUpdate-property-value"?: ((properties: Record<string, string>) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
14
+ export default _default;
15
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
16
+ type __VLS_TypePropsToRuntimeProps<T> = {
17
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
18
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
19
+ } : {
20
+ type: import('vue').PropType<T[K]>;
21
+ required: true;
22
+ };
23
+ };
@@ -8121,14 +8121,15 @@ class PartManager {
8121
8121
  const defaultPartPropertyEditors = () => {
8122
8122
  return {
8123
8123
  "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-Dgp_AVOD.js")),
8124
- "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-9hf9BTum.js")),
8125
- "number": () => defineAsyncComponent(() => import("./PbPropertyEditorNumber-DrxTz2s1.js")),
8126
- "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-4sF6PJTE.js")),
8124
+ "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-tvKIJh2H.js")),
8125
+ "number": () => defineAsyncComponent(() => import("./PbPropertyEditorNumber-TTgo0zbQ.js")),
8126
+ "boolean": () => defineAsyncComponent(() => import("./PbPropertyEditorBoolean-C7-iSAtn.js")),
8127
+ "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-RrUB1pI3.js")),
8127
8128
  "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-CWedbXJI.js")),
8128
- "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-CQqLwB4B.js")),
8129
- "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-BIxdt8XI.js")),
8130
- "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-CeCp8qgN.js")),
8131
- "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-B-pIw-m5.js"))
8129
+ "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-Btwd1WP_.js")),
8130
+ "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-BV2SeGBT.js")),
8131
+ "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-DQpflvo0.js")),
8132
+ "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-Bcq06f0I.js"))
8132
8133
  };
8133
8134
  };
8134
8135
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -12430,7 +12431,7 @@ __publicField(_OpenAddWidgetModalCommand, "COMMAND_ID", "OpenAddWidgetModal");
12430
12431
  let OpenAddWidgetModalCommand = _OpenAddWidgetModalCommand;
12431
12432
  const openWidgetAddModal = (modal, args, callback) => {
12432
12433
  modal.openModal({
12433
- component: defineAsyncComponent(() => import("./PbWidgetAddModal-CFwyR_Bq.js")),
12434
+ component: defineAsyncComponent(() => import("./PbWidgetAddModal-Ca9HNoSU.js")),
12434
12435
  style: {
12435
12436
  width: "80%",
12436
12437
  height: "80%",
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
+ import { PartProperty } from './model/part-property.ts';
2
+
1
3
  export { default as PageBuilderEditor } from './PageBuilderEditor.vue';
4
+ export type { PartProperty };
2
5
  export * from './model/event';
3
6
  export * from './model/plugin';
4
7
  export * from '@g1cloud/page-builder-viewer';
@@ -1,7 +1,7 @@
1
1
  import { IPart } from '@g1cloud/page-builder-viewer';
2
2
  import { Component } from 'vue';
3
3
 
4
- export type PartPropertyType = 'readonly-text' | 'text' | 'number' | 'multiline-text' | 'select' | string;
4
+ export type PartPropertyType = 'readonly-text' | 'text' | 'number' | 'boolean' | 'multiline-text' | 'select' | string;
5
5
  export type PartPropertyEditor = (property: PartProperty, parts: IPart[]) => Component | undefined;
6
6
  export type PartProperty = {
7
7
  propertyName: string;
@@ -1,4 +1,4 @@
1
- import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, t, v, x, y, z, A, C } from "./index-iOtzsn-m.js";
1
+ import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, t, v, x, y, z, A, C } from "./index-B8JifwHW.js";
2
2
  export {
3
3
  B as BLOCK_TYPE,
4
4
  b as Block,
@@ -7289,7 +7289,7 @@ ${_html.style}
7289
7289
  plugin.widgets.forEach((v) => {
7290
7290
  const w = { ...v };
7291
7291
  w.partType = "Widget";
7292
- w.creator = () => _sfc_main$D;
7292
+ w.creator = () => _sfc_main$E;
7293
7293
  partDefinitions$1[v.partName] = w;
7294
7294
  });
7295
7295
  }
@@ -7499,7 +7499,7 @@ ${_html.style}
7499
7499
  };
7500
7500
  }
7501
7501
  });
7502
- const _hoisted_1$G = {
7502
+ const _hoisted_1$H = {
7503
7503
  key: 1,
7504
7504
  class: "placeholder",
7505
7505
  textContent: "Empty Widget"
@@ -7520,11 +7520,11 @@ ${_html.style}
7520
7520
  key: child.part.partId,
7521
7521
  part: child.part
7522
7522
  }, null, 8, ["part"]);
7523
- }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G)) : vue.createCommentVNode("", true);
7523
+ }), 128)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$H)) : vue.createCommentVNode("", true);
7524
7524
  };
7525
7525
  }
7526
7526
  });
7527
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
7527
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
7528
7528
  __name: "PbCustomWidget",
7529
7529
  props: {
7530
7530
  part: {},
@@ -8124,6 +8124,7 @@ ${_html.style}
8124
8124
  "readonly-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorReadonlyText)),
8125
8125
  "text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorText)),
8126
8126
  "number": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorNumber)),
8127
+ "boolean": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorBoolean)),
8127
8128
  "multiline-text": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorMultilineText)),
8128
8129
  "select": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorSelect)),
8129
8130
  "color": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorColor)),
@@ -8382,10 +8383,10 @@ ${_html.style}
8382
8383
  }
8383
8384
  return target;
8384
8385
  };
8385
- const _sfc_main$C = {};
8386
- const _hoisted_1$F = { class: "pb-add-widget-button" };
8386
+ const _sfc_main$D = {};
8387
+ const _hoisted_1$G = { class: "pb-add-widget-button" };
8387
8388
  function _sfc_render$1(_ctx, _cache) {
8388
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
8389
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [
8389
8390
  vue.createElementVNode("button", {
8390
8391
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8391
8392
  }, _cache[1] || (_cache[1] = [
@@ -8394,7 +8395,7 @@ ${_html.style}
8394
8395
  ]))
8395
8396
  ]);
8396
8397
  }
8397
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$1]]);
8398
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$1]]);
8398
8399
  const MOUSE_TRACKER_KEY = "mouseTracker";
8399
8400
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8400
8401
  class MouseTracker {
@@ -8422,8 +8423,8 @@ ${_html.style}
8422
8423
  if (!mouseTracker) throw Error(MOUSE_TRACKER_NOT_FOUND);
8423
8424
  return mouseTracker;
8424
8425
  };
8425
- const _hoisted_1$E = ["data-part-id", "draggable"];
8426
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
8426
+ const _hoisted_1$F = ["data-part-id", "draggable"];
8427
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
8427
8428
  __name: "PbWidget",
8428
8429
  props: {
8429
8430
  part: {},
@@ -8859,15 +8860,15 @@ ${_html.style}
8859
8860
  class: "resize-handle",
8860
8861
  onMousedown: resizeChild
8861
8862
  }, null, 32)) : vue.createCommentVNode("", true)
8862
- ], 14, _hoisted_1$E)), [
8863
+ ], 14, _hoisted_1$F)), [
8863
8864
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8864
8865
  ])
8865
8866
  ], 64);
8866
8867
  };
8867
8868
  }
8868
8869
  });
8869
- const _hoisted_1$D = ["data-part-id"];
8870
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8870
+ const _hoisted_1$E = ["data-part-id"];
8871
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
8871
8872
  __name: "PbBlock",
8872
8873
  props: {
8873
8874
  part: {},
@@ -9057,27 +9058,27 @@ ${_html.style}
9057
9058
  onAddWidget: addWidget
9058
9059
  })) : vue.createCommentVNode("", true),
9059
9060
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9060
- return vue.openBlock(), vue.createBlock(_sfc_main$B, {
9061
+ return vue.openBlock(), vue.createBlock(_sfc_main$C, {
9061
9062
  key: child.partId,
9062
9063
  part: child
9063
9064
  }, null, 8, ["part"]);
9064
9065
  }), 128))
9065
- ], 16, _hoisted_1$D)), [
9066
+ ], 16, _hoisted_1$E)), [
9066
9067
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9067
9068
  ])
9068
9069
  ], 64);
9069
9070
  };
9070
9071
  }
9071
9072
  });
9072
- const _hoisted_1$C = { class: "pb-block" };
9073
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
9073
+ const _hoisted_1$D = { class: "pb-block" };
9074
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
9074
9075
  __name: "PbLoginDepart",
9075
9076
  props: {
9076
9077
  part: {}
9077
9078
  },
9078
9079
  setup(__props) {
9079
9080
  return (_ctx, _cache) => {
9080
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, _cache[0] || (_cache[0] = [
9081
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, _cache[0] || (_cache[0] = [
9081
9082
  vue.createElementVNode("div", {
9082
9083
  class: "pb-widget",
9083
9084
  style: { "margin": "0 auto" }
@@ -9090,8 +9091,8 @@ ${_html.style}
9090
9091
  };
9091
9092
  }
9092
9093
  });
9093
- const _hoisted_1$B = ["data-part-id"];
9094
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9094
+ const _hoisted_1$C = ["data-part-id"];
9095
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
9095
9096
  __name: "PbSection",
9096
9097
  props: {
9097
9098
  part: {},
@@ -9201,13 +9202,13 @@ ${_html.style}
9201
9202
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9202
9203
  }, properties.value), [
9203
9204
  ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9204
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
9205
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$A, {
9205
9206
  key: 0,
9206
9207
  part: _ctx.part
9207
9208
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9208
9209
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9209
9210
  _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9210
- return vue.openBlock(), vue.createBlock(_sfc_main$A, {
9211
+ return vue.openBlock(), vue.createBlock(_sfc_main$B, {
9211
9212
  key: block.partId,
9212
9213
  "is-mobile-page": _ctx.isMobilePage,
9213
9214
  part: block
@@ -9217,21 +9218,21 @@ ${_html.style}
9217
9218
  onAddWidget: addWidget
9218
9219
  }))
9219
9220
  ], 64))
9220
- ], 16, _hoisted_1$B)), [
9221
+ ], 16, _hoisted_1$C)), [
9221
9222
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9222
9223
  ])
9223
9224
  ], 64);
9224
9225
  };
9225
9226
  }
9226
9227
  });
9227
- const _hoisted_1$A = { class: "group-editor group-editor-position" };
9228
+ const _hoisted_1$B = { class: "group-editor group-editor-position" };
9228
9229
  const _hoisted_2$s = { class: "flex-align-center" };
9229
9230
  const _hoisted_3$n = { class: "flex-grow-1" };
9230
9231
  const _hoisted_4$d = { class: "bg-gray-100 py-5 rounded-8" };
9231
9232
  const _hoisted_5$7 = { class: "text-center" };
9232
9233
  const _hoisted_6$7 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9233
9234
  const _hoisted_7$6 = { class: "text-center" };
9234
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9235
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9235
9236
  __name: "PbPropertyGroupEditorPosition",
9236
9237
  props: {
9237
9238
  group: {},
@@ -9255,7 +9256,7 @@ ${_html.style}
9255
9256
  const updateTop = (value) => updatePropertyValue({ top: value });
9256
9257
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9257
9258
  return (_ctx, _cache) => {
9258
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9259
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, [
9259
9260
  vue.createElementVNode("div", _hoisted_2$s, [
9260
9261
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
9261
9262
  vue.createElementVNode("label", { textContent: "Position" })
@@ -9309,14 +9310,14 @@ ${_html.style}
9309
9310
  };
9310
9311
  }
9311
9312
  });
9312
- const _hoisted_1$z = { class: "group-editor group-editor-size" };
9313
+ const _hoisted_1$A = { class: "group-editor group-editor-size" };
9313
9314
  const _hoisted_2$r = { class: "flex-align-center" };
9314
9315
  const _hoisted_3$m = { class: "flex-grow-1 bs-layout-horizontal" };
9315
9316
  const _hoisted_4$c = { class: "flex-align-center mt-12" };
9316
9317
  const _hoisted_5$6 = { class: "flex-grow-1 bs-layout-horizontal" };
9317
9318
  const _hoisted_6$6 = { class: "flex-align-center mt-12" };
9318
9319
  const _hoisted_7$5 = { class: "flex-grow-1 bs-layout-horizontal" };
9319
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9320
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9320
9321
  __name: "PbPropertyGroupEditorSize",
9321
9322
  props: {
9322
9323
  group: {},
@@ -9344,7 +9345,7 @@ ${_html.style}
9344
9345
  const updateMinWidth = (value) => updatePropertyValue({ minWidth: value });
9345
9346
  const updateMinHeight = (value) => updatePropertyValue({ minHeight: value });
9346
9347
  return (_ctx, _cache) => {
9347
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9348
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9348
9349
  vue.createElementVNode("div", _hoisted_2$r, [
9349
9350
  _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "title" }, [
9350
9351
  vue.createElementVNode("label", { textContent: "Size" })
@@ -9562,7 +9563,7 @@ ${_html.style}
9562
9563
  }
9563
9564
  }
9564
9565
  };
9565
- const _hoisted_1$y = { class: "vc-alpha" };
9566
+ const _hoisted_1$z = { class: "vc-alpha" };
9566
9567
  const _hoisted_2$q = { class: "vc-alpha-checkboard-wrap" };
9567
9568
  const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
9568
9569
  "div",
@@ -9576,7 +9577,7 @@ ${_html.style}
9576
9577
  ];
9577
9578
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9578
9579
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9579
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9580
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9580
9581
  vue.createElementVNode("div", _hoisted_2$q, [
9581
9582
  vue.createVNode(_component_Checkboard)
9582
9583
  ]),
@@ -10680,12 +10681,12 @@ ${_html.style}
10680
10681
  // }
10681
10682
  }
10682
10683
  };
10683
- const _hoisted_1$x = { class: "vc-editable-input" };
10684
+ const _hoisted_1$y = { class: "vc-editable-input" };
10684
10685
  const _hoisted_2$p = ["aria-labelledby"];
10685
10686
  const _hoisted_3$k = ["id", "for"];
10686
10687
  const _hoisted_4$a = { class: "vc-input__desc" };
10687
10688
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10688
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
10689
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
10689
10690
  vue.withDirectives(vue.createElementVNode("input", {
10690
10691
  ref: "input",
10691
10692
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10780,7 +10781,7 @@ ${_html.style}
10780
10781
  }
10781
10782
  }
10782
10783
  };
10783
- const _hoisted_1$w = /* @__PURE__ */ vue.createElementVNode(
10784
+ const _hoisted_1$x = /* @__PURE__ */ vue.createElementVNode(
10784
10785
  "div",
10785
10786
  { class: "vc-saturation--white" },
10786
10787
  null,
@@ -10816,7 +10817,7 @@ ${_html.style}
10816
10817
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10817
10818
  },
10818
10819
  [
10819
- _hoisted_1$w,
10820
+ _hoisted_1$x,
10820
10821
  _hoisted_2$o,
10821
10822
  vue.createElementVNode(
10822
10823
  "div",
@@ -10965,7 +10966,7 @@ ${_html.style}
10965
10966
  }
10966
10967
  }
10967
10968
  };
10968
- const _hoisted_1$v = ["aria-valuenow"];
10969
+ const _hoisted_1$w = ["aria-valuenow"];
10969
10970
  const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10970
10971
  "div",
10971
10972
  { class: "vc-hue-picker" },
@@ -11005,7 +11006,7 @@ ${_html.style}
11005
11006
  4
11006
11007
  /* STYLE */
11007
11008
  )
11008
- ], 40, _hoisted_1$v)
11009
+ ], 40, _hoisted_1$w)
11009
11010
  ],
11010
11011
  2
11011
11012
  /* CLASS */
@@ -11101,7 +11102,7 @@ ${_html.style}
11101
11102
  }
11102
11103
  }
11103
11104
  };
11104
- const _hoisted_1$u = { class: "vc-sketch-saturation-wrap" };
11105
+ const _hoisted_1$v = { class: "vc-sketch-saturation-wrap" };
11105
11106
  const _hoisted_2$m = { class: "vc-sketch-controls" };
11106
11107
  const _hoisted_3$h = { class: "vc-sketch-sliders" };
11107
11108
  const _hoisted_4$8 = { class: "vc-sketch-hue-wrap" };
@@ -11144,7 +11145,7 @@ ${_html.style}
11144
11145
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
11145
11146
  },
11146
11147
  [
11147
- vue.createElementVNode("div", _hoisted_1$u, [
11148
+ vue.createElementVNode("div", _hoisted_1$v, [
11148
11149
  vue.createVNode(_component_Saturation, {
11149
11150
  value: _ctx.colors,
11150
11151
  onChange: $options.childChange
@@ -11256,7 +11257,7 @@ ${_html.style}
11256
11257
  script.render = render;
11257
11258
  script.__file = "src/components/sketch/sketch.vue";
11258
11259
  script.install = install;
11259
- const _sfc_main$v = vue.defineComponent({
11260
+ const _sfc_main$w = vue.defineComponent({
11260
11261
  name: "PbColorPicker",
11261
11262
  components: {
11262
11263
  Sketch: script
@@ -11316,7 +11317,7 @@ ${_html.style}
11316
11317
  };
11317
11318
  }
11318
11319
  });
11319
- const _hoisted_1$t = { class: "buttons" };
11320
+ const _hoisted_1$u = { class: "buttons" };
11320
11321
  const _hoisted_2$l = { class: "sketch-wrap" };
11321
11322
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11322
11323
  const _component_Sketch = vue.resolveComponent("Sketch");
@@ -11326,7 +11327,7 @@ ${_html.style}
11326
11327
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11327
11328
  }, ["stop"]))
11328
11329
  }, [
11329
- vue.createElementVNode("div", _hoisted_1$t, [
11330
+ vue.createElementVNode("div", _hoisted_1$u, [
11330
11331
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11331
11332
  vue.createElementVNode("button", {
11332
11333
  class: vue.normalizeClass([{ none: !_ctx.color }, "picker-button"]),
@@ -11353,12 +11354,12 @@ ${_html.style}
11353
11354
  [_directive_click_outside, () => _ctx.toggle(false)]
11354
11355
  ]);
11355
11356
  }
11356
- const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render]]);
11357
- const _hoisted_1$s = { class: "group-editor group-editor-background" };
11357
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render]]);
11358
+ const _hoisted_1$t = { class: "group-editor group-editor-background" };
11358
11359
  const _hoisted_2$k = { class: "flex-align-center" };
11359
11360
  const _hoisted_3$g = { class: "bs-layout-horizontal" };
11360
11361
  const _hoisted_4$7 = { class: "color" };
11361
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
11362
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
11362
11363
  __name: "PbPropertyGroupEditorBackground",
11363
11364
  props: {
11364
11365
  group: {},
@@ -11391,7 +11392,7 @@ ${_html.style}
11391
11392
  }
11392
11393
  };
11393
11394
  return (_ctx, _cache) => {
11394
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11395
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
11395
11396
  vue.createElementVNode("div", _hoisted_2$k, [
11396
11397
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "title" }, [
11397
11398
  vue.createElementVNode("label", { textContent: "Background" })
@@ -11426,7 +11427,7 @@ ${_html.style}
11426
11427
  const TopRightCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11427
11428
  const BottomLeftCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%20transform='rotate(180)'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11428
11429
  const BottomRightCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Transformed%20by:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23000000'%20transform='rotate(90)'%3e%3cg%20id='SVGRepo_bgCarrier'%20stroke-width='0'/%3e%3cg%20id='SVGRepo_tracerCarrier'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cg%20id='SVGRepo_iconCarrier'%3e%3cg%3e%3cpath%20fill='none'%20d='M0%200H24V24H0z'/%3e%3cpath%20d='M21%2019v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2h-2v-2h2zm-4%200v2H7v-2h2zm-4%200v2H3v-2h2zm16-4v2h-2v-2h2zM5%2015v2H3v-2h2zm0-4v2H3v-2h2zm11-8c2.687%200%204.882%202.124%204.995%204.783L21%208v5h-2V8c0-1.591-1.255-2.903-2.824-2.995L16%205h-5V3h5zM5%207v2H3V7h2zm0-4v2H3V3h2zm4%200v2H7V3h2z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
11429
- const _hoisted_1$r = { class: "group-editor group-editor-border" };
11430
+ const _hoisted_1$s = { class: "group-editor group-editor-border" };
11430
11431
  const _hoisted_2$j = { class: "flex-align-center" };
11431
11432
  const _hoisted_3$f = { class: "" };
11432
11433
  const _hoisted_4$6 = { class: "color" };
@@ -11441,7 +11442,7 @@ ${_html.style}
11441
11442
  const _hoisted_13 = { class: "bg-gray-100 py-5 rounded-8" };
11442
11443
  const _hoisted_14 = { class: "" };
11443
11444
  const _hoisted_15 = { class: "mt-2" };
11444
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11445
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
11445
11446
  __name: "PbPropertyGroupEditorBorder",
11446
11447
  props: {
11447
11448
  group: {},
@@ -11479,7 +11480,7 @@ ${_html.style}
11479
11480
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11480
11481
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11481
11482
  return (_ctx, _cache) => {
11482
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11483
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11483
11484
  vue.createElementVNode("div", _hoisted_2$j, [
11484
11485
  _cache[7] || (_cache[7] = vue.createElementVNode("div", { class: "title" }, [
11485
11486
  vue.createElementVNode("label", { textContent: "Border" })
@@ -11601,14 +11602,14 @@ ${_html.style}
11601
11602
  };
11602
11603
  }
11603
11604
  });
11604
- const _hoisted_1$q = { class: "group-editor group-editor-margin" };
11605
+ const _hoisted_1$r = { class: "group-editor group-editor-margin" };
11605
11606
  const _hoisted_2$i = { class: "flex-align-center" };
11606
11607
  const _hoisted_3$e = { class: "flex-grow-1" };
11607
11608
  const _hoisted_4$5 = { class: "bg-gray-100 py-5 rounded-8" };
11608
11609
  const _hoisted_5$3 = { class: "text-center" };
11609
11610
  const _hoisted_6$3 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11610
11611
  const _hoisted_7$2 = { class: "text-center" };
11611
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11612
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11612
11613
  __name: "PbPropertyGroupEditorMargin",
11613
11614
  props: {
11614
11615
  group: {},
@@ -11632,7 +11633,7 @@ ${_html.style}
11632
11633
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11633
11634
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11634
11635
  return (_ctx, _cache) => {
11635
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11636
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11636
11637
  vue.createElementVNode("div", _hoisted_2$i, [
11637
11638
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11638
11639
  vue.createElementVNode("label", { textContent: "Margin" })
@@ -11686,14 +11687,14 @@ ${_html.style}
11686
11687
  };
11687
11688
  }
11688
11689
  });
11689
- const _hoisted_1$p = { class: "group-editor group-editor-padding" };
11690
+ const _hoisted_1$q = { class: "group-editor group-editor-padding" };
11690
11691
  const _hoisted_2$h = { class: "flex-align-center" };
11691
11692
  const _hoisted_3$d = { class: "flex-grow-1" };
11692
11693
  const _hoisted_4$4 = { class: "bg-gray-100 py-5 rounded-8" };
11693
11694
  const _hoisted_5$2 = { class: "text-center" };
11694
11695
  const _hoisted_6$2 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11695
11696
  const _hoisted_7$1 = { class: "text-center" };
11696
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11697
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11697
11698
  __name: "PbPropertyGroupEditorPadding",
11698
11699
  props: {
11699
11700
  group: {},
@@ -11717,7 +11718,7 @@ ${_html.style}
11717
11718
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11718
11719
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11719
11720
  return (_ctx, _cache) => {
11720
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11721
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11721
11722
  vue.createElementVNode("div", _hoisted_2$h, [
11722
11723
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "title" }, [
11723
11724
  vue.createElementVNode("label", { textContent: "Padding" })
@@ -11797,7 +11798,7 @@ ${_html.style}
11797
11798
  propertyType: "text"
11798
11799
  }
11799
11800
  ],
11800
- propertyGroupEditor: () => _sfc_main$x
11801
+ propertyGroupEditor: () => _sfc_main$y
11801
11802
  };
11802
11803
  };
11803
11804
  const sizeGroup = () => {
@@ -11836,7 +11837,7 @@ ${_html.style}
11836
11837
  propertyType: "text"
11837
11838
  }
11838
11839
  ],
11839
- propertyGroupEditor: () => _sfc_main$w
11840
+ propertyGroupEditor: () => _sfc_main$x
11840
11841
  };
11841
11842
  };
11842
11843
  const marginGroup = () => {
@@ -11865,7 +11866,7 @@ ${_html.style}
11865
11866
  propertyType: "text"
11866
11867
  }
11867
11868
  ],
11868
- propertyGroupEditor: () => _sfc_main$s
11869
+ propertyGroupEditor: () => _sfc_main$t
11869
11870
  };
11870
11871
  };
11871
11872
  const paddingGroup = () => {
@@ -11894,7 +11895,7 @@ ${_html.style}
11894
11895
  propertyType: "text"
11895
11896
  }
11896
11897
  ],
11897
- propertyGroupEditor: () => _sfc_main$r
11898
+ propertyGroupEditor: () => _sfc_main$s
11898
11899
  };
11899
11900
  };
11900
11901
  const commonGroup = () => {
@@ -11991,7 +11992,7 @@ ${_html.style}
11991
11992
  propertyType: "image"
11992
11993
  }
11993
11994
  ],
11994
- propertyGroupEditor: () => _sfc_main$u
11995
+ propertyGroupEditor: () => _sfc_main$v
11995
11996
  };
11996
11997
  };
11997
11998
  const borderGroup = () => {
@@ -12045,7 +12046,7 @@ ${_html.style}
12045
12046
  propertyType: "text"
12046
12047
  }
12047
12048
  ],
12048
- propertyGroupEditor: () => _sfc_main$t
12049
+ propertyGroupEditor: () => _sfc_main$u
12049
12050
  };
12050
12051
  };
12051
12052
  const defaultPropertyGroups = () => {
@@ -12054,7 +12055,7 @@ ${_html.style}
12054
12055
  const defaultWidgetPropertyGroups = () => {
12055
12056
  return [alignGroup(), positionGroup(), sizeGroup(), marginGroup(), paddingGroup(), borderGroup(), backgroundGroup(), commonGroup()];
12056
12057
  };
12057
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12058
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
12058
12059
  __name: "PbContainerWidget",
12059
12060
  props: {
12060
12061
  part: {},
@@ -12069,7 +12070,7 @@ ${_html.style}
12069
12070
  var _a;
12070
12071
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
12071
12072
  _ctx.part.children ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (child) => {
12072
- return vue.openBlock(), vue.createBlock(_sfc_main$B, {
12073
+ return vue.openBlock(), vue.createBlock(_sfc_main$C, {
12073
12074
  key: child.partId,
12074
12075
  "is-mobile-page": false,
12075
12076
  part: child
@@ -12112,7 +12113,7 @@ ${_html.style}
12112
12113
  align: "center"
12113
12114
  },
12114
12115
  allowsChild: () => true,
12115
- creator: () => _sfc_main$y
12116
+ creator: () => _sfc_main$z
12116
12117
  }
12117
12118
  ];
12118
12119
  const sectionParts = [
@@ -12131,7 +12132,7 @@ ${_html.style}
12131
12132
  align: "center"
12132
12133
  },
12133
12134
  allowsChild: () => true,
12134
- creator: () => _sfc_main$y
12135
+ creator: () => _sfc_main$z
12135
12136
  }
12136
12137
  ];
12137
12138
  const blockParts = [
@@ -12150,7 +12151,7 @@ ${_html.style}
12150
12151
  align: "center"
12151
12152
  },
12152
12153
  allowsChild: () => true,
12153
- creator: () => _sfc_main$A
12154
+ creator: () => _sfc_main$B
12154
12155
  }
12155
12156
  ];
12156
12157
  const widgets = [
@@ -12344,7 +12345,7 @@ ${_html.style}
12344
12345
  height: "300px"
12345
12346
  },
12346
12347
  allowsChild: () => true,
12347
- creator: () => _sfc_main$q
12348
+ creator: () => _sfc_main$r
12348
12349
  }
12349
12350
  ];
12350
12351
  const partDefinitions = {};
@@ -13581,7 +13582,7 @@ ${_html.style}
13581
13582
  plugin.widgets.forEach((v) => {
13582
13583
  const w = { ...v };
13583
13584
  w.partType = "Widget";
13584
- w.creator = () => _sfc_main$D;
13585
+ w.creator = () => _sfc_main$E;
13585
13586
  w.propertyGroups = [...w.propertyGroups, ...defaultWidgetPropertyGroups()];
13586
13587
  partDefinitions2[v.partName] = w;
13587
13588
  const found = this.customWidgets.find((x) => x.partName === v.partName);
@@ -13813,8 +13814,8 @@ ${_html.style}
13813
13814
  });
13814
13815
  }
13815
13816
  }
13816
- const _hoisted_1$o = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13817
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13817
+ const _hoisted_1$p = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13818
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
13818
13819
  __name: "PbToolbarButton",
13819
13820
  props: {
13820
13821
  button: {}
@@ -13827,7 +13828,7 @@ ${_html.style}
13827
13828
  (_b = (_a = props.button).handler) == null ? void 0 : _b.call(_a, pageBuilder);
13828
13829
  };
13829
13830
  return (_ctx, _cache) => {
13830
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
13831
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
13831
13832
  vue.createElementVNode("div", {
13832
13833
  class: "tool-button bs-clickable",
13833
13834
  onClick: handleClick
@@ -13842,17 +13843,17 @@ ${_html.style}
13842
13843
  };
13843
13844
  }
13844
13845
  });
13845
- const _hoisted_1$n = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13846
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13846
+ const _hoisted_1$o = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13847
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13847
13848
  __name: "PbToolbarButtonGroup",
13848
13849
  props: {
13849
13850
  group: {}
13850
13851
  },
13851
13852
  setup(__props) {
13852
13853
  return (_ctx, _cache) => {
13853
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13854
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
13854
13855
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.group.buttons, (button) => {
13855
- return vue.openBlock(), vue.createBlock(_sfc_main$p, {
13856
+ return vue.openBlock(), vue.createBlock(_sfc_main$q, {
13856
13857
  key: button.buttonId,
13857
13858
  button
13858
13859
  }, null, 8, ["button"]);
@@ -13861,10 +13862,10 @@ ${_html.style}
13861
13862
  };
13862
13863
  }
13863
13864
  });
13864
- const _hoisted_1$m = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13865
+ const _hoisted_1$n = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13865
13866
  const _hoisted_2$g = { class: "bs-layout-horizontal align-items-center" };
13866
13867
  const _hoisted_3$c = { class: "mr-8" };
13867
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13868
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13868
13869
  __name: "PbToolbar",
13869
13870
  props: {
13870
13871
  plugin: {}
@@ -13913,10 +13914,10 @@ ${_html.style}
13913
13914
  });
13914
13915
  return (_ctx, _cache) => {
13915
13916
  var _a, _b, _c;
13916
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13917
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
13917
13918
  vue.createElementVNode("div", _hoisted_2$g, [
13918
13919
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
13919
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
13920
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
13920
13921
  key: group.groupId,
13921
13922
  group
13922
13923
  }, null, 8, ["group"]);
@@ -13946,22 +13947,22 @@ ${_html.style}
13946
13947
  };
13947
13948
  }
13948
13949
  });
13949
- const _hoisted_1$l = { class: "pb-menu bs-layout-vertical" };
13950
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13950
+ const _hoisted_1$m = { class: "pb-menu bs-layout-vertical" };
13951
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13951
13952
  __name: "PbMenu",
13952
13953
  props: {
13953
13954
  toolbarPlugin: {}
13954
13955
  },
13955
13956
  setup(__props) {
13956
13957
  return (_ctx, _cache) => {
13957
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13958
- vue.createVNode(_sfc_main$n, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13958
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13959
+ vue.createVNode(_sfc_main$o, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13959
13960
  ]);
13960
13961
  };
13961
13962
  }
13962
13963
  });
13963
- const _hoisted_1$k = { class: "bs-layout-vertical border" };
13964
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13964
+ const _hoisted_1$l = { class: "bs-layout-vertical border" };
13965
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13965
13966
  __name: "PbNavigator",
13966
13967
  setup(__props) {
13967
13968
  const pageBuilder = usePageBuilderEditor();
@@ -14083,7 +14084,7 @@ ${_html.style}
14083
14084
  PageBuilderEditorEvent.off.modelUpdatedByUI(modelUpdateHandler);
14084
14085
  });
14085
14086
  return (_ctx, _cache) => {
14086
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14087
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
14087
14088
  vue.createElementVNode("div", {
14088
14089
  ref_key: "tree",
14089
14090
  ref: tree,
@@ -14116,7 +14117,7 @@ ${_html.style}
14116
14117
  };
14117
14118
  }
14118
14119
  });
14119
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14120
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
14120
14121
  __name: "PbSidebarPropertyEditor",
14121
14122
  props: {
14122
14123
  property: {},
@@ -14151,13 +14152,13 @@ ${_html.style}
14151
14152
  };
14152
14153
  }
14153
14154
  });
14154
- const _hoisted_1$j = { class: "pb-sidebar-property-group" };
14155
+ const _hoisted_1$k = { class: "pb-sidebar-property-group" };
14155
14156
  const _hoisted_2$f = {
14156
14157
  key: 0,
14157
14158
  class: "group-title"
14158
14159
  };
14159
14160
  const _hoisted_3$b = ["textContent"];
14160
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14161
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14161
14162
  __name: "PbSidebarPropertyGroupEditor",
14162
14163
  props: {
14163
14164
  group: {},
@@ -14171,7 +14172,7 @@ ${_html.style}
14171
14172
  return (_b = (_a = props.group).propertyGroupEditor) == null ? void 0 : _b.call(_a, props.group, props.selectedParts);
14172
14173
  });
14173
14174
  return (_ctx, _cache) => {
14174
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14175
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14175
14176
  _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
14176
14177
  vue.createElementVNode("label", {
14177
14178
  textContent: vue.toDisplayString(_ctx.group.caption)
@@ -14183,7 +14184,7 @@ ${_html.style}
14183
14184
  group: _ctx.group,
14184
14185
  "selected-parts": _ctx.selectedParts
14185
14186
  }, null, 8, ["group", "selected-parts"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.group.properties, (property) => {
14186
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
14187
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
14187
14188
  key: `${_ctx.partsKey}_${property.propertyName}`,
14188
14189
  property,
14189
14190
  "selected-parts": _ctx.selectedParts
@@ -14194,8 +14195,8 @@ ${_html.style}
14194
14195
  };
14195
14196
  }
14196
14197
  });
14197
- const _hoisted_1$i = { class: "pb-sidebar-properties" };
14198
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14198
+ const _hoisted_1$j = { class: "pb-sidebar-properties" };
14199
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
14199
14200
  __name: "PbSidebarProperties",
14200
14201
  setup(__props) {
14201
14202
  const pageBuilder = usePageBuilderEditor();
@@ -14213,12 +14214,12 @@ ${_html.style}
14213
14214
  }
14214
14215
  });
14215
14216
  return (_ctx, _cache) => {
14216
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14217
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
14217
14218
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(properties.value, (group) => {
14218
14219
  return vue.openBlock(), vue.createElementBlock("div", {
14219
14220
  key: `${partsKey.value}_${group.groupName}`
14220
14221
  }, [
14221
- vue.createVNode(_sfc_main$j, {
14222
+ vue.createVNode(_sfc_main$k, {
14222
14223
  group,
14223
14224
  partsKey: partsKey.value,
14224
14225
  "selected-parts": vue.unref(selectedParts)
@@ -14229,19 +14230,19 @@ ${_html.style}
14229
14230
  };
14230
14231
  }
14231
14232
  });
14232
- const _hoisted_1$h = { class: "pb-sidebar" };
14233
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14233
+ const _hoisted_1$i = { class: "pb-sidebar" };
14234
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14234
14235
  __name: "PbSidebar",
14235
14236
  setup(__props) {
14236
14237
  return (_ctx, _cache) => {
14237
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14238
- vue.createVNode(_sfc_main$i)
14238
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
14239
+ vue.createVNode(_sfc_main$j)
14239
14240
  ]);
14240
14241
  };
14241
14242
  }
14242
14243
  });
14243
- const _hoisted_1$g = ["data-part-id"];
14244
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14244
+ const _hoisted_1$h = ["data-part-id"];
14245
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14245
14246
  __name: "PbPage",
14246
14247
  props: {
14247
14248
  part: {},
@@ -14315,7 +14316,7 @@ ${_html.style}
14315
14316
  class: [selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"]
14316
14317
  }, properties.value), [
14317
14318
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_b = _ctx.part) == null ? void 0 : _b.children, (section, index) => {
14318
- return vue.openBlock(), vue.createBlock(_sfc_main$y, {
14319
+ return vue.openBlock(), vue.createBlock(_sfc_main$z, {
14319
14320
  key: section.partId,
14320
14321
  "is-mobile-page": _ctx.isMobilePage,
14321
14322
  part: section
@@ -14328,15 +14329,15 @@ ${_html.style}
14328
14329
  }, _cache[0] || (_cache[0] = [
14329
14330
  vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1)
14330
14331
  ]))
14331
- ], 46, _hoisted_1$g),
14332
+ ], 46, _hoisted_1$h),
14332
14333
  _cache[1] || (_cache[1] = vue.createElementVNode("div", { style: { "height": "100px" } }, null, -1))
14333
14334
  ], 64);
14334
14335
  };
14335
14336
  }
14336
14337
  });
14337
14338
  const canvasStyle = '.pb-page-wrapper {\n margin: 0 auto;\n padding: 0;\n}\n\n.pb-page {\n width: 100%;\n margin: 0 auto;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.pb-page .pb-page-content.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-page * {\n box-sizing: border-box;\n}\n\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n\n.pb-section {\n position: relative;\n width: 100%;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n background-color: #fff;\n}\n\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-section.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.pb-section-static .pb-widget {\n outline: none;\n}\n\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n\n.pb-block.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n pointer-events: auto !important;\n}\n\n.pb-widget * {\n pointer-events: none;\n}\n\n.pb-widget.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n pointer-events: auto !important;\n}\n\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n pointer-events: auto !important;\n}\n\n.pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-text-widget .text {\n color: #333;\n}\n\n.pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-image-widget {\n width: 100%;\n}\n\n.pb-image-widget .image {\n width: 100%;\n}\n\n.pb-image-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-image-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n\n.pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n\n.pb-youtube-widget {\n width: 100%;\n}\n\n.pb-youtube-widget .youtube {\n width: 100%;\n height: 100%;\n}\n\n.pb-youtube-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-youtube-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-container-widget {\n width: 100%;\n}\n\n.pb-container-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-container-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n\n.pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\n.pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n\n.pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n\n.pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n\n.pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n\n.pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n\n.pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n\n@media (max-width: 768px) {\n .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n\n.mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n\n.pb-login-widget {\n height: 200px;\n text-align: center;\n}\n\n.pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n\n.font-icon {\n font-family: Material Symbols Outlined, monospace;\n font-size: 1rem;\n max-width: 1em;\n}\n\nhtml, body {\n font-family: Noto Sans, Noto Sans KR, Noto Sans JP, Arial, sans-serif;\n font-size: 12px;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background-color: #aaa;\n overflow: hidden;\n}\n\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.pb-add-section-handle.bottom {\n left: 50%;\n bottom: -32px;\n}\n\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n\n.pb-add-section-handle > i {\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}';
14338
- const _hoisted_1$f = ["height", "width"];
14339
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14339
+ const _hoisted_1$g = ["height", "width"];
14340
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14340
14341
  __name: "PbPageFrame",
14341
14342
  props: {
14342
14343
  part: {},
@@ -14450,12 +14451,12 @@ ${_html.style}
14450
14451
  style: vue.normalizeStyle(style.value),
14451
14452
  width: `${width.value}px`,
14452
14453
  class: "page-frame mt-12"
14453
- }, null, 12, _hoisted_1$f),
14454
+ }, null, 12, _hoisted_1$g),
14454
14455
  ((_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document.body) ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
14455
14456
  key: 0,
14456
14457
  to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
14457
14458
  }, [
14458
- vue.createVNode(_sfc_main$g, {
14459
+ vue.createVNode(_sfc_main$h, {
14459
14460
  "is-mobile-page": isMobilePage.value,
14460
14461
  part: _ctx.part,
14461
14462
  width: width.value
@@ -14465,12 +14466,12 @@ ${_html.style}
14465
14466
  };
14466
14467
  }
14467
14468
  });
14468
- const _hoisted_1$e = { class: "pb-canvas-wrapper" };
14469
+ const _hoisted_1$f = { class: "pb-canvas-wrapper" };
14469
14470
  const _hoisted_2$e = {
14470
14471
  key: 1,
14471
14472
  style: { "width": "20px" }
14472
14473
  };
14473
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14474
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14474
14475
  __name: "PbCanvas",
14475
14476
  setup(__props) {
14476
14477
  const pageBuilder = usePageBuilderEditor();
@@ -14492,15 +14493,15 @@ ${_html.style}
14492
14493
  };
14493
14494
  });
14494
14495
  return (_ctx, _cache) => {
14495
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14496
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14496
14497
  vue.createElementVNode("div", vue.mergeProps({ class: "pb-canvas" }, style.value), [
14497
- partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14498
+ partS.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
14498
14499
  key: 0,
14499
14500
  part: partS.value,
14500
14501
  width: 480
14501
14502
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
14502
14503
  partL.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e)) : vue.createCommentVNode("", true),
14503
- partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14504
+ partL.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
14504
14505
  key: 2,
14505
14506
  part: partL.value,
14506
14507
  width: 1024
@@ -14510,9 +14511,9 @@ ${_html.style}
14510
14511
  };
14511
14512
  }
14512
14513
  });
14513
- const _hoisted_1$d = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14514
+ const _hoisted_1$e = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14514
14515
  const _hoisted_2$d = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14515
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14516
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14516
14517
  __name: "PageBuilderEditor",
14517
14518
  props: {
14518
14519
  instanceId: {},
@@ -14555,22 +14556,22 @@ ${_html.style}
14555
14556
  getPageContent
14556
14557
  });
14557
14558
  return (_ctx, _cache) => {
14558
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14559
- vue.createVNode(_sfc_main$m, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14559
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14560
+ vue.createVNode(_sfc_main$n, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14560
14561
  vue.createElementVNode("div", _hoisted_2$d, [
14561
- vue.createVNode(_sfc_main$l),
14562
- vue.createVNode(_sfc_main$e),
14563
- vue.createVNode(_sfc_main$h)
14562
+ vue.createVNode(_sfc_main$m),
14563
+ vue.createVNode(_sfc_main$f),
14564
+ vue.createVNode(_sfc_main$i)
14564
14565
  ])
14565
14566
  ]);
14566
14567
  };
14567
14568
  }
14568
14569
  });
14569
- const _hoisted_1$c = { class: "property-editor property-editor-readonly-text" };
14570
+ const _hoisted_1$d = { class: "property-editor property-editor-readonly-text" };
14570
14571
  const _hoisted_2$c = { class: "title" };
14571
14572
  const _hoisted_3$a = ["textContent"];
14572
14573
  const _hoisted_4$3 = ["textContent"];
14573
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14574
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14574
14575
  __name: "PbPropertyEditorReadonlyText",
14575
14576
  props: {
14576
14577
  property: {},
@@ -14578,7 +14579,7 @@ ${_html.style}
14578
14579
  },
14579
14580
  setup(__props) {
14580
14581
  return (_ctx, _cache) => {
14581
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14582
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14582
14583
  vue.createElementVNode("div", _hoisted_2$c, [
14583
14584
  vue.createElementVNode("label", {
14584
14585
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14595,12 +14596,12 @@ ${_html.style}
14595
14596
  });
14596
14597
  const PbPropertyEditorReadonlyText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14597
14598
  __proto__: null,
14598
- default: _sfc_main$c
14599
+ default: _sfc_main$d
14599
14600
  }, Symbol.toStringTag, { value: "Module" }));
14600
- const _hoisted_1$b = { class: "property-editor property-editor-text flex-align-center" };
14601
+ const _hoisted_1$c = { class: "property-editor property-editor-text flex-align-center" };
14601
14602
  const _hoisted_2$b = { class: "title" };
14602
14603
  const _hoisted_3$9 = ["textContent"];
14603
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14604
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14604
14605
  __name: "PbPropertyEditorText",
14605
14606
  props: {
14606
14607
  property: {},
@@ -14618,7 +14619,7 @@ ${_html.style}
14618
14619
  emit("update-property-value", properties);
14619
14620
  };
14620
14621
  return (_ctx, _cache) => {
14621
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14622
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14622
14623
  vue.createElementVNode("div", _hoisted_2$b, [
14623
14624
  vue.createElementVNode("label", {
14624
14625
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14644,12 +14645,12 @@ ${_html.style}
14644
14645
  });
14645
14646
  const PbPropertyEditorText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14646
14647
  __proto__: null,
14647
- default: _sfc_main$b
14648
+ default: _sfc_main$c
14648
14649
  }, Symbol.toStringTag, { value: "Module" }));
14649
- const _hoisted_1$a = { class: "property-editor property-editor-number flex-align-center" };
14650
+ const _hoisted_1$b = { class: "property-editor property-editor-number flex-align-center" };
14650
14651
  const _hoisted_2$a = { class: "title" };
14651
14652
  const _hoisted_3$8 = ["textContent"];
14652
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14653
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14653
14654
  __name: "PbPropertyEditorNumber",
14654
14655
  props: {
14655
14656
  property: {},
@@ -14659,13 +14660,20 @@ ${_html.style}
14659
14660
  setup(__props, { emit: __emit }) {
14660
14661
  const props = __props;
14661
14662
  const emit = __emit;
14663
+ const modelValue = vue.computed(() => {
14664
+ if (props.value && !isNaN(Number(props.value))) {
14665
+ return Number(props.value);
14666
+ } else {
14667
+ return void 0;
14668
+ }
14669
+ });
14662
14670
  const emitUpdatePropertyValue = (value) => {
14663
14671
  const properties = {};
14664
14672
  properties[props.property.propertyName] = `${value}`;
14665
14673
  emit("update-property-value", properties);
14666
14674
  };
14667
14675
  return (_ctx, _cache) => {
14668
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14676
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14669
14677
  vue.createElementVNode("div", _hoisted_2$a, [
14670
14678
  vue.createElementVNode("label", {
14671
14679
  textContent: vue.toDisplayString(_ctx.property.caption)
@@ -14673,7 +14681,7 @@ ${_html.style}
14673
14681
  ]),
14674
14682
  vue.createElementVNode("div", null, [
14675
14683
  vue.createVNode(vue.unref(bluesea.BSNumberInput), {
14676
- "model-value": Number(_ctx.value),
14684
+ "model-value": modelValue.value,
14677
14685
  width: "100%",
14678
14686
  "onUpdate:modelValue": emitUpdatePropertyValue
14679
14687
  }, null, 8, ["model-value"])
@@ -14683,6 +14691,43 @@ ${_html.style}
14683
14691
  }
14684
14692
  });
14685
14693
  const PbPropertyEditorNumber = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14694
+ __proto__: null,
14695
+ default: _sfc_main$b
14696
+ }, Symbol.toStringTag, { value: "Module" }));
14697
+ const _hoisted_1$a = { class: "property-editor property-editor-boolean flex-align-center my-12" };
14698
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14699
+ __name: "PbPropertyEditorBoolean",
14700
+ props: {
14701
+ property: {},
14702
+ value: {}
14703
+ },
14704
+ emits: ["update-property-value"],
14705
+ setup(__props, { emit: __emit }) {
14706
+ const props = __props;
14707
+ const booleanValue = vue.ref((props == null ? void 0 : props.value) === "true");
14708
+ const emit = __emit;
14709
+ const emitUpdatePropertyValue = (value) => {
14710
+ const properties = {};
14711
+ properties[props.property.propertyName] = value ? "true" : "false";
14712
+ emit("update-property-value", properties);
14713
+ };
14714
+ return (_ctx, _cache) => {
14715
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14716
+ vue.createElementVNode("div", null, [
14717
+ vue.createVNode(vue.unref(bluesea.BSCheckbox), {
14718
+ modelValue: booleanValue.value,
14719
+ "onUpdate:modelValue": [
14720
+ _cache[0] || (_cache[0] = ($event) => booleanValue.value = $event),
14721
+ emitUpdatePropertyValue
14722
+ ],
14723
+ label: _ctx.property.caption
14724
+ }, null, 8, ["modelValue", "label"])
14725
+ ])
14726
+ ]);
14727
+ };
14728
+ }
14729
+ });
14730
+ const PbPropertyEditorBoolean = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14686
14731
  __proto__: null,
14687
14732
  default: _sfc_main$a
14688
14733
  }, Symbol.toStringTag, { value: "Module" }));
@@ -15381,12 +15426,12 @@ ${_html.tags}` : "";
15381
15426
  exports2.PAGE_BUILDER_KEY = PAGE_BUILDER_KEY;
15382
15427
  exports2.PAGE_TYPE = PAGE_TYPE$1;
15383
15428
  exports2.Page = Page;
15384
- exports2.PageBuilderEditor = _sfc_main$d;
15429
+ exports2.PageBuilderEditor = _sfc_main$e;
15385
15430
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
15386
15431
  exports2.PageBuilderViewer = _sfc_main$2$1;
15387
15432
  exports2.Part = Part;
15388
15433
  exports2.PbContainerWidget = _sfc_main$1$1;
15389
- exports2.PbCustomWidget = _sfc_main$D;
15434
+ exports2.PbCustomWidget = _sfc_main$E;
15390
15435
  exports2.PbHtmlWidget = _sfc_main$6$1;
15391
15436
  exports2.PbIframeWidget = _sfc_main$5$1;
15392
15437
  exports2.PbImageWidget = _sfc_main$8$1;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g1cloud/page-builder-editor",
3
3
  "private": false,
4
- "version": "1.0.0-alpha.32",
4
+ "version": "1.0.0-alpha.33",
5
5
  "engins": {
6
6
  "node": ">= 20.0.0"
7
7
  },
@@ -30,7 +30,7 @@
30
30
  "vue-router": "^4.4.3",
31
31
  "vue3-click-away": "^1.2.4",
32
32
  "yjs": "^13.6.14",
33
- "@g1cloud/page-builder-viewer": "1.0.0-alpha.32"
33
+ "@g1cloud/page-builder-viewer": "1.0.0-alpha.33"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^20.12.7",