@g1cloud/page-builder-editor 1.0.0-alpha.74 → 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.
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { ref, defineComponent, computed, openBlock, createElementBlock, Fragment, createElementVNode, normalizeStyle, createCommentVNode, toDisplayString, onMounted, onBeforeUnmount, createBlock as createBlock$1, resolveDynamicComponent, unref, provide, inject, watch, renderList, normalizeProps, mergeProps, normalizeClass, withDirectives, vShow, reactive, defineAsyncComponent, createVNode, resolveComponent, vModelText, resolveDirective, withModifiers, renderSlot, guardReactiveProps, createTextVNode, markRaw, toHandlers, Teleport } from "vue";
4
+ import { ref, defineComponent, computed, openBlock, createElementBlock, Fragment, createElementVNode, normalizeStyle, createCommentVNode, toDisplayString, watch, onMounted, onBeforeUnmount, createBlock as createBlock$1, resolveDynamicComponent, unref, provide, inject, renderList, normalizeProps, mergeProps, normalizeClass, withDirectives, vShow, reactive, defineAsyncComponent, createVNode, resolveComponent, vModelText, resolveDirective, withModifiers, renderSlot, guardReactiveProps, createTextVNode, markRaw, toHandlers, Teleport } from "vue";
5
5
  import { notNull, vT, BSTextInput, vClickOutside, useModal, BSButton, BSMultiLangTextInput, showNotification, BSSelect, BSTree, useContextMenu, i18n } from "@g1cloud/bluesea";
6
6
  import YouTube from "vue3-youtube";
7
7
  const create$5 = () => /* @__PURE__ */ new Map();
@@ -7215,28 +7215,132 @@ const _sfc_main$5$1 = /* @__PURE__ */ defineComponent({
7215
7215
  if (!url2) return;
7216
7216
  if (typeof url2 !== "object") return;
7217
7217
  const locale = pageBuilder.getLocale();
7218
- return url2[locale];
7218
+ let _url = url2[locale];
7219
+ if (_url) {
7220
+ const timestamp = (/* @__PURE__ */ new Date()).getTime();
7221
+ _url = _url.indexOf("?") >= 0 ? `${_url}&` : `${_url}?`;
7222
+ _url = `${_url}&widgetId=${props.part.partId}`;
7223
+ _url = `${_url}&${timestamp}`;
7224
+ return _url;
7225
+ }
7226
+ return "";
7219
7227
  });
7220
- const style = computed(() => ({
7228
+ const contentHeight = ref(0);
7229
+ const style = ref({
7221
7230
  width: "100%",
7222
- height: `${height.value}px`
7223
- }));
7224
- const height = ref(200);
7225
- const updateHeight = (event) => {
7226
- console.log(event);
7227
- if (event.data && event.data.height) {
7228
- height.value = event.data.height;
7231
+ height: ""
7232
+ });
7233
+ const iframeHeight = ref(0);
7234
+ watch(
7235
+ () => {
7236
+ var _a;
7237
+ return [iframeHeight.value, contentHeight.value, (_a = props.part.properties) == null ? void 0 : _a.height];
7238
+ },
7239
+ () => {
7240
+ var _a;
7241
+ if (iframeHeight.value) {
7242
+ style.value.height = `${iframeHeight.value}px`;
7243
+ } else if (contentHeight.value) {
7244
+ style.value.height = `${contentHeight.value}px`;
7245
+ } else if ((_a = props.part.properties) == null ? void 0 : _a.height) {
7246
+ style.value.height = props.part.properties.height;
7247
+ } else {
7248
+ style.value.height = "200px";
7249
+ }
7250
+ },
7251
+ { immediate: true }
7252
+ );
7253
+ const updateHeightByMessage = (event) => {
7254
+ if (event.data && event.data.widgetId === props.part.partId && event.data.height) {
7255
+ contentHeight.value = event.data.height;
7256
+ }
7257
+ };
7258
+ onMounted(() => {
7259
+ window.addEventListener("message", updateHeightByMessage);
7260
+ });
7261
+ onBeforeUnmount(() => {
7262
+ window.removeEventListener("message", updateHeightByMessage);
7263
+ });
7264
+ const iframeRef = ref();
7265
+ let resizeObserver;
7266
+ let mutationObserver;
7267
+ let setupInterval;
7268
+ function getContentHeight(doc) {
7269
+ const body = doc.body;
7270
+ const html = doc.documentElement;
7271
+ const scrollH = Math.max((body == null ? void 0 : body.scrollHeight) || 0, (html == null ? void 0 : html.scrollHeight) || 0);
7272
+ const boundH = Math.max(
7273
+ (body == null ? void 0 : body.getBoundingClientRect().height) || 0,
7274
+ (html == null ? void 0 : html.getBoundingClientRect().height) || 0
7275
+ );
7276
+ return Math.max(scrollH, boundH);
7277
+ }
7278
+ const updateHeight = () => {
7279
+ var _a;
7280
+ const iframe = iframeRef.value;
7281
+ if (!iframe) return;
7282
+ try {
7283
+ const doc = iframe.contentDocument || ((_a = iframe.contentWindow) == null ? void 0 : _a.document);
7284
+ if (!doc) return;
7285
+ const newHeight = getContentHeight(doc);
7286
+ if (newHeight !== iframeHeight.value) {
7287
+ iframeHeight.value = newHeight;
7288
+ }
7289
+ } catch (e) {
7229
7290
  }
7230
7291
  };
7292
+ const setupObservers = () => {
7293
+ const iframe = iframeRef.value;
7294
+ const doc = iframe == null ? void 0 : iframe.contentDocument;
7295
+ const body = doc == null ? void 0 : doc.body;
7296
+ if (!doc || !body) return;
7297
+ resizeObserver = new ResizeObserver(updateHeight);
7298
+ resizeObserver.observe(body);
7299
+ mutationObserver = new MutationObserver(updateHeight);
7300
+ mutationObserver.observe(body, {
7301
+ childList: true,
7302
+ subtree: true,
7303
+ attributes: true
7304
+ });
7305
+ updateHeight();
7306
+ };
7231
7307
  onMounted(() => {
7232
- window.addEventListener("message", updateHeight);
7308
+ setupInterval = setInterval(() => {
7309
+ if (!iframeRef.value) return;
7310
+ const doc = iframeRef.value.contentDocument;
7311
+ if ((doc == null ? void 0 : doc.readyState) === "complete") {
7312
+ setupObservers();
7313
+ if (setupInterval) {
7314
+ clearInterval(setupInterval);
7315
+ setupInterval = void 0;
7316
+ }
7317
+ }
7318
+ }, 1e3);
7233
7319
  });
7234
7320
  onBeforeUnmount(() => {
7235
- window.removeEventListener("message", updateHeight);
7321
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
7322
+ mutationObserver == null ? void 0 : mutationObserver.disconnect();
7323
+ if (setupInterval) {
7324
+ clearInterval(setupInterval);
7325
+ setupInterval = void 0;
7326
+ }
7236
7327
  });
7328
+ watch(
7329
+ () => [iframeRef.value],
7330
+ () => {
7331
+ if (iframeRef.value) {
7332
+ iframeRef.value.addEventListener("load", () => {
7333
+ setupObservers();
7334
+ });
7335
+ }
7336
+ },
7337
+ { immediate: true }
7338
+ );
7237
7339
  return (_ctx, _cache) => {
7238
7340
  return url.value ? (openBlock(), createElementBlock("iframe", {
7239
7341
  key: 0,
7342
+ ref_key: "iframeRef",
7343
+ ref: iframeRef,
7240
7344
  src: url.value,
7241
7345
  style: normalizeStyle(style.value)
7242
7346
  }, null, 12, _hoisted_1$4$1)) : _ctx.placeholder ? (openBlock(), createElementBlock("div", _hoisted_2$1$1)) : createCommentVNode("", true);
@@ -7533,7 +7637,7 @@ const _sfc_main$3$1 = /* @__PURE__ */ defineComponent({
7533
7637
  }
7534
7638
  });
7535
7639
  const _hoisted_1$1$1 = ["innerHTML"];
7536
- const _hoisted_2$h = { class: "pb-viewer" };
7640
+ const _hoisted_2$i = { class: "pb-viewer" };
7537
7641
  const _sfc_main$2$1 = /* @__PURE__ */ defineComponent({
7538
7642
  __name: "PageBuilderViewer",
7539
7643
  props: {
@@ -7574,7 +7678,7 @@ const _sfc_main$2$1 = /* @__PURE__ */ defineComponent({
7574
7678
  key: 0,
7575
7679
  innerHTML: unref(externalCss)
7576
7680
  }, null, 8, _hoisted_1$1$1)) : createCommentVNode("", true),
7577
- createElementVNode("div", _hoisted_2$h, [
7681
+ createElementVNode("div", _hoisted_2$i, [
7578
7682
  part.value ? (openBlock(), createBlock$1(_sfc_main$3$1, {
7579
7683
  key: 0,
7580
7684
  "is-mobile-page": _ctx.isMobilePage,
@@ -8214,16 +8318,16 @@ class PartManager {
8214
8318
  const defaultPartPropertyEditors = () => {
8215
8319
  return {
8216
8320
  "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-BJ5qx69O.js")),
8217
- "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-B71kpUsZ.js")),
8321
+ "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-BJK-i2RV.js")),
8218
8322
  "number": () => defineAsyncComponent(() => import("./PbPropertyEditorNumber-B76ArSb5.js")),
8219
8323
  "boolean": () => defineAsyncComponent(() => import("./PbPropertyEditorBoolean-c5CNiTpt.js")),
8220
- "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-BihLD7YL.js")),
8324
+ "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-RbI_6mDe.js")),
8221
8325
  "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-B5sfulvx.js")),
8222
- "css-length": () => defineAsyncComponent(() => import("./PbPropertyEditorCssLength-lQ3q_Hcj.js")),
8223
- "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-Gyf7NmiL.js")),
8224
- "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-XRvUWl4r.js")),
8225
- "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-CZt1GGd3.js")),
8226
- "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-CTziBWaJ.js"))
8326
+ "css-length": () => defineAsyncComponent(() => import("./PbPropertyEditorCssLength-DECtcGWr.js")),
8327
+ "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-CRUPv7e6.js")),
8328
+ "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-PEILG_Cx.js")),
8329
+ "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-DKeEg8Q2.js")),
8330
+ "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-BEzsNZG-.js"))
8227
8331
  };
8228
8332
  };
8229
8333
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -8513,7 +8617,7 @@ const useMouseTracker = () => {
8513
8617
  return mouseTracker;
8514
8618
  };
8515
8619
  const _hoisted_1$s = ["data-part-id", "draggable"];
8516
- const _hoisted_2$g = {
8620
+ const _hoisted_2$h = {
8517
8621
  key: 1,
8518
8622
  class: "invalid-widget",
8519
8623
  textContent: "Invalid Widget"
@@ -8943,7 +9047,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
8943
9047
  draggable: draggable.value,
8944
9048
  style: normalizeStyle(style.value)
8945
9049
  }, [
8946
- component.value ? (openBlock(), createBlock$1(resolveDynamicComponent(component.value), normalizeProps(mergeProps({ key: 0 }, bind.value)), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_2$g)),
9050
+ component.value ? (openBlock(), createBlock$1(resolveDynamicComponent(component.value), normalizeProps(mergeProps({ key: 0 }, bind.value)), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_2$h)),
8947
9051
  selected.value && _ctx.part.isNestedWidget() ? (openBlock(), createElementBlock("div", {
8948
9052
  key: 2,
8949
9053
  class: "pan-handle",
@@ -9334,7 +9438,7 @@ function toCssLength(value) {
9334
9438
  return `${numberMatch[0]}px`;
9335
9439
  }
9336
9440
  const _hoisted_1$o = { class: "group-editor group-editor-position" };
9337
- const _hoisted_2$f = { class: "flex-align-center" };
9441
+ const _hoisted_2$g = { class: "flex-align-center" };
9338
9442
  const _hoisted_3$c = { class: "title" };
9339
9443
  const _hoisted_4$a = { class: "flex-grow-1" };
9340
9444
  const _hoisted_5$7 = { class: "bg-gray-100 py-5 rounded-8" };
@@ -9366,7 +9470,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
9366
9470
  const updateBottom = (value) => updatePropertyValue({ bottom: toCssLength(value) });
9367
9471
  return (_ctx, _cache) => {
9368
9472
  return openBlock(), createElementBlock("div", _hoisted_1$o, [
9369
- createElementVNode("div", _hoisted_2$f, [
9473
+ createElementVNode("div", _hoisted_2$g, [
9370
9474
  createElementVNode("div", _hoisted_3$c, [
9371
9475
  withDirectives(createElementVNode("label", null, null, 512), [
9372
9476
  [unref(vT), { key: "pb.prop.position" }]
@@ -9422,7 +9526,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
9422
9526
  }
9423
9527
  });
9424
9528
  const _hoisted_1$n = { class: "group-editor group-editor-size" };
9425
- const _hoisted_2$e = { class: "flex-align-center" };
9529
+ const _hoisted_2$f = { class: "flex-align-center" };
9426
9530
  const _hoisted_3$b = { class: "title" };
9427
9531
  const _hoisted_4$9 = { class: "flex-grow-1 bs-layout-horizontal" };
9428
9532
  const _hoisted_5$6 = { class: "flex-align-center mt-12" };
@@ -9460,7 +9564,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
9460
9564
  const updateMinHeight = (value) => updatePropertyValue({ minHeight: toCssLength(value) });
9461
9565
  return (_ctx, _cache) => {
9462
9566
  return openBlock(), createElementBlock("div", _hoisted_1$n, [
9463
- createElementVNode("div", _hoisted_2$e, [
9567
+ createElementVNode("div", _hoisted_2$f, [
9464
9568
  createElementVNode("div", _hoisted_3$b, [
9465
9569
  withDirectives(createElementVNode("label", null, null, 512), [
9466
9570
  [unref(vT), { key: "pb.prop.size" }]
@@ -9684,7 +9788,7 @@ var script$4 = {
9684
9788
  }
9685
9789
  };
9686
9790
  const _hoisted_1$m = { class: "vc-alpha" };
9687
- const _hoisted_2$d = { class: "vc-alpha-checkboard-wrap" };
9791
+ const _hoisted_2$e = { class: "vc-alpha-checkboard-wrap" };
9688
9792
  const _hoisted_3$a = /* @__PURE__ */ createElementVNode(
9689
9793
  "div",
9690
9794
  { class: "vc-alpha-picker" },
@@ -9698,7 +9802,7 @@ const _hoisted_4$8 = [
9698
9802
  function render$4(_ctx, _cache, $props, $setup, $data, $options) {
9699
9803
  const _component_Checkboard = resolveComponent("Checkboard");
9700
9804
  return openBlock(), createElementBlock("div", _hoisted_1$m, [
9701
- createElementVNode("div", _hoisted_2$d, [
9805
+ createElementVNode("div", _hoisted_2$e, [
9702
9806
  createVNode(_component_Checkboard)
9703
9807
  ]),
9704
9808
  createElementVNode(
@@ -10802,7 +10906,7 @@ var script$3 = {
10802
10906
  }
10803
10907
  };
10804
10908
  const _hoisted_1$l = { class: "vc-editable-input" };
10805
- const _hoisted_2$c = ["aria-labelledby"];
10909
+ const _hoisted_2$d = ["aria-labelledby"];
10806
10910
  const _hoisted_3$9 = ["id", "for"];
10807
10911
  const _hoisted_4$7 = { class: "vc-input__desc" };
10808
10912
  function render$3(_ctx, _cache, $props, $setup, $data, $options) {
@@ -10814,7 +10918,7 @@ function render$3(_ctx, _cache, $props, $setup, $data, $options) {
10814
10918
  class: "vc-input__input",
10815
10919
  onKeydown: _cache[1] || (_cache[1] = (...args) => $options.handleKeyDown && $options.handleKeyDown(...args)),
10816
10920
  onInput: _cache[2] || (_cache[2] = (...args) => $options.update && $options.update(...args))
10817
- }, null, 40, _hoisted_2$c), [
10921
+ }, null, 40, _hoisted_2$d), [
10818
10922
  [vModelText, $options.val]
10819
10923
  ]),
10820
10924
  createElementVNode("span", {
@@ -10908,7 +11012,7 @@ const _hoisted_1$k = /* @__PURE__ */ createElementVNode(
10908
11012
  -1
10909
11013
  /* HOISTED */
10910
11014
  );
10911
- const _hoisted_2$b = /* @__PURE__ */ createElementVNode(
11015
+ const _hoisted_2$c = /* @__PURE__ */ createElementVNode(
10912
11016
  "div",
10913
11017
  { class: "vc-saturation--black" },
10914
11018
  null,
@@ -10938,7 +11042,7 @@ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
10938
11042
  },
10939
11043
  [
10940
11044
  _hoisted_1$k,
10941
- _hoisted_2$b,
11045
+ _hoisted_2$c,
10942
11046
  createElementVNode(
10943
11047
  "div",
10944
11048
  {
@@ -11087,7 +11191,7 @@ var script$1 = {
11087
11191
  }
11088
11192
  };
11089
11193
  const _hoisted_1$j = ["aria-valuenow"];
11090
- const _hoisted_2$a = /* @__PURE__ */ createElementVNode(
11194
+ const _hoisted_2$b = /* @__PURE__ */ createElementVNode(
11091
11195
  "div",
11092
11196
  { class: "vc-hue-picker" },
11093
11197
  null,
@@ -11095,7 +11199,7 @@ const _hoisted_2$a = /* @__PURE__ */ createElementVNode(
11095
11199
  /* HOISTED */
11096
11200
  );
11097
11201
  const _hoisted_3$7 = [
11098
- _hoisted_2$a
11202
+ _hoisted_2$b
11099
11203
  ];
11100
11204
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
11101
11205
  return openBlock(), createElementBlock(
@@ -11223,7 +11327,7 @@ var script = {
11223
11327
  }
11224
11328
  };
11225
11329
  const _hoisted_1$i = { class: "vc-sketch-saturation-wrap" };
11226
- const _hoisted_2$9 = { class: "vc-sketch-controls" };
11330
+ const _hoisted_2$a = { class: "vc-sketch-controls" };
11227
11331
  const _hoisted_3$6 = { class: "vc-sketch-sliders" };
11228
11332
  const _hoisted_4$5 = { class: "vc-sketch-hue-wrap" };
11229
11333
  const _hoisted_5$5 = {
@@ -11271,7 +11375,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
11271
11375
  onChange: $options.childChange
11272
11376
  }, null, 8, ["value", "onChange"])
11273
11377
  ]),
11274
- createElementVNode("div", _hoisted_2$9, [
11378
+ createElementVNode("div", _hoisted_2$a, [
11275
11379
  createElementVNode("div", _hoisted_3$6, [
11276
11380
  createElementVNode("div", _hoisted_4$5, [
11277
11381
  createVNode(_component_Hue, {
@@ -11438,7 +11542,7 @@ const _sfc_main$i = defineComponent({
11438
11542
  }
11439
11543
  });
11440
11544
  const _hoisted_1$h = { class: "buttons" };
11441
- const _hoisted_2$8 = { class: "sketch-wrap" };
11545
+ const _hoisted_2$9 = { class: "sketch-wrap" };
11442
11546
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11443
11547
  const _component_Sketch = resolveComponent("Sketch");
11444
11548
  const _directive_click_outside = resolveDirective("click-outside");
@@ -11462,7 +11566,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11462
11566
  createElementVNode("i", { class: "material-icons-outlined" }, "delete", -1)
11463
11567
  ]))) : createCommentVNode("", true)
11464
11568
  ]),
11465
- createElementVNode("div", _hoisted_2$8, [
11569
+ createElementVNode("div", _hoisted_2$9, [
11466
11570
  _ctx.isShowColorPicker ? (openBlock(), createBlock$1(_component_Sketch, {
11467
11571
  key: 0,
11468
11572
  modelValue: _ctx.color,
@@ -11476,7 +11580,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11476
11580
  }
11477
11581
  const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render]]);
11478
11582
  const _hoisted_1$g = { class: "group-editor group-editor-background" };
11479
- const _hoisted_2$7 = { class: "flex-align-center" };
11583
+ const _hoisted_2$8 = { class: "flex-align-center" };
11480
11584
  const _hoisted_3$5 = { class: "title" };
11481
11585
  const _hoisted_4$4 = { class: "bs-layout-horizontal" };
11482
11586
  const _hoisted_5$4 = { class: "color" };
@@ -11515,7 +11619,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
11515
11619
  };
11516
11620
  return (_ctx, _cache) => {
11517
11621
  return openBlock(), createElementBlock("div", _hoisted_1$g, [
11518
- createElementVNode("div", _hoisted_2$7, [
11622
+ createElementVNode("div", _hoisted_2$8, [
11519
11623
  createElementVNode("div", _hoisted_3$5, [
11520
11624
  withDirectives(createElementVNode("label", null, null, 512), [
11521
11625
  [unref(vT), { key: "pb.prop.background" }]
@@ -11554,7 +11658,7 @@ const TopRightCornerIcon = "data:image/svg+xml,%3c!DOCTYPE%20svg%20PUBLIC%20'-//
11554
11658
  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";
11555
11659
  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";
11556
11660
  const _hoisted_1$f = { class: "group-editor group-editor-border" };
11557
- const _hoisted_2$6 = { class: "flex-align-center" };
11661
+ const _hoisted_2$7 = { class: "flex-align-center" };
11558
11662
  const _hoisted_3$4 = { class: "title" };
11559
11663
  const _hoisted_4$3 = { class: "" };
11560
11664
  const _hoisted_5$3 = { class: "sub-title" };
@@ -11611,7 +11715,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
11611
11715
  const updateBorderBottomRightRadius = (value) => updatePropertyValue({ borderBottomRightRadius: toCssLength(value) });
11612
11716
  return (_ctx, _cache) => {
11613
11717
  return openBlock(), createElementBlock("div", _hoisted_1$f, [
11614
- createElementVNode("div", _hoisted_2$6, [
11718
+ createElementVNode("div", _hoisted_2$7, [
11615
11719
  createElementVNode("div", _hoisted_3$4, [
11616
11720
  withDirectives(createElementVNode("label", null, null, 512), [
11617
11721
  [unref(vT), { key: "pb.prop.border" }]
@@ -11741,7 +11845,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
11741
11845
  }
11742
11846
  });
11743
11847
  const _hoisted_1$e = { class: "group-editor group-editor-margin" };
11744
- const _hoisted_2$5 = { class: "flex-align-center" };
11848
+ const _hoisted_2$6 = { class: "flex-align-center" };
11745
11849
  const _hoisted_3$3 = { class: "title" };
11746
11850
  const _hoisted_4$2 = { class: "flex-grow-1" };
11747
11851
  const _hoisted_5$2 = { class: "bg-gray-100 py-5 rounded-8" };
@@ -11773,7 +11877,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
11773
11877
  const updateBottom = (value) => updatePropertyValue({ marginBottom: toCssLength(value) });
11774
11878
  return (_ctx, _cache) => {
11775
11879
  return openBlock(), createElementBlock("div", _hoisted_1$e, [
11776
- createElementVNode("div", _hoisted_2$5, [
11880
+ createElementVNode("div", _hoisted_2$6, [
11777
11881
  createElementVNode("div", _hoisted_3$3, [
11778
11882
  withDirectives(createElementVNode("label", null, null, 512), [
11779
11883
  [unref(vT), { key: "pb.prop.margin" }]
@@ -11829,7 +11933,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
11829
11933
  }
11830
11934
  });
11831
11935
  const _hoisted_1$d = { class: "group-editor group-editor-padding" };
11832
- const _hoisted_2$4 = { class: "flex-align-center" };
11936
+ const _hoisted_2$5 = { class: "flex-align-center" };
11833
11937
  const _hoisted_3$2 = { class: "title" };
11834
11938
  const _hoisted_4$1 = { class: "flex-grow-1" };
11835
11939
  const _hoisted_5$1 = { class: "bg-gray-100 py-5 rounded-8" };
@@ -11861,7 +11965,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11861
11965
  const updateBottom = (value) => updatePropertyValue({ paddingBottom: toCssLength(value) });
11862
11966
  return (_ctx, _cache) => {
11863
11967
  return openBlock(), createElementBlock("div", _hoisted_1$d, [
11864
- createElementVNode("div", _hoisted_2$4, [
11968
+ createElementVNode("div", _hoisted_2$5, [
11865
11969
  createElementVNode("div", _hoisted_3$2, [
11866
11970
  withDirectives(createElementVNode("label", null, null, 512), [
11867
11971
  [unref(vT), { key: "pb.prop.padding" }]
@@ -12257,7 +12361,7 @@ const defaultWidgetPropertyGroups = () => {
12257
12361
  return [alignSelfGroup(), positionGroup(), sizeGroup(), marginGroup(), paddingGroup(), borderGroup(), backgroundGroup(), commonGroup(), hideParentGroup()];
12258
12362
  };
12259
12363
  const _hoisted_1$c = { class: "group-editor group-editor-media" };
12260
- const _hoisted_2$3 = { class: "title" };
12364
+ const _hoisted_2$4 = { class: "title" };
12261
12365
  const _hoisted_3$1 = {
12262
12366
  key: 0,
12263
12367
  class: "title mt-12"
@@ -12321,7 +12425,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
12321
12425
  return (_ctx, _cache) => {
12322
12426
  var _a, _b, _c, _d;
12323
12427
  return openBlock(), createElementBlock("div", _hoisted_1$c, [
12324
- createElementVNode("div", _hoisted_2$3, [
12428
+ createElementVNode("div", _hoisted_2$4, [
12325
12429
  withDirectives(createElementVNode("label", null, null, 512), [
12326
12430
  [unref(vT), { key: "pb.prop.media" }]
12327
12431
  ])
@@ -12779,7 +12883,7 @@ __publicField(_OpenAddWidgetModalCommand, "COMMAND_ID", "OpenAddWidgetModal");
12779
12883
  let OpenAddWidgetModalCommand = _OpenAddWidgetModalCommand;
12780
12884
  const openWidgetAddModal = (modal, args, callback) => {
12781
12885
  modal.openModal({
12782
- component: defineAsyncComponent(() => import("./PbWidgetAddModal-BM6etjo4.js")),
12886
+ component: defineAsyncComponent(() => import("./PbWidgetAddModal-B_mxaSD-.js")),
12783
12887
  style: {
12784
12888
  width: "80%",
12785
12889
  height: "80%",
@@ -14427,7 +14531,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
14427
14531
  }
14428
14532
  });
14429
14533
  const _hoisted_1$9 = { class: "pb-toolbar bs-layout-horizontal align-items-center" };
14430
- const _hoisted_2$2 = { class: "bs-layout-horizontal align-items-center" };
14534
+ const _hoisted_2$3 = { class: "bs-layout-horizontal align-items-center" };
14431
14535
  const _hoisted_3 = { class: "mr-8" };
14432
14536
  const _sfc_main$a = /* @__PURE__ */ defineComponent({
14433
14537
  __name: "PbToolbar",
@@ -14479,7 +14583,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
14479
14583
  return (_ctx, _cache) => {
14480
14584
  var _a, _b, _c;
14481
14585
  return openBlock(), createElementBlock("div", _hoisted_1$9, [
14482
- createElementVNode("div", _hoisted_2$2, [
14586
+ createElementVNode("div", _hoisted_2$3, [
14483
14587
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(buttonGroups), (group) => {
14484
14588
  return openBlock(), createBlock$1(_sfc_main$b, {
14485
14589
  key: group.groupId,
@@ -14676,7 +14780,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
14676
14780
  "icon-provider": iconProvider,
14677
14781
  "key-provider": (part) => part.partId,
14678
14782
  "label-provider": labelProvider,
14679
- class: "max-w-320",
14783
+ class: "max-w-320 h-full",
14680
14784
  "dont-change-data-when-row-moved": "",
14681
14785
  "multi-select": "",
14682
14786
  "show-move-button": "",
@@ -14723,7 +14827,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
14723
14827
  }
14724
14828
  });
14725
14829
  const _hoisted_1$6 = { class: "pb-sidebar-property-group" };
14726
- const _hoisted_2$1 = {
14830
+ const _hoisted_2$2 = {
14727
14831
  key: 0,
14728
14832
  class: "group-title"
14729
14833
  };
@@ -14742,7 +14846,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
14742
14846
  });
14743
14847
  return (_ctx, _cache) => {
14744
14848
  return openBlock(), createElementBlock("div", _hoisted_1$6, [
14745
- _ctx.group.showGroupName ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
14849
+ _ctx.group.showGroupName ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
14746
14850
  withDirectives(createElementVNode("label", null, null, 512), [
14747
14851
  [unref(vT), { key: _ctx.group.caption }]
14748
14852
  ])
@@ -14769,6 +14873,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
14769
14873
  }
14770
14874
  });
14771
14875
  const _hoisted_1$5 = { class: "pb-sidebar-properties" };
14876
+ const _hoisted_2$1 = {
14877
+ key: 0,
14878
+ class: "bg-primary-500 text-white pl-16 py-8"
14879
+ };
14772
14880
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
14773
14881
  __name: "PbSidebarProperties",
14774
14882
  setup(__props) {
@@ -14786,8 +14894,16 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
14786
14894
  return [];
14787
14895
  }
14788
14896
  });
14897
+ const partName = computed(() => {
14898
+ if (selectedParts.length === 1) {
14899
+ const part = selectedParts[0];
14900
+ const def = pageBuilder.partManager.getPartDefinition(part.partName);
14901
+ if (def) return def.caption;
14902
+ }
14903
+ });
14789
14904
  return (_ctx, _cache) => {
14790
14905
  return openBlock(), createElementBlock("div", _hoisted_1$5, [
14906
+ partName.value ? (openBlock(), createElementBlock("div", _hoisted_2$1, toDisplayString(partName.value), 1)) : createCommentVNode("", true),
14791
14907
  (openBlock(true), createElementBlock(Fragment, null, renderList(properties.value, (group) => {
14792
14908
  return openBlock(), createElementBlock("div", {
14793
14909
  key: `${partsKey.value}_${group.groupName}`
@@ -16425,10 +16541,345 @@ const zhTexts = [
16425
16541
  text: "已复制。"
16426
16542
  }
16427
16543
  ];
16544
+ const frTexts = [
16545
+ {
16546
+ key: "pb.button.undo",
16547
+ text: "Annuler"
16548
+ },
16549
+ {
16550
+ key: "pb.button.redo",
16551
+ text: "Rétablir"
16552
+ },
16553
+ {
16554
+ key: "pb.button.copyAll",
16555
+ text: "Copier tout"
16556
+ },
16557
+ {
16558
+ key: "pb.button.copy",
16559
+ text: "Copier"
16560
+ },
16561
+ {
16562
+ key: "pb.button.cut",
16563
+ text: "Couper"
16564
+ },
16565
+ {
16566
+ key: "pb.button.paste",
16567
+ text: "Coller"
16568
+ },
16569
+ {
16570
+ key: "pb.button.delete",
16571
+ text: "Supprimer"
16572
+ },
16573
+ {
16574
+ key: "pb.button.addSection",
16575
+ text: "Ajouter une section"
16576
+ },
16577
+ {
16578
+ key: "pb.button.addBlock",
16579
+ text: "Ajouter un bloc"
16580
+ },
16581
+ {
16582
+ key: "pb.button.addWidget",
16583
+ text: "Ajouter un widget"
16584
+ },
16585
+ {
16586
+ key: "pb.menu.addSectionAbove",
16587
+ text: "Ajouter une section au-dessus"
16588
+ },
16589
+ {
16590
+ key: "pb.menu.addSectionBelow",
16591
+ text: "Ajouter une section en dessous"
16592
+ },
16593
+ {
16594
+ key: "pb.menu.addBlockLeft",
16595
+ text: "Ajouter un bloc à gauche"
16596
+ },
16597
+ {
16598
+ key: "pb.menu.addBlockRight",
16599
+ text: "Ajouter un bloc à droite"
16600
+ },
16601
+ {
16602
+ key: "pb.menu.addBlockAbove",
16603
+ text: "Ajouter un bloc au-dessus"
16604
+ },
16605
+ {
16606
+ key: "pb.menu.addBlockBelow",
16607
+ text: "Ajouter un bloc en dessous"
16608
+ },
16609
+ {
16610
+ key: "pb.menu.addWidgetLeft",
16611
+ text: "Ajouter un widget à gauche"
16612
+ },
16613
+ {
16614
+ key: "pb.menu.addWidgetRight",
16615
+ text: "Ajouter un widget à droite"
16616
+ },
16617
+ {
16618
+ key: "pb.menu.addWidgetAbove",
16619
+ text: "Ajouter un widget au-dessus"
16620
+ },
16621
+ {
16622
+ key: "pb.menu.addWidgetBelow",
16623
+ text: "Ajouter un widget en dessous"
16624
+ },
16625
+ {
16626
+ key: "pb.menu.addWidgetInside",
16627
+ text: "Ajouter un widget à l'intérieur"
16628
+ },
16629
+ {
16630
+ key: "pb.menu.deletePart",
16631
+ text: "Supprimer"
16632
+ },
16633
+ {
16634
+ key: "pb.prop.name",
16635
+ text: "Nom"
16636
+ },
16637
+ {
16638
+ key: "pb.prop.id",
16639
+ text: "ID de balise"
16640
+ },
16641
+ {
16642
+ key: "pb.prop.classNames",
16643
+ text: "Noms de classes CSS"
16644
+ },
16645
+ {
16646
+ key: "pb.prop.inlineStyle",
16647
+ text: "Style CSS en ligne"
16648
+ },
16649
+ {
16650
+ key: "pb.prop.style",
16651
+ text: "Style CSS"
16652
+ },
16653
+ {
16654
+ key: "pb.prop.widgetClassNames",
16655
+ text: "Noms de classes du widget"
16656
+ },
16657
+ {
16658
+ key: "pb.prop.partId",
16659
+ text: "ID"
16660
+ },
16661
+ {
16662
+ key: "pb.prop.size",
16663
+ text: "Taille"
16664
+ },
16665
+ {
16666
+ key: "pb.prop.maxSize",
16667
+ text: "Taille maximale"
16668
+ },
16669
+ {
16670
+ key: "pb.prop.minSize",
16671
+ text: "Taille minimale"
16672
+ },
16673
+ {
16674
+ key: "pb.prop.margin",
16675
+ text: "Marge"
16676
+ },
16677
+ {
16678
+ key: "pb.prop.padding",
16679
+ text: "Rembourrage"
16680
+ },
16681
+ {
16682
+ key: "pb.prop.background",
16683
+ text: "Arrière-plan"
16684
+ },
16685
+ {
16686
+ key: "pb.prop.selectImage",
16687
+ text: "Sélectionner une image"
16688
+ },
16689
+ {
16690
+ key: "pb.prop.border",
16691
+ text: "Bordure"
16692
+ },
16693
+ {
16694
+ key: "pb.prop.borderColor",
16695
+ text: "Couleur"
16696
+ },
16697
+ {
16698
+ key: "pb.prop.borderWidth",
16699
+ text: "Largeur de bordure"
16700
+ },
16701
+ {
16702
+ key: "pb.prop.borderRadius",
16703
+ text: "Rayon de bordure"
16704
+ },
16705
+ {
16706
+ key: "pb.prop.position",
16707
+ text: "Position"
16708
+ },
16709
+ {
16710
+ key: "pb.prop.editHtml",
16711
+ text: "Modifier le HTML"
16712
+ },
16713
+ {
16714
+ key: "pb.prop.selectMedia",
16715
+ text: "Sélectionner un média"
16716
+ },
16717
+ {
16718
+ key: "pb.prop.altText",
16719
+ text: "Texte alternatif"
16720
+ },
16721
+ {
16722
+ key: "pb.prop.link",
16723
+ text: "Lien"
16724
+ },
16725
+ {
16726
+ key: "pb.prop.linkTarget",
16727
+ text: "Cible du lien"
16728
+ },
16729
+ {
16730
+ key: "pb.prop.thumbnail",
16731
+ text: "Miniature"
16732
+ },
16733
+ {
16734
+ key: "pb.prop.layout",
16735
+ text: "Disposition"
16736
+ },
16737
+ {
16738
+ key: "pb.prop.direction",
16739
+ text: "Direction"
16740
+ },
16741
+ {
16742
+ key: "pb.prop.wrap",
16743
+ text: "Retour à la ligne"
16744
+ },
16745
+ {
16746
+ key: "pb.prop.gap",
16747
+ text: "Espacement"
16748
+ },
16749
+ {
16750
+ key: "pb.prop.align",
16751
+ text: "Aligner"
16752
+ },
16753
+ {
16754
+ key: "pb.prop.alignItems",
16755
+ text: "Aligner les éléments"
16756
+ },
16757
+ {
16758
+ key: "pb.prop.justifyContent",
16759
+ text: "Justifier le contenu"
16760
+ },
16761
+ {
16762
+ key: "pb.prop.alignSelf",
16763
+ text: "Auto-alignement"
16764
+ },
16765
+ {
16766
+ key: "pb.prop.maxWidth",
16767
+ text: "Largeur maximale"
16768
+ },
16769
+ {
16770
+ key: "pb.prop.text",
16771
+ text: "Texte"
16772
+ },
16773
+ {
16774
+ key: "pb.prop.fontSize",
16775
+ text: "Taille de police"
16776
+ },
16777
+ {
16778
+ key: "pb.prop.fontWeight",
16779
+ text: "Épaisseur de police"
16780
+ },
16781
+ {
16782
+ key: "pb.prop.textAlign",
16783
+ text: "Alignement du texte"
16784
+ },
16785
+ {
16786
+ key: "pb.prop.fontColor",
16787
+ text: "Couleur de police"
16788
+ },
16789
+ {
16790
+ key: "pb.prop.image",
16791
+ text: "Image"
16792
+ },
16793
+ {
16794
+ key: "pb.prop.media",
16795
+ text: "Média"
16796
+ },
16797
+ {
16798
+ key: "pb.prop.html",
16799
+ text: "HTML"
16800
+ },
16801
+ {
16802
+ key: "pb.prop.url",
16803
+ text: "URL"
16804
+ },
16805
+ {
16806
+ key: "pb.prop.aspectRatio",
16807
+ text: "Rapport hauteur/largeur"
16808
+ },
16809
+ {
16810
+ key: "pb.prop.selectVideo",
16811
+ text: "Sélectionner une vidéo"
16812
+ },
16813
+ {
16814
+ key: "pb.button.ok",
16815
+ text: "OK"
16816
+ },
16817
+ {
16818
+ key: "pb.button.cancel",
16819
+ text: "Annuler"
16820
+ },
16821
+ {
16822
+ key: "pb.modal.addWidget.title",
16823
+ text: "Ajouter un widget"
16824
+ },
16825
+ {
16826
+ key: "pb.modal.youtube.title",
16827
+ text: "Vidéo YouTube"
16828
+ },
16829
+ {
16830
+ key: "pb.modal.youtube.url",
16831
+ text: "URL"
16832
+ },
16833
+ {
16834
+ key: "pb.modal.youtube.preview",
16835
+ text: "Aperçu"
16836
+ },
16837
+ {
16838
+ key: "pb.modal.screenSelect.title",
16839
+ text: "Sélectionner un écran"
16840
+ },
16841
+ {
16842
+ key: "pb.modal.screenSelect.message",
16843
+ text: "Quel écran souhaitez-vous conserver ?"
16844
+ },
16845
+ {
16846
+ key: "pb.modal.screenSelect.pc",
16847
+ text: "PC"
16848
+ },
16849
+ {
16850
+ key: "pb.modal.screenSelect.mobile",
16851
+ text: "Mobile"
16852
+ },
16853
+ {
16854
+ key: "pb.modal.htmlEditor.title",
16855
+ text: "Éditeur HTML"
16856
+ },
16857
+ {
16858
+ key: "pb.modal.htmlEditor.preview",
16859
+ text: "Aperçu"
16860
+ },
16861
+ {
16862
+ key: "pb.modal.htmlEditor.tags",
16863
+ text: "Balises"
16864
+ },
16865
+ {
16866
+ key: "pb.modal.htmlEditor.style",
16867
+ text: "Style"
16868
+ },
16869
+ {
16870
+ key: "pb.prop.hideParentWhenInvisible",
16871
+ text: "Masquer le bloc et la section si le widget est invisible"
16872
+ },
16873
+ {
16874
+ key: "pb.prop.copied",
16875
+ text: "Copié."
16876
+ }
16877
+ ];
16428
16878
  i18n.addTexts("en", enTexts);
16429
16879
  i18n.addTexts("ja", jaTexts);
16430
16880
  i18n.addTexts("ko", koTexts);
16431
16881
  i18n.addTexts("zh", zhTexts);
16882
+ i18n.addTexts("fr", frTexts);
16432
16883
  const _hoisted_1 = { class: "pb-editor bs-layout-vertical flex-grow-1" };
16433
16884
  const _hoisted_2 = { class: "pb-editor-body bs-layout-horizontal flex-grow-1" };
16434
16885
  const _sfc_main = /* @__PURE__ */ defineComponent({