unika-components 1.2.9 → 1.3.0
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/index.d.ts +2 -0
- package/dist/src/components/UniBarrage/UniBarrage.vue.d.ts +1 -0
- package/dist/src/components/UniGuestAiWeddingPoster/UniGuestAiWeddingPoster.vue.d.ts +95 -0
- package/dist/src/components/UniGuestAiWeddingPoster/index.d.ts +4 -0
- package/dist/src/components/UniImage/UniImage.vue.d.ts +17 -11
- package/dist/src/components/WorkRender/WorkRender.vue.d.ts +2 -0
- package/dist/src/composables/guestPosterHelpers.d.ts +16 -0
- package/dist/src/constants/guestAIWeddingPosterDemo.d.ts +11 -0
- package/dist/src/constants/guestAIWeddingPosterProps.d.ts +63 -0
- package/dist/src/constants/guestAIWeddingPosterSchema.d.ts +20 -0
- package/dist/src/constants/guestAIWeddingPosterTypes.d.ts +221 -0
- package/dist/src/constants/httpGuestPosterService.d.ts +8 -0
- package/dist/src/constants/mockGuestPosterService.d.ts +13 -0
- package/dist/src/constants/toolbarProps.d.ts +2 -0
- package/dist/src/defaultProps.d.ts +1 -0
- package/dist/src/index.d.ts +9 -1
- package/dist/src/utils/optimizeImage.d.ts +13 -0
- package/dist/tests/unit/GuestAIWeddingPoster.spec.d.ts +1 -0
- package/dist/unika-components.css +7272 -6857
- package/dist/unika-components.esm.js +1907 -505
- package/dist/unika-components.umd.js +1947 -529
- package/package.json +3 -2
|
@@ -15,7 +15,7 @@ function px2rem(px) {
|
|
|
15
15
|
return px;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
var script$
|
|
18
|
+
var script$t = defineComponent({
|
|
19
19
|
name: 'UniText',
|
|
20
20
|
props: {
|
|
21
21
|
element: {
|
|
@@ -118,9 +118,9 @@ var script$s = defineComponent({
|
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
const _hoisted_1$
|
|
121
|
+
const _hoisted_1$o = ["data-id", "data-pid", "data-type", "sign", "signsort", "layername"];
|
|
122
122
|
|
|
123
|
-
function render$
|
|
123
|
+
function render$p(_ctx, _cache, $props, $setup, $data, $options) {
|
|
124
124
|
return (_ctx.element && (!_ctx.element.properties || _ctx.element.properties.visible !== false))
|
|
125
125
|
? (openBlock(), createElementBlock("div", {
|
|
126
126
|
key: 0,
|
|
@@ -151,30 +151,96 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
151
151
|
style: normalizeStyle(_ctx.textEditorStyle)
|
|
152
152
|
}, toDisplayString(_ctx.element.textContent), 5 /* TEXT, STYLE */)
|
|
153
153
|
], 4 /* STYLE */)
|
|
154
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
154
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$o))
|
|
155
155
|
: createCommentVNode("v-if", true)
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
script$
|
|
159
|
-
script$
|
|
158
|
+
script$t.render = render$p;
|
|
159
|
+
script$t.__file = "src/components/UniText/UniText.vue";
|
|
160
160
|
|
|
161
|
-
script$
|
|
162
|
-
app.component(script$
|
|
161
|
+
script$t.install = (app) => {
|
|
162
|
+
app.component(script$t.name, script$t);
|
|
163
163
|
};
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
// 阿里云 OSS 图片处理:按显示尺寸缩放并转 webp
|
|
166
|
+
// 只处理自家 OSS 域名(第三方地址不支持 x-oss-process 参数)
|
|
167
|
+
const OSS_HOST_REG = /^(https?:)?\/\/(h5cdn\.unika\.cc|unika-static-dev\.unika\.cc)\//i;
|
|
168
|
+
// gif 转 webp 会丢失动画,svg 是矢量图
|
|
169
|
+
const SKIP_EXT_REG = /\.(gif|svg)$/i;
|
|
170
|
+
// 宽度分档,便于 CDN 缓存命中
|
|
171
|
+
const WIDTH_BUCKETS = [375, 750, 1080];
|
|
172
|
+
// 设计稿宽 375,按 2 倍屏输出
|
|
173
|
+
const DPR = 2;
|
|
174
|
+
const DESIGN_PX_PER_REM = 37.5;
|
|
175
|
+
/**
|
|
176
|
+
* 元素宽度转为设计稿 px,h5-server 渲染前会把数字转成 rem 字符串
|
|
177
|
+
*/
|
|
178
|
+
function toDesignPx(value) {
|
|
179
|
+
if (typeof value === 'number')
|
|
180
|
+
return value;
|
|
181
|
+
if (typeof value !== 'string')
|
|
182
|
+
return 0;
|
|
183
|
+
const num = parseFloat(value);
|
|
184
|
+
if (Number.isNaN(num))
|
|
185
|
+
return 0;
|
|
186
|
+
if (value.trim().endsWith('rem'))
|
|
187
|
+
return num * DESIGN_PX_PER_REM;
|
|
188
|
+
return num;
|
|
189
|
+
}
|
|
190
|
+
function pickWidth(designWidth) {
|
|
191
|
+
const target = designWidth > 0 ? designWidth * DPR : 750;
|
|
192
|
+
return WIDTH_BUCKETS.find(w => w >= target) || WIDTH_BUCKETS[WIDTH_BUCKETS.length - 1];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @param src 图片地址
|
|
196
|
+
* @param designWidth 显示宽度(设计稿 px),未知时传 0
|
|
197
|
+
*/
|
|
198
|
+
function optimizeImageUrl(src, designWidth = 0) {
|
|
199
|
+
if (!src || typeof src !== 'string')
|
|
200
|
+
return src;
|
|
201
|
+
if (!OSS_HOST_REG.test(src) || src.includes('x-oss-process'))
|
|
202
|
+
return src;
|
|
203
|
+
const path = src.split(/[?#]/)[0];
|
|
204
|
+
if (SKIP_EXT_REG.test(path))
|
|
205
|
+
return src;
|
|
206
|
+
const hashIndex = src.indexOf('#');
|
|
207
|
+
const base = hashIndex >= 0 ? src.slice(0, hashIndex) : src;
|
|
208
|
+
const hash = hashIndex >= 0 ? src.slice(hashIndex) : '';
|
|
209
|
+
const sep = base.includes('?') ? '&' : '?';
|
|
210
|
+
const width = pickWidth(designWidth);
|
|
211
|
+
return `${base}${sep}x-oss-process=image/resize,w_${width},limit_1/quality,q_80/format,webp${hash}`;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 处理 CSS 中的 url(...),如页面背景 `url("https://...")`
|
|
215
|
+
*/
|
|
216
|
+
function optimizeCssImageUrl(value, designWidth = 0) {
|
|
217
|
+
if (!value || typeof value !== 'string')
|
|
218
|
+
return value;
|
|
219
|
+
return value.replace(/url\(\s*(['"]?)([^'")]+)\1\s*\)/g, (_m, quote, url) => `url(${quote}${optimizeImageUrl(url, designWidth)}${quote})`);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
var script$s = defineComponent({
|
|
166
223
|
name: 'uni-image',
|
|
167
224
|
props: {
|
|
168
225
|
element: {
|
|
169
226
|
type: Object,
|
|
170
227
|
required: true
|
|
171
228
|
},
|
|
229
|
+
// WorkRender 线上渲染传 'prd',此时才走 OSS 图片压缩;编辑器画布不传
|
|
230
|
+
env: {
|
|
231
|
+
type: String,
|
|
232
|
+
default: ''
|
|
233
|
+
},
|
|
172
234
|
},
|
|
173
235
|
emits: ['trigger'],
|
|
174
236
|
setup(props, { emit }) {
|
|
175
237
|
// 计算属性
|
|
176
238
|
const properties = computed(() => props.element.properties || {});
|
|
177
239
|
const css = computed(() => props.element.css || {});
|
|
240
|
+
const displaySrc = computed(() => {
|
|
241
|
+
const src = properties.value.src;
|
|
242
|
+
return props.env === 'prd' ? optimizeImageUrl(src, toDesignPx(css.value.width)) : src;
|
|
243
|
+
});
|
|
178
244
|
// 容器样式
|
|
179
245
|
const containerStyle = computed(() => {
|
|
180
246
|
const flipH = css.value.flipHorizontal ? -1 : 1;
|
|
@@ -186,7 +252,8 @@ var script$r = defineComponent({
|
|
|
186
252
|
top: px2rem(css.value.top),
|
|
187
253
|
width: px2rem(css.value.width),
|
|
188
254
|
height: px2rem(css.value.height),
|
|
189
|
-
transform: `${rotate} ${scale}
|
|
255
|
+
transform: `${rotate} ${scale}`,
|
|
256
|
+
'--img-bg-pos': css.value.backgroundPosition || '50% 50%'
|
|
190
257
|
};
|
|
191
258
|
});
|
|
192
259
|
// 图片样式
|
|
@@ -200,37 +267,22 @@ var script$r = defineComponent({
|
|
|
200
267
|
? `${px2rem(properties.value.shadowX)} ${px2rem(properties.value.shadowY)} ${px2rem(properties.value.shadowBlur)} ${properties.value.shadowColor}`
|
|
201
268
|
: 'none'
|
|
202
269
|
}));
|
|
203
|
-
//
|
|
270
|
+
// 背景图:cover 保持比例,backgroundPosition 只做框内平移
|
|
204
271
|
const bgImageStyle = computed(() => ({
|
|
205
|
-
backgroundImage: `url(${
|
|
272
|
+
backgroundImage: `url(${displaySrc.value})`,
|
|
206
273
|
backgroundSize: 'cover',
|
|
207
|
-
backgroundPosition: '50% 50%'
|
|
274
|
+
backgroundPosition: css.value.backgroundPosition || '50% 50%'
|
|
275
|
+
}));
|
|
276
|
+
// 与编辑器 .ele-bg-wrap 一致:cover + 框内平移
|
|
277
|
+
const imgTagStyle = computed(() => ({
|
|
278
|
+
width: '100%',
|
|
279
|
+
height: '100%',
|
|
280
|
+
position: 'absolute',
|
|
281
|
+
left: '0',
|
|
282
|
+
top: '0',
|
|
283
|
+
objectFit: 'cover',
|
|
284
|
+
objectPosition: css.value.backgroundPosition || '50% 50%'
|
|
208
285
|
}));
|
|
209
|
-
// img标签样式(用于非背景图模式)
|
|
210
|
-
const imgTagStyle = computed(() => {
|
|
211
|
-
const aspectRatio = properties.value.realW || 0 / (properties.value.realH || 1);
|
|
212
|
-
const containerWidth = css.value.width;
|
|
213
|
-
const containerHeight = css.value.height;
|
|
214
|
-
// 保持图片原始比例
|
|
215
|
-
if (containerWidth / containerHeight > aspectRatio) {
|
|
216
|
-
return {
|
|
217
|
-
height: '100%',
|
|
218
|
-
width: 'auto',
|
|
219
|
-
position: 'absolute',
|
|
220
|
-
left: '50%',
|
|
221
|
-
transform: 'translateX(-50%)'
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
return {
|
|
226
|
-
width: '100%',
|
|
227
|
-
height: 'auto',
|
|
228
|
-
position: 'absolute',
|
|
229
|
-
top: '50%',
|
|
230
|
-
transform: 'translateY(-50%)'
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
286
|
// 遮罩样式
|
|
235
287
|
const maskStyle = computed(() => ({
|
|
236
288
|
'-webkit-mask-box-image-source': properties.value.maskBoxImageSource
|
|
@@ -274,6 +326,7 @@ var script$r = defineComponent({
|
|
|
274
326
|
};
|
|
275
327
|
return {
|
|
276
328
|
properties,
|
|
329
|
+
displaySrc,
|
|
277
330
|
containerStyle,
|
|
278
331
|
imageStyle,
|
|
279
332
|
bgImageStyle,
|
|
@@ -286,10 +339,10 @@ var script$r = defineComponent({
|
|
|
286
339
|
}
|
|
287
340
|
});
|
|
288
341
|
|
|
289
|
-
const _hoisted_1$
|
|
290
|
-
const _hoisted_2$
|
|
342
|
+
const _hoisted_1$n = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort", "imgmattinginfo"];
|
|
343
|
+
const _hoisted_2$k = ["src"];
|
|
291
344
|
|
|
292
|
-
function render$
|
|
345
|
+
function render$o(_ctx, _cache, $props, $setup, $data, $options) {
|
|
293
346
|
return (openBlock(), createElementBlock("div", {
|
|
294
347
|
class: "ele-img eles",
|
|
295
348
|
"data-id": _ctx.element.id,
|
|
@@ -324,11 +377,12 @@ function render$n(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
324
377
|
style: normalizeStyle(_ctx.imageStyle)
|
|
325
378
|
}, [
|
|
326
379
|
createElementVNode("img", {
|
|
327
|
-
src: _ctx.
|
|
380
|
+
src: _ctx.displaySrc,
|
|
328
381
|
alt: "image",
|
|
382
|
+
loading: "lazy",
|
|
329
383
|
class: "ele-image",
|
|
330
384
|
style: normalizeStyle(_ctx.imgTagStyle)
|
|
331
|
-
}, null, 12 /* STYLE, PROPS */, _hoisted_2$
|
|
385
|
+
}, null, 12 /* STYLE, PROPS */, _hoisted_2$k)
|
|
332
386
|
], 4 /* STYLE */))
|
|
333
387
|
: (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
334
388
|
createCommentVNode(" 图片展示方式2:使用背景图 "),
|
|
@@ -344,17 +398,17 @@ function render$n(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
344
398
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
345
399
|
], 4 /* STYLE */)
|
|
346
400
|
], 4 /* STYLE */)
|
|
347
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
401
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$n))
|
|
348
402
|
}
|
|
349
403
|
|
|
350
|
-
script$
|
|
351
|
-
script$
|
|
404
|
+
script$s.render = render$o;
|
|
405
|
+
script$s.__file = "src/components/UniImage/UniImage.vue";
|
|
352
406
|
|
|
353
|
-
script$
|
|
354
|
-
app.component(script$
|
|
407
|
+
script$s.install = (app) => {
|
|
408
|
+
app.component(script$s.name, script$s);
|
|
355
409
|
};
|
|
356
410
|
|
|
357
|
-
var script$
|
|
411
|
+
var script$r = defineComponent({
|
|
358
412
|
name: 'uni-shape',
|
|
359
413
|
props: {
|
|
360
414
|
element: {
|
|
@@ -505,12 +559,12 @@ var script$q = defineComponent({
|
|
|
505
559
|
}
|
|
506
560
|
});
|
|
507
561
|
|
|
508
|
-
const _hoisted_1$
|
|
509
|
-
const _hoisted_2$
|
|
510
|
-
const _hoisted_3$
|
|
511
|
-
const _hoisted_4$
|
|
562
|
+
const _hoisted_1$m = ["data-id"];
|
|
563
|
+
const _hoisted_2$j = ["innerHTML"];
|
|
564
|
+
const _hoisted_3$i = /*#__PURE__*/createElementVNode("div", { class: "svg-loading" }, "Loading...", -1 /* HOISTED */);
|
|
565
|
+
const _hoisted_4$e = { class: "svg-error" };
|
|
512
566
|
|
|
513
|
-
function render$
|
|
567
|
+
function render$n(_ctx, _cache, $props, $setup, $data, $options) {
|
|
514
568
|
return (openBlock(), createElementBlock("div", {
|
|
515
569
|
class: "ele-shape eles",
|
|
516
570
|
"data-id": _ctx.element.id,
|
|
@@ -535,16 +589,16 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
535
589
|
innerHTML: _ctx.processedSvg,
|
|
536
590
|
class: "svg-container",
|
|
537
591
|
style: {"width":"100%","height":"100%"}
|
|
538
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
592
|
+
}, null, 8 /* PROPS */, _hoisted_2$j))
|
|
539
593
|
: (_ctx.isLoading)
|
|
540
594
|
? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
541
595
|
createCommentVNode(" 加载状态 "),
|
|
542
|
-
_hoisted_3$
|
|
596
|
+
_hoisted_3$i
|
|
543
597
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
544
598
|
: (_ctx.loadError)
|
|
545
599
|
? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
546
600
|
createCommentVNode(" 错误状态 "),
|
|
547
|
-
createElementVNode("div", _hoisted_4$
|
|
601
|
+
createElementVNode("div", _hoisted_4$e, [
|
|
548
602
|
renderSlot(_ctx.$slots, "error", {
|
|
549
603
|
src: _ctx.properties.src
|
|
550
604
|
}, () => [
|
|
@@ -555,14 +609,14 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
555
609
|
: createCommentVNode("v-if", true)
|
|
556
610
|
], 4 /* STYLE */)
|
|
557
611
|
], 4 /* STYLE */)
|
|
558
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
612
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$m))
|
|
559
613
|
}
|
|
560
614
|
|
|
561
|
-
script$
|
|
562
|
-
script$
|
|
615
|
+
script$r.render = render$n;
|
|
616
|
+
script$r.__file = "src/components/UniShape/UniShape.vue";
|
|
563
617
|
|
|
564
|
-
script$
|
|
565
|
-
app.component(script$
|
|
618
|
+
script$r.install = (app) => {
|
|
619
|
+
app.component(script$r.name, script$r);
|
|
566
620
|
};
|
|
567
621
|
|
|
568
622
|
const musicState = ref({
|
|
@@ -806,7 +860,7 @@ const useMusicManager = () => {
|
|
|
806
860
|
};
|
|
807
861
|
};
|
|
808
862
|
|
|
809
|
-
var script$
|
|
863
|
+
var script$q = defineComponent({
|
|
810
864
|
name: 'uni-music',
|
|
811
865
|
props: {
|
|
812
866
|
musicData: {
|
|
@@ -876,19 +930,19 @@ var script$p = defineComponent({
|
|
|
876
930
|
}
|
|
877
931
|
});
|
|
878
932
|
|
|
879
|
-
const _hoisted_1$
|
|
880
|
-
const _hoisted_2$
|
|
881
|
-
const _hoisted_3$
|
|
933
|
+
const _hoisted_1$l = { id: "audio" };
|
|
934
|
+
const _hoisted_2$i = ["src"];
|
|
935
|
+
const _hoisted_3$h = {
|
|
882
936
|
key: 1,
|
|
883
937
|
class: "iconfont"
|
|
884
938
|
};
|
|
885
|
-
const _hoisted_4$
|
|
886
|
-
const _hoisted_5$
|
|
939
|
+
const _hoisted_4$d = ["src"];
|
|
940
|
+
const _hoisted_5$c = /*#__PURE__*/createElementVNode("div", { class: "icon-cancel" }, [
|
|
887
941
|
/*#__PURE__*/createElementVNode("div", { class: "icon-h" })
|
|
888
942
|
], -1 /* HOISTED */);
|
|
889
943
|
|
|
890
|
-
function render$
|
|
891
|
-
return (openBlock(), createElementBlock("div", _hoisted_1$
|
|
944
|
+
function render$m(_ctx, _cache, $props, $setup, $data, $options) {
|
|
945
|
+
return (openBlock(), createElementBlock("div", _hoisted_1$l, [
|
|
892
946
|
createElementVNode("div", {
|
|
893
947
|
class: normalizeClass(["audio", { 'a-border': _ctx.showBorder, 'mrotate': _ctx.localIsPlaying }]),
|
|
894
948
|
style: normalizeStyle({ background: _ctx.bgColor }),
|
|
@@ -902,8 +956,8 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
902
956
|
src: _ctx.playIconUrl,
|
|
903
957
|
class: "music-icon",
|
|
904
958
|
alt: "หยุดชั่วคราว"
|
|
905
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
906
|
-
: (openBlock(), createElementBlock("span", _hoisted_3$
|
|
959
|
+
}, null, 8 /* PROPS */, _hoisted_2$i))
|
|
960
|
+
: (openBlock(), createElementBlock("span", _hoisted_3$h, "❚❚"))
|
|
907
961
|
], 64 /* STABLE_FRAGMENT */))
|
|
908
962
|
: (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
909
963
|
(_ctx.playIconUrl)
|
|
@@ -912,22 +966,22 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
912
966
|
src: _ctx.playIconUrl,
|
|
913
967
|
class: "music-icon",
|
|
914
968
|
alt: "กำลังเล่น"
|
|
915
|
-
}, null, 8 /* PROPS */, _hoisted_4$
|
|
969
|
+
}, null, 8 /* PROPS */, _hoisted_4$d))
|
|
916
970
|
: createCommentVNode("v-if", true),
|
|
917
|
-
_hoisted_5$
|
|
971
|
+
_hoisted_5$c
|
|
918
972
|
], 64 /* STABLE_FRAGMENT */))
|
|
919
973
|
], 6 /* CLASS, STYLE */)
|
|
920
974
|
]))
|
|
921
975
|
}
|
|
922
976
|
|
|
923
|
-
script$
|
|
924
|
-
script$
|
|
977
|
+
script$q.render = render$m;
|
|
978
|
+
script$q.__file = "src/components/UniMusic/UniMusic.vue";
|
|
925
979
|
|
|
926
|
-
script$
|
|
927
|
-
app.component(script$
|
|
980
|
+
script$q.install = (app) => {
|
|
981
|
+
app.component(script$q.name, script$q);
|
|
928
982
|
};
|
|
929
983
|
|
|
930
|
-
var script$
|
|
984
|
+
var script$p = defineComponent({
|
|
931
985
|
name: 'uni-video',
|
|
932
986
|
props: {
|
|
933
987
|
element: {
|
|
@@ -1000,14 +1054,14 @@ var script$o = defineComponent({
|
|
|
1000
1054
|
}
|
|
1001
1055
|
});
|
|
1002
1056
|
|
|
1003
|
-
const _hoisted_1$
|
|
1057
|
+
const _hoisted_1$k = {
|
|
1004
1058
|
key: 0,
|
|
1005
1059
|
class: "video-container"
|
|
1006
1060
|
};
|
|
1007
|
-
const _hoisted_2$
|
|
1008
|
-
const _hoisted_3$
|
|
1061
|
+
const _hoisted_2$h = ["src"];
|
|
1062
|
+
const _hoisted_3$g = ["src"];
|
|
1009
1063
|
|
|
1010
|
-
function render$
|
|
1064
|
+
function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1011
1065
|
return (openBlock(), createElementBlock("div", {
|
|
1012
1066
|
class: "element-video eles",
|
|
1013
1067
|
style: normalizeStyle(_ctx.containerStyle)
|
|
@@ -1020,7 +1074,7 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1020
1074
|
})
|
|
1021
1075
|
}, [
|
|
1022
1076
|
(_ctx.isPlaying)
|
|
1023
|
-
? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
1077
|
+
? (openBlock(), createElementBlock("div", _hoisted_1$k, [
|
|
1024
1078
|
createElementVNode("iframe", {
|
|
1025
1079
|
src: _ctx.youtubeEmbedUrl,
|
|
1026
1080
|
type: "text/html",
|
|
@@ -1028,7 +1082,7 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1028
1082
|
allowfullscreen: "",
|
|
1029
1083
|
scrolling: "no",
|
|
1030
1084
|
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
1031
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
1085
|
+
}, null, 8 /* PROPS */, _hoisted_2$h)
|
|
1032
1086
|
]))
|
|
1033
1087
|
: (openBlock(), createElementBlock("div", {
|
|
1034
1088
|
key: 1,
|
|
@@ -1040,20 +1094,20 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1040
1094
|
src: _ctx.element.properties.src,
|
|
1041
1095
|
alt: "Play button",
|
|
1042
1096
|
class: "play-btn"
|
|
1043
|
-
}, null, 8 /* PROPS */, _hoisted_3$
|
|
1097
|
+
}, null, 8 /* PROPS */, _hoisted_3$g)
|
|
1044
1098
|
], 4 /* STYLE */))
|
|
1045
1099
|
], 4 /* STYLE */)
|
|
1046
1100
|
], 4 /* STYLE */))
|
|
1047
1101
|
}
|
|
1048
1102
|
|
|
1049
|
-
script$
|
|
1050
|
-
script$
|
|
1103
|
+
script$p.render = render$l;
|
|
1104
|
+
script$p.__file = "src/components/UniVideo/UniVideo.vue";
|
|
1051
1105
|
|
|
1052
|
-
script$
|
|
1053
|
-
app.component(script$
|
|
1106
|
+
script$p.install = (app) => {
|
|
1107
|
+
app.component(script$p.name, script$p);
|
|
1054
1108
|
};
|
|
1055
1109
|
|
|
1056
|
-
var script$
|
|
1110
|
+
var script$o = defineComponent({
|
|
1057
1111
|
name: 'uni-calendar',
|
|
1058
1112
|
props: {
|
|
1059
1113
|
element: {
|
|
@@ -1169,33 +1223,33 @@ var script$n = defineComponent({
|
|
|
1169
1223
|
}
|
|
1170
1224
|
});
|
|
1171
1225
|
|
|
1172
|
-
const _hoisted_1$
|
|
1173
|
-
const _hoisted_2$
|
|
1226
|
+
const _hoisted_1$j = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
1227
|
+
const _hoisted_2$g = {
|
|
1174
1228
|
key: 0,
|
|
1175
1229
|
class: "can-wrap"
|
|
1176
1230
|
};
|
|
1177
|
-
const _hoisted_3$
|
|
1178
|
-
const _hoisted_4$
|
|
1179
|
-
const _hoisted_5$
|
|
1180
|
-
const _hoisted_6$
|
|
1231
|
+
const _hoisted_3$f = { class: "can-top" };
|
|
1232
|
+
const _hoisted_4$c = { class: "can-main" };
|
|
1233
|
+
const _hoisted_5$b = { class: "can-date" };
|
|
1234
|
+
const _hoisted_6$9 = {
|
|
1181
1235
|
key: 1,
|
|
1182
1236
|
class: "can-wrap2"
|
|
1183
1237
|
};
|
|
1184
|
-
const _hoisted_7$
|
|
1185
|
-
const _hoisted_8$
|
|
1186
|
-
const _hoisted_9$
|
|
1187
|
-
const _hoisted_10$
|
|
1188
|
-
const _hoisted_11$
|
|
1189
|
-
const _hoisted_12$
|
|
1238
|
+
const _hoisted_7$8 = { class: "can-top" };
|
|
1239
|
+
const _hoisted_8$5 = /*#__PURE__*/createElementVNode("span", null, "/", -1 /* HOISTED */);
|
|
1240
|
+
const _hoisted_9$5 = { class: "can-main" };
|
|
1241
|
+
const _hoisted_10$5 = { class: "can-week" };
|
|
1242
|
+
const _hoisted_11$5 = { class: "can-date" };
|
|
1243
|
+
const _hoisted_12$5 = {
|
|
1190
1244
|
key: 2,
|
|
1191
1245
|
class: "can-wrap3"
|
|
1192
1246
|
};
|
|
1193
|
-
const _hoisted_13$
|
|
1194
|
-
const _hoisted_14$
|
|
1195
|
-
const _hoisted_15$
|
|
1196
|
-
const _hoisted_16$
|
|
1247
|
+
const _hoisted_13$5 = { class: "can-top" };
|
|
1248
|
+
const _hoisted_14$5 = /*#__PURE__*/createElementVNode("span", null, "/", -1 /* HOISTED */);
|
|
1249
|
+
const _hoisted_15$5 = { class: "can-main" };
|
|
1250
|
+
const _hoisted_16$5 = { class: "can-date" };
|
|
1197
1251
|
|
|
1198
|
-
function render$
|
|
1252
|
+
function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1199
1253
|
return (openBlock(), createElementBlock("div", {
|
|
1200
1254
|
class: "ele-calendar eles",
|
|
1201
1255
|
"data-id": _ctx.element.id,
|
|
@@ -1215,8 +1269,8 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1215
1269
|
style: normalizeStyle(_ctx.aniWrapStyle)
|
|
1216
1270
|
}, [
|
|
1217
1271
|
(_ctx.element.kind === 1)
|
|
1218
|
-
? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
1219
|
-
createElementVNode("div", _hoisted_3$
|
|
1272
|
+
? (openBlock(), createElementBlock("div", _hoisted_2$g, [
|
|
1273
|
+
createElementVNode("div", _hoisted_3$f, [
|
|
1220
1274
|
createElementVNode("div", {
|
|
1221
1275
|
class: "can-left",
|
|
1222
1276
|
style: normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1229,7 +1283,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1229
1283
|
createTextVNode(" " + toDisplayString(_ctx.month), 1 /* TEXT */)
|
|
1230
1284
|
], 4 /* STYLE */)
|
|
1231
1285
|
]),
|
|
1232
|
-
createElementVNode("div", _hoisted_4$
|
|
1286
|
+
createElementVNode("div", _hoisted_4$c, [
|
|
1233
1287
|
createElementVNode("div", {
|
|
1234
1288
|
class: "can-week",
|
|
1235
1289
|
style: normalizeStyle({ backgroundColor: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1238,7 +1292,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1238
1292
|
return (openBlock(), createElementBlock("span", { key: day }, toDisplayString(day), 1 /* TEXT */))
|
|
1239
1293
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1240
1294
|
], 4 /* STYLE */),
|
|
1241
|
-
createElementVNode("div", _hoisted_5$
|
|
1295
|
+
createElementVNode("div", _hoisted_5$b, [
|
|
1242
1296
|
createElementVNode("ul", null, [
|
|
1243
1297
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.days, (day, index) => {
|
|
1244
1298
|
return (openBlock(), createElementBlock("li", {
|
|
@@ -1267,19 +1321,19 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1267
1321
|
]))
|
|
1268
1322
|
: createCommentVNode("v-if", true),
|
|
1269
1323
|
(_ctx.element.kind === 2)
|
|
1270
|
-
? (openBlock(), createElementBlock("div", _hoisted_6$
|
|
1271
|
-
createElementVNode("div", _hoisted_7$
|
|
1324
|
+
? (openBlock(), createElementBlock("div", _hoisted_6$9, [
|
|
1325
|
+
createElementVNode("div", _hoisted_7$8, [
|
|
1272
1326
|
createElementVNode("div", {
|
|
1273
1327
|
class: "can-size",
|
|
1274
1328
|
style: normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1275
1329
|
}, [
|
|
1276
1330
|
createTextVNode(toDisplayString(_ctx.currentDay) + " ", 1 /* TEXT */),
|
|
1277
|
-
_hoisted_8$
|
|
1331
|
+
_hoisted_8$5,
|
|
1278
1332
|
createTextVNode(" " + toDisplayString(_ctx.currentMonth), 1 /* TEXT */)
|
|
1279
1333
|
], 4 /* STYLE */)
|
|
1280
1334
|
]),
|
|
1281
|
-
createElementVNode("div", _hoisted_9$
|
|
1282
|
-
createElementVNode("div", _hoisted_10$
|
|
1335
|
+
createElementVNode("div", _hoisted_9$5, [
|
|
1336
|
+
createElementVNode("div", _hoisted_10$5, [
|
|
1283
1337
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.weekDays, (day) => {
|
|
1284
1338
|
return (openBlock(), createElementBlock("span", {
|
|
1285
1339
|
key: day,
|
|
@@ -1287,7 +1341,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1287
1341
|
}, toDisplayString(day), 5 /* TEXT, STYLE */))
|
|
1288
1342
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1289
1343
|
]),
|
|
1290
|
-
createElementVNode("div", _hoisted_11$
|
|
1344
|
+
createElementVNode("div", _hoisted_11$5, [
|
|
1291
1345
|
createElementVNode("div", {
|
|
1292
1346
|
class: "can-year",
|
|
1293
1347
|
style: normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1320,14 +1374,14 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1320
1374
|
]))
|
|
1321
1375
|
: createCommentVNode("v-if", true),
|
|
1322
1376
|
(_ctx.element.kind === 3)
|
|
1323
|
-
? (openBlock(), createElementBlock("div", _hoisted_12$
|
|
1324
|
-
createElementVNode("div", _hoisted_13$
|
|
1377
|
+
? (openBlock(), createElementBlock("div", _hoisted_12$5, [
|
|
1378
|
+
createElementVNode("div", _hoisted_13$5, [
|
|
1325
1379
|
createElementVNode("div", {
|
|
1326
1380
|
class: "can-size",
|
|
1327
1381
|
style: normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1328
1382
|
}, [
|
|
1329
1383
|
createTextVNode(toDisplayString(_ctx.currentDay) + " ", 1 /* TEXT */),
|
|
1330
|
-
_hoisted_14$
|
|
1384
|
+
_hoisted_14$5,
|
|
1331
1385
|
createTextVNode(" " + toDisplayString(_ctx.currentMonth), 1 /* TEXT */)
|
|
1332
1386
|
], 4 /* STYLE */),
|
|
1333
1387
|
createElementVNode("div", {
|
|
@@ -1335,7 +1389,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1335
1389
|
style: normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1336
1390
|
}, "-" + toDisplayString(_ctx.currentYear) + "-", 5 /* TEXT, STYLE */)
|
|
1337
1391
|
]),
|
|
1338
|
-
createElementVNode("div", _hoisted_15$
|
|
1392
|
+
createElementVNode("div", _hoisted_15$5, [
|
|
1339
1393
|
createElementVNode("div", {
|
|
1340
1394
|
class: "can-week",
|
|
1341
1395
|
style: normalizeStyle({ borderColor: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1347,7 +1401,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1347
1401
|
}, toDisplayString(day), 5 /* TEXT, STYLE */))
|
|
1348
1402
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1349
1403
|
], 4 /* STYLE */),
|
|
1350
|
-
createElementVNode("div", _hoisted_16$
|
|
1404
|
+
createElementVNode("div", _hoisted_16$5, [
|
|
1351
1405
|
createElementVNode("ul", null, [
|
|
1352
1406
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.days, (day, index) => {
|
|
1353
1407
|
return (openBlock(), createElementBlock("li", {
|
|
@@ -1376,17 +1430,17 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1376
1430
|
]))
|
|
1377
1431
|
: createCommentVNode("v-if", true)
|
|
1378
1432
|
], 4 /* STYLE */)
|
|
1379
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
1433
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$j))
|
|
1380
1434
|
}
|
|
1381
1435
|
|
|
1382
|
-
script$
|
|
1383
|
-
script$
|
|
1436
|
+
script$o.render = render$k;
|
|
1437
|
+
script$o.__file = "src/components/UniCalendar/UniCalendar.vue";
|
|
1384
1438
|
|
|
1385
|
-
script$
|
|
1386
|
-
app.component(script$
|
|
1439
|
+
script$o.install = (app) => {
|
|
1440
|
+
app.component(script$o.name, script$o);
|
|
1387
1441
|
};
|
|
1388
1442
|
|
|
1389
|
-
var script$
|
|
1443
|
+
var script$n = defineComponent({
|
|
1390
1444
|
name: 'uni-countdown',
|
|
1391
1445
|
props: {
|
|
1392
1446
|
element: {
|
|
@@ -1677,30 +1731,30 @@ var script$m = defineComponent({
|
|
|
1677
1731
|
}
|
|
1678
1732
|
});
|
|
1679
1733
|
|
|
1680
|
-
const _hoisted_1$
|
|
1681
|
-
const _hoisted_2$
|
|
1682
|
-
const _hoisted_3$
|
|
1683
|
-
const _hoisted_4$
|
|
1684
|
-
const _hoisted_5$
|
|
1685
|
-
const _hoisted_6$
|
|
1686
|
-
const _hoisted_7$
|
|
1687
|
-
const _hoisted_8$
|
|
1688
|
-
const _hoisted_9$
|
|
1689
|
-
const _hoisted_10$
|
|
1690
|
-
const _hoisted_11$
|
|
1691
|
-
const _hoisted_12$
|
|
1692
|
-
const _hoisted_13$
|
|
1693
|
-
const _hoisted_14$
|
|
1694
|
-
const _hoisted_15$
|
|
1695
|
-
const _hoisted_16$
|
|
1696
|
-
const _hoisted_17$
|
|
1697
|
-
const _hoisted_18$
|
|
1698
|
-
const _hoisted_19$
|
|
1734
|
+
const _hoisted_1$i = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
1735
|
+
const _hoisted_2$f = ["data-direction"];
|
|
1736
|
+
const _hoisted_3$e = { class: "c-wrap" };
|
|
1737
|
+
const _hoisted_4$b = { class: "c-num c-left" };
|
|
1738
|
+
const _hoisted_5$a = { class: "flex-wrap" };
|
|
1739
|
+
const _hoisted_6$8 = { class: "c-num c-right" };
|
|
1740
|
+
const _hoisted_7$7 = { class: "flex-wrap" };
|
|
1741
|
+
const _hoisted_8$4 = { class: "c-wrap" };
|
|
1742
|
+
const _hoisted_9$4 = { class: "c-num c-left" };
|
|
1743
|
+
const _hoisted_10$4 = { class: "flex-wrap" };
|
|
1744
|
+
const _hoisted_11$4 = { class: "c-num c-right" };
|
|
1745
|
+
const _hoisted_12$4 = { class: "flex-wrap" };
|
|
1746
|
+
const _hoisted_13$4 = { class: "c-wrap" };
|
|
1747
|
+
const _hoisted_14$4 = { class: "c-num c-left" };
|
|
1748
|
+
const _hoisted_15$4 = { class: "flex-wrap" };
|
|
1749
|
+
const _hoisted_16$4 = { class: "c-num c-right" };
|
|
1750
|
+
const _hoisted_17$4 = { class: "flex-wrap" };
|
|
1751
|
+
const _hoisted_18$4 = { class: "c-wrap" };
|
|
1752
|
+
const _hoisted_19$4 = { class: "c-num c-left" };
|
|
1699
1753
|
const _hoisted_20$3 = { class: "flex-wrap" };
|
|
1700
1754
|
const _hoisted_21$3 = { class: "c-num c-right" };
|
|
1701
1755
|
const _hoisted_22$3 = { class: "flex-wrap" };
|
|
1702
1756
|
|
|
1703
|
-
function render$
|
|
1757
|
+
function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1704
1758
|
return (openBlock(), createElementBlock("div", {
|
|
1705
1759
|
class: "count-down eles",
|
|
1706
1760
|
"data-id": _ctx.element.id,
|
|
@@ -1742,9 +1796,9 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1742
1796
|
class: "c-com c-day",
|
|
1743
1797
|
style: normalizeStyle(_ctx.comStyle)
|
|
1744
1798
|
}, [
|
|
1745
|
-
createElementVNode("div", _hoisted_3$
|
|
1746
|
-
createElementVNode("div", _hoisted_4$
|
|
1747
|
-
createElementVNode("div", _hoisted_5$
|
|
1799
|
+
createElementVNode("div", _hoisted_3$e, [
|
|
1800
|
+
createElementVNode("div", _hoisted_4$b, [
|
|
1801
|
+
createElementVNode("div", _hoisted_5$a, [
|
|
1748
1802
|
(_ctx.days >= 100)
|
|
1749
1803
|
? (openBlock(), createElementBlock("div", {
|
|
1750
1804
|
key: 0,
|
|
@@ -1762,8 +1816,8 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1762
1816
|
}, toDisplayString(_ctx.currentDaysLeft), 5 /* TEXT, STYLE */)
|
|
1763
1817
|
])
|
|
1764
1818
|
]),
|
|
1765
|
-
createElementVNode("div", _hoisted_6$
|
|
1766
|
-
createElementVNode("div", _hoisted_7$
|
|
1819
|
+
createElementVNode("div", _hoisted_6$8, [
|
|
1820
|
+
createElementVNode("div", _hoisted_7$7, [
|
|
1767
1821
|
createElementVNode("div", {
|
|
1768
1822
|
class: "next-num",
|
|
1769
1823
|
style: normalizeStyle(_ctx.numStyle)
|
|
@@ -1785,9 +1839,9 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1785
1839
|
class: "c-com c-hour",
|
|
1786
1840
|
style: normalizeStyle(_ctx.comStyle)
|
|
1787
1841
|
}, [
|
|
1788
|
-
createElementVNode("div", _hoisted_8$
|
|
1789
|
-
createElementVNode("div", _hoisted_9$
|
|
1790
|
-
createElementVNode("div", _hoisted_10$
|
|
1842
|
+
createElementVNode("div", _hoisted_8$4, [
|
|
1843
|
+
createElementVNode("div", _hoisted_9$4, [
|
|
1844
|
+
createElementVNode("div", _hoisted_10$4, [
|
|
1791
1845
|
createElementVNode("div", {
|
|
1792
1846
|
class: "next-num",
|
|
1793
1847
|
style: normalizeStyle(_ctx.numStyle)
|
|
@@ -1798,8 +1852,8 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1798
1852
|
}, toDisplayString(_ctx.currentHoursLeft), 5 /* TEXT, STYLE */)
|
|
1799
1853
|
])
|
|
1800
1854
|
]),
|
|
1801
|
-
createElementVNode("div", _hoisted_11$
|
|
1802
|
-
createElementVNode("div", _hoisted_12$
|
|
1855
|
+
createElementVNode("div", _hoisted_11$4, [
|
|
1856
|
+
createElementVNode("div", _hoisted_12$4, [
|
|
1803
1857
|
createElementVNode("div", {
|
|
1804
1858
|
class: "next-num",
|
|
1805
1859
|
style: normalizeStyle(_ctx.numStyle)
|
|
@@ -1821,9 +1875,9 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1821
1875
|
class: "c-com c-minute",
|
|
1822
1876
|
style: normalizeStyle(_ctx.comStyle)
|
|
1823
1877
|
}, [
|
|
1824
|
-
createElementVNode("div", _hoisted_13$
|
|
1825
|
-
createElementVNode("div", _hoisted_14$
|
|
1826
|
-
createElementVNode("div", _hoisted_15$
|
|
1878
|
+
createElementVNode("div", _hoisted_13$4, [
|
|
1879
|
+
createElementVNode("div", _hoisted_14$4, [
|
|
1880
|
+
createElementVNode("div", _hoisted_15$4, [
|
|
1827
1881
|
createElementVNode("div", {
|
|
1828
1882
|
class: "next-num",
|
|
1829
1883
|
style: normalizeStyle(_ctx.numStyle)
|
|
@@ -1834,8 +1888,8 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1834
1888
|
}, toDisplayString(_ctx.currentMinutesLeft), 5 /* TEXT, STYLE */)
|
|
1835
1889
|
])
|
|
1836
1890
|
]),
|
|
1837
|
-
createElementVNode("div", _hoisted_16$
|
|
1838
|
-
createElementVNode("div", _hoisted_17$
|
|
1891
|
+
createElementVNode("div", _hoisted_16$4, [
|
|
1892
|
+
createElementVNode("div", _hoisted_17$4, [
|
|
1839
1893
|
createElementVNode("div", {
|
|
1840
1894
|
class: "next-num",
|
|
1841
1895
|
style: normalizeStyle(_ctx.numStyle)
|
|
@@ -1857,8 +1911,8 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1857
1911
|
class: "c-com c-second",
|
|
1858
1912
|
style: normalizeStyle(_ctx.comStyle)
|
|
1859
1913
|
}, [
|
|
1860
|
-
createElementVNode("div", _hoisted_18$
|
|
1861
|
-
createElementVNode("div", _hoisted_19$
|
|
1914
|
+
createElementVNode("div", _hoisted_18$4, [
|
|
1915
|
+
createElementVNode("div", _hoisted_19$4, [
|
|
1862
1916
|
createElementVNode("div", _hoisted_20$3, [
|
|
1863
1917
|
createElementVNode("div", {
|
|
1864
1918
|
class: "next-num",
|
|
@@ -1888,21 +1942,21 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1888
1942
|
}, toDisplayString(_ctx.second), 5 /* TEXT, STYLE */)
|
|
1889
1943
|
])
|
|
1890
1944
|
], 4 /* STYLE */)
|
|
1891
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_2$
|
|
1945
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_2$f)
|
|
1892
1946
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
1893
1947
|
], 4 /* STYLE */)
|
|
1894
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
1948
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$i))
|
|
1895
1949
|
}
|
|
1896
1950
|
|
|
1897
|
-
script$
|
|
1898
|
-
script$
|
|
1899
|
-
script$
|
|
1951
|
+
script$n.render = render$j;
|
|
1952
|
+
script$n.__scopeId = "data-v-bb868822";
|
|
1953
|
+
script$n.__file = "src/components/UniCountdown/UniCountdown.vue";
|
|
1900
1954
|
|
|
1901
|
-
script$
|
|
1902
|
-
app.component(script$
|
|
1955
|
+
script$n.install = (app) => {
|
|
1956
|
+
app.component(script$n.name, script$n);
|
|
1903
1957
|
};
|
|
1904
1958
|
|
|
1905
|
-
var script$
|
|
1959
|
+
var script$m = defineComponent({
|
|
1906
1960
|
name: 'uni-map',
|
|
1907
1961
|
props: {
|
|
1908
1962
|
element: {
|
|
@@ -1972,11 +2026,11 @@ var script$l = defineComponent({
|
|
|
1972
2026
|
}
|
|
1973
2027
|
});
|
|
1974
2028
|
|
|
1975
|
-
const _hoisted_1$
|
|
1976
|
-
const _hoisted_2$
|
|
1977
|
-
const _hoisted_3$
|
|
2029
|
+
const _hoisted_1$h = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
2030
|
+
const _hoisted_2$e = ["innerHTML"];
|
|
2031
|
+
const _hoisted_3$d = /*#__PURE__*/createElementVNode("div", { class: "mask-map" }, null, -1 /* HOISTED */);
|
|
1978
2032
|
|
|
1979
|
-
function render$
|
|
2033
|
+
function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1980
2034
|
return (openBlock(), createElementBlock("div", {
|
|
1981
2035
|
class: "element-ditu eles",
|
|
1982
2036
|
"data-id": _ctx.element.id,
|
|
@@ -2008,10 +2062,10 @@ function render$h(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2008
2062
|
createElementVNode("div", {
|
|
2009
2063
|
innerHTML: _ctx.iframeUrl,
|
|
2010
2064
|
class: "map-iframe"
|
|
2011
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
2065
|
+
}, null, 8 /* PROPS */, _hoisted_2$e),
|
|
2012
2066
|
createCommentVNode(" 隐藏的辅助元素 "),
|
|
2013
2067
|
createCommentVNode(" <div :id=\"'teng_' + element.id + Date.now()\" class=\"center-map\" style=\"display: none;\"></div>\n <div :id=\"'bai_' + element.id + Date.now()\" class=\"center-map\" style=\"display: none;\"></div> "),
|
|
2014
|
-
_hoisted_3$
|
|
2068
|
+
_hoisted_3$d
|
|
2015
2069
|
], 4 /* STYLE */))
|
|
2016
2070
|
: (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
2017
2071
|
createCommentVNode(" 导航按钮 "),
|
|
@@ -2029,17 +2083,17 @@ function render$h(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2029
2083
|
], 4 /* STYLE */)
|
|
2030
2084
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
2031
2085
|
], 4 /* STYLE */)
|
|
2032
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
2086
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$h))
|
|
2033
2087
|
}
|
|
2034
2088
|
|
|
2035
|
-
script$
|
|
2036
|
-
script$
|
|
2089
|
+
script$m.render = render$i;
|
|
2090
|
+
script$m.__file = "src/components/UniMap/UniMap.vue";
|
|
2037
2091
|
|
|
2038
|
-
script$
|
|
2039
|
-
app.component(script$
|
|
2092
|
+
script$m.install = (app) => {
|
|
2093
|
+
app.component(script$m.name, script$m);
|
|
2040
2094
|
};
|
|
2041
2095
|
|
|
2042
|
-
var script$
|
|
2096
|
+
var script$l = defineComponent({
|
|
2043
2097
|
name: 'uni-call',
|
|
2044
2098
|
props: {
|
|
2045
2099
|
element: {
|
|
@@ -2122,10 +2176,10 @@ var script$k = defineComponent({
|
|
|
2122
2176
|
}
|
|
2123
2177
|
});
|
|
2124
2178
|
|
|
2125
|
-
const _hoisted_1$
|
|
2126
|
-
const _hoisted_2$
|
|
2179
|
+
const _hoisted_1$g = ["data-id"];
|
|
2180
|
+
const _hoisted_2$d = { class: "call-content" };
|
|
2127
2181
|
|
|
2128
|
-
function render$
|
|
2182
|
+
function render$h(_ctx, _cache, $props, $setup, $data, $options) {
|
|
2129
2183
|
return (openBlock(), createElementBlock("div", {
|
|
2130
2184
|
class: "call eles",
|
|
2131
2185
|
"data-id": _ctx.element.id,
|
|
@@ -2139,7 +2193,7 @@ function render$g(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2139
2193
|
boxShadow: _ctx.shadowStyle
|
|
2140
2194
|
})
|
|
2141
2195
|
}, [
|
|
2142
|
-
createElementVNode("div", _hoisted_2$
|
|
2196
|
+
createElementVNode("div", _hoisted_2$d, [
|
|
2143
2197
|
createElementVNode("i", {
|
|
2144
2198
|
class: "iconfont hb-tel",
|
|
2145
2199
|
style: normalizeStyle(_ctx.bntStyle)
|
|
@@ -2150,14 +2204,14 @@ function render$g(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2150
2204
|
}, toDisplayString(_ctx.btnText), 5 /* TEXT, STYLE */)
|
|
2151
2205
|
])
|
|
2152
2206
|
], 4 /* STYLE */)
|
|
2153
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
2207
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$g))
|
|
2154
2208
|
}
|
|
2155
2209
|
|
|
2156
|
-
script$
|
|
2157
|
-
script$
|
|
2210
|
+
script$l.render = render$h;
|
|
2211
|
+
script$l.__file = "src/components/UniCall/UniCall.vue";
|
|
2158
2212
|
|
|
2159
|
-
script$
|
|
2160
|
-
app.component(script$
|
|
2213
|
+
script$l.install = (app) => {
|
|
2214
|
+
app.component(script$l.name, script$l);
|
|
2161
2215
|
};
|
|
2162
2216
|
|
|
2163
2217
|
// 花瓣图片资源 (base64编码)
|
|
@@ -2197,7 +2251,7 @@ const petal_images = [
|
|
|
2197
2251
|
'https://h5cdn.unika.cc/static/img/uniComponents/huaban.png'
|
|
2198
2252
|
// 可以添加更多花瓣图片
|
|
2199
2253
|
];
|
|
2200
|
-
var script$
|
|
2254
|
+
var script$k = defineComponent({
|
|
2201
2255
|
name: 'uni-effect',
|
|
2202
2256
|
props: {
|
|
2203
2257
|
element: {
|
|
@@ -2295,14 +2349,14 @@ var script$j = defineComponent({
|
|
|
2295
2349
|
}
|
|
2296
2350
|
});
|
|
2297
2351
|
|
|
2298
|
-
const _hoisted_1$
|
|
2352
|
+
const _hoisted_1$f = { class: "effect-wrap" };
|
|
2299
2353
|
|
|
2300
|
-
function render$
|
|
2354
|
+
function render$g(_ctx, _cache, $props, $setup, $data, $options) {
|
|
2301
2355
|
return withDirectives((openBlock(), createElementBlock("div", {
|
|
2302
2356
|
class: "ele-effect eles",
|
|
2303
2357
|
style: normalizeStyle(_ctx.containerStyle)
|
|
2304
2358
|
}, [
|
|
2305
|
-
createElementVNode("div", _hoisted_1$
|
|
2359
|
+
createElementVNode("div", _hoisted_1$f, [
|
|
2306
2360
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.particles, (particle, index) => {
|
|
2307
2361
|
return (openBlock(), createElementBlock("div", {
|
|
2308
2362
|
key: index,
|
|
@@ -2316,11 +2370,11 @@ function render$f(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2316
2370
|
])
|
|
2317
2371
|
}
|
|
2318
2372
|
|
|
2319
|
-
script$
|
|
2320
|
-
script$
|
|
2373
|
+
script$k.render = render$g;
|
|
2374
|
+
script$k.__file = "src/components/UniEffect/UniEffect.vue";
|
|
2321
2375
|
|
|
2322
|
-
script$
|
|
2323
|
-
app.component(script$
|
|
2376
|
+
script$k.install = (app) => {
|
|
2377
|
+
app.component(script$k.name, script$k);
|
|
2324
2378
|
};
|
|
2325
2379
|
|
|
2326
2380
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -22878,13 +22932,13 @@ ListCache.prototype["delete"] = listCacheDelete;
|
|
|
22878
22932
|
ListCache.prototype.get = listCacheGet;
|
|
22879
22933
|
ListCache.prototype.has = listCacheHas;
|
|
22880
22934
|
ListCache.prototype.set = listCacheSet;
|
|
22881
|
-
var Map = getNative(root$1, "Map");
|
|
22882
|
-
var Map$1 = Map;
|
|
22935
|
+
var Map$1 = getNative(root$1, "Map");
|
|
22936
|
+
var Map$1$1 = Map$1;
|
|
22883
22937
|
function mapCacheClear() {
|
|
22884
22938
|
this.size = 0;
|
|
22885
22939
|
this.__data__ = {
|
|
22886
22940
|
"hash": new Hash(),
|
|
22887
|
-
"map": new (Map$1 || ListCache)(),
|
|
22941
|
+
"map": new (Map$1$1 || ListCache)(),
|
|
22888
22942
|
"string": new Hash()
|
|
22889
22943
|
};
|
|
22890
22944
|
}
|
|
@@ -22955,7 +23009,7 @@ function stackSet(key, value) {
|
|
|
22955
23009
|
var data = this.__data__;
|
|
22956
23010
|
if (data instanceof ListCache) {
|
|
22957
23011
|
var pairs = data.__data__;
|
|
22958
|
-
if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
|
23012
|
+
if (!Map$1$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
|
22959
23013
|
pairs.push([key, value]);
|
|
22960
23014
|
this.size = ++data.size;
|
|
22961
23015
|
return this;
|
|
@@ -23053,9 +23107,9 @@ var Set$1 = getNative(root$1, "Set");
|
|
|
23053
23107
|
var Set$1$1 = Set$1;
|
|
23054
23108
|
var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
|
|
23055
23109
|
var dataViewTag$3 = "[object DataView]";
|
|
23056
|
-
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1$1), weakMapCtorString = toSource(WeakMap$1);
|
|
23110
|
+
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1$1), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1$1), weakMapCtorString = toSource(WeakMap$1);
|
|
23057
23111
|
var getTag = baseGetTag;
|
|
23058
|
-
if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$1 && getTag(new Map$1()) != mapTag$4 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1$1 && getTag(new Set$1$1()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
|
|
23112
|
+
if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$1$1 && getTag(new Map$1$1()) != mapTag$4 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1$1 && getTag(new Set$1$1()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
|
|
23059
23113
|
getTag = function(value) {
|
|
23060
23114
|
var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
|
|
23061
23115
|
if (ctorString) {
|
|
@@ -23802,7 +23856,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
23802
23856
|
}
|
|
23803
23857
|
var Vue3Lottie = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
23804
23858
|
|
|
23805
|
-
var script$
|
|
23859
|
+
var script$j = defineComponent({
|
|
23806
23860
|
name: 'uni-lottie',
|
|
23807
23861
|
components: {
|
|
23808
23862
|
Vue3Lottie
|
|
@@ -23863,9 +23917,9 @@ var script$i = defineComponent({
|
|
|
23863
23917
|
}
|
|
23864
23918
|
});
|
|
23865
23919
|
|
|
23866
|
-
const _hoisted_1$
|
|
23920
|
+
const _hoisted_1$e = ["data-id", "data-pid", "data-type", "data-show"];
|
|
23867
23921
|
|
|
23868
|
-
function render$
|
|
23922
|
+
function render$f(_ctx, _cache, $props, $setup, $data, $options) {
|
|
23869
23923
|
const _component_Vue3Lottie = resolveComponent("Vue3Lottie");
|
|
23870
23924
|
|
|
23871
23925
|
return (openBlock(), createElementBlock("div", {
|
|
@@ -23888,17 +23942,17 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
23888
23942
|
ref: "lottieAnimation"
|
|
23889
23943
|
}, null, 8 /* PROPS */, ["style", "animationLink", "loop", "delay"])
|
|
23890
23944
|
], 4 /* STYLE */)
|
|
23891
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
23945
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$e))
|
|
23892
23946
|
}
|
|
23893
23947
|
|
|
23894
|
-
script$
|
|
23895
|
-
script$
|
|
23948
|
+
script$j.render = render$f;
|
|
23949
|
+
script$j.__file = "src/components/UniLottie/UniLottie.vue";
|
|
23896
23950
|
|
|
23897
|
-
script$
|
|
23898
|
-
app.component(script$
|
|
23951
|
+
script$j.install = (app) => {
|
|
23952
|
+
app.component(script$j.name, script$j);
|
|
23899
23953
|
};
|
|
23900
23954
|
|
|
23901
|
-
var script$
|
|
23955
|
+
var script$i = defineComponent({
|
|
23902
23956
|
name: 'uni-button',
|
|
23903
23957
|
props: {
|
|
23904
23958
|
element: {
|
|
@@ -23965,9 +24019,9 @@ var script$h = defineComponent({
|
|
|
23965
24019
|
}
|
|
23966
24020
|
});
|
|
23967
24021
|
|
|
23968
|
-
const _hoisted_1$
|
|
24022
|
+
const _hoisted_1$d = { class: "button-content" };
|
|
23969
24023
|
|
|
23970
|
-
function render$
|
|
24024
|
+
function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|
23971
24025
|
return (openBlock(), createElementBlock("div", {
|
|
23972
24026
|
class: "button eles",
|
|
23973
24027
|
style: normalizeStyle(_ctx.containerStyle),
|
|
@@ -23980,7 +24034,7 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
23980
24034
|
boxShadow: _ctx.shadowStyle
|
|
23981
24035
|
})
|
|
23982
24036
|
}, [
|
|
23983
|
-
createElementVNode("div", _hoisted_1$
|
|
24037
|
+
createElementVNode("div", _hoisted_1$d, [
|
|
23984
24038
|
createElementVNode("span", {
|
|
23985
24039
|
class: "btn-text",
|
|
23986
24040
|
style: normalizeStyle(_ctx.bntStyle)
|
|
@@ -23990,18 +24044,25 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
23990
24044
|
], 4 /* STYLE */))
|
|
23991
24045
|
}
|
|
23992
24046
|
|
|
23993
|
-
script$
|
|
23994
|
-
script$
|
|
24047
|
+
script$i.render = render$e;
|
|
24048
|
+
script$i.__file = "src/components/UniButton/UniButton.vue";
|
|
23995
24049
|
|
|
23996
|
-
script$
|
|
23997
|
-
app.component(script$
|
|
24050
|
+
script$i.install = (app) => {
|
|
24051
|
+
app.component(script$i.name, script$i);
|
|
23998
24052
|
};
|
|
23999
24053
|
|
|
24054
|
+
const PLACEHOLDER_GIFT_QR_CODE = 'https://h5cdn.unika.cc/static/img/uniComponents/giftqrcode.png';
|
|
24055
|
+
function isRealGiftQRCode(url) {
|
|
24056
|
+
const value = String(url || '').trim();
|
|
24057
|
+
return !!value && value !== PLACEHOLDER_GIFT_QR_CODE;
|
|
24058
|
+
}
|
|
24059
|
+
|
|
24000
24060
|
async function requestJson(url, init) {
|
|
24001
|
-
|
|
24061
|
+
var _a;
|
|
24062
|
+
const timeout = (_a = init === null || init === void 0 ? void 0 : init.timeout) !== null && _a !== void 0 ? _a : 8000;
|
|
24002
24063
|
const controller = new AbortController();
|
|
24003
24064
|
const timer = window.setTimeout(() => controller.abort(), timeout);
|
|
24004
|
-
const { timeout: _timeout, ...fetchInit } = init
|
|
24065
|
+
const { timeout: _timeout, ...fetchInit } = init !== null && init !== void 0 ? init : {};
|
|
24005
24066
|
try {
|
|
24006
24067
|
const res = await fetch(url, { ...fetchInit, signal: controller.signal });
|
|
24007
24068
|
const data = (await res.json());
|
|
@@ -24011,7 +24072,7 @@ async function requestJson(url, init) {
|
|
|
24011
24072
|
window.clearTimeout(timer);
|
|
24012
24073
|
}
|
|
24013
24074
|
}
|
|
24014
|
-
var script$
|
|
24075
|
+
var script$h = defineComponent({
|
|
24015
24076
|
name: 'uni-barrage',
|
|
24016
24077
|
props: {
|
|
24017
24078
|
env: {
|
|
@@ -24057,6 +24118,7 @@ var script$g = defineComponent({
|
|
|
24057
24118
|
'มีลูกเต็มบ้าน มีหลานเต็มเมือง',
|
|
24058
24119
|
'รักแท้จงอยู่คู่คุณทั้งสองตลอดไป',
|
|
24059
24120
|
];
|
|
24121
|
+
const hasRealGiftQR = computed(() => { var _a, _b; return isRealGiftQRCode((_b = (_a = props.global) === null || _a === void 0 ? void 0 : _a.toolbar) === null || _b === void 0 ? void 0 : _b.giftQRCode); });
|
|
24060
24122
|
const bulletConfig = computed(() => {
|
|
24061
24123
|
return {
|
|
24062
24124
|
bgColor: props.global.toolbar.bgColor || '#ffffff',
|
|
@@ -24277,10 +24339,13 @@ var script$g = defineComponent({
|
|
|
24277
24339
|
imageLoaded.value = true;
|
|
24278
24340
|
};
|
|
24279
24341
|
const showGiftPopup = () => {
|
|
24342
|
+
if (!hasRealGiftQR.value)
|
|
24343
|
+
return;
|
|
24280
24344
|
showGift.value = true;
|
|
24281
24345
|
imageLoaded.value = false; // 重置加载状态
|
|
24282
24346
|
};
|
|
24283
24347
|
return {
|
|
24348
|
+
hasRealGiftQR,
|
|
24284
24349
|
name,
|
|
24285
24350
|
content,
|
|
24286
24351
|
showPopup,
|
|
@@ -24319,31 +24384,31 @@ var script$g = defineComponent({
|
|
|
24319
24384
|
}
|
|
24320
24385
|
});
|
|
24321
24386
|
|
|
24322
|
-
const _hoisted_1$
|
|
24387
|
+
const _hoisted_1$c = {
|
|
24323
24388
|
id: "toolbarNew",
|
|
24324
24389
|
ref: "toolbar"
|
|
24325
24390
|
};
|
|
24326
|
-
const _hoisted_2$
|
|
24327
|
-
const _hoisted_3$
|
|
24328
|
-
const _hoisted_4$
|
|
24329
|
-
const _hoisted_5$
|
|
24330
|
-
_hoisted_4$
|
|
24391
|
+
const _hoisted_2$c = { class: "toolbar" };
|
|
24392
|
+
const _hoisted_3$c = { class: "bar-left" };
|
|
24393
|
+
const _hoisted_4$a = /*#__PURE__*/createElementVNode("img", { src: "https://h5cdn.unika.cc/static/img/uniComponents/hide.png" }, null, -1 /* HOISTED */);
|
|
24394
|
+
const _hoisted_5$9 = [
|
|
24395
|
+
_hoisted_4$a
|
|
24331
24396
|
];
|
|
24332
|
-
const _hoisted_6$
|
|
24397
|
+
const _hoisted_6$7 = {
|
|
24333
24398
|
key: 0,
|
|
24334
24399
|
class: "bar-right"
|
|
24335
24400
|
};
|
|
24336
|
-
const _hoisted_7$
|
|
24401
|
+
const _hoisted_7$6 = {
|
|
24337
24402
|
key: 0,
|
|
24338
24403
|
class: "bar-praise"
|
|
24339
24404
|
};
|
|
24340
|
-
const _hoisted_8$
|
|
24341
|
-
const _hoisted_9$
|
|
24342
|
-
const _hoisted_10$
|
|
24405
|
+
const _hoisted_8$3 = /*#__PURE__*/createElementVNode("strong", { class: "ani-num" }, "+1", -1 /* HOISTED */);
|
|
24406
|
+
const _hoisted_9$3 = /*#__PURE__*/createElementVNode("div", { class: "stop-longtap" }, null, -1 /* HOISTED */);
|
|
24407
|
+
const _hoisted_10$3 = /*#__PURE__*/createElementVNode("img", {
|
|
24343
24408
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/parise.png",
|
|
24344
24409
|
class: "animated"
|
|
24345
24410
|
}, null, -1 /* HOISTED */);
|
|
24346
|
-
const _hoisted_11$
|
|
24411
|
+
const _hoisted_11$3 = /*#__PURE__*/createElementVNode("div", { class: "zan-wrap" }, [
|
|
24347
24412
|
/*#__PURE__*/createElementVNode("span"),
|
|
24348
24413
|
/*#__PURE__*/createElementVNode("span"),
|
|
24349
24414
|
/*#__PURE__*/createElementVNode("span"),
|
|
@@ -24353,23 +24418,23 @@ const _hoisted_11$2 = /*#__PURE__*/createElementVNode("div", { class: "zan-wrap"
|
|
|
24353
24418
|
/*#__PURE__*/createElementVNode("span"),
|
|
24354
24419
|
/*#__PURE__*/createElementVNode("span")
|
|
24355
24420
|
], -1 /* HOISTED */);
|
|
24356
|
-
const _hoisted_12$
|
|
24357
|
-
_hoisted_8$
|
|
24358
|
-
_hoisted_9$
|
|
24359
|
-
_hoisted_10$
|
|
24360
|
-
_hoisted_11$
|
|
24421
|
+
const _hoisted_12$3 = [
|
|
24422
|
+
_hoisted_8$3,
|
|
24423
|
+
_hoisted_9$3,
|
|
24424
|
+
_hoisted_10$3,
|
|
24425
|
+
_hoisted_11$3
|
|
24361
24426
|
];
|
|
24362
|
-
const _hoisted_13$
|
|
24363
|
-
const _hoisted_14$
|
|
24427
|
+
const _hoisted_13$3 = { class: "bar-messwin" };
|
|
24428
|
+
const _hoisted_14$3 = /*#__PURE__*/createElementVNode("img", {
|
|
24364
24429
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/mess-logo.png",
|
|
24365
24430
|
alt: "",
|
|
24366
24431
|
class: "mess-logo"
|
|
24367
24432
|
}, null, -1 /* HOISTED */);
|
|
24368
|
-
const _hoisted_15$
|
|
24369
|
-
const _hoisted_16$
|
|
24370
|
-
const _hoisted_17$
|
|
24371
|
-
const _hoisted_18$
|
|
24372
|
-
const _hoisted_19$
|
|
24433
|
+
const _hoisted_15$3 = /*#__PURE__*/createElementVNode("div", { class: "mess-title" }, "ข้อความอวยพร", -1 /* HOISTED */);
|
|
24434
|
+
const _hoisted_16$3 = { class: "mess-input" };
|
|
24435
|
+
const _hoisted_17$3 = { class: "mess-textarea" };
|
|
24436
|
+
const _hoisted_18$3 = { class: "wish-dropdown" };
|
|
24437
|
+
const _hoisted_19$3 = ["onClick"];
|
|
24373
24438
|
const _hoisted_20$2 = /*#__PURE__*/createElementVNode("div", { class: "wish-dot" }, "•", -1 /* HOISTED */);
|
|
24374
24439
|
const _hoisted_21$2 = { class: "wish-text" };
|
|
24375
24440
|
const _hoisted_22$2 = {
|
|
@@ -24406,7 +24471,7 @@ const _hoisted_34 = { class: "mint-msgbox-content" };
|
|
|
24406
24471
|
const _hoisted_35 = { class: "mint-msgbox-message" };
|
|
24407
24472
|
const _hoisted_36 = { class: "mint-msgbox-btns" };
|
|
24408
24473
|
|
|
24409
|
-
function render$
|
|
24474
|
+
function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|
24410
24475
|
return (openBlock(), createElementBlock("div", null, [
|
|
24411
24476
|
createCommentVNode(" 弹幕显示区域 "),
|
|
24412
24477
|
withDirectives(createElementVNode("div", {
|
|
@@ -24428,9 +24493,9 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24428
24493
|
[vShow, _ctx.showBullets]
|
|
24429
24494
|
]),
|
|
24430
24495
|
createCommentVNode(" 底部工具栏 "),
|
|
24431
|
-
createElementVNode("div", _hoisted_1$
|
|
24432
|
-
createElementVNode("div", _hoisted_2$
|
|
24433
|
-
withDirectives(createElementVNode("div", _hoisted_3$
|
|
24496
|
+
createElementVNode("div", _hoisted_1$c, [
|
|
24497
|
+
createElementVNode("div", _hoisted_2$c, [
|
|
24498
|
+
withDirectives(createElementVNode("div", _hoisted_3$c, [
|
|
24434
24499
|
createElementVNode("input", {
|
|
24435
24500
|
type: "text",
|
|
24436
24501
|
placeholder: "ข้อความอวยพร..",
|
|
@@ -24449,13 +24514,13 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24449
24514
|
withDirectives(createElementVNode("div", {
|
|
24450
24515
|
onClick: _cache[2] || (_cache[2] = withModifiers((...args) => (_ctx.toggleBullets && _ctx.toggleBullets(...args)), ["stop"])),
|
|
24451
24516
|
class: "toolbar-close"
|
|
24452
|
-
}, [..._hoisted_5$
|
|
24517
|
+
}, [..._hoisted_5$9], 512 /* NEED_PATCH */), [
|
|
24453
24518
|
[vShow, !_ctx.showBullets]
|
|
24454
24519
|
]),
|
|
24455
24520
|
createCommentVNode(" 新增的右侧按钮区域 "),
|
|
24456
24521
|
((_ctx.global.toolbar.gift || _ctx.global.toolbar.praise) && _ctx.showBullets)
|
|
24457
|
-
? (openBlock(), createElementBlock("div", _hoisted_6$
|
|
24458
|
-
(_ctx.global.toolbar.gift && _ctx.
|
|
24522
|
+
? (openBlock(), createElementBlock("div", _hoisted_6$7, [
|
|
24523
|
+
(_ctx.global.toolbar.gift && _ctx.hasRealGiftQR)
|
|
24459
24524
|
? (openBlock(), createElementBlock("img", {
|
|
24460
24525
|
key: 0,
|
|
24461
24526
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/gift.png",
|
|
@@ -24470,11 +24535,11 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24470
24535
|
onClick: _cache[4] || (_cache[4] = (...args) => (_ctx.handlePraise && _ctx.handlePraise(...args)))
|
|
24471
24536
|
}, [
|
|
24472
24537
|
(_ctx.praiseCount > 0)
|
|
24473
|
-
? (openBlock(), createElementBlock("div", _hoisted_7$
|
|
24538
|
+
? (openBlock(), createElementBlock("div", _hoisted_7$6, toDisplayString(_ctx.praiseCount), 1 /* TEXT */))
|
|
24474
24539
|
: createCommentVNode("v-if", true),
|
|
24475
24540
|
createElementVNode("div", {
|
|
24476
24541
|
class: normalizeClass(["bar-zan", { active: _ctx.isPraised }])
|
|
24477
|
-
}, [..._hoisted_12$
|
|
24542
|
+
}, [..._hoisted_12$3], 2 /* CLASS */)
|
|
24478
24543
|
]))
|
|
24479
24544
|
: createCommentVNode("v-if", true)
|
|
24480
24545
|
]))
|
|
@@ -24489,11 +24554,11 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24489
24554
|
style: {"z-index":"2003"},
|
|
24490
24555
|
onClick: _cache[12] || (_cache[12] = withModifiers((...args) => (_ctx.closePopup && _ctx.closePopup(...args)), ["self"]))
|
|
24491
24556
|
}, [
|
|
24492
|
-
createElementVNode("div", _hoisted_13$
|
|
24493
|
-
_hoisted_14$
|
|
24494
|
-
_hoisted_15$
|
|
24557
|
+
createElementVNode("div", _hoisted_13$3, [
|
|
24558
|
+
_hoisted_14$3,
|
|
24559
|
+
_hoisted_15$3,
|
|
24495
24560
|
createCommentVNode(" 祝福留言. "),
|
|
24496
|
-
createElementVNode("div", _hoisted_16$
|
|
24561
|
+
createElementVNode("div", _hoisted_16$3, [
|
|
24497
24562
|
withDirectives(createElementVNode("input", {
|
|
24498
24563
|
ref: "nameInput",
|
|
24499
24564
|
"onUpdate:modelValue": _cache[5] || (_cache[5] = $event => ((_ctx.name) = $event)),
|
|
@@ -24506,7 +24571,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24506
24571
|
])
|
|
24507
24572
|
]),
|
|
24508
24573
|
createCommentVNode(" 请输入您的姓名 "),
|
|
24509
|
-
createElementVNode("div", _hoisted_17$
|
|
24574
|
+
createElementVNode("div", _hoisted_17$3, [
|
|
24510
24575
|
withDirectives(createElementVNode("textarea", {
|
|
24511
24576
|
"onUpdate:modelValue": _cache[7] || (_cache[7] = $event => ((_ctx.content) = $event)),
|
|
24512
24577
|
placeholder: "ข้อความของคุณ..",
|
|
@@ -24523,7 +24588,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24523
24588
|
onClick: _cache[9] || (_cache[9] = (...args) => (_ctx.showBlessingOptions && _ctx.showBlessingOptions(...args)))
|
|
24524
24589
|
}),
|
|
24525
24590
|
createCommentVNode(" 请选择祝福语 "),
|
|
24526
|
-
withDirectives(createElementVNode("div", _hoisted_18$
|
|
24591
|
+
withDirectives(createElementVNode("div", _hoisted_18$3, [
|
|
24527
24592
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.blessingOptions, (blessing, index) => {
|
|
24528
24593
|
return (openBlock(), createElementBlock("div", {
|
|
24529
24594
|
class: "wish-item",
|
|
@@ -24532,7 +24597,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24532
24597
|
}, [
|
|
24533
24598
|
_hoisted_20$2,
|
|
24534
24599
|
createElementVNode("div", _hoisted_21$2, toDisplayString(blessing), 1 /* TEXT */)
|
|
24535
|
-
], 8 /* PROPS */, _hoisted_19$
|
|
24600
|
+
], 8 /* PROPS */, _hoisted_19$3))
|
|
24536
24601
|
}), 128 /* KEYED_FRAGMENT */))
|
|
24537
24602
|
], 512 /* NEED_PATCH */), [
|
|
24538
24603
|
[vShow, _ctx.showBlessingList]
|
|
@@ -24616,11 +24681,11 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
24616
24681
|
]))
|
|
24617
24682
|
}
|
|
24618
24683
|
|
|
24619
|
-
script$
|
|
24620
|
-
script$
|
|
24684
|
+
script$h.render = render$d;
|
|
24685
|
+
script$h.__file = "src/components/UniBarrage/UniBarrage.vue";
|
|
24621
24686
|
|
|
24622
|
-
script$
|
|
24623
|
-
app.component(script$
|
|
24687
|
+
script$h.install = (app) => {
|
|
24688
|
+
app.component(script$h.name, script$h);
|
|
24624
24689
|
};
|
|
24625
24690
|
|
|
24626
24691
|
function useTouchHandler(pages, currentPageId, direction, isLoopEnabled, onUserInteraction) {
|
|
@@ -24969,7 +25034,7 @@ function validateInput(value, type) {
|
|
|
24969
25034
|
return true;
|
|
24970
25035
|
}
|
|
24971
25036
|
|
|
24972
|
-
var script$
|
|
25037
|
+
var script$g = defineComponent({
|
|
24973
25038
|
name: 'uni-form-input',
|
|
24974
25039
|
props: {
|
|
24975
25040
|
global: {
|
|
@@ -25082,14 +25147,14 @@ var script$f = defineComponent({
|
|
|
25082
25147
|
}
|
|
25083
25148
|
});
|
|
25084
25149
|
|
|
25085
|
-
const _hoisted_1$
|
|
25086
|
-
const _hoisted_2$
|
|
25150
|
+
const _hoisted_1$b = ["data-id"];
|
|
25151
|
+
const _hoisted_2$b = {
|
|
25087
25152
|
key: 0,
|
|
25088
25153
|
class: "required-marker"
|
|
25089
25154
|
};
|
|
25090
|
-
const _hoisted_3$
|
|
25155
|
+
const _hoisted_3$b = ["type", "placeholder", "readonly", "tabindex"];
|
|
25091
25156
|
|
|
25092
|
-
function render$
|
|
25157
|
+
function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25093
25158
|
return (openBlock(), createElementBlock("div", {
|
|
25094
25159
|
class: normalizeClass(["ele-form form-input eles", { 'form-input--editing': _ctx.isEditing }]),
|
|
25095
25160
|
"data-id": _ctx.element.id,
|
|
@@ -25103,7 +25168,7 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25103
25168
|
})
|
|
25104
25169
|
}, [
|
|
25105
25170
|
(_ctx.required)
|
|
25106
|
-
? (openBlock(), createElementBlock("span", _hoisted_2$
|
|
25171
|
+
? (openBlock(), createElementBlock("span", _hoisted_2$b, "*"))
|
|
25107
25172
|
: createCommentVNode("v-if", true),
|
|
25108
25173
|
withDirectives(createElementVNode("input", {
|
|
25109
25174
|
type: _ctx.inputType,
|
|
@@ -25116,17 +25181,17 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25116
25181
|
onMousedown: _cache[1] || (_cache[1] = (...args) => (_ctx.onInputPointerDown && _ctx.onInputPointerDown(...args))),
|
|
25117
25182
|
onTouchstart: _cache[2] || (_cache[2] = (...args) => (_ctx.onInputPointerDown && _ctx.onInputPointerDown(...args))),
|
|
25118
25183
|
onBlur: _cache[3] || (_cache[3] = (...args) => (_ctx.handleBlur && _ctx.handleBlur(...args)))
|
|
25119
|
-
}, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_3$
|
|
25184
|
+
}, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_3$b), [
|
|
25120
25185
|
[vModelDynamic, _ctx.inputValue]
|
|
25121
25186
|
])
|
|
25122
25187
|
], 4 /* STYLE */)
|
|
25123
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25188
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$b))
|
|
25124
25189
|
}
|
|
25125
25190
|
|
|
25126
|
-
script$
|
|
25127
|
-
script$
|
|
25191
|
+
script$g.render = render$c;
|
|
25192
|
+
script$g.__file = "src/components/UniFormInput/UniFormInput.vue";
|
|
25128
25193
|
|
|
25129
|
-
var script$
|
|
25194
|
+
var script$f = defineComponent({
|
|
25130
25195
|
name: 'uni-form-submit',
|
|
25131
25196
|
props: {
|
|
25132
25197
|
global: {
|
|
@@ -25227,15 +25292,15 @@ var script$e = defineComponent({
|
|
|
25227
25292
|
}
|
|
25228
25293
|
});
|
|
25229
25294
|
|
|
25230
|
-
const _hoisted_1$
|
|
25231
|
-
const _hoisted_2$
|
|
25232
|
-
const _hoisted_3$
|
|
25295
|
+
const _hoisted_1$a = ["data-id"];
|
|
25296
|
+
const _hoisted_2$a = ["disabled"];
|
|
25297
|
+
const _hoisted_3$a = {
|
|
25233
25298
|
key: 0,
|
|
25234
25299
|
class: "f-ovh"
|
|
25235
25300
|
};
|
|
25236
|
-
const _hoisted_4$
|
|
25301
|
+
const _hoisted_4$9 = { class: "f-ovh" };
|
|
25237
25302
|
|
|
25238
|
-
function render$
|
|
25303
|
+
function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25239
25304
|
return (openBlock(), createElementBlock("div", {
|
|
25240
25305
|
class: "ele-form eles",
|
|
25241
25306
|
"data-id": _ctx.element.id,
|
|
@@ -25248,19 +25313,19 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25248
25313
|
disabled: _ctx.isSubmitting
|
|
25249
25314
|
}, [
|
|
25250
25315
|
(_ctx.isSubmitting)
|
|
25251
|
-
? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
25316
|
+
? (openBlock(), createElementBlock("span", _hoisted_3$a, "กำลังส่ง..."))
|
|
25252
25317
|
: (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
25253
25318
|
createCommentVNode(" 提交中 "),
|
|
25254
|
-
createElementVNode("span", _hoisted_4$
|
|
25319
|
+
createElementVNode("span", _hoisted_4$9, toDisplayString(_ctx.btName), 1 /* TEXT */)
|
|
25255
25320
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
25256
|
-
], 12 /* STYLE, PROPS */, _hoisted_2$
|
|
25257
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
25321
|
+
], 12 /* STYLE, PROPS */, _hoisted_2$a)
|
|
25322
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$a))
|
|
25258
25323
|
}
|
|
25259
25324
|
|
|
25260
|
-
script$
|
|
25261
|
-
script$
|
|
25325
|
+
script$f.render = render$b;
|
|
25326
|
+
script$f.__file = "src/components/UniFormSubmit/UniFormSubmit.vue";
|
|
25262
25327
|
|
|
25263
|
-
var script$
|
|
25328
|
+
var script$e = defineComponent({
|
|
25264
25329
|
name: 'uni-form-select',
|
|
25265
25330
|
props: {
|
|
25266
25331
|
global: {
|
|
@@ -25366,21 +25431,21 @@ var script$d = defineComponent({
|
|
|
25366
25431
|
}
|
|
25367
25432
|
});
|
|
25368
25433
|
|
|
25369
|
-
const _hoisted_1$
|
|
25370
|
-
const _hoisted_2$
|
|
25434
|
+
const _hoisted_1$9 = ["data-id"];
|
|
25435
|
+
const _hoisted_2$9 = {
|
|
25371
25436
|
key: 0,
|
|
25372
25437
|
class: "require"
|
|
25373
25438
|
};
|
|
25374
|
-
const _hoisted_3$
|
|
25375
|
-
const _hoisted_4$
|
|
25439
|
+
const _hoisted_3$9 = { class: "fs-cont" };
|
|
25440
|
+
const _hoisted_4$8 = {
|
|
25376
25441
|
value: "",
|
|
25377
25442
|
disabled: "",
|
|
25378
25443
|
hidden: ""
|
|
25379
25444
|
};
|
|
25380
|
-
const _hoisted_5$
|
|
25381
|
-
const _hoisted_6$
|
|
25445
|
+
const _hoisted_5$8 = ["value"];
|
|
25446
|
+
const _hoisted_6$6 = ["onClick"];
|
|
25382
25447
|
|
|
25383
|
-
function render$
|
|
25448
|
+
function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25384
25449
|
return (openBlock(), createElementBlock("div", {
|
|
25385
25450
|
class: normalizeClass(["ele-form f-select eles", { 'has-error': _ctx.hasError }]),
|
|
25386
25451
|
"data-id": _ctx.element.id,
|
|
@@ -25395,9 +25460,9 @@ function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25395
25460
|
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.toggleDropdown && _ctx.toggleDropdown(...args)))
|
|
25396
25461
|
}, [
|
|
25397
25462
|
(_ctx.required)
|
|
25398
|
-
? (openBlock(), createElementBlock("span", _hoisted_2$
|
|
25463
|
+
? (openBlock(), createElementBlock("span", _hoisted_2$9, "*"))
|
|
25399
25464
|
: createCommentVNode("v-if", true),
|
|
25400
|
-
createElementVNode("span", _hoisted_3$
|
|
25465
|
+
createElementVNode("span", _hoisted_3$9, toDisplayString(_ctx.selectedLabel || _ctx.element.title), 1 /* TEXT */),
|
|
25401
25466
|
createElementVNode("i", {
|
|
25402
25467
|
class: normalizeClass(["iconfont icon-bofang1", { 'rotate-180': _ctx.isOpen }])
|
|
25403
25468
|
}, null, 2 /* CLASS */)
|
|
@@ -25408,12 +25473,12 @@ function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25408
25473
|
onChange: _cache[2] || (_cache[2] = (...args) => (_ctx.handleChange && _ctx.handleChange(...args))),
|
|
25409
25474
|
onBlur: _cache[3] || (_cache[3] = (...args) => (_ctx.handleBlur && _ctx.handleBlur(...args)))
|
|
25410
25475
|
}, [
|
|
25411
|
-
createElementVNode("option", _hoisted_4$
|
|
25476
|
+
createElementVNode("option", _hoisted_4$8, toDisplayString(_ctx.element.title), 1 /* TEXT */),
|
|
25412
25477
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.element.items, (item) => {
|
|
25413
25478
|
return (openBlock(), createElementBlock("option", {
|
|
25414
25479
|
key: item.value,
|
|
25415
25480
|
value: item.value
|
|
25416
|
-
}, toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_5$
|
|
25481
|
+
}, toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_5$8))
|
|
25417
25482
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25418
25483
|
], 544 /* NEED_HYDRATION, NEED_PATCH */), [
|
|
25419
25484
|
[vModelSelect, _ctx.selectedValue]
|
|
@@ -25429,18 +25494,18 @@ function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25429
25494
|
key: item.value,
|
|
25430
25495
|
class: normalizeClass(["dropdown-item", { 'selected': item.value === _ctx.selectedValue }]),
|
|
25431
25496
|
onClick: $event => (_ctx.selectItem(item))
|
|
25432
|
-
}, toDisplayString(item.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_6$
|
|
25497
|
+
}, toDisplayString(item.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_6$6))
|
|
25433
25498
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25434
25499
|
], 4 /* STYLE */))
|
|
25435
25500
|
: createCommentVNode("v-if", true)
|
|
25436
25501
|
], 4 /* STYLE */)
|
|
25437
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25502
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$9))
|
|
25438
25503
|
}
|
|
25439
25504
|
|
|
25440
|
-
script$
|
|
25441
|
-
script$
|
|
25505
|
+
script$e.render = render$a;
|
|
25506
|
+
script$e.__file = "src/components/UniFormSelect/UniFormSelect.vue";
|
|
25442
25507
|
|
|
25443
|
-
var script$
|
|
25508
|
+
var script$d = defineComponent({
|
|
25444
25509
|
name: 'uni-form-single',
|
|
25445
25510
|
props: {
|
|
25446
25511
|
global: {
|
|
@@ -25521,16 +25586,16 @@ var script$c = defineComponent({
|
|
|
25521
25586
|
}
|
|
25522
25587
|
});
|
|
25523
25588
|
|
|
25524
|
-
const _hoisted_1$
|
|
25525
|
-
const _hoisted_2$
|
|
25526
|
-
const _hoisted_3$
|
|
25589
|
+
const _hoisted_1$8 = ["data-id"];
|
|
25590
|
+
const _hoisted_2$8 = { class: "fs-tit" };
|
|
25591
|
+
const _hoisted_3$8 = {
|
|
25527
25592
|
key: 0,
|
|
25528
25593
|
class: "require"
|
|
25529
25594
|
};
|
|
25530
|
-
const _hoisted_4$
|
|
25531
|
-
const _hoisted_5$
|
|
25595
|
+
const _hoisted_4$7 = ["onClick"];
|
|
25596
|
+
const _hoisted_5$7 = ["name", "value"];
|
|
25532
25597
|
|
|
25533
|
-
function render$
|
|
25598
|
+
function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25534
25599
|
return (openBlock(), createElementBlock("div", {
|
|
25535
25600
|
class: normalizeClass(["ele-form f-single eles", { 'has-error': _ctx.hasError }]),
|
|
25536
25601
|
"data-id": _ctx.element.id,
|
|
@@ -25540,9 +25605,9 @@ function render$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25540
25605
|
class: "ani-wrap",
|
|
25541
25606
|
style: normalizeStyle(_ctx.innerStyles)
|
|
25542
25607
|
}, [
|
|
25543
|
-
createElementVNode("div", _hoisted_2$
|
|
25608
|
+
createElementVNode("div", _hoisted_2$8, [
|
|
25544
25609
|
(_ctx.required)
|
|
25545
|
-
? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
25610
|
+
? (openBlock(), createElementBlock("span", _hoisted_3$8, "*"))
|
|
25546
25611
|
: createCommentVNode("v-if", true),
|
|
25547
25612
|
createTextVNode(" " + toDisplayString(_ctx.element.title), 1 /* TEXT */)
|
|
25548
25613
|
]),
|
|
@@ -25560,22 +25625,22 @@ function render$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25560
25625
|
class: "fs-txt",
|
|
25561
25626
|
style: normalizeStyle(_ctx.itemStyles)
|
|
25562
25627
|
}, toDisplayString(item.label), 5 /* TEXT, STYLE */)
|
|
25563
|
-
], 8 /* PROPS */, _hoisted_4$
|
|
25628
|
+
], 8 /* PROPS */, _hoisted_4$7))
|
|
25564
25629
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25565
25630
|
]),
|
|
25566
25631
|
createElementVNode("input", {
|
|
25567
25632
|
type: "hidden",
|
|
25568
25633
|
name: `singleselect_${_ctx.element.id}`,
|
|
25569
25634
|
value: _ctx.selectedValue
|
|
25570
|
-
}, null, 8 /* PROPS */, _hoisted_5$
|
|
25635
|
+
}, null, 8 /* PROPS */, _hoisted_5$7)
|
|
25571
25636
|
], 4 /* STYLE */)
|
|
25572
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25637
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$8))
|
|
25573
25638
|
}
|
|
25574
25639
|
|
|
25575
|
-
script$
|
|
25576
|
-
script$
|
|
25640
|
+
script$d.render = render$9;
|
|
25641
|
+
script$d.__file = "src/components/UniFormSingle/UniFormSingle.vue";
|
|
25577
25642
|
|
|
25578
|
-
var script$
|
|
25643
|
+
var script$c = defineComponent({
|
|
25579
25644
|
name: 'uni-form-multiple',
|
|
25580
25645
|
props: {
|
|
25581
25646
|
global: {
|
|
@@ -25666,16 +25731,16 @@ var script$b = defineComponent({
|
|
|
25666
25731
|
}
|
|
25667
25732
|
});
|
|
25668
25733
|
|
|
25669
|
-
const _hoisted_1$
|
|
25670
|
-
const _hoisted_2$
|
|
25671
|
-
const _hoisted_3$
|
|
25734
|
+
const _hoisted_1$7 = ["data-id"];
|
|
25735
|
+
const _hoisted_2$7 = { class: "fs-tit" };
|
|
25736
|
+
const _hoisted_3$7 = {
|
|
25672
25737
|
key: 0,
|
|
25673
25738
|
class: "require"
|
|
25674
25739
|
};
|
|
25675
|
-
const _hoisted_4$
|
|
25676
|
-
const _hoisted_5$
|
|
25740
|
+
const _hoisted_4$6 = ["onClick"];
|
|
25741
|
+
const _hoisted_5$6 = ["name", "value"];
|
|
25677
25742
|
|
|
25678
|
-
function render$
|
|
25743
|
+
function render$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25679
25744
|
return (openBlock(), createElementBlock("div", {
|
|
25680
25745
|
class: normalizeClass(["ele-form f-multiple eles", { 'has-error': _ctx.hasError }]),
|
|
25681
25746
|
"data-id": _ctx.element.id,
|
|
@@ -25685,9 +25750,9 @@ function render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25685
25750
|
class: "ani-wrap",
|
|
25686
25751
|
style: normalizeStyle(_ctx.innerStyles)
|
|
25687
25752
|
}, [
|
|
25688
|
-
createElementVNode("div", _hoisted_2$
|
|
25753
|
+
createElementVNode("div", _hoisted_2$7, [
|
|
25689
25754
|
(_ctx.required)
|
|
25690
|
-
? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
25755
|
+
? (openBlock(), createElementBlock("span", _hoisted_3$7, "*"))
|
|
25691
25756
|
: createCommentVNode("v-if", true),
|
|
25692
25757
|
createTextVNode(" " + toDisplayString(_ctx.element.title), 1 /* TEXT */)
|
|
25693
25758
|
]),
|
|
@@ -25705,22 +25770,22 @@ function render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25705
25770
|
class: "fs-txt",
|
|
25706
25771
|
style: normalizeStyle(_ctx.itemStyles)
|
|
25707
25772
|
}, toDisplayString(item.label), 5 /* TEXT, STYLE */)
|
|
25708
|
-
], 8 /* PROPS */, _hoisted_4$
|
|
25773
|
+
], 8 /* PROPS */, _hoisted_4$6))
|
|
25709
25774
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25710
25775
|
]),
|
|
25711
25776
|
createElementVNode("input", {
|
|
25712
25777
|
type: "hidden",
|
|
25713
25778
|
name: `multiselect_${_ctx.element.id}`,
|
|
25714
25779
|
value: _ctx.selectedValues.join(',')
|
|
25715
|
-
}, null, 8 /* PROPS */, _hoisted_5$
|
|
25780
|
+
}, null, 8 /* PROPS */, _hoisted_5$6)
|
|
25716
25781
|
], 4 /* STYLE */)
|
|
25717
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25782
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$7))
|
|
25718
25783
|
}
|
|
25719
25784
|
|
|
25720
|
-
script$
|
|
25721
|
-
script$
|
|
25785
|
+
script$c.render = render$8;
|
|
25786
|
+
script$c.__file = "src/components/UniFormMultiple/UniFormMultiple.vue";
|
|
25722
25787
|
|
|
25723
|
-
var script$
|
|
25788
|
+
var script$b = defineComponent({
|
|
25724
25789
|
name: 'FormContainer',
|
|
25725
25790
|
props: {
|
|
25726
25791
|
autoReset: {
|
|
@@ -25744,7 +25809,7 @@ var script$a = defineComponent({
|
|
|
25744
25809
|
}
|
|
25745
25810
|
});
|
|
25746
25811
|
|
|
25747
|
-
function render$
|
|
25812
|
+
function render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25748
25813
|
return (openBlock(), createElementBlock("form", {
|
|
25749
25814
|
class: "form-container",
|
|
25750
25815
|
onSubmit: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"]))
|
|
@@ -25753,10 +25818,10 @@ function render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
25753
25818
|
], 32 /* NEED_HYDRATION */))
|
|
25754
25819
|
}
|
|
25755
25820
|
|
|
25756
|
-
script$
|
|
25757
|
-
script$
|
|
25821
|
+
script$b.render = render$7;
|
|
25822
|
+
script$b.__file = "src/components/UniFormContainer/UniFormContainer.vue";
|
|
25758
25823
|
|
|
25759
|
-
var script$
|
|
25824
|
+
var script$a = /*#__PURE__*/ defineComponent({
|
|
25760
25825
|
...{ name: 'uni-menu-receipt' },
|
|
25761
25826
|
__name: 'UniMenuReceipt',
|
|
25762
25827
|
props: {
|
|
@@ -25786,9 +25851,9 @@ var script$9 = /*#__PURE__*/ defineComponent({
|
|
|
25786
25851
|
}
|
|
25787
25852
|
});
|
|
25788
25853
|
|
|
25789
|
-
script$
|
|
25854
|
+
script$a.__file = "src/components/UniMenuReceipt/UniMenuReceipt.vue";
|
|
25790
25855
|
|
|
25791
|
-
var script$
|
|
25856
|
+
var script$9 = /*#__PURE__*/ defineComponent({
|
|
25792
25857
|
...{ name: 'uni-menu-video' },
|
|
25793
25858
|
__name: 'UniMenuVideo',
|
|
25794
25859
|
props: {
|
|
@@ -25818,9 +25883,9 @@ var script$8 = /*#__PURE__*/ defineComponent({
|
|
|
25818
25883
|
}
|
|
25819
25884
|
});
|
|
25820
25885
|
|
|
25821
|
-
script$
|
|
25886
|
+
script$9.__file = "src/components/UniMenuVideo/UniMenuVideo.vue";
|
|
25822
25887
|
|
|
25823
|
-
var script$
|
|
25888
|
+
var script$8 = /*#__PURE__*/ defineComponent({
|
|
25824
25889
|
...{ name: 'uni-menu-tel' },
|
|
25825
25890
|
__name: 'UniMenuTel',
|
|
25826
25891
|
props: {
|
|
@@ -25850,9 +25915,9 @@ var script$7 = /*#__PURE__*/ defineComponent({
|
|
|
25850
25915
|
}
|
|
25851
25916
|
});
|
|
25852
25917
|
|
|
25853
|
-
script$
|
|
25918
|
+
script$8.__file = "src/components/UniMenuTel/UniMenuTel.vue";
|
|
25854
25919
|
|
|
25855
|
-
var script$
|
|
25920
|
+
var script$7 = /*#__PURE__*/ defineComponent({
|
|
25856
25921
|
...{ name: 'uni-menu-map' },
|
|
25857
25922
|
__name: 'UniMenuMap',
|
|
25858
25923
|
props: {
|
|
@@ -25882,9 +25947,9 @@ var script$6 = /*#__PURE__*/ defineComponent({
|
|
|
25882
25947
|
}
|
|
25883
25948
|
});
|
|
25884
25949
|
|
|
25885
|
-
script$
|
|
25950
|
+
script$7.__file = "src/components/UniMenuMap/UniMenuMap.vue";
|
|
25886
25951
|
|
|
25887
|
-
var script$
|
|
25952
|
+
var script$6 = defineComponent({
|
|
25888
25953
|
name: 'uni-menu',
|
|
25889
25954
|
props: {
|
|
25890
25955
|
global: {
|
|
@@ -25898,10 +25963,10 @@ var script$5 = defineComponent({
|
|
|
25898
25963
|
}
|
|
25899
25964
|
},
|
|
25900
25965
|
components: {
|
|
25901
|
-
UniMenuReceipt: script$
|
|
25902
|
-
UniMenuVideo: script$
|
|
25903
|
-
UniMenuTel: script$
|
|
25904
|
-
UniMenuMap: script$
|
|
25966
|
+
UniMenuReceipt: script$a,
|
|
25967
|
+
UniMenuVideo: script$9,
|
|
25968
|
+
UniMenuTel: script$8,
|
|
25969
|
+
UniMenuMap: script$7
|
|
25905
25970
|
},
|
|
25906
25971
|
setup(props) {
|
|
25907
25972
|
// 状态管理
|
|
@@ -26100,45 +26165,45 @@ var script$5 = defineComponent({
|
|
|
26100
26165
|
});
|
|
26101
26166
|
|
|
26102
26167
|
const _withScopeId$1 = n => (pushScopeId("data-v-5e9efd2f"),n=n(),popScopeId(),n);
|
|
26103
|
-
const _hoisted_1$
|
|
26168
|
+
const _hoisted_1$6 = {
|
|
26104
26169
|
key: 0,
|
|
26105
26170
|
id: "page-global"
|
|
26106
26171
|
};
|
|
26107
|
-
const _hoisted_2$
|
|
26172
|
+
const _hoisted_2$6 = {
|
|
26108
26173
|
key: 1,
|
|
26109
26174
|
id: "receipt-wrap",
|
|
26110
26175
|
class: "v-slide"
|
|
26111
26176
|
};
|
|
26112
|
-
const _hoisted_3$
|
|
26113
|
-
const _hoisted_4$
|
|
26114
|
-
const _hoisted_5$
|
|
26115
|
-
const _hoisted_6$
|
|
26116
|
-
const _hoisted_7$
|
|
26117
|
-
const _hoisted_8$
|
|
26118
|
-
const _hoisted_9$
|
|
26119
|
-
const _hoisted_10$
|
|
26177
|
+
const _hoisted_3$6 = /*#__PURE__*/ _withScopeId$1(() => /*#__PURE__*/createElementVNode("div", { class: "r-tit" }, "แบบตอบรับ", -1 /* HOISTED */));
|
|
26178
|
+
const _hoisted_4$5 = { class: "r-cont" };
|
|
26179
|
+
const _hoisted_5$5 = { class: "r-list" };
|
|
26180
|
+
const _hoisted_6$5 = ["value"];
|
|
26181
|
+
const _hoisted_7$5 = { class: "r-which" };
|
|
26182
|
+
const _hoisted_8$2 = ["value"];
|
|
26183
|
+
const _hoisted_9$2 = { class: "r-submit" };
|
|
26184
|
+
const _hoisted_10$2 = {
|
|
26120
26185
|
key: 0,
|
|
26121
26186
|
class: "which-select"
|
|
26122
26187
|
};
|
|
26123
|
-
const _hoisted_11$
|
|
26124
|
-
const _hoisted_12$
|
|
26188
|
+
const _hoisted_11$2 = ["onClick"];
|
|
26189
|
+
const _hoisted_12$2 = {
|
|
26125
26190
|
key: 1,
|
|
26126
26191
|
class: "which-select"
|
|
26127
26192
|
};
|
|
26128
|
-
const _hoisted_13$
|
|
26129
|
-
const _hoisted_14$
|
|
26193
|
+
const _hoisted_13$2 = ["onClick"];
|
|
26194
|
+
const _hoisted_14$2 = {
|
|
26130
26195
|
key: 2,
|
|
26131
26196
|
class: "tip-cover"
|
|
26132
26197
|
};
|
|
26133
|
-
const _hoisted_15$
|
|
26134
|
-
const _hoisted_16$
|
|
26135
|
-
const _hoisted_17$
|
|
26198
|
+
const _hoisted_15$2 = { class: "tip" };
|
|
26199
|
+
const _hoisted_16$2 = { class: "tip-content" };
|
|
26200
|
+
const _hoisted_17$2 = {
|
|
26136
26201
|
key: 2,
|
|
26137
26202
|
class: "global-v"
|
|
26138
26203
|
};
|
|
26139
|
-
const _hoisted_18$
|
|
26140
|
-
const _hoisted_19$
|
|
26141
|
-
_hoisted_18$
|
|
26204
|
+
const _hoisted_18$2 = /*#__PURE__*/ _withScopeId$1(() => /*#__PURE__*/createElementVNode("i", { class: "iconfont icon-buoumaotubiao20" }, null, -1 /* HOISTED */));
|
|
26205
|
+
const _hoisted_19$2 = [
|
|
26206
|
+
_hoisted_18$2
|
|
26142
26207
|
];
|
|
26143
26208
|
const _hoisted_20$1 = ["innerHTML"];
|
|
26144
26209
|
const _hoisted_21$1 = ["onClick"];
|
|
@@ -26148,7 +26213,7 @@ const _hoisted_22$1 = {
|
|
|
26148
26213
|
};
|
|
26149
26214
|
const _hoisted_23$1 = { class: "mint-toast-text" };
|
|
26150
26215
|
|
|
26151
|
-
function render$
|
|
26216
|
+
function render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
26152
26217
|
const _component_uni_menu_receipt = resolveComponent("uni-menu-receipt");
|
|
26153
26218
|
const _component_uni_menu_video = resolveComponent("uni-menu-video");
|
|
26154
26219
|
const _component_uni_menu_tel = resolveComponent("uni-menu-tel");
|
|
@@ -26157,7 +26222,7 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26157
26222
|
return (openBlock(), createElementBlock(Fragment, null, [
|
|
26158
26223
|
createCommentVNode(" 主按钮组 "),
|
|
26159
26224
|
(_ctx.showGlobalButtons)
|
|
26160
|
-
? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
26225
|
+
? (openBlock(), createElementBlock("div", _hoisted_1$6, [
|
|
26161
26226
|
createVNode(_component_uni_menu_receipt, {
|
|
26162
26227
|
global: _ctx.global,
|
|
26163
26228
|
onClick: _cache[0] || (_cache[0] = $event => (_ctx.showReceiptForm = true))
|
|
@@ -26178,15 +26243,15 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26178
26243
|
: createCommentVNode("v-if", true),
|
|
26179
26244
|
createCommentVNode(" 回执表单 "),
|
|
26180
26245
|
(_ctx.showReceiptForm)
|
|
26181
|
-
? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
26246
|
+
? (openBlock(), createElementBlock("div", _hoisted_2$6, [
|
|
26182
26247
|
createElementVNode("i", {
|
|
26183
26248
|
class: "iconfont icon-guanbi",
|
|
26184
26249
|
onClick: _cache[3] || (_cache[3] = (...args) => (_ctx.closeReceipt && _ctx.closeReceipt(...args)))
|
|
26185
26250
|
}),
|
|
26186
|
-
_hoisted_3$
|
|
26251
|
+
_hoisted_3$6,
|
|
26187
26252
|
createCommentVNode(" 宾客回执 "),
|
|
26188
|
-
createElementVNode("div", _hoisted_4$
|
|
26189
|
-
createElementVNode("ul", _hoisted_5$
|
|
26253
|
+
createElementVNode("div", _hoisted_4$5, [
|
|
26254
|
+
createElementVNode("ul", _hoisted_5$5, [
|
|
26190
26255
|
createElementVNode("li", null, [
|
|
26191
26256
|
withDirectives(createElementVNode("input", {
|
|
26192
26257
|
"onUpdate:modelValue": _cache[4] || (_cache[4] = $event => ((_ctx.receiptForm.guestName) = $event)),
|
|
@@ -26205,15 +26270,15 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26205
26270
|
value: _ctx.selectedPeopleLabel,
|
|
26206
26271
|
class: "r-input",
|
|
26207
26272
|
onClick: _cache[5] || (_cache[5] = $event => (_ctx.showPeopleSelect = true))
|
|
26208
|
-
}, null, 8 /* PROPS */, _hoisted_6$
|
|
26273
|
+
}, null, 8 /* PROPS */, _hoisted_6$5)
|
|
26209
26274
|
]),
|
|
26210
|
-
createElementVNode("li", _hoisted_7$
|
|
26275
|
+
createElementVNode("li", _hoisted_7$5, [
|
|
26211
26276
|
createElementVNode("input", {
|
|
26212
26277
|
readonly: "",
|
|
26213
26278
|
value: _ctx.selectedWhichLabel,
|
|
26214
26279
|
class: "r-input",
|
|
26215
26280
|
onClick: _cache[6] || (_cache[6] = $event => (_ctx.showWhichSelect = true))
|
|
26216
|
-
}, null, 8 /* PROPS */, _hoisted_8$
|
|
26281
|
+
}, null, 8 /* PROPS */, _hoisted_8$2)
|
|
26217
26282
|
]),
|
|
26218
26283
|
createElementVNode("li", null, [
|
|
26219
26284
|
withDirectives(createElementVNode("input", {
|
|
@@ -26227,7 +26292,7 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26227
26292
|
]),
|
|
26228
26293
|
createCommentVNode(" 手机号码 ")
|
|
26229
26294
|
]),
|
|
26230
|
-
createElementVNode("li", _hoisted_9$
|
|
26295
|
+
createElementVNode("li", _hoisted_9$2, [
|
|
26231
26296
|
createElementVNode("button", {
|
|
26232
26297
|
class: "r-btn",
|
|
26233
26298
|
onClick: _cache[8] || (_cache[8] = (...args) => (_ctx.submitReceipt && _ctx.submitReceipt(...args)))
|
|
@@ -26238,35 +26303,35 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26238
26303
|
]),
|
|
26239
26304
|
createCommentVNode(" 选择人数 "),
|
|
26240
26305
|
(_ctx.showPeopleSelect)
|
|
26241
|
-
? (openBlock(), createElementBlock("div", _hoisted_10$
|
|
26306
|
+
? (openBlock(), createElementBlock("div", _hoisted_10$2, [
|
|
26242
26307
|
createElementVNode("ul", null, [
|
|
26243
26308
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.peopleOptions, (item) => {
|
|
26244
26309
|
return (openBlock(), createElementBlock("li", {
|
|
26245
26310
|
key: item,
|
|
26246
26311
|
onClick: $event => (_ctx.selectPeople(item))
|
|
26247
|
-
}, toDisplayString(item), 9 /* TEXT, PROPS */, _hoisted_11$
|
|
26312
|
+
}, toDisplayString(item), 9 /* TEXT, PROPS */, _hoisted_11$2))
|
|
26248
26313
|
}), 128 /* KEYED_FRAGMENT */))
|
|
26249
26314
|
])
|
|
26250
26315
|
]))
|
|
26251
26316
|
: createCommentVNode("v-if", true),
|
|
26252
26317
|
createCommentVNode(" 选择男方/女方 "),
|
|
26253
26318
|
(_ctx.showWhichSelect)
|
|
26254
|
-
? (openBlock(), createElementBlock("div", _hoisted_12$
|
|
26319
|
+
? (openBlock(), createElementBlock("div", _hoisted_12$2, [
|
|
26255
26320
|
createElementVNode("ul", null, [
|
|
26256
26321
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.global.receipt.whichList, (item) => {
|
|
26257
26322
|
return (openBlock(), createElementBlock("li", {
|
|
26258
26323
|
key: item.label,
|
|
26259
26324
|
onClick: $event => (_ctx.selectWhich(item))
|
|
26260
|
-
}, toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_13$
|
|
26325
|
+
}, toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_13$2))
|
|
26261
26326
|
}), 128 /* KEYED_FRAGMENT */))
|
|
26262
26327
|
])
|
|
26263
26328
|
]))
|
|
26264
26329
|
: createCommentVNode("v-if", true),
|
|
26265
26330
|
createCommentVNode(" 提示信息 "),
|
|
26266
26331
|
(_ctx.showTip)
|
|
26267
|
-
? (openBlock(), createElementBlock("div", _hoisted_14$
|
|
26268
|
-
createElementVNode("div", _hoisted_15$
|
|
26269
|
-
createElementVNode("div", _hoisted_16$
|
|
26332
|
+
? (openBlock(), createElementBlock("div", _hoisted_14$2, [
|
|
26333
|
+
createElementVNode("div", _hoisted_15$2, [
|
|
26334
|
+
createElementVNode("div", _hoisted_16$2, toDisplayString(_ctx.tipMessage), 1 /* TEXT */),
|
|
26270
26335
|
createElementVNode("div", {
|
|
26271
26336
|
class: "tip-btn",
|
|
26272
26337
|
onClick: _cache[9] || (_cache[9] = $event => (_ctx.showTip = false))
|
|
@@ -26279,11 +26344,11 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26279
26344
|
: createCommentVNode("v-if", true),
|
|
26280
26345
|
createCommentVNode(" 视频播放 "),
|
|
26281
26346
|
(_ctx.showVideoPlayer)
|
|
26282
|
-
? (openBlock(), createElementBlock("div", _hoisted_17$
|
|
26347
|
+
? (openBlock(), createElementBlock("div", _hoisted_17$2, [
|
|
26283
26348
|
createElementVNode("div", {
|
|
26284
26349
|
id: "close-gvideo",
|
|
26285
26350
|
onClick: _cache[10] || (_cache[10] = (...args) => (_ctx.closeVideo && _ctx.closeVideo(...args)))
|
|
26286
|
-
}, [..._hoisted_19$
|
|
26351
|
+
}, [..._hoisted_19$2]),
|
|
26287
26352
|
createElementVNode("div", {
|
|
26288
26353
|
class: "global-v-show",
|
|
26289
26354
|
innerHTML: _ctx.global.video.url
|
|
@@ -26320,31 +26385,1276 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26320
26385
|
], 64 /* STABLE_FRAGMENT */))
|
|
26321
26386
|
}
|
|
26322
26387
|
|
|
26323
|
-
script$
|
|
26324
|
-
script$
|
|
26325
|
-
script$
|
|
26388
|
+
script$6.render = render$6;
|
|
26389
|
+
script$6.__scopeId = "data-v-5e9efd2f";
|
|
26390
|
+
script$6.__file = "src/components/UniMenu/UniMenu.vue";
|
|
26326
26391
|
|
|
26327
|
-
var script$
|
|
26392
|
+
var script$5 = defineComponent({
|
|
26328
26393
|
name: 'UniWatermark'
|
|
26329
26394
|
});
|
|
26330
26395
|
|
|
26331
26396
|
const _withScopeId = n => (pushScopeId("data-v-0f2e9262"),n=n(),popScopeId(),n);
|
|
26332
|
-
const _hoisted_1$
|
|
26397
|
+
const _hoisted_1$5 = {
|
|
26333
26398
|
class: "unika-watermark",
|
|
26334
26399
|
"aria-hidden": "true"
|
|
26335
26400
|
};
|
|
26336
|
-
const _hoisted_2$
|
|
26337
|
-
const _hoisted_3$
|
|
26338
|
-
_hoisted_2$
|
|
26401
|
+
const _hoisted_2$5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/createElementVNode("div", { class: "unika-watermark-pattern" }, null, -1 /* HOISTED */));
|
|
26402
|
+
const _hoisted_3$5 = [
|
|
26403
|
+
_hoisted_2$5
|
|
26339
26404
|
];
|
|
26340
26405
|
|
|
26341
|
-
function render$
|
|
26342
|
-
return (openBlock(), createElementBlock("div", _hoisted_1$
|
|
26406
|
+
function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
26407
|
+
return (openBlock(), createElementBlock("div", _hoisted_1$5, [..._hoisted_3$5]))
|
|
26343
26408
|
}
|
|
26344
26409
|
|
|
26345
|
-
script$
|
|
26346
|
-
script$
|
|
26347
|
-
script$
|
|
26410
|
+
script$5.render = render$5;
|
|
26411
|
+
script$5.__scopeId = "data-v-0f2e9262";
|
|
26412
|
+
script$5.__file = "src/components/UniWatermark/UniWatermark.vue";
|
|
26413
|
+
|
|
26414
|
+
/** Stable component type — shared across unika-components / biz-editor / ai-wedding / h5-server */
|
|
26415
|
+
const GUEST_AI_WEDDING_POSTER_TYPE = 'guest-ai-wedding-poster';
|
|
26416
|
+
const GUEST_AI_WEDDING_POSTER_VERSION = 1;
|
|
26417
|
+
/** Declarative inspector fields — shared by desktop/mobile editors */
|
|
26418
|
+
const guestAIWeddingPosterInspectorConfig = {
|
|
26419
|
+
content: [
|
|
26420
|
+
{ key: 'title', label: '组件标题', control: 'text' },
|
|
26421
|
+
{ key: 'description', label: '引导文案', control: 'textarea' },
|
|
26422
|
+
{ key: 'buttonText', label: '按钮文字', control: 'text' },
|
|
26423
|
+
{ key: 'invitationImage', label: '婚礼邀请函图片', control: 'invitation-image-upload' },
|
|
26424
|
+
{ key: 'styles', label: '风格选项', control: 'poster-style-manager' },
|
|
26425
|
+
{ key: 'result', label: '结果操作', control: 'result-actions' }
|
|
26426
|
+
],
|
|
26427
|
+
appearance: [
|
|
26428
|
+
{ key: 'appearance.backgroundColor', label: '背景颜色', control: 'color' },
|
|
26429
|
+
{ key: 'appearance.textColor', label: '文字颜色', control: 'color' },
|
|
26430
|
+
{ key: 'appearance.primaryColor', label: '主题色', control: 'color' },
|
|
26431
|
+
{ key: 'appearance.borderRadius', label: '圆角', control: 'slider' },
|
|
26432
|
+
{ key: 'appearance.buttonStyle', label: '按钮样式', control: 'select' },
|
|
26433
|
+
{ key: 'appearance.compact', label: '紧凑模式', control: 'switch' }
|
|
26434
|
+
],
|
|
26435
|
+
ai: [
|
|
26436
|
+
{ key: 'output.aspectRatio', label: '输出比例', control: 'select' },
|
|
26437
|
+
{ key: 'output.count', label: '生成数量', control: 'number' },
|
|
26438
|
+
{ key: 'upload.maxFileSizeMB', label: '照片最大大小(MB)', control: 'number' },
|
|
26439
|
+
{ key: 'privacy.autoDeleteAfterDays', label: '照片自动删除(天)', control: 'select' }
|
|
26440
|
+
]
|
|
26441
|
+
};
|
|
26442
|
+
|
|
26443
|
+
/** Demo invitation — real couple wedding invite (Jim & …). Served from /public/demo */
|
|
26444
|
+
const DEMO_INVITATION_IMAGE_URL = '/demo/guest-invitation.jpg';
|
|
26445
|
+
const defaultGuestAIWeddingPosterConfig = {
|
|
26446
|
+
version: GUEST_AI_WEDDING_POSTER_VERSION,
|
|
26447
|
+
title: '和我们一起留下婚礼纪念',
|
|
26448
|
+
description: '上传一张照片,生成你与新人的专属婚礼邀请函',
|
|
26449
|
+
buttonText: '生成专属邀请函',
|
|
26450
|
+
invitationImage: {
|
|
26451
|
+
invitationImageId: 'demo-invitation-image',
|
|
26452
|
+
invitationImageUrl: DEMO_INVITATION_IMAGE_URL
|
|
26453
|
+
},
|
|
26454
|
+
styles: [
|
|
26455
|
+
{
|
|
26456
|
+
id: 'romantic-garden',
|
|
26457
|
+
name: '浪漫花园',
|
|
26458
|
+
thumbnail: '',
|
|
26459
|
+
promptTemplateId: 'poster-romantic-garden-v1',
|
|
26460
|
+
enabled: true,
|
|
26461
|
+
sort: 1
|
|
26462
|
+
},
|
|
26463
|
+
{
|
|
26464
|
+
id: 'cinematic',
|
|
26465
|
+
name: '电影质感',
|
|
26466
|
+
thumbnail: '',
|
|
26467
|
+
promptTemplateId: 'poster-cinematic-v1',
|
|
26468
|
+
enabled: true,
|
|
26469
|
+
sort: 2
|
|
26470
|
+
},
|
|
26471
|
+
{
|
|
26472
|
+
id: 'chibi-figure',
|
|
26473
|
+
name: '可爱手办',
|
|
26474
|
+
thumbnail: '',
|
|
26475
|
+
promptTemplateId: 'poster-chibi-figure-v1',
|
|
26476
|
+
enabled: true,
|
|
26477
|
+
sort: 3
|
|
26478
|
+
},
|
|
26479
|
+
{
|
|
26480
|
+
id: 'new-chinese',
|
|
26481
|
+
name: '新中式',
|
|
26482
|
+
thumbnail: '',
|
|
26483
|
+
promptTemplateId: 'poster-new-chinese-v1',
|
|
26484
|
+
enabled: true,
|
|
26485
|
+
sort: 4
|
|
26486
|
+
}
|
|
26487
|
+
],
|
|
26488
|
+
result: {
|
|
26489
|
+
allowRegenerate: true,
|
|
26490
|
+
allowDownload: true,
|
|
26491
|
+
allowShare: true,
|
|
26492
|
+
maxRegenerateCount: 2
|
|
26493
|
+
},
|
|
26494
|
+
privacy: {
|
|
26495
|
+
requireConsent: false,
|
|
26496
|
+
consentText: '我已阅读并同意照片处理说明',
|
|
26497
|
+
noticeUrl: '',
|
|
26498
|
+
autoDeleteAfterDays: 7
|
|
26499
|
+
},
|
|
26500
|
+
upload: {
|
|
26501
|
+
maxFileSizeMB: 10,
|
|
26502
|
+
allowedTypes: ['image/jpeg', 'image/png', 'image/webp'],
|
|
26503
|
+
minWidth: 256,
|
|
26504
|
+
minHeight: 256,
|
|
26505
|
+
requireSingleFace: true
|
|
26506
|
+
},
|
|
26507
|
+
output: {
|
|
26508
|
+
aspectRatio: '3:4',
|
|
26509
|
+
count: 1
|
|
26510
|
+
},
|
|
26511
|
+
appearance: {
|
|
26512
|
+
backgroundColor: '#fffaf2',
|
|
26513
|
+
textColor: '#17345f',
|
|
26514
|
+
primaryColor: '#198cff',
|
|
26515
|
+
borderRadius: 20,
|
|
26516
|
+
buttonStyle: 'gradient',
|
|
26517
|
+
compact: false,
|
|
26518
|
+
paddingY: 16,
|
|
26519
|
+
paddingX: 16
|
|
26520
|
+
}
|
|
26521
|
+
};
|
|
26522
|
+
/** Default ElementData seed for editors */
|
|
26523
|
+
const guestAIWeddingPosterDefaultProps = {
|
|
26524
|
+
id: 'guest-ai-wedding-poster-default',
|
|
26525
|
+
pid: '',
|
|
26526
|
+
type: GUEST_AI_WEDDING_POSTER_TYPE,
|
|
26527
|
+
layerName: '宾客AI合影海报',
|
|
26528
|
+
sign: true,
|
|
26529
|
+
signSort: 20,
|
|
26530
|
+
...defaultGuestAIWeddingPosterConfig,
|
|
26531
|
+
css: {
|
|
26532
|
+
borderWidth: 0,
|
|
26533
|
+
borderStyle: 'solid',
|
|
26534
|
+
borderColor: 'rgba(153, 153, 153, 1)',
|
|
26535
|
+
opacity: 1,
|
|
26536
|
+
backgroundColor: 'transparent',
|
|
26537
|
+
width: 345,
|
|
26538
|
+
height: 420,
|
|
26539
|
+
borderRadius: 0,
|
|
26540
|
+
top: 40,
|
|
26541
|
+
left: 15,
|
|
26542
|
+
transform: 0
|
|
26543
|
+
},
|
|
26544
|
+
properties: {
|
|
26545
|
+
visible: true,
|
|
26546
|
+
isLock: false,
|
|
26547
|
+
required: false,
|
|
26548
|
+
musicName: '',
|
|
26549
|
+
musicLink: '',
|
|
26550
|
+
musicHash: '',
|
|
26551
|
+
shadowSize: 0,
|
|
26552
|
+
shadowColor: '#999999',
|
|
26553
|
+
shadowX: 0,
|
|
26554
|
+
shadowY: 0,
|
|
26555
|
+
shadowBlur: 0,
|
|
26556
|
+
shadowPoint: 270,
|
|
26557
|
+
aniOrigin: 'default',
|
|
26558
|
+
animations: []
|
|
26559
|
+
},
|
|
26560
|
+
triggers: {
|
|
26561
|
+
event: '',
|
|
26562
|
+
link: '',
|
|
26563
|
+
go: '',
|
|
26564
|
+
phone: '',
|
|
26565
|
+
musicName: '',
|
|
26566
|
+
musicLink: '',
|
|
26567
|
+
musicHash: ''
|
|
26568
|
+
}
|
|
26569
|
+
};
|
|
26570
|
+
|
|
26571
|
+
const ALLOWED_MIME = new Set(['image/jpeg', 'image/png', 'image/webp']);
|
|
26572
|
+
const ALLOWED_RATIOS = new Set(['3:4', '4:5', '9:16']);
|
|
26573
|
+
function isRecord(v) {
|
|
26574
|
+
return !!v && typeof v === 'object' && !Array.isArray(v);
|
|
26575
|
+
}
|
|
26576
|
+
function hasImageRef(ref) {
|
|
26577
|
+
return !!(ref.id && String(ref.id).trim()) || !!(ref.url && String(ref.url).trim());
|
|
26578
|
+
}
|
|
26579
|
+
/** Migrate legacy groom/bride references → invitationImage */
|
|
26580
|
+
function normalizeInvitationImage(input) {
|
|
26581
|
+
var _a, _b;
|
|
26582
|
+
if (isRecord(input.invitationImage)) {
|
|
26583
|
+
return {
|
|
26584
|
+
invitationImageId: String((_a = input.invitationImage.invitationImageId) !== null && _a !== void 0 ? _a : ''),
|
|
26585
|
+
invitationImageUrl: String((_b = input.invitationImage.invitationImageUrl) !== null && _b !== void 0 ? _b : '')
|
|
26586
|
+
};
|
|
26587
|
+
}
|
|
26588
|
+
// legacy couple refs: prefer groom url as invitation fallback
|
|
26589
|
+
if (isRecord(input.references)) {
|
|
26590
|
+
const url = String(input.references.groomReferenceUrl || input.references.brideReferenceUrl || '');
|
|
26591
|
+
const id = String(input.references.groomReferenceId || input.references.brideReferenceId || '');
|
|
26592
|
+
return { invitationImageId: id, invitationImageUrl: url };
|
|
26593
|
+
}
|
|
26594
|
+
return { ...defaultGuestAIWeddingPosterConfig.invitationImage };
|
|
26595
|
+
}
|
|
26596
|
+
function validateGuestAIWeddingPosterConfig(input, options) {
|
|
26597
|
+
var _a, _b, _c, _d, _e;
|
|
26598
|
+
const issues = [];
|
|
26599
|
+
if (!isRecord(input)) {
|
|
26600
|
+
return { ok: false, issues: [{ path: '', message: '配置必须是对象' }] };
|
|
26601
|
+
}
|
|
26602
|
+
const title = String((_a = input.title) !== null && _a !== void 0 ? _a : '').trim();
|
|
26603
|
+
if (!title) {
|
|
26604
|
+
issues.push({ path: 'title', message: '标题不能为空' });
|
|
26605
|
+
}
|
|
26606
|
+
const styles = Array.isArray(input.styles) ? input.styles : [];
|
|
26607
|
+
const enabledStyles = styles.filter((s) => isRecord(s) && s.enabled !== false);
|
|
26608
|
+
if (enabledStyles.length < 1) {
|
|
26609
|
+
issues.push({ path: 'styles', message: '至少需要 1 个启用的风格' });
|
|
26610
|
+
}
|
|
26611
|
+
const styleIds = new Set();
|
|
26612
|
+
styles.forEach((raw, index) => {
|
|
26613
|
+
var _a, _b;
|
|
26614
|
+
if (!isRecord(raw)) {
|
|
26615
|
+
issues.push({ path: `styles[${index}]`, message: '风格项无效' });
|
|
26616
|
+
return;
|
|
26617
|
+
}
|
|
26618
|
+
const id = String((_a = raw.id) !== null && _a !== void 0 ? _a : '').trim();
|
|
26619
|
+
if (!id) {
|
|
26620
|
+
issues.push({ path: `styles[${index}].id`, message: '风格必须有唯一 id' });
|
|
26621
|
+
}
|
|
26622
|
+
else if (styleIds.has(id)) {
|
|
26623
|
+
issues.push({ path: `styles[${index}].id`, message: `风格 id 重复: ${id}` });
|
|
26624
|
+
}
|
|
26625
|
+
else {
|
|
26626
|
+
styleIds.add(id);
|
|
26627
|
+
}
|
|
26628
|
+
if (raw.enabled !== false && !String((_b = raw.promptTemplateId) !== null && _b !== void 0 ? _b : '').trim()) {
|
|
26629
|
+
issues.push({
|
|
26630
|
+
path: `styles[${index}].promptTemplateId`,
|
|
26631
|
+
message: '启用风格必须有 promptTemplateId'
|
|
26632
|
+
});
|
|
26633
|
+
}
|
|
26634
|
+
});
|
|
26635
|
+
const output = isRecord(input.output) ? input.output : {};
|
|
26636
|
+
const count = Number((_b = output.count) !== null && _b !== void 0 ? _b : 1);
|
|
26637
|
+
if (!Number.isFinite(count) || count < 1 || count > 4) {
|
|
26638
|
+
issues.push({ path: 'output.count', message: '生成数量必须在 1~4 之间' });
|
|
26639
|
+
}
|
|
26640
|
+
const aspectRatio = String((_c = output.aspectRatio) !== null && _c !== void 0 ? _c : '3:4');
|
|
26641
|
+
if (!ALLOWED_RATIOS.has(aspectRatio)) {
|
|
26642
|
+
issues.push({ path: 'output.aspectRatio', message: 'aspectRatio 仅支持 3:4 / 4:5 / 9:16' });
|
|
26643
|
+
}
|
|
26644
|
+
const privacy = isRecord(input.privacy) ? input.privacy : {};
|
|
26645
|
+
const autoDeleteAfterDays = Number((_d = privacy.autoDeleteAfterDays) !== null && _d !== void 0 ? _d : 0);
|
|
26646
|
+
if (!Number.isFinite(autoDeleteAfterDays) || autoDeleteAfterDays <= 0) {
|
|
26647
|
+
issues.push({ path: 'privacy.autoDeleteAfterDays', message: 'autoDeleteAfterDays 必须大于 0' });
|
|
26648
|
+
}
|
|
26649
|
+
const upload = isRecord(input.upload) ? input.upload : {};
|
|
26650
|
+
const maxFileSizeMB = Number((_e = upload.maxFileSizeMB) !== null && _e !== void 0 ? _e : 0);
|
|
26651
|
+
if (!Number.isFinite(maxFileSizeMB) || maxFileSizeMB <= 0) {
|
|
26652
|
+
issues.push({ path: 'upload.maxFileSizeMB', message: 'maxFileSizeMB 必须大于 0' });
|
|
26653
|
+
}
|
|
26654
|
+
const allowedTypes = Array.isArray(upload.allowedTypes) ? upload.allowedTypes : [];
|
|
26655
|
+
allowedTypes.forEach((mime, i) => {
|
|
26656
|
+
if (!ALLOWED_MIME.has(String(mime))) {
|
|
26657
|
+
issues.push({ path: `upload.allowedTypes[${i}]`, message: `不支持的 MIME: ${mime}` });
|
|
26658
|
+
}
|
|
26659
|
+
});
|
|
26660
|
+
if (options === null || options === void 0 ? void 0 : options.requireReferences) {
|
|
26661
|
+
const invitationImage = normalizeInvitationImage(input);
|
|
26662
|
+
if (!hasImageRef({
|
|
26663
|
+
id: invitationImage.invitationImageId,
|
|
26664
|
+
url: invitationImage.invitationImageUrl
|
|
26665
|
+
})) {
|
|
26666
|
+
issues.push({ path: 'invitationImage', message: '需要配置婚礼邀请函图片(id 或 url)' });
|
|
26667
|
+
}
|
|
26668
|
+
}
|
|
26669
|
+
if (issues.length) {
|
|
26670
|
+
return { ok: false, issues };
|
|
26671
|
+
}
|
|
26672
|
+
return { ok: true, issues: [], value: mergeGuestAIWeddingPosterConfig(input) };
|
|
26673
|
+
}
|
|
26674
|
+
const guestAIWeddingPosterSchema = {
|
|
26675
|
+
validate: validateGuestAIWeddingPosterConfig,
|
|
26676
|
+
version: GUEST_AI_WEDDING_POSTER_VERSION
|
|
26677
|
+
};
|
|
26678
|
+
function mergeGuestAIWeddingPosterConfig(partial) {
|
|
26679
|
+
var _a, _b, _c, _d, _e;
|
|
26680
|
+
const src = (partial && typeof partial === 'object' ? partial : {});
|
|
26681
|
+
const base = defaultGuestAIWeddingPosterConfig;
|
|
26682
|
+
return {
|
|
26683
|
+
...base,
|
|
26684
|
+
...src,
|
|
26685
|
+
version: Number((_a = src.version) !== null && _a !== void 0 ? _a : base.version) || GUEST_AI_WEDDING_POSTER_VERSION,
|
|
26686
|
+
title: String((_b = src.title) !== null && _b !== void 0 ? _b : base.title),
|
|
26687
|
+
description: String((_c = src.description) !== null && _c !== void 0 ? _c : base.description),
|
|
26688
|
+
buttonText: String((_d = src.buttonText) !== null && _d !== void 0 ? _d : base.buttonText),
|
|
26689
|
+
invitationImage: {
|
|
26690
|
+
...base.invitationImage,
|
|
26691
|
+
...normalizeInvitationImage(src)
|
|
26692
|
+
},
|
|
26693
|
+
styles: Array.isArray(src.styles)
|
|
26694
|
+
? src.styles
|
|
26695
|
+
: base.styles.map((s) => ({ ...s })),
|
|
26696
|
+
result: {
|
|
26697
|
+
...base.result,
|
|
26698
|
+
...(isRecord(src.result) ? src.result : {})
|
|
26699
|
+
},
|
|
26700
|
+
privacy: {
|
|
26701
|
+
...base.privacy,
|
|
26702
|
+
...(isRecord(src.privacy) ? src.privacy : {})
|
|
26703
|
+
},
|
|
26704
|
+
upload: {
|
|
26705
|
+
...base.upload,
|
|
26706
|
+
...(isRecord(src.upload) ? src.upload : {}),
|
|
26707
|
+
allowedTypes: Array.isArray((_e = src.upload) === null || _e === void 0 ? void 0 : _e.allowedTypes)
|
|
26708
|
+
? [...src.upload.allowedTypes]
|
|
26709
|
+
: [...base.upload.allowedTypes]
|
|
26710
|
+
},
|
|
26711
|
+
output: {
|
|
26712
|
+
...base.output,
|
|
26713
|
+
...(isRecord(src.output) ? src.output : {})
|
|
26714
|
+
},
|
|
26715
|
+
appearance: {
|
|
26716
|
+
...base.appearance,
|
|
26717
|
+
...(isRecord(src.appearance) ? src.appearance : {})
|
|
26718
|
+
}
|
|
26719
|
+
};
|
|
26720
|
+
}
|
|
26721
|
+
function migrateGuestAIWeddingPosterConfig(config, fromVersion, toVersion = GUEST_AI_WEDDING_POSTER_VERSION) {
|
|
26722
|
+
var _a;
|
|
26723
|
+
const raw = isRecord(config) ? { ...config } : {};
|
|
26724
|
+
const from = Number((_a = fromVersion !== null && fromVersion !== void 0 ? fromVersion : raw.version) !== null && _a !== void 0 ? _a : 1) || 1;
|
|
26725
|
+
let current = mergeGuestAIWeddingPosterConfig(raw);
|
|
26726
|
+
if (from < 1) {
|
|
26727
|
+
current = mergeGuestAIWeddingPosterConfig(raw);
|
|
26728
|
+
}
|
|
26729
|
+
current.version = Math.min(toVersion, GUEST_AI_WEDDING_POSTER_VERSION);
|
|
26730
|
+
return current;
|
|
26731
|
+
}
|
|
26732
|
+
function resolveGuestAIWeddingPosterConfig(element) {
|
|
26733
|
+
var _a, _b;
|
|
26734
|
+
if (!element || typeof element !== 'object') {
|
|
26735
|
+
return mergeGuestAIWeddingPosterConfig(null);
|
|
26736
|
+
}
|
|
26737
|
+
const nested = isRecord(element.guestPoster) ? element.guestPoster : null;
|
|
26738
|
+
const source = nested || element;
|
|
26739
|
+
const fromVersion = Number((_b = (_a = source.version) !== null && _a !== void 0 ? _a : element.version) !== null && _b !== void 0 ? _b : 1);
|
|
26740
|
+
return migrateGuestAIWeddingPosterConfig(source, fromVersion);
|
|
26741
|
+
}
|
|
26742
|
+
|
|
26743
|
+
/**
|
|
26744
|
+
* Mock GuestPosterService for editor preview / local development.
|
|
26745
|
+
* REPLACE with a real API adapter in ai-wedding / h5-server runtime.
|
|
26746
|
+
* Do not scatter fake data inside the Vue component.
|
|
26747
|
+
*/
|
|
26748
|
+
function createMockGuestPosterService(options) {
|
|
26749
|
+
var _a;
|
|
26750
|
+
const delay = (_a = options === null || options === void 0 ? void 0 : options.delayMs) !== null && _a !== void 0 ? _a : 900;
|
|
26751
|
+
const jobs = new Map();
|
|
26752
|
+
const wait = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
26753
|
+
return {
|
|
26754
|
+
async uploadGuestPhoto(file, _context) {
|
|
26755
|
+
if (options === null || options === void 0 ? void 0 : options.failUpload) {
|
|
26756
|
+
throw { code: 'UPLOAD_FAILED', message: '照片上传失败,请检查网络后重试' };
|
|
26757
|
+
}
|
|
26758
|
+
await wait(delay);
|
|
26759
|
+
// Object URL only for local demo — real adapter must use short-lived signed URL
|
|
26760
|
+
let previewUrl;
|
|
26761
|
+
try {
|
|
26762
|
+
if (typeof URL !== 'undefined' && typeof URL.createObjectURL === 'function') {
|
|
26763
|
+
previewUrl = URL.createObjectURL(file);
|
|
26764
|
+
}
|
|
26765
|
+
}
|
|
26766
|
+
catch {
|
|
26767
|
+
previewUrl = undefined;
|
|
26768
|
+
}
|
|
26769
|
+
return {
|
|
26770
|
+
assetId: `mock-guest-${Date.now()}`,
|
|
26771
|
+
previewUrl,
|
|
26772
|
+
width: 1024,
|
|
26773
|
+
height: 1024
|
|
26774
|
+
};
|
|
26775
|
+
},
|
|
26776
|
+
async createPosterJob(request) {
|
|
26777
|
+
if (options === null || options === void 0 ? void 0 : options.failGenerate) {
|
|
26778
|
+
throw { code: 'GENERATE_FAILED', message: '海报生成失败,请稍后重试' };
|
|
26779
|
+
}
|
|
26780
|
+
const id = `mock-job-${request.idempotencyKey.slice(0, 8)}-${Date.now()}`;
|
|
26781
|
+
const job = {
|
|
26782
|
+
id,
|
|
26783
|
+
status: 'queued',
|
|
26784
|
+
stage: 'queued',
|
|
26785
|
+
createdAt: new Date().toISOString(),
|
|
26786
|
+
updatedAt: new Date().toISOString()
|
|
26787
|
+
};
|
|
26788
|
+
jobs.set(id, job);
|
|
26789
|
+
// Simulate async progression without a fixed fake percent UI
|
|
26790
|
+
void (async () => {
|
|
26791
|
+
await wait(delay);
|
|
26792
|
+
const j1 = jobs.get(id);
|
|
26793
|
+
if (!j1 || j1.status === 'cancelled')
|
|
26794
|
+
return;
|
|
26795
|
+
j1.status = 'generating';
|
|
26796
|
+
j1.stage = 'generating';
|
|
26797
|
+
j1.updatedAt = new Date().toISOString();
|
|
26798
|
+
await wait(delay * 1.2);
|
|
26799
|
+
const j2 = jobs.get(id);
|
|
26800
|
+
if (!j2 || j2.status === 'cancelled')
|
|
26801
|
+
return;
|
|
26802
|
+
const inviteHint = request.invitationImageId ? '邀请函+宾客合影' : '专属邀请函';
|
|
26803
|
+
const fallbackSvg = 'data:image/svg+xml,' +
|
|
26804
|
+
encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="600" height="800">
|
|
26805
|
+
<defs><linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
|
|
26806
|
+
<stop stop-color="#fff8f0"/><stop offset="1" stop-color="#f0e4d4"/>
|
|
26807
|
+
</linearGradient></defs>
|
|
26808
|
+
<rect width="100%" height="100%" fill="url(#g)"/>
|
|
26809
|
+
<rect x="40" y="40" width="520" height="720" fill="none" stroke="#c4a574" stroke-width="3"/>
|
|
26810
|
+
<text x="300" y="110" text-anchor="middle" font-size="26" fill="#8b6914" font-family="serif">Wedding Invitation</text>
|
|
26811
|
+
<circle cx="160" cy="300" r="55" fill="#6d8fb5"/>
|
|
26812
|
+
<circle cx="300" cy="280" r="62" fill="#b7c7de"/>
|
|
26813
|
+
<circle cx="440" cy="300" r="55" fill="#c489a4"/>
|
|
26814
|
+
<text x="160" y="390" text-anchor="middle" font-size="14" fill="#17345f">新郎</text>
|
|
26815
|
+
<text x="300" y="390" text-anchor="middle" font-size="14" fill="#17345f">宾客</text>
|
|
26816
|
+
<text x="440" y="390" text-anchor="middle" font-size="14" fill="#5a2a40">新娘</text>
|
|
26817
|
+
<text x="300" y="480" text-anchor="middle" font-size="22" fill="#6b4f2a">${inviteHint}</text>
|
|
26818
|
+
<text x="300" y="520" text-anchor="middle" font-size="14" fill="#8a7355">Mock · ${request.styleId}</text>
|
|
26819
|
+
<text x="300" y="560" text-anchor="middle" font-size="12" fill="#a09080">将宾客与邀请函中的新人合成</text>
|
|
26820
|
+
</svg>`);
|
|
26821
|
+
const imageUrl = (options === null || options === void 0 ? void 0 : options.resultImageUrl) || fallbackSvg;
|
|
26822
|
+
const results = Array.from({ length: request.output.count || 1 }).map((_, i) => ({
|
|
26823
|
+
id: `${id}-result-${i}`,
|
|
26824
|
+
imageUrl,
|
|
26825
|
+
thumbnailUrl: imageUrl,
|
|
26826
|
+
width: 600,
|
|
26827
|
+
height: 800
|
|
26828
|
+
}));
|
|
26829
|
+
j2.status = 'completed';
|
|
26830
|
+
j2.stage = 'completed';
|
|
26831
|
+
j2.results = results;
|
|
26832
|
+
j2.updatedAt = new Date().toISOString();
|
|
26833
|
+
})();
|
|
26834
|
+
return { ...job };
|
|
26835
|
+
},
|
|
26836
|
+
async getPosterJob(jobId) {
|
|
26837
|
+
const job = jobs.get(jobId);
|
|
26838
|
+
if (!job) {
|
|
26839
|
+
return {
|
|
26840
|
+
id: jobId,
|
|
26841
|
+
status: 'failed',
|
|
26842
|
+
errorCode: 'NOT_FOUND',
|
|
26843
|
+
errorMessage: '任务不存在或已过期'
|
|
26844
|
+
};
|
|
26845
|
+
}
|
|
26846
|
+
return { ...job, results: job.results ? [...job.results] : undefined };
|
|
26847
|
+
},
|
|
26848
|
+
async cancelPosterJob(jobId) {
|
|
26849
|
+
const job = jobs.get(jobId);
|
|
26850
|
+
if (job && job.status !== 'completed') {
|
|
26851
|
+
job.status = 'cancelled';
|
|
26852
|
+
job.updatedAt = new Date().toISOString();
|
|
26853
|
+
}
|
|
26854
|
+
},
|
|
26855
|
+
async downloadResult(_resultId) {
|
|
26856
|
+
return new Blob(['mock-poster'], { type: 'image/png' });
|
|
26857
|
+
},
|
|
26858
|
+
async getQuota(_invitationId) {
|
|
26859
|
+
const maxPerWork = 100;
|
|
26860
|
+
return { used: 0, maxPerWork, remaining: maxPerWork };
|
|
26861
|
+
}
|
|
26862
|
+
};
|
|
26863
|
+
}
|
|
26864
|
+
|
|
26865
|
+
const GUEST_POSTER_SERVICE_KEY = Symbol('GuestPosterService');
|
|
26866
|
+
/** Resolve runtime service: inject → provided callbacks → mock (never call vendor APIs here). */
|
|
26867
|
+
function resolveGuestPosterService(injectedOrProvided) {
|
|
26868
|
+
if (injectedOrProvided)
|
|
26869
|
+
return injectedOrProvided;
|
|
26870
|
+
const fromInject = inject(GUEST_POSTER_SERVICE_KEY, null);
|
|
26871
|
+
if (fromInject)
|
|
26872
|
+
return fromInject;
|
|
26873
|
+
return createMockGuestPosterService();
|
|
26874
|
+
}
|
|
26875
|
+
function guestPosterJobStorageKey(componentId) {
|
|
26876
|
+
return `guest-ai-poster-job:${componentId}`;
|
|
26877
|
+
}
|
|
26878
|
+
function loadStoredJobId(componentId) {
|
|
26879
|
+
try {
|
|
26880
|
+
if (typeof sessionStorage === 'undefined')
|
|
26881
|
+
return null;
|
|
26882
|
+
return sessionStorage.getItem(guestPosterJobStorageKey(componentId));
|
|
26883
|
+
}
|
|
26884
|
+
catch {
|
|
26885
|
+
return null;
|
|
26886
|
+
}
|
|
26887
|
+
}
|
|
26888
|
+
function saveStoredJobId(componentId, jobId) {
|
|
26889
|
+
try {
|
|
26890
|
+
if (typeof sessionStorage === 'undefined')
|
|
26891
|
+
return;
|
|
26892
|
+
const key = guestPosterJobStorageKey(componentId);
|
|
26893
|
+
if (!jobId)
|
|
26894
|
+
sessionStorage.removeItem(key);
|
|
26895
|
+
else
|
|
26896
|
+
sessionStorage.setItem(key, jobId);
|
|
26897
|
+
}
|
|
26898
|
+
catch {
|
|
26899
|
+
/* ignore quota / private mode */
|
|
26900
|
+
}
|
|
26901
|
+
}
|
|
26902
|
+
function mapJobStatusToUi(status) {
|
|
26903
|
+
if (status === 'completed')
|
|
26904
|
+
return 'completed';
|
|
26905
|
+
if (status === 'failed' || status === 'cancelled')
|
|
26906
|
+
return 'failed';
|
|
26907
|
+
if (status === 'queued' || status === 'preprocessing')
|
|
26908
|
+
return 'queued';
|
|
26909
|
+
return 'generating';
|
|
26910
|
+
}
|
|
26911
|
+
function guestPosterErrorMessage(code, fallback) {
|
|
26912
|
+
switch (code) {
|
|
26913
|
+
case 'NO_FACE':
|
|
26914
|
+
return '没有检测到清晰人脸,请更换照片';
|
|
26915
|
+
case 'MULTI_FACE':
|
|
26916
|
+
return '请上传只包含你本人的单人照片';
|
|
26917
|
+
case 'TOO_SMALL':
|
|
26918
|
+
return '照片清晰度不足,请更换照片';
|
|
26919
|
+
case 'UPLOAD_FAILED':
|
|
26920
|
+
return '照片上传失败,请检查网络后重试';
|
|
26921
|
+
case 'TIMEOUT':
|
|
26922
|
+
case 'GENERATION_TIMEOUT':
|
|
26923
|
+
return '生成时间较长,你可以稍后回来查看';
|
|
26924
|
+
case 'CONTENT_BLOCKED':
|
|
26925
|
+
case 'GENERATION_REJECTED':
|
|
26926
|
+
return '该照片暂时无法用于生成,请更换照片';
|
|
26927
|
+
case 'PROVIDER_AUTH_FAILED':
|
|
26928
|
+
return '图像服务未配置,请联系管理员';
|
|
26929
|
+
case '40410':
|
|
26930
|
+
return '作品不存在或链接无效';
|
|
26931
|
+
case '40312':
|
|
26932
|
+
return '作品未发布,无法生成';
|
|
26933
|
+
case '40005':
|
|
26934
|
+
return fallback || '本作品生成次数已达上限';
|
|
26935
|
+
case 'GENERATE_FAILED':
|
|
26936
|
+
case 'EMPTY_RESULT':
|
|
26937
|
+
case 'PROVIDER_ERROR':
|
|
26938
|
+
return fallback || '海报生成失败,请稍后重试';
|
|
26939
|
+
default:
|
|
26940
|
+
return fallback || '操作失败,请稍后重试';
|
|
26941
|
+
}
|
|
26942
|
+
}
|
|
26943
|
+
const IMAGE_MIME_BY_MAGIC = [
|
|
26944
|
+
{
|
|
26945
|
+
mime: 'image/jpeg',
|
|
26946
|
+
test: (b) => b.length >= 3 && b[0] === 0xff && b[1] === 0xd8 && b[2] === 0xff
|
|
26947
|
+
},
|
|
26948
|
+
{
|
|
26949
|
+
mime: 'image/png',
|
|
26950
|
+
test: (b) => b.length >= 8 &&
|
|
26951
|
+
b[0] === 0x89 &&
|
|
26952
|
+
b[1] === 0x50 &&
|
|
26953
|
+
b[2] === 0x4e &&
|
|
26954
|
+
b[3] === 0x47
|
|
26955
|
+
},
|
|
26956
|
+
{
|
|
26957
|
+
mime: 'image/webp',
|
|
26958
|
+
test: (b) => b.length >= 12 &&
|
|
26959
|
+
b[0] === 0x52 &&
|
|
26960
|
+
b[1] === 0x49 &&
|
|
26961
|
+
b[2] === 0x46 &&
|
|
26962
|
+
b[3] === 0x46 &&
|
|
26963
|
+
b[8] === 0x57 &&
|
|
26964
|
+
b[9] === 0x45 &&
|
|
26965
|
+
b[10] === 0x42 &&
|
|
26966
|
+
b[11] === 0x50
|
|
26967
|
+
}
|
|
26968
|
+
];
|
|
26969
|
+
async function detectImageMime(file) {
|
|
26970
|
+
const slice = file.slice(0, 16);
|
|
26971
|
+
let buf;
|
|
26972
|
+
if (typeof slice.arrayBuffer === 'function') {
|
|
26973
|
+
buf = await slice.arrayBuffer();
|
|
26974
|
+
}
|
|
26975
|
+
else {
|
|
26976
|
+
buf = await new Promise((resolve, reject) => {
|
|
26977
|
+
const reader = new FileReader();
|
|
26978
|
+
reader.onload = () => resolve(reader.result);
|
|
26979
|
+
reader.onerror = () => reject(reader.error);
|
|
26980
|
+
reader.readAsArrayBuffer(slice);
|
|
26981
|
+
});
|
|
26982
|
+
}
|
|
26983
|
+
const bytes = new Uint8Array(buf);
|
|
26984
|
+
for (const item of IMAGE_MIME_BY_MAGIC) {
|
|
26985
|
+
if (item.test(bytes))
|
|
26986
|
+
return item.mime;
|
|
26987
|
+
}
|
|
26988
|
+
return null;
|
|
26989
|
+
}
|
|
26990
|
+
async function readImageSize(file) {
|
|
26991
|
+
if (typeof createImageBitmap === 'function') {
|
|
26992
|
+
try {
|
|
26993
|
+
const bmp = await createImageBitmap(file);
|
|
26994
|
+
const size = { width: bmp.width, height: bmp.height };
|
|
26995
|
+
bmp.close();
|
|
26996
|
+
return size;
|
|
26997
|
+
}
|
|
26998
|
+
catch {
|
|
26999
|
+
/* fall through */
|
|
27000
|
+
}
|
|
27001
|
+
}
|
|
27002
|
+
return new Promise((resolve) => {
|
|
27003
|
+
const url = URL.createObjectURL(file);
|
|
27004
|
+
const img = new Image();
|
|
27005
|
+
img.onload = () => {
|
|
27006
|
+
const size = { width: img.naturalWidth, height: img.naturalHeight };
|
|
27007
|
+
URL.revokeObjectURL(url);
|
|
27008
|
+
resolve(size);
|
|
27009
|
+
};
|
|
27010
|
+
img.onerror = () => {
|
|
27011
|
+
URL.revokeObjectURL(url);
|
|
27012
|
+
resolve(null);
|
|
27013
|
+
};
|
|
27014
|
+
img.src = url;
|
|
27015
|
+
});
|
|
27016
|
+
}
|
|
27017
|
+
function createIdempotencyKey(componentId) {
|
|
27018
|
+
return `${componentId}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
27019
|
+
}
|
|
27020
|
+
|
|
27021
|
+
const DEMO_RESULT = {
|
|
27022
|
+
id: 'editor-demo-result',
|
|
27023
|
+
imageUrl: 'data:image/svg+xml,' +
|
|
27024
|
+
encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="600" height="800">
|
|
27025
|
+
<rect width="100%" height="100%" fill="#fff6ea"/>
|
|
27026
|
+
<text x="50%" y="48%" text-anchor="middle" font-size="24" fill="#17345f">示例合影邀请函</text>
|
|
27027
|
+
<text x="50%" y="56%" text-anchor="middle" font-size="14" fill="#7a8799">编辑器预览</text>
|
|
27028
|
+
</svg>`),
|
|
27029
|
+
width: 600,
|
|
27030
|
+
height: 800
|
|
27031
|
+
};
|
|
27032
|
+
var script$4 = defineComponent({
|
|
27033
|
+
name: 'uni-guest-ai-wedding-poster',
|
|
27034
|
+
props: {
|
|
27035
|
+
element: {
|
|
27036
|
+
type: Object,
|
|
27037
|
+
required: true
|
|
27038
|
+
},
|
|
27039
|
+
isEditing: {
|
|
27040
|
+
type: Boolean,
|
|
27041
|
+
default: false
|
|
27042
|
+
},
|
|
27043
|
+
env: {
|
|
27044
|
+
type: String,
|
|
27045
|
+
default: 'prd'
|
|
27046
|
+
},
|
|
27047
|
+
invitationId: {
|
|
27048
|
+
type: String,
|
|
27049
|
+
default: ''
|
|
27050
|
+
},
|
|
27051
|
+
global: {
|
|
27052
|
+
type: Object,
|
|
27053
|
+
default: null
|
|
27054
|
+
},
|
|
27055
|
+
guestPosterService: {
|
|
27056
|
+
type: Object,
|
|
27057
|
+
default: null
|
|
27058
|
+
}
|
|
27059
|
+
},
|
|
27060
|
+
emits: ['trigger', 'track', 'error'],
|
|
27061
|
+
setup(props, { emit }) {
|
|
27062
|
+
const injected = inject(GUEST_POSTER_SERVICE_KEY, null);
|
|
27063
|
+
const fileInputRef = ref(null);
|
|
27064
|
+
const sceneId = computed(() => {
|
|
27065
|
+
const fromProp = props.invitationId;
|
|
27066
|
+
if (fromProp)
|
|
27067
|
+
return fromProp;
|
|
27068
|
+
const g = props.global || {};
|
|
27069
|
+
return String(g.sceneId || g.uuid || g.scene_id || '');
|
|
27070
|
+
});
|
|
27071
|
+
const config = computed(() => resolveGuestAIWeddingPosterConfig(props.element));
|
|
27072
|
+
const uiState = ref(props.isEditing ? 'configuring' : 'idle');
|
|
27073
|
+
const guestPhoto = ref(null);
|
|
27074
|
+
const guestPreviewUrl = ref('');
|
|
27075
|
+
const selectedStyleId = ref('');
|
|
27076
|
+
const errorMessage = ref('');
|
|
27077
|
+
const toastText = ref('');
|
|
27078
|
+
const resultList = ref([]);
|
|
27079
|
+
const currentJobId = ref(null);
|
|
27080
|
+
const regenerateUsed = ref(0);
|
|
27081
|
+
const idempotencyKey = ref('');
|
|
27082
|
+
const quotaUsed = ref(0);
|
|
27083
|
+
const quotaMax = ref(100);
|
|
27084
|
+
let pollTimer = null;
|
|
27085
|
+
let pollDelay = 2000;
|
|
27086
|
+
let toastTimer = null;
|
|
27087
|
+
let objectUrlToRevoke = null;
|
|
27088
|
+
const enabledStyles = computed(() => [...config.value.styles]
|
|
27089
|
+
.filter((s) => s.enabled)
|
|
27090
|
+
.sort((a, b) => a.sort - b.sort));
|
|
27091
|
+
const quotaText = computed(() => {
|
|
27092
|
+
const max = quotaMax.value;
|
|
27093
|
+
const used = quotaUsed.value;
|
|
27094
|
+
if (!max)
|
|
27095
|
+
return '';
|
|
27096
|
+
return `本作品还可生成 ${Math.max(0, max - used)} / ${max} 张`;
|
|
27097
|
+
});
|
|
27098
|
+
const regenerateLeft = computed(() => {
|
|
27099
|
+
const max = config.value.result.maxRegenerateCount;
|
|
27100
|
+
if (max === undefined || max === null)
|
|
27101
|
+
return -1;
|
|
27102
|
+
return Math.max(0, max - regenerateUsed.value);
|
|
27103
|
+
});
|
|
27104
|
+
const statusHint = computed(() => {
|
|
27105
|
+
if (uiState.value === 'submitting')
|
|
27106
|
+
return '正在提交…';
|
|
27107
|
+
if (uiState.value === 'queued')
|
|
27108
|
+
return '排队中…';
|
|
27109
|
+
return '正在生成你与新人的专属邀请函…';
|
|
27110
|
+
});
|
|
27111
|
+
const canSubmit = computed(() => {
|
|
27112
|
+
if (props.isEditing)
|
|
27113
|
+
return true;
|
|
27114
|
+
if (['uploading', 'submitting', 'queued', 'generating'].includes(uiState.value))
|
|
27115
|
+
return false;
|
|
27116
|
+
if (!guestPhoto.value || !selectedStyleId.value)
|
|
27117
|
+
return false;
|
|
27118
|
+
if (quotaMax.value > 0 && quotaUsed.value >= quotaMax.value)
|
|
27119
|
+
return false;
|
|
27120
|
+
const inv = config.value.invitationImage;
|
|
27121
|
+
return !!(inv.invitationImageId || inv.invitationImageUrl);
|
|
27122
|
+
});
|
|
27123
|
+
const rootStyle = computed(() => {
|
|
27124
|
+
var _a, _b, _c, _d;
|
|
27125
|
+
const css = props.element.css || {};
|
|
27126
|
+
const appearance = config.value.appearance;
|
|
27127
|
+
const style = {
|
|
27128
|
+
width: typeof css.width === 'number' ? px2rem(css.width) : String(css.width || '100%'),
|
|
27129
|
+
maxWidth: '480px',
|
|
27130
|
+
opacity: String((_a = css.opacity) !== null && _a !== void 0 ? _a : 1),
|
|
27131
|
+
transform: `rotate(${css.transform || 0}deg)`,
|
|
27132
|
+
backgroundColor: appearance.backgroundColor || '#fffaf2',
|
|
27133
|
+
color: appearance.textColor || '#17345f',
|
|
27134
|
+
borderRadius: `${(_b = appearance.borderRadius) !== null && _b !== void 0 ? _b : 20}px`,
|
|
27135
|
+
padding: `${(_c = appearance.paddingY) !== null && _c !== void 0 ? _c : 16}px ${(_d = appearance.paddingX) !== null && _d !== void 0 ? _d : 16}px`,
|
|
27136
|
+
['--gap-primary']: appearance.primaryColor || '#198cff',
|
|
27137
|
+
position: 'relative'
|
|
27138
|
+
};
|
|
27139
|
+
if (css.height != null && String(css.height) !== 'auto') {
|
|
27140
|
+
style.minHeight = typeof css.height === 'number' ? px2rem(css.height) : String(css.height);
|
|
27141
|
+
}
|
|
27142
|
+
return style;
|
|
27143
|
+
});
|
|
27144
|
+
function track(event, payload) {
|
|
27145
|
+
emit('track', { event, ...(payload || {}) });
|
|
27146
|
+
}
|
|
27147
|
+
function showToast(msg) {
|
|
27148
|
+
toastText.value = msg;
|
|
27149
|
+
if (toastTimer)
|
|
27150
|
+
clearTimeout(toastTimer);
|
|
27151
|
+
toastTimer = setTimeout(() => {
|
|
27152
|
+
toastText.value = '';
|
|
27153
|
+
}, 2200);
|
|
27154
|
+
}
|
|
27155
|
+
function getService() {
|
|
27156
|
+
return resolveGuestPosterService(props.guestPosterService || injected);
|
|
27157
|
+
}
|
|
27158
|
+
function stopPolling() {
|
|
27159
|
+
if (pollTimer) {
|
|
27160
|
+
clearTimeout(pollTimer);
|
|
27161
|
+
pollTimer = null;
|
|
27162
|
+
}
|
|
27163
|
+
pollDelay = 2000;
|
|
27164
|
+
}
|
|
27165
|
+
function schedulePoll() {
|
|
27166
|
+
stopPolling();
|
|
27167
|
+
const hidden = typeof document !== 'undefined' && document.visibilityState === 'hidden';
|
|
27168
|
+
const delay = hidden ? Math.max(pollDelay, 8000) : pollDelay;
|
|
27169
|
+
pollTimer = setTimeout(() => {
|
|
27170
|
+
void pollJob();
|
|
27171
|
+
}, delay);
|
|
27172
|
+
pollDelay = Math.min(Math.floor(pollDelay * 1.35), 12000);
|
|
27173
|
+
}
|
|
27174
|
+
async function pollJob() {
|
|
27175
|
+
const jobId = currentJobId.value;
|
|
27176
|
+
if (!jobId || props.isEditing) {
|
|
27177
|
+
stopPolling();
|
|
27178
|
+
return;
|
|
27179
|
+
}
|
|
27180
|
+
try {
|
|
27181
|
+
const job = await getService().getPosterJob(jobId);
|
|
27182
|
+
applyJob(job);
|
|
27183
|
+
if (job.status === 'completed' || job.status === 'failed' || job.status === 'cancelled') {
|
|
27184
|
+
stopPolling();
|
|
27185
|
+
return;
|
|
27186
|
+
}
|
|
27187
|
+
schedulePoll();
|
|
27188
|
+
}
|
|
27189
|
+
catch {
|
|
27190
|
+
schedulePoll();
|
|
27191
|
+
}
|
|
27192
|
+
}
|
|
27193
|
+
function applyJob(job) {
|
|
27194
|
+
currentJobId.value = job.id;
|
|
27195
|
+
const mapped = mapJobStatusToUi(job.status);
|
|
27196
|
+
if (mapped === 'completed') {
|
|
27197
|
+
uiState.value = 'completed';
|
|
27198
|
+
resultList.value = job.results || [];
|
|
27199
|
+
saveStoredJobId(String(props.element.id), job.id);
|
|
27200
|
+
track('guest_poster_generate_success', { jobId: job.id });
|
|
27201
|
+
void refreshQuota();
|
|
27202
|
+
}
|
|
27203
|
+
else if (mapped === 'failed') {
|
|
27204
|
+
uiState.value = 'failed';
|
|
27205
|
+
errorMessage.value = guestPosterErrorMessage(job.errorCode, job.errorMessage);
|
|
27206
|
+
saveStoredJobId(String(props.element.id), null);
|
|
27207
|
+
track('guest_poster_generate_failed', { code: job.errorCode || 'FAILED' });
|
|
27208
|
+
emit('error', { code: job.errorCode || 'FAILED', message: errorMessage.value });
|
|
27209
|
+
}
|
|
27210
|
+
else {
|
|
27211
|
+
uiState.value = mapped;
|
|
27212
|
+
errorMessage.value = '';
|
|
27213
|
+
}
|
|
27214
|
+
}
|
|
27215
|
+
async function refreshQuota() {
|
|
27216
|
+
const svc = getService();
|
|
27217
|
+
if (!svc.getQuota)
|
|
27218
|
+
return;
|
|
27219
|
+
try {
|
|
27220
|
+
const q = await svc.getQuota(sceneId.value || String(props.element.id));
|
|
27221
|
+
quotaUsed.value = Number(q.used) || 0;
|
|
27222
|
+
quotaMax.value = Number(q.maxPerWork) || 100;
|
|
27223
|
+
}
|
|
27224
|
+
catch {
|
|
27225
|
+
/* ignore */
|
|
27226
|
+
}
|
|
27227
|
+
}
|
|
27228
|
+
function onUploadAreaClick() {
|
|
27229
|
+
if (props.isEditing) {
|
|
27230
|
+
showToast('发布后宾客可上传照片');
|
|
27231
|
+
return;
|
|
27232
|
+
}
|
|
27233
|
+
if (uiState.value === 'uploading')
|
|
27234
|
+
return;
|
|
27235
|
+
triggerFilePick();
|
|
27236
|
+
}
|
|
27237
|
+
function triggerFilePick() {
|
|
27238
|
+
var _a;
|
|
27239
|
+
if (props.isEditing)
|
|
27240
|
+
return;
|
|
27241
|
+
(_a = fileInputRef.value) === null || _a === void 0 ? void 0 : _a.click();
|
|
27242
|
+
}
|
|
27243
|
+
async function onFileChange(ev) {
|
|
27244
|
+
const input = ev.target;
|
|
27245
|
+
const file = input.files && input.files[0];
|
|
27246
|
+
input.value = '';
|
|
27247
|
+
if (!file || props.isEditing)
|
|
27248
|
+
return;
|
|
27249
|
+
errorMessage.value = '';
|
|
27250
|
+
track('guest_photo_upload_start');
|
|
27251
|
+
try {
|
|
27252
|
+
const mime = await detectImageMime(file);
|
|
27253
|
+
const allowed = config.value.upload.allowedTypes;
|
|
27254
|
+
if (!mime || !allowed.includes(mime)) {
|
|
27255
|
+
throw { code: 'UPLOAD_FAILED', message: '仅支持 JPEG / PNG / WebP 图片' };
|
|
27256
|
+
}
|
|
27257
|
+
if (file.size > config.value.upload.maxFileSizeMB * 1024 * 1024) {
|
|
27258
|
+
throw {
|
|
27259
|
+
code: 'UPLOAD_FAILED',
|
|
27260
|
+
message: `照片不能超过 ${config.value.upload.maxFileSizeMB}MB`
|
|
27261
|
+
};
|
|
27262
|
+
}
|
|
27263
|
+
const size = await readImageSize(file);
|
|
27264
|
+
if (size &&
|
|
27265
|
+
((config.value.upload.minWidth && size.width < config.value.upload.minWidth) ||
|
|
27266
|
+
(config.value.upload.minHeight && size.height < config.value.upload.minHeight))) {
|
|
27267
|
+
throw { code: 'TOO_SMALL', message: guestPosterErrorMessage('TOO_SMALL') };
|
|
27268
|
+
}
|
|
27269
|
+
uiState.value = 'uploading';
|
|
27270
|
+
const uploaded = await getService().uploadGuestPhoto(file, {
|
|
27271
|
+
invitationId: sceneId.value || undefined,
|
|
27272
|
+
componentId: String(props.element.id)
|
|
27273
|
+
});
|
|
27274
|
+
if (objectUrlToRevoke) {
|
|
27275
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27276
|
+
objectUrlToRevoke = null;
|
|
27277
|
+
}
|
|
27278
|
+
guestPhoto.value = uploaded;
|
|
27279
|
+
if (uploaded.previewUrl) {
|
|
27280
|
+
guestPreviewUrl.value = uploaded.previewUrl;
|
|
27281
|
+
if (uploaded.previewUrl.startsWith('blob:')) {
|
|
27282
|
+
objectUrlToRevoke = uploaded.previewUrl;
|
|
27283
|
+
}
|
|
27284
|
+
}
|
|
27285
|
+
uiState.value = 'photo-ready';
|
|
27286
|
+
track('guest_photo_upload_success');
|
|
27287
|
+
}
|
|
27288
|
+
catch (err) {
|
|
27289
|
+
const e = err;
|
|
27290
|
+
uiState.value = 'failed';
|
|
27291
|
+
errorMessage.value = guestPosterErrorMessage(e === null || e === void 0 ? void 0 : e.code, e === null || e === void 0 ? void 0 : e.message);
|
|
27292
|
+
track('guest_photo_upload_failed', { code: (e === null || e === void 0 ? void 0 : e.code) || 'UPLOAD_FAILED' });
|
|
27293
|
+
emit('error', {
|
|
27294
|
+
code: (e === null || e === void 0 ? void 0 : e.code) || 'UPLOAD_FAILED',
|
|
27295
|
+
message: errorMessage.value,
|
|
27296
|
+
retryable: true
|
|
27297
|
+
});
|
|
27298
|
+
}
|
|
27299
|
+
}
|
|
27300
|
+
function clearPhoto() {
|
|
27301
|
+
if (props.isEditing)
|
|
27302
|
+
return;
|
|
27303
|
+
if (objectUrlToRevoke) {
|
|
27304
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27305
|
+
objectUrlToRevoke = null;
|
|
27306
|
+
}
|
|
27307
|
+
guestPhoto.value = null;
|
|
27308
|
+
guestPreviewUrl.value = '';
|
|
27309
|
+
uiState.value = 'idle';
|
|
27310
|
+
}
|
|
27311
|
+
function onStyleChange(ev) {
|
|
27312
|
+
const id = ev.target.value;
|
|
27313
|
+
selectedStyleId.value = id;
|
|
27314
|
+
track('guest_poster_style_select', { styleId: id });
|
|
27315
|
+
if (!props.isEditing && uiState.value !== 'completed') {
|
|
27316
|
+
uiState.value = 'configuring';
|
|
27317
|
+
}
|
|
27318
|
+
}
|
|
27319
|
+
async function onGenerateClick() {
|
|
27320
|
+
track('guest_poster_generate_click');
|
|
27321
|
+
if (props.isEditing) {
|
|
27322
|
+
showToast('发布后,宾客可生成专属邀请函');
|
|
27323
|
+
uiState.value = 'completed';
|
|
27324
|
+
resultList.value = [DEMO_RESULT];
|
|
27325
|
+
return;
|
|
27326
|
+
}
|
|
27327
|
+
if (!canSubmit.value) {
|
|
27328
|
+
if (quotaMax.value > 0 && quotaUsed.value >= quotaMax.value) {
|
|
27329
|
+
errorMessage.value = `本作品已达上限(${quotaMax.value} 张)`;
|
|
27330
|
+
}
|
|
27331
|
+
else if (!guestPhoto.value)
|
|
27332
|
+
errorMessage.value = '请先上传照片';
|
|
27333
|
+
else if (!selectedStyleId.value)
|
|
27334
|
+
errorMessage.value = '请选择风格';
|
|
27335
|
+
else
|
|
27336
|
+
errorMessage.value = '请先在编辑器配置婚礼邀请函图片';
|
|
27337
|
+
return;
|
|
27338
|
+
}
|
|
27339
|
+
const style = enabledStyles.value.find((s) => s.id === selectedStyleId.value);
|
|
27340
|
+
if (!style || !guestPhoto.value)
|
|
27341
|
+
return;
|
|
27342
|
+
errorMessage.value = '';
|
|
27343
|
+
uiState.value = 'submitting';
|
|
27344
|
+
if (!idempotencyKey.value) {
|
|
27345
|
+
idempotencyKey.value = createIdempotencyKey(String(props.element.id));
|
|
27346
|
+
}
|
|
27347
|
+
const inv = config.value.invitationImage;
|
|
27348
|
+
try {
|
|
27349
|
+
const job = await getService().createPosterJob({
|
|
27350
|
+
invitationId: sceneId.value || '',
|
|
27351
|
+
componentId: String(props.element.id),
|
|
27352
|
+
guestPhotoAssetId: guestPhoto.value.assetId,
|
|
27353
|
+
guestPhotoUrl: guestPhoto.value.previewUrl || guestPreviewUrl.value || '',
|
|
27354
|
+
invitationImageId: inv.invitationImageId || '',
|
|
27355
|
+
invitationImageUrl: inv.invitationImageUrl || '',
|
|
27356
|
+
styleId: style.id,
|
|
27357
|
+
promptTemplateId: style.promptTemplateId,
|
|
27358
|
+
output: {
|
|
27359
|
+
aspectRatio: config.value.output.aspectRatio,
|
|
27360
|
+
count: config.value.output.count
|
|
27361
|
+
},
|
|
27362
|
+
consent: {
|
|
27363
|
+
accepted: true,
|
|
27364
|
+
acceptedAt: new Date().toISOString(),
|
|
27365
|
+
privacyVersion: 'v1'
|
|
27366
|
+
},
|
|
27367
|
+
idempotencyKey: idempotencyKey.value
|
|
27368
|
+
});
|
|
27369
|
+
saveStoredJobId(String(props.element.id), job.id);
|
|
27370
|
+
applyJob(job);
|
|
27371
|
+
if (job.status !== 'completed' && job.status !== 'failed' && job.status !== 'cancelled') {
|
|
27372
|
+
schedulePoll();
|
|
27373
|
+
}
|
|
27374
|
+
}
|
|
27375
|
+
catch (err) {
|
|
27376
|
+
const e = err;
|
|
27377
|
+
uiState.value = 'failed';
|
|
27378
|
+
errorMessage.value = guestPosterErrorMessage(e === null || e === void 0 ? void 0 : e.code, e === null || e === void 0 ? void 0 : e.message);
|
|
27379
|
+
idempotencyKey.value = '';
|
|
27380
|
+
track('guest_poster_generate_failed', { code: (e === null || e === void 0 ? void 0 : e.code) || 'GENERATE_FAILED' });
|
|
27381
|
+
emit('error', {
|
|
27382
|
+
code: (e === null || e === void 0 ? void 0 : e.code) || 'GENERATE_FAILED',
|
|
27383
|
+
message: errorMessage.value,
|
|
27384
|
+
retryable: true
|
|
27385
|
+
});
|
|
27386
|
+
}
|
|
27387
|
+
}
|
|
27388
|
+
function onRegenerate() {
|
|
27389
|
+
if (props.isEditing)
|
|
27390
|
+
return;
|
|
27391
|
+
if (regenerateLeft.value === 0)
|
|
27392
|
+
return;
|
|
27393
|
+
regenerateUsed.value += 1;
|
|
27394
|
+
idempotencyKey.value = '';
|
|
27395
|
+
uiState.value = 'configuring';
|
|
27396
|
+
resultList.value = [];
|
|
27397
|
+
track('guest_poster_regenerate');
|
|
27398
|
+
}
|
|
27399
|
+
function onDownload() {
|
|
27400
|
+
const first = resultList.value[0];
|
|
27401
|
+
if (!first)
|
|
27402
|
+
return;
|
|
27403
|
+
track('guest_poster_download');
|
|
27404
|
+
if (props.isEditing) {
|
|
27405
|
+
showToast('发布后可下载');
|
|
27406
|
+
return;
|
|
27407
|
+
}
|
|
27408
|
+
try {
|
|
27409
|
+
const a = document.createElement('a');
|
|
27410
|
+
a.href = first.imageUrl;
|
|
27411
|
+
a.download = 'wedding-invitation.png';
|
|
27412
|
+
a.rel = 'noopener';
|
|
27413
|
+
a.target = '_blank';
|
|
27414
|
+
a.click();
|
|
27415
|
+
}
|
|
27416
|
+
catch {
|
|
27417
|
+
showToast('请长按图片保存');
|
|
27418
|
+
}
|
|
27419
|
+
}
|
|
27420
|
+
function onVisibilityChange() {
|
|
27421
|
+
if (typeof document === 'undefined')
|
|
27422
|
+
return;
|
|
27423
|
+
if (document.visibilityState === 'visible' && currentJobId.value) {
|
|
27424
|
+
pollDelay = 2000;
|
|
27425
|
+
void pollJob();
|
|
27426
|
+
}
|
|
27427
|
+
}
|
|
27428
|
+
watch(enabledStyles, (list) => {
|
|
27429
|
+
var _a;
|
|
27430
|
+
if (!selectedStyleId.value && list.length) {
|
|
27431
|
+
selectedStyleId.value = list[0].id;
|
|
27432
|
+
}
|
|
27433
|
+
else if (selectedStyleId.value && !list.some((s) => s.id === selectedStyleId.value)) {
|
|
27434
|
+
selectedStyleId.value = ((_a = list[0]) === null || _a === void 0 ? void 0 : _a.id) || '';
|
|
27435
|
+
}
|
|
27436
|
+
}, { immediate: true });
|
|
27437
|
+
onMounted(() => {
|
|
27438
|
+
track('guest_poster_view');
|
|
27439
|
+
if (typeof document !== 'undefined') {
|
|
27440
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
27441
|
+
}
|
|
27442
|
+
void refreshQuota();
|
|
27443
|
+
if (props.isEditing)
|
|
27444
|
+
return;
|
|
27445
|
+
const stored = loadStoredJobId(String(props.element.id));
|
|
27446
|
+
if (stored) {
|
|
27447
|
+
currentJobId.value = stored;
|
|
27448
|
+
uiState.value = 'generating';
|
|
27449
|
+
void pollJob();
|
|
27450
|
+
}
|
|
27451
|
+
});
|
|
27452
|
+
onBeforeUnmount(() => {
|
|
27453
|
+
stopPolling();
|
|
27454
|
+
if (toastTimer)
|
|
27455
|
+
clearTimeout(toastTimer);
|
|
27456
|
+
if (objectUrlToRevoke)
|
|
27457
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27458
|
+
if (typeof document !== 'undefined') {
|
|
27459
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
27460
|
+
}
|
|
27461
|
+
});
|
|
27462
|
+
return {
|
|
27463
|
+
config,
|
|
27464
|
+
uiState,
|
|
27465
|
+
guestPreviewUrl,
|
|
27466
|
+
enabledStyles,
|
|
27467
|
+
selectedStyleId,
|
|
27468
|
+
errorMessage,
|
|
27469
|
+
toastText,
|
|
27470
|
+
resultList,
|
|
27471
|
+
regenerateLeft,
|
|
27472
|
+
statusHint,
|
|
27473
|
+
canSubmit,
|
|
27474
|
+
quotaText,
|
|
27475
|
+
rootStyle,
|
|
27476
|
+
fileInputRef,
|
|
27477
|
+
onUploadAreaClick,
|
|
27478
|
+
triggerFilePick,
|
|
27479
|
+
onFileChange,
|
|
27480
|
+
clearPhoto,
|
|
27481
|
+
onStyleChange,
|
|
27482
|
+
onGenerateClick,
|
|
27483
|
+
onRegenerate,
|
|
27484
|
+
onDownload
|
|
27485
|
+
};
|
|
27486
|
+
}
|
|
27487
|
+
});
|
|
27488
|
+
|
|
27489
|
+
const _hoisted_1$4 = ["data-id", "data-pid", "data-type", "data-show"];
|
|
27490
|
+
const _hoisted_2$4 = { class: "gap-inner" };
|
|
27491
|
+
const _hoisted_3$4 = ["src"];
|
|
27492
|
+
const _hoisted_4$4 = /*#__PURE__*/createElementVNode("span", { class: "gap-upload-hint" }, "JPEG / PNG / WebP", -1 /* HOISTED */);
|
|
27493
|
+
const _hoisted_5$4 = {
|
|
27494
|
+
key: 2,
|
|
27495
|
+
class: "gap-upload-actions"
|
|
27496
|
+
};
|
|
27497
|
+
const _hoisted_6$4 = ["value", "disabled"];
|
|
27498
|
+
const _hoisted_7$4 = /*#__PURE__*/createElementVNode("option", {
|
|
27499
|
+
disabled: "",
|
|
27500
|
+
value: ""
|
|
27501
|
+
}, "选择风格", -1 /* HOISTED */);
|
|
27502
|
+
const _hoisted_8$1 = ["value"];
|
|
27503
|
+
const _hoisted_9$1 = {
|
|
27504
|
+
key: 0,
|
|
27505
|
+
class: "gap-status"
|
|
27506
|
+
};
|
|
27507
|
+
const _hoisted_10$1 = /*#__PURE__*/createElementVNode("div", { class: "gap-spinner" }, null, -1 /* HOISTED */);
|
|
27508
|
+
const _hoisted_11$1 = {
|
|
27509
|
+
key: 1,
|
|
27510
|
+
class: "gap-error"
|
|
27511
|
+
};
|
|
27512
|
+
const _hoisted_12$1 = ["disabled"];
|
|
27513
|
+
const _hoisted_13$1 = {
|
|
27514
|
+
key: 2,
|
|
27515
|
+
class: "gap-quota"
|
|
27516
|
+
};
|
|
27517
|
+
const _hoisted_14$1 = {
|
|
27518
|
+
key: 3,
|
|
27519
|
+
class: "gap-editor-badge"
|
|
27520
|
+
};
|
|
27521
|
+
const _hoisted_15$1 = {
|
|
27522
|
+
key: 1,
|
|
27523
|
+
class: "gap-result"
|
|
27524
|
+
};
|
|
27525
|
+
const _hoisted_16$1 = ["src"];
|
|
27526
|
+
const _hoisted_17$1 = { class: "gap-result-actions" };
|
|
27527
|
+
const _hoisted_18$1 = ["disabled"];
|
|
27528
|
+
const _hoisted_19$1 = {
|
|
27529
|
+
key: 0,
|
|
27530
|
+
class: "gap-toast"
|
|
27531
|
+
};
|
|
27532
|
+
|
|
27533
|
+
function render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
27534
|
+
return (openBlock(), createElementBlock("div", {
|
|
27535
|
+
class: normalizeClass(["ele-guest-ai-wedding-poster eles", { 'is-compact': !!_ctx.config.appearance.compact }]),
|
|
27536
|
+
"data-id": _ctx.element.id,
|
|
27537
|
+
"data-pid": _ctx.element.pid,
|
|
27538
|
+
"data-type": _ctx.element.type,
|
|
27539
|
+
"data-show": _ctx.element.properties && _ctx.element.properties.visible,
|
|
27540
|
+
style: normalizeStyle(_ctx.rootStyle)
|
|
27541
|
+
}, [
|
|
27542
|
+
createElementVNode("div", _hoisted_2$4, [
|
|
27543
|
+
(_ctx.uiState !== 'completed')
|
|
27544
|
+
? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
27545
|
+
createCommentVNode(" 1. 上传宾客照片 "),
|
|
27546
|
+
createElementVNode("div", {
|
|
27547
|
+
class: normalizeClass(["gap-upload", { 'is-disabled': _ctx.isEditing || _ctx.uiState === 'uploading' }]),
|
|
27548
|
+
onClick: _cache[3] || (_cache[3] = withModifiers((...args) => (_ctx.onUploadAreaClick && _ctx.onUploadAreaClick(...args)), ["stop"]))
|
|
27549
|
+
}, [
|
|
27550
|
+
(_ctx.guestPreviewUrl)
|
|
27551
|
+
? (openBlock(), createElementBlock("img", {
|
|
27552
|
+
key: 0,
|
|
27553
|
+
class: "gap-upload-preview",
|
|
27554
|
+
src: _ctx.guestPreviewUrl,
|
|
27555
|
+
alt: ""
|
|
27556
|
+
}, null, 8 /* PROPS */, _hoisted_3$4))
|
|
27557
|
+
: (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
27558
|
+
createElementVNode("span", null, toDisplayString(_ctx.uiState === 'uploading' ? '上传中…' : '上传你的照片'), 1 /* TEXT */),
|
|
27559
|
+
_hoisted_4$4
|
|
27560
|
+
], 64 /* STABLE_FRAGMENT */)),
|
|
27561
|
+
(_ctx.guestPreviewUrl && !_ctx.isEditing)
|
|
27562
|
+
? (openBlock(), createElementBlock("div", _hoisted_5$4, [
|
|
27563
|
+
createElementVNode("button", {
|
|
27564
|
+
type: "button",
|
|
27565
|
+
class: "gap-link-btn",
|
|
27566
|
+
onClick: _cache[0] || (_cache[0] = withModifiers((...args) => (_ctx.triggerFilePick && _ctx.triggerFilePick(...args)), ["stop"]))
|
|
27567
|
+
}, "替换"),
|
|
27568
|
+
createElementVNode("button", {
|
|
27569
|
+
type: "button",
|
|
27570
|
+
class: "gap-link-btn",
|
|
27571
|
+
onClick: _cache[1] || (_cache[1] = withModifiers((...args) => (_ctx.clearPhoto && _ctx.clearPhoto(...args)), ["stop"]))
|
|
27572
|
+
}, "删除")
|
|
27573
|
+
]))
|
|
27574
|
+
: createCommentVNode("v-if", true),
|
|
27575
|
+
createElementVNode("input", {
|
|
27576
|
+
ref: "fileInputRef",
|
|
27577
|
+
type: "file",
|
|
27578
|
+
accept: "image/jpeg,image/png,image/webp",
|
|
27579
|
+
onChange: _cache[2] || (_cache[2] = (...args) => (_ctx.onFileChange && _ctx.onFileChange(...args)))
|
|
27580
|
+
}, null, 544 /* NEED_HYDRATION, NEED_PATCH */)
|
|
27581
|
+
], 2 /* CLASS */),
|
|
27582
|
+
createCommentVNode(" 2. 风格 select "),
|
|
27583
|
+
createElementVNode("select", {
|
|
27584
|
+
class: "gap-select",
|
|
27585
|
+
value: _ctx.selectedStyleId,
|
|
27586
|
+
disabled: _ctx.isEditing,
|
|
27587
|
+
onClick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"])),
|
|
27588
|
+
onChange: _cache[5] || (_cache[5] = (...args) => (_ctx.onStyleChange && _ctx.onStyleChange(...args)))
|
|
27589
|
+
}, [
|
|
27590
|
+
_hoisted_7$4,
|
|
27591
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.enabledStyles, (style) => {
|
|
27592
|
+
return (openBlock(), createElementBlock("option", {
|
|
27593
|
+
key: style.id,
|
|
27594
|
+
value: style.id
|
|
27595
|
+
}, toDisplayString(style.name), 9 /* TEXT, PROPS */, _hoisted_8$1))
|
|
27596
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
27597
|
+
], 40 /* PROPS, NEED_HYDRATION */, _hoisted_6$4),
|
|
27598
|
+
(_ctx.uiState === 'queued' || _ctx.uiState === 'generating' || _ctx.uiState === 'submitting')
|
|
27599
|
+
? (openBlock(), createElementBlock("div", _hoisted_9$1, [
|
|
27600
|
+
_hoisted_10$1,
|
|
27601
|
+
createElementVNode("div", null, toDisplayString(_ctx.statusHint), 1 /* TEXT */)
|
|
27602
|
+
]))
|
|
27603
|
+
: createCommentVNode("v-if", true),
|
|
27604
|
+
(_ctx.errorMessage)
|
|
27605
|
+
? (openBlock(), createElementBlock("div", _hoisted_11$1, toDisplayString(_ctx.errorMessage), 1 /* TEXT */))
|
|
27606
|
+
: createCommentVNode("v-if", true),
|
|
27607
|
+
createCommentVNode(" 3. 提交 "),
|
|
27608
|
+
createElementVNode("button", {
|
|
27609
|
+
type: "button",
|
|
27610
|
+
class: normalizeClass(["gap-cta", _ctx.config.appearance.buttonStyle === 'solid' ? 'is-solid' : 'is-gradient']),
|
|
27611
|
+
disabled: !_ctx.canSubmit,
|
|
27612
|
+
onClick: _cache[6] || (_cache[6] = withModifiers((...args) => (_ctx.onGenerateClick && _ctx.onGenerateClick(...args)), ["stop"]))
|
|
27613
|
+
}, toDisplayString(_ctx.config.buttonText || '生成专属邀请函'), 11 /* TEXT, CLASS, PROPS */, _hoisted_12$1),
|
|
27614
|
+
(_ctx.quotaText)
|
|
27615
|
+
? (openBlock(), createElementBlock("p", _hoisted_13$1, toDisplayString(_ctx.quotaText), 1 /* TEXT */))
|
|
27616
|
+
: createCommentVNode("v-if", true),
|
|
27617
|
+
(_ctx.isEditing)
|
|
27618
|
+
? (openBlock(), createElementBlock("p", _hoisted_14$1, "编辑器预览 · 邀请函图请在属性面板配置"))
|
|
27619
|
+
: createCommentVNode("v-if", true)
|
|
27620
|
+
], 64 /* STABLE_FRAGMENT */))
|
|
27621
|
+
: (openBlock(), createElementBlock("div", _hoisted_15$1, [
|
|
27622
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.resultList, (item) => {
|
|
27623
|
+
return (openBlock(), createElementBlock("img", {
|
|
27624
|
+
key: item.id,
|
|
27625
|
+
src: item.imageUrl,
|
|
27626
|
+
alt: "婚礼邀请函"
|
|
27627
|
+
}, null, 8 /* PROPS */, _hoisted_16$1))
|
|
27628
|
+
}), 128 /* KEYED_FRAGMENT */)),
|
|
27629
|
+
createElementVNode("div", _hoisted_17$1, [
|
|
27630
|
+
(_ctx.config.result.allowRegenerate)
|
|
27631
|
+
? (openBlock(), createElementBlock("button", {
|
|
27632
|
+
key: 0,
|
|
27633
|
+
type: "button",
|
|
27634
|
+
class: "gap-secondary-btn",
|
|
27635
|
+
disabled: _ctx.regenerateLeft <= 0 || _ctx.isEditing,
|
|
27636
|
+
onClick: _cache[7] || (_cache[7] = withModifiers((...args) => (_ctx.onRegenerate && _ctx.onRegenerate(...args)), ["stop"]))
|
|
27637
|
+
}, " 重新生成 ", 8 /* PROPS */, _hoisted_18$1))
|
|
27638
|
+
: createCommentVNode("v-if", true),
|
|
27639
|
+
(_ctx.config.result.allowDownload)
|
|
27640
|
+
? (openBlock(), createElementBlock("button", {
|
|
27641
|
+
key: 1,
|
|
27642
|
+
type: "button",
|
|
27643
|
+
class: "gap-secondary-btn",
|
|
27644
|
+
onClick: _cache[8] || (_cache[8] = withModifiers((...args) => (_ctx.onDownload && _ctx.onDownload(...args)), ["stop"]))
|
|
27645
|
+
}, " 下载 "))
|
|
27646
|
+
: createCommentVNode("v-if", true)
|
|
27647
|
+
])
|
|
27648
|
+
]))
|
|
27649
|
+
]),
|
|
27650
|
+
(_ctx.toastText)
|
|
27651
|
+
? (openBlock(), createElementBlock("div", _hoisted_19$1, toDisplayString(_ctx.toastText), 1 /* TEXT */))
|
|
27652
|
+
: createCommentVNode("v-if", true)
|
|
27653
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$4))
|
|
27654
|
+
}
|
|
27655
|
+
|
|
27656
|
+
script$4.render = render$4;
|
|
27657
|
+
script$4.__file = "src/components/UniGuestAiWeddingPoster/UniGuestAiWeddingPoster.vue";
|
|
26348
27658
|
|
|
26349
27659
|
/**
|
|
26350
27660
|
* 应用文字动画 - 用于 WorkRender/H5 等场景
|
|
@@ -26629,27 +27939,28 @@ function splitGraphemeClustersFallback(text) {
|
|
|
26629
27939
|
var script$3 = defineComponent({
|
|
26630
27940
|
name: 'WorkRenderH5',
|
|
26631
27941
|
components: {
|
|
26632
|
-
UniMusic: script$
|
|
26633
|
-
UniText: script$
|
|
26634
|
-
UniImage: script$
|
|
26635
|
-
UniShape: script$
|
|
26636
|
-
UniCalendar: script$
|
|
26637
|
-
UniMap: script$
|
|
26638
|
-
UniCountdown: script$
|
|
26639
|
-
UniEffect: script$
|
|
26640
|
-
UniVideo: script$
|
|
26641
|
-
UniCall: script$
|
|
26642
|
-
UniFormInput: script$
|
|
26643
|
-
UniFormSubmit: script$
|
|
26644
|
-
UniFormSelect: script$
|
|
26645
|
-
UniFormMultiple: script$
|
|
26646
|
-
UniFormSingle: script$
|
|
26647
|
-
UniFormContainer: script$
|
|
26648
|
-
UniBarrage: script$
|
|
26649
|
-
UniMenu: script$
|
|
26650
|
-
UniLottie: script$
|
|
26651
|
-
UniButton: script$
|
|
26652
|
-
UniWatermark: script$
|
|
27942
|
+
UniMusic: script$q,
|
|
27943
|
+
UniText: script$t,
|
|
27944
|
+
UniImage: script$s,
|
|
27945
|
+
UniShape: script$r,
|
|
27946
|
+
UniCalendar: script$o,
|
|
27947
|
+
UniMap: script$m,
|
|
27948
|
+
UniCountdown: script$n,
|
|
27949
|
+
UniEffect: script$k,
|
|
27950
|
+
UniVideo: script$p,
|
|
27951
|
+
UniCall: script$l,
|
|
27952
|
+
UniFormInput: script$g,
|
|
27953
|
+
UniFormSubmit: script$f,
|
|
27954
|
+
UniFormSelect: script$e,
|
|
27955
|
+
UniFormMultiple: script$c,
|
|
27956
|
+
UniFormSingle: script$d,
|
|
27957
|
+
UniFormContainer: script$b,
|
|
27958
|
+
UniBarrage: script$h,
|
|
27959
|
+
UniMenu: script$6,
|
|
27960
|
+
UniLottie: script$j,
|
|
27961
|
+
UniButton: script$i,
|
|
27962
|
+
UniWatermark: script$5,
|
|
27963
|
+
UniGuestAiWeddingPoster: script$4,
|
|
26653
27964
|
},
|
|
26654
27965
|
props: {
|
|
26655
27966
|
workData: {
|
|
@@ -26675,8 +27986,8 @@ var script$3 = defineComponent({
|
|
|
26675
27986
|
const personalData = computed(() => workData.value.personalData || {});
|
|
26676
27987
|
const global = computed(() => workData.value.global || {});
|
|
26677
27988
|
const pages = computed(() => workData.value.pages || []);
|
|
26678
|
-
/**
|
|
26679
|
-
const shouldShowWatermark = computed(() => Number(global.value.
|
|
27989
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
27990
|
+
const shouldShowWatermark = computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
26680
27991
|
// 添加提示框相关状态
|
|
26681
27992
|
const showMessage = ref(false);
|
|
26682
27993
|
const messageText = ref('');
|
|
@@ -26877,7 +28188,8 @@ var script$3 = defineComponent({
|
|
|
26877
28188
|
};
|
|
26878
28189
|
// 获取组件名称
|
|
26879
28190
|
const getComponentName = (type) => {
|
|
26880
|
-
|
|
28191
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
28192
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
26881
28193
|
};
|
|
26882
28194
|
return {
|
|
26883
28195
|
personalData,
|
|
@@ -26998,9 +28310,10 @@ function render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
26998
28310
|
global: _ctx.global,
|
|
26999
28311
|
env: _ctx.env,
|
|
27000
28312
|
personalData: _ctx.personalData,
|
|
28313
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27001
28314
|
onTrigger: _ctx.handleElementTrigger,
|
|
27002
28315
|
onShowMessage: _ctx.handleShowMessage
|
|
27003
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28316
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27004
28317
|
: createCommentVNode("v-if", true)
|
|
27005
28318
|
], 64 /* STABLE_FRAGMENT */))
|
|
27006
28319
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27051,27 +28364,28 @@ script$3.install = (app) => {
|
|
|
27051
28364
|
var script$2 = defineComponent({
|
|
27052
28365
|
name: 'WorkRenderLong',
|
|
27053
28366
|
components: {
|
|
27054
|
-
UniMusic: script$
|
|
27055
|
-
UniText: script$
|
|
27056
|
-
UniImage: script$
|
|
27057
|
-
UniShape: script$
|
|
27058
|
-
UniCalendar: script$
|
|
27059
|
-
UniMap: script$
|
|
27060
|
-
UniCountdown: script$
|
|
27061
|
-
UniEffect: script$
|
|
27062
|
-
UniVideo: script$
|
|
27063
|
-
UniCall: script$
|
|
27064
|
-
UniFormInput: script$
|
|
27065
|
-
UniFormSubmit: script$
|
|
27066
|
-
UniFormSelect: script$
|
|
27067
|
-
UniFormMultiple: script$
|
|
27068
|
-
UniFormSingle: script$
|
|
27069
|
-
UniFormContainer: script$
|
|
27070
|
-
UniBarrage: script$
|
|
27071
|
-
UniMenu: script$
|
|
27072
|
-
UniLottie: script$
|
|
27073
|
-
UniButton: script$
|
|
27074
|
-
UniWatermark: script$
|
|
28367
|
+
UniMusic: script$q,
|
|
28368
|
+
UniText: script$t,
|
|
28369
|
+
UniImage: script$s,
|
|
28370
|
+
UniShape: script$r,
|
|
28371
|
+
UniCalendar: script$o,
|
|
28372
|
+
UniMap: script$m,
|
|
28373
|
+
UniCountdown: script$n,
|
|
28374
|
+
UniEffect: script$k,
|
|
28375
|
+
UniVideo: script$p,
|
|
28376
|
+
UniCall: script$l,
|
|
28377
|
+
UniFormInput: script$g,
|
|
28378
|
+
UniFormSubmit: script$f,
|
|
28379
|
+
UniFormSelect: script$e,
|
|
28380
|
+
UniFormMultiple: script$c,
|
|
28381
|
+
UniFormSingle: script$d,
|
|
28382
|
+
UniFormContainer: script$b,
|
|
28383
|
+
UniBarrage: script$h,
|
|
28384
|
+
UniMenu: script$6,
|
|
28385
|
+
UniLottie: script$j,
|
|
28386
|
+
UniButton: script$i,
|
|
28387
|
+
UniWatermark: script$5,
|
|
28388
|
+
UniGuestAiWeddingPoster: script$4,
|
|
27075
28389
|
},
|
|
27076
28390
|
props: {
|
|
27077
28391
|
workData: {
|
|
@@ -27093,8 +28407,8 @@ var script$2 = defineComponent({
|
|
|
27093
28407
|
const personalData = computed(() => workData.value.personalData || {});
|
|
27094
28408
|
const global = computed(() => workData.value.global || {});
|
|
27095
28409
|
const pages = computed(() => workData.value.pages || []);
|
|
27096
|
-
/**
|
|
27097
|
-
const shouldShowWatermark = computed(() => Number(global.value.
|
|
28410
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
28411
|
+
const shouldShowWatermark = computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
27098
28412
|
const page = computed(() => pages.value[0] || {});
|
|
27099
28413
|
const container = ref(null);
|
|
27100
28414
|
const content = ref(null);
|
|
@@ -27346,7 +28660,8 @@ var script$2 = defineComponent({
|
|
|
27346
28660
|
console.log('Element triggered:', payload);
|
|
27347
28661
|
};
|
|
27348
28662
|
const getComponentName = (type) => {
|
|
27349
|
-
|
|
28663
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
28664
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
27350
28665
|
};
|
|
27351
28666
|
const handleSubmit = async (formData) => {
|
|
27352
28667
|
console.log('Form submitted:', formData);
|
|
@@ -27504,9 +28819,10 @@ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
27504
28819
|
global: _ctx.global,
|
|
27505
28820
|
env: _ctx.env,
|
|
27506
28821
|
personalData: _ctx.personalData,
|
|
28822
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27507
28823
|
onTrigger: _ctx.handleElementTrigger,
|
|
27508
28824
|
onShowMessage: _ctx.handleShowMessage
|
|
27509
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28825
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27510
28826
|
: createCommentVNode("v-if", true)
|
|
27511
28827
|
], 64 /* STABLE_FRAGMENT */))
|
|
27512
28828
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27524,9 +28840,10 @@ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
27524
28840
|
global: _ctx.global,
|
|
27525
28841
|
env: _ctx.env,
|
|
27526
28842
|
personalData: _ctx.personalData,
|
|
28843
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27527
28844
|
onTrigger: _ctx.handleElementTrigger,
|
|
27528
28845
|
onShowMessage: _ctx.handleShowMessage
|
|
27529
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28846
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27530
28847
|
: createCommentVNode("v-if", true)
|
|
27531
28848
|
], 64 /* STABLE_FRAGMENT */))
|
|
27532
28849
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27907,28 +29224,29 @@ script$1.__file = "src/components/UniInvite/UniInvite.vue";
|
|
|
27907
29224
|
var script = defineComponent({
|
|
27908
29225
|
name: 'WorkRender',
|
|
27909
29226
|
components: {
|
|
27910
|
-
UniMusic: script$
|
|
27911
|
-
UniText: script$
|
|
27912
|
-
UniImage: script$
|
|
27913
|
-
UniShape: script$
|
|
27914
|
-
UniCalendar: script$
|
|
27915
|
-
UniMap: script$
|
|
27916
|
-
UniCountdown: script$
|
|
27917
|
-
UniEffect: script$
|
|
27918
|
-
UniVideo: script$
|
|
27919
|
-
UniCall: script$
|
|
27920
|
-
UniFormInput: script$
|
|
27921
|
-
UniFormSubmit: script$
|
|
27922
|
-
UniFormSelect: script$
|
|
27923
|
-
UniFormMultiple: script$
|
|
27924
|
-
UniFormSingle: script$
|
|
27925
|
-
UniFormContainer: script$
|
|
27926
|
-
UniBarrage: script$
|
|
27927
|
-
UniMenu: script$
|
|
27928
|
-
UniLottie: script$
|
|
27929
|
-
UniButton: script$
|
|
27930
|
-
UniWatermark: script$
|
|
29227
|
+
UniMusic: script$q,
|
|
29228
|
+
UniText: script$t,
|
|
29229
|
+
UniImage: script$s,
|
|
29230
|
+
UniShape: script$r,
|
|
29231
|
+
UniCalendar: script$o,
|
|
29232
|
+
UniMap: script$m,
|
|
29233
|
+
UniCountdown: script$n,
|
|
29234
|
+
UniEffect: script$k,
|
|
29235
|
+
UniVideo: script$p,
|
|
29236
|
+
UniCall: script$l,
|
|
29237
|
+
UniFormInput: script$g,
|
|
29238
|
+
UniFormSubmit: script$f,
|
|
29239
|
+
UniFormSelect: script$e,
|
|
29240
|
+
UniFormMultiple: script$c,
|
|
29241
|
+
UniFormSingle: script$d,
|
|
29242
|
+
UniFormContainer: script$b,
|
|
29243
|
+
UniBarrage: script$h,
|
|
29244
|
+
UniMenu: script$6,
|
|
29245
|
+
UniLottie: script$j,
|
|
29246
|
+
UniButton: script$i,
|
|
29247
|
+
UniWatermark: script$5,
|
|
27931
29248
|
UniInvite: script$1,
|
|
29249
|
+
UniGuestAiWeddingPoster: script$4,
|
|
27932
29250
|
},
|
|
27933
29251
|
props: {
|
|
27934
29252
|
workData: {
|
|
@@ -27966,8 +29284,8 @@ var script = defineComponent({
|
|
|
27966
29284
|
}
|
|
27967
29285
|
return null;
|
|
27968
29286
|
});
|
|
27969
|
-
/**
|
|
27970
|
-
const shouldShowWatermark = computed(() => Number(global.value.
|
|
29287
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
29288
|
+
const shouldShowWatermark = computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
27971
29289
|
// 长页模式
|
|
27972
29290
|
const container = ref(null);
|
|
27973
29291
|
const contentRefs = ref({});
|
|
@@ -28231,7 +29549,7 @@ var script = defineComponent({
|
|
|
28231
29549
|
}
|
|
28232
29550
|
};
|
|
28233
29551
|
handleTouchMove = (e) => {
|
|
28234
|
-
|
|
29552
|
+
notifyParentScroll();
|
|
28235
29553
|
};
|
|
28236
29554
|
handleTouchEnd = (e) => {
|
|
28237
29555
|
const touchEndY = e.changedTouches[0].clientY;
|
|
@@ -28387,6 +29705,7 @@ var script = defineComponent({
|
|
|
28387
29705
|
const pageId = currentPageId.value;
|
|
28388
29706
|
if (!container.value)
|
|
28389
29707
|
return;
|
|
29708
|
+
notifyParentScroll();
|
|
28390
29709
|
const touchY = e.touches[0].clientY;
|
|
28391
29710
|
const deltaY = (touchY - dragStartYs.value[pageId]) * speedFactor;
|
|
28392
29711
|
const now = Date.now();
|
|
@@ -28602,7 +29921,8 @@ var script = defineComponent({
|
|
|
28602
29921
|
};
|
|
28603
29922
|
// 获取组件名称
|
|
28604
29923
|
const getComponentName = (type) => {
|
|
28605
|
-
|
|
29924
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
29925
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
28606
29926
|
};
|
|
28607
29927
|
const contentStyle = computed(() => {
|
|
28608
29928
|
if (global.value.cat === 'long_page') {
|
|
@@ -28694,6 +30014,7 @@ var script = defineComponent({
|
|
|
28694
30014
|
return;
|
|
28695
30015
|
if (!container.value)
|
|
28696
30016
|
return;
|
|
30017
|
+
notifyParentScroll();
|
|
28697
30018
|
const pageId = currentPageId.value;
|
|
28698
30019
|
e.preventDefault();
|
|
28699
30020
|
const delta = e.deltaY;
|
|
@@ -28756,6 +30077,17 @@ var script = defineComponent({
|
|
|
28756
30077
|
}
|
|
28757
30078
|
};
|
|
28758
30079
|
// === IFRAME 页码/翻页通信 ===
|
|
30080
|
+
let lastScrollNotify = 0;
|
|
30081
|
+
function notifyParentScroll() {
|
|
30082
|
+
const now = Date.now();
|
|
30083
|
+
if (now - lastScrollNotify < 80)
|
|
30084
|
+
return;
|
|
30085
|
+
lastScrollNotify = now;
|
|
30086
|
+
try {
|
|
30087
|
+
window.parent && window.parent.postMessage({ type: 'UNIKA_H5_SCROLL' }, '*');
|
|
30088
|
+
}
|
|
30089
|
+
catch { }
|
|
30090
|
+
}
|
|
28759
30091
|
function postIframePageInfo() {
|
|
28760
30092
|
const curIdx = pages.value.findIndex(p => p.pageId === currentPageId.value);
|
|
28761
30093
|
const total = pages.value.length;
|
|
@@ -28764,6 +30096,7 @@ var script = defineComponent({
|
|
|
28764
30096
|
cur: curIdx,
|
|
28765
30097
|
count: total
|
|
28766
30098
|
}, '*');
|
|
30099
|
+
notifyParentScroll();
|
|
28767
30100
|
}
|
|
28768
30101
|
function handleIframePageMessage(event) {
|
|
28769
30102
|
const data = event.data;
|
|
@@ -28800,6 +30133,7 @@ var script = defineComponent({
|
|
|
28800
30133
|
});
|
|
28801
30134
|
});
|
|
28802
30135
|
return {
|
|
30136
|
+
optimizeCssImageUrl,
|
|
28803
30137
|
personalData,
|
|
28804
30138
|
global,
|
|
28805
30139
|
inviteRender,
|
|
@@ -28921,7 +30255,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
28921
30255
|
class: "page-bg nobg",
|
|
28922
30256
|
style: normalizeStyle({
|
|
28923
30257
|
backgroundColor: page.bgColor,
|
|
28924
|
-
backgroundImage: page.bgImage
|
|
30258
|
+
backgroundImage: _ctx.env === 'prd' ? _ctx.optimizeCssImageUrl(page.bgImage) : page.bgImage
|
|
28925
30259
|
})
|
|
28926
30260
|
}, null, 4 /* STYLE */)
|
|
28927
30261
|
], 4 /* STYLE */),
|
|
@@ -28939,9 +30273,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
28939
30273
|
global: _ctx.global,
|
|
28940
30274
|
env: _ctx.env,
|
|
28941
30275
|
personalData: _ctx.personalData,
|
|
30276
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
28942
30277
|
onTrigger: _ctx.handleElementTrigger,
|
|
28943
30278
|
onShowMessage: _ctx.handleShowMessage
|
|
28944
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
30279
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
28945
30280
|
: createCommentVNode("v-if", true)
|
|
28946
30281
|
], 64 /* STABLE_FRAGMENT */))
|
|
28947
30282
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -28996,6 +30331,10 @@ script.install = (app) => {
|
|
|
28996
30331
|
app.component(script.name, script);
|
|
28997
30332
|
};
|
|
28998
30333
|
|
|
30334
|
+
script$g.install = (app) => {
|
|
30335
|
+
app.component(script$g.name, script$g);
|
|
30336
|
+
};
|
|
30337
|
+
|
|
28999
30338
|
script$f.install = (app) => {
|
|
29000
30339
|
app.component(script$f.name, script$f);
|
|
29001
30340
|
};
|
|
@@ -29016,38 +30355,38 @@ script$b.install = (app) => {
|
|
|
29016
30355
|
app.component(script$b.name, script$b);
|
|
29017
30356
|
};
|
|
29018
30357
|
|
|
29019
|
-
script$
|
|
29020
|
-
app.component(script$
|
|
30358
|
+
script$6.install = (app) => {
|
|
30359
|
+
app.component(script$6.name, script$6);
|
|
29021
30360
|
};
|
|
29022
30361
|
|
|
29023
|
-
script$
|
|
29024
|
-
app.component(script$
|
|
30362
|
+
script$9.install = (app) => {
|
|
30363
|
+
app.component(script$9.name, script$9);
|
|
29025
30364
|
};
|
|
29026
30365
|
|
|
29027
30366
|
script$8.install = (app) => {
|
|
29028
30367
|
app.component(script$8.name, script$8);
|
|
29029
30368
|
};
|
|
29030
30369
|
|
|
30370
|
+
script$a.install = (app) => {
|
|
30371
|
+
app.component(script$a.name, script$a);
|
|
30372
|
+
};
|
|
30373
|
+
|
|
29031
30374
|
script$7.install = (app) => {
|
|
29032
30375
|
app.component(script$7.name, script$7);
|
|
29033
30376
|
};
|
|
29034
30377
|
|
|
29035
|
-
script$
|
|
29036
|
-
app.component(script$
|
|
30378
|
+
script$5.install = (app) => {
|
|
30379
|
+
app.component(script$5.name, script$5);
|
|
29037
30380
|
};
|
|
29038
30381
|
|
|
29039
|
-
script$
|
|
29040
|
-
app.component(script$
|
|
30382
|
+
script$1.install = (app) => {
|
|
30383
|
+
app.component(script$1.name, script$1);
|
|
29041
30384
|
};
|
|
29042
30385
|
|
|
29043
30386
|
script$4.install = (app) => {
|
|
29044
30387
|
app.component(script$4.name, script$4);
|
|
29045
30388
|
};
|
|
29046
30389
|
|
|
29047
|
-
script$1.install = (app) => {
|
|
29048
|
-
app.component(script$1.name, script$1);
|
|
29049
|
-
};
|
|
29050
|
-
|
|
29051
30390
|
/** 送呈封面模板 — 开发 fallback,生产由 biz-editor-server 提供 */
|
|
29052
30391
|
const INVITE_COVER_TEMPLATES = [
|
|
29053
30392
|
{
|
|
@@ -29737,6 +31076,68 @@ const formSubmitDefaultProps = {
|
|
|
29737
31076
|
}
|
|
29738
31077
|
};
|
|
29739
31078
|
|
|
31079
|
+
function apiBase() {
|
|
31080
|
+
// vue-cli proxy: /api → biz-editor-server
|
|
31081
|
+
return '/api';
|
|
31082
|
+
}
|
|
31083
|
+
async function parseJson(res) {
|
|
31084
|
+
const body = await res.json().catch(() => ({}));
|
|
31085
|
+
if (!res.ok || (body && typeof body.errno === 'number' && body.errno !== 0)) {
|
|
31086
|
+
const err = new Error((body === null || body === void 0 ? void 0 : body.message) || `HTTP ${res.status}`);
|
|
31087
|
+
err.code = String((body === null || body === void 0 ? void 0 : body.errno) || (body === null || body === void 0 ? void 0 : body.errorCode) || res.status);
|
|
31088
|
+
throw err;
|
|
31089
|
+
}
|
|
31090
|
+
return (body === null || body === void 0 ? void 0 : body.data) !== undefined ? body.data : body;
|
|
31091
|
+
}
|
|
31092
|
+
function createHttpGuestPosterService(options) {
|
|
31093
|
+
const base = ((options === null || options === void 0 ? void 0 : options.baseUrl) || apiBase()).replace(/\/$/, '');
|
|
31094
|
+
return {
|
|
31095
|
+
async uploadGuestPhoto(file, _context) {
|
|
31096
|
+
const form = new FormData();
|
|
31097
|
+
form.append('file', file);
|
|
31098
|
+
const res = await fetch(`${base}/ai-guest-poster/upload`, {
|
|
31099
|
+
method: 'POST',
|
|
31100
|
+
body: form,
|
|
31101
|
+
credentials: 'include'
|
|
31102
|
+
});
|
|
31103
|
+
return parseJson(res);
|
|
31104
|
+
},
|
|
31105
|
+
async createPosterJob(request) {
|
|
31106
|
+
const res = await fetch(`${base}/ai-guest-poster/jobs`, {
|
|
31107
|
+
method: 'POST',
|
|
31108
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31109
|
+
credentials: 'include',
|
|
31110
|
+
body: JSON.stringify(request)
|
|
31111
|
+
});
|
|
31112
|
+
return parseJson(res);
|
|
31113
|
+
},
|
|
31114
|
+
async getPosterJob(jobId) {
|
|
31115
|
+
const res = await fetch(`${base}/ai-guest-poster/jobs/${encodeURIComponent(jobId)}`, {
|
|
31116
|
+
credentials: 'include'
|
|
31117
|
+
});
|
|
31118
|
+
return parseJson(res);
|
|
31119
|
+
},
|
|
31120
|
+
async cancelPosterJob(jobId) {
|
|
31121
|
+
await fetch(`${base}/ai-guest-poster/jobs/${encodeURIComponent(jobId)}/cancel`, {
|
|
31122
|
+
method: 'POST',
|
|
31123
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31124
|
+
credentials: 'include',
|
|
31125
|
+
body: '{}'
|
|
31126
|
+
});
|
|
31127
|
+
},
|
|
31128
|
+
async getQuota(invitationId) {
|
|
31129
|
+
const q = new URLSearchParams({
|
|
31130
|
+
sceneId: invitationId || '',
|
|
31131
|
+
invitationId: invitationId || ''
|
|
31132
|
+
});
|
|
31133
|
+
const res = await fetch(`${base}/ai-guest-poster/config?${q}`, {
|
|
31134
|
+
credentials: 'include'
|
|
31135
|
+
});
|
|
31136
|
+
return parseJson(res);
|
|
31137
|
+
}
|
|
31138
|
+
};
|
|
31139
|
+
}
|
|
31140
|
+
|
|
29740
31141
|
/** 送呈快捷短语 — 开发/编辑器 fallback;生产环境由 biz-editor-server API 提供 */
|
|
29741
31142
|
const INVITE_QUICK_PHRASES = [
|
|
29742
31143
|
'邀请您一道分享我们的喜悦',
|
|
@@ -29766,6 +31167,7 @@ function applyTemplateToInviteItem(item, template) {
|
|
|
29766
31167
|
}
|
|
29767
31168
|
|
|
29768
31169
|
const components = [
|
|
31170
|
+
script$t,
|
|
29769
31171
|
script$s,
|
|
29770
31172
|
script$r,
|
|
29771
31173
|
script$q,
|
|
@@ -29778,23 +31180,23 @@ const components = [
|
|
|
29778
31180
|
script$j,
|
|
29779
31181
|
script$i,
|
|
29780
31182
|
script$h,
|
|
29781
|
-
script$g,
|
|
29782
31183
|
script$3,
|
|
29783
31184
|
script$2,
|
|
29784
31185
|
script,
|
|
31186
|
+
script$g,
|
|
29785
31187
|
script$f,
|
|
29786
31188
|
script$e,
|
|
29787
31189
|
script$d,
|
|
29788
31190
|
script$c,
|
|
29789
31191
|
script$b,
|
|
29790
|
-
script$
|
|
29791
|
-
script$
|
|
31192
|
+
script$6,
|
|
31193
|
+
script$9,
|
|
29792
31194
|
script$8,
|
|
31195
|
+
script$a,
|
|
29793
31196
|
script$7,
|
|
29794
|
-
script$
|
|
29795
|
-
script$
|
|
29796
|
-
script$4
|
|
29797
|
-
script$1
|
|
31197
|
+
script$5,
|
|
31198
|
+
script$1,
|
|
31199
|
+
script$4
|
|
29798
31200
|
];
|
|
29799
31201
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
29800
31202
|
const install = (app) => {
|
|
@@ -29806,4 +31208,4 @@ var index = {
|
|
|
29806
31208
|
install
|
|
29807
31209
|
};
|
|
29808
31210
|
|
|
29809
|
-
export { INVITE_COVER_TEMPLATES, INVITE_QUICK_PHRASES, script$
|
|
31211
|
+
export { GUEST_AI_WEDDING_POSTER_TYPE, GUEST_AI_WEDDING_POSTER_VERSION, GUEST_POSTER_SERVICE_KEY, script$4 as GuestAIWeddingPoster, INVITE_COVER_TEMPLATES, INVITE_QUICK_PHRASES, script$h as UniBarrage, script$i as UniButton, script$o as UniCalendar, script$l as UniCall, script$n as UniCountdown, script$k as UniEffect, script$b as UniFormContainer, script$g as UniFormInput, script$c as UniFormMultiple, script$e as UniFormSelect, script$d as UniFormSingle, script$f as UniFormSubmit, script$4 as UniGuestAiWeddingPoster, script$s as UniImage, script$1 as UniInvite, script$j as UniLottie, script$m as UniMap, script$6 as UniMenu, script$7 as UniMenuMap, script$a as UniMenuReceipt, script$8 as UniMenuTel, script$9 as UniMenuVideo, script$q as UniMusic, script$r as UniShape, script$t as UniText, script$p as UniVideo, script$5 as UniWatermark, script as WorkRender, script$3 as WorkRenderH5, script$2 as WorkRenderLong, applyInviteStateToGlobal, applyTemplateToInviteItem, applyTextAnimation, applyTextAnimationsForPage, buttonDefaultProps, calendarDefaultProps, callDefaultProps, countdownDefaultProps, createHttpGuestPosterService, createMockGuestPosterService, index as default, defaultGuestAIWeddingPosterConfig, effectDefaultProps, formInputDefaultProps, formSubmitDefaultProps, getInviteDismissDelay, getInviteRenderFromGlobal, getInviteTemplateById, guestAIWeddingPosterDefaultProps, guestAIWeddingPosterInspectorConfig, guestAIWeddingPosterSchema, install, inviteDefaultProps, isValidInviteItem, lottieDefaultProps, mapDefaultProps, mergeGuestAIWeddingPosterConfig, migrateGuestAIWeddingPosterConfig, musicDefaultProps, resolveGuestAIWeddingPosterConfig, resolveGuestPosterService, resolveInviteRenderData, restoreTextAnimation, shapeDefaultProps, useInviteManager, validateGuestAIWeddingPosterConfig, videoDefaultProps };
|