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

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.
@@ -6894,8 +6894,8 @@ var __publicField = (obj, key, value) => {
6894
6894
  this.rootPart = vue.ref(new RootPart());
6895
6895
  }
6896
6896
  };
6897
- const _hoisted_1$8$1 = ["data-model-id"];
6898
- const _hoisted_2$4$1 = {
6897
+ const _hoisted_1$7$1 = ["data-model-id"];
6898
+ const _hoisted_2$3$1 = {
6899
6899
  key: 1,
6900
6900
  class: "pb-nested-widget"
6901
6901
  };
@@ -6921,7 +6921,7 @@ var __publicField = (obj, key, value) => {
6921
6921
  key: 0,
6922
6922
  part: _ctx.part
6923
6923
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
6924
- childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4$1, [
6924
+ childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3$1, [
6925
6925
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
6926
6926
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
6927
6927
  key: child.part.partId,
@@ -6929,11 +6929,11 @@ var __publicField = (obj, key, value) => {
6929
6929
  }, null, 8, ["part"]);
6930
6930
  }), 128))
6931
6931
  ])) : vue.createCommentVNode("", true)
6932
- ], 16, _hoisted_1$8$1);
6932
+ ], 16, _hoisted_1$7$1);
6933
6933
  };
6934
6934
  }
6935
6935
  });
6936
- const _hoisted_1$7$1 = ["data-model-id"];
6936
+ const _hoisted_1$6$1 = ["data-model-id"];
6937
6937
  const _sfc_main$8$1 = /* @__PURE__ */ vue.defineComponent({
6938
6938
  __name: "PbBlock",
6939
6939
  props: {
@@ -6957,12 +6957,12 @@ var __publicField = (obj, key, value) => {
6957
6957
  part: child
6958
6958
  }, null, 8, ["part"]);
6959
6959
  }), 128))
6960
- ], 16, _hoisted_1$7$1);
6960
+ ], 16, _hoisted_1$6$1);
6961
6961
  };
6962
6962
  }
6963
6963
  });
6964
- const _hoisted_1$6$1 = { class: "pb-block" };
6965
- const _hoisted_2$3$1 = /* @__PURE__ */ vue.createElementVNode("div", {
6964
+ const _hoisted_1$5$1 = { class: "pb-block" };
6965
+ const _hoisted_2$2$1 = /* @__PURE__ */ vue.createElementVNode("div", {
6966
6966
  class: "pb-widget",
6967
6967
  style: { "margin": "0 auto" }
6968
6968
  }, [
@@ -6970,8 +6970,8 @@ var __publicField = (obj, key, value) => {
6970
6970
  /* @__PURE__ */ vue.createElementVNode("h3", null, "Login Design Part")
6971
6971
  ])
6972
6972
  ], -1);
6973
- const _hoisted_3$2$1 = [
6974
- _hoisted_2$3$1
6973
+ const _hoisted_3$1$1 = [
6974
+ _hoisted_2$2$1
6975
6975
  ];
6976
6976
  const _sfc_main$7$1 = /* @__PURE__ */ vue.defineComponent({
6977
6977
  __name: "PbLoginDepart",
@@ -6980,11 +6980,11 @@ var __publicField = (obj, key, value) => {
6980
6980
  },
6981
6981
  setup(__props) {
6982
6982
  return (_ctx, _cache) => {
6983
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6$1, _hoisted_3$2$1);
6983
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5$1, _hoisted_3$1$1);
6984
6984
  };
6985
6985
  }
6986
6986
  });
6987
- const _hoisted_1$5$1 = ["data-model-id"];
6987
+ const _hoisted_1$4$1 = ["data-model-id"];
6988
6988
  const _sfc_main$6$1 = /* @__PURE__ */ vue.defineComponent({
6989
6989
  __name: "PbSection",
6990
6990
  props: {
@@ -7010,19 +7010,19 @@ var __publicField = (obj, key, value) => {
7010
7010
  part: block
7011
7011
  }, null, 8, ["part"]);
7012
7012
  }), 128)) : vue.createCommentVNode("", true)
7013
- ], 16, _hoisted_1$5$1);
7013
+ ], 16, _hoisted_1$4$1);
7014
7014
  };
7015
7015
  }
7016
7016
  });
7017
- const _hoisted_1$4$1 = { class: "pb-image-widget" };
7018
- const _hoisted_2$2$1 = ["src"];
7019
- const _hoisted_3$1$1 = {
7017
+ const _hoisted_1$3$1 = { class: "pb-image-widget" };
7018
+ const _hoisted_2$1$1 = ["src"];
7019
+ const _hoisted_3$s = {
7020
7020
  key: 1,
7021
7021
  class: "empty"
7022
7022
  };
7023
- const _hoisted_4$1$1 = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "image", -1);
7024
- const _hoisted_5$1$1 = [
7025
- _hoisted_4$1$1
7023
+ const _hoisted_4$i = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "image", -1);
7024
+ const _hoisted_5$9 = [
7025
+ _hoisted_4$i
7026
7026
  ];
7027
7027
  const _sfc_main$5$1 = /* @__PURE__ */ vue.defineComponent({
7028
7028
  __name: "PbImageWidget",
@@ -7033,18 +7033,18 @@ var __publicField = (obj, key, value) => {
7033
7033
  setup(__props) {
7034
7034
  return (_ctx, _cache) => {
7035
7035
  var _a, _b;
7036
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4$1, [
7036
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3$1, [
7037
7037
  ((_a = _ctx.part.properties) == null ? void 0 : _a.image) ? (vue.openBlock(), vue.createElementBlock("img", {
7038
7038
  key: 0,
7039
7039
  src: (_b = _ctx.part.properties) == null ? void 0 : _b.image,
7040
7040
  alt: "",
7041
7041
  class: "image"
7042
- }, null, 8, _hoisted_2$2$1)) : !_ctx.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1$1, _hoisted_5$1$1)) : vue.createCommentVNode("", true)
7042
+ }, null, 8, _hoisted_2$1$1)) : !_ctx.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$s, _hoisted_5$9)) : vue.createCommentVNode("", true)
7043
7043
  ]);
7044
7044
  };
7045
7045
  }
7046
7046
  });
7047
- const _hoisted_1$3$1 = ["textContent"];
7047
+ const _hoisted_1$2$1 = ["textContent"];
7048
7048
  const _sfc_main$4$1 = /* @__PURE__ */ vue.defineComponent({
7049
7049
  __name: "PbTextWidget",
7050
7050
  props: {
@@ -7106,13 +7106,13 @@ var __publicField = (obj, key, value) => {
7106
7106
  }, [
7107
7107
  vue.createElementVNode("div", vue.mergeProps({ class: "text" }, style.value, {
7108
7108
  textContent: vue.toDisplayString(text.value)
7109
- }), null, 16, _hoisted_1$3$1)
7109
+ }), null, 16, _hoisted_1$2$1)
7110
7110
  ], 2);
7111
7111
  };
7112
7112
  }
7113
7113
  });
7114
- const _hoisted_1$2$1 = ["innerHTML"];
7115
- const _hoisted_2$1$1 = { key: 1 };
7114
+ const _hoisted_1$1$1 = ["innerHTML"];
7115
+ const _hoisted_2$v = { key: 1 };
7116
7116
  const _sfc_main$3$1 = /* @__PURE__ */ vue.defineComponent({
7117
7117
  __name: "PbHtmlWidget",
7118
7118
  props: {
@@ -7159,112 +7159,12 @@ ${_html.style}
7159
7159
  key: 0,
7160
7160
  class: "html",
7161
7161
  innerHTML: html.value
7162
- }, null, 8, _hoisted_1$2$1)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1$1, "Empty HTML"))
7162
+ }, null, 8, _hoisted_1$1$1)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$v, "Empty HTML"))
7163
7163
  ], 2);
7164
7164
  };
7165
7165
  }
7166
7166
  });
7167
- function mitt(n) {
7168
- return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
7169
- var i = n.get(t);
7170
- i ? i.push(e) : n.set(t, [e]);
7171
- }, off: function(t, e) {
7172
- var i = n.get(t);
7173
- i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, []));
7174
- }, emit: function(t, e) {
7175
- var i = n.get(t);
7176
- i && i.slice().map(function(n2) {
7177
- n2(e);
7178
- }), (i = n.get("*")) && i.slice().map(function(n2) {
7179
- n2(t, e);
7180
- });
7181
- } };
7182
- }
7183
- const emitter = mitt();
7184
- const PageBuilderViewerEvent = {
7185
- on: {
7186
- requestProductMapping: (listener) => {
7187
- emitter.on("requestProductMapping", listener);
7188
- }
7189
- },
7190
- off: {
7191
- requestProductMapping: (listener) => {
7192
- emitter.off("requestProductMapping", listener);
7193
- }
7194
- },
7195
- emit: {
7196
- requestProductMapping: (param) => {
7197
- emitter.emit("requestProductMapping", param);
7198
- }
7199
- }
7200
- };
7201
- const _hoisted_1$1$1 = { class: "pb-product-list-widget" };
7202
- const _hoisted_2$w = { class: "product" };
7203
- const _hoisted_3$t = { class: "image" };
7204
- const _hoisted_4$i = ["src"];
7205
- const _hoisted_5$8 = { class: "name" };
7206
- const _hoisted_6$7 = { class: "price" };
7207
- const _hoisted_7$6 = {
7208
- key: 1,
7209
- class: "empty"
7210
- };
7211
- const _hoisted_8$6 = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "image", -1);
7212
- const _hoisted_9$6 = [
7213
- _hoisted_8$6
7214
- ];
7215
- const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
7216
- __name: "PbProductListWidget",
7217
- props: {
7218
- part: {},
7219
- viewMode: { type: Boolean, default: false }
7220
- },
7221
- setup(__props) {
7222
- const props = __props;
7223
- const products = vue.ref([]);
7224
- const productCount = vue.computed(() => props.viewMode ? products.value.length : Math.max(4, products.value.length));
7225
- const updateProducts = () => {
7226
- var _a, _b;
7227
- if ((_a = props.part.properties) == null ? void 0 : _a.products) {
7228
- PageBuilderViewerEvent.emit.requestProductMapping({
7229
- pageBuilderId: props.part.getPageBuilderId(),
7230
- itemCodes: (_b = props.part.properties) == null ? void 0 : _b.products,
7231
- callback: (_products) => {
7232
- products.value = _products;
7233
- }
7234
- });
7235
- }
7236
- };
7237
- vue.onMounted(() => updateProducts());
7238
- vue.watch(() => {
7239
- var _a;
7240
- return (_a = props.part.properties) == null ? void 0 : _a.products;
7241
- }, () => updateProducts());
7242
- return (_ctx, _cache) => {
7243
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1$1, [
7244
- products.value ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(productCount.value, (index) => {
7245
- return vue.openBlock(), vue.createElementBlock("div", {
7246
- key: index,
7247
- class: "product-wrapper"
7248
- }, [
7249
- vue.createElementVNode("div", _hoisted_2$w, [
7250
- products.value[index - 1] ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
7251
- vue.createElementVNode("div", _hoisted_3$t, [
7252
- vue.createElementVNode("img", {
7253
- src: products.value[index - 1].image,
7254
- alt: ""
7255
- }, null, 8, _hoisted_4$i)
7256
- ]),
7257
- vue.createElementVNode("div", _hoisted_5$8, vue.toDisplayString(products.value[index - 1].itemName), 1),
7258
- vue.createElementVNode("div", _hoisted_6$7, vue.toDisplayString(products.value[index - 1].price), 1)
7259
- ], 64)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$6, _hoisted_9$6))
7260
- ])
7261
- ]);
7262
- }), 128)) : vue.createCommentVNode("", true)
7263
- ]);
7264
- };
7265
- }
7266
- });
7267
- const partDefinitions$1 = {
7167
+ const defaultPartDefinitions = {
7268
7168
  "Section": {
7269
7169
  partType: "Section",
7270
7170
  partName: "Section",
@@ -7304,15 +7204,11 @@ ${_html.style}
7304
7204
  partType: "Widget",
7305
7205
  partName: "HtmlWidget",
7306
7206
  creator: () => _sfc_main$3$1
7307
- },
7308
- "ProductListWidget": {
7309
- partType: "Widget",
7310
- partName: "ProductListWidget",
7311
- creator: () => _sfc_main$2$1
7312
7207
  }
7313
7208
  };
7314
7209
  const PAGE_BUILDER_KEY = "PageBuilder";
7315
7210
  const PAGE_BUILDER_VIEWER_KEY = "PageBuilderViewer";
7211
+ let partDefinitions$1 = { ...defaultPartDefinitions };
7316
7212
  class PageBuilderViewerImpl {
7317
7213
  constructor() {
7318
7214
  __publicField2(this, "instanceId");
@@ -7326,6 +7222,28 @@ ${_html.style}
7326
7222
  setLocale(locale) {
7327
7223
  this.locale.value = locale || "en";
7328
7224
  }
7225
+ registerCustomPlugin(plugin) {
7226
+ if (plugin.widgets) {
7227
+ plugin.widgets.forEach((v) => {
7228
+ const w = { ...v };
7229
+ w.partType = "Widget";
7230
+ w.creator = () => _sfc_main$B;
7231
+ partDefinitions$1[v.partName] = w;
7232
+ });
7233
+ }
7234
+ }
7235
+ watchCustomWidgetData(part) {
7236
+ const def = partDefinitions$1[part.partName];
7237
+ if (!def || !def.dataWatcher)
7238
+ return false;
7239
+ return def.dataWatcher(part.properties);
7240
+ }
7241
+ provideCustomWidgetData(part) {
7242
+ const def = partDefinitions$1[part.partName];
7243
+ if (!def || !def.dataProvider)
7244
+ return Promise.resolve();
7245
+ return def.dataProvider(part.properties);
7246
+ }
7329
7247
  render(pageContent) {
7330
7248
  const rootPart = new RootPart();
7331
7249
  rootPart.pageBuilderId = this.instanceId;
@@ -7367,6 +7285,12 @@ ${_html.style}
7367
7285
  return new Widget();
7368
7286
  }
7369
7287
  }
7288
+ getCustomWidgetComponent(part) {
7289
+ const def = getPartDefinition(part.partName);
7290
+ if (def) {
7291
+ return def.component;
7292
+ }
7293
+ }
7370
7294
  }
7371
7295
  const createPageBuilderViewer = () => {
7372
7296
  const viewer = new PageBuilderViewerImpl();
@@ -7405,7 +7329,7 @@ ${_html.style}
7405
7329
  }
7406
7330
  };
7407
7331
  const getPartDefinition = (partName) => partDefinitions$1[partName];
7408
- const _sfc_main$1$1 = /* @__PURE__ */ vue.defineComponent({
7332
+ const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
7409
7333
  __name: "PbPage",
7410
7334
  props: {
7411
7335
  page: {},
@@ -7434,20 +7358,23 @@ ${_html.style}
7434
7358
  };
7435
7359
  }
7436
7360
  });
7437
- const _hoisted_1$G = { class: "pb-viewer" };
7438
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
7361
+ const _hoisted_1$F = { class: "pb-viewer" };
7362
+ const _sfc_main$1$1 = /* @__PURE__ */ vue.defineComponent({
7439
7363
  __name: "PageBuilderViewer",
7440
7364
  props: {
7441
7365
  instanceId: {},
7442
7366
  pageContent: {},
7443
7367
  isMobilePage: { type: Boolean },
7444
- language: {}
7368
+ language: {},
7369
+ plugin: {}
7445
7370
  },
7446
7371
  setup(__props) {
7447
7372
  const props = __props;
7448
7373
  const pageBuilderViewer = createPageBuilderViewer();
7449
7374
  pageBuilderViewer.instanceId = props.instanceId;
7450
7375
  pageBuilderViewer.setLocale(props.language);
7376
+ if (props.plugin)
7377
+ pageBuilderViewer.registerCustomPlugin(props.plugin);
7451
7378
  providePageBuilderViewer(pageBuilderViewer);
7452
7379
  providePageBuilder(pageBuilderViewer);
7453
7380
  const page = vue.computed(() => pageBuilderViewer.model.rootPart.value.children && pageBuilderViewer.model.rootPart.value.children[props.isMobilePage ? 0 : 1]);
@@ -7465,8 +7392,8 @@ ${_html.style}
7465
7392
  }
7466
7393
  );
7467
7394
  return (_ctx, _cache) => {
7468
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [
7469
- page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1$1, {
7395
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
7396
+ page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$2$1, {
7470
7397
  key: 0,
7471
7398
  "is-mobile-page": _ctx.isMobilePage,
7472
7399
  page: page.value
@@ -7475,6 +7402,71 @@ ${_html.style}
7475
7402
  };
7476
7403
  }
7477
7404
  });
7405
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
7406
+ __name: "PbCustomWidget",
7407
+ props: {
7408
+ part: {},
7409
+ dataWatcher: { type: Function },
7410
+ dataProvider: { type: Function }
7411
+ },
7412
+ setup(__props) {
7413
+ const props = __props;
7414
+ const pageBuilder = usePageBuilder();
7415
+ const comp = vue.computed(() => pageBuilder.getCustomWidgetComponent(props.part));
7416
+ const data = vue.ref({});
7417
+ const bind = vue.computed(() => ({
7418
+ pageBuilderId: pageBuilder.instanceId,
7419
+ ...props.part.properties || {},
7420
+ placeholder: true,
7421
+ ...data.value || {}
7422
+ }));
7423
+ const updateData = async () => {
7424
+ data.value = await pageBuilder.provideCustomWidgetData(props.part);
7425
+ };
7426
+ vue.onMounted(updateData);
7427
+ vue.watch(
7428
+ () => pageBuilder.watchCustomWidgetData(props.part),
7429
+ () => updateData()
7430
+ );
7431
+ return (_ctx, _cache) => {
7432
+ return comp.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(comp.value), vue.normalizeProps(vue.mergeProps({ key: 0 }, bind.value)), null, 16)) : vue.createCommentVNode("", true);
7433
+ };
7434
+ }
7435
+ });
7436
+ function mitt(n) {
7437
+ return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
7438
+ var i = n.get(t);
7439
+ i ? i.push(e) : n.set(t, [e]);
7440
+ }, off: function(t, e) {
7441
+ var i = n.get(t);
7442
+ i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, []));
7443
+ }, emit: function(t, e) {
7444
+ var i = n.get(t);
7445
+ i && i.slice().map(function(n2) {
7446
+ n2(e);
7447
+ }), (i = n.get("*")) && i.slice().map(function(n2) {
7448
+ n2(t, e);
7449
+ });
7450
+ } };
7451
+ }
7452
+ const emitter = mitt();
7453
+ const PageBuilderViewerEvent = {
7454
+ on: {
7455
+ requestProductMapping: (listener) => {
7456
+ emitter.on("requestProductMapping", listener);
7457
+ }
7458
+ },
7459
+ off: {
7460
+ requestProductMapping: (listener) => {
7461
+ emitter.off("requestProductMapping", listener);
7462
+ }
7463
+ },
7464
+ emit: {
7465
+ requestProductMapping: (param) => {
7466
+ emitter.emit("requestProductMapping", param);
7467
+ }
7468
+ }
7469
+ };
7478
7470
  const PART_ID_KEY = "partId";
7479
7471
  const PART_NAME_KEY = "partName";
7480
7472
  const RESERVED_ATTRIBUTES = [PART_ID_KEY, PART_NAME_KEY];
@@ -7967,20 +7959,6 @@ ${_html.style}
7967
7959
  }
7968
7960
  }
7969
7961
  }
7970
- getLocalDesignPartPropertyDefinitions(partName) {
7971
- let properties;
7972
- const partDef = this.getPartDefinition(partName);
7973
- if (!partDef || !partDef.propertyGroups)
7974
- return;
7975
- for (const group of partDef.propertyGroups) {
7976
- for (const property of group.properties) {
7977
- if (property.localized) {
7978
- properties = [...properties || [], property];
7979
- }
7980
- }
7981
- }
7982
- return properties;
7983
- }
7984
7962
  createPartComponent(part) {
7985
7963
  if (part) {
7986
7964
  const def = this.getPartDefinition(part.partName);
@@ -8064,8 +8042,7 @@ ${_html.style}
8064
8042
  "select": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorSelect)),
8065
8043
  "color": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorColor)),
8066
8044
  "image": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorImage)),
8067
- "html": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorHtml)),
8068
- "product": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorProduct))
8045
+ "html": () => vue.defineAsyncComponent(() => Promise.resolve().then(() => PbPropertyEditorHtml))
8069
8046
  };
8070
8047
  };
8071
8048
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -8295,22 +8272,22 @@ ${_html.style}
8295
8272
  }
8296
8273
  return target;
8297
8274
  };
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);
8275
+ const _sfc_main$A = {};
8276
+ const _hoisted_1$E = { class: "pb-add-widget-button" };
8277
+ const _hoisted_2$u = /* @__PURE__ */ vue.createElementVNode("span", { class: "icon material-icons-outlined" }, "add_box", -1);
8278
+ const _hoisted_3$r = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "Add Widget", -1);
8302
8279
  const _hoisted_4$h = [
8303
- _hoisted_2$v,
8304
- _hoisted_3$s
8280
+ _hoisted_2$u,
8281
+ _hoisted_3$r
8305
8282
  ];
8306
8283
  function _sfc_render$1(_ctx, _cache) {
8307
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
8284
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [
8308
8285
  vue.createElementVNode("button", {
8309
8286
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("add-widget", $event))
8310
8287
  }, _hoisted_4$h)
8311
8288
  ]);
8312
8289
  }
8313
- const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$1]]);
8290
+ const PbAddWidgetButton = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$1]]);
8314
8291
  const MOUSE_TRACKER_KEY = "mouseTracker";
8315
8292
  const MOUSE_TRACKER_NOT_FOUND = "MouseTracker not found";
8316
8293
  class MouseTracker {
@@ -8341,12 +8318,12 @@ ${_html.style}
8341
8318
  throw Error(MOUSE_TRACKER_NOT_FOUND);
8342
8319
  return mouseTracker;
8343
8320
  };
8344
- const _hoisted_1$E = ["data-model-id", "draggable"];
8345
- const _hoisted_2$u = {
8321
+ const _hoisted_1$D = ["data-model-id", "draggable"];
8322
+ const _hoisted_2$t = {
8346
8323
  key: 1,
8347
8324
  class: "children"
8348
8325
  };
8349
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
8326
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
8350
8327
  __name: "PbWidget",
8351
8328
  props: {
8352
8329
  part: {}
@@ -8792,7 +8769,7 @@ ${_html.style}
8792
8769
  key: 0,
8793
8770
  part: _ctx.part
8794
8771
  }, null, 8, ["part"])) : vue.createCommentVNode("", true),
8795
- childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$u, [
8772
+ childComponents.value && childComponents.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$t, [
8796
8773
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(childComponents.value, (child) => {
8797
8774
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.component), {
8798
8775
  key: child.part.partId,
@@ -8810,14 +8787,14 @@ ${_html.style}
8810
8787
  class: "resize-handle",
8811
8788
  onMousedown: _resize_mousedown
8812
8789
  }, null, 32)) : vue.createCommentVNode("", true)
8813
- ], 16, _hoisted_1$E)), [
8790
+ ], 16, _hoisted_1$D)), [
8814
8791
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
8815
8792
  ]);
8816
8793
  };
8817
8794
  }
8818
8795
  });
8819
- const _hoisted_1$D = ["data-model-id"];
8820
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
8796
+ const _hoisted_1$C = ["data-model-id"];
8797
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
8821
8798
  __name: "PbBlock",
8822
8799
  props: {
8823
8800
  part: {}
@@ -9007,19 +8984,19 @@ ${_html.style}
9007
8984
  onAddWidget: addWidget
9008
8985
  })) : vue.createCommentVNode("", true),
9009
8986
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
9010
- return vue.openBlock(), vue.createBlock(_sfc_main$A, {
8987
+ return vue.openBlock(), vue.createBlock(_sfc_main$z, {
9011
8988
  key: child.partId,
9012
8989
  part: child
9013
8990
  }, null, 8, ["part"]);
9014
8991
  }), 128))
9015
- ], 16, _hoisted_1$D)), [
8992
+ ], 16, _hoisted_1$C)), [
9016
8993
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9017
8994
  ]);
9018
8995
  };
9019
8996
  }
9020
8997
  });
9021
- const _hoisted_1$C = { class: "pb-block" };
9022
- const _hoisted_2$t = /* @__PURE__ */ vue.createElementVNode("div", {
8998
+ const _hoisted_1$B = { class: "pb-block" };
8999
+ const _hoisted_2$s = /* @__PURE__ */ vue.createElementVNode("div", {
9023
9000
  class: "pb-widget",
9024
9001
  style: { "margin": "0 auto" }
9025
9002
  }, [
@@ -9027,22 +9004,22 @@ ${_html.style}
9027
9004
  /* @__PURE__ */ vue.createElementVNode("h3", null, "Login Design Part")
9028
9005
  ])
9029
9006
  ], -1);
9030
- const _hoisted_3$r = [
9031
- _hoisted_2$t
9007
+ const _hoisted_3$q = [
9008
+ _hoisted_2$s
9032
9009
  ];
9033
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
9010
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9034
9011
  __name: "PbLoginDepart",
9035
9012
  props: {
9036
9013
  part: {}
9037
9014
  },
9038
9015
  setup(__props) {
9039
9016
  return (_ctx, _cache) => {
9040
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, _hoisted_3$r);
9017
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, _hoisted_3$q);
9041
9018
  };
9042
9019
  }
9043
9020
  });
9044
- const _hoisted_1$B = ["data-model-id"];
9045
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
9021
+ const _hoisted_1$A = ["data-model-id"];
9022
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9046
9023
  __name: "PbSection",
9047
9024
  props: {
9048
9025
  part: {}
@@ -9153,13 +9130,13 @@ ${_html.style}
9153
9130
  style: (_a = _ctx.part.properties) == null ? void 0 : _a.css
9154
9131
  }, properties.value), [
9155
9132
  ((_b = _ctx.part.properties) == null ? void 0 : _b.sectionType) === "static" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
9156
- ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
9133
+ ((_c = _ctx.part.properties) == null ? void 0 : _c.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$x, {
9157
9134
  key: 0,
9158
9135
  part: _ctx.part
9159
9136
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
9160
9137
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
9161
9138
  _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (block) => {
9162
- return vue.openBlock(), vue.createBlock(_sfc_main$z, {
9139
+ return vue.openBlock(), vue.createBlock(_sfc_main$y, {
9163
9140
  key: block.partId,
9164
9141
  part: block
9165
9142
  }, null, 8, ["part"]);
@@ -9168,29 +9145,29 @@ ${_html.style}
9168
9145
  onAddWidget: addWidget
9169
9146
  }))
9170
9147
  ], 64))
9171
- ], 16, _hoisted_1$B)), [
9148
+ ], 16, _hoisted_1$A)), [
9172
9149
  [vue.unref(vPartHandler), { pageBuilder: vue.unref(pageBuilder), part: _ctx.part, droppable: true, locatePositionMark, calculateDropIndex, acceptChildPart }]
9173
9150
  ]);
9174
9151
  };
9175
9152
  }
9176
9153
  });
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" }, [
9154
+ const _hoisted_1$z = { class: "group-editor group-editor-position" };
9155
+ const _hoisted_2$r = { class: "flex-align-center" };
9156
+ const _hoisted_3$p = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9180
9157
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Position" })
9181
9158
  ], -1);
9182
9159
  const _hoisted_4$g = { class: "flex-grow-1" };
9183
- const _hoisted_5$7 = { class: "bg-gray-100 py-5 rounded-8" };
9184
- const _hoisted_6$6 = { class: "text-center" };
9185
- const _hoisted_7$5 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9186
- const _hoisted_8$5 = /* @__PURE__ */ vue.createElementVNode("div", {
9160
+ const _hoisted_5$8 = { class: "bg-gray-100 py-5 rounded-8" };
9161
+ const _hoisted_6$7 = { class: "text-center" };
9162
+ const _hoisted_7$6 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
9163
+ const _hoisted_8$6 = /* @__PURE__ */ vue.createElementVNode("div", {
9187
9164
  class: "d-inline-block text-center text-gray-300",
9188
9165
  style: { "width": "30%", "font-size": "12px" }
9189
9166
  }, [
9190
9167
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
9191
9168
  ], -1);
9192
9169
  const _hoisted_9$5 = { class: "text-center" };
9193
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
9170
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9194
9171
  __name: "PbPropertyGroupEditorPosition",
9195
9172
  props: {
9196
9173
  group: {},
@@ -9214,12 +9191,12 @@ ${_html.style}
9214
9191
  const updateTop = (value) => updatePropertyValue({ top: value });
9215
9192
  const updateBottom = (value) => updatePropertyValue({ bottom: value });
9216
9193
  return (_ctx, _cache) => {
9217
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
9218
- vue.createElementVNode("div", _hoisted_2$s, [
9219
- _hoisted_3$q,
9194
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9195
+ vue.createElementVNode("div", _hoisted_2$r, [
9196
+ _hoisted_3$p,
9220
9197
  vue.createElementVNode("div", _hoisted_4$g, [
9221
- vue.createElementVNode("div", _hoisted_5$7, [
9222
- vue.createElementVNode("div", _hoisted_6$6, [
9198
+ vue.createElementVNode("div", _hoisted_5$8, [
9199
+ vue.createElementVNode("div", _hoisted_6$7, [
9223
9200
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9224
9201
  "model-value": top.value,
9225
9202
  class: "ml-4",
@@ -9228,7 +9205,7 @@ ${_html.style}
9228
9205
  "onUpdate:modelValue": updateTop
9229
9206
  }, null, 8, ["model-value"])
9230
9207
  ]),
9231
- vue.createElementVNode("div", _hoisted_7$5, [
9208
+ vue.createElementVNode("div", _hoisted_7$6, [
9232
9209
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9233
9210
  "model-value": left.value,
9234
9211
  class: "ml-4",
@@ -9236,7 +9213,7 @@ ${_html.style}
9236
9213
  width: "30%",
9237
9214
  "onUpdate:modelValue": updateLeft
9238
9215
  }, null, 8, ["model-value"]),
9239
- _hoisted_8$5,
9216
+ _hoisted_8$6,
9240
9217
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9241
9218
  "model-value": right.value,
9242
9219
  class: "ml-4",
@@ -9261,13 +9238,13 @@ ${_html.style}
9261
9238
  };
9262
9239
  }
9263
9240
  });
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" }, [
9241
+ const _hoisted_1$y = { class: "group-editor group-editor-size" };
9242
+ const _hoisted_2$q = { class: "flex-align-center" };
9243
+ const _hoisted_3$o = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
9267
9244
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Size" })
9268
9245
  ], -1);
9269
9246
  const _hoisted_4$f = { class: "flex-grow-1 bs-layout-horizontal" };
9270
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
9247
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
9271
9248
  __name: "PbPropertyGroupEditorSize",
9272
9249
  props: {
9273
9250
  group: {},
@@ -9287,9 +9264,9 @@ ${_html.style}
9287
9264
  const updateWidth = (value) => updatePropertyValue({ width: value });
9288
9265
  const updateHeight = (value) => updatePropertyValue({ height: value });
9289
9266
  return (_ctx, _cache) => {
9290
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
9291
- vue.createElementVNode("div", _hoisted_2$r, [
9292
- _hoisted_3$p,
9267
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9268
+ vue.createElementVNode("div", _hoisted_2$q, [
9269
+ _hoisted_3$o,
9293
9270
  vue.createElementVNode("div", _hoisted_4$f, [
9294
9271
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
9295
9272
  "model-value": width.value,
@@ -9466,9 +9443,9 @@ ${_html.style}
9466
9443
  }
9467
9444
  }
9468
9445
  };
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(
9446
+ const _hoisted_1$x = { class: "vc-alpha" };
9447
+ const _hoisted_2$p = { class: "vc-alpha-checkboard-wrap" };
9448
+ const _hoisted_3$n = /* @__PURE__ */ vue.createElementVNode(
9472
9449
  "div",
9473
9450
  { class: "vc-alpha-picker" },
9474
9451
  null,
@@ -9476,12 +9453,12 @@ ${_html.style}
9476
9453
  /* HOISTED */
9477
9454
  );
9478
9455
  const _hoisted_4$e = [
9479
- _hoisted_3$o
9456
+ _hoisted_3$n
9480
9457
  ];
9481
9458
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9482
9459
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9483
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
9484
- vue.createElementVNode("div", _hoisted_2$q, [
9460
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
9461
+ vue.createElementVNode("div", _hoisted_2$p, [
9485
9462
  vue.createVNode(_component_Checkboard)
9486
9463
  ]),
9487
9464
  vue.createElementVNode(
@@ -10584,12 +10561,12 @@ ${_html.style}
10584
10561
  // }
10585
10562
  }
10586
10563
  };
10587
- const _hoisted_1$x = { class: "vc-editable-input" };
10588
- const _hoisted_2$p = ["aria-labelledby"];
10589
- const _hoisted_3$n = ["id", "for"];
10564
+ const _hoisted_1$w = { class: "vc-editable-input" };
10565
+ const _hoisted_2$o = ["aria-labelledby"];
10566
+ const _hoisted_3$m = ["id", "for"];
10590
10567
  const _hoisted_4$d = { class: "vc-input__desc" };
10591
10568
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10592
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
10569
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
10593
10570
  vue.withDirectives(vue.createElementVNode("input", {
10594
10571
  ref: "input",
10595
10572
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.val = $event),
@@ -10597,14 +10574,14 @@ ${_html.style}
10597
10574
  class: "vc-input__input",
10598
10575
  onKeydown: _cache[1] || (_cache[1] = (...args) => $options.handleKeyDown && $options.handleKeyDown(...args)),
10599
10576
  onInput: _cache[2] || (_cache[2] = (...args) => $options.update && $options.update(...args))
10600
- }, null, 40, _hoisted_2$p), [
10577
+ }, null, 40, _hoisted_2$o), [
10601
10578
  [vue.vModelText, $options.val]
10602
10579
  ]),
10603
10580
  vue.createElementVNode("span", {
10604
10581
  id: $options.labelId,
10605
10582
  for: $props.label,
10606
10583
  class: "vc-input__label"
10607
- }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$n),
10584
+ }, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$m),
10608
10585
  vue.createElementVNode(
10609
10586
  "span",
10610
10587
  _hoisted_4$d,
@@ -10684,21 +10661,21 @@ ${_html.style}
10684
10661
  }
10685
10662
  }
10686
10663
  };
10687
- const _hoisted_1$w = /* @__PURE__ */ vue.createElementVNode(
10664
+ const _hoisted_1$v = /* @__PURE__ */ vue.createElementVNode(
10688
10665
  "div",
10689
10666
  { class: "vc-saturation--white" },
10690
10667
  null,
10691
10668
  -1
10692
10669
  /* HOISTED */
10693
10670
  );
10694
- const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode(
10671
+ const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10695
10672
  "div",
10696
10673
  { class: "vc-saturation--black" },
10697
10674
  null,
10698
10675
  -1
10699
10676
  /* HOISTED */
10700
10677
  );
10701
- const _hoisted_3$m = /* @__PURE__ */ vue.createElementVNode(
10678
+ const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode(
10702
10679
  "div",
10703
10680
  { class: "vc-saturation-circle" },
10704
10681
  null,
@@ -10706,7 +10683,7 @@ ${_html.style}
10706
10683
  /* HOISTED */
10707
10684
  );
10708
10685
  const _hoisted_4$c = [
10709
- _hoisted_3$m
10686
+ _hoisted_3$l
10710
10687
  ];
10711
10688
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10712
10689
  return vue.openBlock(), vue.createElementBlock(
@@ -10720,8 +10697,8 @@ ${_html.style}
10720
10697
  onTouchstart: _cache[2] || (_cache[2] = (...args) => $options.handleChange && $options.handleChange(...args))
10721
10698
  },
10722
10699
  [
10723
- _hoisted_1$w,
10724
- _hoisted_2$o,
10700
+ _hoisted_1$v,
10701
+ _hoisted_2$n,
10725
10702
  vue.createElementVNode(
10726
10703
  "div",
10727
10704
  {
@@ -10869,16 +10846,16 @@ ${_html.style}
10869
10846
  }
10870
10847
  }
10871
10848
  };
10872
- const _hoisted_1$v = ["aria-valuenow"];
10873
- const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode(
10849
+ const _hoisted_1$u = ["aria-valuenow"];
10850
+ const _hoisted_2$m = /* @__PURE__ */ vue.createElementVNode(
10874
10851
  "div",
10875
10852
  { class: "vc-hue-picker" },
10876
10853
  null,
10877
10854
  -1
10878
10855
  /* HOISTED */
10879
10856
  );
10880
- const _hoisted_3$l = [
10881
- _hoisted_2$n
10857
+ const _hoisted_3$k = [
10858
+ _hoisted_2$m
10882
10859
  ];
10883
10860
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
10884
10861
  return vue.openBlock(), vue.createElementBlock(
@@ -10905,11 +10882,11 @@ ${_html.style}
10905
10882
  style: vue.normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),
10906
10883
  role: "presentation"
10907
10884
  },
10908
- _hoisted_3$l,
10885
+ _hoisted_3$k,
10909
10886
  4
10910
10887
  /* STYLE */
10911
10888
  )
10912
- ], 40, _hoisted_1$v)
10889
+ ], 40, _hoisted_1$u)
10913
10890
  ],
10914
10891
  2
10915
10892
  /* CLASS */
@@ -11005,17 +10982,17 @@ ${_html.style}
11005
10982
  }
11006
10983
  }
11007
10984
  };
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" };
10985
+ const _hoisted_1$t = { class: "vc-sketch-saturation-wrap" };
10986
+ const _hoisted_2$l = { class: "vc-sketch-controls" };
10987
+ const _hoisted_3$j = { class: "vc-sketch-sliders" };
11011
10988
  const _hoisted_4$b = { class: "vc-sketch-hue-wrap" };
11012
- const _hoisted_5$6 = {
10989
+ const _hoisted_5$7 = {
11013
10990
  key: 0,
11014
10991
  class: "vc-sketch-alpha-wrap"
11015
10992
  };
11016
- const _hoisted_6$5 = { class: "vc-sketch-color-wrap" };
11017
- const _hoisted_7$4 = ["aria-label"];
11018
- const _hoisted_8$4 = {
10993
+ const _hoisted_6$6 = { class: "vc-sketch-color-wrap" };
10994
+ const _hoisted_7$5 = ["aria-label"];
10995
+ const _hoisted_8$5 = {
11019
10996
  key: 0,
11020
10997
  class: "vc-sketch-field"
11021
10998
  };
@@ -11048,37 +11025,37 @@ ${_html.style}
11048
11025
  class: vue.normalizeClass(["vc-sketch", [$props.disableAlpha ? "vc-sketch__disable-alpha" : ""]])
11049
11026
  },
11050
11027
  [
11051
- vue.createElementVNode("div", _hoisted_1$u, [
11028
+ vue.createElementVNode("div", _hoisted_1$t, [
11052
11029
  vue.createVNode(_component_Saturation, {
11053
11030
  value: _ctx.colors,
11054
11031
  onChange: $options.childChange
11055
11032
  }, null, 8, ["value", "onChange"])
11056
11033
  ]),
11057
- vue.createElementVNode("div", _hoisted_2$m, [
11058
- vue.createElementVNode("div", _hoisted_3$k, [
11034
+ vue.createElementVNode("div", _hoisted_2$l, [
11035
+ vue.createElementVNode("div", _hoisted_3$j, [
11059
11036
  vue.createElementVNode("div", _hoisted_4$b, [
11060
11037
  vue.createVNode(_component_Hue, {
11061
11038
  value: _ctx.colors,
11062
11039
  onChange: $options.childChange
11063
11040
  }, null, 8, ["value", "onChange"])
11064
11041
  ]),
11065
- !$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$6, [
11042
+ !$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$7, [
11066
11043
  vue.createVNode(_component_Alpha, {
11067
11044
  value: _ctx.colors,
11068
11045
  onChange: $options.childChange
11069
11046
  }, null, 8, ["value", "onChange"])
11070
11047
  ])) : vue.createCommentVNode("v-if", true)
11071
11048
  ]),
11072
- vue.createElementVNode("div", _hoisted_6$5, [
11049
+ vue.createElementVNode("div", _hoisted_6$6, [
11073
11050
  vue.createElementVNode("div", {
11074
11051
  "aria-label": `Current color is ${$options.activeColor}`,
11075
11052
  class: "vc-sketch-active-color",
11076
11053
  style: vue.normalizeStyle({ background: $options.activeColor })
11077
- }, null, 12, _hoisted_7$4),
11054
+ }, null, 12, _hoisted_7$5),
11078
11055
  vue.createVNode(_component_Checkboard)
11079
11056
  ])
11080
11057
  ]),
11081
- !$props.disableFields ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$4, [
11058
+ !$props.disableFields ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$5, [
11082
11059
  vue.createCommentVNode(" rgba "),
11083
11060
  vue.createElementVNode("div", _hoisted_9$4, [
11084
11061
  vue.createVNode(_component_EdIn, {
@@ -11160,7 +11137,7 @@ ${_html.style}
11160
11137
  script.render = render;
11161
11138
  script.__file = "src/components/sketch/sketch.vue";
11162
11139
  script.install = install;
11163
- const _sfc_main$u = vue.defineComponent({
11140
+ const _sfc_main$t = vue.defineComponent({
11164
11141
  name: "PbColorPicker",
11165
11142
  components: {
11166
11143
  Sketch: script
@@ -11224,10 +11201,10 @@ ${_html.style}
11224
11201
  };
11225
11202
  }
11226
11203
  });
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
11204
+ const _hoisted_1$s = { class: "buttons" };
11205
+ const _hoisted_2$k = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1);
11206
+ const _hoisted_3$i = [
11207
+ _hoisted_2$k
11231
11208
  ];
11232
11209
  const _hoisted_4$a = { class: "sketch-wrap" };
11233
11210
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -11238,7 +11215,7 @@ ${_html.style}
11238
11215
  onKeydown: _cache[3] || (_cache[3] = vue.withModifiers(() => {
11239
11216
  }, ["stop"]))
11240
11217
  }, [
11241
- vue.createElementVNode("div", _hoisted_1$t, [
11218
+ vue.createElementVNode("div", _hoisted_1$s, [
11242
11219
  vue.renderSlot(_ctx.$slots, "button", vue.normalizeProps(vue.guardReactiveProps({ toggle: _ctx.toggle, color: _ctx.color })), () => [
11243
11220
  vue.createElementVNode("button", {
11244
11221
  class: vue.normalizeClass([{ none: !_ctx.color }, "pb-button picker-button"]),
@@ -11250,7 +11227,7 @@ ${_html.style}
11250
11227
  key: 0,
11251
11228
  class: "pb-button",
11252
11229
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.emptyColor && _ctx.emptyColor(...args))
11253
- }, _hoisted_3$j)) : vue.createCommentVNode("", true)
11230
+ }, _hoisted_3$i)) : vue.createCommentVNode("", true)
11254
11231
  ]),
11255
11232
  vue.createElementVNode("div", _hoisted_4$a, [
11256
11233
  _ctx.isShowColorPicker ? (vue.openBlock(), vue.createBlock(_component_Sketch, {
@@ -11264,15 +11241,15 @@ ${_html.style}
11264
11241
  [_directive_click_outside, () => _ctx.toggle(false)]
11265
11242
  ]);
11266
11243
  }
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" }, [
11244
+ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render]]);
11245
+ const _hoisted_1$r = { class: "group-editor group-editor-background" };
11246
+ const _hoisted_2$j = { class: "flex-align-center" };
11247
+ const _hoisted_3$h = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11271
11248
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Background" })
11272
11249
  ], -1);
11273
11250
  const _hoisted_4$9 = { class: "bs-layout-horizontal" };
11274
- const _hoisted_5$5 = { class: "color" };
11275
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
11251
+ const _hoisted_5$6 = { class: "color" };
11252
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11276
11253
  __name: "PbPropertyGroupEditorBackground",
11277
11254
  props: {
11278
11255
  group: {},
@@ -11302,11 +11279,11 @@ ${_html.style}
11302
11279
  });
11303
11280
  };
11304
11281
  return (_ctx, _cache) => {
11305
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11306
- vue.createElementVNode("div", _hoisted_2$k, [
11307
- _hoisted_3$i,
11282
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11283
+ vue.createElementVNode("div", _hoisted_2$j, [
11284
+ _hoisted_3$h,
11308
11285
  vue.createElementVNode("div", _hoisted_4$9, [
11309
- vue.createElementVNode("div", _hoisted_5$5, [
11286
+ vue.createElementVNode("div", _hoisted_5$6, [
11310
11287
  vue.createVNode(PbColorPicker, {
11311
11288
  value: color.value,
11312
11289
  "hide-delete": "",
@@ -11335,18 +11312,18 @@ ${_html.style}
11335
11312
  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";
11336
11313
  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";
11337
11314
  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";
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" }, [
11315
+ const _hoisted_1$q = { class: "group-editor group-editor-border" };
11316
+ const _hoisted_2$i = { class: "flex-align-center" };
11317
+ const _hoisted_3$g = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11341
11318
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Border" })
11342
11319
  ], -1);
11343
11320
  const _hoisted_4$8 = { class: "" };
11344
- const _hoisted_5$4 = /* @__PURE__ */ vue.createElementVNode("div", { class: "sub-title" }, [
11321
+ const _hoisted_5$5 = /* @__PURE__ */ vue.createElementVNode("div", { class: "sub-title" }, [
11345
11322
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Color" })
11346
11323
  ], -1);
11347
- const _hoisted_6$4 = { class: "color" };
11348
- const _hoisted_7$3 = { class: "mt-8" };
11349
- const _hoisted_8$3 = /* @__PURE__ */ vue.createElementVNode("div", { class: "sub-title" }, [
11324
+ const _hoisted_6$5 = { class: "color" };
11325
+ const _hoisted_7$4 = { class: "mt-8" };
11326
+ const _hoisted_8$4 = /* @__PURE__ */ vue.createElementVNode("div", { class: "sub-title" }, [
11350
11327
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Border Width" })
11351
11328
  ], -1);
11352
11329
  const _hoisted_9$3 = { class: "flex-grow-1 mt-4" };
@@ -11368,7 +11345,7 @@ ${_html.style}
11368
11345
  const _hoisted_18 = { class: "bg-gray-100 py-5 rounded-8" };
11369
11346
  const _hoisted_19 = { class: "" };
11370
11347
  const _hoisted_20 = { class: "mt-2" };
11371
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
11348
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11372
11349
  __name: "PbPropertyGroupEditorBorder",
11373
11350
  props: {
11374
11351
  group: {},
@@ -11406,12 +11383,12 @@ ${_html.style}
11406
11383
  const updateBorderBottomLeftRadius = (value) => updatePropertyValue({ borderBottomLeftRadius: value });
11407
11384
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: value });
11408
11385
  return (_ctx, _cache) => {
11409
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
11410
- vue.createElementVNode("div", _hoisted_2$j, [
11411
- _hoisted_3$h,
11386
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11387
+ vue.createElementVNode("div", _hoisted_2$i, [
11388
+ _hoisted_3$g,
11412
11389
  vue.createElementVNode("div", _hoisted_4$8, [
11413
- _hoisted_5$4,
11414
- vue.createElementVNode("div", _hoisted_6$4, [
11390
+ _hoisted_5$5,
11391
+ vue.createElementVNode("div", _hoisted_6$5, [
11415
11392
  vue.createVNode(PbColorPicker, {
11416
11393
  value: color.value,
11417
11394
  "hide-delete": "",
@@ -11429,8 +11406,8 @@ ${_html.style}
11429
11406
  }, null, 8, ["model-value"])
11430
11407
  ])
11431
11408
  ]),
11432
- vue.createElementVNode("div", _hoisted_7$3, [
11433
- _hoisted_8$3,
11409
+ vue.createElementVNode("div", _hoisted_7$4, [
11410
+ _hoisted_8$4,
11434
11411
  vue.createElementVNode("div", _hoisted_9$3, [
11435
11412
  vue.createElementVNode("div", _hoisted_10$1, [
11436
11413
  vue.createElementVNode("div", _hoisted_11$1, [
@@ -11515,23 +11492,23 @@ ${_html.style}
11515
11492
  };
11516
11493
  }
11517
11494
  });
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" }, [
11495
+ const _hoisted_1$p = { class: "group-editor group-editor-margin" };
11496
+ const _hoisted_2$h = { class: "flex-align-center" };
11497
+ const _hoisted_3$f = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11521
11498
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Margin" })
11522
11499
  ], -1);
11523
11500
  const _hoisted_4$7 = { class: "flex-grow-1" };
11524
- const _hoisted_5$3 = { class: "bg-gray-100 py-5 rounded-8" };
11525
- const _hoisted_6$3 = { class: "text-center" };
11526
- const _hoisted_7$2 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11527
- const _hoisted_8$2 = /* @__PURE__ */ vue.createElementVNode("div", {
11501
+ const _hoisted_5$4 = { class: "bg-gray-100 py-5 rounded-8" };
11502
+ const _hoisted_6$4 = { class: "text-center" };
11503
+ const _hoisted_7$3 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11504
+ const _hoisted_8$3 = /* @__PURE__ */ vue.createElementVNode("div", {
11528
11505
  class: "d-inline-block text-center text-gray-300",
11529
11506
  style: { "width": "30%", "font-size": "12px" }
11530
11507
  }, [
11531
11508
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11532
11509
  ], -1);
11533
11510
  const _hoisted_9$2 = { class: "text-center" };
11534
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
11511
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11535
11512
  __name: "PbPropertyGroupEditorMargin",
11536
11513
  props: {
11537
11514
  group: {},
@@ -11555,12 +11532,12 @@ ${_html.style}
11555
11532
  const updateTop = (value) => updatePropertyValue({ marginTop: value });
11556
11533
  const updateBottom = (value) => updatePropertyValue({ marginBottom: value });
11557
11534
  return (_ctx, _cache) => {
11558
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
11559
- vue.createElementVNode("div", _hoisted_2$i, [
11560
- _hoisted_3$g,
11535
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11536
+ vue.createElementVNode("div", _hoisted_2$h, [
11537
+ _hoisted_3$f,
11561
11538
  vue.createElementVNode("div", _hoisted_4$7, [
11562
- vue.createElementVNode("div", _hoisted_5$3, [
11563
- vue.createElementVNode("div", _hoisted_6$3, [
11539
+ vue.createElementVNode("div", _hoisted_5$4, [
11540
+ vue.createElementVNode("div", _hoisted_6$4, [
11564
11541
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11565
11542
  "model-value": top.value,
11566
11543
  class: "ml-4",
@@ -11569,7 +11546,7 @@ ${_html.style}
11569
11546
  "onUpdate:modelValue": updateTop
11570
11547
  }, null, 8, ["model-value"])
11571
11548
  ]),
11572
- vue.createElementVNode("div", _hoisted_7$2, [
11549
+ vue.createElementVNode("div", _hoisted_7$3, [
11573
11550
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11574
11551
  "model-value": left.value,
11575
11552
  class: "ml-4",
@@ -11577,7 +11554,7 @@ ${_html.style}
11577
11554
  width: "30%",
11578
11555
  "onUpdate:modelValue": updateLeft
11579
11556
  }, null, 8, ["model-value"]),
11580
- _hoisted_8$2,
11557
+ _hoisted_8$3,
11581
11558
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11582
11559
  "model-value": right.value,
11583
11560
  class: "ml-4",
@@ -11602,23 +11579,23 @@ ${_html.style}
11602
11579
  };
11603
11580
  }
11604
11581
  });
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" }, [
11582
+ const _hoisted_1$o = { class: "group-editor group-editor-padding" };
11583
+ const _hoisted_2$g = { class: "flex-align-center" };
11584
+ const _hoisted_3$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
11608
11585
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Padding" })
11609
11586
  ], -1);
11610
11587
  const _hoisted_4$6 = { class: "flex-grow-1" };
11611
- const _hoisted_5$2 = { class: "bg-gray-100 py-5 rounded-8" };
11612
- const _hoisted_6$2 = { class: "text-center" };
11613
- const _hoisted_7$1 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11614
- const _hoisted_8$1 = /* @__PURE__ */ vue.createElementVNode("div", {
11588
+ const _hoisted_5$3 = { class: "bg-gray-100 py-5 rounded-8" };
11589
+ const _hoisted_6$3 = { class: "text-center" };
11590
+ const _hoisted_7$2 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
11591
+ const _hoisted_8$2 = /* @__PURE__ */ vue.createElementVNode("div", {
11615
11592
  class: "d-inline-block text-center text-gray-300",
11616
11593
  style: { "width": "30%", "font-size": "12px" }
11617
11594
  }, [
11618
11595
  /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "add")
11619
11596
  ], -1);
11620
11597
  const _hoisted_9$1 = { class: "text-center" };
11621
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
11598
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
11622
11599
  __name: "PbPropertyGroupEditorPadding",
11623
11600
  props: {
11624
11601
  group: {},
@@ -11642,12 +11619,12 @@ ${_html.style}
11642
11619
  const updateTop = (value) => updatePropertyValue({ paddingTop: value });
11643
11620
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: value });
11644
11621
  return (_ctx, _cache) => {
11645
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
11646
- vue.createElementVNode("div", _hoisted_2$h, [
11647
- _hoisted_3$f,
11622
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
11623
+ vue.createElementVNode("div", _hoisted_2$g, [
11624
+ _hoisted_3$e,
11648
11625
  vue.createElementVNode("div", _hoisted_4$6, [
11649
- vue.createElementVNode("div", _hoisted_5$2, [
11650
- vue.createElementVNode("div", _hoisted_6$2, [
11626
+ vue.createElementVNode("div", _hoisted_5$3, [
11627
+ vue.createElementVNode("div", _hoisted_6$3, [
11651
11628
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11652
11629
  "model-value": top.value,
11653
11630
  class: "ml-4",
@@ -11656,7 +11633,7 @@ ${_html.style}
11656
11633
  "onUpdate:modelValue": updateTop
11657
11634
  }, null, 8, ["model-value"])
11658
11635
  ]),
11659
- vue.createElementVNode("div", _hoisted_7$1, [
11636
+ vue.createElementVNode("div", _hoisted_7$2, [
11660
11637
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11661
11638
  "model-value": left.value,
11662
11639
  class: "ml-4",
@@ -11664,7 +11641,7 @@ ${_html.style}
11664
11641
  width: "30%",
11665
11642
  "onUpdate:modelValue": updateLeft
11666
11643
  }, null, 8, ["model-value"]),
11667
- _hoisted_8$1,
11644
+ _hoisted_8$2,
11668
11645
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
11669
11646
  "model-value": right.value,
11670
11647
  class: "ml-4",
@@ -11715,7 +11692,7 @@ ${_html.style}
11715
11692
  propertyType: "text"
11716
11693
  }
11717
11694
  ],
11718
- propertyGroupEditor: () => _sfc_main$w
11695
+ propertyGroupEditor: () => _sfc_main$v
11719
11696
  };
11720
11697
  };
11721
11698
  const sizeGroup = () => {
@@ -11754,7 +11731,7 @@ ${_html.style}
11754
11731
  propertyType: "text"
11755
11732
  }
11756
11733
  ],
11757
- propertyGroupEditor: () => _sfc_main$v
11734
+ propertyGroupEditor: () => _sfc_main$u
11758
11735
  };
11759
11736
  };
11760
11737
  const marginGroup = () => {
@@ -11783,7 +11760,7 @@ ${_html.style}
11783
11760
  propertyType: "text"
11784
11761
  }
11785
11762
  ],
11786
- propertyGroupEditor: () => _sfc_main$r
11763
+ propertyGroupEditor: () => _sfc_main$q
11787
11764
  };
11788
11765
  };
11789
11766
  const paddingGroup = () => {
@@ -11812,7 +11789,7 @@ ${_html.style}
11812
11789
  propertyType: "text"
11813
11790
  }
11814
11791
  ],
11815
- propertyGroupEditor: () => _sfc_main$q
11792
+ propertyGroupEditor: () => _sfc_main$p
11816
11793
  };
11817
11794
  };
11818
11795
  const commonGroup = () => {
@@ -11879,7 +11856,7 @@ ${_html.style}
11879
11856
  propertyType: "image"
11880
11857
  }
11881
11858
  ],
11882
- propertyGroupEditor: () => _sfc_main$t
11859
+ propertyGroupEditor: () => _sfc_main$s
11883
11860
  };
11884
11861
  };
11885
11862
  const borderGroup = () => {
@@ -11933,7 +11910,7 @@ ${_html.style}
11933
11910
  propertyType: "text"
11934
11911
  }
11935
11912
  ],
11936
- propertyGroupEditor: () => _sfc_main$s
11913
+ propertyGroupEditor: () => _sfc_main$r
11937
11914
  };
11938
11915
  };
11939
11916
  const defaultPropertyGroups = () => {
@@ -11957,7 +11934,7 @@ ${_html.style}
11957
11934
  },
11958
11935
  localized: false,
11959
11936
  allowsChild: () => true,
11960
- creator: () => _sfc_main$x
11937
+ creator: () => _sfc_main$w
11961
11938
  },
11962
11939
  {
11963
11940
  partType: "Section",
@@ -11973,7 +11950,7 @@ ${_html.style}
11973
11950
  },
11974
11951
  localized: true,
11975
11952
  allowsChild: () => true,
11976
- creator: () => _sfc_main$x
11953
+ creator: () => _sfc_main$w
11977
11954
  },
11978
11955
  {
11979
11956
  partType: "Section",
@@ -11989,7 +11966,7 @@ ${_html.style}
11989
11966
  },
11990
11967
  localized: true,
11991
11968
  allowsChild: () => true,
11992
- creator: () => _sfc_main$x
11969
+ creator: () => _sfc_main$w
11993
11970
  }
11994
11971
  ];
11995
11972
  const sectionParts = [
@@ -12006,7 +11983,7 @@ ${_html.style}
12006
11983
  },
12007
11984
  localized: false,
12008
11985
  allowsChild: () => true,
12009
- creator: () => _sfc_main$x
11986
+ creator: () => _sfc_main$w
12010
11987
  }
12011
11988
  ];
12012
11989
  const blockParts = [
@@ -12021,14 +11998,14 @@ ${_html.style}
12021
11998
  initialProperties: {},
12022
11999
  localized: false,
12023
12000
  allowsChild: () => true,
12024
- creator: () => _sfc_main$z
12001
+ creator: () => _sfc_main$y
12025
12002
  }
12026
12003
  ];
12027
12004
  const widgets = [
12028
12005
  {
12029
12006
  partType: "Widget",
12030
12007
  partName: "TextWidget",
12031
- caption: "Text Widget",
12008
+ caption: "Text",
12032
12009
  icon: "insert_text",
12033
12010
  propertyGroups: [
12034
12011
  {
@@ -12071,7 +12048,7 @@ ${_html.style}
12071
12048
  {
12072
12049
  partType: "Widget",
12073
12050
  partName: "ImageWidget",
12074
- caption: "Image Widget",
12051
+ caption: "Image",
12075
12052
  icon: "imagesmode",
12076
12053
  propertyGroups: [
12077
12054
  {
@@ -12097,7 +12074,7 @@ ${_html.style}
12097
12074
  {
12098
12075
  partType: "Widget",
12099
12076
  partName: "HtmlWidget",
12100
- caption: "HTML Widget",
12077
+ caption: "HTML",
12101
12078
  icon: "code",
12102
12079
  propertyGroups: [
12103
12080
  {
@@ -12120,32 +12097,6 @@ ${_html.style}
12120
12097
  localized: true,
12121
12098
  allowsChild: () => false,
12122
12099
  creator: () => _sfc_main$3$1
12123
- },
12124
- {
12125
- partType: "Widget",
12126
- partName: "ProductListWidget",
12127
- caption: "Product List Widget",
12128
- icon: "lists",
12129
- propertyGroups: [
12130
- {
12131
- groupName: "productList",
12132
- caption: "Product List",
12133
- properties: [
12134
- {
12135
- propertyName: "product",
12136
- caption: "Product",
12137
- propertyType: "product",
12138
- params: "",
12139
- localized: true
12140
- }
12141
- ]
12142
- },
12143
- ...defaultWidgetPropertyGroups()
12144
- ],
12145
- initialProperties: {},
12146
- localized: true,
12147
- allowsChild: () => false,
12148
- creator: () => _sfc_main$2$1
12149
12100
  }
12150
12101
  ];
12151
12102
  const partDefinitions = {};
@@ -12178,6 +12129,13 @@ ${_html.style}
12178
12129
  ]
12179
12130
  }
12180
12131
  ];
12132
+ const widgetPartDefinitions = [
12133
+ {
12134
+ groupName: "Widget",
12135
+ caption: "Widget",
12136
+ partDefinitions: widgets
12137
+ }
12138
+ ];
12181
12139
  const blockWidgetPartDefinitions = [
12182
12140
  {
12183
12141
  groupName: "Block",
@@ -12371,6 +12329,36 @@ ${_html.style}
12371
12329
  };
12372
12330
  __publicField(_AddPartCommand, "COMMAND_ID", "AddPart");
12373
12331
  let AddPartCommand = _AddPartCommand;
12332
+ const _AddSectionCommand = class _AddSectionCommand {
12333
+ constructor(modal) {
12334
+ __publicField(this, "commandId", _AddSectionCommand.COMMAND_ID);
12335
+ __publicField(this, "caption", "Add Section");
12336
+ this.modal = modal;
12337
+ }
12338
+ execute(pageBuilder, args) {
12339
+ const def = pageBuilder.partManager.getSectionDefinition();
12340
+ if (!def)
12341
+ return;
12342
+ addPart(pageBuilder, def);
12343
+ }
12344
+ };
12345
+ __publicField(_AddSectionCommand, "COMMAND_ID", "AddSection");
12346
+ let AddSectionCommand = _AddSectionCommand;
12347
+ const _AddBlockCommand = class _AddBlockCommand {
12348
+ constructor(modal) {
12349
+ __publicField(this, "commandId", _AddBlockCommand.COMMAND_ID);
12350
+ __publicField(this, "caption", "Add Block");
12351
+ this.modal = modal;
12352
+ }
12353
+ execute(pageBuilder, args) {
12354
+ const def = pageBuilder.partManager.getBlockDefinition();
12355
+ if (!def)
12356
+ return;
12357
+ addPart(pageBuilder, def);
12358
+ }
12359
+ };
12360
+ __publicField(_AddBlockCommand, "COMMAND_ID", "AddBlock");
12361
+ let AddBlockCommand = _AddBlockCommand;
12374
12362
  const addPart = (pageBuilder, def, attrs) => {
12375
12363
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
12376
12364
  const selected = pageBuilder.context.getSelectedParts()[0];
@@ -12459,29 +12447,13 @@ ${_html.style}
12459
12447
  }
12460
12448
  };
12461
12449
  const addSectionBefore = (pageBuilder, modal, args) => {
12462
- const def = args && args.partDefinition;
12463
- if (!def) {
12464
- const partDefinitionGroups = designPartDefinitions;
12465
- openPartAddModal(modal, {
12466
- ...args || {},
12467
- pageBuilder,
12468
- partDefinitionGroups
12469
- }, (part, attrs) => {
12470
- addSectionBefore(pageBuilder, modal, {
12471
- ...args || {},
12472
- partDefinition: part,
12473
- ...attrs || {}
12474
- });
12475
- });
12476
- return;
12477
- }
12478
12450
  const selected = pageBuilder.context.getSelectedParts()[0];
12479
12451
  if (!selected)
12480
12452
  return;
12481
12453
  const section = pageBuilder.partManager.findNearestSection(selected);
12482
12454
  if (!section || !section.parent || !section.parent.children)
12483
12455
  return;
12484
- const newSection = createPartWithDefinition(def);
12456
+ const newSection = createSection(pageBuilder);
12485
12457
  if (!newSection)
12486
12458
  return;
12487
12459
  const child = createBlock(pageBuilder);
@@ -12490,29 +12462,13 @@ ${_html.style}
12490
12462
  insertParts(pageBuilder, section.parent.partId, index, [newSection], true);
12491
12463
  };
12492
12464
  const addSectionAfter = (pageBuilder, modal, args) => {
12493
- const def = args && args.partDefinition;
12494
- if (!def) {
12495
- const partDefinitionGroups = designPartDefinitions;
12496
- openPartAddModal(modal, {
12497
- ...args || {},
12498
- pageBuilder,
12499
- partDefinitionGroups
12500
- }, (part, attrs) => {
12501
- addSectionAfter(pageBuilder, modal, {
12502
- ...args || {},
12503
- partDefinition: part,
12504
- ...attrs || {}
12505
- });
12506
- });
12507
- return;
12508
- }
12509
12465
  const selected = pageBuilder.context.getSelectedParts()[0];
12510
12466
  if (!selected)
12511
12467
  return;
12512
12468
  const section = pageBuilder.partManager.findNearestSection(selected);
12513
12469
  if (!section || !section.parent || !section.parent.children)
12514
12470
  return;
12515
- const newSection = createPartWithDefinition(def);
12471
+ const newSection = createSection(pageBuilder);
12516
12472
  if (!newSection)
12517
12473
  return;
12518
12474
  const child = createBlock(pageBuilder);
@@ -12635,7 +12591,7 @@ ${_html.style}
12635
12591
  this.modal = modal;
12636
12592
  }
12637
12593
  execute(pageBuilder, args) {
12638
- addSectionBefore(pageBuilder, this.modal, args);
12594
+ addSectionBefore(pageBuilder, this.modal);
12639
12595
  }
12640
12596
  };
12641
12597
  __publicField(_AddSectionAboveCommand, "COMMAND_ID", "AddSectionAbove");
@@ -12648,7 +12604,7 @@ ${_html.style}
12648
12604
  this.modal = modal;
12649
12605
  }
12650
12606
  execute(pageBuilder, args) {
12651
- addSectionAfter(pageBuilder, this.modal, args);
12607
+ addSectionAfter(pageBuilder, this.modal);
12652
12608
  }
12653
12609
  };
12654
12610
  __publicField(_AddSectionBelowCommand, "COMMAND_ID", "AddSectionBelow");
@@ -12860,6 +12816,8 @@ ${_html.style}
12860
12816
  new OpenAddPartModalCommand(modal),
12861
12817
  new OpenAddWidgetModalCommand(modal),
12862
12818
  new AddPartCommand(modal),
12819
+ new AddSectionCommand(modal),
12820
+ new AddBlockCommand(modal),
12863
12821
  new AddSectionAboveCommand(modal),
12864
12822
  new AddSectionBelowCommand(modal),
12865
12823
  new AddBlockLeftCommand(),
@@ -13152,14 +13110,20 @@ ${_html.style}
13152
13110
  groupId: "add",
13153
13111
  buttons: [
13154
13112
  {
13155
- buttonId: "core:openAddPartLayer",
13156
- caption: "Add Design Part...",
13113
+ buttonId: "core:addSection",
13114
+ caption: "Add Section",
13157
13115
  icon: "add_row_below",
13158
- handler: (modeler) => modeler.commandRegistry.executeCommand(OpenAddPartModalCommand.COMMAND_ID)
13116
+ handler: (modeler) => modeler.commandRegistry.executeCommand(AddSectionCommand.COMMAND_ID)
13117
+ },
13118
+ {
13119
+ buttonId: "core:addBlock",
13120
+ caption: "Add Block",
13121
+ icon: "add_column_right",
13122
+ handler: (modeler) => modeler.commandRegistry.executeCommand(AddBlockCommand.COMMAND_ID)
13159
13123
  },
13160
13124
  {
13161
- buttonId: "core:openAddWidgetLayer",
13162
- caption: "Add Widget...",
13125
+ buttonId: "core:addWidget",
13126
+ caption: "Add Widget",
13163
13127
  icon: "desktop_landscape_add",
13164
13128
  handler: (modeler) => modeler.commandRegistry.executeCommand(OpenAddWidgetModalCommand.COMMAND_ID)
13165
13129
  }
@@ -13365,6 +13329,8 @@ ${_html.style}
13365
13329
  __publicField(this, "scale", vue.ref(1));
13366
13330
  __publicField(this, "locale", vue.ref("en"));
13367
13331
  __publicField(this, "locales", vue.ref(["en"]));
13332
+ __publicField(this, "customWidgets", []);
13333
+ __publicField(this, "providers", {});
13368
13334
  this.model = new Model();
13369
13335
  this.context = new PageBuilderContextImpl(this);
13370
13336
  this.editMode = "free";
@@ -13383,6 +13349,27 @@ ${_html.style}
13383
13349
  setLocales(locales) {
13384
13350
  this.locales.value = locales || ["en"];
13385
13351
  }
13352
+ getCustomWidgetComponent(part) {
13353
+ const def = this.partManager.getPartDefinition(part.partName);
13354
+ if (def) {
13355
+ return def.component;
13356
+ }
13357
+ }
13358
+ getProvider(name) {
13359
+ return this.providers[name];
13360
+ }
13361
+ watchCustomWidgetData(part) {
13362
+ const def = this.partManager.getPartDefinition(part.partName);
13363
+ if (!def || !def.dataWatcher)
13364
+ return false;
13365
+ return def.dataWatcher(part.properties);
13366
+ }
13367
+ provideCustomWidgetData(part) {
13368
+ const def = this.partManager.getPartDefinition(part.partName);
13369
+ if (!def || !def.dataProvider)
13370
+ return Promise.resolve();
13371
+ return def.dataProvider(part.properties);
13372
+ }
13386
13373
  registerPlugin(plugin) {
13387
13374
  if (plugin.partDefinitions)
13388
13375
  this.partManager.registerPartDefinitions(plugin.partDefinitions);
@@ -13399,6 +13386,32 @@ ${_html.style}
13399
13386
  if (plugin.toolButtonGroups)
13400
13387
  this.toolButtonRegistry.registerToolButtonGroups(plugin.toolButtonGroups);
13401
13388
  }
13389
+ registerCustomPlugin(plugin) {
13390
+ if (plugin.widgets) {
13391
+ const partDefinitions2 = {};
13392
+ plugin.widgets.forEach((v) => {
13393
+ const w = { ...v };
13394
+ w.partType = "Widget";
13395
+ w.creator = () => _sfc_main$B;
13396
+ w.propertyGroups = [...w.propertyGroups, ...defaultWidgetPropertyGroups()];
13397
+ partDefinitions2[v.partName] = w;
13398
+ const found = this.customWidgets.find((x) => x.partName === v.partName);
13399
+ if (!found) {
13400
+ this.customWidgets.push(w);
13401
+ }
13402
+ });
13403
+ this.partManager.registerPartDefinitions(partDefinitions2);
13404
+ }
13405
+ if (plugin.providers) {
13406
+ this.providers = {
13407
+ ...this.providers,
13408
+ ...plugin.providers
13409
+ };
13410
+ }
13411
+ if (plugin.propertyEditors) {
13412
+ this.partManager.registerPartPropertyEditors(plugin.propertyEditors);
13413
+ }
13414
+ }
13402
13415
  initData(content) {
13403
13416
  this.model.rootPart.pageBuilderId = this.instanceId;
13404
13417
  this.model.rootPart.language = this.locale.value;
@@ -13470,6 +13483,9 @@ ${_html.style}
13470
13483
  ]
13471
13484
  });
13472
13485
  }
13486
+ getCustomWidgets() {
13487
+ return this.customWidgets;
13488
+ }
13473
13489
  getEmptyPageContent() {
13474
13490
  const block = new Block();
13475
13491
  const section = new Section();
@@ -13490,11 +13506,11 @@ ${_html.style}
13490
13506
  });
13491
13507
  }
13492
13508
  }
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
13509
+ const _hoisted_1$n = /* @__PURE__ */ vue.createElementVNode("i", { class: "material-icons-outlined" }, "add_circle_outline", -1);
13510
+ const _hoisted_2$f = [
13511
+ _hoisted_1$n
13496
13512
  ];
13497
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13513
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13498
13514
  __name: "PbPage",
13499
13515
  props: {
13500
13516
  page: {},
@@ -13515,7 +13531,7 @@ ${_html.style}
13515
13531
  const insertSection = (index) => {
13516
13532
  if (!props.page)
13517
13533
  return;
13518
- editor.commandRegistry.executeCommand(OpenAddPartModalCommand.COMMAND_ID);
13534
+ editor.commandRegistry.executeCommand(AddSectionCommand.COMMAND_ID);
13519
13535
  };
13520
13536
  return (_ctx, _cache) => {
13521
13537
  var _a;
@@ -13527,7 +13543,7 @@ ${_html.style}
13527
13543
  class: vue.normalizeClass([selected.value && "selected", _ctx.isMobilePage ? "mobile" : "pc", "pb-page-content"])
13528
13544
  }, [
13529
13545
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_a = _ctx.page) == null ? void 0 : _a.children, (section, index) => {
13530
- return vue.openBlock(), vue.createBlock(_sfc_main$x, {
13546
+ return vue.openBlock(), vue.createBlock(_sfc_main$w, {
13531
13547
  key: section.partId,
13532
13548
  part: section
13533
13549
  }, null, 8, ["part"]);
@@ -13539,13 +13555,13 @@ ${_html.style}
13539
13555
  var _a2, _b;
13540
13556
  return insertSection(((_b = (_a2 = _ctx.page) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) || 0);
13541
13557
  })
13542
- }, _hoisted_2$g)
13558
+ }, _hoisted_2$f)
13543
13559
  ], 4);
13544
13560
  };
13545
13561
  }
13546
13562
  });
13547
- const _hoisted_1$n = /* @__PURE__ */ vue.createElementVNode("div", { style: { "width": "20px" } }, null, -1);
13548
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
13563
+ const _hoisted_1$m = /* @__PURE__ */ vue.createElementVNode("div", { style: { "width": "20px" } }, null, -1);
13564
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
13549
13565
  __name: "PbCanvas",
13550
13566
  setup(__props) {
13551
13567
  const pageBuilder = usePageBuilderEditor();
@@ -13592,13 +13608,13 @@ ${_html.style}
13592
13608
  style: vue.normalizeStyle(style.value),
13593
13609
  class: "pb-canvas"
13594
13610
  }, [
13595
- vue.createVNode(_sfc_main$p, {
13611
+ vue.createVNode(_sfc_main$o, {
13596
13612
  "is-mobile-page": true,
13597
13613
  page: pageS.value,
13598
13614
  width: 420
13599
13615
  }, null, 8, ["page"]),
13600
- _hoisted_1$n,
13601
- vue.createVNode(_sfc_main$p, {
13616
+ _hoisted_1$m,
13617
+ vue.createVNode(_sfc_main$o, {
13602
13618
  "is-mobile-page": false,
13603
13619
  page: pageL.value,
13604
13620
  width: 1024
@@ -13609,8 +13625,8 @@ ${_html.style}
13609
13625
  }
13610
13626
  });
13611
13627
  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({
13628
+ const _hoisted_1$l = { class: "pb-canvas-frame" };
13629
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13614
13630
  __name: "PbCanvasFrame",
13615
13631
  setup(__props) {
13616
13632
  const pageBuilderEditor = usePageBuilderEditor();
@@ -13652,7 +13668,7 @@ ${_html.style}
13652
13668
  );
13653
13669
  return (_ctx, _cache) => {
13654
13670
  var _a, _b, _c, _d;
13655
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
13671
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13656
13672
  vue.createElementVNode("iframe", {
13657
13673
  ref_key: "iframeRef",
13658
13674
  ref: iframeRef,
@@ -13662,14 +13678,14 @@ ${_html.style}
13662
13678
  key: 0,
13663
13679
  to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
13664
13680
  }, [
13665
- vue.createVNode(_sfc_main$o)
13681
+ vue.createVNode(_sfc_main$n)
13666
13682
  ], 8, ["to"])) : vue.createCommentVNode("", true)
13667
13683
  ]);
13668
13684
  };
13669
13685
  }
13670
13686
  });
13671
- const _hoisted_1$l = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13672
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
13687
+ const _hoisted_1$k = { class: "pb-tool-button bs-layout-horizontal flex-align-center" };
13688
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13673
13689
  __name: "PbToolbarButton",
13674
13690
  props: {
13675
13691
  button: {}
@@ -13682,7 +13698,7 @@ ${_html.style}
13682
13698
  (_b = (_a = props.button).handler) == null ? void 0 : _b.call(_a, pageBuilder);
13683
13699
  };
13684
13700
  return (_ctx, _cache) => {
13685
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
13701
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
13686
13702
  vue.createElementVNode("div", {
13687
13703
  class: "tool-button bs-clickable",
13688
13704
  onClick: handleClick
@@ -13697,17 +13713,17 @@ ${_html.style}
13697
13713
  };
13698
13714
  }
13699
13715
  });
13700
- const _hoisted_1$k = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13701
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
13716
+ const _hoisted_1$j = { class: "pb-tool-button-group bs-layout-horizontal flex-align-center" };
13717
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13702
13718
  __name: "PbToolbarButtonGroup",
13703
13719
  props: {
13704
13720
  group: {}
13705
13721
  },
13706
13722
  setup(__props) {
13707
13723
  return (_ctx, _cache) => {
13708
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
13724
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
13709
13725
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.group.buttons, (button) => {
13710
- return vue.openBlock(), vue.createBlock(_sfc_main$m, {
13726
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
13711
13727
  key: button.buttonId,
13712
13728
  button
13713
13729
  }, null, 8, ["button"]);
@@ -13716,11 +13732,11 @@ ${_html.style}
13716
13732
  };
13717
13733
  }
13718
13734
  });
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);
13735
+ const _hoisted_1$i = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
13736
+ const _hoisted_2$e = { class: "bs-layout-horizontal align-items-center" };
13737
+ const _hoisted_3$d = /* @__PURE__ */ vue.createElementVNode("div", { class: "flex-grow-1" }, null, -1);
13722
13738
  const _hoisted_4$5 = { class: "mr-8" };
13723
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13739
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
13724
13740
  __name: "PbToolbar",
13725
13741
  props: {
13726
13742
  plugin: {}
@@ -13771,10 +13787,10 @@ ${_html.style}
13771
13787
  });
13772
13788
  return (_ctx, _cache) => {
13773
13789
  var _a, _b, _c;
13774
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
13775
- vue.createElementVNode("div", _hoisted_2$f, [
13790
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
13791
+ vue.createElementVNode("div", _hoisted_2$e, [
13776
13792
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
13777
- return vue.openBlock(), vue.createBlock(_sfc_main$l, {
13793
+ return vue.openBlock(), vue.createBlock(_sfc_main$k, {
13778
13794
  key: group.groupId,
13779
13795
  group
13780
13796
  }, null, 8, ["group"]);
@@ -13796,7 +13812,7 @@ ${_html.style}
13796
13812
  placeholder: "Scale"
13797
13813
  }, null, 8, ["modelValue"])
13798
13814
  ]),
13799
- _hoisted_3$e,
13815
+ _hoisted_3$d,
13800
13816
  vue.createElementVNode("div", _hoisted_4$5, [
13801
13817
  _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)
13802
13818
  ])
@@ -13804,25 +13820,25 @@ ${_html.style}
13804
13820
  };
13805
13821
  }
13806
13822
  });
13807
- const _hoisted_1$i = { class: "pb-menu bs-layout-vertical" };
13808
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
13823
+ const _hoisted_1$h = { class: "pb-menu bs-layout-vertical" };
13824
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13809
13825
  __name: "PbMenu",
13810
13826
  props: {
13811
13827
  toolbarPlugin: {}
13812
13828
  },
13813
13829
  setup(__props) {
13814
13830
  return (_ctx, _cache) => {
13815
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
13816
- vue.createVNode(_sfc_main$k, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13831
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
13832
+ vue.createVNode(_sfc_main$j, { plugin: _ctx.toolbarPlugin }, null, 8, ["plugin"])
13817
13833
  ]);
13818
13834
  };
13819
13835
  }
13820
13836
  });
13821
- const _hoisted_1$h = {
13837
+ const _hoisted_1$g = {
13822
13838
  key: 1,
13823
13839
  class: "bs-layout-vertical border"
13824
13840
  };
13825
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13841
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13826
13842
  __name: "PbNavigator",
13827
13843
  setup(__props) {
13828
13844
  const pageBuilder = usePageBuilderEditor();
@@ -14048,7 +14064,7 @@ ${_html.style}
14048
14064
  ], 512)
14049
14065
  ]),
14050
14066
  _: 1
14051
- }, 8, ["tab-id"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
14067
+ }, 8, ["tab-id"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
14052
14068
  vue.createElementVNode("div", {
14053
14069
  ref_key: "treeS",
14054
14070
  ref: treeS,
@@ -14081,7 +14097,7 @@ ${_html.style}
14081
14097
  };
14082
14098
  }
14083
14099
  });
14084
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14100
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14085
14101
  __name: "PbSidebarPropertyEditor",
14086
14102
  props: {
14087
14103
  property: {},
@@ -14136,13 +14152,13 @@ ${_html.style}
14136
14152
  };
14137
14153
  }
14138
14154
  });
14139
- const _hoisted_1$g = { class: "pb-sidebar-property-group" };
14140
- const _hoisted_2$e = {
14155
+ const _hoisted_1$f = { class: "pb-sidebar-property-group" };
14156
+ const _hoisted_2$d = {
14141
14157
  key: 0,
14142
14158
  class: "group-title"
14143
14159
  };
14144
- const _hoisted_3$d = ["textContent"];
14145
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14160
+ const _hoisted_3$c = ["textContent"];
14161
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14146
14162
  __name: "PbSidebarPropertyGroupEditor",
14147
14163
  props: {
14148
14164
  group: {},
@@ -14176,11 +14192,11 @@ ${_html.style}
14176
14192
  return (_b = (_a = props.group).propertyGroupEditor) == null ? void 0 : _b.call(_a, props.group, props.selectedParts);
14177
14193
  });
14178
14194
  return (_ctx, _cache) => {
14179
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
14180
- _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
14195
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14196
+ _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d, [
14181
14197
  vue.createElementVNode("label", {
14182
14198
  textContent: vue.toDisplayString(_ctx.group.caption)
14183
- }, null, 8, _hoisted_3$d)
14199
+ }, null, 8, _hoisted_3$c)
14184
14200
  ])) : vue.createCommentVNode("", true),
14185
14201
  _ctx.partsKey ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
14186
14202
  groupEditor.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(groupEditor.value), {
@@ -14188,7 +14204,7 @@ ${_html.style}
14188
14204
  group: _ctx.group,
14189
14205
  "selected-parts": _ctx.selectedParts
14190
14206
  }, null, 8, ["group", "selected-parts"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.group.properties, (property) => {
14191
- return vue.openBlock(), vue.createBlock(_sfc_main$h, {
14207
+ return vue.openBlock(), vue.createBlock(_sfc_main$g, {
14192
14208
  key: `${_ctx.partsKey}_${property.propertyName}`,
14193
14209
  property,
14194
14210
  "selected-parts": _ctx.selectedParts
@@ -14199,17 +14215,17 @@ ${_html.style}
14199
14215
  };
14200
14216
  }
14201
14217
  });
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" }, [
14218
+ const _hoisted_1$e = { class: "property-editor property-editor-local-part flex-align-center pt-16" };
14219
+ const _hoisted_2$c = /* @__PURE__ */ vue.createElementVNode("div", { class: "title" }, [
14204
14220
  /* @__PURE__ */ vue.createElementVNode("label", { textContent: "Display Schedule" })
14205
14221
  ], -1);
14206
- const _hoisted_3$c = { class: "bs-layout-horizontal" };
14222
+ const _hoisted_3$b = { class: "bs-layout-horizontal" };
14207
14223
  const _hoisted_4$4 = { class: "mr-2" };
14208
- const _hoisted_5$1 = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "more_horiz", -1);
14209
- const _hoisted_6$1 = [
14210
- _hoisted_5$1
14224
+ const _hoisted_5$2 = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "more_horiz", -1);
14225
+ const _hoisted_6$2 = [
14226
+ _hoisted_5$2
14211
14227
  ];
14212
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14228
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14213
14229
  __name: "PbPropertyLocalMarketingPart",
14214
14230
  props: {
14215
14231
  selectedPart: {}
@@ -14278,9 +14294,9 @@ ${_html.style}
14278
14294
  }
14279
14295
  };
14280
14296
  return (_ctx, _cache) => {
14281
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
14282
- _hoisted_2$d,
14283
- vue.createElementVNode("div", _hoisted_3$c, [
14297
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14298
+ _hoisted_2$c,
14299
+ vue.createElementVNode("div", _hoisted_3$b, [
14284
14300
  vue.createElementVNode("div", _hoisted_4$4, [
14285
14301
  vue.createVNode(vue.unref(bluesea.BSDateRange), {
14286
14302
  "from-value": startDt.value,
@@ -14290,15 +14306,15 @@ ${_html.style}
14290
14306
  }, null, 8, ["from-value", "to-value"])
14291
14307
  ]),
14292
14308
  vue.createElementVNode("div", null, [
14293
- vue.createElementVNode("button", { onClick: selectSchedule }, _hoisted_6$1)
14309
+ vue.createElementVNode("button", { onClick: selectSchedule }, _hoisted_6$2)
14294
14310
  ])
14295
14311
  ])
14296
14312
  ]);
14297
14313
  };
14298
14314
  }
14299
14315
  });
14300
- const _hoisted_1$e = { class: "pb-sidebar-properties" };
14301
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14316
+ const _hoisted_1$d = { class: "pb-sidebar-properties" };
14317
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14302
14318
  __name: "PbSidebarProperties",
14303
14319
  setup(__props) {
14304
14320
  const pageBuilder = usePageBuilderEditor();
@@ -14324,8 +14340,8 @@ ${_html.style}
14324
14340
  return part.isLocalMarketingPart();
14325
14341
  });
14326
14342
  return (_ctx, _cache) => {
14327
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
14328
- showLocalMarketingPart.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
14343
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14344
+ showLocalMarketingPart.value ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
14329
14345
  key: 0,
14330
14346
  "selected-part": vue.unref(selectedParts)[0]
14331
14347
  }, null, 8, ["selected-part"])) : vue.createCommentVNode("", true),
@@ -14333,7 +14349,7 @@ ${_html.style}
14333
14349
  return vue.openBlock(), vue.createElementBlock("div", {
14334
14350
  key: `${partsKey.value}_${group.groupName}`
14335
14351
  }, [
14336
- vue.createVNode(_sfc_main$g, {
14352
+ vue.createVNode(_sfc_main$f, {
14337
14353
  group,
14338
14354
  partsKey: partsKey.value,
14339
14355
  "selected-parts": vue.unref(selectedParts)
@@ -14344,20 +14360,20 @@ ${_html.style}
14344
14360
  };
14345
14361
  }
14346
14362
  });
14347
- const _hoisted_1$d = { class: "pb-sidebar" };
14348
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14363
+ const _hoisted_1$c = { class: "pb-sidebar" };
14364
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
14349
14365
  __name: "PbSidebar",
14350
14366
  setup(__props) {
14351
14367
  return (_ctx, _cache) => {
14352
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
14353
- vue.createVNode(_sfc_main$e)
14368
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
14369
+ vue.createVNode(_sfc_main$d)
14354
14370
  ]);
14355
14371
  };
14356
14372
  }
14357
14373
  });
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({
14374
+ const _hoisted_1$b = { class: "pb-editor bs-layout-vertical flex-grow-1" };
14375
+ const _hoisted_2$b = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
14376
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14361
14377
  __name: "PageBuilderEditor",
14362
14378
  props: {
14363
14379
  instanceId: {},
@@ -14366,7 +14382,8 @@ ${_html.style}
14366
14382
  pageContent: {},
14367
14383
  locales: {},
14368
14384
  locale: {},
14369
- toolbarPlugin: {}
14385
+ toolbarPlugin: {},
14386
+ plugin: {}
14370
14387
  },
14371
14388
  setup(__props, { expose: __expose }) {
14372
14389
  const props = __props;
@@ -14379,6 +14396,8 @@ ${_html.style}
14379
14396
  pageBuilderEditor.setLocales(props.locales);
14380
14397
  if (props.locale)
14381
14398
  pageBuilderEditor.setLocale(props.locale);
14399
+ if (props.plugin)
14400
+ pageBuilderEditor.registerCustomPlugin(props.plugin);
14382
14401
  pageBuilderEditor.registerPlugin({
14383
14402
  // TODO
14384
14403
  commands: createDefaultCommands(modal)
@@ -14395,75 +14414,30 @@ ${_html.style}
14395
14414
  });
14396
14415
  const colorHistory = vue.ref([]);
14397
14416
  vue.provide("colorHistory", colorHistory);
14398
- const getLocalDesignPartContent = () => {
14399
- let content;
14400
- if (pageBuilderEditor.model.rootPart) {
14401
- content = doGetLocalDesignPartContent(pageBuilderEditor.model.rootPart);
14402
- }
14403
- return content;
14404
- };
14405
- const doGetLocalDesignPartContent = (part) => {
14406
- let content;
14407
- if (part.isGlobalDesignPart() || part.isLocalMarketingPart()) {
14408
- const properties = getLocalDesignPartProperties(part);
14409
- if (properties) {
14410
- if (!content)
14411
- content = [];
14412
- content.push({ partId: part.partId, data: properties });
14413
- }
14414
- }
14415
- if (part.children) {
14416
- for (const child of part.children) {
14417
- const childContent = doGetLocalDesignPartContent(child);
14418
- if (childContent)
14419
- content = [...content || [], ...childContent];
14420
- }
14421
- }
14422
- return content;
14423
- };
14424
- const getLocalDesignPartProperties = (part) => {
14425
- let properties;
14426
- if (part.isWidget()) {
14427
- const defs = pageBuilderEditor.partManager.getLocalDesignPartPropertyDefinitions(part.partName);
14428
- if (defs) {
14429
- const data = {};
14430
- for (const def of defs) {
14431
- if (part.properties)
14432
- data[def.propertyName] = part.properties[def.propertyName];
14433
- }
14434
- properties = { [part.partId]: data };
14435
- }
14436
- }
14437
- if (part.children) {
14438
- for (const child of part.children) {
14439
- const childProperties = getLocalDesignPartProperties(child);
14440
- if (childProperties) {
14441
- properties = { ...properties, ...childProperties };
14442
- }
14443
- }
14444
- }
14445
- return properties;
14417
+ const getPageContent = () => {
14418
+ const partIds = (pageBuilderEditor.model.rootPart.children || []).map((v) => v.partId);
14419
+ return pageBuilderEditor.model.serializePageModel(partIds);
14446
14420
  };
14447
14421
  __expose({
14448
- getLocalDesignPartContent
14422
+ getPageContent
14449
14423
  });
14450
14424
  return (_ctx, _cache) => {
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)
14425
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14426
+ vue.createVNode(_sfc_main$i, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
14427
+ vue.createElementVNode("div", _hoisted_2$b, [
14428
+ vue.createVNode(_sfc_main$h),
14429
+ vue.createVNode(_sfc_main$m, { class: "flex-grow-1" }),
14430
+ vue.createVNode(_sfc_main$c)
14457
14431
  ])
14458
14432
  ]);
14459
14433
  };
14460
14434
  }
14461
14435
  });
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"];
14436
+ const _hoisted_1$a = { class: "property-editor property-editor-readonly-text" };
14437
+ const _hoisted_2$a = { class: "title" };
14438
+ const _hoisted_3$a = ["textContent"];
14465
14439
  const _hoisted_4$3 = ["textContent"];
14466
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14440
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
14467
14441
  __name: "PbPropertyEditorReadonlyText",
14468
14442
  props: {
14469
14443
  property: {},
@@ -14471,11 +14445,11 @@ ${_html.style}
14471
14445
  },
14472
14446
  setup(__props) {
14473
14447
  return (_ctx, _cache) => {
14474
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14475
- vue.createElementVNode("div", _hoisted_2$b, [
14448
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14449
+ vue.createElementVNode("div", _hoisted_2$a, [
14476
14450
  vue.createElementVNode("label", {
14477
14451
  textContent: vue.toDisplayString(_ctx.property.caption)
14478
- }, null, 8, _hoisted_3$b)
14452
+ }, null, 8, _hoisted_3$a)
14479
14453
  ]),
14480
14454
  vue.createElementVNode("div", null, [
14481
14455
  vue.createElementVNode("div", {
@@ -14488,12 +14462,12 @@ ${_html.style}
14488
14462
  });
14489
14463
  const PbPropertyEditorReadonlyText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14490
14464
  __proto__: null,
14491
- default: _sfc_main$b
14465
+ default: _sfc_main$a
14492
14466
  }, Symbol.toStringTag, { value: "Module" }));
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({
14467
+ const _hoisted_1$9 = { class: "property-editor property-editor-text flex-align-center" };
14468
+ const _hoisted_2$9 = { class: "title" };
14469
+ const _hoisted_3$9 = ["textContent"];
14470
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
14497
14471
  __name: "PbPropertyEditorText",
14498
14472
  props: {
14499
14473
  property: {},
@@ -14509,11 +14483,11 @@ ${_html.style}
14509
14483
  emit("update-property-value", properties);
14510
14484
  };
14511
14485
  return (_ctx, _cache) => {
14512
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14513
- vue.createElementVNode("div", _hoisted_2$a, [
14486
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
14487
+ vue.createElementVNode("div", _hoisted_2$9, [
14514
14488
  vue.createElementVNode("label", {
14515
14489
  textContent: vue.toDisplayString(_ctx.property.caption)
14516
- }, null, 8, _hoisted_3$a)
14490
+ }, null, 8, _hoisted_3$9)
14517
14491
  ]),
14518
14492
  vue.createElementVNode("div", null, [
14519
14493
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
@@ -14528,12 +14502,12 @@ ${_html.style}
14528
14502
  });
14529
14503
  const PbPropertyEditorText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14530
14504
  __proto__: null,
14531
- default: _sfc_main$a
14505
+ default: _sfc_main$9
14532
14506
  }, Symbol.toStringTag, { value: "Module" }));
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({
14507
+ const _hoisted_1$8 = { class: "property-editor property-editor-multiline-text" };
14508
+ const _hoisted_2$8 = { class: "title" };
14509
+ const _hoisted_3$8 = ["textContent"];
14510
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
14537
14511
  __name: "PbPropertyEditorMultilineText",
14538
14512
  props: {
14539
14513
  property: {},
@@ -14559,11 +14533,11 @@ ${_html.style}
14559
14533
  emit("update-property-value", properties);
14560
14534
  };
14561
14535
  return (_ctx, _cache) => {
14562
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
14563
- vue.createElementVNode("div", _hoisted_2$9, [
14536
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
14537
+ vue.createElementVNode("div", _hoisted_2$8, [
14564
14538
  vue.createElementVNode("label", {
14565
14539
  textContent: vue.toDisplayString(_ctx.property.caption)
14566
- }, null, 8, _hoisted_3$9)
14540
+ }, null, 8, _hoisted_3$8)
14567
14541
  ]),
14568
14542
  vue.createElementVNode("div", null, [
14569
14543
  _ctx.property.multiLang ? (vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSMultiLangTextArea), {
@@ -14593,12 +14567,12 @@ ${_html.style}
14593
14567
  });
14594
14568
  const PbPropertyEditorMultilineText = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14595
14569
  __proto__: null,
14596
- default: _sfc_main$9
14570
+ default: _sfc_main$8
14597
14571
  }, Symbol.toStringTag, { value: "Module" }));
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({
14572
+ const _hoisted_1$7 = { class: "property-editor property-editor-select flex-align-center" };
14573
+ const _hoisted_2$7 = { class: "title" };
14574
+ const _hoisted_3$7 = ["textContent"];
14575
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
14602
14576
  __name: "PbPropertyEditorSelect",
14603
14577
  props: {
14604
14578
  property: {},
@@ -14617,11 +14591,11 @@ ${_html.style}
14617
14591
  emit("update-property-value", properties);
14618
14592
  };
14619
14593
  return (_ctx, _cache) => {
14620
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
14621
- vue.createElementVNode("div", _hoisted_2$8, [
14594
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
14595
+ vue.createElementVNode("div", _hoisted_2$7, [
14622
14596
  vue.createElementVNode("label", {
14623
14597
  textContent: vue.toDisplayString(_ctx.property.caption)
14624
- }, null, 8, _hoisted_3$8)
14598
+ }, null, 8, _hoisted_3$7)
14625
14599
  ]),
14626
14600
  vue.createElementVNode("div", null, [
14627
14601
  vue.createVNode(vue.unref(bluesea.BSSelect), {
@@ -14636,13 +14610,13 @@ ${_html.style}
14636
14610
  });
14637
14611
  const PbPropertyEditorSelect = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14638
14612
  __proto__: null,
14639
- default: _sfc_main$8
14613
+ default: _sfc_main$7
14640
14614
  }, Symbol.toStringTag, { value: "Module" }));
14641
- const _hoisted_1$7 = { class: "property-editor property-editor-color" };
14642
- const _hoisted_2$7 = { class: "title" };
14643
- const _hoisted_3$7 = ["textContent"];
14615
+ const _hoisted_1$6 = { class: "property-editor property-editor-color" };
14616
+ const _hoisted_2$6 = { class: "title" };
14617
+ const _hoisted_3$6 = ["textContent"];
14644
14618
  const _hoisted_4$2 = { class: "bs-layout-horizontal flex-align-center color" };
14645
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
14619
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
14646
14620
  __name: "PbPropertyEditorColor",
14647
14621
  props: {
14648
14622
  property: {},
@@ -14662,11 +14636,11 @@ ${_html.style}
14662
14636
  emit("update-property-value", properties);
14663
14637
  };
14664
14638
  return (_ctx, _cache) => {
14665
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
14666
- vue.createElementVNode("div", _hoisted_2$7, [
14639
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
14640
+ vue.createElementVNode("div", _hoisted_2$6, [
14667
14641
  vue.createElementVNode("label", {
14668
14642
  textContent: vue.toDisplayString(_ctx.property.caption)
14669
- }, null, 8, _hoisted_3$7)
14643
+ }, null, 8, _hoisted_3$6)
14670
14644
  ]),
14671
14645
  vue.createElementVNode("div", _hoisted_4$2, [
14672
14646
  vue.createVNode(PbColorPicker, {
@@ -14691,12 +14665,12 @@ ${_html.style}
14691
14665
  });
14692
14666
  const PbPropertyEditorColor = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14693
14667
  __proto__: null,
14694
- default: _sfc_main$7
14668
+ default: _sfc_main$6
14695
14669
  }, Symbol.toStringTag, { value: "Module" }));
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({
14670
+ const _hoisted_1$5 = { class: "property-editor property-editor-image flex-align-center" };
14671
+ const _hoisted_2$5 = { class: "title" };
14672
+ const _hoisted_3$5 = ["textContent"];
14673
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
14700
14674
  __name: "PbPropertyEditorImage",
14701
14675
  props: {
14702
14676
  property: {},
@@ -14704,23 +14678,23 @@ ${_html.style}
14704
14678
  },
14705
14679
  emits: ["update-property-value"],
14706
14680
  setup(__props, { emit: __emit }) {
14707
- bluesea.useModal();
14708
14681
  const pageBuilder = usePageBuilderEditor();
14682
+ const modal = bluesea.useModal();
14709
14683
  const emit = __emit;
14710
14684
  const selectImage = () => {
14711
- PageBuilderEditorEvent.emit.requestImage({
14712
- pageBuilderId: pageBuilder.instanceId,
14713
- callback: (url) => {
14685
+ const imageProvider = pageBuilder.getProvider("image");
14686
+ if (imageProvider) {
14687
+ imageProvider({ modal }, (url) => {
14714
14688
  emit("update-property-value", { image: url });
14715
- }
14716
- });
14689
+ });
14690
+ }
14717
14691
  };
14718
14692
  return (_ctx, _cache) => {
14719
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
14720
- vue.createElementVNode("div", _hoisted_2$6, [
14693
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
14694
+ vue.createElementVNode("div", _hoisted_2$5, [
14721
14695
  vue.createElementVNode("label", {
14722
14696
  textContent: vue.toDisplayString(_ctx.property.caption)
14723
- }, null, 8, _hoisted_3$6)
14697
+ }, null, 8, _hoisted_3$5)
14724
14698
  ]),
14725
14699
  vue.createElementVNode("div", null, [
14726
14700
  vue.createElementVNode("button", { onClick: selectImage }, "Select Image")
@@ -14731,12 +14705,12 @@ ${_html.style}
14731
14705
  });
14732
14706
  const PbPropertyEditorImage = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14733
14707
  __proto__: null,
14734
- default: _sfc_main$6
14708
+ default: _sfc_main$5
14735
14709
  }, Symbol.toStringTag, { value: "Module" }));
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({
14710
+ const _hoisted_1$4 = { class: "property-editor property-editor-image flex-align-center" };
14711
+ const _hoisted_2$4 = { class: "title" };
14712
+ const _hoisted_3$4 = ["textContent"];
14713
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
14740
14714
  __name: "PbPropertyEditorHtml",
14741
14715
  props: {
14742
14716
  property: {},
@@ -14771,53 +14745,6 @@ ${_html.style}
14771
14745
  }
14772
14746
  });
14773
14747
  };
14774
- return (_ctx, _cache) => {
14775
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
14776
- vue.createElementVNode("div", _hoisted_2$5, [
14777
- vue.createElementVNode("label", {
14778
- textContent: vue.toDisplayString(_ctx.property.caption)
14779
- }, null, 8, _hoisted_3$5)
14780
- ]),
14781
- vue.createElementVNode("div", null, [
14782
- vue.createElementVNode("button", { onClick: editHtml }, "Edit HTML")
14783
- ])
14784
- ]);
14785
- };
14786
- }
14787
- });
14788
- const PbPropertyEditorHtml = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14789
- __proto__: null,
14790
- default: _sfc_main$5
14791
- }, Symbol.toStringTag, { value: "Module" }));
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({
14796
- __name: "PbPropertyEditorProduct",
14797
- props: {
14798
- property: {},
14799
- value: {}
14800
- },
14801
- emits: ["update-property-value"],
14802
- setup(__props, { emit: __emit }) {
14803
- const pageBuilder = usePageBuilderEditor();
14804
- bluesea.useModal();
14805
- const emit = __emit;
14806
- const selectProducts = () => {
14807
- var _a;
14808
- let itemCodes = "";
14809
- const selectedParts = pageBuilder.context.getSelectedParts();
14810
- if (selectedParts && selectedParts.length === 1) {
14811
- itemCodes = ((_a = selectedParts[0].properties) == null ? void 0 : _a.products) || "";
14812
- }
14813
- PageBuilderEditorEvent.emit.requestProducts({
14814
- pageBuilderId: pageBuilder.instanceId,
14815
- itemCodes,
14816
- callback: (products) => {
14817
- emit("update-property-value", { products: products.map((v) => v.itemCode).join(",") });
14818
- }
14819
- });
14820
- };
14821
14748
  return (_ctx, _cache) => {
14822
14749
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
14823
14750
  vue.createElementVNode("div", _hoisted_2$4, [
@@ -14826,13 +14753,13 @@ ${_html.style}
14826
14753
  }, null, 8, _hoisted_3$4)
14827
14754
  ]),
14828
14755
  vue.createElementVNode("div", null, [
14829
- vue.createElementVNode("button", { onClick: selectProducts }, "Select Product")
14756
+ vue.createElementVNode("button", { onClick: editHtml }, "Edit HTML")
14830
14757
  ])
14831
14758
  ]);
14832
14759
  };
14833
14760
  }
14834
14761
  });
14835
- const PbPropertyEditorProduct = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14762
+ const PbPropertyEditorHtml = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14836
14763
  __proto__: null,
14837
14764
  default: _sfc_main$4
14838
14765
  }, Symbol.toStringTag, { value: "Module" }));
@@ -14886,9 +14813,19 @@ ${_html.style}
14886
14813
  default: _sfc_main$3
14887
14814
  }, Symbol.toStringTag, { value: "Module" }));
14888
14815
  const _hoisted_1$2 = { class: "bs-layout-vertical pb-part-add-modal" };
14889
- const _hoisted_2$2 = ["textContent"];
14816
+ const _hoisted_2$2 = /* @__PURE__ */ vue.createElementVNode("div", {
14817
+ class: "mb-8",
14818
+ textContent: "Basic Widgets"
14819
+ }, null, -1);
14890
14820
  const _hoisted_3$2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14891
14821
  const _hoisted_4$1 = ["onClick", "textContent"];
14822
+ const _hoisted_5$1 = { class: "group mb-16" };
14823
+ const _hoisted_6$1 = /* @__PURE__ */ vue.createElementVNode("div", {
14824
+ class: "mb-8",
14825
+ textContent: "Custom Widgets"
14826
+ }, null, -1);
14827
+ const _hoisted_7$1 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
14828
+ const _hoisted_8$1 = ["onClick", "textContent"];
14892
14829
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
14893
14830
  __name: "PbWidgetAddModal",
14894
14831
  props: {
@@ -14897,9 +14834,12 @@ ${_html.style}
14897
14834
  },
14898
14835
  emits: ["selectHandler"],
14899
14836
  setup(__props, { emit: __emit }) {
14837
+ const props = __props;
14900
14838
  const emit = __emit;
14901
14839
  const modalHandle = bluesea.useModalHandle();
14840
+ const customWidgets = vue.computed(() => props.pageBuilder.getCustomWidgets());
14902
14841
  const select = (partDefinition) => {
14842
+ console.log(partDefinition);
14903
14843
  emit("selectHandler", partDefinition);
14904
14844
  modalHandle.close();
14905
14845
  };
@@ -14907,15 +14847,12 @@ ${_html.style}
14907
14847
  return vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSModalFrame), { title: "Add Block/Widget" }, {
14908
14848
  default: vue.withCtx(() => [
14909
14849
  vue.createElementVNode("div", _hoisted_1$2, [
14910
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.partDefinitionGroups, (group) => {
14850
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(widgetPartDefinitions), (group) => {
14911
14851
  return vue.openBlock(), vue.createElementBlock("div", {
14912
14852
  key: group.groupName,
14913
14853
  class: "group mb-16"
14914
14854
  }, [
14915
- vue.createElementVNode("div", {
14916
- class: "mb-8",
14917
- textContent: vue.toDisplayString(group.caption)
14918
- }, null, 8, _hoisted_2$2),
14855
+ _hoisted_2$2,
14919
14856
  vue.createElementVNode("div", _hoisted_3$2, [
14920
14857
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(group.partDefinitions, (part) => {
14921
14858
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -14927,7 +14864,20 @@ ${_html.style}
14927
14864
  }), 128))
14928
14865
  ])
14929
14866
  ]);
14930
- }), 128))
14867
+ }), 128)),
14868
+ vue.createElementVNode("div", _hoisted_5$1, [
14869
+ _hoisted_6$1,
14870
+ vue.createElementVNode("div", _hoisted_7$1, [
14871
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(customWidgets.value, (part) => {
14872
+ return vue.openBlock(), vue.createElementBlock("div", {
14873
+ key: part.partName,
14874
+ class: "part",
14875
+ onClick: ($event) => select(part),
14876
+ textContent: vue.toDisplayString(part.caption)
14877
+ }, null, 8, _hoisted_8$1);
14878
+ }), 128))
14879
+ ])
14880
+ ])
14931
14881
  ])
14932
14882
  ]),
14933
14883
  _: 1
@@ -15141,14 +15091,14 @@ ${_html.style}
15141
15091
  exports2.PAGE_BUILDER_KEY = PAGE_BUILDER_KEY;
15142
15092
  exports2.PAGE_TYPE = PAGE_TYPE$1;
15143
15093
  exports2.Page = Page;
15144
- exports2.PageBuilderEditor = _sfc_main$c;
15094
+ exports2.PageBuilderEditor = _sfc_main$b;
15145
15095
  exports2.PageBuilderEditorEvent = PageBuilderEditorEvent;
15146
- exports2.PageBuilderViewer = _sfc_main$C;
15096
+ exports2.PageBuilderViewer = _sfc_main$1$1;
15147
15097
  exports2.PageBuilderViewerEvent = PageBuilderViewerEvent;
15148
15098
  exports2.Part = Part;
15099
+ exports2.PbCustomWidget = _sfc_main$B;
15149
15100
  exports2.PbHtmlWidget = _sfc_main$3$1;
15150
15101
  exports2.PbImageWidget = _sfc_main$5$1;
15151
- exports2.PbProductListWidget = _sfc_main$2$1;
15152
15102
  exports2.PbTextWidget = _sfc_main$4$1;
15153
15103
  exports2.ROOT_TYPE = ROOT_TYPE$1;
15154
15104
  exports2.RootPart = RootPart;