@g1cloud/page-builder-editor 1.0.0-alpha.43 → 1.0.0-alpha.45

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,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, createVNode, unref } from "vue";
2
2
  import { BSTextInput } from "@g1cloud/bluesea";
3
- import { P as PbColorPicker } from "./index-DMnlRaKO.js";
3
+ import { P as PbColorPicker } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-color" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, defineAsyncComponent } from "vue";
2
2
  import { useModal } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-DMnlRaKO.js";
3
+ import { u as usePageBuilderEditor } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString } from "vue";
2
- import { u as usePageBuilderEditor } from "./index-DMnlRaKO.js";
2
+ import { u as usePageBuilderEditor } from "./index-BtttVLpv.js";
3
3
  import { useModal } from "@g1cloud/bluesea";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, toDisplayString, createBlock, unref } from "vue";
2
2
  import { BSMultiLangTextArea, BSTextArea } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-DMnlRaKO.js";
3
+ import { u as usePageBuilderEditor } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-multiline-text" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, toDisplayString, createBlock, unref } from "vue";
2
2
  import { BSMultiLangTextInput, BSTextInput } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-DMnlRaKO.js";
3
+ import { u as usePageBuilderEditor } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-text flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString } from "vue";
2
2
  import { useModal } from "@g1cloud/bluesea";
3
- import { s as selectYoutubeVideo } from "./index-DMnlRaKO.js";
3
+ import { s as selectYoutubeVideo } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = ["textContent"];
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString } from "vue";
2
2
  import { useModalHandle, BSModalFrame } from "@g1cloud/bluesea";
3
- import { w as widgetPartDefinitions } from "./index-DMnlRaKO.js";
3
+ import { w as widgetPartDefinitions } from "./index-BtttVLpv.js";
4
4
  const _hoisted_1 = { class: "bs-layout-vertical pb-part-add-modal" };
5
5
  const _hoisted_2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
6
6
  const _hoisted_3 = ["onClick", "textContent"];
@@ -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, reactive, defineAsyncComponent, withDirectives, createVNode, resolveComponent, vModelText, resolveDirective, withModifiers, renderSlot, guardReactiveProps, markRaw, toHandlers, Teleport } from "vue";
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, markRaw, toHandlers, Teleport } from "vue";
5
5
  import { notNull, BSTextInput, vClickOutside, useModal, BSSelect, BSTree, useContextMenu } from "@g1cloud/bluesea";
6
6
  import YouTube from "vue3-youtube";
7
7
  const create$5 = () => /* @__PURE__ */ new Map();
@@ -6879,14 +6879,21 @@ let Model$1 = class Model {
6879
6879
  this.rootPart = ref(new RootPart());
6880
6880
  }
6881
6881
  };
6882
- const _hoisted_1$b$1 = ["data-part-id"];
6883
- const _sfc_main$c$1 = /* @__PURE__ */ defineComponent({
6882
+ const _hoisted_1$a$1 = ["data-part-id"];
6883
+ const _sfc_main$b$1 = /* @__PURE__ */ defineComponent({
6884
6884
  __name: "PbWidget",
6885
6885
  props: {
6886
6886
  part: {}
6887
6887
  },
6888
- setup(__props) {
6888
+ emits: ["update:visible"],
6889
+ setup(__props, { emit: __emit }) {
6889
6890
  const props = __props;
6891
+ const emit = __emit;
6892
+ const visible = ref(true);
6893
+ const updateVisible = (value) => {
6894
+ visible.value = value;
6895
+ emit("update:visible", value);
6896
+ };
6890
6897
  const classNames = computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6891
6898
  const styleTag = computed(() => props.part.getStyleTag());
6892
6899
  const style = computed(() => ({
@@ -6896,83 +6903,76 @@ const _sfc_main$c$1 = /* @__PURE__ */ defineComponent({
6896
6903
  const thisComponent = computed(() => createPartComponent(props.part));
6897
6904
  return (_ctx, _cache) => {
6898
6905
  return openBlock(), createElementBlock(Fragment, null, [
6899
- styleTag.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6906
+ styleTag.value && visible.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6900
6907
  key: 0,
6901
6908
  innerHTML: styleTag.value
6902
6909
  }, null, 8, ["innerHTML"])) : createCommentVNode("", true),
6903
- createElementVNode("div", {
6910
+ withDirectives(createElementVNode("div", {
6904
6911
  class: normalizeClass([classNames.value, "pb-widget"]),
6905
6912
  "data-part-id": _ctx.part.partId,
6906
6913
  style: normalizeStyle(style.value)
6907
6914
  }, [
6908
6915
  thisComponent.value ? (openBlock(), createBlock$1(resolveDynamicComponent(thisComponent.value), {
6909
6916
  key: 0,
6910
- part: _ctx.part
6911
- }, null, 8, ["part"])) : createCommentVNode("", true)
6912
- ], 14, _hoisted_1$b$1)
6917
+ part: _ctx.part,
6918
+ "onUpdate:visible": updateVisible
6919
+ }, null, 40, ["part"])) : createCommentVNode("", true)
6920
+ ], 14, _hoisted_1$a$1), [
6921
+ [vShow, visible.value]
6922
+ ])
6913
6923
  ], 64);
6914
6924
  };
6915
6925
  }
6916
6926
  });
6917
- const _hoisted_1$a$1 = ["data-part-id"];
6918
- const _sfc_main$b$1 = /* @__PURE__ */ defineComponent({
6927
+ const _hoisted_1$9$1 = ["data-part-id"];
6928
+ const _sfc_main$a$1 = /* @__PURE__ */ defineComponent({
6919
6929
  __name: "PbBlock",
6920
6930
  props: {
6921
6931
  part: {},
6922
6932
  isMobilePage: { type: Boolean }
6923
6933
  },
6924
- setup(__props) {
6934
+ emits: ["update:visible"],
6935
+ setup(__props, { emit: __emit }) {
6925
6936
  const props = __props;
6937
+ const emit = __emit;
6938
+ const visible = ref(true);
6939
+ const childrenVisible = {};
6940
+ const updateVisible = (partId, value) => {
6941
+ childrenVisible[partId] = value;
6942
+ visible.value = props.part.children.some((child) => !(child.partId in childrenVisible) || childrenVisible[child.partId]);
6943
+ emit("update:visible", visible.value);
6944
+ };
6926
6945
  const classNames = computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6927
6946
  const styleTag = computed(() => props.part.getStyleTag());
6928
6947
  const style = computed(() => ({
6929
6948
  ...props.part.getStyles(props.isMobilePage),
6930
6949
  ...props.part.getInlineStyles()
6931
6950
  }));
6932
- computed(() => createPartComponents(props.part.children));
6933
6951
  return (_ctx, _cache) => {
6934
6952
  return openBlock(), createElementBlock(Fragment, null, [
6935
- styleTag.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6953
+ styleTag.value && visible.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6936
6954
  key: 0,
6937
6955
  innerHTML: styleTag.value
6938
6956
  }, null, 8, ["innerHTML"])) : createCommentVNode("", true),
6939
- createElementVNode("div", {
6957
+ withDirectives(createElementVNode("div", {
6940
6958
  class: normalizeClass([classNames.value, "pb-block"]),
6941
6959
  "data-part-id": _ctx.part.partId,
6942
6960
  style: normalizeStyle(style.value)
6943
6961
  }, [
6944
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.part.children, (child) => {
6945
- return openBlock(), createBlock$1(_sfc_main$c$1, {
6962
+ _ctx.part.children && _ctx.part.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.part.children, (child) => {
6963
+ return openBlock(), createBlock$1(_sfc_main$b$1, {
6946
6964
  key: child.partId,
6947
- part: child
6948
- }, null, 8, ["part"]);
6949
- }), 128))
6950
- ], 14, _hoisted_1$a$1)
6965
+ part: child,
6966
+ "onUpdate:visible": (value) => updateVisible(child.partId, value)
6967
+ }, null, 8, ["part", "onUpdate:visible"]);
6968
+ }), 128)) : createCommentVNode("", true)
6969
+ ], 14, _hoisted_1$9$1), [
6970
+ [vShow, visible.value]
6971
+ ])
6951
6972
  ], 64);
6952
6973
  };
6953
6974
  }
6954
6975
  });
6955
- const _hoisted_1$9$1 = { class: "pb-block" };
6956
- const _sfc_main$a$1 = /* @__PURE__ */ defineComponent({
6957
- __name: "PbLoginDepart",
6958
- props: {
6959
- part: {}
6960
- },
6961
- setup(__props) {
6962
- return (_ctx, _cache) => {
6963
- return openBlock(), createElementBlock("div", _hoisted_1$9$1, _cache[0] || (_cache[0] = [
6964
- createElementVNode("div", {
6965
- class: "pb-widget",
6966
- style: { "margin": "0 auto" }
6967
- }, [
6968
- createElementVNode("div", { class: "pb-login-widget" }, [
6969
- createElementVNode("h3", null, "Login Design Part")
6970
- ])
6971
- ], -1)
6972
- ]));
6973
- };
6974
- }
6975
- });
6976
6976
  const _hoisted_1$8$1 = ["data-part-id"];
6977
6977
  const _sfc_main$9$1 = /* @__PURE__ */ defineComponent({
6978
6978
  __name: "PbSection",
@@ -6982,6 +6982,12 @@ const _sfc_main$9$1 = /* @__PURE__ */ defineComponent({
6982
6982
  },
6983
6983
  setup(__props) {
6984
6984
  const props = __props;
6985
+ const visible = ref(true);
6986
+ const childrenVisible = {};
6987
+ const updateVisible = (partId, value) => {
6988
+ childrenVisible[partId] = value;
6989
+ visible.value = props.part.children.some((child) => !(child.partId in childrenVisible) || childrenVisible[child.partId]);
6990
+ };
6985
6991
  const classNames = computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6986
6992
  const styleTag = computed(() => props.part.getStyleTag());
6987
6993
  const style = computed(() => ({
@@ -6989,28 +6995,27 @@ const _sfc_main$9$1 = /* @__PURE__ */ defineComponent({
6989
6995
  ...props.part.getInlineStyles()
6990
6996
  }));
6991
6997
  return (_ctx, _cache) => {
6992
- var _a;
6993
6998
  return openBlock(), createElementBlock(Fragment, null, [
6994
- styleTag.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6999
+ styleTag.value && visible.value ? (openBlock(), createBlock$1(resolveDynamicComponent("style"), {
6995
7000
  key: 0,
6996
7001
  innerHTML: styleTag.value
6997
7002
  }, null, 8, ["innerHTML"])) : createCommentVNode("", true),
6998
- createElementVNode("div", {
7003
+ withDirectives(createElementVNode("div", {
6999
7004
  class: normalizeClass([classNames.value, "pb-section"]),
7000
7005
  "data-part-id": _ctx.part.partId,
7001
7006
  style: normalizeStyle(style.value)
7002
7007
  }, [
7003
- ((_a = _ctx.part.properties) == null ? void 0 : _a.name) === "Login Design Part" ? (openBlock(), createBlock$1(_sfc_main$a$1, {
7004
- key: 0,
7005
- part: _ctx.part
7006
- }, null, 8, ["part"])) : _ctx.part.children && _ctx.part.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.part.children, (block) => {
7007
- return openBlock(), createBlock$1(_sfc_main$b$1, {
7008
- key: block.partId,
7008
+ _ctx.part.children && _ctx.part.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.part.children, (child) => {
7009
+ return openBlock(), createBlock$1(_sfc_main$a$1, {
7010
+ key: child.partId,
7009
7011
  "is-mobile-page": _ctx.isMobilePage,
7010
- part: block
7011
- }, null, 8, ["is-mobile-page", "part"]);
7012
+ part: child,
7013
+ "onUpdate:visible": (value) => updateVisible(child.partId, value)
7014
+ }, null, 8, ["is-mobile-page", "part", "onUpdate:visible"]);
7012
7015
  }), 128)) : createCommentVNode("", true)
7013
- ], 14, _hoisted_1$8$1)
7016
+ ], 14, _hoisted_1$8$1), [
7017
+ [vShow, visible.value]
7018
+ ])
7014
7019
  ], 64);
7015
7020
  };
7016
7021
  }
@@ -7280,7 +7285,7 @@ const defaultPartDefinitions = {
7280
7285
  partType: "Block",
7281
7286
  partName: "Block",
7282
7287
  className: "pb-block",
7283
- creator: () => _sfc_main$b$1
7288
+ creator: () => _sfc_main$a$1
7284
7289
  },
7285
7290
  "TextWidget": {
7286
7291
  partType: "Widget",
@@ -8171,15 +8176,15 @@ class PartManager {
8171
8176
  const defaultPartPropertyEditors = () => {
8172
8177
  return {
8173
8178
  "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-Dgp_AVOD.js")),
8174
- "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-DmfUyQGj.js")),
8179
+ "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-CLz-HW0c.js")),
8175
8180
  "number": () => defineAsyncComponent(() => import("./PbPropertyEditorNumber-TTgo0zbQ.js")),
8176
8181
  "boolean": () => defineAsyncComponent(() => import("./PbPropertyEditorBoolean-C7-iSAtn.js")),
8177
- "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-DfvOukAA.js")),
8182
+ "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-DHqDdVCb.js")),
8178
8183
  "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-CWedbXJI.js")),
8179
- "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-ECWITss2.js")),
8180
- "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-D9sBmfaV.js")),
8181
- "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-Bpa0EKp9.js")),
8182
- "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-D0EpPwPV.js"))
8184
+ "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-DHIK8xLM.js")),
8185
+ "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-DaQ6AzHk.js")),
8186
+ "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-Jh4spLgs.js")),
8187
+ "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-Dqi0T67b.js"))
8183
8188
  };
8184
8189
  };
8185
8190
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -12533,7 +12538,7 @@ __publicField(_OpenAddWidgetModalCommand, "COMMAND_ID", "OpenAddWidgetModal");
12533
12538
  let OpenAddWidgetModalCommand = _OpenAddWidgetModalCommand;
12534
12539
  const openWidgetAddModal = (modal, args, callback) => {
12535
12540
  modal.openModal({
12536
- component: defineAsyncComponent(() => import("./PbWidgetAddModal-BDzxd8h_.js")),
12541
+ component: defineAsyncComponent(() => import("./PbWidgetAddModal-eVGTb1x1.js")),
12537
12542
  style: {
12538
12543
  width: "80%",
12539
12544
  height: "80%",
@@ -12566,40 +12571,6 @@ const openWidgetAddModal = (modal, args, callback) => {
12566
12571
  }
12567
12572
  });
12568
12573
  };
12569
- const findInsertTargetAndIndex = (pageBuilder, partType) => {
12570
- var _a, _b, _c;
12571
- const selected = pageBuilder.context.getSelectedParts()[0];
12572
- const page = pageBuilder.context.getSelectedPage();
12573
- if (!page) return {};
12574
- if (partType === SECTION_TYPE) {
12575
- const section = pageBuilder.partManager.findNearestSection(selected);
12576
- return {
12577
- target: page,
12578
- index: section ? page.children.indexOf(section) + 1 : (_a = page.children) == null ? void 0 : _a.length
12579
- };
12580
- } else if (partType === BLOCK_TYPE) {
12581
- let section = pageBuilder.partManager.findNearestSection(selected);
12582
- let block = pageBuilder.partManager.findNearestBlock(selected);
12583
- if (!section) {
12584
- section = page.children[page.children.length - 1];
12585
- }
12586
- return {
12587
- target: section,
12588
- index: block ? section.children.indexOf(block) + 1 : (_b = section.children) == null ? void 0 : _b.length
12589
- };
12590
- } else {
12591
- let block = pageBuilder.partManager.findNearestBlock(selected);
12592
- let widget = selected.parent.isWidget() ? selected.parent : selected;
12593
- if (!block) {
12594
- const section = page.children[page.children.length - 1];
12595
- block = section.children[section.children.length - 1];
12596
- }
12597
- return {
12598
- target: block,
12599
- index: widget ? block.children.indexOf(widget) + 1 : (_c = block.children) == null ? void 0 : _c.length
12600
- };
12601
- }
12602
- };
12603
12574
  const createPartWithDefinition = (def, properties) => {
12604
12575
  const part = createPart(def.partType, def.partName, def.initialProperties);
12605
12576
  if (part && properties) {
@@ -13128,7 +13099,7 @@ const _PastePartCommand = class _PastePartCommand {
13128
13099
  __publicField(this, "commandId", _PastePartCommand.COMMAND_ID);
13129
13100
  }
13130
13101
  async execute(pageBuilder) {
13131
- var _a;
13102
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
13132
13103
  const json = await navigator.clipboard.readText();
13133
13104
  const object = JSON.parse(json);
13134
13105
  if (object.partType === ROOT_TYPE) {
@@ -13196,7 +13167,7 @@ const _PastePartCommand = class _PastePartCommand {
13196
13167
  else if (part.partType === WIDGET_TYPE && !pasteType) pasteType = WIDGET_TYPE;
13197
13168
  });
13198
13169
  if (!pasteType) return;
13199
- const partsToInsert = parts.map((part) => {
13170
+ const partsToPaste = parts.map((part) => {
13200
13171
  if (pasteType === SECTION_TYPE) {
13201
13172
  if (part.partType === SECTION_TYPE) {
13202
13173
  return part;
@@ -13227,11 +13198,76 @@ const _PastePartCommand = class _PastePartCommand {
13227
13198
  return part;
13228
13199
  }
13229
13200
  }).filter(notNull);
13230
- const targetType = pasteType === SECTION_TYPE ? SECTION_TYPE : pasteType === BLOCK_TYPE ? BLOCK_TYPE : WIDGET_TYPE;
13231
- const { target, index } = findInsertTargetAndIndex(pageBuilder, targetType);
13232
- if (target && index !== void 0 && partsToInsert) {
13233
- insertParts(pageBuilder, target.partId, index, partsToInsert, false);
13201
+ const selectedPage = pageBuilder.context.getSelectedPage();
13202
+ const selected = pageBuilder.context.getSelectedParts()[0] || selectedPage;
13203
+ if (!selectedPage || !selected) return;
13204
+ let selectedWidget;
13205
+ if (selected && selected.isWidget()) selectedWidget = selected;
13206
+ if (selectedWidget && selectedWidget.isNestedWidget()) selectedWidget = selectedWidget.parent;
13207
+ let selectedBlock;
13208
+ if (selectedWidget) selectedBlock = selectedWidget.parent;
13209
+ else if (selected && selected.isBlock()) selectedBlock = selected;
13210
+ let selectedSection;
13211
+ if (selectedBlock) selectedSection = selectedBlock.parent;
13212
+ else if (selected && selected.isSection()) selectedSection = selected;
13213
+ let targetPartId;
13214
+ let targetIndex = -1;
13215
+ let partsToInsert;
13216
+ if (pasteType === SECTION_TYPE) {
13217
+ targetPartId = selectedPage.partId;
13218
+ targetIndex = selectedSection ? selectedPage.children.indexOf(selectedSection) + 1 : ((_b = selectedPage.children) == null ? void 0 : _b.length) || 0;
13219
+ partsToInsert = partsToPaste;
13220
+ } else if (pasteType === BLOCK_TYPE) {
13221
+ if (selectedSection) {
13222
+ targetPartId = selectedSection.partId;
13223
+ targetIndex = selectedBlock ? selectedSection.children.indexOf(selectedBlock) + 1 : ((_c = selectedSection.children) == null ? void 0 : _c.length) || 0;
13224
+ partsToInsert = partsToPaste;
13225
+ } else if ((_d = selectedPage.children) == null ? void 0 : _d.length) {
13226
+ selectedSection = selectedPage.children[selectedPage.children.length - 1];
13227
+ targetPartId = selectedSection.partId;
13228
+ targetIndex = ((_e = selectedSection.children) == null ? void 0 : _e.length) || 0;
13229
+ partsToInsert = partsToPaste;
13230
+ } else {
13231
+ const newSection = createSection(pageBuilder);
13232
+ if (!newSection) return;
13233
+ newSection.children = partsToPaste;
13234
+ targetPartId = selectedPage.partId;
13235
+ targetIndex = 0;
13236
+ partsToInsert = [newSection];
13237
+ }
13238
+ } else if (pasteType === WIDGET_TYPE) {
13239
+ if (selectedBlock) {
13240
+ targetPartId = selectedBlock.partId;
13241
+ targetIndex = selectedWidget ? selectedBlock.children.indexOf(selectedWidget) + 1 : ((_f = selectedBlock.children) == null ? void 0 : _f.length) || 0;
13242
+ partsToInsert = partsToPaste;
13243
+ } else if (selectedSection || ((_g = selectedPage.children) == null ? void 0 : _g.length)) {
13244
+ if (!selectedSection) selectedSection = selectedPage.children[selectedPage.children.length - 1];
13245
+ if ((_h = selectedSection.children) == null ? void 0 : _h.length) {
13246
+ selectedBlock = selectedSection.children[selectedSection.children.length - 1];
13247
+ targetPartId = selectedBlock.partId;
13248
+ targetIndex = ((_i = selectedBlock.children) == null ? void 0 : _i.length) || 0;
13249
+ partsToInsert = partsToPaste;
13250
+ } else {
13251
+ const newBlock = createBlock(pageBuilder);
13252
+ if (!newBlock) return;
13253
+ newBlock.children = partsToPaste;
13254
+ targetPartId = selectedSection.partId;
13255
+ targetIndex = 0;
13256
+ partsToInsert = [newBlock];
13257
+ }
13258
+ } else {
13259
+ const newBlock = createBlock(pageBuilder);
13260
+ const newSection = createSection(pageBuilder);
13261
+ if (!newBlock || !newSection) return;
13262
+ newSection.children = [newBlock];
13263
+ newBlock.children = partsToPaste;
13264
+ targetPartId = selectedPage.partId;
13265
+ targetIndex = 0;
13266
+ partsToInsert = [newSection];
13267
+ }
13234
13268
  }
13269
+ if (!targetPartId || targetIndex < 0 || !partsToInsert) return;
13270
+ insertParts(pageBuilder, targetPartId, targetIndex, partsToInsert, false);
13235
13271
  }
13236
13272
  }
13237
13273
  };
@@ -13636,8 +13672,8 @@ class PageBuilderContextImpl {
13636
13672
  const pages = this.model.rootPart.children;
13637
13673
  let part = this.selection[0];
13638
13674
  if (!part) return pages && pages[0];
13639
- while (part.parent) {
13640
- if (part.parent.isPage()) return part.parent;
13675
+ while (part) {
13676
+ if (part.isPage()) return part;
13641
13677
  part = part.parent;
13642
13678
  }
13643
13679
  }
@@ -1,4 +1,4 @@
1
- import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, t, v, x, y, z, A, C } from "./index-DMnlRaKO.js";
1
+ import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, t, v, x, y, z, A, C } from "./index-BtttVLpv.js";
2
2
  export {
3
3
  B as BLOCK_TYPE,
4
4
  b as Block,
@@ -6880,14 +6880,21 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6880
6880
  this.rootPart = vue.ref(new RootPart());
6881
6881
  }
6882
6882
  };
6883
- const _hoisted_1$b$1 = ["data-part-id"];
6884
- const _sfc_main$c$1 = /* @__PURE__ */ vue.defineComponent({
6883
+ const _hoisted_1$a$1 = ["data-part-id"];
6884
+ const _sfc_main$b$1 = /* @__PURE__ */ vue.defineComponent({
6885
6885
  __name: "PbWidget",
6886
6886
  props: {
6887
6887
  part: {}
6888
6888
  },
6889
- setup(__props) {
6889
+ emits: ["update:visible"],
6890
+ setup(__props, { emit: __emit }) {
6890
6891
  const props = __props;
6892
+ const emit = __emit;
6893
+ const visible = vue.ref(true);
6894
+ const updateVisible = (value) => {
6895
+ visible.value = value;
6896
+ emit("update:visible", value);
6897
+ };
6891
6898
  const classNames = vue.computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6892
6899
  const styleTag = vue.computed(() => props.part.getStyleTag());
6893
6900
  const style = vue.computed(() => ({
@@ -6897,83 +6904,76 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6897
6904
  const thisComponent = vue.computed(() => createPartComponent(props.part));
6898
6905
  return (_ctx, _cache) => {
6899
6906
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6900
- styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6907
+ styleTag.value && visible.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6901
6908
  key: 0,
6902
6909
  innerHTML: styleTag.value
6903
6910
  }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
6904
- vue.createElementVNode("div", {
6911
+ vue.withDirectives(vue.createElementVNode("div", {
6905
6912
  class: vue.normalizeClass([classNames.value, "pb-widget"]),
6906
6913
  "data-part-id": _ctx.part.partId,
6907
6914
  style: vue.normalizeStyle(style.value)
6908
6915
  }, [
6909
6916
  thisComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(thisComponent.value), {
6910
6917
  key: 0,
6911
- part: _ctx.part
6912
- }, null, 8, ["part"])) : vue.createCommentVNode("", true)
6913
- ], 14, _hoisted_1$b$1)
6918
+ part: _ctx.part,
6919
+ "onUpdate:visible": updateVisible
6920
+ }, null, 40, ["part"])) : vue.createCommentVNode("", true)
6921
+ ], 14, _hoisted_1$a$1), [
6922
+ [vue.vShow, visible.value]
6923
+ ])
6914
6924
  ], 64);
6915
6925
  };
6916
6926
  }
6917
6927
  });
6918
- const _hoisted_1$a$1 = ["data-part-id"];
6919
- const _sfc_main$b$1 = /* @__PURE__ */ vue.defineComponent({
6928
+ const _hoisted_1$9$1 = ["data-part-id"];
6929
+ const _sfc_main$a$1 = /* @__PURE__ */ vue.defineComponent({
6920
6930
  __name: "PbBlock",
6921
6931
  props: {
6922
6932
  part: {},
6923
6933
  isMobilePage: { type: Boolean }
6924
6934
  },
6925
- setup(__props) {
6935
+ emits: ["update:visible"],
6936
+ setup(__props, { emit: __emit }) {
6926
6937
  const props = __props;
6938
+ const emit = __emit;
6939
+ const visible = vue.ref(true);
6940
+ const childrenVisible = {};
6941
+ const updateVisible = (partId, value) => {
6942
+ childrenVisible[partId] = value;
6943
+ visible.value = props.part.children.some((child) => !(child.partId in childrenVisible) || childrenVisible[child.partId]);
6944
+ emit("update:visible", visible.value);
6945
+ };
6927
6946
  const classNames = vue.computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6928
6947
  const styleTag = vue.computed(() => props.part.getStyleTag());
6929
6948
  const style = vue.computed(() => ({
6930
6949
  ...props.part.getStyles(props.isMobilePage),
6931
6950
  ...props.part.getInlineStyles()
6932
6951
  }));
6933
- vue.computed(() => createPartComponents(props.part.children));
6934
6952
  return (_ctx, _cache) => {
6935
6953
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6936
- styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6954
+ styleTag.value && visible.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6937
6955
  key: 0,
6938
6956
  innerHTML: styleTag.value
6939
6957
  }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
6940
- vue.createElementVNode("div", {
6958
+ vue.withDirectives(vue.createElementVNode("div", {
6941
6959
  class: vue.normalizeClass([classNames.value, "pb-block"]),
6942
6960
  "data-part-id": _ctx.part.partId,
6943
6961
  style: vue.normalizeStyle(style.value)
6944
6962
  }, [
6945
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.part.children, (child) => {
6946
- return vue.openBlock(), vue.createBlock(_sfc_main$c$1, {
6963
+ _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (child) => {
6964
+ return vue.openBlock(), vue.createBlock(_sfc_main$b$1, {
6947
6965
  key: child.partId,
6948
- part: child
6949
- }, null, 8, ["part"]);
6950
- }), 128))
6951
- ], 14, _hoisted_1$a$1)
6966
+ part: child,
6967
+ "onUpdate:visible": (value) => updateVisible(child.partId, value)
6968
+ }, null, 8, ["part", "onUpdate:visible"]);
6969
+ }), 128)) : vue.createCommentVNode("", true)
6970
+ ], 14, _hoisted_1$9$1), [
6971
+ [vue.vShow, visible.value]
6972
+ ])
6952
6973
  ], 64);
6953
6974
  };
6954
6975
  }
6955
6976
  });
6956
- const _hoisted_1$9$1 = { class: "pb-block" };
6957
- const _sfc_main$a$1 = /* @__PURE__ */ vue.defineComponent({
6958
- __name: "PbLoginDepart",
6959
- props: {
6960
- part: {}
6961
- },
6962
- setup(__props) {
6963
- return (_ctx, _cache) => {
6964
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9$1, _cache[0] || (_cache[0] = [
6965
- vue.createElementVNode("div", {
6966
- class: "pb-widget",
6967
- style: { "margin": "0 auto" }
6968
- }, [
6969
- vue.createElementVNode("div", { class: "pb-login-widget" }, [
6970
- vue.createElementVNode("h3", null, "Login Design Part")
6971
- ])
6972
- ], -1)
6973
- ]));
6974
- };
6975
- }
6976
- });
6977
6977
  const _hoisted_1$8$1 = ["data-part-id"];
6978
6978
  const _sfc_main$9$1 = /* @__PURE__ */ vue.defineComponent({
6979
6979
  __name: "PbSection",
@@ -6983,6 +6983,12 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6983
6983
  },
6984
6984
  setup(__props) {
6985
6985
  const props = __props;
6986
+ const visible = vue.ref(true);
6987
+ const childrenVisible = {};
6988
+ const updateVisible = (partId, value) => {
6989
+ childrenVisible[partId] = value;
6990
+ visible.value = props.part.children.some((child) => !(child.partId in childrenVisible) || childrenVisible[child.partId]);
6991
+ };
6986
6992
  const classNames = vue.computed(() => [getPartClassName(props.part), props.part.getClassNames()]);
6987
6993
  const styleTag = vue.computed(() => props.part.getStyleTag());
6988
6994
  const style = vue.computed(() => ({
@@ -6990,28 +6996,27 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6990
6996
  ...props.part.getInlineStyles()
6991
6997
  }));
6992
6998
  return (_ctx, _cache) => {
6993
- var _a;
6994
6999
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6995
- styleTag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
7000
+ styleTag.value && visible.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("style"), {
6996
7001
  key: 0,
6997
7002
  innerHTML: styleTag.value
6998
7003
  }, null, 8, ["innerHTML"])) : vue.createCommentVNode("", true),
6999
- vue.createElementVNode("div", {
7004
+ vue.withDirectives(vue.createElementVNode("div", {
7000
7005
  class: vue.normalizeClass([classNames.value, "pb-section"]),
7001
7006
  "data-part-id": _ctx.part.partId,
7002
7007
  style: vue.normalizeStyle(style.value)
7003
7008
  }, [
7004
- ((_a = _ctx.part.properties) == null ? void 0 : _a.name) === "Login Design Part" ? (vue.openBlock(), vue.createBlock(_sfc_main$a$1, {
7005
- key: 0,
7006
- part: _ctx.part
7007
- }, null, 8, ["part"])) : _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(_ctx.part.children, (block) => {
7008
- return vue.openBlock(), vue.createBlock(_sfc_main$b$1, {
7009
- key: block.partId,
7009
+ _ctx.part.children && _ctx.part.children.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.part.children, (child) => {
7010
+ return vue.openBlock(), vue.createBlock(_sfc_main$a$1, {
7011
+ key: child.partId,
7010
7012
  "is-mobile-page": _ctx.isMobilePage,
7011
- part: block
7012
- }, null, 8, ["is-mobile-page", "part"]);
7013
+ part: child,
7014
+ "onUpdate:visible": (value) => updateVisible(child.partId, value)
7015
+ }, null, 8, ["is-mobile-page", "part", "onUpdate:visible"]);
7013
7016
  }), 128)) : vue.createCommentVNode("", true)
7014
- ], 14, _hoisted_1$8$1)
7017
+ ], 14, _hoisted_1$8$1), [
7018
+ [vue.vShow, visible.value]
7019
+ ])
7015
7020
  ], 64);
7016
7021
  };
7017
7022
  }
@@ -7281,7 +7286,7 @@ ${_html.style}
7281
7286
  partType: "Block",
7282
7287
  partName: "Block",
7283
7288
  className: "pb-block",
7284
- creator: () => _sfc_main$b$1
7289
+ creator: () => _sfc_main$a$1
7285
7290
  },
7286
7291
  "TextWidget": {
7287
7292
  partType: "Widget",
@@ -12567,40 +12572,6 @@ ${_html.style}
12567
12572
  }
12568
12573
  });
12569
12574
  };
12570
- const findInsertTargetAndIndex = (pageBuilder, partType) => {
12571
- var _a, _b, _c;
12572
- const selected = pageBuilder.context.getSelectedParts()[0];
12573
- const page = pageBuilder.context.getSelectedPage();
12574
- if (!page) return {};
12575
- if (partType === SECTION_TYPE) {
12576
- const section = pageBuilder.partManager.findNearestSection(selected);
12577
- return {
12578
- target: page,
12579
- index: section ? page.children.indexOf(section) + 1 : (_a = page.children) == null ? void 0 : _a.length
12580
- };
12581
- } else if (partType === BLOCK_TYPE) {
12582
- let section = pageBuilder.partManager.findNearestSection(selected);
12583
- let block = pageBuilder.partManager.findNearestBlock(selected);
12584
- if (!section) {
12585
- section = page.children[page.children.length - 1];
12586
- }
12587
- return {
12588
- target: section,
12589
- index: block ? section.children.indexOf(block) + 1 : (_b = section.children) == null ? void 0 : _b.length
12590
- };
12591
- } else {
12592
- let block = pageBuilder.partManager.findNearestBlock(selected);
12593
- let widget = selected.parent.isWidget() ? selected.parent : selected;
12594
- if (!block) {
12595
- const section = page.children[page.children.length - 1];
12596
- block = section.children[section.children.length - 1];
12597
- }
12598
- return {
12599
- target: block,
12600
- index: widget ? block.children.indexOf(widget) + 1 : (_c = block.children) == null ? void 0 : _c.length
12601
- };
12602
- }
12603
- };
12604
12575
  const createPartWithDefinition = (def, properties) => {
12605
12576
  const part = createPart(def.partType, def.partName, def.initialProperties);
12606
12577
  if (part && properties) {
@@ -13129,7 +13100,7 @@ ${_html.style}
13129
13100
  __publicField(this, "commandId", _PastePartCommand.COMMAND_ID);
13130
13101
  }
13131
13102
  async execute(pageBuilder) {
13132
- var _a;
13103
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
13133
13104
  const json = await navigator.clipboard.readText();
13134
13105
  const object = JSON.parse(json);
13135
13106
  if (object.partType === ROOT_TYPE) {
@@ -13197,7 +13168,7 @@ ${_html.style}
13197
13168
  else if (part.partType === WIDGET_TYPE && !pasteType) pasteType = WIDGET_TYPE;
13198
13169
  });
13199
13170
  if (!pasteType) return;
13200
- const partsToInsert = parts.map((part) => {
13171
+ const partsToPaste = parts.map((part) => {
13201
13172
  if (pasteType === SECTION_TYPE) {
13202
13173
  if (part.partType === SECTION_TYPE) {
13203
13174
  return part;
@@ -13228,11 +13199,76 @@ ${_html.style}
13228
13199
  return part;
13229
13200
  }
13230
13201
  }).filter(bluesea.notNull);
13231
- const targetType = pasteType === SECTION_TYPE ? SECTION_TYPE : pasteType === BLOCK_TYPE ? BLOCK_TYPE : WIDGET_TYPE;
13232
- const { target, index } = findInsertTargetAndIndex(pageBuilder, targetType);
13233
- if (target && index !== void 0 && partsToInsert) {
13234
- insertParts(pageBuilder, target.partId, index, partsToInsert, false);
13202
+ const selectedPage = pageBuilder.context.getSelectedPage();
13203
+ const selected = pageBuilder.context.getSelectedParts()[0] || selectedPage;
13204
+ if (!selectedPage || !selected) return;
13205
+ let selectedWidget;
13206
+ if (selected && selected.isWidget()) selectedWidget = selected;
13207
+ if (selectedWidget && selectedWidget.isNestedWidget()) selectedWidget = selectedWidget.parent;
13208
+ let selectedBlock;
13209
+ if (selectedWidget) selectedBlock = selectedWidget.parent;
13210
+ else if (selected && selected.isBlock()) selectedBlock = selected;
13211
+ let selectedSection;
13212
+ if (selectedBlock) selectedSection = selectedBlock.parent;
13213
+ else if (selected && selected.isSection()) selectedSection = selected;
13214
+ let targetPartId;
13215
+ let targetIndex = -1;
13216
+ let partsToInsert;
13217
+ if (pasteType === SECTION_TYPE) {
13218
+ targetPartId = selectedPage.partId;
13219
+ targetIndex = selectedSection ? selectedPage.children.indexOf(selectedSection) + 1 : ((_b = selectedPage.children) == null ? void 0 : _b.length) || 0;
13220
+ partsToInsert = partsToPaste;
13221
+ } else if (pasteType === BLOCK_TYPE) {
13222
+ if (selectedSection) {
13223
+ targetPartId = selectedSection.partId;
13224
+ targetIndex = selectedBlock ? selectedSection.children.indexOf(selectedBlock) + 1 : ((_c = selectedSection.children) == null ? void 0 : _c.length) || 0;
13225
+ partsToInsert = partsToPaste;
13226
+ } else if ((_d = selectedPage.children) == null ? void 0 : _d.length) {
13227
+ selectedSection = selectedPage.children[selectedPage.children.length - 1];
13228
+ targetPartId = selectedSection.partId;
13229
+ targetIndex = ((_e = selectedSection.children) == null ? void 0 : _e.length) || 0;
13230
+ partsToInsert = partsToPaste;
13231
+ } else {
13232
+ const newSection = createSection(pageBuilder);
13233
+ if (!newSection) return;
13234
+ newSection.children = partsToPaste;
13235
+ targetPartId = selectedPage.partId;
13236
+ targetIndex = 0;
13237
+ partsToInsert = [newSection];
13238
+ }
13239
+ } else if (pasteType === WIDGET_TYPE) {
13240
+ if (selectedBlock) {
13241
+ targetPartId = selectedBlock.partId;
13242
+ targetIndex = selectedWidget ? selectedBlock.children.indexOf(selectedWidget) + 1 : ((_f = selectedBlock.children) == null ? void 0 : _f.length) || 0;
13243
+ partsToInsert = partsToPaste;
13244
+ } else if (selectedSection || ((_g = selectedPage.children) == null ? void 0 : _g.length)) {
13245
+ if (!selectedSection) selectedSection = selectedPage.children[selectedPage.children.length - 1];
13246
+ if ((_h = selectedSection.children) == null ? void 0 : _h.length) {
13247
+ selectedBlock = selectedSection.children[selectedSection.children.length - 1];
13248
+ targetPartId = selectedBlock.partId;
13249
+ targetIndex = ((_i = selectedBlock.children) == null ? void 0 : _i.length) || 0;
13250
+ partsToInsert = partsToPaste;
13251
+ } else {
13252
+ const newBlock = createBlock(pageBuilder);
13253
+ if (!newBlock) return;
13254
+ newBlock.children = partsToPaste;
13255
+ targetPartId = selectedSection.partId;
13256
+ targetIndex = 0;
13257
+ partsToInsert = [newBlock];
13258
+ }
13259
+ } else {
13260
+ const newBlock = createBlock(pageBuilder);
13261
+ const newSection = createSection(pageBuilder);
13262
+ if (!newBlock || !newSection) return;
13263
+ newSection.children = [newBlock];
13264
+ newBlock.children = partsToPaste;
13265
+ targetPartId = selectedPage.partId;
13266
+ targetIndex = 0;
13267
+ partsToInsert = [newSection];
13268
+ }
13235
13269
  }
13270
+ if (!targetPartId || targetIndex < 0 || !partsToInsert) return;
13271
+ insertParts(pageBuilder, targetPartId, targetIndex, partsToInsert, false);
13236
13272
  }
13237
13273
  }
13238
13274
  };
@@ -13637,8 +13673,8 @@ ${_html.style}
13637
13673
  const pages = this.model.rootPart.children;
13638
13674
  let part = this.selection[0];
13639
13675
  if (!part) return pages && pages[0];
13640
- while (part.parent) {
13641
- if (part.parent.isPage()) return part.parent;
13676
+ while (part) {
13677
+ if (part.isPage()) return part;
13642
13678
  part = part.parent;
13643
13679
  }
13644
13680
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g1cloud/page-builder-editor",
3
3
  "private": false,
4
- "version": "1.0.0-alpha.43",
4
+ "version": "1.0.0-alpha.45",
5
5
  "engins": {
6
6
  "node": ">= 20.0.0"
7
7
  },
@@ -16,7 +16,7 @@
16
16
  "author": "zag@g1project.net",
17
17
  "license": "LicenseRef-LICENSE",
18
18
  "peerDependencies": {
19
- "@g1cloud/bluesea": "5.0.0-alpha.80",
19
+ "@g1cloud/bluesea": "5.0.0-alpha.84",
20
20
  "vue3-youtube": "^0.1.9"
21
21
  },
22
22
  "dependencies": {
@@ -30,7 +30,7 @@
30
30
  "vue-router": "^4.4.3",
31
31
  "vue3-click-away": "^1.2.4",
32
32
  "yjs": "^13.6.14",
33
- "@g1cloud/page-builder-viewer": "1.0.0-alpha.43"
33
+ "@g1cloud/page-builder-viewer": "1.0.0-alpha.45"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^20.12.7",