@g1cloud/page-builder-editor 1.0.0-alpha.73 → 1.0.0-alpha.75

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.
@@ -7216,28 +7216,132 @@ ${_html.style}
7216
7216
  if (!url2) return;
7217
7217
  if (typeof url2 !== "object") return;
7218
7218
  const locale = pageBuilder.getLocale();
7219
- return url2[locale];
7219
+ let _url = url2[locale];
7220
+ if (_url) {
7221
+ const timestamp = (/* @__PURE__ */ new Date()).getTime();
7222
+ _url = _url.indexOf("?") >= 0 ? `${_url}&` : `${_url}?`;
7223
+ _url = `${_url}&widgetId=${props.part.partId}`;
7224
+ _url = `${_url}&${timestamp}`;
7225
+ return _url;
7226
+ }
7227
+ return "";
7220
7228
  });
7221
- const style = vue.computed(() => ({
7229
+ const contentHeight = vue.ref(0);
7230
+ const style = vue.ref({
7222
7231
  width: "100%",
7223
- height: `${height.value}px`
7224
- }));
7225
- const height = vue.ref(200);
7226
- const updateHeight = (event) => {
7227
- console.log(event);
7228
- if (event.data && event.data.height) {
7229
- height.value = event.data.height;
7232
+ height: ""
7233
+ });
7234
+ const iframeHeight = vue.ref(0);
7235
+ vue.watch(
7236
+ () => {
7237
+ var _a;
7238
+ return [iframeHeight.value, contentHeight.value, (_a = props.part.properties) == null ? void 0 : _a.height];
7239
+ },
7240
+ () => {
7241
+ var _a;
7242
+ if (iframeHeight.value) {
7243
+ style.value.height = `${iframeHeight.value}px`;
7244
+ } else if (contentHeight.value) {
7245
+ style.value.height = `${contentHeight.value}px`;
7246
+ } else if ((_a = props.part.properties) == null ? void 0 : _a.height) {
7247
+ style.value.height = props.part.properties.height;
7248
+ } else {
7249
+ style.value.height = "200px";
7250
+ }
7251
+ },
7252
+ { immediate: true }
7253
+ );
7254
+ const updateHeightByMessage = (event) => {
7255
+ if (event.data && event.data.widgetId === props.part.partId && event.data.height) {
7256
+ contentHeight.value = event.data.height;
7257
+ }
7258
+ };
7259
+ vue.onMounted(() => {
7260
+ window.addEventListener("message", updateHeightByMessage);
7261
+ });
7262
+ vue.onBeforeUnmount(() => {
7263
+ window.removeEventListener("message", updateHeightByMessage);
7264
+ });
7265
+ const iframeRef = vue.ref();
7266
+ let resizeObserver;
7267
+ let mutationObserver;
7268
+ let setupInterval;
7269
+ function getContentHeight(doc) {
7270
+ const body = doc.body;
7271
+ const html = doc.documentElement;
7272
+ const scrollH = Math.max((body == null ? void 0 : body.scrollHeight) || 0, (html == null ? void 0 : html.scrollHeight) || 0);
7273
+ const boundH = Math.max(
7274
+ (body == null ? void 0 : body.getBoundingClientRect().height) || 0,
7275
+ (html == null ? void 0 : html.getBoundingClientRect().height) || 0
7276
+ );
7277
+ return Math.max(scrollH, boundH);
7278
+ }
7279
+ const updateHeight = () => {
7280
+ var _a;
7281
+ const iframe = iframeRef.value;
7282
+ if (!iframe) return;
7283
+ try {
7284
+ const doc = iframe.contentDocument || ((_a = iframe.contentWindow) == null ? void 0 : _a.document);
7285
+ if (!doc) return;
7286
+ const newHeight = getContentHeight(doc);
7287
+ if (newHeight !== iframeHeight.value) {
7288
+ iframeHeight.value = newHeight;
7289
+ }
7290
+ } catch (e) {
7230
7291
  }
7231
7292
  };
7293
+ const setupObservers = () => {
7294
+ const iframe = iframeRef.value;
7295
+ const doc = iframe == null ? void 0 : iframe.contentDocument;
7296
+ const body = doc == null ? void 0 : doc.body;
7297
+ if (!doc || !body) return;
7298
+ resizeObserver = new ResizeObserver(updateHeight);
7299
+ resizeObserver.observe(body);
7300
+ mutationObserver = new MutationObserver(updateHeight);
7301
+ mutationObserver.observe(body, {
7302
+ childList: true,
7303
+ subtree: true,
7304
+ attributes: true
7305
+ });
7306
+ updateHeight();
7307
+ };
7232
7308
  vue.onMounted(() => {
7233
- window.addEventListener("message", updateHeight);
7309
+ setupInterval = setInterval(() => {
7310
+ if (!iframeRef.value) return;
7311
+ const doc = iframeRef.value.contentDocument;
7312
+ if ((doc == null ? void 0 : doc.readyState) === "complete") {
7313
+ setupObservers();
7314
+ if (setupInterval) {
7315
+ clearInterval(setupInterval);
7316
+ setupInterval = void 0;
7317
+ }
7318
+ }
7319
+ }, 1e3);
7234
7320
  });
7235
7321
  vue.onBeforeUnmount(() => {
7236
- window.removeEventListener("message", updateHeight);
7322
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
7323
+ mutationObserver == null ? void 0 : mutationObserver.disconnect();
7324
+ if (setupInterval) {
7325
+ clearInterval(setupInterval);
7326
+ setupInterval = void 0;
7327
+ }
7237
7328
  });
7329
+ vue.watch(
7330
+ () => [iframeRef.value],
7331
+ () => {
7332
+ if (iframeRef.value) {
7333
+ iframeRef.value.addEventListener("load", () => {
7334
+ setupObservers();
7335
+ });
7336
+ }
7337
+ },
7338
+ { immediate: true }
7339
+ );
7238
7340
  return (_ctx, _cache) => {
7239
7341
  return url.value ? (vue.openBlock(), vue.createElementBlock("iframe", {
7240
7342
  key: 0,
7343
+ ref_key: "iframeRef",
7344
+ ref: iframeRef,
7241
7345
  src: url.value,
7242
7346
  style: vue.normalizeStyle(style.value)
7243
7347
  }, null, 12, _hoisted_1$4$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$1$1)) : vue.createCommentVNode("", true);
@@ -7534,7 +7638,7 @@ ${_html.style}
7534
7638
  }
7535
7639
  });
7536
7640
  const _hoisted_1$1$1 = ["innerHTML"];
7537
- const _hoisted_2$v = { class: "pb-viewer" };
7641
+ const _hoisted_2$w = { class: "pb-viewer" };
7538
7642
  const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
7539
7643
  __name: "PageBuilderViewer",
7540
7644
  props: {
@@ -7575,7 +7679,7 @@ ${_html.style}
7575
7679
  key: 0,
7576
7680
  innerHTML: vue.unref(externalCss)
7577
7681
  }, null, 8, _hoisted_1$1$1)) : vue.createCommentVNode("", true),
7578
- vue.createElementVNode("div", _hoisted_2$v, [
7682
+ vue.createElementVNode("div", _hoisted_2$w, [
7579
7683
  part.value ? (vue.openBlock(), vue.createBlock(_sfc_main$3$1, {
7580
7684
  key: 0,
7581
7685
  "is-mobile-page": _ctx.isMobilePage,
@@ -7621,9 +7725,13 @@ ${_html.style}
7621
7725
  const props = __props;
7622
7726
  const pageBuilder = usePageBuilder();
7623
7727
  const comp = vue.computed(() => pageBuilder.getCustomWidgetComponent(props.part));
7624
- const bind = vue.computed(() => ({
7625
- ...props.part.properties || {}
7626
- }));
7728
+ const bind = vue.computed(() => {
7729
+ var _a;
7730
+ return {
7731
+ "class": ((_a = props.part.properties) == null ? void 0 : _a.widgetClassNames) || void 0,
7732
+ ...props.part.properties || {}
7733
+ };
7734
+ });
7627
7735
  return (_ctx, _cache) => {
7628
7736
  return comp.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(comp.value), vue.normalizeProps(vue.mergeProps({ key: 0 }, bind.value)), null, 16)) : vue.createCommentVNode("", true);
7629
7737
  };
@@ -8510,7 +8618,7 @@ ${_html.style}
8510
8618
  return mouseTracker;
8511
8619
  };
8512
8620
  const _hoisted_1$H = ["data-part-id", "draggable"];
8513
- const _hoisted_2$u = {
8621
+ const _hoisted_2$v = {
8514
8622
  key: 1,
8515
8623
  class: "invalid-widget",
8516
8624
  textContent: "Invalid Widget"
@@ -8940,7 +9048,7 @@ ${_html.style}
8940
9048
  draggable: draggable.value,
8941
9049
  style: vue.normalizeStyle(style.value)
8942
9050
  }, [
8943
- component.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(component.value), vue.normalizeProps(vue.mergeProps({ key: 0 }, bind.value)), null, 16)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$u)),
9051
+ component.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(component.value), vue.normalizeProps(vue.mergeProps({ key: 0 }, bind.value)), null, 16)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$v)),
8944
9052
  selected.value && _ctx.part.isNestedWidget() ? (vue.openBlock(), vue.createElementBlock("div", {
8945
9053
  key: 2,
8946
9054
  class: "pan-handle",
@@ -9331,7 +9439,7 @@ ${_html.style}
9331
9439
  return `${numberMatch[0]}px`;
9332
9440
  }
9333
9441
  const _hoisted_1$D = { class: "group-editor group-editor-position" };
9334
- const _hoisted_2$t = { class: "flex-align-center" };
9442
+ const _hoisted_2$u = { class: "flex-align-center" };
9335
9443
  const _hoisted_3$j = { class: "title" };
9336
9444
  const _hoisted_4$e = { class: "flex-grow-1" };
9337
9445
  const _hoisted_5$a = { class: "bg-gray-100 py-5 rounded-8" };
@@ -9363,7 +9471,7 @@ ${_html.style}
9363
9471
  const updateBottom = (value) => updatePropertyValue({ bottom: toCssLength(value) });
9364
9472
  return (_ctx, _cache) => {
9365
9473
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
9366
- vue.createElementVNode("div", _hoisted_2$t, [
9474
+ vue.createElementVNode("div", _hoisted_2$u, [
9367
9475
  vue.createElementVNode("div", _hoisted_3$j, [
9368
9476
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
9369
9477
  [vue.unref(bluesea.vT), { key: "pb.prop.position" }]
@@ -9419,7 +9527,7 @@ ${_html.style}
9419
9527
  }
9420
9528
  });
9421
9529
  const _hoisted_1$C = { class: "group-editor group-editor-size" };
9422
- const _hoisted_2$s = { class: "flex-align-center" };
9530
+ const _hoisted_2$t = { class: "flex-align-center" };
9423
9531
  const _hoisted_3$i = { class: "title" };
9424
9532
  const _hoisted_4$d = { class: "flex-grow-1 bs-layout-horizontal" };
9425
9533
  const _hoisted_5$9 = { class: "flex-align-center mt-12" };
@@ -9457,7 +9565,7 @@ ${_html.style}
9457
9565
  const updateMinHeight = (value) => updatePropertyValue({ minHeight: toCssLength(value) });
9458
9566
  return (_ctx, _cache) => {
9459
9567
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, [
9460
- vue.createElementVNode("div", _hoisted_2$s, [
9568
+ vue.createElementVNode("div", _hoisted_2$t, [
9461
9569
  vue.createElementVNode("div", _hoisted_3$i, [
9462
9570
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
9463
9571
  [vue.unref(bluesea.vT), { key: "pb.prop.size" }]
@@ -9681,7 +9789,7 @@ ${_html.style}
9681
9789
  }
9682
9790
  };
9683
9791
  const _hoisted_1$B = { class: "vc-alpha" };
9684
- const _hoisted_2$r = { class: "vc-alpha-checkboard-wrap" };
9792
+ const _hoisted_2$s = { class: "vc-alpha-checkboard-wrap" };
9685
9793
  const _hoisted_3$h = /* @__PURE__ */ vue.createElementVNode(
9686
9794
  "div",
9687
9795
  { class: "vc-alpha-picker" },
@@ -9695,7 +9803,7 @@ ${_html.style}
9695
9803
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9696
9804
  const _component_Checkboard = vue.resolveComponent("Checkboard");
9697
9805
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, [
9698
- vue.createElementVNode("div", _hoisted_2$r, [
9806
+ vue.createElementVNode("div", _hoisted_2$s, [
9699
9807
  vue.createVNode(_component_Checkboard)
9700
9808
  ]),
9701
9809
  vue.createElementVNode(
@@ -10799,7 +10907,7 @@ ${_html.style}
10799
10907
  }
10800
10908
  };
10801
10909
  const _hoisted_1$A = { class: "vc-editable-input" };
10802
- const _hoisted_2$q = ["aria-labelledby"];
10910
+ const _hoisted_2$r = ["aria-labelledby"];
10803
10911
  const _hoisted_3$g = ["id", "for"];
10804
10912
  const _hoisted_4$b = { class: "vc-input__desc" };
10805
10913
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
@@ -10811,7 +10919,7 @@ ${_html.style}
10811
10919
  class: "vc-input__input",
10812
10920
  onKeydown: _cache[1] || (_cache[1] = (...args) => $options.handleKeyDown && $options.handleKeyDown(...args)),
10813
10921
  onInput: _cache[2] || (_cache[2] = (...args) => $options.update && $options.update(...args))
10814
- }, null, 40, _hoisted_2$q), [
10922
+ }, null, 40, _hoisted_2$r), [
10815
10923
  [vue.vModelText, $options.val]
10816
10924
  ]),
10817
10925
  vue.createElementVNode("span", {
@@ -10905,7 +11013,7 @@ ${_html.style}
10905
11013
  -1
10906
11014
  /* HOISTED */
10907
11015
  );
10908
- const _hoisted_2$p = /* @__PURE__ */ vue.createElementVNode(
11016
+ const _hoisted_2$q = /* @__PURE__ */ vue.createElementVNode(
10909
11017
  "div",
10910
11018
  { class: "vc-saturation--black" },
10911
11019
  null,
@@ -10935,7 +11043,7 @@ ${_html.style}
10935
11043
  },
10936
11044
  [
10937
11045
  _hoisted_1$z,
10938
- _hoisted_2$p,
11046
+ _hoisted_2$q,
10939
11047
  vue.createElementVNode(
10940
11048
  "div",
10941
11049
  {
@@ -11084,7 +11192,7 @@ ${_html.style}
11084
11192
  }
11085
11193
  };
11086
11194
  const _hoisted_1$y = ["aria-valuenow"];
11087
- const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode(
11195
+ const _hoisted_2$p = /* @__PURE__ */ vue.createElementVNode(
11088
11196
  "div",
11089
11197
  { class: "vc-hue-picker" },
11090
11198
  null,
@@ -11092,7 +11200,7 @@ ${_html.style}
11092
11200
  /* HOISTED */
11093
11201
  );
11094
11202
  const _hoisted_3$e = [
11095
- _hoisted_2$o
11203
+ _hoisted_2$p
11096
11204
  ];
11097
11205
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
11098
11206
  return vue.openBlock(), vue.createElementBlock(
@@ -11220,7 +11328,7 @@ ${_html.style}
11220
11328
  }
11221
11329
  };
11222
11330
  const _hoisted_1$x = { class: "vc-sketch-saturation-wrap" };
11223
- const _hoisted_2$n = { class: "vc-sketch-controls" };
11331
+ const _hoisted_2$o = { class: "vc-sketch-controls" };
11224
11332
  const _hoisted_3$d = { class: "vc-sketch-sliders" };
11225
11333
  const _hoisted_4$9 = { class: "vc-sketch-hue-wrap" };
11226
11334
  const _hoisted_5$8 = {
@@ -11268,7 +11376,7 @@ ${_html.style}
11268
11376
  onChange: $options.childChange
11269
11377
  }, null, 8, ["value", "onChange"])
11270
11378
  ]),
11271
- vue.createElementVNode("div", _hoisted_2$n, [
11379
+ vue.createElementVNode("div", _hoisted_2$o, [
11272
11380
  vue.createElementVNode("div", _hoisted_3$d, [
11273
11381
  vue.createElementVNode("div", _hoisted_4$9, [
11274
11382
  vue.createVNode(_component_Hue, {
@@ -11435,7 +11543,7 @@ ${_html.style}
11435
11543
  }
11436
11544
  });
11437
11545
  const _hoisted_1$w = { class: "buttons" };
11438
- const _hoisted_2$m = { class: "sketch-wrap" };
11546
+ const _hoisted_2$n = { class: "sketch-wrap" };
11439
11547
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11440
11548
  const _component_Sketch = vue.resolveComponent("Sketch");
11441
11549
  const _directive_click_outside = vue.resolveDirective("click-outside");
@@ -11459,7 +11567,7 @@ ${_html.style}
11459
11567
  vue.createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1)
11460
11568
  ]))) : vue.createCommentVNode("", true)
11461
11569
  ]),
11462
- vue.createElementVNode("div", _hoisted_2$m, [
11570
+ vue.createElementVNode("div", _hoisted_2$n, [
11463
11571
  _ctx.isShowColorPicker ? (vue.openBlock(), vue.createBlock(_component_Sketch, {
11464
11572
  key: 0,
11465
11573
  modelValue: _ctx.color,
@@ -11473,7 +11581,7 @@ ${_html.style}
11473
11581
  }
11474
11582
  const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render]]);
11475
11583
  const _hoisted_1$v = { class: "group-editor group-editor-background" };
11476
- const _hoisted_2$l = { class: "flex-align-center" };
11584
+ const _hoisted_2$m = { class: "flex-align-center" };
11477
11585
  const _hoisted_3$c = { class: "title" };
11478
11586
  const _hoisted_4$8 = { class: "bs-layout-horizontal" };
11479
11587
  const _hoisted_5$7 = { class: "color" };
@@ -11512,7 +11620,7 @@ ${_html.style}
11512
11620
  };
11513
11621
  return (_ctx, _cache) => {
11514
11622
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
11515
- vue.createElementVNode("div", _hoisted_2$l, [
11623
+ vue.createElementVNode("div", _hoisted_2$m, [
11516
11624
  vue.createElementVNode("div", _hoisted_3$c, [
11517
11625
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
11518
11626
  [vue.unref(bluesea.vT), { key: "pb.prop.background" }]
@@ -11551,7 +11659,7 @@ ${_html.style}
11551
11659
  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";
11552
11660
  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";
11553
11661
  const _hoisted_1$u = { class: "group-editor group-editor-border" };
11554
- const _hoisted_2$k = { class: "flex-align-center" };
11662
+ const _hoisted_2$l = { class: "flex-align-center" };
11555
11663
  const _hoisted_3$b = { class: "title" };
11556
11664
  const _hoisted_4$7 = { class: "" };
11557
11665
  const _hoisted_5$6 = { class: "sub-title" };
@@ -11608,7 +11716,7 @@ ${_html.style}
11608
11716
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: toCssLength(value) });
11609
11717
  return (_ctx, _cache) => {
11610
11718
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
11611
- vue.createElementVNode("div", _hoisted_2$k, [
11719
+ vue.createElementVNode("div", _hoisted_2$l, [
11612
11720
  vue.createElementVNode("div", _hoisted_3$b, [
11613
11721
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
11614
11722
  [vue.unref(bluesea.vT), { key: "pb.prop.border" }]
@@ -11738,7 +11846,7 @@ ${_html.style}
11738
11846
  }
11739
11847
  });
11740
11848
  const _hoisted_1$t = { class: "group-editor group-editor-margin" };
11741
- const _hoisted_2$j = { class: "flex-align-center" };
11849
+ const _hoisted_2$k = { class: "flex-align-center" };
11742
11850
  const _hoisted_3$a = { class: "title" };
11743
11851
  const _hoisted_4$6 = { class: "flex-grow-1" };
11744
11852
  const _hoisted_5$5 = { class: "bg-gray-100 py-5 rounded-8" };
@@ -11770,7 +11878,7 @@ ${_html.style}
11770
11878
  const updateBottom = (value) => updatePropertyValue({ marginBottom: toCssLength(value) });
11771
11879
  return (_ctx, _cache) => {
11772
11880
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
11773
- vue.createElementVNode("div", _hoisted_2$j, [
11881
+ vue.createElementVNode("div", _hoisted_2$k, [
11774
11882
  vue.createElementVNode("div", _hoisted_3$a, [
11775
11883
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
11776
11884
  [vue.unref(bluesea.vT), { key: "pb.prop.margin" }]
@@ -11826,7 +11934,7 @@ ${_html.style}
11826
11934
  }
11827
11935
  });
11828
11936
  const _hoisted_1$s = { class: "group-editor group-editor-padding" };
11829
- const _hoisted_2$i = { class: "flex-align-center" };
11937
+ const _hoisted_2$j = { class: "flex-align-center" };
11830
11938
  const _hoisted_3$9 = { class: "title" };
11831
11939
  const _hoisted_4$5 = { class: "flex-grow-1" };
11832
11940
  const _hoisted_5$4 = { class: "bg-gray-100 py-5 rounded-8" };
@@ -11858,7 +11966,7 @@ ${_html.style}
11858
11966
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: toCssLength(value) });
11859
11967
  return (_ctx, _cache) => {
11860
11968
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
11861
- vue.createElementVNode("div", _hoisted_2$i, [
11969
+ vue.createElementVNode("div", _hoisted_2$j, [
11862
11970
  vue.createElementVNode("div", _hoisted_3$9, [
11863
11971
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
11864
11972
  [vue.unref(bluesea.vT), { key: "pb.prop.padding" }]
@@ -12069,6 +12177,11 @@ ${_html.style}
12069
12177
  caption: "pb.prop.style",
12070
12178
  propertyType: "multiline-text"
12071
12179
  },
12180
+ {
12181
+ propertyName: "widgetClassNames",
12182
+ caption: "pb.prop.widgetClassNames",
12183
+ propertyType: "text"
12184
+ },
12072
12185
  {
12073
12186
  propertyName: "partId",
12074
12187
  caption: "pb.prop.partId",
@@ -12249,7 +12362,7 @@ ${_html.style}
12249
12362
  return [alignSelfGroup(), positionGroup(), sizeGroup(), marginGroup(), paddingGroup(), borderGroup(), backgroundGroup(), commonGroup(), hideParentGroup()];
12250
12363
  };
12251
12364
  const _hoisted_1$r = { class: "group-editor group-editor-media" };
12252
- const _hoisted_2$h = { class: "title" };
12365
+ const _hoisted_2$i = { class: "title" };
12253
12366
  const _hoisted_3$8 = {
12254
12367
  key: 0,
12255
12368
  class: "title mt-12"
@@ -12313,7 +12426,7 @@ ${_html.style}
12313
12426
  return (_ctx, _cache) => {
12314
12427
  var _a, _b, _c, _d;
12315
12428
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
12316
- vue.createElementVNode("div", _hoisted_2$h, [
12429
+ vue.createElementVNode("div", _hoisted_2$i, [
12317
12430
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
12318
12431
  [vue.unref(bluesea.vT), { key: "pb.prop.media" }]
12319
12432
  ])
@@ -14419,7 +14532,7 @@ ${_html.style}
14419
14532
  }
14420
14533
  });
14421
14534
  const _hoisted_1$o = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
14422
- const _hoisted_2$g = { class: "bs-layout-horizontal align-items-center" };
14535
+ const _hoisted_2$h = { class: "bs-layout-horizontal align-items-center" };
14423
14536
  const _hoisted_3$7 = { class: "mr-8" };
14424
14537
  const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
14425
14538
  __name: "PbToolbar",
@@ -14471,7 +14584,7 @@ ${_html.style}
14471
14584
  return (_ctx, _cache) => {
14472
14585
  var _a, _b, _c;
14473
14586
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
14474
- vue.createElementVNode("div", _hoisted_2$g, [
14587
+ vue.createElementVNode("div", _hoisted_2$h, [
14475
14588
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttonGroups), (group) => {
14476
14589
  return vue.openBlock(), vue.createBlock(_sfc_main$q, {
14477
14590
  key: group.groupId,
@@ -14668,7 +14781,7 @@ ${_html.style}
14668
14781
  "icon-provider": iconProvider,
14669
14782
  "key-provider": (part) => part.partId,
14670
14783
  "label-provider": labelProvider,
14671
- class: "max-w-320",
14784
+ class: "max-w-320 h-full",
14672
14785
  "dont-change-data-when-row-moved": "",
14673
14786
  "multi-select": "",
14674
14787
  "show-move-button": "",
@@ -14715,7 +14828,7 @@ ${_html.style}
14715
14828
  }
14716
14829
  });
14717
14830
  const _hoisted_1$l = { class: "pb-sidebar-property-group" };
14718
- const _hoisted_2$f = {
14831
+ const _hoisted_2$g = {
14719
14832
  key: 0,
14720
14833
  class: "group-title"
14721
14834
  };
@@ -14734,7 +14847,7 @@ ${_html.style}
14734
14847
  });
14735
14848
  return (_ctx, _cache) => {
14736
14849
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
14737
- _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
14850
+ _ctx.group.showGroupName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$g, [
14738
14851
  vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
14739
14852
  [vue.unref(bluesea.vT), { key: _ctx.group.caption }]
14740
14853
  ])
@@ -14761,6 +14874,10 @@ ${_html.style}
14761
14874
  }
14762
14875
  });
14763
14876
  const _hoisted_1$k = { class: "pb-sidebar-properties" };
14877
+ const _hoisted_2$f = {
14878
+ key: 0,
14879
+ class: "bg-primary-500 text-white pl-16 py-8"
14880
+ };
14764
14881
  const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14765
14882
  __name: "PbSidebarProperties",
14766
14883
  setup(__props) {
@@ -14778,8 +14895,16 @@ ${_html.style}
14778
14895
  return [];
14779
14896
  }
14780
14897
  });
14898
+ const partName = vue.computed(() => {
14899
+ if (selectedParts.length === 1) {
14900
+ const part = selectedParts[0];
14901
+ const def = pageBuilder.partManager.getPartDefinition(part.partName);
14902
+ if (def) return def.caption;
14903
+ }
14904
+ });
14781
14905
  return (_ctx, _cache) => {
14782
14906
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
14907
+ partName.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, vue.toDisplayString(partName.value), 1)) : vue.createCommentVNode("", true),
14783
14908
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(properties.value, (group) => {
14784
14909
  return vue.openBlock(), vue.createElementBlock("div", {
14785
14910
  key: `${partsKey.value}_${group.groupName}`
@@ -15180,7 +15305,7 @@ ${_html.style}
15180
15305
  },
15181
15306
  {
15182
15307
  key: "pb.prop.classNames",
15183
- text: "Class Names"
15308
+ text: "CSS Class Names"
15184
15309
  },
15185
15310
  {
15186
15311
  key: "pb.prop.inlineStyle",
@@ -15190,6 +15315,10 @@ ${_html.style}
15190
15315
  key: "pb.prop.style",
15191
15316
  text: "CSS Style"
15192
15317
  },
15318
+ {
15319
+ key: "pb.prop.widgetClassNames",
15320
+ text: "Widget Class Names"
15321
+ },
15193
15322
  {
15194
15323
  key: "pb.prop.partId",
15195
15324
  text: "ID"
@@ -15510,7 +15639,7 @@ ${_html.style}
15510
15639
  },
15511
15640
  {
15512
15641
  key: "pb.prop.classNames",
15513
- text: "クラス名"
15642
+ text: "CSS クラス"
15514
15643
  },
15515
15644
  {
15516
15645
  key: "pb.prop.inlineStyle",
@@ -15520,6 +15649,10 @@ ${_html.style}
15520
15649
  key: "pb.prop.style",
15521
15650
  text: "CSS スタイル"
15522
15651
  },
15652
+ {
15653
+ key: "pb.prop.widgetClassNames",
15654
+ text: "ウィジェットの CSS クラス"
15655
+ },
15523
15656
  {
15524
15657
  key: "pb.prop.partId",
15525
15658
  text: "ID"
@@ -15850,6 +15983,10 @@ ${_html.style}
15850
15983
  key: "pb.prop.style",
15851
15984
  text: "CSS 스타일"
15852
15985
  },
15986
+ {
15987
+ key: "pb.prop.widgetClassNames",
15988
+ text: "위젯 CSS 클래스"
15989
+ },
15853
15990
  {
15854
15991
  key: "pb.prop.partId",
15855
15992
  text: "ID"
@@ -16170,7 +16307,7 @@ ${_html.style}
16170
16307
  },
16171
16308
  {
16172
16309
  key: "pb.prop.classNames",
16173
- text: "类名"
16310
+ text: "CSS 类名"
16174
16311
  },
16175
16312
  {
16176
16313
  key: "pb.prop.inlineStyle",
@@ -16180,6 +16317,10 @@ ${_html.style}
16180
16317
  key: "pb.prop.style",
16181
16318
  text: "CSS 样式"
16182
16319
  },
16320
+ {
16321
+ key: "pb.prop.widgetClassNames",
16322
+ text: "小部件的 CSS 类名"
16323
+ },
16183
16324
  {
16184
16325
  key: "pb.prop.partId",
16185
16326
  text: "ID"
@@ -16401,10 +16542,345 @@ ${_html.style}
16401
16542
  text: "已复制。"
16402
16543
  }
16403
16544
  ];
16545
+ const frTexts = [
16546
+ {
16547
+ key: "pb.button.undo",
16548
+ text: "Annuler"
16549
+ },
16550
+ {
16551
+ key: "pb.button.redo",
16552
+ text: "Rétablir"
16553
+ },
16554
+ {
16555
+ key: "pb.button.copyAll",
16556
+ text: "Copier tout"
16557
+ },
16558
+ {
16559
+ key: "pb.button.copy",
16560
+ text: "Copier"
16561
+ },
16562
+ {
16563
+ key: "pb.button.cut",
16564
+ text: "Couper"
16565
+ },
16566
+ {
16567
+ key: "pb.button.paste",
16568
+ text: "Coller"
16569
+ },
16570
+ {
16571
+ key: "pb.button.delete",
16572
+ text: "Supprimer"
16573
+ },
16574
+ {
16575
+ key: "pb.button.addSection",
16576
+ text: "Ajouter une section"
16577
+ },
16578
+ {
16579
+ key: "pb.button.addBlock",
16580
+ text: "Ajouter un bloc"
16581
+ },
16582
+ {
16583
+ key: "pb.button.addWidget",
16584
+ text: "Ajouter un widget"
16585
+ },
16586
+ {
16587
+ key: "pb.menu.addSectionAbove",
16588
+ text: "Ajouter une section au-dessus"
16589
+ },
16590
+ {
16591
+ key: "pb.menu.addSectionBelow",
16592
+ text: "Ajouter une section en dessous"
16593
+ },
16594
+ {
16595
+ key: "pb.menu.addBlockLeft",
16596
+ text: "Ajouter un bloc à gauche"
16597
+ },
16598
+ {
16599
+ key: "pb.menu.addBlockRight",
16600
+ text: "Ajouter un bloc à droite"
16601
+ },
16602
+ {
16603
+ key: "pb.menu.addBlockAbove",
16604
+ text: "Ajouter un bloc au-dessus"
16605
+ },
16606
+ {
16607
+ key: "pb.menu.addBlockBelow",
16608
+ text: "Ajouter un bloc en dessous"
16609
+ },
16610
+ {
16611
+ key: "pb.menu.addWidgetLeft",
16612
+ text: "Ajouter un widget à gauche"
16613
+ },
16614
+ {
16615
+ key: "pb.menu.addWidgetRight",
16616
+ text: "Ajouter un widget à droite"
16617
+ },
16618
+ {
16619
+ key: "pb.menu.addWidgetAbove",
16620
+ text: "Ajouter un widget au-dessus"
16621
+ },
16622
+ {
16623
+ key: "pb.menu.addWidgetBelow",
16624
+ text: "Ajouter un widget en dessous"
16625
+ },
16626
+ {
16627
+ key: "pb.menu.addWidgetInside",
16628
+ text: "Ajouter un widget à l'intérieur"
16629
+ },
16630
+ {
16631
+ key: "pb.menu.deletePart",
16632
+ text: "Supprimer"
16633
+ },
16634
+ {
16635
+ key: "pb.prop.name",
16636
+ text: "Nom"
16637
+ },
16638
+ {
16639
+ key: "pb.prop.id",
16640
+ text: "ID de balise"
16641
+ },
16642
+ {
16643
+ key: "pb.prop.classNames",
16644
+ text: "Noms de classes CSS"
16645
+ },
16646
+ {
16647
+ key: "pb.prop.inlineStyle",
16648
+ text: "Style CSS en ligne"
16649
+ },
16650
+ {
16651
+ key: "pb.prop.style",
16652
+ text: "Style CSS"
16653
+ },
16654
+ {
16655
+ key: "pb.prop.widgetClassNames",
16656
+ text: "Noms de classes du widget"
16657
+ },
16658
+ {
16659
+ key: "pb.prop.partId",
16660
+ text: "ID"
16661
+ },
16662
+ {
16663
+ key: "pb.prop.size",
16664
+ text: "Taille"
16665
+ },
16666
+ {
16667
+ key: "pb.prop.maxSize",
16668
+ text: "Taille maximale"
16669
+ },
16670
+ {
16671
+ key: "pb.prop.minSize",
16672
+ text: "Taille minimale"
16673
+ },
16674
+ {
16675
+ key: "pb.prop.margin",
16676
+ text: "Marge"
16677
+ },
16678
+ {
16679
+ key: "pb.prop.padding",
16680
+ text: "Rembourrage"
16681
+ },
16682
+ {
16683
+ key: "pb.prop.background",
16684
+ text: "Arrière-plan"
16685
+ },
16686
+ {
16687
+ key: "pb.prop.selectImage",
16688
+ text: "Sélectionner une image"
16689
+ },
16690
+ {
16691
+ key: "pb.prop.border",
16692
+ text: "Bordure"
16693
+ },
16694
+ {
16695
+ key: "pb.prop.borderColor",
16696
+ text: "Couleur"
16697
+ },
16698
+ {
16699
+ key: "pb.prop.borderWidth",
16700
+ text: "Largeur de bordure"
16701
+ },
16702
+ {
16703
+ key: "pb.prop.borderRadius",
16704
+ text: "Rayon de bordure"
16705
+ },
16706
+ {
16707
+ key: "pb.prop.position",
16708
+ text: "Position"
16709
+ },
16710
+ {
16711
+ key: "pb.prop.editHtml",
16712
+ text: "Modifier le HTML"
16713
+ },
16714
+ {
16715
+ key: "pb.prop.selectMedia",
16716
+ text: "Sélectionner un média"
16717
+ },
16718
+ {
16719
+ key: "pb.prop.altText",
16720
+ text: "Texte alternatif"
16721
+ },
16722
+ {
16723
+ key: "pb.prop.link",
16724
+ text: "Lien"
16725
+ },
16726
+ {
16727
+ key: "pb.prop.linkTarget",
16728
+ text: "Cible du lien"
16729
+ },
16730
+ {
16731
+ key: "pb.prop.thumbnail",
16732
+ text: "Miniature"
16733
+ },
16734
+ {
16735
+ key: "pb.prop.layout",
16736
+ text: "Disposition"
16737
+ },
16738
+ {
16739
+ key: "pb.prop.direction",
16740
+ text: "Direction"
16741
+ },
16742
+ {
16743
+ key: "pb.prop.wrap",
16744
+ text: "Retour à la ligne"
16745
+ },
16746
+ {
16747
+ key: "pb.prop.gap",
16748
+ text: "Espacement"
16749
+ },
16750
+ {
16751
+ key: "pb.prop.align",
16752
+ text: "Aligner"
16753
+ },
16754
+ {
16755
+ key: "pb.prop.alignItems",
16756
+ text: "Aligner les éléments"
16757
+ },
16758
+ {
16759
+ key: "pb.prop.justifyContent",
16760
+ text: "Justifier le contenu"
16761
+ },
16762
+ {
16763
+ key: "pb.prop.alignSelf",
16764
+ text: "Auto-alignement"
16765
+ },
16766
+ {
16767
+ key: "pb.prop.maxWidth",
16768
+ text: "Largeur maximale"
16769
+ },
16770
+ {
16771
+ key: "pb.prop.text",
16772
+ text: "Texte"
16773
+ },
16774
+ {
16775
+ key: "pb.prop.fontSize",
16776
+ text: "Taille de police"
16777
+ },
16778
+ {
16779
+ key: "pb.prop.fontWeight",
16780
+ text: "Épaisseur de police"
16781
+ },
16782
+ {
16783
+ key: "pb.prop.textAlign",
16784
+ text: "Alignement du texte"
16785
+ },
16786
+ {
16787
+ key: "pb.prop.fontColor",
16788
+ text: "Couleur de police"
16789
+ },
16790
+ {
16791
+ key: "pb.prop.image",
16792
+ text: "Image"
16793
+ },
16794
+ {
16795
+ key: "pb.prop.media",
16796
+ text: "Média"
16797
+ },
16798
+ {
16799
+ key: "pb.prop.html",
16800
+ text: "HTML"
16801
+ },
16802
+ {
16803
+ key: "pb.prop.url",
16804
+ text: "URL"
16805
+ },
16806
+ {
16807
+ key: "pb.prop.aspectRatio",
16808
+ text: "Rapport hauteur/largeur"
16809
+ },
16810
+ {
16811
+ key: "pb.prop.selectVideo",
16812
+ text: "Sélectionner une vidéo"
16813
+ },
16814
+ {
16815
+ key: "pb.button.ok",
16816
+ text: "OK"
16817
+ },
16818
+ {
16819
+ key: "pb.button.cancel",
16820
+ text: "Annuler"
16821
+ },
16822
+ {
16823
+ key: "pb.modal.addWidget.title",
16824
+ text: "Ajouter un widget"
16825
+ },
16826
+ {
16827
+ key: "pb.modal.youtube.title",
16828
+ text: "Vidéo YouTube"
16829
+ },
16830
+ {
16831
+ key: "pb.modal.youtube.url",
16832
+ text: "URL"
16833
+ },
16834
+ {
16835
+ key: "pb.modal.youtube.preview",
16836
+ text: "Aperçu"
16837
+ },
16838
+ {
16839
+ key: "pb.modal.screenSelect.title",
16840
+ text: "Sélectionner un écran"
16841
+ },
16842
+ {
16843
+ key: "pb.modal.screenSelect.message",
16844
+ text: "Quel écran souhaitez-vous conserver ?"
16845
+ },
16846
+ {
16847
+ key: "pb.modal.screenSelect.pc",
16848
+ text: "PC"
16849
+ },
16850
+ {
16851
+ key: "pb.modal.screenSelect.mobile",
16852
+ text: "Mobile"
16853
+ },
16854
+ {
16855
+ key: "pb.modal.htmlEditor.title",
16856
+ text: "Éditeur HTML"
16857
+ },
16858
+ {
16859
+ key: "pb.modal.htmlEditor.preview",
16860
+ text: "Aperçu"
16861
+ },
16862
+ {
16863
+ key: "pb.modal.htmlEditor.tags",
16864
+ text: "Balises"
16865
+ },
16866
+ {
16867
+ key: "pb.modal.htmlEditor.style",
16868
+ text: "Style"
16869
+ },
16870
+ {
16871
+ key: "pb.prop.hideParentWhenInvisible",
16872
+ text: "Masquer le bloc et la section si le widget est invisible"
16873
+ },
16874
+ {
16875
+ key: "pb.prop.copied",
16876
+ text: "Copié."
16877
+ }
16878
+ ];
16404
16879
  bluesea.i18n.addTexts("en", enTexts);
16405
16880
  bluesea.i18n.addTexts("ja", jaTexts);
16406
16881
  bluesea.i18n.addTexts("ko", koTexts);
16407
16882
  bluesea.i18n.addTexts("zh", zhTexts);
16883
+ bluesea.i18n.addTexts("fr", frTexts);
16408
16884
  const _hoisted_1$f = { class: "pb-editor bs-layout-vertical flex-grow-1" };
16409
16885
  const _hoisted_2$e = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
16410
16886
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({