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
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
return px;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
var script$
|
|
22
|
+
var script$t = vue.defineComponent({
|
|
23
23
|
name: 'UniText',
|
|
24
24
|
props: {
|
|
25
25
|
element: {
|
|
@@ -122,9 +122,9 @@
|
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
const _hoisted_1$
|
|
125
|
+
const _hoisted_1$o = ["data-id", "data-pid", "data-type", "sign", "signsort", "layername"];
|
|
126
126
|
|
|
127
|
-
function render$
|
|
127
|
+
function render$p(_ctx, _cache, $props, $setup, $data, $options) {
|
|
128
128
|
return (_ctx.element && (!_ctx.element.properties || _ctx.element.properties.visible !== false))
|
|
129
129
|
? (vue.openBlock(), vue.createElementBlock("div", {
|
|
130
130
|
key: 0,
|
|
@@ -155,30 +155,96 @@
|
|
|
155
155
|
style: vue.normalizeStyle(_ctx.textEditorStyle)
|
|
156
156
|
}, vue.toDisplayString(_ctx.element.textContent), 5 /* TEXT, STYLE */)
|
|
157
157
|
], 4 /* STYLE */)
|
|
158
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
158
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$o))
|
|
159
159
|
: vue.createCommentVNode("v-if", true)
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
script$
|
|
163
|
-
script$
|
|
162
|
+
script$t.render = render$p;
|
|
163
|
+
script$t.__file = "src/components/UniText/UniText.vue";
|
|
164
164
|
|
|
165
|
-
script$
|
|
166
|
-
app.component(script$
|
|
165
|
+
script$t.install = (app) => {
|
|
166
|
+
app.component(script$t.name, script$t);
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
// 阿里云 OSS 图片处理:按显示尺寸缩放并转 webp
|
|
170
|
+
// 只处理自家 OSS 域名(第三方地址不支持 x-oss-process 参数)
|
|
171
|
+
const OSS_HOST_REG = /^(https?:)?\/\/(h5cdn\.unika\.cc|unika-static-dev\.unika\.cc)\//i;
|
|
172
|
+
// gif 转 webp 会丢失动画,svg 是矢量图
|
|
173
|
+
const SKIP_EXT_REG = /\.(gif|svg)$/i;
|
|
174
|
+
// 宽度分档,便于 CDN 缓存命中
|
|
175
|
+
const WIDTH_BUCKETS = [375, 750, 1080];
|
|
176
|
+
// 设计稿宽 375,按 2 倍屏输出
|
|
177
|
+
const DPR = 2;
|
|
178
|
+
const DESIGN_PX_PER_REM = 37.5;
|
|
179
|
+
/**
|
|
180
|
+
* 元素宽度转为设计稿 px,h5-server 渲染前会把数字转成 rem 字符串
|
|
181
|
+
*/
|
|
182
|
+
function toDesignPx(value) {
|
|
183
|
+
if (typeof value === 'number')
|
|
184
|
+
return value;
|
|
185
|
+
if (typeof value !== 'string')
|
|
186
|
+
return 0;
|
|
187
|
+
const num = parseFloat(value);
|
|
188
|
+
if (Number.isNaN(num))
|
|
189
|
+
return 0;
|
|
190
|
+
if (value.trim().endsWith('rem'))
|
|
191
|
+
return num * DESIGN_PX_PER_REM;
|
|
192
|
+
return num;
|
|
193
|
+
}
|
|
194
|
+
function pickWidth(designWidth) {
|
|
195
|
+
const target = designWidth > 0 ? designWidth * DPR : 750;
|
|
196
|
+
return WIDTH_BUCKETS.find(w => w >= target) || WIDTH_BUCKETS[WIDTH_BUCKETS.length - 1];
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* @param src 图片地址
|
|
200
|
+
* @param designWidth 显示宽度(设计稿 px),未知时传 0
|
|
201
|
+
*/
|
|
202
|
+
function optimizeImageUrl(src, designWidth = 0) {
|
|
203
|
+
if (!src || typeof src !== 'string')
|
|
204
|
+
return src;
|
|
205
|
+
if (!OSS_HOST_REG.test(src) || src.includes('x-oss-process'))
|
|
206
|
+
return src;
|
|
207
|
+
const path = src.split(/[?#]/)[0];
|
|
208
|
+
if (SKIP_EXT_REG.test(path))
|
|
209
|
+
return src;
|
|
210
|
+
const hashIndex = src.indexOf('#');
|
|
211
|
+
const base = hashIndex >= 0 ? src.slice(0, hashIndex) : src;
|
|
212
|
+
const hash = hashIndex >= 0 ? src.slice(hashIndex) : '';
|
|
213
|
+
const sep = base.includes('?') ? '&' : '?';
|
|
214
|
+
const width = pickWidth(designWidth);
|
|
215
|
+
return `${base}${sep}x-oss-process=image/resize,w_${width},limit_1/quality,q_80/format,webp${hash}`;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 处理 CSS 中的 url(...),如页面背景 `url("https://...")`
|
|
219
|
+
*/
|
|
220
|
+
function optimizeCssImageUrl(value, designWidth = 0) {
|
|
221
|
+
if (!value || typeof value !== 'string')
|
|
222
|
+
return value;
|
|
223
|
+
return value.replace(/url\(\s*(['"]?)([^'")]+)\1\s*\)/g, (_m, quote, url) => `url(${quote}${optimizeImageUrl(url, designWidth)}${quote})`);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
var script$s = vue.defineComponent({
|
|
170
227
|
name: 'uni-image',
|
|
171
228
|
props: {
|
|
172
229
|
element: {
|
|
173
230
|
type: Object,
|
|
174
231
|
required: true
|
|
175
232
|
},
|
|
233
|
+
// WorkRender 线上渲染传 'prd',此时才走 OSS 图片压缩;编辑器画布不传
|
|
234
|
+
env: {
|
|
235
|
+
type: String,
|
|
236
|
+
default: ''
|
|
237
|
+
},
|
|
176
238
|
},
|
|
177
239
|
emits: ['trigger'],
|
|
178
240
|
setup(props, { emit }) {
|
|
179
241
|
// 计算属性
|
|
180
242
|
const properties = vue.computed(() => props.element.properties || {});
|
|
181
243
|
const css = vue.computed(() => props.element.css || {});
|
|
244
|
+
const displaySrc = vue.computed(() => {
|
|
245
|
+
const src = properties.value.src;
|
|
246
|
+
return props.env === 'prd' ? optimizeImageUrl(src, toDesignPx(css.value.width)) : src;
|
|
247
|
+
});
|
|
182
248
|
// 容器样式
|
|
183
249
|
const containerStyle = vue.computed(() => {
|
|
184
250
|
const flipH = css.value.flipHorizontal ? -1 : 1;
|
|
@@ -190,7 +256,8 @@
|
|
|
190
256
|
top: px2rem(css.value.top),
|
|
191
257
|
width: px2rem(css.value.width),
|
|
192
258
|
height: px2rem(css.value.height),
|
|
193
|
-
transform: `${rotate} ${scale}
|
|
259
|
+
transform: `${rotate} ${scale}`,
|
|
260
|
+
'--img-bg-pos': css.value.backgroundPosition || '50% 50%'
|
|
194
261
|
};
|
|
195
262
|
});
|
|
196
263
|
// 图片样式
|
|
@@ -204,37 +271,22 @@
|
|
|
204
271
|
? `${px2rem(properties.value.shadowX)} ${px2rem(properties.value.shadowY)} ${px2rem(properties.value.shadowBlur)} ${properties.value.shadowColor}`
|
|
205
272
|
: 'none'
|
|
206
273
|
}));
|
|
207
|
-
//
|
|
274
|
+
// 背景图:cover 保持比例,backgroundPosition 只做框内平移
|
|
208
275
|
const bgImageStyle = vue.computed(() => ({
|
|
209
|
-
backgroundImage: `url(${
|
|
276
|
+
backgroundImage: `url(${displaySrc.value})`,
|
|
210
277
|
backgroundSize: 'cover',
|
|
211
|
-
backgroundPosition: '50% 50%'
|
|
278
|
+
backgroundPosition: css.value.backgroundPosition || '50% 50%'
|
|
279
|
+
}));
|
|
280
|
+
// 与编辑器 .ele-bg-wrap 一致:cover + 框内平移
|
|
281
|
+
const imgTagStyle = vue.computed(() => ({
|
|
282
|
+
width: '100%',
|
|
283
|
+
height: '100%',
|
|
284
|
+
position: 'absolute',
|
|
285
|
+
left: '0',
|
|
286
|
+
top: '0',
|
|
287
|
+
objectFit: 'cover',
|
|
288
|
+
objectPosition: css.value.backgroundPosition || '50% 50%'
|
|
212
289
|
}));
|
|
213
|
-
// img标签样式(用于非背景图模式)
|
|
214
|
-
const imgTagStyle = vue.computed(() => {
|
|
215
|
-
const aspectRatio = properties.value.realW || 0 / (properties.value.realH || 1);
|
|
216
|
-
const containerWidth = css.value.width;
|
|
217
|
-
const containerHeight = css.value.height;
|
|
218
|
-
// 保持图片原始比例
|
|
219
|
-
if (containerWidth / containerHeight > aspectRatio) {
|
|
220
|
-
return {
|
|
221
|
-
height: '100%',
|
|
222
|
-
width: 'auto',
|
|
223
|
-
position: 'absolute',
|
|
224
|
-
left: '50%',
|
|
225
|
-
transform: 'translateX(-50%)'
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
return {
|
|
230
|
-
width: '100%',
|
|
231
|
-
height: 'auto',
|
|
232
|
-
position: 'absolute',
|
|
233
|
-
top: '50%',
|
|
234
|
-
transform: 'translateY(-50%)'
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
290
|
// 遮罩样式
|
|
239
291
|
const maskStyle = vue.computed(() => ({
|
|
240
292
|
'-webkit-mask-box-image-source': properties.value.maskBoxImageSource
|
|
@@ -278,6 +330,7 @@
|
|
|
278
330
|
};
|
|
279
331
|
return {
|
|
280
332
|
properties,
|
|
333
|
+
displaySrc,
|
|
281
334
|
containerStyle,
|
|
282
335
|
imageStyle,
|
|
283
336
|
bgImageStyle,
|
|
@@ -290,10 +343,10 @@
|
|
|
290
343
|
}
|
|
291
344
|
});
|
|
292
345
|
|
|
293
|
-
const _hoisted_1$
|
|
294
|
-
const _hoisted_2$
|
|
346
|
+
const _hoisted_1$n = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort", "imgmattinginfo"];
|
|
347
|
+
const _hoisted_2$k = ["src"];
|
|
295
348
|
|
|
296
|
-
function render$
|
|
349
|
+
function render$o(_ctx, _cache, $props, $setup, $data, $options) {
|
|
297
350
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
298
351
|
class: "ele-img eles",
|
|
299
352
|
"data-id": _ctx.element.id,
|
|
@@ -328,11 +381,12 @@
|
|
|
328
381
|
style: vue.normalizeStyle(_ctx.imageStyle)
|
|
329
382
|
}, [
|
|
330
383
|
vue.createElementVNode("img", {
|
|
331
|
-
src: _ctx.
|
|
384
|
+
src: _ctx.displaySrc,
|
|
332
385
|
alt: "image",
|
|
386
|
+
loading: "lazy",
|
|
333
387
|
class: "ele-image",
|
|
334
388
|
style: vue.normalizeStyle(_ctx.imgTagStyle)
|
|
335
|
-
}, null, 12 /* STYLE, PROPS */, _hoisted_2$
|
|
389
|
+
}, null, 12 /* STYLE, PROPS */, _hoisted_2$k)
|
|
336
390
|
], 4 /* STYLE */))
|
|
337
391
|
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
338
392
|
vue.createCommentVNode(" 图片展示方式2:使用背景图 "),
|
|
@@ -348,17 +402,17 @@
|
|
|
348
402
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
349
403
|
], 4 /* STYLE */)
|
|
350
404
|
], 4 /* STYLE */)
|
|
351
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
405
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$n))
|
|
352
406
|
}
|
|
353
407
|
|
|
354
|
-
script$
|
|
355
|
-
script$
|
|
408
|
+
script$s.render = render$o;
|
|
409
|
+
script$s.__file = "src/components/UniImage/UniImage.vue";
|
|
356
410
|
|
|
357
|
-
script$
|
|
358
|
-
app.component(script$
|
|
411
|
+
script$s.install = (app) => {
|
|
412
|
+
app.component(script$s.name, script$s);
|
|
359
413
|
};
|
|
360
414
|
|
|
361
|
-
var script$
|
|
415
|
+
var script$r = vue.defineComponent({
|
|
362
416
|
name: 'uni-shape',
|
|
363
417
|
props: {
|
|
364
418
|
element: {
|
|
@@ -509,12 +563,12 @@
|
|
|
509
563
|
}
|
|
510
564
|
});
|
|
511
565
|
|
|
512
|
-
const _hoisted_1$
|
|
513
|
-
const _hoisted_2$
|
|
514
|
-
const _hoisted_3$
|
|
515
|
-
const _hoisted_4$
|
|
566
|
+
const _hoisted_1$m = ["data-id"];
|
|
567
|
+
const _hoisted_2$j = ["innerHTML"];
|
|
568
|
+
const _hoisted_3$i = /*#__PURE__*/vue.createElementVNode("div", { class: "svg-loading" }, "Loading...", -1 /* HOISTED */);
|
|
569
|
+
const _hoisted_4$e = { class: "svg-error" };
|
|
516
570
|
|
|
517
|
-
function render$
|
|
571
|
+
function render$n(_ctx, _cache, $props, $setup, $data, $options) {
|
|
518
572
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
519
573
|
class: "ele-shape eles",
|
|
520
574
|
"data-id": _ctx.element.id,
|
|
@@ -539,16 +593,16 @@
|
|
|
539
593
|
innerHTML: _ctx.processedSvg,
|
|
540
594
|
class: "svg-container",
|
|
541
595
|
style: {"width":"100%","height":"100%"}
|
|
542
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
596
|
+
}, null, 8 /* PROPS */, _hoisted_2$j))
|
|
543
597
|
: (_ctx.isLoading)
|
|
544
598
|
? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
545
599
|
vue.createCommentVNode(" 加载状态 "),
|
|
546
|
-
_hoisted_3$
|
|
600
|
+
_hoisted_3$i
|
|
547
601
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
548
602
|
: (_ctx.loadError)
|
|
549
603
|
? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
|
|
550
604
|
vue.createCommentVNode(" 错误状态 "),
|
|
551
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
605
|
+
vue.createElementVNode("div", _hoisted_4$e, [
|
|
552
606
|
vue.renderSlot(_ctx.$slots, "error", {
|
|
553
607
|
src: _ctx.properties.src
|
|
554
608
|
}, () => [
|
|
@@ -559,14 +613,14 @@
|
|
|
559
613
|
: vue.createCommentVNode("v-if", true)
|
|
560
614
|
], 4 /* STYLE */)
|
|
561
615
|
], 4 /* STYLE */)
|
|
562
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
616
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$m))
|
|
563
617
|
}
|
|
564
618
|
|
|
565
|
-
script$
|
|
566
|
-
script$
|
|
619
|
+
script$r.render = render$n;
|
|
620
|
+
script$r.__file = "src/components/UniShape/UniShape.vue";
|
|
567
621
|
|
|
568
|
-
script$
|
|
569
|
-
app.component(script$
|
|
622
|
+
script$r.install = (app) => {
|
|
623
|
+
app.component(script$r.name, script$r);
|
|
570
624
|
};
|
|
571
625
|
|
|
572
626
|
const musicState = vue.ref({
|
|
@@ -810,7 +864,7 @@
|
|
|
810
864
|
};
|
|
811
865
|
};
|
|
812
866
|
|
|
813
|
-
var script$
|
|
867
|
+
var script$q = vue.defineComponent({
|
|
814
868
|
name: 'uni-music',
|
|
815
869
|
props: {
|
|
816
870
|
musicData: {
|
|
@@ -880,19 +934,19 @@
|
|
|
880
934
|
}
|
|
881
935
|
});
|
|
882
936
|
|
|
883
|
-
const _hoisted_1$
|
|
884
|
-
const _hoisted_2$
|
|
885
|
-
const _hoisted_3$
|
|
937
|
+
const _hoisted_1$l = { id: "audio" };
|
|
938
|
+
const _hoisted_2$i = ["src"];
|
|
939
|
+
const _hoisted_3$h = {
|
|
886
940
|
key: 1,
|
|
887
941
|
class: "iconfont"
|
|
888
942
|
};
|
|
889
|
-
const _hoisted_4$
|
|
890
|
-
const _hoisted_5$
|
|
943
|
+
const _hoisted_4$d = ["src"];
|
|
944
|
+
const _hoisted_5$c = /*#__PURE__*/vue.createElementVNode("div", { class: "icon-cancel" }, [
|
|
891
945
|
/*#__PURE__*/vue.createElementVNode("div", { class: "icon-h" })
|
|
892
946
|
], -1 /* HOISTED */);
|
|
893
947
|
|
|
894
|
-
function render$
|
|
895
|
-
return (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
948
|
+
function render$m(_ctx, _cache, $props, $setup, $data, $options) {
|
|
949
|
+
return (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
|
|
896
950
|
vue.createElementVNode("div", {
|
|
897
951
|
class: vue.normalizeClass(["audio", { 'a-border': _ctx.showBorder, 'mrotate': _ctx.localIsPlaying }]),
|
|
898
952
|
style: vue.normalizeStyle({ background: _ctx.bgColor }),
|
|
@@ -906,8 +960,8 @@
|
|
|
906
960
|
src: _ctx.playIconUrl,
|
|
907
961
|
class: "music-icon",
|
|
908
962
|
alt: "หยุดชั่วคราว"
|
|
909
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
910
|
-
: (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$
|
|
963
|
+
}, null, 8 /* PROPS */, _hoisted_2$i))
|
|
964
|
+
: (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$h, "❚❚"))
|
|
911
965
|
], 64 /* STABLE_FRAGMENT */))
|
|
912
966
|
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
913
967
|
(_ctx.playIconUrl)
|
|
@@ -916,22 +970,22 @@
|
|
|
916
970
|
src: _ctx.playIconUrl,
|
|
917
971
|
class: "music-icon",
|
|
918
972
|
alt: "กำลังเล่น"
|
|
919
|
-
}, null, 8 /* PROPS */, _hoisted_4$
|
|
973
|
+
}, null, 8 /* PROPS */, _hoisted_4$d))
|
|
920
974
|
: vue.createCommentVNode("v-if", true),
|
|
921
|
-
_hoisted_5$
|
|
975
|
+
_hoisted_5$c
|
|
922
976
|
], 64 /* STABLE_FRAGMENT */))
|
|
923
977
|
], 6 /* CLASS, STYLE */)
|
|
924
978
|
]))
|
|
925
979
|
}
|
|
926
980
|
|
|
927
|
-
script$
|
|
928
|
-
script$
|
|
981
|
+
script$q.render = render$m;
|
|
982
|
+
script$q.__file = "src/components/UniMusic/UniMusic.vue";
|
|
929
983
|
|
|
930
|
-
script$
|
|
931
|
-
app.component(script$
|
|
984
|
+
script$q.install = (app) => {
|
|
985
|
+
app.component(script$q.name, script$q);
|
|
932
986
|
};
|
|
933
987
|
|
|
934
|
-
var script$
|
|
988
|
+
var script$p = vue.defineComponent({
|
|
935
989
|
name: 'uni-video',
|
|
936
990
|
props: {
|
|
937
991
|
element: {
|
|
@@ -1004,14 +1058,14 @@
|
|
|
1004
1058
|
}
|
|
1005
1059
|
});
|
|
1006
1060
|
|
|
1007
|
-
const _hoisted_1$
|
|
1061
|
+
const _hoisted_1$k = {
|
|
1008
1062
|
key: 0,
|
|
1009
1063
|
class: "video-container"
|
|
1010
1064
|
};
|
|
1011
|
-
const _hoisted_2$
|
|
1012
|
-
const _hoisted_3$
|
|
1065
|
+
const _hoisted_2$h = ["src"];
|
|
1066
|
+
const _hoisted_3$g = ["src"];
|
|
1013
1067
|
|
|
1014
|
-
function render$
|
|
1068
|
+
function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1015
1069
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
1016
1070
|
class: "element-video eles",
|
|
1017
1071
|
style: vue.normalizeStyle(_ctx.containerStyle)
|
|
@@ -1024,7 +1078,7 @@
|
|
|
1024
1078
|
})
|
|
1025
1079
|
}, [
|
|
1026
1080
|
(_ctx.isPlaying)
|
|
1027
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1081
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
|
|
1028
1082
|
vue.createElementVNode("iframe", {
|
|
1029
1083
|
src: _ctx.youtubeEmbedUrl,
|
|
1030
1084
|
type: "text/html",
|
|
@@ -1032,7 +1086,7 @@
|
|
|
1032
1086
|
allowfullscreen: "",
|
|
1033
1087
|
scrolling: "no",
|
|
1034
1088
|
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
1035
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
1089
|
+
}, null, 8 /* PROPS */, _hoisted_2$h)
|
|
1036
1090
|
]))
|
|
1037
1091
|
: (vue.openBlock(), vue.createElementBlock("div", {
|
|
1038
1092
|
key: 1,
|
|
@@ -1044,20 +1098,20 @@
|
|
|
1044
1098
|
src: _ctx.element.properties.src,
|
|
1045
1099
|
alt: "Play button",
|
|
1046
1100
|
class: "play-btn"
|
|
1047
|
-
}, null, 8 /* PROPS */, _hoisted_3$
|
|
1101
|
+
}, null, 8 /* PROPS */, _hoisted_3$g)
|
|
1048
1102
|
], 4 /* STYLE */))
|
|
1049
1103
|
], 4 /* STYLE */)
|
|
1050
1104
|
], 4 /* STYLE */))
|
|
1051
1105
|
}
|
|
1052
1106
|
|
|
1053
|
-
script$
|
|
1054
|
-
script$
|
|
1107
|
+
script$p.render = render$l;
|
|
1108
|
+
script$p.__file = "src/components/UniVideo/UniVideo.vue";
|
|
1055
1109
|
|
|
1056
|
-
script$
|
|
1057
|
-
app.component(script$
|
|
1110
|
+
script$p.install = (app) => {
|
|
1111
|
+
app.component(script$p.name, script$p);
|
|
1058
1112
|
};
|
|
1059
1113
|
|
|
1060
|
-
var script$
|
|
1114
|
+
var script$o = vue.defineComponent({
|
|
1061
1115
|
name: 'uni-calendar',
|
|
1062
1116
|
props: {
|
|
1063
1117
|
element: {
|
|
@@ -1173,33 +1227,33 @@
|
|
|
1173
1227
|
}
|
|
1174
1228
|
});
|
|
1175
1229
|
|
|
1176
|
-
const _hoisted_1$
|
|
1177
|
-
const _hoisted_2$
|
|
1230
|
+
const _hoisted_1$j = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
1231
|
+
const _hoisted_2$g = {
|
|
1178
1232
|
key: 0,
|
|
1179
1233
|
class: "can-wrap"
|
|
1180
1234
|
};
|
|
1181
|
-
const _hoisted_3$
|
|
1182
|
-
const _hoisted_4$
|
|
1183
|
-
const _hoisted_5$
|
|
1184
|
-
const _hoisted_6$
|
|
1235
|
+
const _hoisted_3$f = { class: "can-top" };
|
|
1236
|
+
const _hoisted_4$c = { class: "can-main" };
|
|
1237
|
+
const _hoisted_5$b = { class: "can-date" };
|
|
1238
|
+
const _hoisted_6$9 = {
|
|
1185
1239
|
key: 1,
|
|
1186
1240
|
class: "can-wrap2"
|
|
1187
1241
|
};
|
|
1188
|
-
const _hoisted_7$
|
|
1189
|
-
const _hoisted_8$
|
|
1190
|
-
const _hoisted_9$
|
|
1191
|
-
const _hoisted_10$
|
|
1192
|
-
const _hoisted_11$
|
|
1193
|
-
const _hoisted_12$
|
|
1242
|
+
const _hoisted_7$8 = { class: "can-top" };
|
|
1243
|
+
const _hoisted_8$5 = /*#__PURE__*/vue.createElementVNode("span", null, "/", -1 /* HOISTED */);
|
|
1244
|
+
const _hoisted_9$5 = { class: "can-main" };
|
|
1245
|
+
const _hoisted_10$5 = { class: "can-week" };
|
|
1246
|
+
const _hoisted_11$5 = { class: "can-date" };
|
|
1247
|
+
const _hoisted_12$5 = {
|
|
1194
1248
|
key: 2,
|
|
1195
1249
|
class: "can-wrap3"
|
|
1196
1250
|
};
|
|
1197
|
-
const _hoisted_13$
|
|
1198
|
-
const _hoisted_14$
|
|
1199
|
-
const _hoisted_15$
|
|
1200
|
-
const _hoisted_16$
|
|
1251
|
+
const _hoisted_13$5 = { class: "can-top" };
|
|
1252
|
+
const _hoisted_14$5 = /*#__PURE__*/vue.createElementVNode("span", null, "/", -1 /* HOISTED */);
|
|
1253
|
+
const _hoisted_15$5 = { class: "can-main" };
|
|
1254
|
+
const _hoisted_16$5 = { class: "can-date" };
|
|
1201
1255
|
|
|
1202
|
-
function render$
|
|
1256
|
+
function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1203
1257
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
1204
1258
|
class: "ele-calendar eles",
|
|
1205
1259
|
"data-id": _ctx.element.id,
|
|
@@ -1219,8 +1273,8 @@
|
|
|
1219
1273
|
style: vue.normalizeStyle(_ctx.aniWrapStyle)
|
|
1220
1274
|
}, [
|
|
1221
1275
|
(_ctx.element.kind === 1)
|
|
1222
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
1223
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
1276
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$g, [
|
|
1277
|
+
vue.createElementVNode("div", _hoisted_3$f, [
|
|
1224
1278
|
vue.createElementVNode("div", {
|
|
1225
1279
|
class: "can-left",
|
|
1226
1280
|
style: vue.normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1233,7 +1287,7 @@
|
|
|
1233
1287
|
vue.createTextVNode(" " + vue.toDisplayString(_ctx.month), 1 /* TEXT */)
|
|
1234
1288
|
], 4 /* STYLE */)
|
|
1235
1289
|
]),
|
|
1236
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
1290
|
+
vue.createElementVNode("div", _hoisted_4$c, [
|
|
1237
1291
|
vue.createElementVNode("div", {
|
|
1238
1292
|
class: "can-week",
|
|
1239
1293
|
style: vue.normalizeStyle({ backgroundColor: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1242,7 +1296,7 @@
|
|
|
1242
1296
|
return (vue.openBlock(), vue.createElementBlock("span", { key: day }, vue.toDisplayString(day), 1 /* TEXT */))
|
|
1243
1297
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1244
1298
|
], 4 /* STYLE */),
|
|
1245
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
1299
|
+
vue.createElementVNode("div", _hoisted_5$b, [
|
|
1246
1300
|
vue.createElementVNode("ul", null, [
|
|
1247
1301
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.days, (day, index) => {
|
|
1248
1302
|
return (vue.openBlock(), vue.createElementBlock("li", {
|
|
@@ -1271,19 +1325,19 @@
|
|
|
1271
1325
|
]))
|
|
1272
1326
|
: vue.createCommentVNode("v-if", true),
|
|
1273
1327
|
(_ctx.element.kind === 2)
|
|
1274
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$
|
|
1275
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
1328
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$9, [
|
|
1329
|
+
vue.createElementVNode("div", _hoisted_7$8, [
|
|
1276
1330
|
vue.createElementVNode("div", {
|
|
1277
1331
|
class: "can-size",
|
|
1278
1332
|
style: vue.normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1279
1333
|
}, [
|
|
1280
1334
|
vue.createTextVNode(vue.toDisplayString(_ctx.currentDay) + " ", 1 /* TEXT */),
|
|
1281
|
-
_hoisted_8$
|
|
1335
|
+
_hoisted_8$5,
|
|
1282
1336
|
vue.createTextVNode(" " + vue.toDisplayString(_ctx.currentMonth), 1 /* TEXT */)
|
|
1283
1337
|
], 4 /* STYLE */)
|
|
1284
1338
|
]),
|
|
1285
|
-
vue.createElementVNode("div", _hoisted_9$
|
|
1286
|
-
vue.createElementVNode("div", _hoisted_10$
|
|
1339
|
+
vue.createElementVNode("div", _hoisted_9$5, [
|
|
1340
|
+
vue.createElementVNode("div", _hoisted_10$5, [
|
|
1287
1341
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.weekDays, (day) => {
|
|
1288
1342
|
return (vue.openBlock(), vue.createElementBlock("span", {
|
|
1289
1343
|
key: day,
|
|
@@ -1291,7 +1345,7 @@
|
|
|
1291
1345
|
}, vue.toDisplayString(day), 5 /* TEXT, STYLE */))
|
|
1292
1346
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1293
1347
|
]),
|
|
1294
|
-
vue.createElementVNode("div", _hoisted_11$
|
|
1348
|
+
vue.createElementVNode("div", _hoisted_11$5, [
|
|
1295
1349
|
vue.createElementVNode("div", {
|
|
1296
1350
|
class: "can-year",
|
|
1297
1351
|
style: vue.normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1324,14 +1378,14 @@
|
|
|
1324
1378
|
]))
|
|
1325
1379
|
: vue.createCommentVNode("v-if", true),
|
|
1326
1380
|
(_ctx.element.kind === 3)
|
|
1327
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12$
|
|
1328
|
-
vue.createElementVNode("div", _hoisted_13$
|
|
1381
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12$5, [
|
|
1382
|
+
vue.createElementVNode("div", _hoisted_13$5, [
|
|
1329
1383
|
vue.createElementVNode("div", {
|
|
1330
1384
|
class: "can-size",
|
|
1331
1385
|
style: vue.normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1332
1386
|
}, [
|
|
1333
1387
|
vue.createTextVNode(vue.toDisplayString(_ctx.currentDay) + " ", 1 /* TEXT */),
|
|
1334
|
-
_hoisted_14$
|
|
1388
|
+
_hoisted_14$5,
|
|
1335
1389
|
vue.createTextVNode(" " + vue.toDisplayString(_ctx.currentMonth), 1 /* TEXT */)
|
|
1336
1390
|
], 4 /* STYLE */),
|
|
1337
1391
|
vue.createElementVNode("div", {
|
|
@@ -1339,7 +1393,7 @@
|
|
|
1339
1393
|
style: vue.normalizeStyle({ color: _ctx.element.themeColor || '#ed5566' })
|
|
1340
1394
|
}, "-" + vue.toDisplayString(_ctx.currentYear) + "-", 5 /* TEXT, STYLE */)
|
|
1341
1395
|
]),
|
|
1342
|
-
vue.createElementVNode("div", _hoisted_15$
|
|
1396
|
+
vue.createElementVNode("div", _hoisted_15$5, [
|
|
1343
1397
|
vue.createElementVNode("div", {
|
|
1344
1398
|
class: "can-week",
|
|
1345
1399
|
style: vue.normalizeStyle({ borderColor: _ctx.element.themeColor || '#ed5566' })
|
|
@@ -1351,7 +1405,7 @@
|
|
|
1351
1405
|
}, vue.toDisplayString(day), 5 /* TEXT, STYLE */))
|
|
1352
1406
|
}), 128 /* KEYED_FRAGMENT */))
|
|
1353
1407
|
], 4 /* STYLE */),
|
|
1354
|
-
vue.createElementVNode("div", _hoisted_16$
|
|
1408
|
+
vue.createElementVNode("div", _hoisted_16$5, [
|
|
1355
1409
|
vue.createElementVNode("ul", null, [
|
|
1356
1410
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.days, (day, index) => {
|
|
1357
1411
|
return (vue.openBlock(), vue.createElementBlock("li", {
|
|
@@ -1380,17 +1434,17 @@
|
|
|
1380
1434
|
]))
|
|
1381
1435
|
: vue.createCommentVNode("v-if", true)
|
|
1382
1436
|
], 4 /* STYLE */)
|
|
1383
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
1437
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$j))
|
|
1384
1438
|
}
|
|
1385
1439
|
|
|
1386
|
-
script$
|
|
1387
|
-
script$
|
|
1440
|
+
script$o.render = render$k;
|
|
1441
|
+
script$o.__file = "src/components/UniCalendar/UniCalendar.vue";
|
|
1388
1442
|
|
|
1389
|
-
script$
|
|
1390
|
-
app.component(script$
|
|
1443
|
+
script$o.install = (app) => {
|
|
1444
|
+
app.component(script$o.name, script$o);
|
|
1391
1445
|
};
|
|
1392
1446
|
|
|
1393
|
-
var script$
|
|
1447
|
+
var script$n = vue.defineComponent({
|
|
1394
1448
|
name: 'uni-countdown',
|
|
1395
1449
|
props: {
|
|
1396
1450
|
element: {
|
|
@@ -1681,30 +1735,30 @@
|
|
|
1681
1735
|
}
|
|
1682
1736
|
});
|
|
1683
1737
|
|
|
1684
|
-
const _hoisted_1$
|
|
1685
|
-
const _hoisted_2$
|
|
1686
|
-
const _hoisted_3$
|
|
1687
|
-
const _hoisted_4$
|
|
1688
|
-
const _hoisted_5$
|
|
1689
|
-
const _hoisted_6$
|
|
1690
|
-
const _hoisted_7$
|
|
1691
|
-
const _hoisted_8$
|
|
1692
|
-
const _hoisted_9$
|
|
1693
|
-
const _hoisted_10$
|
|
1694
|
-
const _hoisted_11$
|
|
1695
|
-
const _hoisted_12$
|
|
1696
|
-
const _hoisted_13$
|
|
1697
|
-
const _hoisted_14$
|
|
1698
|
-
const _hoisted_15$
|
|
1699
|
-
const _hoisted_16$
|
|
1700
|
-
const _hoisted_17$
|
|
1701
|
-
const _hoisted_18$
|
|
1702
|
-
const _hoisted_19$
|
|
1738
|
+
const _hoisted_1$i = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
1739
|
+
const _hoisted_2$f = ["data-direction"];
|
|
1740
|
+
const _hoisted_3$e = { class: "c-wrap" };
|
|
1741
|
+
const _hoisted_4$b = { class: "c-num c-left" };
|
|
1742
|
+
const _hoisted_5$a = { class: "flex-wrap" };
|
|
1743
|
+
const _hoisted_6$8 = { class: "c-num c-right" };
|
|
1744
|
+
const _hoisted_7$7 = { class: "flex-wrap" };
|
|
1745
|
+
const _hoisted_8$4 = { class: "c-wrap" };
|
|
1746
|
+
const _hoisted_9$4 = { class: "c-num c-left" };
|
|
1747
|
+
const _hoisted_10$4 = { class: "flex-wrap" };
|
|
1748
|
+
const _hoisted_11$4 = { class: "c-num c-right" };
|
|
1749
|
+
const _hoisted_12$4 = { class: "flex-wrap" };
|
|
1750
|
+
const _hoisted_13$4 = { class: "c-wrap" };
|
|
1751
|
+
const _hoisted_14$4 = { class: "c-num c-left" };
|
|
1752
|
+
const _hoisted_15$4 = { class: "flex-wrap" };
|
|
1753
|
+
const _hoisted_16$4 = { class: "c-num c-right" };
|
|
1754
|
+
const _hoisted_17$4 = { class: "flex-wrap" };
|
|
1755
|
+
const _hoisted_18$4 = { class: "c-wrap" };
|
|
1756
|
+
const _hoisted_19$4 = { class: "c-num c-left" };
|
|
1703
1757
|
const _hoisted_20$3 = { class: "flex-wrap" };
|
|
1704
1758
|
const _hoisted_21$3 = { class: "c-num c-right" };
|
|
1705
1759
|
const _hoisted_22$3 = { class: "flex-wrap" };
|
|
1706
1760
|
|
|
1707
|
-
function render$
|
|
1761
|
+
function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1708
1762
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
1709
1763
|
class: "count-down eles",
|
|
1710
1764
|
"data-id": _ctx.element.id,
|
|
@@ -1746,9 +1800,9 @@
|
|
|
1746
1800
|
class: "c-com c-day",
|
|
1747
1801
|
style: vue.normalizeStyle(_ctx.comStyle)
|
|
1748
1802
|
}, [
|
|
1749
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
1750
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
1751
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
1803
|
+
vue.createElementVNode("div", _hoisted_3$e, [
|
|
1804
|
+
vue.createElementVNode("div", _hoisted_4$b, [
|
|
1805
|
+
vue.createElementVNode("div", _hoisted_5$a, [
|
|
1752
1806
|
(_ctx.days >= 100)
|
|
1753
1807
|
? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1754
1808
|
key: 0,
|
|
@@ -1766,8 +1820,8 @@
|
|
|
1766
1820
|
}, vue.toDisplayString(_ctx.currentDaysLeft), 5 /* TEXT, STYLE */)
|
|
1767
1821
|
])
|
|
1768
1822
|
]),
|
|
1769
|
-
vue.createElementVNode("div", _hoisted_6$
|
|
1770
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
1823
|
+
vue.createElementVNode("div", _hoisted_6$8, [
|
|
1824
|
+
vue.createElementVNode("div", _hoisted_7$7, [
|
|
1771
1825
|
vue.createElementVNode("div", {
|
|
1772
1826
|
class: "next-num",
|
|
1773
1827
|
style: vue.normalizeStyle(_ctx.numStyle)
|
|
@@ -1789,9 +1843,9 @@
|
|
|
1789
1843
|
class: "c-com c-hour",
|
|
1790
1844
|
style: vue.normalizeStyle(_ctx.comStyle)
|
|
1791
1845
|
}, [
|
|
1792
|
-
vue.createElementVNode("div", _hoisted_8$
|
|
1793
|
-
vue.createElementVNode("div", _hoisted_9$
|
|
1794
|
-
vue.createElementVNode("div", _hoisted_10$
|
|
1846
|
+
vue.createElementVNode("div", _hoisted_8$4, [
|
|
1847
|
+
vue.createElementVNode("div", _hoisted_9$4, [
|
|
1848
|
+
vue.createElementVNode("div", _hoisted_10$4, [
|
|
1795
1849
|
vue.createElementVNode("div", {
|
|
1796
1850
|
class: "next-num",
|
|
1797
1851
|
style: vue.normalizeStyle(_ctx.numStyle)
|
|
@@ -1802,8 +1856,8 @@
|
|
|
1802
1856
|
}, vue.toDisplayString(_ctx.currentHoursLeft), 5 /* TEXT, STYLE */)
|
|
1803
1857
|
])
|
|
1804
1858
|
]),
|
|
1805
|
-
vue.createElementVNode("div", _hoisted_11$
|
|
1806
|
-
vue.createElementVNode("div", _hoisted_12$
|
|
1859
|
+
vue.createElementVNode("div", _hoisted_11$4, [
|
|
1860
|
+
vue.createElementVNode("div", _hoisted_12$4, [
|
|
1807
1861
|
vue.createElementVNode("div", {
|
|
1808
1862
|
class: "next-num",
|
|
1809
1863
|
style: vue.normalizeStyle(_ctx.numStyle)
|
|
@@ -1825,9 +1879,9 @@
|
|
|
1825
1879
|
class: "c-com c-minute",
|
|
1826
1880
|
style: vue.normalizeStyle(_ctx.comStyle)
|
|
1827
1881
|
}, [
|
|
1828
|
-
vue.createElementVNode("div", _hoisted_13$
|
|
1829
|
-
vue.createElementVNode("div", _hoisted_14$
|
|
1830
|
-
vue.createElementVNode("div", _hoisted_15$
|
|
1882
|
+
vue.createElementVNode("div", _hoisted_13$4, [
|
|
1883
|
+
vue.createElementVNode("div", _hoisted_14$4, [
|
|
1884
|
+
vue.createElementVNode("div", _hoisted_15$4, [
|
|
1831
1885
|
vue.createElementVNode("div", {
|
|
1832
1886
|
class: "next-num",
|
|
1833
1887
|
style: vue.normalizeStyle(_ctx.numStyle)
|
|
@@ -1838,8 +1892,8 @@
|
|
|
1838
1892
|
}, vue.toDisplayString(_ctx.currentMinutesLeft), 5 /* TEXT, STYLE */)
|
|
1839
1893
|
])
|
|
1840
1894
|
]),
|
|
1841
|
-
vue.createElementVNode("div", _hoisted_16$
|
|
1842
|
-
vue.createElementVNode("div", _hoisted_17$
|
|
1895
|
+
vue.createElementVNode("div", _hoisted_16$4, [
|
|
1896
|
+
vue.createElementVNode("div", _hoisted_17$4, [
|
|
1843
1897
|
vue.createElementVNode("div", {
|
|
1844
1898
|
class: "next-num",
|
|
1845
1899
|
style: vue.normalizeStyle(_ctx.numStyle)
|
|
@@ -1861,8 +1915,8 @@
|
|
|
1861
1915
|
class: "c-com c-second",
|
|
1862
1916
|
style: vue.normalizeStyle(_ctx.comStyle)
|
|
1863
1917
|
}, [
|
|
1864
|
-
vue.createElementVNode("div", _hoisted_18$
|
|
1865
|
-
vue.createElementVNode("div", _hoisted_19$
|
|
1918
|
+
vue.createElementVNode("div", _hoisted_18$4, [
|
|
1919
|
+
vue.createElementVNode("div", _hoisted_19$4, [
|
|
1866
1920
|
vue.createElementVNode("div", _hoisted_20$3, [
|
|
1867
1921
|
vue.createElementVNode("div", {
|
|
1868
1922
|
class: "next-num",
|
|
@@ -1892,21 +1946,21 @@
|
|
|
1892
1946
|
}, vue.toDisplayString(_ctx.second), 5 /* TEXT, STYLE */)
|
|
1893
1947
|
])
|
|
1894
1948
|
], 4 /* STYLE */)
|
|
1895
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_2$
|
|
1949
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_2$f)
|
|
1896
1950
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
1897
1951
|
], 4 /* STYLE */)
|
|
1898
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
1952
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$i))
|
|
1899
1953
|
}
|
|
1900
1954
|
|
|
1901
|
-
script$
|
|
1902
|
-
script$
|
|
1903
|
-
script$
|
|
1955
|
+
script$n.render = render$j;
|
|
1956
|
+
script$n.__scopeId = "data-v-bb868822";
|
|
1957
|
+
script$n.__file = "src/components/UniCountdown/UniCountdown.vue";
|
|
1904
1958
|
|
|
1905
|
-
script$
|
|
1906
|
-
app.component(script$
|
|
1959
|
+
script$n.install = (app) => {
|
|
1960
|
+
app.component(script$n.name, script$n);
|
|
1907
1961
|
};
|
|
1908
1962
|
|
|
1909
|
-
var script$
|
|
1963
|
+
var script$m = vue.defineComponent({
|
|
1910
1964
|
name: 'uni-map',
|
|
1911
1965
|
props: {
|
|
1912
1966
|
element: {
|
|
@@ -1976,11 +2030,11 @@
|
|
|
1976
2030
|
}
|
|
1977
2031
|
});
|
|
1978
2032
|
|
|
1979
|
-
const _hoisted_1$
|
|
1980
|
-
const _hoisted_2$
|
|
1981
|
-
const _hoisted_3$
|
|
2033
|
+
const _hoisted_1$h = ["data-id", "data-pid", "data-type", "data-show", "pid", "type", "layername", "sign", "signsort"];
|
|
2034
|
+
const _hoisted_2$e = ["innerHTML"];
|
|
2035
|
+
const _hoisted_3$d = /*#__PURE__*/vue.createElementVNode("div", { class: "mask-map" }, null, -1 /* HOISTED */);
|
|
1982
2036
|
|
|
1983
|
-
function render$
|
|
2037
|
+
function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1984
2038
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
1985
2039
|
class: "element-ditu eles",
|
|
1986
2040
|
"data-id": _ctx.element.id,
|
|
@@ -2012,10 +2066,10 @@
|
|
|
2012
2066
|
vue.createElementVNode("div", {
|
|
2013
2067
|
innerHTML: _ctx.iframeUrl,
|
|
2014
2068
|
class: "map-iframe"
|
|
2015
|
-
}, null, 8 /* PROPS */, _hoisted_2$
|
|
2069
|
+
}, null, 8 /* PROPS */, _hoisted_2$e),
|
|
2016
2070
|
vue.createCommentVNode(" 隐藏的辅助元素 "),
|
|
2017
2071
|
vue.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> "),
|
|
2018
|
-
_hoisted_3$
|
|
2072
|
+
_hoisted_3$d
|
|
2019
2073
|
], 4 /* STYLE */))
|
|
2020
2074
|
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
2021
2075
|
vue.createCommentVNode(" 导航按钮 "),
|
|
@@ -2033,17 +2087,17 @@
|
|
|
2033
2087
|
], 4 /* STYLE */)
|
|
2034
2088
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
2035
2089
|
], 4 /* STYLE */)
|
|
2036
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
2090
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$h))
|
|
2037
2091
|
}
|
|
2038
2092
|
|
|
2039
|
-
script$
|
|
2040
|
-
script$
|
|
2093
|
+
script$m.render = render$i;
|
|
2094
|
+
script$m.__file = "src/components/UniMap/UniMap.vue";
|
|
2041
2095
|
|
|
2042
|
-
script$
|
|
2043
|
-
app.component(script$
|
|
2096
|
+
script$m.install = (app) => {
|
|
2097
|
+
app.component(script$m.name, script$m);
|
|
2044
2098
|
};
|
|
2045
2099
|
|
|
2046
|
-
var script$
|
|
2100
|
+
var script$l = vue.defineComponent({
|
|
2047
2101
|
name: 'uni-call',
|
|
2048
2102
|
props: {
|
|
2049
2103
|
element: {
|
|
@@ -2126,10 +2180,10 @@
|
|
|
2126
2180
|
}
|
|
2127
2181
|
});
|
|
2128
2182
|
|
|
2129
|
-
const _hoisted_1$
|
|
2130
|
-
const _hoisted_2$
|
|
2183
|
+
const _hoisted_1$g = ["data-id"];
|
|
2184
|
+
const _hoisted_2$d = { class: "call-content" };
|
|
2131
2185
|
|
|
2132
|
-
function render$
|
|
2186
|
+
function render$h(_ctx, _cache, $props, $setup, $data, $options) {
|
|
2133
2187
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
2134
2188
|
class: "call eles",
|
|
2135
2189
|
"data-id": _ctx.element.id,
|
|
@@ -2143,7 +2197,7 @@
|
|
|
2143
2197
|
boxShadow: _ctx.shadowStyle
|
|
2144
2198
|
})
|
|
2145
2199
|
}, [
|
|
2146
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
2200
|
+
vue.createElementVNode("div", _hoisted_2$d, [
|
|
2147
2201
|
vue.createElementVNode("i", {
|
|
2148
2202
|
class: "iconfont hb-tel",
|
|
2149
2203
|
style: vue.normalizeStyle(_ctx.bntStyle)
|
|
@@ -2154,14 +2208,14 @@
|
|
|
2154
2208
|
}, vue.toDisplayString(_ctx.btnText), 5 /* TEXT, STYLE */)
|
|
2155
2209
|
])
|
|
2156
2210
|
], 4 /* STYLE */)
|
|
2157
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
2211
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$g))
|
|
2158
2212
|
}
|
|
2159
2213
|
|
|
2160
|
-
script$
|
|
2161
|
-
script$
|
|
2214
|
+
script$l.render = render$h;
|
|
2215
|
+
script$l.__file = "src/components/UniCall/UniCall.vue";
|
|
2162
2216
|
|
|
2163
|
-
script$
|
|
2164
|
-
app.component(script$
|
|
2217
|
+
script$l.install = (app) => {
|
|
2218
|
+
app.component(script$l.name, script$l);
|
|
2165
2219
|
};
|
|
2166
2220
|
|
|
2167
2221
|
// 花瓣图片资源 (base64编码)
|
|
@@ -2201,7 +2255,7 @@
|
|
|
2201
2255
|
'https://h5cdn.unika.cc/static/img/uniComponents/huaban.png'
|
|
2202
2256
|
// 可以添加更多花瓣图片
|
|
2203
2257
|
];
|
|
2204
|
-
var script$
|
|
2258
|
+
var script$k = vue.defineComponent({
|
|
2205
2259
|
name: 'uni-effect',
|
|
2206
2260
|
props: {
|
|
2207
2261
|
element: {
|
|
@@ -2299,14 +2353,14 @@
|
|
|
2299
2353
|
}
|
|
2300
2354
|
});
|
|
2301
2355
|
|
|
2302
|
-
const _hoisted_1$
|
|
2356
|
+
const _hoisted_1$f = { class: "effect-wrap" };
|
|
2303
2357
|
|
|
2304
|
-
function render$
|
|
2358
|
+
function render$g(_ctx, _cache, $props, $setup, $data, $options) {
|
|
2305
2359
|
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
|
|
2306
2360
|
class: "ele-effect eles",
|
|
2307
2361
|
style: vue.normalizeStyle(_ctx.containerStyle)
|
|
2308
2362
|
}, [
|
|
2309
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
2363
|
+
vue.createElementVNode("div", _hoisted_1$f, [
|
|
2310
2364
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.particles, (particle, index) => {
|
|
2311
2365
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
2312
2366
|
key: index,
|
|
@@ -2320,11 +2374,11 @@
|
|
|
2320
2374
|
])
|
|
2321
2375
|
}
|
|
2322
2376
|
|
|
2323
|
-
script$
|
|
2324
|
-
script$
|
|
2377
|
+
script$k.render = render$g;
|
|
2378
|
+
script$k.__file = "src/components/UniEffect/UniEffect.vue";
|
|
2325
2379
|
|
|
2326
|
-
script$
|
|
2327
|
-
app.component(script$
|
|
2380
|
+
script$k.install = (app) => {
|
|
2381
|
+
app.component(script$k.name, script$k);
|
|
2328
2382
|
};
|
|
2329
2383
|
|
|
2330
2384
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -22882,13 +22936,13 @@
|
|
|
22882
22936
|
ListCache.prototype.get = listCacheGet;
|
|
22883
22937
|
ListCache.prototype.has = listCacheHas;
|
|
22884
22938
|
ListCache.prototype.set = listCacheSet;
|
|
22885
|
-
var Map = getNative(root$1, "Map");
|
|
22886
|
-
var Map$1 = Map;
|
|
22939
|
+
var Map$1 = getNative(root$1, "Map");
|
|
22940
|
+
var Map$1$1 = Map$1;
|
|
22887
22941
|
function mapCacheClear() {
|
|
22888
22942
|
this.size = 0;
|
|
22889
22943
|
this.__data__ = {
|
|
22890
22944
|
"hash": new Hash(),
|
|
22891
|
-
"map": new (Map$1 || ListCache)(),
|
|
22945
|
+
"map": new (Map$1$1 || ListCache)(),
|
|
22892
22946
|
"string": new Hash()
|
|
22893
22947
|
};
|
|
22894
22948
|
}
|
|
@@ -22959,7 +23013,7 @@
|
|
|
22959
23013
|
var data = this.__data__;
|
|
22960
23014
|
if (data instanceof ListCache) {
|
|
22961
23015
|
var pairs = data.__data__;
|
|
22962
|
-
if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
|
23016
|
+
if (!Map$1$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
|
22963
23017
|
pairs.push([key, value]);
|
|
22964
23018
|
this.size = ++data.size;
|
|
22965
23019
|
return this;
|
|
@@ -23057,9 +23111,9 @@
|
|
|
23057
23111
|
var Set$1$1 = Set$1;
|
|
23058
23112
|
var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
|
|
23059
23113
|
var dataViewTag$3 = "[object DataView]";
|
|
23060
|
-
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1$1), weakMapCtorString = toSource(WeakMap$1);
|
|
23114
|
+
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1$1), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1$1), weakMapCtorString = toSource(WeakMap$1);
|
|
23061
23115
|
var getTag = baseGetTag;
|
|
23062
|
-
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) {
|
|
23116
|
+
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) {
|
|
23063
23117
|
getTag = function(value) {
|
|
23064
23118
|
var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
|
|
23065
23119
|
if (ctorString) {
|
|
@@ -23806,7 +23860,7 @@
|
|
|
23806
23860
|
}
|
|
23807
23861
|
var Vue3Lottie = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
23808
23862
|
|
|
23809
|
-
var script$
|
|
23863
|
+
var script$j = vue.defineComponent({
|
|
23810
23864
|
name: 'uni-lottie',
|
|
23811
23865
|
components: {
|
|
23812
23866
|
Vue3Lottie
|
|
@@ -23867,9 +23921,9 @@
|
|
|
23867
23921
|
}
|
|
23868
23922
|
});
|
|
23869
23923
|
|
|
23870
|
-
const _hoisted_1$
|
|
23924
|
+
const _hoisted_1$e = ["data-id", "data-pid", "data-type", "data-show"];
|
|
23871
23925
|
|
|
23872
|
-
function render$
|
|
23926
|
+
function render$f(_ctx, _cache, $props, $setup, $data, $options) {
|
|
23873
23927
|
const _component_Vue3Lottie = vue.resolveComponent("Vue3Lottie");
|
|
23874
23928
|
|
|
23875
23929
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
@@ -23892,17 +23946,17 @@
|
|
|
23892
23946
|
ref: "lottieAnimation"
|
|
23893
23947
|
}, null, 8 /* PROPS */, ["style", "animationLink", "loop", "delay"])
|
|
23894
23948
|
], 4 /* STYLE */)
|
|
23895
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
23949
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$e))
|
|
23896
23950
|
}
|
|
23897
23951
|
|
|
23898
|
-
script$
|
|
23899
|
-
script$
|
|
23952
|
+
script$j.render = render$f;
|
|
23953
|
+
script$j.__file = "src/components/UniLottie/UniLottie.vue";
|
|
23900
23954
|
|
|
23901
|
-
script$
|
|
23902
|
-
app.component(script$
|
|
23955
|
+
script$j.install = (app) => {
|
|
23956
|
+
app.component(script$j.name, script$j);
|
|
23903
23957
|
};
|
|
23904
23958
|
|
|
23905
|
-
var script$
|
|
23959
|
+
var script$i = vue.defineComponent({
|
|
23906
23960
|
name: 'uni-button',
|
|
23907
23961
|
props: {
|
|
23908
23962
|
element: {
|
|
@@ -23969,9 +24023,9 @@
|
|
|
23969
24023
|
}
|
|
23970
24024
|
});
|
|
23971
24025
|
|
|
23972
|
-
const _hoisted_1$
|
|
24026
|
+
const _hoisted_1$d = { class: "button-content" };
|
|
23973
24027
|
|
|
23974
|
-
function render$
|
|
24028
|
+
function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|
23975
24029
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
23976
24030
|
class: "button eles",
|
|
23977
24031
|
style: vue.normalizeStyle(_ctx.containerStyle),
|
|
@@ -23984,7 +24038,7 @@
|
|
|
23984
24038
|
boxShadow: _ctx.shadowStyle
|
|
23985
24039
|
})
|
|
23986
24040
|
}, [
|
|
23987
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
24041
|
+
vue.createElementVNode("div", _hoisted_1$d, [
|
|
23988
24042
|
vue.createElementVNode("span", {
|
|
23989
24043
|
class: "btn-text",
|
|
23990
24044
|
style: vue.normalizeStyle(_ctx.bntStyle)
|
|
@@ -23994,18 +24048,25 @@
|
|
|
23994
24048
|
], 4 /* STYLE */))
|
|
23995
24049
|
}
|
|
23996
24050
|
|
|
23997
|
-
script$
|
|
23998
|
-
script$
|
|
24051
|
+
script$i.render = render$e;
|
|
24052
|
+
script$i.__file = "src/components/UniButton/UniButton.vue";
|
|
23999
24053
|
|
|
24000
|
-
script$
|
|
24001
|
-
app.component(script$
|
|
24054
|
+
script$i.install = (app) => {
|
|
24055
|
+
app.component(script$i.name, script$i);
|
|
24002
24056
|
};
|
|
24003
24057
|
|
|
24058
|
+
const PLACEHOLDER_GIFT_QR_CODE = 'https://h5cdn.unika.cc/static/img/uniComponents/giftqrcode.png';
|
|
24059
|
+
function isRealGiftQRCode(url) {
|
|
24060
|
+
const value = String(url || '').trim();
|
|
24061
|
+
return !!value && value !== PLACEHOLDER_GIFT_QR_CODE;
|
|
24062
|
+
}
|
|
24063
|
+
|
|
24004
24064
|
async function requestJson(url, init) {
|
|
24005
|
-
|
|
24065
|
+
var _a;
|
|
24066
|
+
const timeout = (_a = init === null || init === void 0 ? void 0 : init.timeout) !== null && _a !== void 0 ? _a : 8000;
|
|
24006
24067
|
const controller = new AbortController();
|
|
24007
24068
|
const timer = window.setTimeout(() => controller.abort(), timeout);
|
|
24008
|
-
const { timeout: _timeout, ...fetchInit } = init
|
|
24069
|
+
const { timeout: _timeout, ...fetchInit } = init !== null && init !== void 0 ? init : {};
|
|
24009
24070
|
try {
|
|
24010
24071
|
const res = await fetch(url, { ...fetchInit, signal: controller.signal });
|
|
24011
24072
|
const data = (await res.json());
|
|
@@ -24015,7 +24076,7 @@
|
|
|
24015
24076
|
window.clearTimeout(timer);
|
|
24016
24077
|
}
|
|
24017
24078
|
}
|
|
24018
|
-
var script$
|
|
24079
|
+
var script$h = vue.defineComponent({
|
|
24019
24080
|
name: 'uni-barrage',
|
|
24020
24081
|
props: {
|
|
24021
24082
|
env: {
|
|
@@ -24061,6 +24122,7 @@
|
|
|
24061
24122
|
'มีลูกเต็มบ้าน มีหลานเต็มเมือง',
|
|
24062
24123
|
'รักแท้จงอยู่คู่คุณทั้งสองตลอดไป',
|
|
24063
24124
|
];
|
|
24125
|
+
const hasRealGiftQR = vue.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); });
|
|
24064
24126
|
const bulletConfig = vue.computed(() => {
|
|
24065
24127
|
return {
|
|
24066
24128
|
bgColor: props.global.toolbar.bgColor || '#ffffff',
|
|
@@ -24281,10 +24343,13 @@
|
|
|
24281
24343
|
imageLoaded.value = true;
|
|
24282
24344
|
};
|
|
24283
24345
|
const showGiftPopup = () => {
|
|
24346
|
+
if (!hasRealGiftQR.value)
|
|
24347
|
+
return;
|
|
24284
24348
|
showGift.value = true;
|
|
24285
24349
|
imageLoaded.value = false; // 重置加载状态
|
|
24286
24350
|
};
|
|
24287
24351
|
return {
|
|
24352
|
+
hasRealGiftQR,
|
|
24288
24353
|
name,
|
|
24289
24354
|
content,
|
|
24290
24355
|
showPopup,
|
|
@@ -24323,31 +24388,31 @@
|
|
|
24323
24388
|
}
|
|
24324
24389
|
});
|
|
24325
24390
|
|
|
24326
|
-
const _hoisted_1$
|
|
24391
|
+
const _hoisted_1$c = {
|
|
24327
24392
|
id: "toolbarNew",
|
|
24328
24393
|
ref: "toolbar"
|
|
24329
24394
|
};
|
|
24330
|
-
const _hoisted_2$
|
|
24331
|
-
const _hoisted_3$
|
|
24332
|
-
const _hoisted_4$
|
|
24333
|
-
const _hoisted_5$
|
|
24334
|
-
_hoisted_4$
|
|
24395
|
+
const _hoisted_2$c = { class: "toolbar" };
|
|
24396
|
+
const _hoisted_3$c = { class: "bar-left" };
|
|
24397
|
+
const _hoisted_4$a = /*#__PURE__*/vue.createElementVNode("img", { src: "https://h5cdn.unika.cc/static/img/uniComponents/hide.png" }, null, -1 /* HOISTED */);
|
|
24398
|
+
const _hoisted_5$9 = [
|
|
24399
|
+
_hoisted_4$a
|
|
24335
24400
|
];
|
|
24336
|
-
const _hoisted_6$
|
|
24401
|
+
const _hoisted_6$7 = {
|
|
24337
24402
|
key: 0,
|
|
24338
24403
|
class: "bar-right"
|
|
24339
24404
|
};
|
|
24340
|
-
const _hoisted_7$
|
|
24405
|
+
const _hoisted_7$6 = {
|
|
24341
24406
|
key: 0,
|
|
24342
24407
|
class: "bar-praise"
|
|
24343
24408
|
};
|
|
24344
|
-
const _hoisted_8$
|
|
24345
|
-
const _hoisted_9$
|
|
24346
|
-
const _hoisted_10$
|
|
24409
|
+
const _hoisted_8$3 = /*#__PURE__*/vue.createElementVNode("strong", { class: "ani-num" }, "+1", -1 /* HOISTED */);
|
|
24410
|
+
const _hoisted_9$3 = /*#__PURE__*/vue.createElementVNode("div", { class: "stop-longtap" }, null, -1 /* HOISTED */);
|
|
24411
|
+
const _hoisted_10$3 = /*#__PURE__*/vue.createElementVNode("img", {
|
|
24347
24412
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/parise.png",
|
|
24348
24413
|
class: "animated"
|
|
24349
24414
|
}, null, -1 /* HOISTED */);
|
|
24350
|
-
const _hoisted_11$
|
|
24415
|
+
const _hoisted_11$3 = /*#__PURE__*/vue.createElementVNode("div", { class: "zan-wrap" }, [
|
|
24351
24416
|
/*#__PURE__*/vue.createElementVNode("span"),
|
|
24352
24417
|
/*#__PURE__*/vue.createElementVNode("span"),
|
|
24353
24418
|
/*#__PURE__*/vue.createElementVNode("span"),
|
|
@@ -24357,23 +24422,23 @@
|
|
|
24357
24422
|
/*#__PURE__*/vue.createElementVNode("span"),
|
|
24358
24423
|
/*#__PURE__*/vue.createElementVNode("span")
|
|
24359
24424
|
], -1 /* HOISTED */);
|
|
24360
|
-
const _hoisted_12$
|
|
24361
|
-
_hoisted_8$
|
|
24362
|
-
_hoisted_9$
|
|
24363
|
-
_hoisted_10$
|
|
24364
|
-
_hoisted_11$
|
|
24425
|
+
const _hoisted_12$3 = [
|
|
24426
|
+
_hoisted_8$3,
|
|
24427
|
+
_hoisted_9$3,
|
|
24428
|
+
_hoisted_10$3,
|
|
24429
|
+
_hoisted_11$3
|
|
24365
24430
|
];
|
|
24366
|
-
const _hoisted_13$
|
|
24367
|
-
const _hoisted_14$
|
|
24431
|
+
const _hoisted_13$3 = { class: "bar-messwin" };
|
|
24432
|
+
const _hoisted_14$3 = /*#__PURE__*/vue.createElementVNode("img", {
|
|
24368
24433
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/mess-logo.png",
|
|
24369
24434
|
alt: "",
|
|
24370
24435
|
class: "mess-logo"
|
|
24371
24436
|
}, null, -1 /* HOISTED */);
|
|
24372
|
-
const _hoisted_15$
|
|
24373
|
-
const _hoisted_16$
|
|
24374
|
-
const _hoisted_17$
|
|
24375
|
-
const _hoisted_18$
|
|
24376
|
-
const _hoisted_19$
|
|
24437
|
+
const _hoisted_15$3 = /*#__PURE__*/vue.createElementVNode("div", { class: "mess-title" }, "ข้อความอวยพร", -1 /* HOISTED */);
|
|
24438
|
+
const _hoisted_16$3 = { class: "mess-input" };
|
|
24439
|
+
const _hoisted_17$3 = { class: "mess-textarea" };
|
|
24440
|
+
const _hoisted_18$3 = { class: "wish-dropdown" };
|
|
24441
|
+
const _hoisted_19$3 = ["onClick"];
|
|
24377
24442
|
const _hoisted_20$2 = /*#__PURE__*/vue.createElementVNode("div", { class: "wish-dot" }, "•", -1 /* HOISTED */);
|
|
24378
24443
|
const _hoisted_21$2 = { class: "wish-text" };
|
|
24379
24444
|
const _hoisted_22$2 = {
|
|
@@ -24410,7 +24475,7 @@
|
|
|
24410
24475
|
const _hoisted_35 = { class: "mint-msgbox-message" };
|
|
24411
24476
|
const _hoisted_36 = { class: "mint-msgbox-btns" };
|
|
24412
24477
|
|
|
24413
|
-
function render$
|
|
24478
|
+
function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|
24414
24479
|
return (vue.openBlock(), vue.createElementBlock("div", null, [
|
|
24415
24480
|
vue.createCommentVNode(" 弹幕显示区域 "),
|
|
24416
24481
|
vue.withDirectives(vue.createElementVNode("div", {
|
|
@@ -24432,9 +24497,9 @@
|
|
|
24432
24497
|
[vue.vShow, _ctx.showBullets]
|
|
24433
24498
|
]),
|
|
24434
24499
|
vue.createCommentVNode(" 底部工具栏 "),
|
|
24435
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
24436
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
24437
|
-
vue.withDirectives(vue.createElementVNode("div", _hoisted_3$
|
|
24500
|
+
vue.createElementVNode("div", _hoisted_1$c, [
|
|
24501
|
+
vue.createElementVNode("div", _hoisted_2$c, [
|
|
24502
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_3$c, [
|
|
24438
24503
|
vue.createElementVNode("input", {
|
|
24439
24504
|
type: "text",
|
|
24440
24505
|
placeholder: "ข้อความอวยพร..",
|
|
@@ -24453,13 +24518,13 @@
|
|
|
24453
24518
|
vue.withDirectives(vue.createElementVNode("div", {
|
|
24454
24519
|
onClick: _cache[2] || (_cache[2] = vue.withModifiers((...args) => (_ctx.toggleBullets && _ctx.toggleBullets(...args)), ["stop"])),
|
|
24455
24520
|
class: "toolbar-close"
|
|
24456
|
-
}, [..._hoisted_5$
|
|
24521
|
+
}, [..._hoisted_5$9], 512 /* NEED_PATCH */), [
|
|
24457
24522
|
[vue.vShow, !_ctx.showBullets]
|
|
24458
24523
|
]),
|
|
24459
24524
|
vue.createCommentVNode(" 新增的右侧按钮区域 "),
|
|
24460
24525
|
((_ctx.global.toolbar.gift || _ctx.global.toolbar.praise) && _ctx.showBullets)
|
|
24461
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$
|
|
24462
|
-
(_ctx.global.toolbar.gift && _ctx.
|
|
24526
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$7, [
|
|
24527
|
+
(_ctx.global.toolbar.gift && _ctx.hasRealGiftQR)
|
|
24463
24528
|
? (vue.openBlock(), vue.createElementBlock("img", {
|
|
24464
24529
|
key: 0,
|
|
24465
24530
|
src: "https://h5cdn.unika.cc/static/img/uniComponents/gift.png",
|
|
@@ -24474,11 +24539,11 @@
|
|
|
24474
24539
|
onClick: _cache[4] || (_cache[4] = (...args) => (_ctx.handlePraise && _ctx.handlePraise(...args)))
|
|
24475
24540
|
}, [
|
|
24476
24541
|
(_ctx.praiseCount > 0)
|
|
24477
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$
|
|
24542
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$6, vue.toDisplayString(_ctx.praiseCount), 1 /* TEXT */))
|
|
24478
24543
|
: vue.createCommentVNode("v-if", true),
|
|
24479
24544
|
vue.createElementVNode("div", {
|
|
24480
24545
|
class: vue.normalizeClass(["bar-zan", { active: _ctx.isPraised }])
|
|
24481
|
-
}, [..._hoisted_12$
|
|
24546
|
+
}, [..._hoisted_12$3], 2 /* CLASS */)
|
|
24482
24547
|
]))
|
|
24483
24548
|
: vue.createCommentVNode("v-if", true)
|
|
24484
24549
|
]))
|
|
@@ -24493,11 +24558,11 @@
|
|
|
24493
24558
|
style: {"z-index":"2003"},
|
|
24494
24559
|
onClick: _cache[12] || (_cache[12] = vue.withModifiers((...args) => (_ctx.closePopup && _ctx.closePopup(...args)), ["self"]))
|
|
24495
24560
|
}, [
|
|
24496
|
-
vue.createElementVNode("div", _hoisted_13$
|
|
24497
|
-
_hoisted_14$
|
|
24498
|
-
_hoisted_15$
|
|
24561
|
+
vue.createElementVNode("div", _hoisted_13$3, [
|
|
24562
|
+
_hoisted_14$3,
|
|
24563
|
+
_hoisted_15$3,
|
|
24499
24564
|
vue.createCommentVNode(" 祝福留言. "),
|
|
24500
|
-
vue.createElementVNode("div", _hoisted_16$
|
|
24565
|
+
vue.createElementVNode("div", _hoisted_16$3, [
|
|
24501
24566
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
24502
24567
|
ref: "nameInput",
|
|
24503
24568
|
"onUpdate:modelValue": _cache[5] || (_cache[5] = $event => ((_ctx.name) = $event)),
|
|
@@ -24510,7 +24575,7 @@
|
|
|
24510
24575
|
])
|
|
24511
24576
|
]),
|
|
24512
24577
|
vue.createCommentVNode(" 请输入您的姓名 "),
|
|
24513
|
-
vue.createElementVNode("div", _hoisted_17$
|
|
24578
|
+
vue.createElementVNode("div", _hoisted_17$3, [
|
|
24514
24579
|
vue.withDirectives(vue.createElementVNode("textarea", {
|
|
24515
24580
|
"onUpdate:modelValue": _cache[7] || (_cache[7] = $event => ((_ctx.content) = $event)),
|
|
24516
24581
|
placeholder: "ข้อความของคุณ..",
|
|
@@ -24527,7 +24592,7 @@
|
|
|
24527
24592
|
onClick: _cache[9] || (_cache[9] = (...args) => (_ctx.showBlessingOptions && _ctx.showBlessingOptions(...args)))
|
|
24528
24593
|
}),
|
|
24529
24594
|
vue.createCommentVNode(" 请选择祝福语 "),
|
|
24530
|
-
vue.withDirectives(vue.createElementVNode("div", _hoisted_18$
|
|
24595
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_18$3, [
|
|
24531
24596
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.blessingOptions, (blessing, index) => {
|
|
24532
24597
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
24533
24598
|
class: "wish-item",
|
|
@@ -24536,7 +24601,7 @@
|
|
|
24536
24601
|
}, [
|
|
24537
24602
|
_hoisted_20$2,
|
|
24538
24603
|
vue.createElementVNode("div", _hoisted_21$2, vue.toDisplayString(blessing), 1 /* TEXT */)
|
|
24539
|
-
], 8 /* PROPS */, _hoisted_19$
|
|
24604
|
+
], 8 /* PROPS */, _hoisted_19$3))
|
|
24540
24605
|
}), 128 /* KEYED_FRAGMENT */))
|
|
24541
24606
|
], 512 /* NEED_PATCH */), [
|
|
24542
24607
|
[vue.vShow, _ctx.showBlessingList]
|
|
@@ -24620,11 +24685,11 @@
|
|
|
24620
24685
|
]))
|
|
24621
24686
|
}
|
|
24622
24687
|
|
|
24623
|
-
script$
|
|
24624
|
-
script$
|
|
24688
|
+
script$h.render = render$d;
|
|
24689
|
+
script$h.__file = "src/components/UniBarrage/UniBarrage.vue";
|
|
24625
24690
|
|
|
24626
|
-
script$
|
|
24627
|
-
app.component(script$
|
|
24691
|
+
script$h.install = (app) => {
|
|
24692
|
+
app.component(script$h.name, script$h);
|
|
24628
24693
|
};
|
|
24629
24694
|
|
|
24630
24695
|
function useTouchHandler(pages, currentPageId, direction, isLoopEnabled, onUserInteraction) {
|
|
@@ -24973,7 +25038,7 @@
|
|
|
24973
25038
|
return true;
|
|
24974
25039
|
}
|
|
24975
25040
|
|
|
24976
|
-
var script$
|
|
25041
|
+
var script$g = vue.defineComponent({
|
|
24977
25042
|
name: 'uni-form-input',
|
|
24978
25043
|
props: {
|
|
24979
25044
|
global: {
|
|
@@ -25086,14 +25151,14 @@
|
|
|
25086
25151
|
}
|
|
25087
25152
|
});
|
|
25088
25153
|
|
|
25089
|
-
const _hoisted_1$
|
|
25090
|
-
const _hoisted_2$
|
|
25154
|
+
const _hoisted_1$b = ["data-id"];
|
|
25155
|
+
const _hoisted_2$b = {
|
|
25091
25156
|
key: 0,
|
|
25092
25157
|
class: "required-marker"
|
|
25093
25158
|
};
|
|
25094
|
-
const _hoisted_3$
|
|
25159
|
+
const _hoisted_3$b = ["type", "placeholder", "readonly", "tabindex"];
|
|
25095
25160
|
|
|
25096
|
-
function render$
|
|
25161
|
+
function render$c(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25097
25162
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
25098
25163
|
class: vue.normalizeClass(["ele-form form-input eles", { 'form-input--editing': _ctx.isEditing }]),
|
|
25099
25164
|
"data-id": _ctx.element.id,
|
|
@@ -25107,7 +25172,7 @@
|
|
|
25107
25172
|
})
|
|
25108
25173
|
}, [
|
|
25109
25174
|
(_ctx.required)
|
|
25110
|
-
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$
|
|
25175
|
+
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$b, "*"))
|
|
25111
25176
|
: vue.createCommentVNode("v-if", true),
|
|
25112
25177
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
25113
25178
|
type: _ctx.inputType,
|
|
@@ -25120,17 +25185,17 @@
|
|
|
25120
25185
|
onMousedown: _cache[1] || (_cache[1] = (...args) => (_ctx.onInputPointerDown && _ctx.onInputPointerDown(...args))),
|
|
25121
25186
|
onTouchstart: _cache[2] || (_cache[2] = (...args) => (_ctx.onInputPointerDown && _ctx.onInputPointerDown(...args))),
|
|
25122
25187
|
onBlur: _cache[3] || (_cache[3] = (...args) => (_ctx.handleBlur && _ctx.handleBlur(...args)))
|
|
25123
|
-
}, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_3$
|
|
25188
|
+
}, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_3$b), [
|
|
25124
25189
|
[vue.vModelDynamic, _ctx.inputValue]
|
|
25125
25190
|
])
|
|
25126
25191
|
], 4 /* STYLE */)
|
|
25127
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25192
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$b))
|
|
25128
25193
|
}
|
|
25129
25194
|
|
|
25130
|
-
script$
|
|
25131
|
-
script$
|
|
25195
|
+
script$g.render = render$c;
|
|
25196
|
+
script$g.__file = "src/components/UniFormInput/UniFormInput.vue";
|
|
25132
25197
|
|
|
25133
|
-
var script$
|
|
25198
|
+
var script$f = vue.defineComponent({
|
|
25134
25199
|
name: 'uni-form-submit',
|
|
25135
25200
|
props: {
|
|
25136
25201
|
global: {
|
|
@@ -25231,15 +25296,15 @@
|
|
|
25231
25296
|
}
|
|
25232
25297
|
});
|
|
25233
25298
|
|
|
25234
|
-
const _hoisted_1$
|
|
25235
|
-
const _hoisted_2$
|
|
25236
|
-
const _hoisted_3$
|
|
25299
|
+
const _hoisted_1$a = ["data-id"];
|
|
25300
|
+
const _hoisted_2$a = ["disabled"];
|
|
25301
|
+
const _hoisted_3$a = {
|
|
25237
25302
|
key: 0,
|
|
25238
25303
|
class: "f-ovh"
|
|
25239
25304
|
};
|
|
25240
|
-
const _hoisted_4$
|
|
25305
|
+
const _hoisted_4$9 = { class: "f-ovh" };
|
|
25241
25306
|
|
|
25242
|
-
function render$
|
|
25307
|
+
function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25243
25308
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
25244
25309
|
class: "ele-form eles",
|
|
25245
25310
|
"data-id": _ctx.element.id,
|
|
@@ -25252,19 +25317,19 @@
|
|
|
25252
25317
|
disabled: _ctx.isSubmitting
|
|
25253
25318
|
}, [
|
|
25254
25319
|
(_ctx.isSubmitting)
|
|
25255
|
-
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$
|
|
25320
|
+
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$a, "กำลังส่ง..."))
|
|
25256
25321
|
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
25257
25322
|
vue.createCommentVNode(" 提交中 "),
|
|
25258
|
-
vue.createElementVNode("span", _hoisted_4$
|
|
25323
|
+
vue.createElementVNode("span", _hoisted_4$9, vue.toDisplayString(_ctx.btName), 1 /* TEXT */)
|
|
25259
25324
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
|
25260
|
-
], 12 /* STYLE, PROPS */, _hoisted_2$
|
|
25261
|
-
], 12 /* STYLE, PROPS */, _hoisted_1$
|
|
25325
|
+
], 12 /* STYLE, PROPS */, _hoisted_2$a)
|
|
25326
|
+
], 12 /* STYLE, PROPS */, _hoisted_1$a))
|
|
25262
25327
|
}
|
|
25263
25328
|
|
|
25264
|
-
script$
|
|
25265
|
-
script$
|
|
25329
|
+
script$f.render = render$b;
|
|
25330
|
+
script$f.__file = "src/components/UniFormSubmit/UniFormSubmit.vue";
|
|
25266
25331
|
|
|
25267
|
-
var script$
|
|
25332
|
+
var script$e = vue.defineComponent({
|
|
25268
25333
|
name: 'uni-form-select',
|
|
25269
25334
|
props: {
|
|
25270
25335
|
global: {
|
|
@@ -25370,21 +25435,21 @@
|
|
|
25370
25435
|
}
|
|
25371
25436
|
});
|
|
25372
25437
|
|
|
25373
|
-
const _hoisted_1$
|
|
25374
|
-
const _hoisted_2$
|
|
25438
|
+
const _hoisted_1$9 = ["data-id"];
|
|
25439
|
+
const _hoisted_2$9 = {
|
|
25375
25440
|
key: 0,
|
|
25376
25441
|
class: "require"
|
|
25377
25442
|
};
|
|
25378
|
-
const _hoisted_3$
|
|
25379
|
-
const _hoisted_4$
|
|
25443
|
+
const _hoisted_3$9 = { class: "fs-cont" };
|
|
25444
|
+
const _hoisted_4$8 = {
|
|
25380
25445
|
value: "",
|
|
25381
25446
|
disabled: "",
|
|
25382
25447
|
hidden: ""
|
|
25383
25448
|
};
|
|
25384
|
-
const _hoisted_5$
|
|
25385
|
-
const _hoisted_6$
|
|
25449
|
+
const _hoisted_5$8 = ["value"];
|
|
25450
|
+
const _hoisted_6$6 = ["onClick"];
|
|
25386
25451
|
|
|
25387
|
-
function render$
|
|
25452
|
+
function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25388
25453
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
25389
25454
|
class: vue.normalizeClass(["ele-form f-select eles", { 'has-error': _ctx.hasError }]),
|
|
25390
25455
|
"data-id": _ctx.element.id,
|
|
@@ -25399,9 +25464,9 @@
|
|
|
25399
25464
|
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.toggleDropdown && _ctx.toggleDropdown(...args)))
|
|
25400
25465
|
}, [
|
|
25401
25466
|
(_ctx.required)
|
|
25402
|
-
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$
|
|
25467
|
+
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$9, "*"))
|
|
25403
25468
|
: vue.createCommentVNode("v-if", true),
|
|
25404
|
-
vue.createElementVNode("span", _hoisted_3$
|
|
25469
|
+
vue.createElementVNode("span", _hoisted_3$9, vue.toDisplayString(_ctx.selectedLabel || _ctx.element.title), 1 /* TEXT */),
|
|
25405
25470
|
vue.createElementVNode("i", {
|
|
25406
25471
|
class: vue.normalizeClass(["iconfont icon-bofang1", { 'rotate-180': _ctx.isOpen }])
|
|
25407
25472
|
}, null, 2 /* CLASS */)
|
|
@@ -25412,12 +25477,12 @@
|
|
|
25412
25477
|
onChange: _cache[2] || (_cache[2] = (...args) => (_ctx.handleChange && _ctx.handleChange(...args))),
|
|
25413
25478
|
onBlur: _cache[3] || (_cache[3] = (...args) => (_ctx.handleBlur && _ctx.handleBlur(...args)))
|
|
25414
25479
|
}, [
|
|
25415
|
-
vue.createElementVNode("option", _hoisted_4$
|
|
25480
|
+
vue.createElementVNode("option", _hoisted_4$8, vue.toDisplayString(_ctx.element.title), 1 /* TEXT */),
|
|
25416
25481
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.element.items, (item) => {
|
|
25417
25482
|
return (vue.openBlock(), vue.createElementBlock("option", {
|
|
25418
25483
|
key: item.value,
|
|
25419
25484
|
value: item.value
|
|
25420
|
-
}, vue.toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_5$
|
|
25485
|
+
}, vue.toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_5$8))
|
|
25421
25486
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25422
25487
|
], 544 /* NEED_HYDRATION, NEED_PATCH */), [
|
|
25423
25488
|
[vue.vModelSelect, _ctx.selectedValue]
|
|
@@ -25433,18 +25498,18 @@
|
|
|
25433
25498
|
key: item.value,
|
|
25434
25499
|
class: vue.normalizeClass(["dropdown-item", { 'selected': item.value === _ctx.selectedValue }]),
|
|
25435
25500
|
onClick: $event => (_ctx.selectItem(item))
|
|
25436
|
-
}, vue.toDisplayString(item.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_6$
|
|
25501
|
+
}, vue.toDisplayString(item.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_6$6))
|
|
25437
25502
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25438
25503
|
], 4 /* STYLE */))
|
|
25439
25504
|
: vue.createCommentVNode("v-if", true)
|
|
25440
25505
|
], 4 /* STYLE */)
|
|
25441
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25506
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$9))
|
|
25442
25507
|
}
|
|
25443
25508
|
|
|
25444
|
-
script$
|
|
25445
|
-
script$
|
|
25509
|
+
script$e.render = render$a;
|
|
25510
|
+
script$e.__file = "src/components/UniFormSelect/UniFormSelect.vue";
|
|
25446
25511
|
|
|
25447
|
-
var script$
|
|
25512
|
+
var script$d = vue.defineComponent({
|
|
25448
25513
|
name: 'uni-form-single',
|
|
25449
25514
|
props: {
|
|
25450
25515
|
global: {
|
|
@@ -25525,16 +25590,16 @@
|
|
|
25525
25590
|
}
|
|
25526
25591
|
});
|
|
25527
25592
|
|
|
25528
|
-
const _hoisted_1$
|
|
25529
|
-
const _hoisted_2$
|
|
25530
|
-
const _hoisted_3$
|
|
25593
|
+
const _hoisted_1$8 = ["data-id"];
|
|
25594
|
+
const _hoisted_2$8 = { class: "fs-tit" };
|
|
25595
|
+
const _hoisted_3$8 = {
|
|
25531
25596
|
key: 0,
|
|
25532
25597
|
class: "require"
|
|
25533
25598
|
};
|
|
25534
|
-
const _hoisted_4$
|
|
25535
|
-
const _hoisted_5$
|
|
25599
|
+
const _hoisted_4$7 = ["onClick"];
|
|
25600
|
+
const _hoisted_5$7 = ["name", "value"];
|
|
25536
25601
|
|
|
25537
|
-
function render$
|
|
25602
|
+
function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25538
25603
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
25539
25604
|
class: vue.normalizeClass(["ele-form f-single eles", { 'has-error': _ctx.hasError }]),
|
|
25540
25605
|
"data-id": _ctx.element.id,
|
|
@@ -25544,9 +25609,9 @@
|
|
|
25544
25609
|
class: "ani-wrap",
|
|
25545
25610
|
style: vue.normalizeStyle(_ctx.innerStyles)
|
|
25546
25611
|
}, [
|
|
25547
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
25612
|
+
vue.createElementVNode("div", _hoisted_2$8, [
|
|
25548
25613
|
(_ctx.required)
|
|
25549
|
-
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$
|
|
25614
|
+
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$8, "*"))
|
|
25550
25615
|
: vue.createCommentVNode("v-if", true),
|
|
25551
25616
|
vue.createTextVNode(" " + vue.toDisplayString(_ctx.element.title), 1 /* TEXT */)
|
|
25552
25617
|
]),
|
|
@@ -25564,22 +25629,22 @@
|
|
|
25564
25629
|
class: "fs-txt",
|
|
25565
25630
|
style: vue.normalizeStyle(_ctx.itemStyles)
|
|
25566
25631
|
}, vue.toDisplayString(item.label), 5 /* TEXT, STYLE */)
|
|
25567
|
-
], 8 /* PROPS */, _hoisted_4$
|
|
25632
|
+
], 8 /* PROPS */, _hoisted_4$7))
|
|
25568
25633
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25569
25634
|
]),
|
|
25570
25635
|
vue.createElementVNode("input", {
|
|
25571
25636
|
type: "hidden",
|
|
25572
25637
|
name: `singleselect_${_ctx.element.id}`,
|
|
25573
25638
|
value: _ctx.selectedValue
|
|
25574
|
-
}, null, 8 /* PROPS */, _hoisted_5$
|
|
25639
|
+
}, null, 8 /* PROPS */, _hoisted_5$7)
|
|
25575
25640
|
], 4 /* STYLE */)
|
|
25576
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25641
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$8))
|
|
25577
25642
|
}
|
|
25578
25643
|
|
|
25579
|
-
script$
|
|
25580
|
-
script$
|
|
25644
|
+
script$d.render = render$9;
|
|
25645
|
+
script$d.__file = "src/components/UniFormSingle/UniFormSingle.vue";
|
|
25581
25646
|
|
|
25582
|
-
var script$
|
|
25647
|
+
var script$c = vue.defineComponent({
|
|
25583
25648
|
name: 'uni-form-multiple',
|
|
25584
25649
|
props: {
|
|
25585
25650
|
global: {
|
|
@@ -25670,16 +25735,16 @@
|
|
|
25670
25735
|
}
|
|
25671
25736
|
});
|
|
25672
25737
|
|
|
25673
|
-
const _hoisted_1$
|
|
25674
|
-
const _hoisted_2$
|
|
25675
|
-
const _hoisted_3$
|
|
25738
|
+
const _hoisted_1$7 = ["data-id"];
|
|
25739
|
+
const _hoisted_2$7 = { class: "fs-tit" };
|
|
25740
|
+
const _hoisted_3$7 = {
|
|
25676
25741
|
key: 0,
|
|
25677
25742
|
class: "require"
|
|
25678
25743
|
};
|
|
25679
|
-
const _hoisted_4$
|
|
25680
|
-
const _hoisted_5$
|
|
25744
|
+
const _hoisted_4$6 = ["onClick"];
|
|
25745
|
+
const _hoisted_5$6 = ["name", "value"];
|
|
25681
25746
|
|
|
25682
|
-
function render$
|
|
25747
|
+
function render$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25683
25748
|
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
25684
25749
|
class: vue.normalizeClass(["ele-form f-multiple eles", { 'has-error': _ctx.hasError }]),
|
|
25685
25750
|
"data-id": _ctx.element.id,
|
|
@@ -25689,9 +25754,9 @@
|
|
|
25689
25754
|
class: "ani-wrap",
|
|
25690
25755
|
style: vue.normalizeStyle(_ctx.innerStyles)
|
|
25691
25756
|
}, [
|
|
25692
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
25757
|
+
vue.createElementVNode("div", _hoisted_2$7, [
|
|
25693
25758
|
(_ctx.required)
|
|
25694
|
-
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$
|
|
25759
|
+
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$7, "*"))
|
|
25695
25760
|
: vue.createCommentVNode("v-if", true),
|
|
25696
25761
|
vue.createTextVNode(" " + vue.toDisplayString(_ctx.element.title), 1 /* TEXT */)
|
|
25697
25762
|
]),
|
|
@@ -25709,22 +25774,22 @@
|
|
|
25709
25774
|
class: "fs-txt",
|
|
25710
25775
|
style: vue.normalizeStyle(_ctx.itemStyles)
|
|
25711
25776
|
}, vue.toDisplayString(item.label), 5 /* TEXT, STYLE */)
|
|
25712
|
-
], 8 /* PROPS */, _hoisted_4$
|
|
25777
|
+
], 8 /* PROPS */, _hoisted_4$6))
|
|
25713
25778
|
}), 128 /* KEYED_FRAGMENT */))
|
|
25714
25779
|
]),
|
|
25715
25780
|
vue.createElementVNode("input", {
|
|
25716
25781
|
type: "hidden",
|
|
25717
25782
|
name: `multiselect_${_ctx.element.id}`,
|
|
25718
25783
|
value: _ctx.selectedValues.join(',')
|
|
25719
|
-
}, null, 8 /* PROPS */, _hoisted_5$
|
|
25784
|
+
}, null, 8 /* PROPS */, _hoisted_5$6)
|
|
25720
25785
|
], 4 /* STYLE */)
|
|
25721
|
-
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$
|
|
25786
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$7))
|
|
25722
25787
|
}
|
|
25723
25788
|
|
|
25724
|
-
script$
|
|
25725
|
-
script$
|
|
25789
|
+
script$c.render = render$8;
|
|
25790
|
+
script$c.__file = "src/components/UniFormMultiple/UniFormMultiple.vue";
|
|
25726
25791
|
|
|
25727
|
-
var script$
|
|
25792
|
+
var script$b = vue.defineComponent({
|
|
25728
25793
|
name: 'FormContainer',
|
|
25729
25794
|
props: {
|
|
25730
25795
|
autoReset: {
|
|
@@ -25748,7 +25813,7 @@
|
|
|
25748
25813
|
}
|
|
25749
25814
|
});
|
|
25750
25815
|
|
|
25751
|
-
function render$
|
|
25816
|
+
function render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
25752
25817
|
return (vue.openBlock(), vue.createElementBlock("form", {
|
|
25753
25818
|
class: "form-container",
|
|
25754
25819
|
onSubmit: _cache[0] || (_cache[0] = vue.withModifiers(() => {}, ["prevent"]))
|
|
@@ -25757,10 +25822,10 @@
|
|
|
25757
25822
|
], 32 /* NEED_HYDRATION */))
|
|
25758
25823
|
}
|
|
25759
25824
|
|
|
25760
|
-
script$
|
|
25761
|
-
script$
|
|
25825
|
+
script$b.render = render$7;
|
|
25826
|
+
script$b.__file = "src/components/UniFormContainer/UniFormContainer.vue";
|
|
25762
25827
|
|
|
25763
|
-
var script$
|
|
25828
|
+
var script$a = /*#__PURE__*/ vue.defineComponent({
|
|
25764
25829
|
...{ name: 'uni-menu-receipt' },
|
|
25765
25830
|
__name: 'UniMenuReceipt',
|
|
25766
25831
|
props: {
|
|
@@ -25790,9 +25855,9 @@
|
|
|
25790
25855
|
}
|
|
25791
25856
|
});
|
|
25792
25857
|
|
|
25793
|
-
script$
|
|
25858
|
+
script$a.__file = "src/components/UniMenuReceipt/UniMenuReceipt.vue";
|
|
25794
25859
|
|
|
25795
|
-
var script$
|
|
25860
|
+
var script$9 = /*#__PURE__*/ vue.defineComponent({
|
|
25796
25861
|
...{ name: 'uni-menu-video' },
|
|
25797
25862
|
__name: 'UniMenuVideo',
|
|
25798
25863
|
props: {
|
|
@@ -25822,9 +25887,9 @@
|
|
|
25822
25887
|
}
|
|
25823
25888
|
});
|
|
25824
25889
|
|
|
25825
|
-
script$
|
|
25890
|
+
script$9.__file = "src/components/UniMenuVideo/UniMenuVideo.vue";
|
|
25826
25891
|
|
|
25827
|
-
var script$
|
|
25892
|
+
var script$8 = /*#__PURE__*/ vue.defineComponent({
|
|
25828
25893
|
...{ name: 'uni-menu-tel' },
|
|
25829
25894
|
__name: 'UniMenuTel',
|
|
25830
25895
|
props: {
|
|
@@ -25854,9 +25919,9 @@
|
|
|
25854
25919
|
}
|
|
25855
25920
|
});
|
|
25856
25921
|
|
|
25857
|
-
script$
|
|
25922
|
+
script$8.__file = "src/components/UniMenuTel/UniMenuTel.vue";
|
|
25858
25923
|
|
|
25859
|
-
var script$
|
|
25924
|
+
var script$7 = /*#__PURE__*/ vue.defineComponent({
|
|
25860
25925
|
...{ name: 'uni-menu-map' },
|
|
25861
25926
|
__name: 'UniMenuMap',
|
|
25862
25927
|
props: {
|
|
@@ -25886,9 +25951,9 @@
|
|
|
25886
25951
|
}
|
|
25887
25952
|
});
|
|
25888
25953
|
|
|
25889
|
-
script$
|
|
25954
|
+
script$7.__file = "src/components/UniMenuMap/UniMenuMap.vue";
|
|
25890
25955
|
|
|
25891
|
-
var script$
|
|
25956
|
+
var script$6 = vue.defineComponent({
|
|
25892
25957
|
name: 'uni-menu',
|
|
25893
25958
|
props: {
|
|
25894
25959
|
global: {
|
|
@@ -25902,10 +25967,10 @@
|
|
|
25902
25967
|
}
|
|
25903
25968
|
},
|
|
25904
25969
|
components: {
|
|
25905
|
-
UniMenuReceipt: script$
|
|
25906
|
-
UniMenuVideo: script$
|
|
25907
|
-
UniMenuTel: script$
|
|
25908
|
-
UniMenuMap: script$
|
|
25970
|
+
UniMenuReceipt: script$a,
|
|
25971
|
+
UniMenuVideo: script$9,
|
|
25972
|
+
UniMenuTel: script$8,
|
|
25973
|
+
UniMenuMap: script$7
|
|
25909
25974
|
},
|
|
25910
25975
|
setup(props) {
|
|
25911
25976
|
// 状态管理
|
|
@@ -26104,45 +26169,45 @@
|
|
|
26104
26169
|
});
|
|
26105
26170
|
|
|
26106
26171
|
const _withScopeId$1 = n => (vue.pushScopeId("data-v-5e9efd2f"),n=n(),vue.popScopeId(),n);
|
|
26107
|
-
const _hoisted_1$
|
|
26172
|
+
const _hoisted_1$6 = {
|
|
26108
26173
|
key: 0,
|
|
26109
26174
|
id: "page-global"
|
|
26110
26175
|
};
|
|
26111
|
-
const _hoisted_2$
|
|
26176
|
+
const _hoisted_2$6 = {
|
|
26112
26177
|
key: 1,
|
|
26113
26178
|
id: "receipt-wrap",
|
|
26114
26179
|
class: "v-slide"
|
|
26115
26180
|
};
|
|
26116
|
-
const _hoisted_3$
|
|
26117
|
-
const _hoisted_4$
|
|
26118
|
-
const _hoisted_5$
|
|
26119
|
-
const _hoisted_6$
|
|
26120
|
-
const _hoisted_7$
|
|
26121
|
-
const _hoisted_8$
|
|
26122
|
-
const _hoisted_9$
|
|
26123
|
-
const _hoisted_10$
|
|
26181
|
+
const _hoisted_3$6 = /*#__PURE__*/ _withScopeId$1(() => /*#__PURE__*/vue.createElementVNode("div", { class: "r-tit" }, "แบบตอบรับ", -1 /* HOISTED */));
|
|
26182
|
+
const _hoisted_4$5 = { class: "r-cont" };
|
|
26183
|
+
const _hoisted_5$5 = { class: "r-list" };
|
|
26184
|
+
const _hoisted_6$5 = ["value"];
|
|
26185
|
+
const _hoisted_7$5 = { class: "r-which" };
|
|
26186
|
+
const _hoisted_8$2 = ["value"];
|
|
26187
|
+
const _hoisted_9$2 = { class: "r-submit" };
|
|
26188
|
+
const _hoisted_10$2 = {
|
|
26124
26189
|
key: 0,
|
|
26125
26190
|
class: "which-select"
|
|
26126
26191
|
};
|
|
26127
|
-
const _hoisted_11$
|
|
26128
|
-
const _hoisted_12$
|
|
26192
|
+
const _hoisted_11$2 = ["onClick"];
|
|
26193
|
+
const _hoisted_12$2 = {
|
|
26129
26194
|
key: 1,
|
|
26130
26195
|
class: "which-select"
|
|
26131
26196
|
};
|
|
26132
|
-
const _hoisted_13$
|
|
26133
|
-
const _hoisted_14$
|
|
26197
|
+
const _hoisted_13$2 = ["onClick"];
|
|
26198
|
+
const _hoisted_14$2 = {
|
|
26134
26199
|
key: 2,
|
|
26135
26200
|
class: "tip-cover"
|
|
26136
26201
|
};
|
|
26137
|
-
const _hoisted_15$
|
|
26138
|
-
const _hoisted_16$
|
|
26139
|
-
const _hoisted_17$
|
|
26202
|
+
const _hoisted_15$2 = { class: "tip" };
|
|
26203
|
+
const _hoisted_16$2 = { class: "tip-content" };
|
|
26204
|
+
const _hoisted_17$2 = {
|
|
26140
26205
|
key: 2,
|
|
26141
26206
|
class: "global-v"
|
|
26142
26207
|
};
|
|
26143
|
-
const _hoisted_18$
|
|
26144
|
-
const _hoisted_19$
|
|
26145
|
-
_hoisted_18$
|
|
26208
|
+
const _hoisted_18$2 = /*#__PURE__*/ _withScopeId$1(() => /*#__PURE__*/vue.createElementVNode("i", { class: "iconfont icon-buoumaotubiao20" }, null, -1 /* HOISTED */));
|
|
26209
|
+
const _hoisted_19$2 = [
|
|
26210
|
+
_hoisted_18$2
|
|
26146
26211
|
];
|
|
26147
26212
|
const _hoisted_20$1 = ["innerHTML"];
|
|
26148
26213
|
const _hoisted_21$1 = ["onClick"];
|
|
@@ -26152,7 +26217,7 @@
|
|
|
26152
26217
|
};
|
|
26153
26218
|
const _hoisted_23$1 = { class: "mint-toast-text" };
|
|
26154
26219
|
|
|
26155
|
-
function render$
|
|
26220
|
+
function render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
26156
26221
|
const _component_uni_menu_receipt = vue.resolveComponent("uni-menu-receipt");
|
|
26157
26222
|
const _component_uni_menu_video = vue.resolveComponent("uni-menu-video");
|
|
26158
26223
|
const _component_uni_menu_tel = vue.resolveComponent("uni-menu-tel");
|
|
@@ -26161,7 +26226,7 @@
|
|
|
26161
26226
|
return (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
26162
26227
|
vue.createCommentVNode(" 主按钮组 "),
|
|
26163
26228
|
(_ctx.showGlobalButtons)
|
|
26164
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
26229
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
|
|
26165
26230
|
vue.createVNode(_component_uni_menu_receipt, {
|
|
26166
26231
|
global: _ctx.global,
|
|
26167
26232
|
onClick: _cache[0] || (_cache[0] = $event => (_ctx.showReceiptForm = true))
|
|
@@ -26182,15 +26247,15 @@
|
|
|
26182
26247
|
: vue.createCommentVNode("v-if", true),
|
|
26183
26248
|
vue.createCommentVNode(" 回执表单 "),
|
|
26184
26249
|
(_ctx.showReceiptForm)
|
|
26185
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
26250
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
|
|
26186
26251
|
vue.createElementVNode("i", {
|
|
26187
26252
|
class: "iconfont icon-guanbi",
|
|
26188
26253
|
onClick: _cache[3] || (_cache[3] = (...args) => (_ctx.closeReceipt && _ctx.closeReceipt(...args)))
|
|
26189
26254
|
}),
|
|
26190
|
-
_hoisted_3$
|
|
26255
|
+
_hoisted_3$6,
|
|
26191
26256
|
vue.createCommentVNode(" 宾客回执 "),
|
|
26192
|
-
vue.createElementVNode("div", _hoisted_4$
|
|
26193
|
-
vue.createElementVNode("ul", _hoisted_5$
|
|
26257
|
+
vue.createElementVNode("div", _hoisted_4$5, [
|
|
26258
|
+
vue.createElementVNode("ul", _hoisted_5$5, [
|
|
26194
26259
|
vue.createElementVNode("li", null, [
|
|
26195
26260
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
26196
26261
|
"onUpdate:modelValue": _cache[4] || (_cache[4] = $event => ((_ctx.receiptForm.guestName) = $event)),
|
|
@@ -26209,15 +26274,15 @@
|
|
|
26209
26274
|
value: _ctx.selectedPeopleLabel,
|
|
26210
26275
|
class: "r-input",
|
|
26211
26276
|
onClick: _cache[5] || (_cache[5] = $event => (_ctx.showPeopleSelect = true))
|
|
26212
|
-
}, null, 8 /* PROPS */, _hoisted_6$
|
|
26277
|
+
}, null, 8 /* PROPS */, _hoisted_6$5)
|
|
26213
26278
|
]),
|
|
26214
|
-
vue.createElementVNode("li", _hoisted_7$
|
|
26279
|
+
vue.createElementVNode("li", _hoisted_7$5, [
|
|
26215
26280
|
vue.createElementVNode("input", {
|
|
26216
26281
|
readonly: "",
|
|
26217
26282
|
value: _ctx.selectedWhichLabel,
|
|
26218
26283
|
class: "r-input",
|
|
26219
26284
|
onClick: _cache[6] || (_cache[6] = $event => (_ctx.showWhichSelect = true))
|
|
26220
|
-
}, null, 8 /* PROPS */, _hoisted_8$
|
|
26285
|
+
}, null, 8 /* PROPS */, _hoisted_8$2)
|
|
26221
26286
|
]),
|
|
26222
26287
|
vue.createElementVNode("li", null, [
|
|
26223
26288
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
@@ -26231,7 +26296,7 @@
|
|
|
26231
26296
|
]),
|
|
26232
26297
|
vue.createCommentVNode(" 手机号码 ")
|
|
26233
26298
|
]),
|
|
26234
|
-
vue.createElementVNode("li", _hoisted_9$
|
|
26299
|
+
vue.createElementVNode("li", _hoisted_9$2, [
|
|
26235
26300
|
vue.createElementVNode("button", {
|
|
26236
26301
|
class: "r-btn",
|
|
26237
26302
|
onClick: _cache[8] || (_cache[8] = (...args) => (_ctx.submitReceipt && _ctx.submitReceipt(...args)))
|
|
@@ -26242,35 +26307,35 @@
|
|
|
26242
26307
|
]),
|
|
26243
26308
|
vue.createCommentVNode(" 选择人数 "),
|
|
26244
26309
|
(_ctx.showPeopleSelect)
|
|
26245
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$
|
|
26310
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$2, [
|
|
26246
26311
|
vue.createElementVNode("ul", null, [
|
|
26247
26312
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.peopleOptions, (item) => {
|
|
26248
26313
|
return (vue.openBlock(), vue.createElementBlock("li", {
|
|
26249
26314
|
key: item,
|
|
26250
26315
|
onClick: $event => (_ctx.selectPeople(item))
|
|
26251
|
-
}, vue.toDisplayString(item), 9 /* TEXT, PROPS */, _hoisted_11$
|
|
26316
|
+
}, vue.toDisplayString(item), 9 /* TEXT, PROPS */, _hoisted_11$2))
|
|
26252
26317
|
}), 128 /* KEYED_FRAGMENT */))
|
|
26253
26318
|
])
|
|
26254
26319
|
]))
|
|
26255
26320
|
: vue.createCommentVNode("v-if", true),
|
|
26256
26321
|
vue.createCommentVNode(" 选择男方/女方 "),
|
|
26257
26322
|
(_ctx.showWhichSelect)
|
|
26258
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12$
|
|
26323
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12$2, [
|
|
26259
26324
|
vue.createElementVNode("ul", null, [
|
|
26260
26325
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.global.receipt.whichList, (item) => {
|
|
26261
26326
|
return (vue.openBlock(), vue.createElementBlock("li", {
|
|
26262
26327
|
key: item.label,
|
|
26263
26328
|
onClick: $event => (_ctx.selectWhich(item))
|
|
26264
|
-
}, vue.toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_13$
|
|
26329
|
+
}, vue.toDisplayString(item.label), 9 /* TEXT, PROPS */, _hoisted_13$2))
|
|
26265
26330
|
}), 128 /* KEYED_FRAGMENT */))
|
|
26266
26331
|
])
|
|
26267
26332
|
]))
|
|
26268
26333
|
: vue.createCommentVNode("v-if", true),
|
|
26269
26334
|
vue.createCommentVNode(" 提示信息 "),
|
|
26270
26335
|
(_ctx.showTip)
|
|
26271
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$
|
|
26272
|
-
vue.createElementVNode("div", _hoisted_15$
|
|
26273
|
-
vue.createElementVNode("div", _hoisted_16$
|
|
26336
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$2, [
|
|
26337
|
+
vue.createElementVNode("div", _hoisted_15$2, [
|
|
26338
|
+
vue.createElementVNode("div", _hoisted_16$2, vue.toDisplayString(_ctx.tipMessage), 1 /* TEXT */),
|
|
26274
26339
|
vue.createElementVNode("div", {
|
|
26275
26340
|
class: "tip-btn",
|
|
26276
26341
|
onClick: _cache[9] || (_cache[9] = $event => (_ctx.showTip = false))
|
|
@@ -26283,11 +26348,11 @@
|
|
|
26283
26348
|
: vue.createCommentVNode("v-if", true),
|
|
26284
26349
|
vue.createCommentVNode(" 视频播放 "),
|
|
26285
26350
|
(_ctx.showVideoPlayer)
|
|
26286
|
-
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17$
|
|
26351
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17$2, [
|
|
26287
26352
|
vue.createElementVNode("div", {
|
|
26288
26353
|
id: "close-gvideo",
|
|
26289
26354
|
onClick: _cache[10] || (_cache[10] = (...args) => (_ctx.closeVideo && _ctx.closeVideo(...args)))
|
|
26290
|
-
}, [..._hoisted_19$
|
|
26355
|
+
}, [..._hoisted_19$2]),
|
|
26291
26356
|
vue.createElementVNode("div", {
|
|
26292
26357
|
class: "global-v-show",
|
|
26293
26358
|
innerHTML: _ctx.global.video.url
|
|
@@ -26324,31 +26389,1276 @@
|
|
|
26324
26389
|
], 64 /* STABLE_FRAGMENT */))
|
|
26325
26390
|
}
|
|
26326
26391
|
|
|
26327
|
-
script$
|
|
26328
|
-
script$
|
|
26329
|
-
script$
|
|
26392
|
+
script$6.render = render$6;
|
|
26393
|
+
script$6.__scopeId = "data-v-5e9efd2f";
|
|
26394
|
+
script$6.__file = "src/components/UniMenu/UniMenu.vue";
|
|
26330
26395
|
|
|
26331
|
-
var script$
|
|
26396
|
+
var script$5 = vue.defineComponent({
|
|
26332
26397
|
name: 'UniWatermark'
|
|
26333
26398
|
});
|
|
26334
26399
|
|
|
26335
26400
|
const _withScopeId = n => (vue.pushScopeId("data-v-0f2e9262"),n=n(),vue.popScopeId(),n);
|
|
26336
|
-
const _hoisted_1$
|
|
26401
|
+
const _hoisted_1$5 = {
|
|
26337
26402
|
class: "unika-watermark",
|
|
26338
26403
|
"aria-hidden": "true"
|
|
26339
26404
|
};
|
|
26340
|
-
const _hoisted_2$
|
|
26341
|
-
const _hoisted_3$
|
|
26342
|
-
_hoisted_2$
|
|
26405
|
+
const _hoisted_2$5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/vue.createElementVNode("div", { class: "unika-watermark-pattern" }, null, -1 /* HOISTED */));
|
|
26406
|
+
const _hoisted_3$5 = [
|
|
26407
|
+
_hoisted_2$5
|
|
26343
26408
|
];
|
|
26344
26409
|
|
|
26345
|
-
function render$
|
|
26346
|
-
return (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
26410
|
+
function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
26411
|
+
return (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [..._hoisted_3$5]))
|
|
26347
26412
|
}
|
|
26348
26413
|
|
|
26349
|
-
script$
|
|
26350
|
-
script$
|
|
26351
|
-
script$
|
|
26414
|
+
script$5.render = render$5;
|
|
26415
|
+
script$5.__scopeId = "data-v-0f2e9262";
|
|
26416
|
+
script$5.__file = "src/components/UniWatermark/UniWatermark.vue";
|
|
26417
|
+
|
|
26418
|
+
/** Stable component type — shared across unika-components / biz-editor / ai-wedding / h5-server */
|
|
26419
|
+
const GUEST_AI_WEDDING_POSTER_TYPE = 'guest-ai-wedding-poster';
|
|
26420
|
+
const GUEST_AI_WEDDING_POSTER_VERSION = 1;
|
|
26421
|
+
/** Declarative inspector fields — shared by desktop/mobile editors */
|
|
26422
|
+
const guestAIWeddingPosterInspectorConfig = {
|
|
26423
|
+
content: [
|
|
26424
|
+
{ key: 'title', label: '组件标题', control: 'text' },
|
|
26425
|
+
{ key: 'description', label: '引导文案', control: 'textarea' },
|
|
26426
|
+
{ key: 'buttonText', label: '按钮文字', control: 'text' },
|
|
26427
|
+
{ key: 'invitationImage', label: '婚礼邀请函图片', control: 'invitation-image-upload' },
|
|
26428
|
+
{ key: 'styles', label: '风格选项', control: 'poster-style-manager' },
|
|
26429
|
+
{ key: 'result', label: '结果操作', control: 'result-actions' }
|
|
26430
|
+
],
|
|
26431
|
+
appearance: [
|
|
26432
|
+
{ key: 'appearance.backgroundColor', label: '背景颜色', control: 'color' },
|
|
26433
|
+
{ key: 'appearance.textColor', label: '文字颜色', control: 'color' },
|
|
26434
|
+
{ key: 'appearance.primaryColor', label: '主题色', control: 'color' },
|
|
26435
|
+
{ key: 'appearance.borderRadius', label: '圆角', control: 'slider' },
|
|
26436
|
+
{ key: 'appearance.buttonStyle', label: '按钮样式', control: 'select' },
|
|
26437
|
+
{ key: 'appearance.compact', label: '紧凑模式', control: 'switch' }
|
|
26438
|
+
],
|
|
26439
|
+
ai: [
|
|
26440
|
+
{ key: 'output.aspectRatio', label: '输出比例', control: 'select' },
|
|
26441
|
+
{ key: 'output.count', label: '生成数量', control: 'number' },
|
|
26442
|
+
{ key: 'upload.maxFileSizeMB', label: '照片最大大小(MB)', control: 'number' },
|
|
26443
|
+
{ key: 'privacy.autoDeleteAfterDays', label: '照片自动删除(天)', control: 'select' }
|
|
26444
|
+
]
|
|
26445
|
+
};
|
|
26446
|
+
|
|
26447
|
+
/** Demo invitation — real couple wedding invite (Jim & …). Served from /public/demo */
|
|
26448
|
+
const DEMO_INVITATION_IMAGE_URL = '/demo/guest-invitation.jpg';
|
|
26449
|
+
const defaultGuestAIWeddingPosterConfig = {
|
|
26450
|
+
version: GUEST_AI_WEDDING_POSTER_VERSION,
|
|
26451
|
+
title: '和我们一起留下婚礼纪念',
|
|
26452
|
+
description: '上传一张照片,生成你与新人的专属婚礼邀请函',
|
|
26453
|
+
buttonText: '生成专属邀请函',
|
|
26454
|
+
invitationImage: {
|
|
26455
|
+
invitationImageId: 'demo-invitation-image',
|
|
26456
|
+
invitationImageUrl: DEMO_INVITATION_IMAGE_URL
|
|
26457
|
+
},
|
|
26458
|
+
styles: [
|
|
26459
|
+
{
|
|
26460
|
+
id: 'romantic-garden',
|
|
26461
|
+
name: '浪漫花园',
|
|
26462
|
+
thumbnail: '',
|
|
26463
|
+
promptTemplateId: 'poster-romantic-garden-v1',
|
|
26464
|
+
enabled: true,
|
|
26465
|
+
sort: 1
|
|
26466
|
+
},
|
|
26467
|
+
{
|
|
26468
|
+
id: 'cinematic',
|
|
26469
|
+
name: '电影质感',
|
|
26470
|
+
thumbnail: '',
|
|
26471
|
+
promptTemplateId: 'poster-cinematic-v1',
|
|
26472
|
+
enabled: true,
|
|
26473
|
+
sort: 2
|
|
26474
|
+
},
|
|
26475
|
+
{
|
|
26476
|
+
id: 'chibi-figure',
|
|
26477
|
+
name: '可爱手办',
|
|
26478
|
+
thumbnail: '',
|
|
26479
|
+
promptTemplateId: 'poster-chibi-figure-v1',
|
|
26480
|
+
enabled: true,
|
|
26481
|
+
sort: 3
|
|
26482
|
+
},
|
|
26483
|
+
{
|
|
26484
|
+
id: 'new-chinese',
|
|
26485
|
+
name: '新中式',
|
|
26486
|
+
thumbnail: '',
|
|
26487
|
+
promptTemplateId: 'poster-new-chinese-v1',
|
|
26488
|
+
enabled: true,
|
|
26489
|
+
sort: 4
|
|
26490
|
+
}
|
|
26491
|
+
],
|
|
26492
|
+
result: {
|
|
26493
|
+
allowRegenerate: true,
|
|
26494
|
+
allowDownload: true,
|
|
26495
|
+
allowShare: true,
|
|
26496
|
+
maxRegenerateCount: 2
|
|
26497
|
+
},
|
|
26498
|
+
privacy: {
|
|
26499
|
+
requireConsent: false,
|
|
26500
|
+
consentText: '我已阅读并同意照片处理说明',
|
|
26501
|
+
noticeUrl: '',
|
|
26502
|
+
autoDeleteAfterDays: 7
|
|
26503
|
+
},
|
|
26504
|
+
upload: {
|
|
26505
|
+
maxFileSizeMB: 10,
|
|
26506
|
+
allowedTypes: ['image/jpeg', 'image/png', 'image/webp'],
|
|
26507
|
+
minWidth: 256,
|
|
26508
|
+
minHeight: 256,
|
|
26509
|
+
requireSingleFace: true
|
|
26510
|
+
},
|
|
26511
|
+
output: {
|
|
26512
|
+
aspectRatio: '3:4',
|
|
26513
|
+
count: 1
|
|
26514
|
+
},
|
|
26515
|
+
appearance: {
|
|
26516
|
+
backgroundColor: '#fffaf2',
|
|
26517
|
+
textColor: '#17345f',
|
|
26518
|
+
primaryColor: '#198cff',
|
|
26519
|
+
borderRadius: 20,
|
|
26520
|
+
buttonStyle: 'gradient',
|
|
26521
|
+
compact: false,
|
|
26522
|
+
paddingY: 16,
|
|
26523
|
+
paddingX: 16
|
|
26524
|
+
}
|
|
26525
|
+
};
|
|
26526
|
+
/** Default ElementData seed for editors */
|
|
26527
|
+
const guestAIWeddingPosterDefaultProps = {
|
|
26528
|
+
id: 'guest-ai-wedding-poster-default',
|
|
26529
|
+
pid: '',
|
|
26530
|
+
type: GUEST_AI_WEDDING_POSTER_TYPE,
|
|
26531
|
+
layerName: '宾客AI合影海报',
|
|
26532
|
+
sign: true,
|
|
26533
|
+
signSort: 20,
|
|
26534
|
+
...defaultGuestAIWeddingPosterConfig,
|
|
26535
|
+
css: {
|
|
26536
|
+
borderWidth: 0,
|
|
26537
|
+
borderStyle: 'solid',
|
|
26538
|
+
borderColor: 'rgba(153, 153, 153, 1)',
|
|
26539
|
+
opacity: 1,
|
|
26540
|
+
backgroundColor: 'transparent',
|
|
26541
|
+
width: 345,
|
|
26542
|
+
height: 420,
|
|
26543
|
+
borderRadius: 0,
|
|
26544
|
+
top: 40,
|
|
26545
|
+
left: 15,
|
|
26546
|
+
transform: 0
|
|
26547
|
+
},
|
|
26548
|
+
properties: {
|
|
26549
|
+
visible: true,
|
|
26550
|
+
isLock: false,
|
|
26551
|
+
required: false,
|
|
26552
|
+
musicName: '',
|
|
26553
|
+
musicLink: '',
|
|
26554
|
+
musicHash: '',
|
|
26555
|
+
shadowSize: 0,
|
|
26556
|
+
shadowColor: '#999999',
|
|
26557
|
+
shadowX: 0,
|
|
26558
|
+
shadowY: 0,
|
|
26559
|
+
shadowBlur: 0,
|
|
26560
|
+
shadowPoint: 270,
|
|
26561
|
+
aniOrigin: 'default',
|
|
26562
|
+
animations: []
|
|
26563
|
+
},
|
|
26564
|
+
triggers: {
|
|
26565
|
+
event: '',
|
|
26566
|
+
link: '',
|
|
26567
|
+
go: '',
|
|
26568
|
+
phone: '',
|
|
26569
|
+
musicName: '',
|
|
26570
|
+
musicLink: '',
|
|
26571
|
+
musicHash: ''
|
|
26572
|
+
}
|
|
26573
|
+
};
|
|
26574
|
+
|
|
26575
|
+
const ALLOWED_MIME = new Set(['image/jpeg', 'image/png', 'image/webp']);
|
|
26576
|
+
const ALLOWED_RATIOS = new Set(['3:4', '4:5', '9:16']);
|
|
26577
|
+
function isRecord(v) {
|
|
26578
|
+
return !!v && typeof v === 'object' && !Array.isArray(v);
|
|
26579
|
+
}
|
|
26580
|
+
function hasImageRef(ref) {
|
|
26581
|
+
return !!(ref.id && String(ref.id).trim()) || !!(ref.url && String(ref.url).trim());
|
|
26582
|
+
}
|
|
26583
|
+
/** Migrate legacy groom/bride references → invitationImage */
|
|
26584
|
+
function normalizeInvitationImage(input) {
|
|
26585
|
+
var _a, _b;
|
|
26586
|
+
if (isRecord(input.invitationImage)) {
|
|
26587
|
+
return {
|
|
26588
|
+
invitationImageId: String((_a = input.invitationImage.invitationImageId) !== null && _a !== void 0 ? _a : ''),
|
|
26589
|
+
invitationImageUrl: String((_b = input.invitationImage.invitationImageUrl) !== null && _b !== void 0 ? _b : '')
|
|
26590
|
+
};
|
|
26591
|
+
}
|
|
26592
|
+
// legacy couple refs: prefer groom url as invitation fallback
|
|
26593
|
+
if (isRecord(input.references)) {
|
|
26594
|
+
const url = String(input.references.groomReferenceUrl || input.references.brideReferenceUrl || '');
|
|
26595
|
+
const id = String(input.references.groomReferenceId || input.references.brideReferenceId || '');
|
|
26596
|
+
return { invitationImageId: id, invitationImageUrl: url };
|
|
26597
|
+
}
|
|
26598
|
+
return { ...defaultGuestAIWeddingPosterConfig.invitationImage };
|
|
26599
|
+
}
|
|
26600
|
+
function validateGuestAIWeddingPosterConfig(input, options) {
|
|
26601
|
+
var _a, _b, _c, _d, _e;
|
|
26602
|
+
const issues = [];
|
|
26603
|
+
if (!isRecord(input)) {
|
|
26604
|
+
return { ok: false, issues: [{ path: '', message: '配置必须是对象' }] };
|
|
26605
|
+
}
|
|
26606
|
+
const title = String((_a = input.title) !== null && _a !== void 0 ? _a : '').trim();
|
|
26607
|
+
if (!title) {
|
|
26608
|
+
issues.push({ path: 'title', message: '标题不能为空' });
|
|
26609
|
+
}
|
|
26610
|
+
const styles = Array.isArray(input.styles) ? input.styles : [];
|
|
26611
|
+
const enabledStyles = styles.filter((s) => isRecord(s) && s.enabled !== false);
|
|
26612
|
+
if (enabledStyles.length < 1) {
|
|
26613
|
+
issues.push({ path: 'styles', message: '至少需要 1 个启用的风格' });
|
|
26614
|
+
}
|
|
26615
|
+
const styleIds = new Set();
|
|
26616
|
+
styles.forEach((raw, index) => {
|
|
26617
|
+
var _a, _b;
|
|
26618
|
+
if (!isRecord(raw)) {
|
|
26619
|
+
issues.push({ path: `styles[${index}]`, message: '风格项无效' });
|
|
26620
|
+
return;
|
|
26621
|
+
}
|
|
26622
|
+
const id = String((_a = raw.id) !== null && _a !== void 0 ? _a : '').trim();
|
|
26623
|
+
if (!id) {
|
|
26624
|
+
issues.push({ path: `styles[${index}].id`, message: '风格必须有唯一 id' });
|
|
26625
|
+
}
|
|
26626
|
+
else if (styleIds.has(id)) {
|
|
26627
|
+
issues.push({ path: `styles[${index}].id`, message: `风格 id 重复: ${id}` });
|
|
26628
|
+
}
|
|
26629
|
+
else {
|
|
26630
|
+
styleIds.add(id);
|
|
26631
|
+
}
|
|
26632
|
+
if (raw.enabled !== false && !String((_b = raw.promptTemplateId) !== null && _b !== void 0 ? _b : '').trim()) {
|
|
26633
|
+
issues.push({
|
|
26634
|
+
path: `styles[${index}].promptTemplateId`,
|
|
26635
|
+
message: '启用风格必须有 promptTemplateId'
|
|
26636
|
+
});
|
|
26637
|
+
}
|
|
26638
|
+
});
|
|
26639
|
+
const output = isRecord(input.output) ? input.output : {};
|
|
26640
|
+
const count = Number((_b = output.count) !== null && _b !== void 0 ? _b : 1);
|
|
26641
|
+
if (!Number.isFinite(count) || count < 1 || count > 4) {
|
|
26642
|
+
issues.push({ path: 'output.count', message: '生成数量必须在 1~4 之间' });
|
|
26643
|
+
}
|
|
26644
|
+
const aspectRatio = String((_c = output.aspectRatio) !== null && _c !== void 0 ? _c : '3:4');
|
|
26645
|
+
if (!ALLOWED_RATIOS.has(aspectRatio)) {
|
|
26646
|
+
issues.push({ path: 'output.aspectRatio', message: 'aspectRatio 仅支持 3:4 / 4:5 / 9:16' });
|
|
26647
|
+
}
|
|
26648
|
+
const privacy = isRecord(input.privacy) ? input.privacy : {};
|
|
26649
|
+
const autoDeleteAfterDays = Number((_d = privacy.autoDeleteAfterDays) !== null && _d !== void 0 ? _d : 0);
|
|
26650
|
+
if (!Number.isFinite(autoDeleteAfterDays) || autoDeleteAfterDays <= 0) {
|
|
26651
|
+
issues.push({ path: 'privacy.autoDeleteAfterDays', message: 'autoDeleteAfterDays 必须大于 0' });
|
|
26652
|
+
}
|
|
26653
|
+
const upload = isRecord(input.upload) ? input.upload : {};
|
|
26654
|
+
const maxFileSizeMB = Number((_e = upload.maxFileSizeMB) !== null && _e !== void 0 ? _e : 0);
|
|
26655
|
+
if (!Number.isFinite(maxFileSizeMB) || maxFileSizeMB <= 0) {
|
|
26656
|
+
issues.push({ path: 'upload.maxFileSizeMB', message: 'maxFileSizeMB 必须大于 0' });
|
|
26657
|
+
}
|
|
26658
|
+
const allowedTypes = Array.isArray(upload.allowedTypes) ? upload.allowedTypes : [];
|
|
26659
|
+
allowedTypes.forEach((mime, i) => {
|
|
26660
|
+
if (!ALLOWED_MIME.has(String(mime))) {
|
|
26661
|
+
issues.push({ path: `upload.allowedTypes[${i}]`, message: `不支持的 MIME: ${mime}` });
|
|
26662
|
+
}
|
|
26663
|
+
});
|
|
26664
|
+
if (options === null || options === void 0 ? void 0 : options.requireReferences) {
|
|
26665
|
+
const invitationImage = normalizeInvitationImage(input);
|
|
26666
|
+
if (!hasImageRef({
|
|
26667
|
+
id: invitationImage.invitationImageId,
|
|
26668
|
+
url: invitationImage.invitationImageUrl
|
|
26669
|
+
})) {
|
|
26670
|
+
issues.push({ path: 'invitationImage', message: '需要配置婚礼邀请函图片(id 或 url)' });
|
|
26671
|
+
}
|
|
26672
|
+
}
|
|
26673
|
+
if (issues.length) {
|
|
26674
|
+
return { ok: false, issues };
|
|
26675
|
+
}
|
|
26676
|
+
return { ok: true, issues: [], value: mergeGuestAIWeddingPosterConfig(input) };
|
|
26677
|
+
}
|
|
26678
|
+
const guestAIWeddingPosterSchema = {
|
|
26679
|
+
validate: validateGuestAIWeddingPosterConfig,
|
|
26680
|
+
version: GUEST_AI_WEDDING_POSTER_VERSION
|
|
26681
|
+
};
|
|
26682
|
+
function mergeGuestAIWeddingPosterConfig(partial) {
|
|
26683
|
+
var _a, _b, _c, _d, _e;
|
|
26684
|
+
const src = (partial && typeof partial === 'object' ? partial : {});
|
|
26685
|
+
const base = defaultGuestAIWeddingPosterConfig;
|
|
26686
|
+
return {
|
|
26687
|
+
...base,
|
|
26688
|
+
...src,
|
|
26689
|
+
version: Number((_a = src.version) !== null && _a !== void 0 ? _a : base.version) || GUEST_AI_WEDDING_POSTER_VERSION,
|
|
26690
|
+
title: String((_b = src.title) !== null && _b !== void 0 ? _b : base.title),
|
|
26691
|
+
description: String((_c = src.description) !== null && _c !== void 0 ? _c : base.description),
|
|
26692
|
+
buttonText: String((_d = src.buttonText) !== null && _d !== void 0 ? _d : base.buttonText),
|
|
26693
|
+
invitationImage: {
|
|
26694
|
+
...base.invitationImage,
|
|
26695
|
+
...normalizeInvitationImage(src)
|
|
26696
|
+
},
|
|
26697
|
+
styles: Array.isArray(src.styles)
|
|
26698
|
+
? src.styles
|
|
26699
|
+
: base.styles.map((s) => ({ ...s })),
|
|
26700
|
+
result: {
|
|
26701
|
+
...base.result,
|
|
26702
|
+
...(isRecord(src.result) ? src.result : {})
|
|
26703
|
+
},
|
|
26704
|
+
privacy: {
|
|
26705
|
+
...base.privacy,
|
|
26706
|
+
...(isRecord(src.privacy) ? src.privacy : {})
|
|
26707
|
+
},
|
|
26708
|
+
upload: {
|
|
26709
|
+
...base.upload,
|
|
26710
|
+
...(isRecord(src.upload) ? src.upload : {}),
|
|
26711
|
+
allowedTypes: Array.isArray((_e = src.upload) === null || _e === void 0 ? void 0 : _e.allowedTypes)
|
|
26712
|
+
? [...src.upload.allowedTypes]
|
|
26713
|
+
: [...base.upload.allowedTypes]
|
|
26714
|
+
},
|
|
26715
|
+
output: {
|
|
26716
|
+
...base.output,
|
|
26717
|
+
...(isRecord(src.output) ? src.output : {})
|
|
26718
|
+
},
|
|
26719
|
+
appearance: {
|
|
26720
|
+
...base.appearance,
|
|
26721
|
+
...(isRecord(src.appearance) ? src.appearance : {})
|
|
26722
|
+
}
|
|
26723
|
+
};
|
|
26724
|
+
}
|
|
26725
|
+
function migrateGuestAIWeddingPosterConfig(config, fromVersion, toVersion = GUEST_AI_WEDDING_POSTER_VERSION) {
|
|
26726
|
+
var _a;
|
|
26727
|
+
const raw = isRecord(config) ? { ...config } : {};
|
|
26728
|
+
const from = Number((_a = fromVersion !== null && fromVersion !== void 0 ? fromVersion : raw.version) !== null && _a !== void 0 ? _a : 1) || 1;
|
|
26729
|
+
let current = mergeGuestAIWeddingPosterConfig(raw);
|
|
26730
|
+
if (from < 1) {
|
|
26731
|
+
current = mergeGuestAIWeddingPosterConfig(raw);
|
|
26732
|
+
}
|
|
26733
|
+
current.version = Math.min(toVersion, GUEST_AI_WEDDING_POSTER_VERSION);
|
|
26734
|
+
return current;
|
|
26735
|
+
}
|
|
26736
|
+
function resolveGuestAIWeddingPosterConfig(element) {
|
|
26737
|
+
var _a, _b;
|
|
26738
|
+
if (!element || typeof element !== 'object') {
|
|
26739
|
+
return mergeGuestAIWeddingPosterConfig(null);
|
|
26740
|
+
}
|
|
26741
|
+
const nested = isRecord(element.guestPoster) ? element.guestPoster : null;
|
|
26742
|
+
const source = nested || element;
|
|
26743
|
+
const fromVersion = Number((_b = (_a = source.version) !== null && _a !== void 0 ? _a : element.version) !== null && _b !== void 0 ? _b : 1);
|
|
26744
|
+
return migrateGuestAIWeddingPosterConfig(source, fromVersion);
|
|
26745
|
+
}
|
|
26746
|
+
|
|
26747
|
+
/**
|
|
26748
|
+
* Mock GuestPosterService for editor preview / local development.
|
|
26749
|
+
* REPLACE with a real API adapter in ai-wedding / h5-server runtime.
|
|
26750
|
+
* Do not scatter fake data inside the Vue component.
|
|
26751
|
+
*/
|
|
26752
|
+
function createMockGuestPosterService(options) {
|
|
26753
|
+
var _a;
|
|
26754
|
+
const delay = (_a = options === null || options === void 0 ? void 0 : options.delayMs) !== null && _a !== void 0 ? _a : 900;
|
|
26755
|
+
const jobs = new Map();
|
|
26756
|
+
const wait = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
26757
|
+
return {
|
|
26758
|
+
async uploadGuestPhoto(file, _context) {
|
|
26759
|
+
if (options === null || options === void 0 ? void 0 : options.failUpload) {
|
|
26760
|
+
throw { code: 'UPLOAD_FAILED', message: '照片上传失败,请检查网络后重试' };
|
|
26761
|
+
}
|
|
26762
|
+
await wait(delay);
|
|
26763
|
+
// Object URL only for local demo — real adapter must use short-lived signed URL
|
|
26764
|
+
let previewUrl;
|
|
26765
|
+
try {
|
|
26766
|
+
if (typeof URL !== 'undefined' && typeof URL.createObjectURL === 'function') {
|
|
26767
|
+
previewUrl = URL.createObjectURL(file);
|
|
26768
|
+
}
|
|
26769
|
+
}
|
|
26770
|
+
catch {
|
|
26771
|
+
previewUrl = undefined;
|
|
26772
|
+
}
|
|
26773
|
+
return {
|
|
26774
|
+
assetId: `mock-guest-${Date.now()}`,
|
|
26775
|
+
previewUrl,
|
|
26776
|
+
width: 1024,
|
|
26777
|
+
height: 1024
|
|
26778
|
+
};
|
|
26779
|
+
},
|
|
26780
|
+
async createPosterJob(request) {
|
|
26781
|
+
if (options === null || options === void 0 ? void 0 : options.failGenerate) {
|
|
26782
|
+
throw { code: 'GENERATE_FAILED', message: '海报生成失败,请稍后重试' };
|
|
26783
|
+
}
|
|
26784
|
+
const id = `mock-job-${request.idempotencyKey.slice(0, 8)}-${Date.now()}`;
|
|
26785
|
+
const job = {
|
|
26786
|
+
id,
|
|
26787
|
+
status: 'queued',
|
|
26788
|
+
stage: 'queued',
|
|
26789
|
+
createdAt: new Date().toISOString(),
|
|
26790
|
+
updatedAt: new Date().toISOString()
|
|
26791
|
+
};
|
|
26792
|
+
jobs.set(id, job);
|
|
26793
|
+
// Simulate async progression without a fixed fake percent UI
|
|
26794
|
+
void (async () => {
|
|
26795
|
+
await wait(delay);
|
|
26796
|
+
const j1 = jobs.get(id);
|
|
26797
|
+
if (!j1 || j1.status === 'cancelled')
|
|
26798
|
+
return;
|
|
26799
|
+
j1.status = 'generating';
|
|
26800
|
+
j1.stage = 'generating';
|
|
26801
|
+
j1.updatedAt = new Date().toISOString();
|
|
26802
|
+
await wait(delay * 1.2);
|
|
26803
|
+
const j2 = jobs.get(id);
|
|
26804
|
+
if (!j2 || j2.status === 'cancelled')
|
|
26805
|
+
return;
|
|
26806
|
+
const inviteHint = request.invitationImageId ? '邀请函+宾客合影' : '专属邀请函';
|
|
26807
|
+
const fallbackSvg = 'data:image/svg+xml,' +
|
|
26808
|
+
encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="600" height="800">
|
|
26809
|
+
<defs><linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
|
|
26810
|
+
<stop stop-color="#fff8f0"/><stop offset="1" stop-color="#f0e4d4"/>
|
|
26811
|
+
</linearGradient></defs>
|
|
26812
|
+
<rect width="100%" height="100%" fill="url(#g)"/>
|
|
26813
|
+
<rect x="40" y="40" width="520" height="720" fill="none" stroke="#c4a574" stroke-width="3"/>
|
|
26814
|
+
<text x="300" y="110" text-anchor="middle" font-size="26" fill="#8b6914" font-family="serif">Wedding Invitation</text>
|
|
26815
|
+
<circle cx="160" cy="300" r="55" fill="#6d8fb5"/>
|
|
26816
|
+
<circle cx="300" cy="280" r="62" fill="#b7c7de"/>
|
|
26817
|
+
<circle cx="440" cy="300" r="55" fill="#c489a4"/>
|
|
26818
|
+
<text x="160" y="390" text-anchor="middle" font-size="14" fill="#17345f">新郎</text>
|
|
26819
|
+
<text x="300" y="390" text-anchor="middle" font-size="14" fill="#17345f">宾客</text>
|
|
26820
|
+
<text x="440" y="390" text-anchor="middle" font-size="14" fill="#5a2a40">新娘</text>
|
|
26821
|
+
<text x="300" y="480" text-anchor="middle" font-size="22" fill="#6b4f2a">${inviteHint}</text>
|
|
26822
|
+
<text x="300" y="520" text-anchor="middle" font-size="14" fill="#8a7355">Mock · ${request.styleId}</text>
|
|
26823
|
+
<text x="300" y="560" text-anchor="middle" font-size="12" fill="#a09080">将宾客与邀请函中的新人合成</text>
|
|
26824
|
+
</svg>`);
|
|
26825
|
+
const imageUrl = (options === null || options === void 0 ? void 0 : options.resultImageUrl) || fallbackSvg;
|
|
26826
|
+
const results = Array.from({ length: request.output.count || 1 }).map((_, i) => ({
|
|
26827
|
+
id: `${id}-result-${i}`,
|
|
26828
|
+
imageUrl,
|
|
26829
|
+
thumbnailUrl: imageUrl,
|
|
26830
|
+
width: 600,
|
|
26831
|
+
height: 800
|
|
26832
|
+
}));
|
|
26833
|
+
j2.status = 'completed';
|
|
26834
|
+
j2.stage = 'completed';
|
|
26835
|
+
j2.results = results;
|
|
26836
|
+
j2.updatedAt = new Date().toISOString();
|
|
26837
|
+
})();
|
|
26838
|
+
return { ...job };
|
|
26839
|
+
},
|
|
26840
|
+
async getPosterJob(jobId) {
|
|
26841
|
+
const job = jobs.get(jobId);
|
|
26842
|
+
if (!job) {
|
|
26843
|
+
return {
|
|
26844
|
+
id: jobId,
|
|
26845
|
+
status: 'failed',
|
|
26846
|
+
errorCode: 'NOT_FOUND',
|
|
26847
|
+
errorMessage: '任务不存在或已过期'
|
|
26848
|
+
};
|
|
26849
|
+
}
|
|
26850
|
+
return { ...job, results: job.results ? [...job.results] : undefined };
|
|
26851
|
+
},
|
|
26852
|
+
async cancelPosterJob(jobId) {
|
|
26853
|
+
const job = jobs.get(jobId);
|
|
26854
|
+
if (job && job.status !== 'completed') {
|
|
26855
|
+
job.status = 'cancelled';
|
|
26856
|
+
job.updatedAt = new Date().toISOString();
|
|
26857
|
+
}
|
|
26858
|
+
},
|
|
26859
|
+
async downloadResult(_resultId) {
|
|
26860
|
+
return new Blob(['mock-poster'], { type: 'image/png' });
|
|
26861
|
+
},
|
|
26862
|
+
async getQuota(_invitationId) {
|
|
26863
|
+
const maxPerWork = 100;
|
|
26864
|
+
return { used: 0, maxPerWork, remaining: maxPerWork };
|
|
26865
|
+
}
|
|
26866
|
+
};
|
|
26867
|
+
}
|
|
26868
|
+
|
|
26869
|
+
const GUEST_POSTER_SERVICE_KEY = Symbol('GuestPosterService');
|
|
26870
|
+
/** Resolve runtime service: inject → provided callbacks → mock (never call vendor APIs here). */
|
|
26871
|
+
function resolveGuestPosterService(injectedOrProvided) {
|
|
26872
|
+
if (injectedOrProvided)
|
|
26873
|
+
return injectedOrProvided;
|
|
26874
|
+
const fromInject = vue.inject(GUEST_POSTER_SERVICE_KEY, null);
|
|
26875
|
+
if (fromInject)
|
|
26876
|
+
return fromInject;
|
|
26877
|
+
return createMockGuestPosterService();
|
|
26878
|
+
}
|
|
26879
|
+
function guestPosterJobStorageKey(componentId) {
|
|
26880
|
+
return `guest-ai-poster-job:${componentId}`;
|
|
26881
|
+
}
|
|
26882
|
+
function loadStoredJobId(componentId) {
|
|
26883
|
+
try {
|
|
26884
|
+
if (typeof sessionStorage === 'undefined')
|
|
26885
|
+
return null;
|
|
26886
|
+
return sessionStorage.getItem(guestPosterJobStorageKey(componentId));
|
|
26887
|
+
}
|
|
26888
|
+
catch {
|
|
26889
|
+
return null;
|
|
26890
|
+
}
|
|
26891
|
+
}
|
|
26892
|
+
function saveStoredJobId(componentId, jobId) {
|
|
26893
|
+
try {
|
|
26894
|
+
if (typeof sessionStorage === 'undefined')
|
|
26895
|
+
return;
|
|
26896
|
+
const key = guestPosterJobStorageKey(componentId);
|
|
26897
|
+
if (!jobId)
|
|
26898
|
+
sessionStorage.removeItem(key);
|
|
26899
|
+
else
|
|
26900
|
+
sessionStorage.setItem(key, jobId);
|
|
26901
|
+
}
|
|
26902
|
+
catch {
|
|
26903
|
+
/* ignore quota / private mode */
|
|
26904
|
+
}
|
|
26905
|
+
}
|
|
26906
|
+
function mapJobStatusToUi(status) {
|
|
26907
|
+
if (status === 'completed')
|
|
26908
|
+
return 'completed';
|
|
26909
|
+
if (status === 'failed' || status === 'cancelled')
|
|
26910
|
+
return 'failed';
|
|
26911
|
+
if (status === 'queued' || status === 'preprocessing')
|
|
26912
|
+
return 'queued';
|
|
26913
|
+
return 'generating';
|
|
26914
|
+
}
|
|
26915
|
+
function guestPosterErrorMessage(code, fallback) {
|
|
26916
|
+
switch (code) {
|
|
26917
|
+
case 'NO_FACE':
|
|
26918
|
+
return '没有检测到清晰人脸,请更换照片';
|
|
26919
|
+
case 'MULTI_FACE':
|
|
26920
|
+
return '请上传只包含你本人的单人照片';
|
|
26921
|
+
case 'TOO_SMALL':
|
|
26922
|
+
return '照片清晰度不足,请更换照片';
|
|
26923
|
+
case 'UPLOAD_FAILED':
|
|
26924
|
+
return '照片上传失败,请检查网络后重试';
|
|
26925
|
+
case 'TIMEOUT':
|
|
26926
|
+
case 'GENERATION_TIMEOUT':
|
|
26927
|
+
return '生成时间较长,你可以稍后回来查看';
|
|
26928
|
+
case 'CONTENT_BLOCKED':
|
|
26929
|
+
case 'GENERATION_REJECTED':
|
|
26930
|
+
return '该照片暂时无法用于生成,请更换照片';
|
|
26931
|
+
case 'PROVIDER_AUTH_FAILED':
|
|
26932
|
+
return '图像服务未配置,请联系管理员';
|
|
26933
|
+
case '40410':
|
|
26934
|
+
return '作品不存在或链接无效';
|
|
26935
|
+
case '40312':
|
|
26936
|
+
return '作品未发布,无法生成';
|
|
26937
|
+
case '40005':
|
|
26938
|
+
return fallback || '本作品生成次数已达上限';
|
|
26939
|
+
case 'GENERATE_FAILED':
|
|
26940
|
+
case 'EMPTY_RESULT':
|
|
26941
|
+
case 'PROVIDER_ERROR':
|
|
26942
|
+
return fallback || '海报生成失败,请稍后重试';
|
|
26943
|
+
default:
|
|
26944
|
+
return fallback || '操作失败,请稍后重试';
|
|
26945
|
+
}
|
|
26946
|
+
}
|
|
26947
|
+
const IMAGE_MIME_BY_MAGIC = [
|
|
26948
|
+
{
|
|
26949
|
+
mime: 'image/jpeg',
|
|
26950
|
+
test: (b) => b.length >= 3 && b[0] === 0xff && b[1] === 0xd8 && b[2] === 0xff
|
|
26951
|
+
},
|
|
26952
|
+
{
|
|
26953
|
+
mime: 'image/png',
|
|
26954
|
+
test: (b) => b.length >= 8 &&
|
|
26955
|
+
b[0] === 0x89 &&
|
|
26956
|
+
b[1] === 0x50 &&
|
|
26957
|
+
b[2] === 0x4e &&
|
|
26958
|
+
b[3] === 0x47
|
|
26959
|
+
},
|
|
26960
|
+
{
|
|
26961
|
+
mime: 'image/webp',
|
|
26962
|
+
test: (b) => b.length >= 12 &&
|
|
26963
|
+
b[0] === 0x52 &&
|
|
26964
|
+
b[1] === 0x49 &&
|
|
26965
|
+
b[2] === 0x46 &&
|
|
26966
|
+
b[3] === 0x46 &&
|
|
26967
|
+
b[8] === 0x57 &&
|
|
26968
|
+
b[9] === 0x45 &&
|
|
26969
|
+
b[10] === 0x42 &&
|
|
26970
|
+
b[11] === 0x50
|
|
26971
|
+
}
|
|
26972
|
+
];
|
|
26973
|
+
async function detectImageMime(file) {
|
|
26974
|
+
const slice = file.slice(0, 16);
|
|
26975
|
+
let buf;
|
|
26976
|
+
if (typeof slice.arrayBuffer === 'function') {
|
|
26977
|
+
buf = await slice.arrayBuffer();
|
|
26978
|
+
}
|
|
26979
|
+
else {
|
|
26980
|
+
buf = await new Promise((resolve, reject) => {
|
|
26981
|
+
const reader = new FileReader();
|
|
26982
|
+
reader.onload = () => resolve(reader.result);
|
|
26983
|
+
reader.onerror = () => reject(reader.error);
|
|
26984
|
+
reader.readAsArrayBuffer(slice);
|
|
26985
|
+
});
|
|
26986
|
+
}
|
|
26987
|
+
const bytes = new Uint8Array(buf);
|
|
26988
|
+
for (const item of IMAGE_MIME_BY_MAGIC) {
|
|
26989
|
+
if (item.test(bytes))
|
|
26990
|
+
return item.mime;
|
|
26991
|
+
}
|
|
26992
|
+
return null;
|
|
26993
|
+
}
|
|
26994
|
+
async function readImageSize(file) {
|
|
26995
|
+
if (typeof createImageBitmap === 'function') {
|
|
26996
|
+
try {
|
|
26997
|
+
const bmp = await createImageBitmap(file);
|
|
26998
|
+
const size = { width: bmp.width, height: bmp.height };
|
|
26999
|
+
bmp.close();
|
|
27000
|
+
return size;
|
|
27001
|
+
}
|
|
27002
|
+
catch {
|
|
27003
|
+
/* fall through */
|
|
27004
|
+
}
|
|
27005
|
+
}
|
|
27006
|
+
return new Promise((resolve) => {
|
|
27007
|
+
const url = URL.createObjectURL(file);
|
|
27008
|
+
const img = new Image();
|
|
27009
|
+
img.onload = () => {
|
|
27010
|
+
const size = { width: img.naturalWidth, height: img.naturalHeight };
|
|
27011
|
+
URL.revokeObjectURL(url);
|
|
27012
|
+
resolve(size);
|
|
27013
|
+
};
|
|
27014
|
+
img.onerror = () => {
|
|
27015
|
+
URL.revokeObjectURL(url);
|
|
27016
|
+
resolve(null);
|
|
27017
|
+
};
|
|
27018
|
+
img.src = url;
|
|
27019
|
+
});
|
|
27020
|
+
}
|
|
27021
|
+
function createIdempotencyKey(componentId) {
|
|
27022
|
+
return `${componentId}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
27023
|
+
}
|
|
27024
|
+
|
|
27025
|
+
const DEMO_RESULT = {
|
|
27026
|
+
id: 'editor-demo-result',
|
|
27027
|
+
imageUrl: 'data:image/svg+xml,' +
|
|
27028
|
+
encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="600" height="800">
|
|
27029
|
+
<rect width="100%" height="100%" fill="#fff6ea"/>
|
|
27030
|
+
<text x="50%" y="48%" text-anchor="middle" font-size="24" fill="#17345f">示例合影邀请函</text>
|
|
27031
|
+
<text x="50%" y="56%" text-anchor="middle" font-size="14" fill="#7a8799">编辑器预览</text>
|
|
27032
|
+
</svg>`),
|
|
27033
|
+
width: 600,
|
|
27034
|
+
height: 800
|
|
27035
|
+
};
|
|
27036
|
+
var script$4 = vue.defineComponent({
|
|
27037
|
+
name: 'uni-guest-ai-wedding-poster',
|
|
27038
|
+
props: {
|
|
27039
|
+
element: {
|
|
27040
|
+
type: Object,
|
|
27041
|
+
required: true
|
|
27042
|
+
},
|
|
27043
|
+
isEditing: {
|
|
27044
|
+
type: Boolean,
|
|
27045
|
+
default: false
|
|
27046
|
+
},
|
|
27047
|
+
env: {
|
|
27048
|
+
type: String,
|
|
27049
|
+
default: 'prd'
|
|
27050
|
+
},
|
|
27051
|
+
invitationId: {
|
|
27052
|
+
type: String,
|
|
27053
|
+
default: ''
|
|
27054
|
+
},
|
|
27055
|
+
global: {
|
|
27056
|
+
type: Object,
|
|
27057
|
+
default: null
|
|
27058
|
+
},
|
|
27059
|
+
guestPosterService: {
|
|
27060
|
+
type: Object,
|
|
27061
|
+
default: null
|
|
27062
|
+
}
|
|
27063
|
+
},
|
|
27064
|
+
emits: ['trigger', 'track', 'error'],
|
|
27065
|
+
setup(props, { emit }) {
|
|
27066
|
+
const injected = vue.inject(GUEST_POSTER_SERVICE_KEY, null);
|
|
27067
|
+
const fileInputRef = vue.ref(null);
|
|
27068
|
+
const sceneId = vue.computed(() => {
|
|
27069
|
+
const fromProp = props.invitationId;
|
|
27070
|
+
if (fromProp)
|
|
27071
|
+
return fromProp;
|
|
27072
|
+
const g = props.global || {};
|
|
27073
|
+
return String(g.sceneId || g.uuid || g.scene_id || '');
|
|
27074
|
+
});
|
|
27075
|
+
const config = vue.computed(() => resolveGuestAIWeddingPosterConfig(props.element));
|
|
27076
|
+
const uiState = vue.ref(props.isEditing ? 'configuring' : 'idle');
|
|
27077
|
+
const guestPhoto = vue.ref(null);
|
|
27078
|
+
const guestPreviewUrl = vue.ref('');
|
|
27079
|
+
const selectedStyleId = vue.ref('');
|
|
27080
|
+
const errorMessage = vue.ref('');
|
|
27081
|
+
const toastText = vue.ref('');
|
|
27082
|
+
const resultList = vue.ref([]);
|
|
27083
|
+
const currentJobId = vue.ref(null);
|
|
27084
|
+
const regenerateUsed = vue.ref(0);
|
|
27085
|
+
const idempotencyKey = vue.ref('');
|
|
27086
|
+
const quotaUsed = vue.ref(0);
|
|
27087
|
+
const quotaMax = vue.ref(100);
|
|
27088
|
+
let pollTimer = null;
|
|
27089
|
+
let pollDelay = 2000;
|
|
27090
|
+
let toastTimer = null;
|
|
27091
|
+
let objectUrlToRevoke = null;
|
|
27092
|
+
const enabledStyles = vue.computed(() => [...config.value.styles]
|
|
27093
|
+
.filter((s) => s.enabled)
|
|
27094
|
+
.sort((a, b) => a.sort - b.sort));
|
|
27095
|
+
const quotaText = vue.computed(() => {
|
|
27096
|
+
const max = quotaMax.value;
|
|
27097
|
+
const used = quotaUsed.value;
|
|
27098
|
+
if (!max)
|
|
27099
|
+
return '';
|
|
27100
|
+
return `本作品还可生成 ${Math.max(0, max - used)} / ${max} 张`;
|
|
27101
|
+
});
|
|
27102
|
+
const regenerateLeft = vue.computed(() => {
|
|
27103
|
+
const max = config.value.result.maxRegenerateCount;
|
|
27104
|
+
if (max === undefined || max === null)
|
|
27105
|
+
return -1;
|
|
27106
|
+
return Math.max(0, max - regenerateUsed.value);
|
|
27107
|
+
});
|
|
27108
|
+
const statusHint = vue.computed(() => {
|
|
27109
|
+
if (uiState.value === 'submitting')
|
|
27110
|
+
return '正在提交…';
|
|
27111
|
+
if (uiState.value === 'queued')
|
|
27112
|
+
return '排队中…';
|
|
27113
|
+
return '正在生成你与新人的专属邀请函…';
|
|
27114
|
+
});
|
|
27115
|
+
const canSubmit = vue.computed(() => {
|
|
27116
|
+
if (props.isEditing)
|
|
27117
|
+
return true;
|
|
27118
|
+
if (['uploading', 'submitting', 'queued', 'generating'].includes(uiState.value))
|
|
27119
|
+
return false;
|
|
27120
|
+
if (!guestPhoto.value || !selectedStyleId.value)
|
|
27121
|
+
return false;
|
|
27122
|
+
if (quotaMax.value > 0 && quotaUsed.value >= quotaMax.value)
|
|
27123
|
+
return false;
|
|
27124
|
+
const inv = config.value.invitationImage;
|
|
27125
|
+
return !!(inv.invitationImageId || inv.invitationImageUrl);
|
|
27126
|
+
});
|
|
27127
|
+
const rootStyle = vue.computed(() => {
|
|
27128
|
+
var _a, _b, _c, _d;
|
|
27129
|
+
const css = props.element.css || {};
|
|
27130
|
+
const appearance = config.value.appearance;
|
|
27131
|
+
const style = {
|
|
27132
|
+
width: typeof css.width === 'number' ? px2rem(css.width) : String(css.width || '100%'),
|
|
27133
|
+
maxWidth: '480px',
|
|
27134
|
+
opacity: String((_a = css.opacity) !== null && _a !== void 0 ? _a : 1),
|
|
27135
|
+
transform: `rotate(${css.transform || 0}deg)`,
|
|
27136
|
+
backgroundColor: appearance.backgroundColor || '#fffaf2',
|
|
27137
|
+
color: appearance.textColor || '#17345f',
|
|
27138
|
+
borderRadius: `${(_b = appearance.borderRadius) !== null && _b !== void 0 ? _b : 20}px`,
|
|
27139
|
+
padding: `${(_c = appearance.paddingY) !== null && _c !== void 0 ? _c : 16}px ${(_d = appearance.paddingX) !== null && _d !== void 0 ? _d : 16}px`,
|
|
27140
|
+
['--gap-primary']: appearance.primaryColor || '#198cff',
|
|
27141
|
+
position: 'relative'
|
|
27142
|
+
};
|
|
27143
|
+
if (css.height != null && String(css.height) !== 'auto') {
|
|
27144
|
+
style.minHeight = typeof css.height === 'number' ? px2rem(css.height) : String(css.height);
|
|
27145
|
+
}
|
|
27146
|
+
return style;
|
|
27147
|
+
});
|
|
27148
|
+
function track(event, payload) {
|
|
27149
|
+
emit('track', { event, ...(payload || {}) });
|
|
27150
|
+
}
|
|
27151
|
+
function showToast(msg) {
|
|
27152
|
+
toastText.value = msg;
|
|
27153
|
+
if (toastTimer)
|
|
27154
|
+
clearTimeout(toastTimer);
|
|
27155
|
+
toastTimer = setTimeout(() => {
|
|
27156
|
+
toastText.value = '';
|
|
27157
|
+
}, 2200);
|
|
27158
|
+
}
|
|
27159
|
+
function getService() {
|
|
27160
|
+
return resolveGuestPosterService(props.guestPosterService || injected);
|
|
27161
|
+
}
|
|
27162
|
+
function stopPolling() {
|
|
27163
|
+
if (pollTimer) {
|
|
27164
|
+
clearTimeout(pollTimer);
|
|
27165
|
+
pollTimer = null;
|
|
27166
|
+
}
|
|
27167
|
+
pollDelay = 2000;
|
|
27168
|
+
}
|
|
27169
|
+
function schedulePoll() {
|
|
27170
|
+
stopPolling();
|
|
27171
|
+
const hidden = typeof document !== 'undefined' && document.visibilityState === 'hidden';
|
|
27172
|
+
const delay = hidden ? Math.max(pollDelay, 8000) : pollDelay;
|
|
27173
|
+
pollTimer = setTimeout(() => {
|
|
27174
|
+
void pollJob();
|
|
27175
|
+
}, delay);
|
|
27176
|
+
pollDelay = Math.min(Math.floor(pollDelay * 1.35), 12000);
|
|
27177
|
+
}
|
|
27178
|
+
async function pollJob() {
|
|
27179
|
+
const jobId = currentJobId.value;
|
|
27180
|
+
if (!jobId || props.isEditing) {
|
|
27181
|
+
stopPolling();
|
|
27182
|
+
return;
|
|
27183
|
+
}
|
|
27184
|
+
try {
|
|
27185
|
+
const job = await getService().getPosterJob(jobId);
|
|
27186
|
+
applyJob(job);
|
|
27187
|
+
if (job.status === 'completed' || job.status === 'failed' || job.status === 'cancelled') {
|
|
27188
|
+
stopPolling();
|
|
27189
|
+
return;
|
|
27190
|
+
}
|
|
27191
|
+
schedulePoll();
|
|
27192
|
+
}
|
|
27193
|
+
catch {
|
|
27194
|
+
schedulePoll();
|
|
27195
|
+
}
|
|
27196
|
+
}
|
|
27197
|
+
function applyJob(job) {
|
|
27198
|
+
currentJobId.value = job.id;
|
|
27199
|
+
const mapped = mapJobStatusToUi(job.status);
|
|
27200
|
+
if (mapped === 'completed') {
|
|
27201
|
+
uiState.value = 'completed';
|
|
27202
|
+
resultList.value = job.results || [];
|
|
27203
|
+
saveStoredJobId(String(props.element.id), job.id);
|
|
27204
|
+
track('guest_poster_generate_success', { jobId: job.id });
|
|
27205
|
+
void refreshQuota();
|
|
27206
|
+
}
|
|
27207
|
+
else if (mapped === 'failed') {
|
|
27208
|
+
uiState.value = 'failed';
|
|
27209
|
+
errorMessage.value = guestPosterErrorMessage(job.errorCode, job.errorMessage);
|
|
27210
|
+
saveStoredJobId(String(props.element.id), null);
|
|
27211
|
+
track('guest_poster_generate_failed', { code: job.errorCode || 'FAILED' });
|
|
27212
|
+
emit('error', { code: job.errorCode || 'FAILED', message: errorMessage.value });
|
|
27213
|
+
}
|
|
27214
|
+
else {
|
|
27215
|
+
uiState.value = mapped;
|
|
27216
|
+
errorMessage.value = '';
|
|
27217
|
+
}
|
|
27218
|
+
}
|
|
27219
|
+
async function refreshQuota() {
|
|
27220
|
+
const svc = getService();
|
|
27221
|
+
if (!svc.getQuota)
|
|
27222
|
+
return;
|
|
27223
|
+
try {
|
|
27224
|
+
const q = await svc.getQuota(sceneId.value || String(props.element.id));
|
|
27225
|
+
quotaUsed.value = Number(q.used) || 0;
|
|
27226
|
+
quotaMax.value = Number(q.maxPerWork) || 100;
|
|
27227
|
+
}
|
|
27228
|
+
catch {
|
|
27229
|
+
/* ignore */
|
|
27230
|
+
}
|
|
27231
|
+
}
|
|
27232
|
+
function onUploadAreaClick() {
|
|
27233
|
+
if (props.isEditing) {
|
|
27234
|
+
showToast('发布后宾客可上传照片');
|
|
27235
|
+
return;
|
|
27236
|
+
}
|
|
27237
|
+
if (uiState.value === 'uploading')
|
|
27238
|
+
return;
|
|
27239
|
+
triggerFilePick();
|
|
27240
|
+
}
|
|
27241
|
+
function triggerFilePick() {
|
|
27242
|
+
var _a;
|
|
27243
|
+
if (props.isEditing)
|
|
27244
|
+
return;
|
|
27245
|
+
(_a = fileInputRef.value) === null || _a === void 0 ? void 0 : _a.click();
|
|
27246
|
+
}
|
|
27247
|
+
async function onFileChange(ev) {
|
|
27248
|
+
const input = ev.target;
|
|
27249
|
+
const file = input.files && input.files[0];
|
|
27250
|
+
input.value = '';
|
|
27251
|
+
if (!file || props.isEditing)
|
|
27252
|
+
return;
|
|
27253
|
+
errorMessage.value = '';
|
|
27254
|
+
track('guest_photo_upload_start');
|
|
27255
|
+
try {
|
|
27256
|
+
const mime = await detectImageMime(file);
|
|
27257
|
+
const allowed = config.value.upload.allowedTypes;
|
|
27258
|
+
if (!mime || !allowed.includes(mime)) {
|
|
27259
|
+
throw { code: 'UPLOAD_FAILED', message: '仅支持 JPEG / PNG / WebP 图片' };
|
|
27260
|
+
}
|
|
27261
|
+
if (file.size > config.value.upload.maxFileSizeMB * 1024 * 1024) {
|
|
27262
|
+
throw {
|
|
27263
|
+
code: 'UPLOAD_FAILED',
|
|
27264
|
+
message: `照片不能超过 ${config.value.upload.maxFileSizeMB}MB`
|
|
27265
|
+
};
|
|
27266
|
+
}
|
|
27267
|
+
const size = await readImageSize(file);
|
|
27268
|
+
if (size &&
|
|
27269
|
+
((config.value.upload.minWidth && size.width < config.value.upload.minWidth) ||
|
|
27270
|
+
(config.value.upload.minHeight && size.height < config.value.upload.minHeight))) {
|
|
27271
|
+
throw { code: 'TOO_SMALL', message: guestPosterErrorMessage('TOO_SMALL') };
|
|
27272
|
+
}
|
|
27273
|
+
uiState.value = 'uploading';
|
|
27274
|
+
const uploaded = await getService().uploadGuestPhoto(file, {
|
|
27275
|
+
invitationId: sceneId.value || undefined,
|
|
27276
|
+
componentId: String(props.element.id)
|
|
27277
|
+
});
|
|
27278
|
+
if (objectUrlToRevoke) {
|
|
27279
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27280
|
+
objectUrlToRevoke = null;
|
|
27281
|
+
}
|
|
27282
|
+
guestPhoto.value = uploaded;
|
|
27283
|
+
if (uploaded.previewUrl) {
|
|
27284
|
+
guestPreviewUrl.value = uploaded.previewUrl;
|
|
27285
|
+
if (uploaded.previewUrl.startsWith('blob:')) {
|
|
27286
|
+
objectUrlToRevoke = uploaded.previewUrl;
|
|
27287
|
+
}
|
|
27288
|
+
}
|
|
27289
|
+
uiState.value = 'photo-ready';
|
|
27290
|
+
track('guest_photo_upload_success');
|
|
27291
|
+
}
|
|
27292
|
+
catch (err) {
|
|
27293
|
+
const e = err;
|
|
27294
|
+
uiState.value = 'failed';
|
|
27295
|
+
errorMessage.value = guestPosterErrorMessage(e === null || e === void 0 ? void 0 : e.code, e === null || e === void 0 ? void 0 : e.message);
|
|
27296
|
+
track('guest_photo_upload_failed', { code: (e === null || e === void 0 ? void 0 : e.code) || 'UPLOAD_FAILED' });
|
|
27297
|
+
emit('error', {
|
|
27298
|
+
code: (e === null || e === void 0 ? void 0 : e.code) || 'UPLOAD_FAILED',
|
|
27299
|
+
message: errorMessage.value,
|
|
27300
|
+
retryable: true
|
|
27301
|
+
});
|
|
27302
|
+
}
|
|
27303
|
+
}
|
|
27304
|
+
function clearPhoto() {
|
|
27305
|
+
if (props.isEditing)
|
|
27306
|
+
return;
|
|
27307
|
+
if (objectUrlToRevoke) {
|
|
27308
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27309
|
+
objectUrlToRevoke = null;
|
|
27310
|
+
}
|
|
27311
|
+
guestPhoto.value = null;
|
|
27312
|
+
guestPreviewUrl.value = '';
|
|
27313
|
+
uiState.value = 'idle';
|
|
27314
|
+
}
|
|
27315
|
+
function onStyleChange(ev) {
|
|
27316
|
+
const id = ev.target.value;
|
|
27317
|
+
selectedStyleId.value = id;
|
|
27318
|
+
track('guest_poster_style_select', { styleId: id });
|
|
27319
|
+
if (!props.isEditing && uiState.value !== 'completed') {
|
|
27320
|
+
uiState.value = 'configuring';
|
|
27321
|
+
}
|
|
27322
|
+
}
|
|
27323
|
+
async function onGenerateClick() {
|
|
27324
|
+
track('guest_poster_generate_click');
|
|
27325
|
+
if (props.isEditing) {
|
|
27326
|
+
showToast('发布后,宾客可生成专属邀请函');
|
|
27327
|
+
uiState.value = 'completed';
|
|
27328
|
+
resultList.value = [DEMO_RESULT];
|
|
27329
|
+
return;
|
|
27330
|
+
}
|
|
27331
|
+
if (!canSubmit.value) {
|
|
27332
|
+
if (quotaMax.value > 0 && quotaUsed.value >= quotaMax.value) {
|
|
27333
|
+
errorMessage.value = `本作品已达上限(${quotaMax.value} 张)`;
|
|
27334
|
+
}
|
|
27335
|
+
else if (!guestPhoto.value)
|
|
27336
|
+
errorMessage.value = '请先上传照片';
|
|
27337
|
+
else if (!selectedStyleId.value)
|
|
27338
|
+
errorMessage.value = '请选择风格';
|
|
27339
|
+
else
|
|
27340
|
+
errorMessage.value = '请先在编辑器配置婚礼邀请函图片';
|
|
27341
|
+
return;
|
|
27342
|
+
}
|
|
27343
|
+
const style = enabledStyles.value.find((s) => s.id === selectedStyleId.value);
|
|
27344
|
+
if (!style || !guestPhoto.value)
|
|
27345
|
+
return;
|
|
27346
|
+
errorMessage.value = '';
|
|
27347
|
+
uiState.value = 'submitting';
|
|
27348
|
+
if (!idempotencyKey.value) {
|
|
27349
|
+
idempotencyKey.value = createIdempotencyKey(String(props.element.id));
|
|
27350
|
+
}
|
|
27351
|
+
const inv = config.value.invitationImage;
|
|
27352
|
+
try {
|
|
27353
|
+
const job = await getService().createPosterJob({
|
|
27354
|
+
invitationId: sceneId.value || '',
|
|
27355
|
+
componentId: String(props.element.id),
|
|
27356
|
+
guestPhotoAssetId: guestPhoto.value.assetId,
|
|
27357
|
+
guestPhotoUrl: guestPhoto.value.previewUrl || guestPreviewUrl.value || '',
|
|
27358
|
+
invitationImageId: inv.invitationImageId || '',
|
|
27359
|
+
invitationImageUrl: inv.invitationImageUrl || '',
|
|
27360
|
+
styleId: style.id,
|
|
27361
|
+
promptTemplateId: style.promptTemplateId,
|
|
27362
|
+
output: {
|
|
27363
|
+
aspectRatio: config.value.output.aspectRatio,
|
|
27364
|
+
count: config.value.output.count
|
|
27365
|
+
},
|
|
27366
|
+
consent: {
|
|
27367
|
+
accepted: true,
|
|
27368
|
+
acceptedAt: new Date().toISOString(),
|
|
27369
|
+
privacyVersion: 'v1'
|
|
27370
|
+
},
|
|
27371
|
+
idempotencyKey: idempotencyKey.value
|
|
27372
|
+
});
|
|
27373
|
+
saveStoredJobId(String(props.element.id), job.id);
|
|
27374
|
+
applyJob(job);
|
|
27375
|
+
if (job.status !== 'completed' && job.status !== 'failed' && job.status !== 'cancelled') {
|
|
27376
|
+
schedulePoll();
|
|
27377
|
+
}
|
|
27378
|
+
}
|
|
27379
|
+
catch (err) {
|
|
27380
|
+
const e = err;
|
|
27381
|
+
uiState.value = 'failed';
|
|
27382
|
+
errorMessage.value = guestPosterErrorMessage(e === null || e === void 0 ? void 0 : e.code, e === null || e === void 0 ? void 0 : e.message);
|
|
27383
|
+
idempotencyKey.value = '';
|
|
27384
|
+
track('guest_poster_generate_failed', { code: (e === null || e === void 0 ? void 0 : e.code) || 'GENERATE_FAILED' });
|
|
27385
|
+
emit('error', {
|
|
27386
|
+
code: (e === null || e === void 0 ? void 0 : e.code) || 'GENERATE_FAILED',
|
|
27387
|
+
message: errorMessage.value,
|
|
27388
|
+
retryable: true
|
|
27389
|
+
});
|
|
27390
|
+
}
|
|
27391
|
+
}
|
|
27392
|
+
function onRegenerate() {
|
|
27393
|
+
if (props.isEditing)
|
|
27394
|
+
return;
|
|
27395
|
+
if (regenerateLeft.value === 0)
|
|
27396
|
+
return;
|
|
27397
|
+
regenerateUsed.value += 1;
|
|
27398
|
+
idempotencyKey.value = '';
|
|
27399
|
+
uiState.value = 'configuring';
|
|
27400
|
+
resultList.value = [];
|
|
27401
|
+
track('guest_poster_regenerate');
|
|
27402
|
+
}
|
|
27403
|
+
function onDownload() {
|
|
27404
|
+
const first = resultList.value[0];
|
|
27405
|
+
if (!first)
|
|
27406
|
+
return;
|
|
27407
|
+
track('guest_poster_download');
|
|
27408
|
+
if (props.isEditing) {
|
|
27409
|
+
showToast('发布后可下载');
|
|
27410
|
+
return;
|
|
27411
|
+
}
|
|
27412
|
+
try {
|
|
27413
|
+
const a = document.createElement('a');
|
|
27414
|
+
a.href = first.imageUrl;
|
|
27415
|
+
a.download = 'wedding-invitation.png';
|
|
27416
|
+
a.rel = 'noopener';
|
|
27417
|
+
a.target = '_blank';
|
|
27418
|
+
a.click();
|
|
27419
|
+
}
|
|
27420
|
+
catch {
|
|
27421
|
+
showToast('请长按图片保存');
|
|
27422
|
+
}
|
|
27423
|
+
}
|
|
27424
|
+
function onVisibilityChange() {
|
|
27425
|
+
if (typeof document === 'undefined')
|
|
27426
|
+
return;
|
|
27427
|
+
if (document.visibilityState === 'visible' && currentJobId.value) {
|
|
27428
|
+
pollDelay = 2000;
|
|
27429
|
+
void pollJob();
|
|
27430
|
+
}
|
|
27431
|
+
}
|
|
27432
|
+
vue.watch(enabledStyles, (list) => {
|
|
27433
|
+
var _a;
|
|
27434
|
+
if (!selectedStyleId.value && list.length) {
|
|
27435
|
+
selectedStyleId.value = list[0].id;
|
|
27436
|
+
}
|
|
27437
|
+
else if (selectedStyleId.value && !list.some((s) => s.id === selectedStyleId.value)) {
|
|
27438
|
+
selectedStyleId.value = ((_a = list[0]) === null || _a === void 0 ? void 0 : _a.id) || '';
|
|
27439
|
+
}
|
|
27440
|
+
}, { immediate: true });
|
|
27441
|
+
vue.onMounted(() => {
|
|
27442
|
+
track('guest_poster_view');
|
|
27443
|
+
if (typeof document !== 'undefined') {
|
|
27444
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
27445
|
+
}
|
|
27446
|
+
void refreshQuota();
|
|
27447
|
+
if (props.isEditing)
|
|
27448
|
+
return;
|
|
27449
|
+
const stored = loadStoredJobId(String(props.element.id));
|
|
27450
|
+
if (stored) {
|
|
27451
|
+
currentJobId.value = stored;
|
|
27452
|
+
uiState.value = 'generating';
|
|
27453
|
+
void pollJob();
|
|
27454
|
+
}
|
|
27455
|
+
});
|
|
27456
|
+
vue.onBeforeUnmount(() => {
|
|
27457
|
+
stopPolling();
|
|
27458
|
+
if (toastTimer)
|
|
27459
|
+
clearTimeout(toastTimer);
|
|
27460
|
+
if (objectUrlToRevoke)
|
|
27461
|
+
URL.revokeObjectURL(objectUrlToRevoke);
|
|
27462
|
+
if (typeof document !== 'undefined') {
|
|
27463
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
27464
|
+
}
|
|
27465
|
+
});
|
|
27466
|
+
return {
|
|
27467
|
+
config,
|
|
27468
|
+
uiState,
|
|
27469
|
+
guestPreviewUrl,
|
|
27470
|
+
enabledStyles,
|
|
27471
|
+
selectedStyleId,
|
|
27472
|
+
errorMessage,
|
|
27473
|
+
toastText,
|
|
27474
|
+
resultList,
|
|
27475
|
+
regenerateLeft,
|
|
27476
|
+
statusHint,
|
|
27477
|
+
canSubmit,
|
|
27478
|
+
quotaText,
|
|
27479
|
+
rootStyle,
|
|
27480
|
+
fileInputRef,
|
|
27481
|
+
onUploadAreaClick,
|
|
27482
|
+
triggerFilePick,
|
|
27483
|
+
onFileChange,
|
|
27484
|
+
clearPhoto,
|
|
27485
|
+
onStyleChange,
|
|
27486
|
+
onGenerateClick,
|
|
27487
|
+
onRegenerate,
|
|
27488
|
+
onDownload
|
|
27489
|
+
};
|
|
27490
|
+
}
|
|
27491
|
+
});
|
|
27492
|
+
|
|
27493
|
+
const _hoisted_1$4 = ["data-id", "data-pid", "data-type", "data-show"];
|
|
27494
|
+
const _hoisted_2$4 = { class: "gap-inner" };
|
|
27495
|
+
const _hoisted_3$4 = ["src"];
|
|
27496
|
+
const _hoisted_4$4 = /*#__PURE__*/vue.createElementVNode("span", { class: "gap-upload-hint" }, "JPEG / PNG / WebP", -1 /* HOISTED */);
|
|
27497
|
+
const _hoisted_5$4 = {
|
|
27498
|
+
key: 2,
|
|
27499
|
+
class: "gap-upload-actions"
|
|
27500
|
+
};
|
|
27501
|
+
const _hoisted_6$4 = ["value", "disabled"];
|
|
27502
|
+
const _hoisted_7$4 = /*#__PURE__*/vue.createElementVNode("option", {
|
|
27503
|
+
disabled: "",
|
|
27504
|
+
value: ""
|
|
27505
|
+
}, "选择风格", -1 /* HOISTED */);
|
|
27506
|
+
const _hoisted_8$1 = ["value"];
|
|
27507
|
+
const _hoisted_9$1 = {
|
|
27508
|
+
key: 0,
|
|
27509
|
+
class: "gap-status"
|
|
27510
|
+
};
|
|
27511
|
+
const _hoisted_10$1 = /*#__PURE__*/vue.createElementVNode("div", { class: "gap-spinner" }, null, -1 /* HOISTED */);
|
|
27512
|
+
const _hoisted_11$1 = {
|
|
27513
|
+
key: 1,
|
|
27514
|
+
class: "gap-error"
|
|
27515
|
+
};
|
|
27516
|
+
const _hoisted_12$1 = ["disabled"];
|
|
27517
|
+
const _hoisted_13$1 = {
|
|
27518
|
+
key: 2,
|
|
27519
|
+
class: "gap-quota"
|
|
27520
|
+
};
|
|
27521
|
+
const _hoisted_14$1 = {
|
|
27522
|
+
key: 3,
|
|
27523
|
+
class: "gap-editor-badge"
|
|
27524
|
+
};
|
|
27525
|
+
const _hoisted_15$1 = {
|
|
27526
|
+
key: 1,
|
|
27527
|
+
class: "gap-result"
|
|
27528
|
+
};
|
|
27529
|
+
const _hoisted_16$1 = ["src"];
|
|
27530
|
+
const _hoisted_17$1 = { class: "gap-result-actions" };
|
|
27531
|
+
const _hoisted_18$1 = ["disabled"];
|
|
27532
|
+
const _hoisted_19$1 = {
|
|
27533
|
+
key: 0,
|
|
27534
|
+
class: "gap-toast"
|
|
27535
|
+
};
|
|
27536
|
+
|
|
27537
|
+
function render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
27538
|
+
return (vue.openBlock(), vue.createElementBlock("div", {
|
|
27539
|
+
class: vue.normalizeClass(["ele-guest-ai-wedding-poster eles", { 'is-compact': !!_ctx.config.appearance.compact }]),
|
|
27540
|
+
"data-id": _ctx.element.id,
|
|
27541
|
+
"data-pid": _ctx.element.pid,
|
|
27542
|
+
"data-type": _ctx.element.type,
|
|
27543
|
+
"data-show": _ctx.element.properties && _ctx.element.properties.visible,
|
|
27544
|
+
style: vue.normalizeStyle(_ctx.rootStyle)
|
|
27545
|
+
}, [
|
|
27546
|
+
vue.createElementVNode("div", _hoisted_2$4, [
|
|
27547
|
+
(_ctx.uiState !== 'completed')
|
|
27548
|
+
? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
|
|
27549
|
+
vue.createCommentVNode(" 1. 上传宾客照片 "),
|
|
27550
|
+
vue.createElementVNode("div", {
|
|
27551
|
+
class: vue.normalizeClass(["gap-upload", { 'is-disabled': _ctx.isEditing || _ctx.uiState === 'uploading' }]),
|
|
27552
|
+
onClick: _cache[3] || (_cache[3] = vue.withModifiers((...args) => (_ctx.onUploadAreaClick && _ctx.onUploadAreaClick(...args)), ["stop"]))
|
|
27553
|
+
}, [
|
|
27554
|
+
(_ctx.guestPreviewUrl)
|
|
27555
|
+
? (vue.openBlock(), vue.createElementBlock("img", {
|
|
27556
|
+
key: 0,
|
|
27557
|
+
class: "gap-upload-preview",
|
|
27558
|
+
src: _ctx.guestPreviewUrl,
|
|
27559
|
+
alt: ""
|
|
27560
|
+
}, null, 8 /* PROPS */, _hoisted_3$4))
|
|
27561
|
+
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
27562
|
+
vue.createElementVNode("span", null, vue.toDisplayString(_ctx.uiState === 'uploading' ? '上传中…' : '上传你的照片'), 1 /* TEXT */),
|
|
27563
|
+
_hoisted_4$4
|
|
27564
|
+
], 64 /* STABLE_FRAGMENT */)),
|
|
27565
|
+
(_ctx.guestPreviewUrl && !_ctx.isEditing)
|
|
27566
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$4, [
|
|
27567
|
+
vue.createElementVNode("button", {
|
|
27568
|
+
type: "button",
|
|
27569
|
+
class: "gap-link-btn",
|
|
27570
|
+
onClick: _cache[0] || (_cache[0] = vue.withModifiers((...args) => (_ctx.triggerFilePick && _ctx.triggerFilePick(...args)), ["stop"]))
|
|
27571
|
+
}, "替换"),
|
|
27572
|
+
vue.createElementVNode("button", {
|
|
27573
|
+
type: "button",
|
|
27574
|
+
class: "gap-link-btn",
|
|
27575
|
+
onClick: _cache[1] || (_cache[1] = vue.withModifiers((...args) => (_ctx.clearPhoto && _ctx.clearPhoto(...args)), ["stop"]))
|
|
27576
|
+
}, "删除")
|
|
27577
|
+
]))
|
|
27578
|
+
: vue.createCommentVNode("v-if", true),
|
|
27579
|
+
vue.createElementVNode("input", {
|
|
27580
|
+
ref: "fileInputRef",
|
|
27581
|
+
type: "file",
|
|
27582
|
+
accept: "image/jpeg,image/png,image/webp",
|
|
27583
|
+
onChange: _cache[2] || (_cache[2] = (...args) => (_ctx.onFileChange && _ctx.onFileChange(...args)))
|
|
27584
|
+
}, null, 544 /* NEED_HYDRATION, NEED_PATCH */)
|
|
27585
|
+
], 2 /* CLASS */),
|
|
27586
|
+
vue.createCommentVNode(" 2. 风格 select "),
|
|
27587
|
+
vue.createElementVNode("select", {
|
|
27588
|
+
class: "gap-select",
|
|
27589
|
+
value: _ctx.selectedStyleId,
|
|
27590
|
+
disabled: _ctx.isEditing,
|
|
27591
|
+
onClick: _cache[4] || (_cache[4] = vue.withModifiers(() => {}, ["stop"])),
|
|
27592
|
+
onChange: _cache[5] || (_cache[5] = (...args) => (_ctx.onStyleChange && _ctx.onStyleChange(...args)))
|
|
27593
|
+
}, [
|
|
27594
|
+
_hoisted_7$4,
|
|
27595
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.enabledStyles, (style) => {
|
|
27596
|
+
return (vue.openBlock(), vue.createElementBlock("option", {
|
|
27597
|
+
key: style.id,
|
|
27598
|
+
value: style.id
|
|
27599
|
+
}, vue.toDisplayString(style.name), 9 /* TEXT, PROPS */, _hoisted_8$1))
|
|
27600
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
27601
|
+
], 40 /* PROPS, NEED_HYDRATION */, _hoisted_6$4),
|
|
27602
|
+
(_ctx.uiState === 'queued' || _ctx.uiState === 'generating' || _ctx.uiState === 'submitting')
|
|
27603
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$1, [
|
|
27604
|
+
_hoisted_10$1,
|
|
27605
|
+
vue.createElementVNode("div", null, vue.toDisplayString(_ctx.statusHint), 1 /* TEXT */)
|
|
27606
|
+
]))
|
|
27607
|
+
: vue.createCommentVNode("v-if", true),
|
|
27608
|
+
(_ctx.errorMessage)
|
|
27609
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_11$1, vue.toDisplayString(_ctx.errorMessage), 1 /* TEXT */))
|
|
27610
|
+
: vue.createCommentVNode("v-if", true),
|
|
27611
|
+
vue.createCommentVNode(" 3. 提交 "),
|
|
27612
|
+
vue.createElementVNode("button", {
|
|
27613
|
+
type: "button",
|
|
27614
|
+
class: vue.normalizeClass(["gap-cta", _ctx.config.appearance.buttonStyle === 'solid' ? 'is-solid' : 'is-gradient']),
|
|
27615
|
+
disabled: !_ctx.canSubmit,
|
|
27616
|
+
onClick: _cache[6] || (_cache[6] = vue.withModifiers((...args) => (_ctx.onGenerateClick && _ctx.onGenerateClick(...args)), ["stop"]))
|
|
27617
|
+
}, vue.toDisplayString(_ctx.config.buttonText || '生成专属邀请函'), 11 /* TEXT, CLASS, PROPS */, _hoisted_12$1),
|
|
27618
|
+
(_ctx.quotaText)
|
|
27619
|
+
? (vue.openBlock(), vue.createElementBlock("p", _hoisted_13$1, vue.toDisplayString(_ctx.quotaText), 1 /* TEXT */))
|
|
27620
|
+
: vue.createCommentVNode("v-if", true),
|
|
27621
|
+
(_ctx.isEditing)
|
|
27622
|
+
? (vue.openBlock(), vue.createElementBlock("p", _hoisted_14$1, "编辑器预览 · 邀请函图请在属性面板配置"))
|
|
27623
|
+
: vue.createCommentVNode("v-if", true)
|
|
27624
|
+
], 64 /* STABLE_FRAGMENT */))
|
|
27625
|
+
: (vue.openBlock(), vue.createElementBlock("div", _hoisted_15$1, [
|
|
27626
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.resultList, (item) => {
|
|
27627
|
+
return (vue.openBlock(), vue.createElementBlock("img", {
|
|
27628
|
+
key: item.id,
|
|
27629
|
+
src: item.imageUrl,
|
|
27630
|
+
alt: "婚礼邀请函"
|
|
27631
|
+
}, null, 8 /* PROPS */, _hoisted_16$1))
|
|
27632
|
+
}), 128 /* KEYED_FRAGMENT */)),
|
|
27633
|
+
vue.createElementVNode("div", _hoisted_17$1, [
|
|
27634
|
+
(_ctx.config.result.allowRegenerate)
|
|
27635
|
+
? (vue.openBlock(), vue.createElementBlock("button", {
|
|
27636
|
+
key: 0,
|
|
27637
|
+
type: "button",
|
|
27638
|
+
class: "gap-secondary-btn",
|
|
27639
|
+
disabled: _ctx.regenerateLeft <= 0 || _ctx.isEditing,
|
|
27640
|
+
onClick: _cache[7] || (_cache[7] = vue.withModifiers((...args) => (_ctx.onRegenerate && _ctx.onRegenerate(...args)), ["stop"]))
|
|
27641
|
+
}, " 重新生成 ", 8 /* PROPS */, _hoisted_18$1))
|
|
27642
|
+
: vue.createCommentVNode("v-if", true),
|
|
27643
|
+
(_ctx.config.result.allowDownload)
|
|
27644
|
+
? (vue.openBlock(), vue.createElementBlock("button", {
|
|
27645
|
+
key: 1,
|
|
27646
|
+
type: "button",
|
|
27647
|
+
class: "gap-secondary-btn",
|
|
27648
|
+
onClick: _cache[8] || (_cache[8] = vue.withModifiers((...args) => (_ctx.onDownload && _ctx.onDownload(...args)), ["stop"]))
|
|
27649
|
+
}, " 下载 "))
|
|
27650
|
+
: vue.createCommentVNode("v-if", true)
|
|
27651
|
+
])
|
|
27652
|
+
]))
|
|
27653
|
+
]),
|
|
27654
|
+
(_ctx.toastText)
|
|
27655
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_19$1, vue.toDisplayString(_ctx.toastText), 1 /* TEXT */))
|
|
27656
|
+
: vue.createCommentVNode("v-if", true)
|
|
27657
|
+
], 14 /* CLASS, STYLE, PROPS */, _hoisted_1$4))
|
|
27658
|
+
}
|
|
27659
|
+
|
|
27660
|
+
script$4.render = render$4;
|
|
27661
|
+
script$4.__file = "src/components/UniGuestAiWeddingPoster/UniGuestAiWeddingPoster.vue";
|
|
26352
27662
|
|
|
26353
27663
|
/**
|
|
26354
27664
|
* 应用文字动画 - 用于 WorkRender/H5 等场景
|
|
@@ -26633,27 +27943,28 @@
|
|
|
26633
27943
|
var script$3 = vue.defineComponent({
|
|
26634
27944
|
name: 'WorkRenderH5',
|
|
26635
27945
|
components: {
|
|
26636
|
-
UniMusic: script$
|
|
26637
|
-
UniText: script$
|
|
26638
|
-
UniImage: script$
|
|
26639
|
-
UniShape: script$
|
|
26640
|
-
UniCalendar: script$
|
|
26641
|
-
UniMap: script$
|
|
26642
|
-
UniCountdown: script$
|
|
26643
|
-
UniEffect: script$
|
|
26644
|
-
UniVideo: script$
|
|
26645
|
-
UniCall: script$
|
|
26646
|
-
UniFormInput: script$
|
|
26647
|
-
UniFormSubmit: script$
|
|
26648
|
-
UniFormSelect: script$
|
|
26649
|
-
UniFormMultiple: script$
|
|
26650
|
-
UniFormSingle: script$
|
|
26651
|
-
UniFormContainer: script$
|
|
26652
|
-
UniBarrage: script$
|
|
26653
|
-
UniMenu: script$
|
|
26654
|
-
UniLottie: script$
|
|
26655
|
-
UniButton: script$
|
|
26656
|
-
UniWatermark: script$
|
|
27946
|
+
UniMusic: script$q,
|
|
27947
|
+
UniText: script$t,
|
|
27948
|
+
UniImage: script$s,
|
|
27949
|
+
UniShape: script$r,
|
|
27950
|
+
UniCalendar: script$o,
|
|
27951
|
+
UniMap: script$m,
|
|
27952
|
+
UniCountdown: script$n,
|
|
27953
|
+
UniEffect: script$k,
|
|
27954
|
+
UniVideo: script$p,
|
|
27955
|
+
UniCall: script$l,
|
|
27956
|
+
UniFormInput: script$g,
|
|
27957
|
+
UniFormSubmit: script$f,
|
|
27958
|
+
UniFormSelect: script$e,
|
|
27959
|
+
UniFormMultiple: script$c,
|
|
27960
|
+
UniFormSingle: script$d,
|
|
27961
|
+
UniFormContainer: script$b,
|
|
27962
|
+
UniBarrage: script$h,
|
|
27963
|
+
UniMenu: script$6,
|
|
27964
|
+
UniLottie: script$j,
|
|
27965
|
+
UniButton: script$i,
|
|
27966
|
+
UniWatermark: script$5,
|
|
27967
|
+
UniGuestAiWeddingPoster: script$4,
|
|
26657
27968
|
},
|
|
26658
27969
|
props: {
|
|
26659
27970
|
workData: {
|
|
@@ -26679,8 +27990,8 @@
|
|
|
26679
27990
|
const personalData = vue.computed(() => workData.value.personalData || {});
|
|
26680
27991
|
const global = vue.computed(() => workData.value.global || {});
|
|
26681
27992
|
const pages = vue.computed(() => workData.value.pages || []);
|
|
26682
|
-
/**
|
|
26683
|
-
const shouldShowWatermark = vue.computed(() => Number(global.value.
|
|
27993
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
27994
|
+
const shouldShowWatermark = vue.computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
26684
27995
|
// 添加提示框相关状态
|
|
26685
27996
|
const showMessage = vue.ref(false);
|
|
26686
27997
|
const messageText = vue.ref('');
|
|
@@ -26881,7 +28192,8 @@
|
|
|
26881
28192
|
};
|
|
26882
28193
|
// 获取组件名称
|
|
26883
28194
|
const getComponentName = (type) => {
|
|
26884
|
-
|
|
28195
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
28196
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
26885
28197
|
};
|
|
26886
28198
|
return {
|
|
26887
28199
|
personalData,
|
|
@@ -27002,9 +28314,10 @@
|
|
|
27002
28314
|
global: _ctx.global,
|
|
27003
28315
|
env: _ctx.env,
|
|
27004
28316
|
personalData: _ctx.personalData,
|
|
28317
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27005
28318
|
onTrigger: _ctx.handleElementTrigger,
|
|
27006
28319
|
onShowMessage: _ctx.handleShowMessage
|
|
27007
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28320
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27008
28321
|
: vue.createCommentVNode("v-if", true)
|
|
27009
28322
|
], 64 /* STABLE_FRAGMENT */))
|
|
27010
28323
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27055,27 +28368,28 @@
|
|
|
27055
28368
|
var script$2 = vue.defineComponent({
|
|
27056
28369
|
name: 'WorkRenderLong',
|
|
27057
28370
|
components: {
|
|
27058
|
-
UniMusic: script$
|
|
27059
|
-
UniText: script$
|
|
27060
|
-
UniImage: script$
|
|
27061
|
-
UniShape: script$
|
|
27062
|
-
UniCalendar: script$
|
|
27063
|
-
UniMap: script$
|
|
27064
|
-
UniCountdown: script$
|
|
27065
|
-
UniEffect: script$
|
|
27066
|
-
UniVideo: script$
|
|
27067
|
-
UniCall: script$
|
|
27068
|
-
UniFormInput: script$
|
|
27069
|
-
UniFormSubmit: script$
|
|
27070
|
-
UniFormSelect: script$
|
|
27071
|
-
UniFormMultiple: script$
|
|
27072
|
-
UniFormSingle: script$
|
|
27073
|
-
UniFormContainer: script$
|
|
27074
|
-
UniBarrage: script$
|
|
27075
|
-
UniMenu: script$
|
|
27076
|
-
UniLottie: script$
|
|
27077
|
-
UniButton: script$
|
|
27078
|
-
UniWatermark: script$
|
|
28371
|
+
UniMusic: script$q,
|
|
28372
|
+
UniText: script$t,
|
|
28373
|
+
UniImage: script$s,
|
|
28374
|
+
UniShape: script$r,
|
|
28375
|
+
UniCalendar: script$o,
|
|
28376
|
+
UniMap: script$m,
|
|
28377
|
+
UniCountdown: script$n,
|
|
28378
|
+
UniEffect: script$k,
|
|
28379
|
+
UniVideo: script$p,
|
|
28380
|
+
UniCall: script$l,
|
|
28381
|
+
UniFormInput: script$g,
|
|
28382
|
+
UniFormSubmit: script$f,
|
|
28383
|
+
UniFormSelect: script$e,
|
|
28384
|
+
UniFormMultiple: script$c,
|
|
28385
|
+
UniFormSingle: script$d,
|
|
28386
|
+
UniFormContainer: script$b,
|
|
28387
|
+
UniBarrage: script$h,
|
|
28388
|
+
UniMenu: script$6,
|
|
28389
|
+
UniLottie: script$j,
|
|
28390
|
+
UniButton: script$i,
|
|
28391
|
+
UniWatermark: script$5,
|
|
28392
|
+
UniGuestAiWeddingPoster: script$4,
|
|
27079
28393
|
},
|
|
27080
28394
|
props: {
|
|
27081
28395
|
workData: {
|
|
@@ -27097,8 +28411,8 @@
|
|
|
27097
28411
|
const personalData = vue.computed(() => workData.value.personalData || {});
|
|
27098
28412
|
const global = vue.computed(() => workData.value.global || {});
|
|
27099
28413
|
const pages = vue.computed(() => workData.value.pages || []);
|
|
27100
|
-
/**
|
|
27101
|
-
const shouldShowWatermark = vue.computed(() => Number(global.value.
|
|
28414
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
28415
|
+
const shouldShowWatermark = vue.computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
27102
28416
|
const page = vue.computed(() => pages.value[0] || {});
|
|
27103
28417
|
const container = vue.ref(null);
|
|
27104
28418
|
const content = vue.ref(null);
|
|
@@ -27350,7 +28664,8 @@
|
|
|
27350
28664
|
console.log('Element triggered:', payload);
|
|
27351
28665
|
};
|
|
27352
28666
|
const getComponentName = (type) => {
|
|
27353
|
-
|
|
28667
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
28668
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
27354
28669
|
};
|
|
27355
28670
|
const handleSubmit = async (formData) => {
|
|
27356
28671
|
console.log('Form submitted:', formData);
|
|
@@ -27508,9 +28823,10 @@
|
|
|
27508
28823
|
global: _ctx.global,
|
|
27509
28824
|
env: _ctx.env,
|
|
27510
28825
|
personalData: _ctx.personalData,
|
|
28826
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27511
28827
|
onTrigger: _ctx.handleElementTrigger,
|
|
27512
28828
|
onShowMessage: _ctx.handleShowMessage
|
|
27513
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28829
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27514
28830
|
: vue.createCommentVNode("v-if", true)
|
|
27515
28831
|
], 64 /* STABLE_FRAGMENT */))
|
|
27516
28832
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27528,9 +28844,10 @@
|
|
|
27528
28844
|
global: _ctx.global,
|
|
27529
28845
|
env: _ctx.env,
|
|
27530
28846
|
personalData: _ctx.personalData,
|
|
28847
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
27531
28848
|
onTrigger: _ctx.handleElementTrigger,
|
|
27532
28849
|
onShowMessage: _ctx.handleShowMessage
|
|
27533
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
28850
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
27534
28851
|
: vue.createCommentVNode("v-if", true)
|
|
27535
28852
|
], 64 /* STABLE_FRAGMENT */))
|
|
27536
28853
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -27911,28 +29228,29 @@
|
|
|
27911
29228
|
var script = vue.defineComponent({
|
|
27912
29229
|
name: 'WorkRender',
|
|
27913
29230
|
components: {
|
|
27914
|
-
UniMusic: script$
|
|
27915
|
-
UniText: script$
|
|
27916
|
-
UniImage: script$
|
|
27917
|
-
UniShape: script$
|
|
27918
|
-
UniCalendar: script$
|
|
27919
|
-
UniMap: script$
|
|
27920
|
-
UniCountdown: script$
|
|
27921
|
-
UniEffect: script$
|
|
27922
|
-
UniVideo: script$
|
|
27923
|
-
UniCall: script$
|
|
27924
|
-
UniFormInput: script$
|
|
27925
|
-
UniFormSubmit: script$
|
|
27926
|
-
UniFormSelect: script$
|
|
27927
|
-
UniFormMultiple: script$
|
|
27928
|
-
UniFormSingle: script$
|
|
27929
|
-
UniFormContainer: script$
|
|
27930
|
-
UniBarrage: script$
|
|
27931
|
-
UniMenu: script$
|
|
27932
|
-
UniLottie: script$
|
|
27933
|
-
UniButton: script$
|
|
27934
|
-
UniWatermark: script$
|
|
29231
|
+
UniMusic: script$q,
|
|
29232
|
+
UniText: script$t,
|
|
29233
|
+
UniImage: script$s,
|
|
29234
|
+
UniShape: script$r,
|
|
29235
|
+
UniCalendar: script$o,
|
|
29236
|
+
UniMap: script$m,
|
|
29237
|
+
UniCountdown: script$n,
|
|
29238
|
+
UniEffect: script$k,
|
|
29239
|
+
UniVideo: script$p,
|
|
29240
|
+
UniCall: script$l,
|
|
29241
|
+
UniFormInput: script$g,
|
|
29242
|
+
UniFormSubmit: script$f,
|
|
29243
|
+
UniFormSelect: script$e,
|
|
29244
|
+
UniFormMultiple: script$c,
|
|
29245
|
+
UniFormSingle: script$d,
|
|
29246
|
+
UniFormContainer: script$b,
|
|
29247
|
+
UniBarrage: script$h,
|
|
29248
|
+
UniMenu: script$6,
|
|
29249
|
+
UniLottie: script$j,
|
|
29250
|
+
UniButton: script$i,
|
|
29251
|
+
UniWatermark: script$5,
|
|
27935
29252
|
UniInvite: script$1,
|
|
29253
|
+
UniGuestAiWeddingPoster: script$4,
|
|
27936
29254
|
},
|
|
27937
29255
|
props: {
|
|
27938
29256
|
workData: {
|
|
@@ -27970,8 +29288,8 @@
|
|
|
27970
29288
|
}
|
|
27971
29289
|
return null;
|
|
27972
29290
|
});
|
|
27973
|
-
/**
|
|
27974
|
-
const shouldShowWatermark = vue.computed(() => Number(global.value.
|
|
29291
|
+
/** footer_ad !== 0 显示水印;付费去广告后与尾页一起关闭 */
|
|
29292
|
+
const shouldShowWatermark = vue.computed(() => { var _a; return Number((_a = global.value.footer_ad) !== null && _a !== void 0 ? _a : 1) !== 0; });
|
|
27975
29293
|
// 长页模式
|
|
27976
29294
|
const container = vue.ref(null);
|
|
27977
29295
|
const contentRefs = vue.ref({});
|
|
@@ -28235,7 +29553,7 @@
|
|
|
28235
29553
|
}
|
|
28236
29554
|
};
|
|
28237
29555
|
handleTouchMove = (e) => {
|
|
28238
|
-
|
|
29556
|
+
notifyParentScroll();
|
|
28239
29557
|
};
|
|
28240
29558
|
handleTouchEnd = (e) => {
|
|
28241
29559
|
const touchEndY = e.changedTouches[0].clientY;
|
|
@@ -28391,6 +29709,7 @@
|
|
|
28391
29709
|
const pageId = currentPageId.value;
|
|
28392
29710
|
if (!container.value)
|
|
28393
29711
|
return;
|
|
29712
|
+
notifyParentScroll();
|
|
28394
29713
|
const touchY = e.touches[0].clientY;
|
|
28395
29714
|
const deltaY = (touchY - dragStartYs.value[pageId]) * speedFactor;
|
|
28396
29715
|
const now = Date.now();
|
|
@@ -28606,7 +29925,8 @@
|
|
|
28606
29925
|
};
|
|
28607
29926
|
// 获取组件名称
|
|
28608
29927
|
const getComponentName = (type) => {
|
|
28609
|
-
|
|
29928
|
+
const base = String(type || '').replace(/^uni-/, '');
|
|
29929
|
+
return 'Uni' + base.split('-').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
28610
29930
|
};
|
|
28611
29931
|
const contentStyle = vue.computed(() => {
|
|
28612
29932
|
if (global.value.cat === 'long_page') {
|
|
@@ -28698,6 +30018,7 @@
|
|
|
28698
30018
|
return;
|
|
28699
30019
|
if (!container.value)
|
|
28700
30020
|
return;
|
|
30021
|
+
notifyParentScroll();
|
|
28701
30022
|
const pageId = currentPageId.value;
|
|
28702
30023
|
e.preventDefault();
|
|
28703
30024
|
const delta = e.deltaY;
|
|
@@ -28760,6 +30081,17 @@
|
|
|
28760
30081
|
}
|
|
28761
30082
|
};
|
|
28762
30083
|
// === IFRAME 页码/翻页通信 ===
|
|
30084
|
+
let lastScrollNotify = 0;
|
|
30085
|
+
function notifyParentScroll() {
|
|
30086
|
+
const now = Date.now();
|
|
30087
|
+
if (now - lastScrollNotify < 80)
|
|
30088
|
+
return;
|
|
30089
|
+
lastScrollNotify = now;
|
|
30090
|
+
try {
|
|
30091
|
+
window.parent && window.parent.postMessage({ type: 'UNIKA_H5_SCROLL' }, '*');
|
|
30092
|
+
}
|
|
30093
|
+
catch { }
|
|
30094
|
+
}
|
|
28763
30095
|
function postIframePageInfo() {
|
|
28764
30096
|
const curIdx = pages.value.findIndex(p => p.pageId === currentPageId.value);
|
|
28765
30097
|
const total = pages.value.length;
|
|
@@ -28768,6 +30100,7 @@
|
|
|
28768
30100
|
cur: curIdx,
|
|
28769
30101
|
count: total
|
|
28770
30102
|
}, '*');
|
|
30103
|
+
notifyParentScroll();
|
|
28771
30104
|
}
|
|
28772
30105
|
function handleIframePageMessage(event) {
|
|
28773
30106
|
const data = event.data;
|
|
@@ -28804,6 +30137,7 @@
|
|
|
28804
30137
|
});
|
|
28805
30138
|
});
|
|
28806
30139
|
return {
|
|
30140
|
+
optimizeCssImageUrl,
|
|
28807
30141
|
personalData,
|
|
28808
30142
|
global,
|
|
28809
30143
|
inviteRender,
|
|
@@ -28925,7 +30259,7 @@
|
|
|
28925
30259
|
class: "page-bg nobg",
|
|
28926
30260
|
style: vue.normalizeStyle({
|
|
28927
30261
|
backgroundColor: page.bgColor,
|
|
28928
|
-
backgroundImage: page.bgImage
|
|
30262
|
+
backgroundImage: _ctx.env === 'prd' ? _ctx.optimizeCssImageUrl(page.bgImage) : page.bgImage
|
|
28929
30263
|
})
|
|
28930
30264
|
}, null, 4 /* STYLE */)
|
|
28931
30265
|
], 4 /* STYLE */),
|
|
@@ -28943,9 +30277,10 @@
|
|
|
28943
30277
|
global: _ctx.global,
|
|
28944
30278
|
env: _ctx.env,
|
|
28945
30279
|
personalData: _ctx.personalData,
|
|
30280
|
+
"invitation-id": _ctx.global.sceneId || _ctx.global.uuid || '',
|
|
28946
30281
|
onTrigger: _ctx.handleElementTrigger,
|
|
28947
30282
|
onShowMessage: _ctx.handleShowMessage
|
|
28948
|
-
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "onTrigger", "onShowMessage"]))
|
|
30283
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["element", "global", "env", "personalData", "invitation-id", "onTrigger", "onShowMessage"]))
|
|
28949
30284
|
: vue.createCommentVNode("v-if", true)
|
|
28950
30285
|
], 64 /* STABLE_FRAGMENT */))
|
|
28951
30286
|
}), 128 /* KEYED_FRAGMENT */))
|
|
@@ -29000,6 +30335,10 @@
|
|
|
29000
30335
|
app.component(script.name, script);
|
|
29001
30336
|
};
|
|
29002
30337
|
|
|
30338
|
+
script$g.install = (app) => {
|
|
30339
|
+
app.component(script$g.name, script$g);
|
|
30340
|
+
};
|
|
30341
|
+
|
|
29003
30342
|
script$f.install = (app) => {
|
|
29004
30343
|
app.component(script$f.name, script$f);
|
|
29005
30344
|
};
|
|
@@ -29020,38 +30359,38 @@
|
|
|
29020
30359
|
app.component(script$b.name, script$b);
|
|
29021
30360
|
};
|
|
29022
30361
|
|
|
29023
|
-
script$
|
|
29024
|
-
app.component(script$
|
|
30362
|
+
script$6.install = (app) => {
|
|
30363
|
+
app.component(script$6.name, script$6);
|
|
29025
30364
|
};
|
|
29026
30365
|
|
|
29027
|
-
script$
|
|
29028
|
-
app.component(script$
|
|
30366
|
+
script$9.install = (app) => {
|
|
30367
|
+
app.component(script$9.name, script$9);
|
|
29029
30368
|
};
|
|
29030
30369
|
|
|
29031
30370
|
script$8.install = (app) => {
|
|
29032
30371
|
app.component(script$8.name, script$8);
|
|
29033
30372
|
};
|
|
29034
30373
|
|
|
30374
|
+
script$a.install = (app) => {
|
|
30375
|
+
app.component(script$a.name, script$a);
|
|
30376
|
+
};
|
|
30377
|
+
|
|
29035
30378
|
script$7.install = (app) => {
|
|
29036
30379
|
app.component(script$7.name, script$7);
|
|
29037
30380
|
};
|
|
29038
30381
|
|
|
29039
|
-
script$
|
|
29040
|
-
app.component(script$
|
|
30382
|
+
script$5.install = (app) => {
|
|
30383
|
+
app.component(script$5.name, script$5);
|
|
29041
30384
|
};
|
|
29042
30385
|
|
|
29043
|
-
script$
|
|
29044
|
-
app.component(script$
|
|
30386
|
+
script$1.install = (app) => {
|
|
30387
|
+
app.component(script$1.name, script$1);
|
|
29045
30388
|
};
|
|
29046
30389
|
|
|
29047
30390
|
script$4.install = (app) => {
|
|
29048
30391
|
app.component(script$4.name, script$4);
|
|
29049
30392
|
};
|
|
29050
30393
|
|
|
29051
|
-
script$1.install = (app) => {
|
|
29052
|
-
app.component(script$1.name, script$1);
|
|
29053
|
-
};
|
|
29054
|
-
|
|
29055
30394
|
/** 送呈封面模板 — 开发 fallback,生产由 biz-editor-server 提供 */
|
|
29056
30395
|
const INVITE_COVER_TEMPLATES = [
|
|
29057
30396
|
{
|
|
@@ -29741,6 +31080,68 @@
|
|
|
29741
31080
|
}
|
|
29742
31081
|
};
|
|
29743
31082
|
|
|
31083
|
+
function apiBase() {
|
|
31084
|
+
// vue-cli proxy: /api → biz-editor-server
|
|
31085
|
+
return '/api';
|
|
31086
|
+
}
|
|
31087
|
+
async function parseJson(res) {
|
|
31088
|
+
const body = await res.json().catch(() => ({}));
|
|
31089
|
+
if (!res.ok || (body && typeof body.errno === 'number' && body.errno !== 0)) {
|
|
31090
|
+
const err = new Error((body === null || body === void 0 ? void 0 : body.message) || `HTTP ${res.status}`);
|
|
31091
|
+
err.code = String((body === null || body === void 0 ? void 0 : body.errno) || (body === null || body === void 0 ? void 0 : body.errorCode) || res.status);
|
|
31092
|
+
throw err;
|
|
31093
|
+
}
|
|
31094
|
+
return (body === null || body === void 0 ? void 0 : body.data) !== undefined ? body.data : body;
|
|
31095
|
+
}
|
|
31096
|
+
function createHttpGuestPosterService(options) {
|
|
31097
|
+
const base = ((options === null || options === void 0 ? void 0 : options.baseUrl) || apiBase()).replace(/\/$/, '');
|
|
31098
|
+
return {
|
|
31099
|
+
async uploadGuestPhoto(file, _context) {
|
|
31100
|
+
const form = new FormData();
|
|
31101
|
+
form.append('file', file);
|
|
31102
|
+
const res = await fetch(`${base}/ai-guest-poster/upload`, {
|
|
31103
|
+
method: 'POST',
|
|
31104
|
+
body: form,
|
|
31105
|
+
credentials: 'include'
|
|
31106
|
+
});
|
|
31107
|
+
return parseJson(res);
|
|
31108
|
+
},
|
|
31109
|
+
async createPosterJob(request) {
|
|
31110
|
+
const res = await fetch(`${base}/ai-guest-poster/jobs`, {
|
|
31111
|
+
method: 'POST',
|
|
31112
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31113
|
+
credentials: 'include',
|
|
31114
|
+
body: JSON.stringify(request)
|
|
31115
|
+
});
|
|
31116
|
+
return parseJson(res);
|
|
31117
|
+
},
|
|
31118
|
+
async getPosterJob(jobId) {
|
|
31119
|
+
const res = await fetch(`${base}/ai-guest-poster/jobs/${encodeURIComponent(jobId)}`, {
|
|
31120
|
+
credentials: 'include'
|
|
31121
|
+
});
|
|
31122
|
+
return parseJson(res);
|
|
31123
|
+
},
|
|
31124
|
+
async cancelPosterJob(jobId) {
|
|
31125
|
+
await fetch(`${base}/ai-guest-poster/jobs/${encodeURIComponent(jobId)}/cancel`, {
|
|
31126
|
+
method: 'POST',
|
|
31127
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31128
|
+
credentials: 'include',
|
|
31129
|
+
body: '{}'
|
|
31130
|
+
});
|
|
31131
|
+
},
|
|
31132
|
+
async getQuota(invitationId) {
|
|
31133
|
+
const q = new URLSearchParams({
|
|
31134
|
+
sceneId: invitationId || '',
|
|
31135
|
+
invitationId: invitationId || ''
|
|
31136
|
+
});
|
|
31137
|
+
const res = await fetch(`${base}/ai-guest-poster/config?${q}`, {
|
|
31138
|
+
credentials: 'include'
|
|
31139
|
+
});
|
|
31140
|
+
return parseJson(res);
|
|
31141
|
+
}
|
|
31142
|
+
};
|
|
31143
|
+
}
|
|
31144
|
+
|
|
29744
31145
|
/** 送呈快捷短语 — 开发/编辑器 fallback;生产环境由 biz-editor-server API 提供 */
|
|
29745
31146
|
const INVITE_QUICK_PHRASES = [
|
|
29746
31147
|
'邀请您一道分享我们的喜悦',
|
|
@@ -29770,6 +31171,7 @@
|
|
|
29770
31171
|
}
|
|
29771
31172
|
|
|
29772
31173
|
const components = [
|
|
31174
|
+
script$t,
|
|
29773
31175
|
script$s,
|
|
29774
31176
|
script$r,
|
|
29775
31177
|
script$q,
|
|
@@ -29782,23 +31184,23 @@
|
|
|
29782
31184
|
script$j,
|
|
29783
31185
|
script$i,
|
|
29784
31186
|
script$h,
|
|
29785
|
-
script$g,
|
|
29786
31187
|
script$3,
|
|
29787
31188
|
script$2,
|
|
29788
31189
|
script,
|
|
31190
|
+
script$g,
|
|
29789
31191
|
script$f,
|
|
29790
31192
|
script$e,
|
|
29791
31193
|
script$d,
|
|
29792
31194
|
script$c,
|
|
29793
31195
|
script$b,
|
|
29794
|
-
script$
|
|
29795
|
-
script$
|
|
31196
|
+
script$6,
|
|
31197
|
+
script$9,
|
|
29796
31198
|
script$8,
|
|
31199
|
+
script$a,
|
|
29797
31200
|
script$7,
|
|
29798
|
-
script$
|
|
29799
|
-
script$
|
|
29800
|
-
script$4
|
|
29801
|
-
script$1
|
|
31201
|
+
script$5,
|
|
31202
|
+
script$1,
|
|
31203
|
+
script$4
|
|
29802
31204
|
];
|
|
29803
31205
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
29804
31206
|
const install = (app) => {
|
|
@@ -29810,34 +31212,39 @@
|
|
|
29810
31212
|
install
|
|
29811
31213
|
};
|
|
29812
31214
|
|
|
31215
|
+
exports.GUEST_AI_WEDDING_POSTER_TYPE = GUEST_AI_WEDDING_POSTER_TYPE;
|
|
31216
|
+
exports.GUEST_AI_WEDDING_POSTER_VERSION = GUEST_AI_WEDDING_POSTER_VERSION;
|
|
31217
|
+
exports.GUEST_POSTER_SERVICE_KEY = GUEST_POSTER_SERVICE_KEY;
|
|
31218
|
+
exports.GuestAIWeddingPoster = script$4;
|
|
29813
31219
|
exports.INVITE_COVER_TEMPLATES = INVITE_COVER_TEMPLATES;
|
|
29814
31220
|
exports.INVITE_QUICK_PHRASES = INVITE_QUICK_PHRASES;
|
|
29815
|
-
exports.UniBarrage = script$
|
|
29816
|
-
exports.UniButton = script$
|
|
29817
|
-
exports.UniCalendar = script$
|
|
29818
|
-
exports.UniCall = script$
|
|
29819
|
-
exports.UniCountdown = script$
|
|
29820
|
-
exports.UniEffect = script$
|
|
29821
|
-
exports.UniFormContainer = script$
|
|
29822
|
-
exports.UniFormInput = script$
|
|
29823
|
-
exports.UniFormMultiple = script$
|
|
29824
|
-
exports.UniFormSelect = script$
|
|
29825
|
-
exports.UniFormSingle = script$
|
|
29826
|
-
exports.UniFormSubmit = script$
|
|
29827
|
-
exports.
|
|
31221
|
+
exports.UniBarrage = script$h;
|
|
31222
|
+
exports.UniButton = script$i;
|
|
31223
|
+
exports.UniCalendar = script$o;
|
|
31224
|
+
exports.UniCall = script$l;
|
|
31225
|
+
exports.UniCountdown = script$n;
|
|
31226
|
+
exports.UniEffect = script$k;
|
|
31227
|
+
exports.UniFormContainer = script$b;
|
|
31228
|
+
exports.UniFormInput = script$g;
|
|
31229
|
+
exports.UniFormMultiple = script$c;
|
|
31230
|
+
exports.UniFormSelect = script$e;
|
|
31231
|
+
exports.UniFormSingle = script$d;
|
|
31232
|
+
exports.UniFormSubmit = script$f;
|
|
31233
|
+
exports.UniGuestAiWeddingPoster = script$4;
|
|
31234
|
+
exports.UniImage = script$s;
|
|
29828
31235
|
exports.UniInvite = script$1;
|
|
29829
|
-
exports.UniLottie = script$
|
|
29830
|
-
exports.UniMap = script$
|
|
29831
|
-
exports.UniMenu = script$
|
|
29832
|
-
exports.UniMenuMap = script$
|
|
29833
|
-
exports.UniMenuReceipt = script$
|
|
29834
|
-
exports.UniMenuTel = script$
|
|
29835
|
-
exports.UniMenuVideo = script$
|
|
29836
|
-
exports.UniMusic = script$
|
|
29837
|
-
exports.UniShape = script$
|
|
29838
|
-
exports.UniText = script$
|
|
29839
|
-
exports.UniVideo = script$
|
|
29840
|
-
exports.UniWatermark = script$
|
|
31236
|
+
exports.UniLottie = script$j;
|
|
31237
|
+
exports.UniMap = script$m;
|
|
31238
|
+
exports.UniMenu = script$6;
|
|
31239
|
+
exports.UniMenuMap = script$7;
|
|
31240
|
+
exports.UniMenuReceipt = script$a;
|
|
31241
|
+
exports.UniMenuTel = script$8;
|
|
31242
|
+
exports.UniMenuVideo = script$9;
|
|
31243
|
+
exports.UniMusic = script$q;
|
|
31244
|
+
exports.UniShape = script$r;
|
|
31245
|
+
exports.UniText = script$t;
|
|
31246
|
+
exports.UniVideo = script$p;
|
|
31247
|
+
exports.UniWatermark = script$5;
|
|
29841
31248
|
exports.WorkRender = script;
|
|
29842
31249
|
exports.WorkRenderH5 = script$3;
|
|
29843
31250
|
exports.WorkRenderLong = script$2;
|
|
@@ -29849,23 +31256,34 @@
|
|
|
29849
31256
|
exports.calendarDefaultProps = calendarDefaultProps;
|
|
29850
31257
|
exports.callDefaultProps = callDefaultProps;
|
|
29851
31258
|
exports.countdownDefaultProps = countdownDefaultProps;
|
|
31259
|
+
exports.createHttpGuestPosterService = createHttpGuestPosterService;
|
|
31260
|
+
exports.createMockGuestPosterService = createMockGuestPosterService;
|
|
29852
31261
|
exports["default"] = index;
|
|
31262
|
+
exports.defaultGuestAIWeddingPosterConfig = defaultGuestAIWeddingPosterConfig;
|
|
29853
31263
|
exports.effectDefaultProps = effectDefaultProps;
|
|
29854
31264
|
exports.formInputDefaultProps = formInputDefaultProps;
|
|
29855
31265
|
exports.formSubmitDefaultProps = formSubmitDefaultProps;
|
|
29856
31266
|
exports.getInviteDismissDelay = getInviteDismissDelay;
|
|
29857
31267
|
exports.getInviteRenderFromGlobal = getInviteRenderFromGlobal;
|
|
29858
31268
|
exports.getInviteTemplateById = getInviteTemplateById;
|
|
31269
|
+
exports.guestAIWeddingPosterDefaultProps = guestAIWeddingPosterDefaultProps;
|
|
31270
|
+
exports.guestAIWeddingPosterInspectorConfig = guestAIWeddingPosterInspectorConfig;
|
|
31271
|
+
exports.guestAIWeddingPosterSchema = guestAIWeddingPosterSchema;
|
|
29859
31272
|
exports.install = install;
|
|
29860
31273
|
exports.inviteDefaultProps = inviteDefaultProps;
|
|
29861
31274
|
exports.isValidInviteItem = isValidInviteItem;
|
|
29862
31275
|
exports.lottieDefaultProps = lottieDefaultProps;
|
|
29863
31276
|
exports.mapDefaultProps = mapDefaultProps;
|
|
31277
|
+
exports.mergeGuestAIWeddingPosterConfig = mergeGuestAIWeddingPosterConfig;
|
|
31278
|
+
exports.migrateGuestAIWeddingPosterConfig = migrateGuestAIWeddingPosterConfig;
|
|
29864
31279
|
exports.musicDefaultProps = musicDefaultProps;
|
|
31280
|
+
exports.resolveGuestAIWeddingPosterConfig = resolveGuestAIWeddingPosterConfig;
|
|
31281
|
+
exports.resolveGuestPosterService = resolveGuestPosterService;
|
|
29865
31282
|
exports.resolveInviteRenderData = resolveInviteRenderData;
|
|
29866
31283
|
exports.restoreTextAnimation = restoreTextAnimation;
|
|
29867
31284
|
exports.shapeDefaultProps = shapeDefaultProps;
|
|
29868
31285
|
exports.useInviteManager = useInviteManager;
|
|
31286
|
+
exports.validateGuestAIWeddingPosterConfig = validateGuestAIWeddingPosterConfig;
|
|
29869
31287
|
exports.videoDefaultProps = videoDefaultProps;
|
|
29870
31288
|
|
|
29871
31289
|
Object.defineProperty(exports, '__esModule', { value: true });
|