@g1cloud/page-builder-editor 1.0.0-alpha.102 → 1.0.0-alpha.103
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.
- package/dist/{PbPropertyEditorColor-BLmbxHlj.js → PbPropertyEditorColor-0zFwhnJp.js} +1 -1
- package/dist/{PbPropertyEditorCssLength-D-rlVWI8.js → PbPropertyEditorCssLength-7sBhgyiM.js} +1 -1
- package/dist/{PbPropertyEditorHtml-D65dKk8P.js → PbPropertyEditorHtml-Cz33ZrZp.js} +1 -1
- package/dist/{PbPropertyEditorImage-Bh9_XDi6.js → PbPropertyEditorImage-DCOGVu0_.js} +1 -1
- package/dist/{PbPropertyEditorMultilineText-BQ5EOr92.js → PbPropertyEditorMultilineText-705l-6cb.js} +1 -1
- package/dist/{PbPropertyEditorText-BuNC6dLo.js → PbPropertyEditorText-C1ktcMVa.js} +1 -1
- package/dist/{PbPropertyEditorYoutube-DuPiKQNB.js → PbPropertyEditorYoutube-R2dUexOc.js} +1 -1
- package/dist/{PbWidgetAddModal-BOcLVwum.js → PbWidgetAddModal-CNblLmnp.js} +1 -1
- package/dist/PbYoutubeModal-BJuyyip-.js +148 -0
- package/dist/{index-BKkW50R0.js → index-BsMUbVZy.js} +124 -144
- package/dist/page-builder-editor.js +1 -1
- package/dist/page-builder-editor.umd.cjs +230 -217
- package/dist/style.css +4 -3
- package/package.json +2 -2
- package/dist/PbYoutubeModal-DDC8kUPw.js +0 -117
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(global2, factory) {
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("@g1cloud/bluesea")
|
|
3
|
-
})(this, function(exports2, vue, bluesea
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("@g1cloud/bluesea")) : typeof define === "function" && define.amd ? define(["exports", "vue", "@g1cloud/bluesea"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2["Page Builder Editor"] = {}, global2.Vue, global2.bluesea));
|
|
3
|
+
})(this, function(exports2, vue, bluesea) {
|
|
4
4
|
"use strict";var __defProp = Object.defineProperty;
|
|
5
5
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
6
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -7133,10 +7133,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7133
7133
|
}
|
|
7134
7134
|
});
|
|
7135
7135
|
const _hoisted_1$7$1 = ["href", "target"];
|
|
7136
|
-
const _hoisted_2$
|
|
7137
|
-
const _hoisted_3$
|
|
7138
|
-
const _hoisted_4$
|
|
7139
|
-
const _hoisted_5$
|
|
7136
|
+
const _hoisted_2$4$1 = ["alt", "src"];
|
|
7137
|
+
const _hoisted_3$1$1 = ["alt", "src"];
|
|
7138
|
+
const _hoisted_4$f = ["alt", "src"];
|
|
7139
|
+
const _hoisted_5$c = ["alt", "src"];
|
|
7140
7140
|
const _hoisted_6$a = ["poster"];
|
|
7141
7141
|
const _hoisted_7$9 = ["src"];
|
|
7142
7142
|
const _hoisted_8$8 = {
|
|
@@ -7207,7 +7207,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7207
7207
|
src: ((_a2 = _ctx.part.properties) == null ? void 0 : _a2.media).fileUrl,
|
|
7208
7208
|
style: vue.normalizeStyle(style.value),
|
|
7209
7209
|
class: "image"
|
|
7210
|
-
}, null, 12, _hoisted_2$
|
|
7210
|
+
}, null, 12, _hoisted_2$4$1)
|
|
7211
7211
|
];
|
|
7212
7212
|
}),
|
|
7213
7213
|
_: 1
|
|
@@ -7217,7 +7217,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7217
7217
|
src: ((_d = _ctx.part.properties) == null ? void 0 : _d.media).fileUrl,
|
|
7218
7218
|
style: vue.normalizeStyle(style.value),
|
|
7219
7219
|
class: "image"
|
|
7220
|
-
}, null, 12, _hoisted_3$
|
|
7220
|
+
}, null, 12, _hoisted_3$1$1))
|
|
7221
7221
|
], 8, _hoisted_1$7$1)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
7222
7222
|
tag.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tag.value), {
|
|
7223
7223
|
key: 0,
|
|
@@ -7231,7 +7231,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7231
7231
|
src: ((_a2 = _ctx.part.properties) == null ? void 0 : _a2.media).fileUrl,
|
|
7232
7232
|
style: vue.normalizeStyle(style.value),
|
|
7233
7233
|
class: "image"
|
|
7234
|
-
}, null, 12, _hoisted_4$
|
|
7234
|
+
}, null, 12, _hoisted_4$f)
|
|
7235
7235
|
];
|
|
7236
7236
|
}),
|
|
7237
7237
|
_: 1
|
|
@@ -7241,7 +7241,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7241
7241
|
src: ((_e = _ctx.part.properties) == null ? void 0 : _e.media).fileUrl,
|
|
7242
7242
|
style: vue.normalizeStyle(style.value),
|
|
7243
7243
|
class: "image"
|
|
7244
|
-
}, null, 12, _hoisted_5$
|
|
7244
|
+
}, null, 12, _hoisted_5$c))
|
|
7245
7245
|
], 64))
|
|
7246
7246
|
], 64)) : media.value.mediaType === "Video" ? (vue.openBlock(), vue.createElementBlock("video", {
|
|
7247
7247
|
key: 1,
|
|
@@ -7311,7 +7311,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7311
7311
|
}
|
|
7312
7312
|
});
|
|
7313
7313
|
const _hoisted_1$5$1 = ["innerHTML"];
|
|
7314
|
-
const _hoisted_2$
|
|
7314
|
+
const _hoisted_2$3$1 = {
|
|
7315
7315
|
key: 1,
|
|
7316
7316
|
class: "placeholder",
|
|
7317
7317
|
textContent: "Empty HTML"
|
|
@@ -7400,12 +7400,12 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7400
7400
|
ref: partRef,
|
|
7401
7401
|
class: "html",
|
|
7402
7402
|
innerHTML: (_b = html.value) == null ? void 0 : _b.tags
|
|
7403
|
-
}, null, 8, _hoisted_1$5$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
7403
|
+
}, null, 8, _hoisted_1$5$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3$1)) : vue.createCommentVNode("", true);
|
|
7404
7404
|
};
|
|
7405
7405
|
}
|
|
7406
7406
|
});
|
|
7407
7407
|
const _hoisted_1$4$1 = ["src"];
|
|
7408
|
-
const _hoisted_2$
|
|
7408
|
+
const _hoisted_2$2$1 = {
|
|
7409
7409
|
key: 1,
|
|
7410
7410
|
class: "placeholder",
|
|
7411
7411
|
textContent: "Empty URL"
|
|
@@ -7553,11 +7553,17 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7553
7553
|
ref: iframeRef,
|
|
7554
7554
|
src: url.value,
|
|
7555
7555
|
style: vue.normalizeStyle(style.value)
|
|
7556
|
-
}, null, 12, _hoisted_1$4$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
7556
|
+
}, null, 12, _hoisted_1$4$1)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2$1)) : vue.createCommentVNode("", true);
|
|
7557
7557
|
};
|
|
7558
7558
|
}
|
|
7559
7559
|
});
|
|
7560
7560
|
const _hoisted_1$3$1 = {
|
|
7561
|
+
key: 0,
|
|
7562
|
+
class: "youtube-container",
|
|
7563
|
+
style: { width: "100%" }
|
|
7564
|
+
};
|
|
7565
|
+
const _hoisted_2$1$1 = ["src"];
|
|
7566
|
+
const _hoisted_3$l = {
|
|
7561
7567
|
key: 1,
|
|
7562
7568
|
class: "placeholder"
|
|
7563
7569
|
};
|
|
@@ -7569,87 +7575,72 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7569
7575
|
},
|
|
7570
7576
|
setup(__props) {
|
|
7571
7577
|
const props = __props;
|
|
7572
|
-
const
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7578
|
+
const extractVideoId = (raw) => {
|
|
7579
|
+
const value = raw.trim();
|
|
7580
|
+
if (!value) return void 0;
|
|
7581
|
+
if (/^[\w-]{11}$/.test(value)) return value;
|
|
7582
|
+
try {
|
|
7583
|
+
const u = new URL(value);
|
|
7584
|
+
const host = u.hostname.replace(/^www\./, "");
|
|
7585
|
+
if (host === "youtu.be") {
|
|
7586
|
+
const id = u.pathname.slice(1).split("/")[0];
|
|
7587
|
+
return id || void 0;
|
|
7588
|
+
}
|
|
7589
|
+
if (host === "youtube.com" || host === "youtube-nocookie.com" || host === "m.youtube.com") {
|
|
7590
|
+
const v = u.searchParams.get("v");
|
|
7591
|
+
if (v) return v;
|
|
7592
|
+
const segs = u.pathname.split("/").filter(Boolean);
|
|
7593
|
+
const idx = segs.findIndex((s) => s === "embed" || s === "shorts" || s === "live" || s === "v");
|
|
7594
|
+
if (idx >= 0 && segs[idx + 1]) return segs[idx + 1];
|
|
7595
|
+
}
|
|
7596
|
+
} catch {
|
|
7590
7597
|
}
|
|
7598
|
+
return void 0;
|
|
7591
7599
|
};
|
|
7592
|
-
|
|
7593
|
-
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
if (
|
|
7598
|
-
|
|
7599
|
-
resizeObserver = new ResizeObserver(updateWidth);
|
|
7600
|
-
resizeObserver.observe(container.value);
|
|
7601
|
-
}
|
|
7602
|
-
const interval = setInterval(() => {
|
|
7603
|
-
try {
|
|
7604
|
-
if (window && window.YT && window.YT.Player) {
|
|
7605
|
-
isYTReady.value = true;
|
|
7606
|
-
clearInterval(interval);
|
|
7607
|
-
}
|
|
7608
|
-
} catch (e) {
|
|
7609
|
-
}
|
|
7610
|
-
}, 500);
|
|
7600
|
+
const embedSrc = vue.computed(() => {
|
|
7601
|
+
var _a;
|
|
7602
|
+
const raw = (_a = props.part.properties) == null ? void 0 : _a.url;
|
|
7603
|
+
if (!raw) return void 0;
|
|
7604
|
+
const id = extractVideoId(raw);
|
|
7605
|
+
if (!id) return void 0;
|
|
7606
|
+
return `https://www.youtube-nocookie.com/embed/${id}`;
|
|
7611
7607
|
});
|
|
7612
|
-
vue.
|
|
7613
|
-
|
|
7608
|
+
const aspectRatioCss = vue.computed(() => {
|
|
7609
|
+
var _a;
|
|
7610
|
+
const raw = (_a = props.part.properties) == null ? void 0 : _a.aspectRatio;
|
|
7611
|
+
if (raw) {
|
|
7612
|
+
const parts = raw.split("/");
|
|
7613
|
+
if (parts.length === 2) {
|
|
7614
|
+
const w = Number(parts[0]);
|
|
7615
|
+
const h = Number(parts[1]);
|
|
7616
|
+
if (w > 0 && h > 0) return `${w} / ${h}`;
|
|
7617
|
+
}
|
|
7618
|
+
}
|
|
7619
|
+
return "16 / 9";
|
|
7614
7620
|
});
|
|
7621
|
+
const iframeStyle = vue.computed(() => ({
|
|
7622
|
+
width: "100%",
|
|
7623
|
+
aspectRatio: aspectRatioCss.value,
|
|
7624
|
+
border: "0",
|
|
7625
|
+
display: "block"
|
|
7626
|
+
}));
|
|
7615
7627
|
return (_ctx, _cache) => {
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
isYTReady.value ? (vue.openBlock(), vue.createBlock(vue.unref(YouTube), {
|
|
7630
|
-
key: 0,
|
|
7631
|
-
ref: "youtube",
|
|
7632
|
-
host: "https://www.youtube-nocookie.com",
|
|
7633
|
-
src: ((_b = _ctx.part.properties) == null ? void 0 : _b.url) || "",
|
|
7634
|
-
width: containerWidth.value,
|
|
7635
|
-
height: playerHeight.value,
|
|
7636
|
-
onReady
|
|
7637
|
-
}, null, 8, ["src", "width", "height"])) : vue.createCommentVNode("", true)
|
|
7638
|
-
], 512)) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3$1, _cache[0] || (_cache[0] = [
|
|
7639
|
-
vue.createElementVNode("span", { class: "font-icon" }, "live_tv", -1)
|
|
7640
|
-
]))) : vue.createCommentVNode("", true)
|
|
7641
|
-
], 64);
|
|
7628
|
+
return embedSrc.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3$1, [
|
|
7629
|
+
vue.createElementVNode("iframe", {
|
|
7630
|
+
src: embedSrc.value,
|
|
7631
|
+
style: vue.normalizeStyle(iframeStyle.value),
|
|
7632
|
+
frameborder: "0",
|
|
7633
|
+
allow: "accelerometer; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
7634
|
+
allowfullscreen: "",
|
|
7635
|
+
loading: "lazy",
|
|
7636
|
+
title: "YouTube video"
|
|
7637
|
+
}, null, 12, _hoisted_2$1$1)
|
|
7638
|
+
])) : _ctx.placeholder ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$l, _cache[0] || (_cache[0] = [
|
|
7639
|
+
vue.createElementVNode("span", { class: "font-icon" }, "live_tv", -1)
|
|
7640
|
+
]))) : vue.createCommentVNode("", true);
|
|
7642
7641
|
};
|
|
7643
7642
|
}
|
|
7644
7643
|
});
|
|
7645
|
-
const _export_sfc$1 = (sfc, props) => {
|
|
7646
|
-
const target = sfc.__vccOpts || sfc;
|
|
7647
|
-
for (const [key, val] of props) {
|
|
7648
|
-
target[key] = val;
|
|
7649
|
-
}
|
|
7650
|
-
return target;
|
|
7651
|
-
};
|
|
7652
|
-
const PbYoutubeWidget = /* @__PURE__ */ _export_sfc$1(_sfc_main$4$1, [["__scopeId", "data-v-675477df"]]);
|
|
7653
7644
|
const defaultPartDefinitions = {
|
|
7654
7645
|
"Section": {
|
|
7655
7646
|
partType: "Section",
|
|
@@ -7691,7 +7682,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
7691
7682
|
partType: "Widget",
|
|
7692
7683
|
partName: "YoutubeWidget",
|
|
7693
7684
|
className: "pb-youtube-widget",
|
|
7694
|
-
creator: () =>
|
|
7685
|
+
creator: () => _sfc_main$4$1
|
|
7695
7686
|
}
|
|
7696
7687
|
/*
|
|
7697
7688
|
* BSP에서 사용안함
|
|
@@ -9860,8 +9851,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
9860
9851
|
const _hoisted_1$D = { class: "group-editor group-editor-position" };
|
|
9861
9852
|
const _hoisted_2$u = { class: "flex-align-center" };
|
|
9862
9853
|
const _hoisted_3$k = { class: "title" };
|
|
9863
|
-
const _hoisted_4$
|
|
9864
|
-
const _hoisted_5$
|
|
9854
|
+
const _hoisted_4$e = { class: "flex-grow-1" };
|
|
9855
|
+
const _hoisted_5$b = { class: "bg-gray-100 py-5 rounded-8" };
|
|
9865
9856
|
const _hoisted_6$9 = { class: "text-center" };
|
|
9866
9857
|
const _hoisted_7$8 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
|
|
9867
9858
|
const _hoisted_8$7 = { class: "text-center" };
|
|
@@ -9896,8 +9887,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
9896
9887
|
[vue.unref(bluesea.vT), { key: "pb.prop.position" }]
|
|
9897
9888
|
])
|
|
9898
9889
|
]),
|
|
9899
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
9900
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
9890
|
+
vue.createElementVNode("div", _hoisted_4$e, [
|
|
9891
|
+
vue.createElementVNode("div", _hoisted_5$b, [
|
|
9901
9892
|
vue.createElementVNode("div", _hoisted_6$9, [
|
|
9902
9893
|
vue.createVNode(vue.unref(bluesea.BSTextInput), {
|
|
9903
9894
|
"model-value": top.value,
|
|
@@ -9948,8 +9939,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
9948
9939
|
const _hoisted_1$C = { class: "group-editor group-editor-size" };
|
|
9949
9940
|
const _hoisted_2$t = { class: "flex-align-center" };
|
|
9950
9941
|
const _hoisted_3$j = { class: "title" };
|
|
9951
|
-
const _hoisted_4$
|
|
9952
|
-
const _hoisted_5$
|
|
9942
|
+
const _hoisted_4$d = { class: "flex-grow-1 bs-layout-horizontal" };
|
|
9943
|
+
const _hoisted_5$a = { class: "flex-align-center mt-12" };
|
|
9953
9944
|
const _hoisted_6$8 = { class: "title" };
|
|
9954
9945
|
const _hoisted_7$7 = { class: "flex-grow-1 bs-layout-horizontal" };
|
|
9955
9946
|
const _hoisted_8$6 = { class: "flex-align-center mt-12" };
|
|
@@ -9990,7 +9981,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
9990
9981
|
[vue.unref(bluesea.vT), { key: "pb.prop.size" }]
|
|
9991
9982
|
])
|
|
9992
9983
|
]),
|
|
9993
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
9984
|
+
vue.createElementVNode("div", _hoisted_4$d, [
|
|
9994
9985
|
vue.createVNode(vue.unref(bluesea.BSTextInput), {
|
|
9995
9986
|
"model-value": width.value,
|
|
9996
9987
|
class: "flex-grow-1 mr-2",
|
|
@@ -10005,7 +9996,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
10005
9996
|
}, null, 8, ["model-value"])
|
|
10006
9997
|
])
|
|
10007
9998
|
]),
|
|
10008
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
9999
|
+
vue.createElementVNode("div", _hoisted_5$a, [
|
|
10009
10000
|
vue.createElementVNode("div", _hoisted_6$8, [
|
|
10010
10001
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
10011
10002
|
[vue.unref(bluesea.vT), { key: "pb.prop.maxSize" }]
|
|
@@ -10216,7 +10207,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
10216
10207
|
-1
|
|
10217
10208
|
/* HOISTED */
|
|
10218
10209
|
);
|
|
10219
|
-
const _hoisted_4$
|
|
10210
|
+
const _hoisted_4$c = [
|
|
10220
10211
|
_hoisted_3$i
|
|
10221
10212
|
];
|
|
10222
10213
|
function render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
@@ -10251,7 +10242,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
10251
10242
|
class: "vc-alpha-pointer",
|
|
10252
10243
|
style: vue.normalizeStyle({ left: `${$options.colors.a * 100}%` })
|
|
10253
10244
|
},
|
|
10254
|
-
_hoisted_4$
|
|
10245
|
+
_hoisted_4$c,
|
|
10255
10246
|
4
|
|
10256
10247
|
/* STYLE */
|
|
10257
10248
|
)
|
|
@@ -11328,7 +11319,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11328
11319
|
const _hoisted_1$A = { class: "vc-editable-input" };
|
|
11329
11320
|
const _hoisted_2$r = ["aria-labelledby"];
|
|
11330
11321
|
const _hoisted_3$h = ["id", "for"];
|
|
11331
|
-
const _hoisted_4$
|
|
11322
|
+
const _hoisted_4$b = { class: "vc-input__desc" };
|
|
11332
11323
|
function render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
11333
11324
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
|
|
11334
11325
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
@@ -11348,7 +11339,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11348
11339
|
}, vue.toDisplayString($options.labelSpanText), 9, _hoisted_3$h),
|
|
11349
11340
|
vue.createElementVNode(
|
|
11350
11341
|
"span",
|
|
11351
|
-
_hoisted_4$
|
|
11342
|
+
_hoisted_4$b,
|
|
11352
11343
|
vue.toDisplayString($props.desc),
|
|
11353
11344
|
1
|
|
11354
11345
|
/* TEXT */
|
|
@@ -11446,7 +11437,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11446
11437
|
-1
|
|
11447
11438
|
/* HOISTED */
|
|
11448
11439
|
);
|
|
11449
|
-
const _hoisted_4$
|
|
11440
|
+
const _hoisted_4$a = [
|
|
11450
11441
|
_hoisted_3$g
|
|
11451
11442
|
];
|
|
11452
11443
|
function render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
@@ -11469,7 +11460,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11469
11460
|
class: "vc-saturation-pointer",
|
|
11470
11461
|
style: vue.normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft })
|
|
11471
11462
|
},
|
|
11472
|
-
_hoisted_4$
|
|
11463
|
+
_hoisted_4$a,
|
|
11473
11464
|
4
|
|
11474
11465
|
/* STYLE */
|
|
11475
11466
|
)
|
|
@@ -11749,8 +11740,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11749
11740
|
const _hoisted_1$x = { class: "vc-sketch-saturation-wrap" };
|
|
11750
11741
|
const _hoisted_2$o = { class: "vc-sketch-controls" };
|
|
11751
11742
|
const _hoisted_3$e = { class: "vc-sketch-sliders" };
|
|
11752
|
-
const _hoisted_4$
|
|
11753
|
-
const _hoisted_5$
|
|
11743
|
+
const _hoisted_4$9 = { class: "vc-sketch-hue-wrap" };
|
|
11744
|
+
const _hoisted_5$9 = {
|
|
11754
11745
|
key: 0,
|
|
11755
11746
|
class: "vc-sketch-alpha-wrap"
|
|
11756
11747
|
};
|
|
@@ -11797,13 +11788,13 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11797
11788
|
]),
|
|
11798
11789
|
vue.createElementVNode("div", _hoisted_2$o, [
|
|
11799
11790
|
vue.createElementVNode("div", _hoisted_3$e, [
|
|
11800
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
11791
|
+
vue.createElementVNode("div", _hoisted_4$9, [
|
|
11801
11792
|
vue.createVNode(_component_Hue, {
|
|
11802
11793
|
value: _ctx.colors,
|
|
11803
11794
|
onChange: $options.childChange
|
|
11804
11795
|
}, null, 8, ["value", "onChange"])
|
|
11805
11796
|
]),
|
|
11806
|
-
!$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$
|
|
11797
|
+
!$props.disableAlpha ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$9, [
|
|
11807
11798
|
vue.createVNode(_component_Alpha, {
|
|
11808
11799
|
value: _ctx.colors,
|
|
11809
11800
|
onChange: $options.childChange
|
|
@@ -12002,8 +11993,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12002
11993
|
const _hoisted_1$v = { class: "group-editor group-editor-background" };
|
|
12003
11994
|
const _hoisted_2$m = { class: "flex-align-center" };
|
|
12004
11995
|
const _hoisted_3$d = { class: "title" };
|
|
12005
|
-
const _hoisted_4$
|
|
12006
|
-
const _hoisted_5$
|
|
11996
|
+
const _hoisted_4$8 = { class: "color" };
|
|
11997
|
+
const _hoisted_5$8 = { class: "image mt-4" };
|
|
12007
11998
|
const _hoisted_6$6 = {
|
|
12008
11999
|
key: 0,
|
|
12009
12000
|
class: "url mt-8"
|
|
@@ -12052,7 +12043,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12052
12043
|
])
|
|
12053
12044
|
]),
|
|
12054
12045
|
vue.createElementVNode("div", null, [
|
|
12055
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
12046
|
+
vue.createElementVNode("div", _hoisted_4$8, [
|
|
12056
12047
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
12057
12048
|
[vue.unref(bluesea.vT), { key: "pb.prop.color" }]
|
|
12058
12049
|
]),
|
|
@@ -12083,7 +12074,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12083
12074
|
]
|
|
12084
12075
|
]) : vue.createCommentVNode("", true)
|
|
12085
12076
|
]),
|
|
12086
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
12077
|
+
vue.createElementVNode("div", _hoisted_5$8, [
|
|
12087
12078
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
12088
12079
|
[vue.unref(bluesea.vT), { key: "pb.prop.image" }]
|
|
12089
12080
|
]),
|
|
@@ -12122,8 +12113,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12122
12113
|
const _hoisted_1$u = { class: "group-editor group-editor-border" };
|
|
12123
12114
|
const _hoisted_2$l = { class: "flex-align-center" };
|
|
12124
12115
|
const _hoisted_3$c = { class: "title" };
|
|
12125
|
-
const _hoisted_4$
|
|
12126
|
-
const _hoisted_5$
|
|
12116
|
+
const _hoisted_4$7 = { class: "" };
|
|
12117
|
+
const _hoisted_5$7 = { class: "sub-title" };
|
|
12127
12118
|
const _hoisted_6$5 = { class: "color" };
|
|
12128
12119
|
const _hoisted_7$5 = { class: "mt-8" };
|
|
12129
12120
|
const _hoisted_8$4 = { class: "sub-title" };
|
|
@@ -12183,8 +12174,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12183
12174
|
[vue.unref(bluesea.vT), { key: "pb.prop.border" }]
|
|
12184
12175
|
])
|
|
12185
12176
|
]),
|
|
12186
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
12187
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
12177
|
+
vue.createElementVNode("div", _hoisted_4$7, [
|
|
12178
|
+
vue.createElementVNode("div", _hoisted_5$7, [
|
|
12188
12179
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
12189
12180
|
[vue.unref(bluesea.vT), { key: "pb.prop.borderColor" }]
|
|
12190
12181
|
])
|
|
@@ -12309,8 +12300,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12309
12300
|
const _hoisted_1$t = { class: "group-editor group-editor-margin" };
|
|
12310
12301
|
const _hoisted_2$k = { class: "flex-align-center" };
|
|
12311
12302
|
const _hoisted_3$b = { class: "title" };
|
|
12312
|
-
const _hoisted_4$
|
|
12313
|
-
const _hoisted_5$
|
|
12303
|
+
const _hoisted_4$6 = { class: "flex-grow-1" };
|
|
12304
|
+
const _hoisted_5$6 = { class: "bg-gray-100 py-5 rounded-8" };
|
|
12314
12305
|
const _hoisted_6$4 = { class: "text-center" };
|
|
12315
12306
|
const _hoisted_7$4 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
|
|
12316
12307
|
const _hoisted_8$3 = { class: "text-center" };
|
|
@@ -12345,8 +12336,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12345
12336
|
[vue.unref(bluesea.vT), { key: "pb.prop.margin" }]
|
|
12346
12337
|
])
|
|
12347
12338
|
]),
|
|
12348
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
12349
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
12339
|
+
vue.createElementVNode("div", _hoisted_4$6, [
|
|
12340
|
+
vue.createElementVNode("div", _hoisted_5$6, [
|
|
12350
12341
|
vue.createElementVNode("div", _hoisted_6$4, [
|
|
12351
12342
|
vue.createVNode(vue.unref(bluesea.BSTextInput), {
|
|
12352
12343
|
"model-value": top.value,
|
|
@@ -12397,8 +12388,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12397
12388
|
const _hoisted_1$s = { class: "group-editor group-editor-padding" };
|
|
12398
12389
|
const _hoisted_2$j = { class: "flex-align-center" };
|
|
12399
12390
|
const _hoisted_3$a = { class: "title" };
|
|
12400
|
-
const _hoisted_4$
|
|
12401
|
-
const _hoisted_5$
|
|
12391
|
+
const _hoisted_4$5 = { class: "flex-grow-1" };
|
|
12392
|
+
const _hoisted_5$5 = { class: "bg-gray-100 py-5 rounded-8" };
|
|
12402
12393
|
const _hoisted_6$3 = { class: "text-center" };
|
|
12403
12394
|
const _hoisted_7$3 = { class: "bs-layout-horizontal justify-content-center align-items-center" };
|
|
12404
12395
|
const _hoisted_8$2 = { class: "text-center" };
|
|
@@ -12433,8 +12424,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12433
12424
|
[vue.unref(bluesea.vT), { key: "pb.prop.padding" }]
|
|
12434
12425
|
])
|
|
12435
12426
|
]),
|
|
12436
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
12437
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
12427
|
+
vue.createElementVNode("div", _hoisted_4$5, [
|
|
12428
|
+
vue.createElementVNode("div", _hoisted_5$5, [
|
|
12438
12429
|
vue.createElementVNode("div", _hoisted_6$3, [
|
|
12439
12430
|
vue.createVNode(vue.unref(bluesea.BSTextInput), {
|
|
12440
12431
|
"model-value": top.value,
|
|
@@ -12868,8 +12859,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12868
12859
|
key: 0,
|
|
12869
12860
|
class: "title mt-12"
|
|
12870
12861
|
};
|
|
12871
|
-
const _hoisted_4$
|
|
12872
|
-
const _hoisted_5$
|
|
12862
|
+
const _hoisted_4$4 = { class: "url mt-8" };
|
|
12863
|
+
const _hoisted_5$4 = { class: "title mt-12" };
|
|
12873
12864
|
const _hoisted_6$2 = { class: "title mt-12" };
|
|
12874
12865
|
const _hoisted_7$2 = { class: "title mt-12" };
|
|
12875
12866
|
const _hoisted_8$1 = { class: "title mt-12" };
|
|
@@ -12960,7 +12951,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12960
12951
|
]),
|
|
12961
12952
|
((_a = media.value) == null ? void 0 : _a.fileUrl) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$9, [
|
|
12962
12953
|
_cache[4] || (_cache[4] = vue.createElementVNode("label", null, "URL", -1)),
|
|
12963
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
12954
|
+
vue.createElementVNode("div", _hoisted_4$4, [
|
|
12964
12955
|
vue.createTextVNode(vue.toDisplayString((_b = media.value) == null ? void 0 : _b.fileUrl) + " ", 1),
|
|
12965
12956
|
vue.withDirectives(vue.createVNode(vue.unref(bluesea.BSButton), {
|
|
12966
12957
|
class: "border-0 mb-2 px-1",
|
|
@@ -12989,7 +12980,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
12989
12980
|
])
|
|
12990
12981
|
])) : vue.createCommentVNode("", true),
|
|
12991
12982
|
((_c = media.value) == null ? void 0 : _c.mediaType) === "Image" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
12992
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
12983
|
+
vue.createElementVNode("div", _hoisted_5$4, [
|
|
12993
12984
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
12994
12985
|
[vue.unref(bluesea.vT), { key: "pb.prop.altText" }]
|
|
12995
12986
|
])
|
|
@@ -13325,7 +13316,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
13325
13316
|
],
|
|
13326
13317
|
initialProperties: {},
|
|
13327
13318
|
allowsChild: () => false,
|
|
13328
|
-
creator: () =>
|
|
13319
|
+
creator: () => _sfc_main$4$1
|
|
13329
13320
|
}
|
|
13330
13321
|
/*
|
|
13331
13322
|
* BSP에서 사용안함
|
|
@@ -15610,6 +15601,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
15610
15601
|
});
|
|
15611
15602
|
const canvasStyle = '.pb-page {\n display: flex;\n flex-direction: column;\n width: 100%;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n overflow-x: hidden;\n}\n.pb-page .pb-section {\n display: flex;\n position: relative;\n width: 100%;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-page .pb-section .pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-widget {\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-page .pb-section .pb-block .pb-text-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-page .pb-section .pb-block .pb-text-widget .text {\n display: block;\n color: #333;\n}\n.pb-page .pb-section .pb-block .pb-text-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-page .pb-section .pb-block .pb-media-widget {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-media-widget .image-container {\n margin: 0;\n padding: 0;\n}\n.pb-page .pb-section .pb-block .pb-media-widget .image {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-media-widget .video {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-media-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-page .pb-section .pb-block .pb-media-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-page .pb-section .pb-block .pb-html-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-page .pb-section .pb-block .pb-html-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-page .pb-section .pb-block .pb-iframe-widget {\n width: 100%;\n height: fit-content;\n}\n.pb-page .pb-section .pb-block .pb-iframe-widget .placeholder {\n padding: 4px 0;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-page .pb-section .pb-block .pb-youtube-widget {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-youtube-widget .youtube {\n width: 100%;\n height: 100%;\n}\n.pb-page .pb-section .pb-block .pb-youtube-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-page .pb-section .pb-block .pb-youtube-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-page .pb-section .pb-block .pb-container-widget {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-container-widget .placeholder {\n height: 100px;\n background-color: #eee;\n text-align: center;\n}\n.pb-page .pb-section .pb-block .pb-container-widget .placeholder span {\n font-size: 40px;\n color: #999;\n line-height: 100px;\n vertical-align: middle;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper {\n width: 25%;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper .product {\n width: 95%;\n margin: 0 auto;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper img {\n width: 100%;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper .name {\n margin-top: 8px;\n font-size: 14px;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper .price {\n margin-top: 8px;\n font-size: 14px;\n font-weight: bold;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper .empty {\n height: 200px;\n background-color: #eee;\n text-align: center;\n}\n.pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper .empty span {\n font-size: 40px;\n color: #999;\n line-height: 200px;\n vertical-align: middle;\n}\n@media (max-width: 768px) {\n .pb-page .pb-section .pb-block .pb-product-list-widget .product-wrapper {\n width: 50%;\n }\n}\n.pb-page .pb-section .pb-block .mobile .pb-product-list-widget .product-wrapper {\n width: 50%;\n}\n.pb-page .pb-section .pb-block .pb-login-widget {\n height: 200px;\n text-align: center;\n}\n.pb-page .pb-section .pb-block .pb-login-widget h3 {\n padding: 0;\n margin: 0;\n font-size: 32px;\n font-weight: bold;\n color: #ccc;\n line-height: 200px;\n vertical-align: middle;\n}\n.pb-page * {\n box-sizing: border-box;\n}\n.pb-viewer {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n overflow-y: auto;\n}\n.pb-page-wrapper {\n margin: 0 auto;\n padding: 0;\n}\n.pb-page {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n padding-bottom: 100px;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n}\n.pb-page .pb-page-content {\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: #fff;\n}\n.pb-page .pb-page-content.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n.pb-page * {\n box-sizing: border-box;\n}\n.pb-add-widget-button {\n width: 100%;\n height: 100%;\n min-height: 200px;\n position: relative;\n}\n.pb-add-widget-button button {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 8px;\n background: none;\n border: none;\n cursor: pointer;\n}\n.pb-add-widget-button button:hover {\n background-color: #eeeeee;\n}\n.pb-add-widget-button .icon {\n font-size: 1rem;\n vertical-align: middle;\n}\n.pb-add-widget-button .text {\n font-size: 1rem;\n vertical-align: middle;\n margin-left: 0.4rem;\n}\n.pb-section {\n display: flex;\n position: relative;\n width: 100%;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n outline: 1px dashed #ccc;\n}\n.pb-section:empty {\n background-color: #fff;\n}\n.pb-section:hover:not(:has(.pb-block:hover)) {\n background-color: #f0f0f0;\n}\n.pb-section.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n.pb-section.pb-section-static {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n}\n.pb-section.pb-section-static:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.2);\n}\n.pb-section-static .pb-widget {\n outline: none;\n}\n.pb-block {\n display: flex;\n min-width: 1px;\n position: relative;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n outline: 1px dashed #ccc;\n}\n.pb-block:hover:not(:has(.pb-widget:hover)) {\n background-color: #f0f0f0;\n}\n.pb-block.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n.pb-widget {\n position: relative;\n outline: 1px dashed #ccc;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: cover;\n pointer-events: auto !important;\n min-height: 50px;\n}\n.pb-widget * {\n pointer-events: none;\n}\n.pb-widget > .invalid-widget {\n display: flex;\n height: 50px;\n justify-content: center;\n align-items: center;\n width: 100%;\n font-size: 18px;\n text-align: center;\n color: #999;\n}\n.pb-widget.selected::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid #4998f8;\n z-index: 999;\n pointer-events: none;\n}\n.pb-widget .children {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.pb-widget .pan-handle {\n position: absolute;\n left: -6px;\n top: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: move;\n pointer-events: auto !important;\n}\n.pb-widget .resize-handle {\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 12px;\n height: 12px;\n background-color: #27ae60;\n cursor: nwse-resize;\n pointer-events: auto !important;\n}\nbody {\n margin: 0;\n padding: 0;\n background-color: var(--color-canvas-frame-bg);\n overflow: hidden;\n}\n.font-icon, .material-icons-outlined {\n font-family: "Material Symbols Outlined", monospace;\n font-size: 1rem;\n max-width: 1em;\n}\n.pb-position-mark {\n background-color: #ff3333;\n opacity: 0.5;\n border-radius: 2px;\n}\n.pb-add-section-handle {\n position: relative;\n text-align: center;\n cursor: pointer;\n z-index: 5;\n height: 0;\n}\n.pb-add-section-handle.top::before, .pb-add-section-handle.bottom::before, .pb-add-section-handle.middle::before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n}\n.pb-add-section-handle.bottom {\n bottom: -32px;\n}\n.pb-add-section-handle:hover.top::before, .pb-add-section-handle:hover.bottom::before, .pb-add-section-handle:hover.middle::before,\n.pb-add-section-handle:hover > i {\n opacity: 1;\n}\n.pb-add-section-handle > i {\n font-style: normal;\n vertical-align: middle;\n position: absolute;\n top: 50%;\n left: 0;\n font-size: 2rem;\n transform: translate(-50%, -50%);\n opacity: 0.2;\n}';
|
|
15612
15603
|
const _hoisted_1$h = ["width"];
|
|
15604
|
+
const iframeSrcdoc = "<!doctype html><html><head></head><body></body></html>";
|
|
15613
15605
|
const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
15614
15606
|
__name: "PbPageFrame",
|
|
15615
15607
|
props: {
|
|
@@ -15620,41 +15612,41 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
15620
15612
|
const props = __props;
|
|
15621
15613
|
const pageBuilderEditor = usePageBuilderEditor();
|
|
15622
15614
|
const iframeRef = vue.ref();
|
|
15615
|
+
const ready = vue.ref(false);
|
|
15623
15616
|
provideMouseTracker(iframeRef);
|
|
15624
|
-
const
|
|
15625
|
-
|
|
15626
|
-
|
|
15627
|
-
|
|
15628
|
-
|
|
15629
|
-
()
|
|
15630
|
-
|
|
15631
|
-
|
|
15632
|
-
|
|
15633
|
-
|
|
15634
|
-
|
|
15635
|
-
|
|
15636
|
-
|
|
15637
|
-
|
|
15638
|
-
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
|
|
15642
|
-
|
|
15643
|
-
|
|
15644
|
-
|
|
15645
|
-
|
|
15646
|
-
|
|
15647
|
-
|
|
15648
|
-
|
|
15649
|
-
|
|
15650
|
-
|
|
15651
|
-
|
|
15652
|
-
|
|
15653
|
-
|
|
15654
|
-
|
|
15655
|
-
|
|
15656
|
-
|
|
15657
|
-
);
|
|
15617
|
+
const onIframeLoad = () => {
|
|
15618
|
+
var _a, _b;
|
|
15619
|
+
if (ready.value) return;
|
|
15620
|
+
const doc = (_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document;
|
|
15621
|
+
if (!(doc == null ? void 0 : doc.head)) return;
|
|
15622
|
+
const externalCss = pageBuilderEditor.getExternalCss();
|
|
15623
|
+
doc.head.innerHTML = `
|
|
15624
|
+
<meta charset="UTF-8"/>
|
|
15625
|
+
<link
|
|
15626
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block"
|
|
15627
|
+
rel="stylesheet"/>
|
|
15628
|
+
${externalCss}
|
|
15629
|
+
<style>${canvasStyle}</style>
|
|
15630
|
+
`;
|
|
15631
|
+
const script2 = doc.createElement("script");
|
|
15632
|
+
script2.innerHTML = `
|
|
15633
|
+
function forwardPostMessage(event) {
|
|
15634
|
+
if (event.data) {
|
|
15635
|
+
console.log(event)
|
|
15636
|
+
window.parent.postMessage(event.data, '*');
|
|
15637
|
+
}
|
|
15638
|
+
}
|
|
15639
|
+
window.addEventListener('message', forwardPostMessage);
|
|
15640
|
+
`;
|
|
15641
|
+
doc.head.appendChild(script2);
|
|
15642
|
+
pageBuilderEditor.keyHandlers.addDocumentKeyEventListener(doc.body);
|
|
15643
|
+
ready.value = true;
|
|
15644
|
+
resizeObserver = new ResizeObserver(updateIframeHeight);
|
|
15645
|
+
resizeObserver.observe(doc.body, {});
|
|
15646
|
+
mutationObserver = new MutationObserver(updateIframeHeight);
|
|
15647
|
+
mutationObserver.observe(doc.body, { childList: true, subtree: true });
|
|
15648
|
+
updateIframeHeight();
|
|
15649
|
+
};
|
|
15658
15650
|
const width = vue.ref(props.width);
|
|
15659
15651
|
vue.ref(200);
|
|
15660
15652
|
const isMobilePage = vue.computed(() => width.value <= 768);
|
|
@@ -15679,15 +15671,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
15679
15671
|
}
|
|
15680
15672
|
});
|
|
15681
15673
|
};
|
|
15682
|
-
vue.onMounted(() => {
|
|
15683
|
-
if (!iframeRef.value || !iframeRef.value.contentDocument) return;
|
|
15684
|
-
const iframeBody = iframeRef.value.contentDocument.body;
|
|
15685
|
-
resizeObserver = new ResizeObserver(updateIframeHeight);
|
|
15686
|
-
resizeObserver.observe(iframeBody, {});
|
|
15687
|
-
mutationObserver = new MutationObserver(updateIframeHeight);
|
|
15688
|
-
mutationObserver.observe(iframeBody, { childList: true, subtree: true });
|
|
15689
|
-
iframeRef.value.onload = updateIframeHeight;
|
|
15690
|
-
});
|
|
15691
15674
|
vue.onBeforeUnmount(() => {
|
|
15692
15675
|
if (resizeObserver) {
|
|
15693
15676
|
resizeObserver.disconnect();
|
|
@@ -15716,11 +15699,13 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
15716
15699
|
vue.createElementVNode("iframe", {
|
|
15717
15700
|
ref_key: "iframeRef",
|
|
15718
15701
|
ref: iframeRef,
|
|
15702
|
+
srcdoc: iframeSrcdoc,
|
|
15719
15703
|
style: vue.normalizeStyle(style.value),
|
|
15720
15704
|
width: `${width.value}px`,
|
|
15721
|
-
class: "page-frame mt-12"
|
|
15722
|
-
|
|
15723
|
-
|
|
15705
|
+
class: "page-frame mt-12",
|
|
15706
|
+
onLoad: onIframeLoad
|
|
15707
|
+
}, null, 44, _hoisted_1$h),
|
|
15708
|
+
ready.value && ((_b = (_a = iframeRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document.body) ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
|
|
15724
15709
|
key: 0,
|
|
15725
15710
|
to: (_d = (_c = iframeRef.value) == null ? void 0 : _c.contentWindow) == null ? void 0 : _d.document.body
|
|
15726
15711
|
}, [
|
|
@@ -17578,10 +17563,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
17578
17563
|
});
|
|
17579
17564
|
return (_ctx, _cache) => {
|
|
17580
17565
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
|
|
17581
|
-
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent("script"), {
|
|
17582
|
-
id: "youtube-iframe-js-api-script",
|
|
17583
|
-
src: "https://www.youtube.com/iframe_api"
|
|
17584
|
-
})),
|
|
17585
17566
|
vue.createVNode(_sfc_main$o, { "toolbar-plugin": _ctx.toolbarPlugin }, null, 8, ["toolbar-plugin"]),
|
|
17586
17567
|
vue.createElementVNode("div", _hoisted_2$e, [
|
|
17587
17568
|
vue.createVNode(_sfc_main$n, { class: "w-240 min-w-120" }),
|
|
@@ -17962,8 +17943,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
17962
17943
|
key: 0,
|
|
17963
17944
|
class: "title mt-12"
|
|
17964
17945
|
};
|
|
17965
|
-
const _hoisted_4$
|
|
17966
|
-
const _hoisted_5$
|
|
17946
|
+
const _hoisted_4$3 = { class: "mt-8" };
|
|
17947
|
+
const _hoisted_5$3 = { class: "title mt-12" };
|
|
17967
17948
|
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
17968
17949
|
__name: "PbPropertyEditorImage",
|
|
17969
17950
|
props: {
|
|
@@ -18025,7 +18006,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18025
18006
|
]),
|
|
18026
18007
|
((_a = media.value) == null ? void 0 : _a.fileUrl) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
|
|
18027
18008
|
_cache[0] || (_cache[0] = vue.createElementVNode("label", null, "URL", -1)),
|
|
18028
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
18009
|
+
vue.createElementVNode("div", _hoisted_4$3, [
|
|
18029
18010
|
vue.createTextVNode(vue.toDisplayString((_b = media.value) == null ? void 0 : _b.fileUrl) + " ", 1),
|
|
18030
18011
|
vue.withDirectives(vue.createVNode(vue.unref(bluesea.BSButton), {
|
|
18031
18012
|
class: "border-0 mb-2 px-1",
|
|
@@ -18054,7 +18035,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18054
18035
|
])
|
|
18055
18036
|
])) : vue.createCommentVNode("", true),
|
|
18056
18037
|
((_c = media.value) == null ? void 0 : _c.mediaType) === "Image" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
18057
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
18038
|
+
vue.createElementVNode("div", _hoisted_5$3, [
|
|
18058
18039
|
vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
|
|
18059
18040
|
[vue.unref(bluesea.vT), { key: "pb.prop.altText" }]
|
|
18060
18041
|
])
|
|
@@ -18202,7 +18183,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18202
18183
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
18203
18184
|
const _hoisted_1$3 = { class: "bs-layout-vertical flex-grow-1 h-full" };
|
|
18204
18185
|
const _hoisted_2$3 = { class: "pt-8" };
|
|
18205
|
-
const _hoisted_3$3 = { class: "
|
|
18186
|
+
const _hoisted_3$3 = { class: "preview-wrapper" };
|
|
18187
|
+
const _hoisted_4$2 = ["src"];
|
|
18188
|
+
const _hoisted_5$2 = { class: "bs-layout-horizontal justify-content-center" };
|
|
18206
18189
|
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
18207
18190
|
__name: "PbYoutubeModal",
|
|
18208
18191
|
props: {
|
|
@@ -18213,11 +18196,54 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18213
18196
|
const props = __props;
|
|
18214
18197
|
const emit = __emit;
|
|
18215
18198
|
const modalHandle = bluesea.useModalHandle();
|
|
18216
|
-
const previewContainer = vue.ref();
|
|
18217
18199
|
const url = vue.ref(props.url);
|
|
18218
18200
|
const aspectRatio = vue.ref();
|
|
18219
|
-
const
|
|
18220
|
-
|
|
18201
|
+
const extractVideoId = (raw) => {
|
|
18202
|
+
const value = raw.trim();
|
|
18203
|
+
if (!value) return void 0;
|
|
18204
|
+
if (/^[\w-]{11}$/.test(value)) return value;
|
|
18205
|
+
try {
|
|
18206
|
+
const u = new URL(value);
|
|
18207
|
+
const host = u.hostname.replace(/^www\./, "");
|
|
18208
|
+
if (host === "youtu.be") {
|
|
18209
|
+
const id = u.pathname.slice(1).split("/")[0];
|
|
18210
|
+
return id || void 0;
|
|
18211
|
+
}
|
|
18212
|
+
if (host === "youtube.com" || host === "youtube-nocookie.com" || host === "m.youtube.com") {
|
|
18213
|
+
const v = u.searchParams.get("v");
|
|
18214
|
+
if (v) return v;
|
|
18215
|
+
const segs = u.pathname.split("/").filter(Boolean);
|
|
18216
|
+
const idx = segs.findIndex((s) => s === "embed" || s === "shorts" || s === "live" || s === "v");
|
|
18217
|
+
if (idx >= 0 && segs[idx + 1]) return segs[idx + 1];
|
|
18218
|
+
}
|
|
18219
|
+
} catch {
|
|
18220
|
+
}
|
|
18221
|
+
return void 0;
|
|
18222
|
+
};
|
|
18223
|
+
const embedSrc = vue.computed(() => {
|
|
18224
|
+
if (!url.value) return void 0;
|
|
18225
|
+
const id = extractVideoId(url.value);
|
|
18226
|
+
if (!id) return void 0;
|
|
18227
|
+
return `https://www.youtube-nocookie.com/embed/${id}`;
|
|
18228
|
+
});
|
|
18229
|
+
const aspectRatioCss = vue.computed(() => {
|
|
18230
|
+
const raw = aspectRatio.value;
|
|
18231
|
+
if (raw) {
|
|
18232
|
+
const parts = raw.split("/");
|
|
18233
|
+
if (parts.length === 2) {
|
|
18234
|
+
const w = Number(parts[0]);
|
|
18235
|
+
const h = Number(parts[1]);
|
|
18236
|
+
if (w > 0 && h > 0) return `${w} / ${h}`;
|
|
18237
|
+
}
|
|
18238
|
+
}
|
|
18239
|
+
return "16 / 9";
|
|
18240
|
+
});
|
|
18241
|
+
const iframeStyle = vue.computed(() => ({
|
|
18242
|
+
width: "100%",
|
|
18243
|
+
aspectRatio: aspectRatioCss.value,
|
|
18244
|
+
border: "0",
|
|
18245
|
+
display: "block"
|
|
18246
|
+
}));
|
|
18221
18247
|
const fetchAspectRatio = async (videoUrl) => {
|
|
18222
18248
|
try {
|
|
18223
18249
|
const oembedUrl = `https://www.youtube.com/oembed?url=${encodeURIComponent(videoUrl)}&format=json`;
|
|
@@ -18226,7 +18252,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18226
18252
|
const data = await response.json();
|
|
18227
18253
|
if (data.width && data.height) {
|
|
18228
18254
|
aspectRatio.value = `${data.width}/${data.height}`;
|
|
18229
|
-
previewHeight.value = Math.round(previewWidth.value * data.height / data.width);
|
|
18230
18255
|
}
|
|
18231
18256
|
} catch {
|
|
18232
18257
|
}
|
|
@@ -18241,21 +18266,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18241
18266
|
if (props.url) {
|
|
18242
18267
|
fetchAspectRatio(props.url);
|
|
18243
18268
|
}
|
|
18244
|
-
const measureContainer = () => {
|
|
18245
|
-
var _a;
|
|
18246
|
-
const w = (_a = previewContainer.value) == null ? void 0 : _a.clientWidth;
|
|
18247
|
-
if (w && w > 0) {
|
|
18248
|
-
previewWidth.value = w;
|
|
18249
|
-
previewHeight.value = Math.round(w * 9 / 16);
|
|
18250
|
-
return true;
|
|
18251
|
-
}
|
|
18252
|
-
return false;
|
|
18253
|
-
};
|
|
18254
|
-
vue.onMounted(() => {
|
|
18255
|
-
if (!measureContainer()) {
|
|
18256
|
-
requestAnimationFrame(() => measureContainer());
|
|
18257
|
-
}
|
|
18258
|
-
});
|
|
18259
18269
|
const ok = () => {
|
|
18260
18270
|
emit("selectUrl", url.value, aspectRatio.value);
|
|
18261
18271
|
modalHandle.close();
|
|
@@ -18278,24 +18288,27 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18278
18288
|
vue.withDirectives(vue.createElementVNode("div", _hoisted_2$3, null, 512), [
|
|
18279
18289
|
[vue.unref(bluesea.vT), { key: "pb.modal.youtube.preview" }]
|
|
18280
18290
|
]),
|
|
18281
|
-
vue.createElementVNode("div",
|
|
18282
|
-
|
|
18283
|
-
ref: previewContainer,
|
|
18284
|
-
class: "preview-container border-w-1 border border-gray",
|
|
18285
|
-
style: vue.normalizeStyle({ minHeight: url.value ? void 0 : "300px", overflow: "hidden" })
|
|
18286
|
-
}, [
|
|
18287
|
-
url.value ? (vue.openBlock(), vue.createBlock(vue.unref(YouTube), {
|
|
18291
|
+
vue.createElementVNode("div", _hoisted_3$3, [
|
|
18292
|
+
embedSrc.value ? (vue.openBlock(), vue.createElementBlock("iframe", {
|
|
18288
18293
|
key: 0,
|
|
18289
|
-
|
|
18290
|
-
|
|
18291
|
-
|
|
18292
|
-
|
|
18293
|
-
|
|
18294
|
-
|
|
18294
|
+
src: embedSrc.value,
|
|
18295
|
+
style: vue.normalizeStyle(iframeStyle.value),
|
|
18296
|
+
frameborder: "0",
|
|
18297
|
+
referrerpolicy: "strict-origin-when-cross-origin",
|
|
18298
|
+
allow: "accelerometer; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
18299
|
+
allowfullscreen: "",
|
|
18300
|
+
loading: "lazy",
|
|
18301
|
+
title: "YouTube preview"
|
|
18302
|
+
}, null, 12, _hoisted_4$2)) : (vue.openBlock(), vue.createElementBlock("div", {
|
|
18303
|
+
key: 1,
|
|
18304
|
+
class: "preview-empty border-w-1 border border-gray",
|
|
18305
|
+
style: vue.normalizeStyle({ aspectRatio: aspectRatioCss.value })
|
|
18306
|
+
}, null, 4))
|
|
18307
|
+
])
|
|
18295
18308
|
])
|
|
18296
18309
|
]),
|
|
18297
18310
|
buttons: vue.withCtx(() => [
|
|
18298
|
-
vue.createElementVNode("div",
|
|
18311
|
+
vue.createElementVNode("div", _hoisted_5$2, [
|
|
18299
18312
|
vue.withDirectives(vue.createElementVNode("button", {
|
|
18300
18313
|
class: "mr-4",
|
|
18301
18314
|
onClick: ok
|
|
@@ -18309,7 +18322,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
18309
18322
|
};
|
|
18310
18323
|
}
|
|
18311
18324
|
});
|
|
18312
|
-
const PbYoutubeModal = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-
|
|
18325
|
+
const PbYoutubeModal = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-b8f2a18d"]]);
|
|
18313
18326
|
const PbYoutubeModal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
18314
18327
|
__proto__: null,
|
|
18315
18328
|
default: PbYoutubeModal
|
|
@@ -18667,7 +18680,7 @@ ${_html.tags}` : "";
|
|
|
18667
18680
|
exports2.PbIframeWidget = _sfc_main$5$1;
|
|
18668
18681
|
exports2.PbMediaWidget = _sfc_main$8$1;
|
|
18669
18682
|
exports2.PbTextWidget = _sfc_main$7$1;
|
|
18670
|
-
exports2.PbYoutubeWidget =
|
|
18683
|
+
exports2.PbYoutubeWidget = _sfc_main$4$1;
|
|
18671
18684
|
exports2.ROOT_TYPE = ROOT_TYPE$1;
|
|
18672
18685
|
exports2.RootPart = RootPart;
|
|
18673
18686
|
exports2.SECTION_TYPE = SECTION_TYPE$1;
|