@polyv/product-ui 1.0.0-rc-20250612.3 → 1.1.0-rc-20250703.1

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.
Files changed (66) hide show
  1. package/address-edit.cjs.js +2 -2
  2. package/address-edit.es.js +22 -9
  3. package/address-edit.umd.js +2 -2
  4. package/address-item.cjs.js +2 -2
  5. package/address-item.es.js +12 -12
  6. package/address-item.umd.js +2 -2
  7. package/address-list.cjs.js +2 -2
  8. package/address-list.es.js +30 -18
  9. package/address-list.umd.js +3 -3
  10. package/big-card-popup.cjs.js +9 -0
  11. package/big-card-popup.es.d.ts +3 -0
  12. package/big-card-popup.es.js +4402 -0
  13. package/big-card-popup.umd.js +9 -0
  14. package/index.cjs.js +3 -3
  15. package/index.es.js +1438 -708
  16. package/index.umd.js +3 -3
  17. package/mobile-product-pendant.cjs.js +3 -3
  18. package/mobile-product-pendant.es.js +45 -35
  19. package/mobile-product-pendant.umd.js +3 -3
  20. package/order-confirm.cjs.js +2 -2
  21. package/order-confirm.es.js +30 -18
  22. package/order-confirm.umd.js +2 -2
  23. package/order-detail.cjs.js +2 -2
  24. package/order-detail.es.js +30 -18
  25. package/order-detail.umd.js +2 -2
  26. package/order-item.cjs.js +2 -2
  27. package/order-item.es.js +21 -9
  28. package/order-item.umd.js +2 -2
  29. package/order-list-popup.cjs.js +3 -3
  30. package/order-list-popup.es.js +40 -19
  31. package/order-list-popup.umd.js +2 -2
  32. package/order-list.cjs.js +2 -2
  33. package/order-list.es.js +21 -9
  34. package/order-list.umd.js +2 -2
  35. package/order-popup.cjs.js +2 -2
  36. package/order-popup.es.js +40 -19
  37. package/order-popup.umd.js +2 -2
  38. package/package.json +2 -1
  39. package/pc-product-pendant.cjs.js +3 -3
  40. package/pc-product-pendant.es.js +21 -9
  41. package/pc-product-pendant.umd.js +3 -3
  42. package/product-button.cjs.js +3 -3
  43. package/product-button.es.js +298 -261
  44. package/product-button.umd.js +3 -3
  45. package/product-detail-popup.cjs.js +3 -3
  46. package/product-detail-popup.es.js +265 -203
  47. package/product-detail-popup.umd.js +3 -3
  48. package/product-detail.cjs.js +3 -3
  49. package/product-detail.es.js +337 -283
  50. package/product-detail.umd.js +3 -3
  51. package/product-iframe-link-popup.cjs.js +2 -2
  52. package/product-iframe-link-popup.es.js +13 -4
  53. package/product-iframe-link-popup.umd.js +2 -2
  54. package/product-item.cjs.js +3 -3
  55. package/product-item.es.js +419 -222
  56. package/product-item.umd.js +3 -3
  57. package/product-list-popup.cjs.js +3 -3
  58. package/product-list-popup.es.js +445 -313
  59. package/product-list-popup.umd.js +3 -3
  60. package/product-list.cjs.js +3 -3
  61. package/product-list.es.js +436 -312
  62. package/product-list.umd.js +3 -3
  63. package/small-card.cjs.js +8 -0
  64. package/small-card.es.d.ts +3 -0
  65. package/small-card.es.js +4463 -0
  66. package/small-card.umd.js +9 -0
@@ -1,4 +1,4 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var t=document.createElement("style");t.appendChild(document.createTextNode("@font-face{font-family:D-DIN-PRO-Regular;src:url(https://s4.videocc.net/font/D-DIN-PRO-400-Regular.otf)}@font-face{font-family:D-DIN-PRO-Medium;src:url(https://s4.videocc.net/font/D-DIN-PRO-500-Medium.otf)}@font-face{font-family:D-DIN-PRO-Bold;src:url(https://s4.videocc.net/font/D-DIN-PRO-700-Bold.otf)}.plv-font-din-pro-regular{font-family:D-DIN-PRO-Regular,sans-serif}.plv-font-din-pro-medium{font-family:D-DIN-PRO-Medium,sans-serif}.plv-font-din-pro-bold{font-family:D-DIN-PRO-Bold,sans-serif}.plv-product-button{position:relative}.plv-product-button__render{position:relative;z-index:10}.plv-product-button__inner{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;cursor:pointer}")),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}}();
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(".plv-product-button{position:relative}.plv-product-button__render{position:relative;z-index:10}.plv-product-button__inner{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;cursor:pointer}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defProps = Object.defineProperties;
4
4
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -88,6 +88,229 @@ function concat(i2, r2, t2) {
88
88
  let e = n2.search || "";
89
89
  return e && "&" !== e.slice(-1) && (e += "&"), e += r2, n2.search = e, joinURL(n2);
90
90
  }
91
+ function canMatchKeywords(e, t2) {
92
+ e = e.toLowerCase();
93
+ const n2 = /[/\s;_-]/, s2 = /[/\s;_-]/;
94
+ return t2.some((t3) => {
95
+ const o2 = e.indexOf(t3.toLowerCase());
96
+ if (-1 !== o2 && (n2.test(e[o2 - 1]) || 0 === o2) && (s2.test(e[o2 + t3.length]) || o2 + t3.length >= e.length)) return true;
97
+ });
98
+ }
99
+ function canMatchModelRule(e, t2) {
100
+ return !!/;\s*([^;)]*?)(?:\s+Build\/[^;)]+)?(?:;(?:\s*wv)?)?\)/.test(e) && t2.test(RegExp.$1);
101
+ }
102
+ function execRules(e, t2) {
103
+ let n2;
104
+ return t2.some((t3) => {
105
+ let s2, o2 = false;
106
+ return t3.regExp ? (o2 = t3.regExp.test(e), o2 && (s2 = RegExp.$1)) : t3.keywords ? o2 = canMatchKeywords(e, t3.keywords) : t3.modelRegExp && (o2 = canMatchModelRule(e, t3.modelRegExp)), o2 && (n2 = { name: t3.name, version: s2 }), o2;
107
+ }), n2;
108
+ }
109
+ const osRules = [{ name: "windows", regExp: /\bWindows\s?NT\s?(([\d.]+))\b/ }, { name: "ios", regExp: /\bOS(?:\s([\d_.]+))?\slike\sMac\sOS\sX\b/ }, { name: "macos", regExp: /\bMac\sOS\sX(?:\s([\d_.]+))?/ }, { name: "openharmony", regExp: /\bOpenHarmony\s([\d.]+)\b/ }, { name: "android", regExp: /\bAndroid;?(?:[-/\s]([\d.]+))?(?:\b|_)/ }, { name: "android", regExp: /\bAdr\s([\d.]+)(?:\b|_)/ }];
110
+ function compareVersions(r2, e) {
111
+ const t2 = /(\.0+)+$/, n2 = String(r2).replace(t2, "").split("."), s2 = String(e).replace(t2, "").split("."), i2 = Math.min(n2.length, s2.length);
112
+ for (let r3 = 0; r3 < i2; r3++) {
113
+ const e2 = parseInt(n2[r3]) - parseInt(s2[r3]);
114
+ if (e2) return e2;
115
+ }
116
+ return n2.length - s2.length;
117
+ }
118
+ class Version {
119
+ constructor(r2) {
120
+ this._ver = (r2 || "").replace(/_/g, ".").replace(/\.+$/, ""), Object.freeze(this);
121
+ }
122
+ _compare(r2, e) {
123
+ if (!this._ver || !r2) return false;
124
+ const t2 = Array.isArray(e) ? e : [e], n2 = compareVersions(this._ver, r2);
125
+ return t2.some(function(r3) {
126
+ return n2 * r3 > 0 || 0 === n2 && 0 === r3;
127
+ });
128
+ }
129
+ gt(r2) {
130
+ return this._compare(r2, 1);
131
+ }
132
+ gte(r2) {
133
+ return this._compare(r2, [1, 0]);
134
+ }
135
+ lt(r2) {
136
+ return this._compare(r2, -1);
137
+ }
138
+ lte(r2) {
139
+ return this._compare(r2, [-1, 0]);
140
+ }
141
+ eq(r2) {
142
+ return this._compare(r2, 0);
143
+ }
144
+ toString() {
145
+ return this._ver;
146
+ }
147
+ }
148
+ const propMap$3 = { ios: "isIOS", openharmony: "isOpenHarmony", android: "isAndroid", windows: "isWindows", macos: "isMacOS" };
149
+ function platformToOS(s2) {
150
+ switch (s2) {
151
+ case "Android":
152
+ return "android";
153
+ case "iPad":
154
+ case "iPhone":
155
+ case "iPod":
156
+ return "ios";
157
+ case "MacIntel":
158
+ return "macos";
159
+ case "Win32":
160
+ return "windows";
161
+ }
162
+ }
163
+ class OSInfo {
164
+ constructor(s2, o2) {
165
+ var i2;
166
+ let e;
167
+ if (this.isIOS = false, this.isAndroid = false, this.isHarmonyOS = false, this.isOpenHarmony = false, this.isWindows = false, this.isMacOS = false, null == o2 ? void 0 : o2.platform) {
168
+ const s3 = platformToOS(o2.platform);
169
+ void 0 !== s3 && (e = { name: s3, version: "" });
170
+ }
171
+ let n2 = null !== (i2 = execRules(s2, osRules)) && void 0 !== i2 ? i2 : e;
172
+ n2 ? (e && e.name !== n2.name && (n2 = e), "macos" === n2.name && (null == o2 ? void 0 : o2.maxTouchPoints) && (n2.name = "ios", n2.version = ""), this[propMap$3[n2.name]] = true, this.version = new Version(n2.version), this.isAndroid && /\bHarmonyOS\b/.test(s2) && (this.isHarmonyOS = true), Object.freeze(this)) : this.version = Object.freeze(new Version(""));
173
+ }
174
+ }
175
+ const appleRules = [{ name: "ipad", regExp: /iPad/ }, { name: "ipod", regExp: /iPod/ }, { name: "iphone", regExp: /iPhone/ }];
176
+ const androidRules = [{ name: "huawei", regExp: /\b(?:huawei|honor)/i }, { name: "huawei", keywords: ["ideahub", "figi"] }, { name: "vivo", keywords: ["vivo"] }, { name: "oppo", keywords: ["oppo"] }, { name: "mi", keywords: ["redmi", "hongmi", "shark", "Mi", "MIX", "POCO", "POCOPHONE"] }, { name: "mi", regExp: /\bxiaomi/i }, { name: "samsung", keywords: ["samsung", "galaxy"] }, { name: "oneplus", keywords: ["oneplus", "one"] }, { name: "huawei", modelRegExp: /^Mate\s*\d{2}/i }, { name: "huawei", modelRegExp: /^Nova\s\d$/ }, { name: "huawei", regExp: /\b(?:Hi)?MatePad/i }, { name: "huawei", regExp: /\b(?:Liantong|UNICOMVSENS)VP\d{3}\b/ }, { name: "huawei", regExp: /\bCMDCSP\d{3}\b/ }, { name: "huawei", regExp: /\bTDTECH/i }, { name: "huawei", modelRegExp: /^[A-Z]{3}\d?-W[0-5]9[A-Z]*$/ }, { name: "huawei", modelRegExp: /^[A-Z][A-Za-z]{2,3}-(?:AN|BD|BX|AL|TL)\d{2}[A-Za-z]*$/ }, { name: "huawei", modelRegExp: /^TYH\d+[A-Z]?$/ }, { name: "huawei", modelRegExp: /^H60-L0[12]$/ }, { name: "mi", modelRegExp: /^MI\s?(?:\d|CC|Note|MAX|PLAY|PAD)/i }, { name: "mi", modelRegExp: /^(?:AWM|SKR|SKW|DLT)-/ }, { name: "mi", modelRegExp: /^XIG\d{2}$/ }, { name: "mi", modelRegExp: /^M\d{4}[A-Z]\d{1,2}[A-Z]{1,3}$/ }, { name: "mi", modelRegExp: /^2\d{3}[A-Z0-9]{6}$/ }, { name: "mi", modelRegExp: /^2\d{5}[0-9A-Z]{2}[A-Z]$/ }, { name: "mi", modelRegExp: /^2\d{6}[A-Z]$/ }, { name: "mi", modelRegExp: /^2\d{7}[A-Z]{2,3}$/ }, { name: "samsung", modelRegExp: /^S(?:M|[CGP]H)-[A-Za-z0-9]+$/ }, { name: "samsung", modelRegExp: /^SCV3\d$/ }, { name: "samsung", modelRegExp: /^SC-\d{2}[A-Z]$/ }, { name: "samsung", modelRegExp: /^SH[WV]-/ }, { name: "samsung", modelRegExp: /^GT[-_][A-Z][A-Z0-9]{3,}$/i }, { name: "oppo", modelRegExp: /^(?:CPH|OPD|iPA)\d{4}$/ }, { name: "oppo", modelRegExp: /^OPG\d{2}$/ }, { name: "oppo", modelRegExp: /^A[1-5]0[1-9]OP$/ }, { name: "oneplus", modelRegExp: /^(?:KB|HD|IN|GM|NE|LE|MT)\d{4}$/ }, { name: "vivo", modelRegExp: /^V[12]\d{3}[A-Z]{0,2}$/ }];
177
+ const propMap$2 = { ipod: "isIPod", iphone: "isIPhone", ipad: "isIPad", huawei: "isHuawei", mi: "isMi", oppo: "isOppo", vivo: "isVivo", oneplus: "isOnePlus", samsung: "isSamsung" };
178
+ class BrandInfo {
179
+ constructor(i2, s2) {
180
+ let e;
181
+ if (this.isHuawei = false, this.isMi = false, this.isOppo = false, this.isVivo = false, this.isOnePlus = false, this.isSamsung = false, this.isIPod = false, this.isIPhone = false, this.isIPad = false, this.isMac = false, this.isApple = false, s2.isIOS ? (e = appleRules, this.isApple = true) : s2.isMacOS ? (this.isMac = true, this.isApple = true) : (s2.isAndroid || s2.isOpenHarmony) && (e = androidRules), e) {
182
+ const o2 = execRules(i2, e);
183
+ o2 ? this[propMap$2[o2.name]] = true : s2.isIOS && (this.isIPad = true);
184
+ }
185
+ Object.freeze(this);
186
+ }
187
+ }
188
+ const browserRules = [{ name: "edge", regExp: /\bEdge\/([\d.]+)/ }, { name: "chrome", regExp: /\b(?:Chrome|CrMo|CriOS)\/([\d.]+)/ }, { name: "safari", regExp: /\b(?:Version\/([\d.]+).*\s?)?Safari\b/ }, { name: "ie", regExp: /\bMSIE\s(\d+)/i }, { name: "ie", regExp: /\bTrident\/.*;\srv:(\d+)/ }, { name: "firefox", regExp: /\bFirefox\/([\d.]+)/ }, { name: "opera-presto", regExp: /\bOpera\/([\d.]+)/ }];
189
+ const propMap$1 = { chrome: "isChrome", safari: "isSafari", edge: "isEdge", ie: "isIE", firefox: "isFirefox", "opera-presto": "isPrestoOpera" };
190
+ class BrowserInfo {
191
+ constructor(e) {
192
+ this.isChrome = false, this.isSafari = false, this.isEdge = false, this.isIE = false, this.isFirefox = false, this.isPrestoOpera = false;
193
+ const s2 = execRules(e, browserRules);
194
+ s2 ? (this[propMap$1[s2.name]] = true, this.version = new Version(s2.version)) : this.version = new Version(""), Object.freeze(this);
195
+ }
196
+ }
197
+ let clientRules = [{ name: "wxwork", regExp: /\bwxwork\/([\d.]+)/ }, { name: "wx", regExp: /\bMicroMessenger\/([\d.]+)/ }, { name: "ding", regExp: /\bDingTalk\/([\d.]+)/ }, { name: "qq", regExp: /\bQQ\/([\d.]+)/ }, { name: "qq", regExp: /\bIPadQQ\b/ }, { name: "weibo", regExp: /(?:\b|_)Weibo(?:\b|_)/i }, { name: "edge", regExp: /\bEdge?\/([\d.]+)/ }, { name: "opera-blink", regExp: /\bOPR\/([\d.]+)/ }, { name: "qqbrowser", regExp: /\bM?QQBrowser(?:\/([\d.]+))?/i }, { name: "ucbrowser", regExp: /\b(?:UCBrowser|UCWEB)(?:-CMCC)?\/?\s?([\d.]+)/ }, { name: "ucbrowser", regExp: /\bUC\b/ }, { name: "quark", regExp: /\bQuark\/([\d.]+)/ }, { name: "maxthon", regExp: /\b(?:Maxthon|MxBrowser)(?:[/\s]([\d.]+))?/ }, { name: "theworld", regExp: /\bTheWorld(?:\s([\d.]+))?/i }, { name: "baidubrowser", regExp: /\b(?:baidubrowser|bdbrowser_i18n|BIDUBrowser)(?:[/\s]([\d.]+))?/i }, { name: "baidubrowser", regExp: /\bbaidubrowserpad\b/ }, { name: "baiduapp", regExp: /\bbaiduboxapp\b\/([\d.]+)?/i }, { name: "baiduapp", regExp: /\bbaiduboxpad\b/i }];
198
+ clientRules = clientRules.concat(browserRules);
199
+ const propMap = { wxwork: "isWxWork", wx: "isWx", ding: "isDing", qq: "isQQ", weibo: "isWeibo", edge: "isEdge", "opera-blink": "isOpera", "opera-presto": "isOpera", qqbrowser: "isQQBrowser", ucbrowser: "isUCBrowser", quark: "isQuark", maxthon: "isMaxthon", theworld: "isTheWorld", baidubrowser: "isBaiduBrowser", baiduapp: "isBaiduApp", chrome: "isChrome", safari: "isSafari", ie: "isIE", firefox: "isFirefox" };
200
+ class ClientInfo {
201
+ constructor(i2) {
202
+ this.isWxWork = false, this.isWx = false, this.isWxMiniProgram = false, this.isDing = false, this.isQQ = false, this.isWeibo = false, this.isEdge = false, this.isOpera = false, this.isQQBrowser = false, this.isUCBrowser = false, this.isQuark = false, this.isMaxthon = false, this.isTheWorld = false, this.isBaiduBrowser = false, this.isBaiduApp = false, this.isChrome = false, this.isSafari = false, this.isIE = false, this.isFirefox = false;
203
+ const s2 = execRules(i2, clientRules);
204
+ s2 ? (this[propMap[s2.name]] = true, this.version = new Version(s2.version)) : this.version = new Version(""), this.isWxMiniProgram = (this.isWx || this.isWxWork) && /\bMiniProgramEnv\b/.test(i2), Object.freeze(this);
205
+ }
206
+ }
207
+ class UAInfo {
208
+ constructor(t2, i2) {
209
+ this.os = Object.freeze(new OSInfo(t2, i2)), this.brand = Object.freeze(new BrandInfo(t2, this.os)), this.browser = Object.freeze(new BrowserInfo(t2)), this.client = Object.freeze(new ClientInfo(t2)), this.isTablet = this.brand.isIPad || /\bTablet\b/i.test(t2) || this.os.isAndroid && !/\bMobile\b/i.test(t2), this.os.isIOS || this.os.isAndroid || this.isTablet ? this.isPortable = true : /\(X11[;)]/i.test(t2) || /\b(Windows\sNT|Macintosh)\b/.test(t2) ? this.isPortable = false : this.isPortable = /mobile|android/i.test(t2), Object.freeze(this);
210
+ }
211
+ }
212
+ let currentUAInfo;
213
+ function getCurrentUAInfo() {
214
+ return currentUAInfo || (currentUAInfo = Object.freeze("undefined" != typeof window ? new UAInfo(window.navigator.userAgent, window.navigator) : new UAInfo(""))), currentUAInfo;
215
+ }
216
+ var __awaiter = function(i2, n2, o2, t2) {
217
+ return new (o2 || (o2 = Promise))(function(e, a2) {
218
+ function r2(i3) {
219
+ try {
220
+ k2(t2.next(i3));
221
+ } catch (i4) {
222
+ a2(i4);
223
+ }
224
+ }
225
+ function l2(i3) {
226
+ try {
227
+ k2(t2.throw(i3));
228
+ } catch (i4) {
229
+ a2(i4);
230
+ }
231
+ }
232
+ function k2(i3) {
233
+ var n3;
234
+ i3.done ? e(i3.value) : (n3 = i3.value, n3 instanceof o2 ? n3 : new o2(function(i4) {
235
+ i4(n3);
236
+ })).then(r2, l2);
237
+ }
238
+ k2((t2 = t2.apply(i2, n2 || [])).next());
239
+ });
240
+ };
241
+ const uaInfo$1 = getCurrentUAInfo();
242
+ const isAndroid$1 = uaInfo$1.os.isAndroid;
243
+ const isIOS$1 = uaInfo$1.os.isIOS;
244
+ var LinkType;
245
+ !function(i2) {
246
+ i2[i2.Normal = 10] = "Normal", i2[i2.MultiPlatform = 11] = "MultiPlatform", i2[i2.Native = 12] = "Native";
247
+ }(LinkType || (LinkType = {}));
248
+ var LinkJumpWay;
249
+ function getNativeToPointMallFn() {
250
+ var i2, n2, o2, t2;
251
+ return isAndroid$1 ? null === (i2 = window.AndroidNative) || void 0 === i2 ? void 0 : i2.toPointMall : isIOS$1 ? null === (t2 = null === (o2 = null === (n2 = window.webkit) || void 0 === n2 ? void 0 : n2.messageHandlers) || void 0 === o2 ? void 0 : o2.gotoPointsMall) || void 0 === t2 ? void 0 : t2.postMessage : void 0;
252
+ }
253
+ function toNativeLink(i2) {
254
+ const { androidLink: n2, iosLink: o2, otherLink: t2 } = i2, e = getNativeToPointMallFn();
255
+ if (e) {
256
+ let i3 = isAndroid$1 ? n2 : o2;
257
+ const t3 = encodeURIComponent(location.href);
258
+ i3 = concat(i3, { plt_back_uri: t3 });
259
+ e(JSON.stringify({ url: i3 }));
260
+ } else window.open(t2, "_blank", "noopener=yes");
261
+ }
262
+ function toPlvWebviewBridge(i2) {
263
+ return __awaiter(this, void 0, void 0, function* () {
264
+ const { getPlvWebviewSmallWindowSize: n2, getPlvWebviewBridge: o2 } = i2, t2 = (null == n2 ? void 0 : n2()) || { width: 90, height: 160 }, e = yield null == o2 ? void 0 : o2();
265
+ e && e.sendData("clickProduct", { width: t2.width, height: t2.height, newPage: true, link: i2.link, data: i2.data });
266
+ });
267
+ }
268
+ function toMultiPlatformLink(i2) {
269
+ return __awaiter(this, void 0, void 0, function* () {
270
+ const { linkData: n2, isWxMiniProgramEnv: o2, toWxMiniProgram: t2, openLink: e, getLinkParams: a2, isMobile: r2 } = i2, { wxMiniprogramLink: l2, mobileLink: k2, pcLink: d2 } = n2, s2 = (null == r2 ? void 0 : r2()) || false;
271
+ let u2 = false;
272
+ try {
273
+ u2 = (yield null == o2 ? void 0 : o2()) || false;
274
+ } catch (i3) {
275
+ u2 = false;
276
+ }
277
+ u2 && l2 && t2 ? t2(formatLink(l2, a2)) : s2 && k2 ? e(formatLink(k2, a2), LinkJumpWay.NewWindow) : !s2 && d2 && e(formatLink(d2, a2), LinkJumpWay.NewWindow);
278
+ });
279
+ }
280
+ !function(i2) {
281
+ i2.PopUp = "POP_UP", i2.NewWindow = "NEW_WINDOW", i2.CurrentWindow = "CURRENT_WINDOW";
282
+ }(LinkJumpWay || (LinkJumpWay = {}));
283
+ function formatLink(i2, n2) {
284
+ let o2 = {};
285
+ if (n2) {
286
+ const t2 = n2(i2);
287
+ o2 = Object.assign({}, o2, t2);
288
+ }
289
+ return concat(i2, o2);
290
+ }
291
+ function navigateToLink(i2) {
292
+ const { linkData: n2, openLink: o2, isPlvWebview: t2, getPlvWebviewSmallWindowSize: e, getPlvWebviewBridge: a2, isWxMiniProgramEnv: r2, toWxMiniProgram: l2, getLinkParams: k2, isMobile: d2 } = i2, { linkType: s2 } = n2, u2 = (null == t2 ? void 0 : t2()) || false;
293
+ if (s2 !== LinkType.Native) {
294
+ if (u2) {
295
+ let i3 = "";
296
+ const { link: o3, mobileLink: t3, mobileAppLink: r3, wxMiniprogramOriginalId: l3, wxMiniprogramLink: d3 } = n2;
297
+ switch (s2) {
298
+ case LinkType.Normal:
299
+ i3 = o3;
300
+ break;
301
+ case LinkType.MultiPlatform:
302
+ i3 = r3 || t3;
303
+ }
304
+ let u3 = null;
305
+ return s2 !== LinkType.Normal && (u3 = { mobileLink: formatLink(t3, k2), wxMiniprogramOriginalId: l3, wxMiniprogramLink: formatLink(d3, k2), mobileAppLink: formatLink(r3, k2) }), void toPlvWebviewBridge({ link: formatLink(i3, k2), data: u3, getPlvWebviewSmallWindowSize: e, getPlvWebviewBridge: a2 });
306
+ }
307
+ if (s2 !== LinkType.Normal) s2 === LinkType.MultiPlatform && toMultiPlatformLink({ linkData: n2, getLinkParams: k2, isWxMiniProgramEnv: r2, toWxMiniProgram: l2, openLink: o2, isMobile: d2 });
308
+ else {
309
+ const { link: i3, jumpWay: t3 } = n2;
310
+ o2(formatLink(i3, k2), t3);
311
+ }
312
+ } else toNativeLink({ androidLink: formatLink(n2.androidLink, k2), iosLink: formatLink(n2.iosLink, k2), otherLink: formatLink(n2.otherLink, k2) });
313
+ }
91
314
  function mitt(n2) {
92
315
  return { all: n2 = n2 || /* @__PURE__ */ new Map(), on: function(t2, e) {
93
316
  var i2 = n2.get(t2);
@@ -515,131 +738,6 @@ const useTrackEvent = (iarCore) => {
515
738
  trackEvent
516
739
  };
517
740
  };
518
- function canMatchKeywords(e, t2) {
519
- e = e.toLowerCase();
520
- const n2 = /[/\s;_-]/, s2 = /[/\s;_-]/;
521
- return t2.some((t3) => {
522
- const o2 = e.indexOf(t3.toLowerCase());
523
- if (-1 !== o2 && (n2.test(e[o2 - 1]) || 0 === o2) && (s2.test(e[o2 + t3.length]) || o2 + t3.length >= e.length)) return true;
524
- });
525
- }
526
- function canMatchModelRule(e, t2) {
527
- return !!/;\s*([^;)]*?)(?:\s+Build\/[^;)]+)?(?:;(?:\s*wv)?)?\)/.test(e) && t2.test(RegExp.$1);
528
- }
529
- function execRules(e, t2) {
530
- let n2;
531
- return t2.some((t3) => {
532
- let s2, o2 = false;
533
- return t3.regExp ? (o2 = t3.regExp.test(e), o2 && (s2 = RegExp.$1)) : t3.keywords ? o2 = canMatchKeywords(e, t3.keywords) : t3.modelRegExp && (o2 = canMatchModelRule(e, t3.modelRegExp)), o2 && (n2 = { name: t3.name, version: s2 }), o2;
534
- }), n2;
535
- }
536
- const osRules = [{ name: "windows", regExp: /\bWindows\s?NT\s?(([\d.]+))\b/ }, { name: "ios", regExp: /\bOS(?:\s([\d_.]+))?\slike\sMac\sOS\sX\b/ }, { name: "macos", regExp: /\bMac\sOS\sX(?:\s([\d_.]+))?/ }, { name: "openharmony", regExp: /\bOpenHarmony\s([\d.]+)\b/ }, { name: "android", regExp: /\bAndroid;?(?:[-/\s]([\d.]+))?(?:\b|_)/ }, { name: "android", regExp: /\bAdr\s([\d.]+)(?:\b|_)/ }];
537
- function compareVersions(r2, e) {
538
- const t2 = /(\.0+)+$/, n2 = String(r2).replace(t2, "").split("."), s2 = String(e).replace(t2, "").split("."), i2 = Math.min(n2.length, s2.length);
539
- for (let r3 = 0; r3 < i2; r3++) {
540
- const e2 = parseInt(n2[r3]) - parseInt(s2[r3]);
541
- if (e2) return e2;
542
- }
543
- return n2.length - s2.length;
544
- }
545
- class Version {
546
- constructor(r2) {
547
- this._ver = (r2 || "").replace(/_/g, ".").replace(/\.+$/, ""), Object.freeze(this);
548
- }
549
- _compare(r2, e) {
550
- if (!this._ver || !r2) return false;
551
- const t2 = Array.isArray(e) ? e : [e], n2 = compareVersions(this._ver, r2);
552
- return t2.some(function(r3) {
553
- return n2 * r3 > 0 || 0 === n2 && 0 === r3;
554
- });
555
- }
556
- gt(r2) {
557
- return this._compare(r2, 1);
558
- }
559
- gte(r2) {
560
- return this._compare(r2, [1, 0]);
561
- }
562
- lt(r2) {
563
- return this._compare(r2, -1);
564
- }
565
- lte(r2) {
566
- return this._compare(r2, [-1, 0]);
567
- }
568
- eq(r2) {
569
- return this._compare(r2, 0);
570
- }
571
- toString() {
572
- return this._ver;
573
- }
574
- }
575
- const propMap$3 = { ios: "isIOS", openharmony: "isOpenHarmony", android: "isAndroid", windows: "isWindows", macos: "isMacOS" };
576
- function platformToOS(s2) {
577
- switch (s2) {
578
- case "Android":
579
- return "android";
580
- case "iPad":
581
- case "iPhone":
582
- case "iPod":
583
- return "ios";
584
- case "MacIntel":
585
- return "macos";
586
- case "Win32":
587
- return "windows";
588
- }
589
- }
590
- class OSInfo {
591
- constructor(s2, o2) {
592
- var i2;
593
- let e;
594
- if (this.isIOS = false, this.isAndroid = false, this.isHarmonyOS = false, this.isOpenHarmony = false, this.isWindows = false, this.isMacOS = false, null == o2 ? void 0 : o2.platform) {
595
- const s3 = platformToOS(o2.platform);
596
- void 0 !== s3 && (e = { name: s3, version: "" });
597
- }
598
- let n2 = null !== (i2 = execRules(s2, osRules)) && void 0 !== i2 ? i2 : e;
599
- n2 ? (e && e.name !== n2.name && (n2 = e), "macos" === n2.name && (null == o2 ? void 0 : o2.maxTouchPoints) && (n2.name = "ios", n2.version = ""), this[propMap$3[n2.name]] = true, this.version = new Version(n2.version), this.isAndroid && /\bHarmonyOS\b/.test(s2) && (this.isHarmonyOS = true), Object.freeze(this)) : this.version = Object.freeze(new Version(""));
600
- }
601
- }
602
- const appleRules = [{ name: "ipad", regExp: /iPad/ }, { name: "ipod", regExp: /iPod/ }, { name: "iphone", regExp: /iPhone/ }];
603
- const androidRules = [{ name: "huawei", regExp: /\b(?:huawei|honor)/i }, { name: "huawei", keywords: ["ideahub", "figi"] }, { name: "vivo", keywords: ["vivo"] }, { name: "oppo", keywords: ["oppo"] }, { name: "mi", keywords: ["redmi", "hongmi", "shark", "Mi", "MIX", "POCO", "POCOPHONE"] }, { name: "mi", regExp: /\bxiaomi/i }, { name: "samsung", keywords: ["samsung", "galaxy"] }, { name: "oneplus", keywords: ["oneplus", "one"] }, { name: "huawei", modelRegExp: /^Mate\s*\d{2}/i }, { name: "huawei", modelRegExp: /^Nova\s\d$/ }, { name: "huawei", regExp: /\b(?:Hi)?MatePad/i }, { name: "huawei", regExp: /\b(?:Liantong|UNICOMVSENS)VP\d{3}\b/ }, { name: "huawei", regExp: /\bCMDCSP\d{3}\b/ }, { name: "huawei", regExp: /\bTDTECH/i }, { name: "huawei", modelRegExp: /^[A-Z]{3}\d?-W[0-5]9[A-Z]*$/ }, { name: "huawei", modelRegExp: /^[A-Z][A-Za-z]{2,3}-(?:AN|BD|BX|AL|TL)\d{2}[A-Za-z]*$/ }, { name: "huawei", modelRegExp: /^TYH\d+[A-Z]?$/ }, { name: "huawei", modelRegExp: /^H60-L0[12]$/ }, { name: "mi", modelRegExp: /^MI\s?(?:\d|CC|Note|MAX|PLAY|PAD)/i }, { name: "mi", modelRegExp: /^(?:AWM|SKR|SKW|DLT)-/ }, { name: "mi", modelRegExp: /^XIG\d{2}$/ }, { name: "mi", modelRegExp: /^M\d{4}[A-Z]\d{1,2}[A-Z]{1,3}$/ }, { name: "mi", modelRegExp: /^2\d{3}[A-Z0-9]{6}$/ }, { name: "mi", modelRegExp: /^2\d{5}[0-9A-Z]{2}[A-Z]$/ }, { name: "mi", modelRegExp: /^2\d{6}[A-Z]$/ }, { name: "mi", modelRegExp: /^2\d{7}[A-Z]{2,3}$/ }, { name: "samsung", modelRegExp: /^S(?:M|[CGP]H)-[A-Za-z0-9]+$/ }, { name: "samsung", modelRegExp: /^SCV3\d$/ }, { name: "samsung", modelRegExp: /^SC-\d{2}[A-Z]$/ }, { name: "samsung", modelRegExp: /^SH[WV]-/ }, { name: "samsung", modelRegExp: /^GT[-_][A-Z][A-Z0-9]{3,}$/i }, { name: "oppo", modelRegExp: /^(?:CPH|OPD|iPA)\d{4}$/ }, { name: "oppo", modelRegExp: /^OPG\d{2}$/ }, { name: "oppo", modelRegExp: /^A[1-5]0[1-9]OP$/ }, { name: "oneplus", modelRegExp: /^(?:KB|HD|IN|GM|NE|LE|MT)\d{4}$/ }, { name: "vivo", modelRegExp: /^V[12]\d{3}[A-Z]{0,2}$/ }];
604
- const propMap$2 = { ipod: "isIPod", iphone: "isIPhone", ipad: "isIPad", huawei: "isHuawei", mi: "isMi", oppo: "isOppo", vivo: "isVivo", oneplus: "isOnePlus", samsung: "isSamsung" };
605
- class BrandInfo {
606
- constructor(i2, s2) {
607
- let e;
608
- if (this.isHuawei = false, this.isMi = false, this.isOppo = false, this.isVivo = false, this.isOnePlus = false, this.isSamsung = false, this.isIPod = false, this.isIPhone = false, this.isIPad = false, this.isMac = false, this.isApple = false, s2.isIOS ? (e = appleRules, this.isApple = true) : s2.isMacOS ? (this.isMac = true, this.isApple = true) : (s2.isAndroid || s2.isOpenHarmony) && (e = androidRules), e) {
609
- const o2 = execRules(i2, e);
610
- o2 ? this[propMap$2[o2.name]] = true : s2.isIOS && (this.isIPad = true);
611
- }
612
- Object.freeze(this);
613
- }
614
- }
615
- const browserRules = [{ name: "edge", regExp: /\bEdge\/([\d.]+)/ }, { name: "chrome", regExp: /\b(?:Chrome|CrMo|CriOS)\/([\d.]+)/ }, { name: "safari", regExp: /\b(?:Version\/([\d.]+).*\s?)?Safari\b/ }, { name: "ie", regExp: /\bMSIE\s(\d+)/i }, { name: "ie", regExp: /\bTrident\/.*;\srv:(\d+)/ }, { name: "firefox", regExp: /\bFirefox\/([\d.]+)/ }, { name: "opera-presto", regExp: /\bOpera\/([\d.]+)/ }];
616
- const propMap$1 = { chrome: "isChrome", safari: "isSafari", edge: "isEdge", ie: "isIE", firefox: "isFirefox", "opera-presto": "isPrestoOpera" };
617
- class BrowserInfo {
618
- constructor(e) {
619
- this.isChrome = false, this.isSafari = false, this.isEdge = false, this.isIE = false, this.isFirefox = false, this.isPrestoOpera = false;
620
- const s2 = execRules(e, browserRules);
621
- s2 ? (this[propMap$1[s2.name]] = true, this.version = new Version(s2.version)) : this.version = new Version(""), Object.freeze(this);
622
- }
623
- }
624
- let clientRules = [{ name: "wxwork", regExp: /\bwxwork\/([\d.]+)/ }, { name: "wx", regExp: /\bMicroMessenger\/([\d.]+)/ }, { name: "ding", regExp: /\bDingTalk\/([\d.]+)/ }, { name: "qq", regExp: /\bQQ\/([\d.]+)/ }, { name: "qq", regExp: /\bIPadQQ\b/ }, { name: "weibo", regExp: /(?:\b|_)Weibo(?:\b|_)/i }, { name: "edge", regExp: /\bEdge?\/([\d.]+)/ }, { name: "opera-blink", regExp: /\bOPR\/([\d.]+)/ }, { name: "qqbrowser", regExp: /\bM?QQBrowser(?:\/([\d.]+))?/i }, { name: "ucbrowser", regExp: /\b(?:UCBrowser|UCWEB)(?:-CMCC)?\/?\s?([\d.]+)/ }, { name: "ucbrowser", regExp: /\bUC\b/ }, { name: "quark", regExp: /\bQuark\/([\d.]+)/ }, { name: "maxthon", regExp: /\b(?:Maxthon|MxBrowser)(?:[/\s]([\d.]+))?/ }, { name: "theworld", regExp: /\bTheWorld(?:\s([\d.]+))?/i }, { name: "baidubrowser", regExp: /\b(?:baidubrowser|bdbrowser_i18n|BIDUBrowser)(?:[/\s]([\d.]+))?/i }, { name: "baidubrowser", regExp: /\bbaidubrowserpad\b/ }, { name: "baiduapp", regExp: /\bbaiduboxapp\b\/([\d.]+)?/i }, { name: "baiduapp", regExp: /\bbaiduboxpad\b/i }];
625
- clientRules = clientRules.concat(browserRules);
626
- const propMap = { wxwork: "isWxWork", wx: "isWx", ding: "isDing", qq: "isQQ", weibo: "isWeibo", edge: "isEdge", "opera-blink": "isOpera", "opera-presto": "isOpera", qqbrowser: "isQQBrowser", ucbrowser: "isUCBrowser", quark: "isQuark", maxthon: "isMaxthon", theworld: "isTheWorld", baidubrowser: "isBaiduBrowser", baiduapp: "isBaiduApp", chrome: "isChrome", safari: "isSafari", ie: "isIE", firefox: "isFirefox" };
627
- class ClientInfo {
628
- constructor(i2) {
629
- this.isWxWork = false, this.isWx = false, this.isWxMiniProgram = false, this.isDing = false, this.isQQ = false, this.isWeibo = false, this.isEdge = false, this.isOpera = false, this.isQQBrowser = false, this.isUCBrowser = false, this.isQuark = false, this.isMaxthon = false, this.isTheWorld = false, this.isBaiduBrowser = false, this.isBaiduApp = false, this.isChrome = false, this.isSafari = false, this.isIE = false, this.isFirefox = false;
630
- const s2 = execRules(i2, clientRules);
631
- s2 ? (this[propMap[s2.name]] = true, this.version = new Version(s2.version)) : this.version = new Version(""), this.isWxMiniProgram = (this.isWx || this.isWxWork) && /\bMiniProgramEnv\b/.test(i2), Object.freeze(this);
632
- }
633
- }
634
- class UAInfo {
635
- constructor(t2, i2) {
636
- this.os = Object.freeze(new OSInfo(t2, i2)), this.brand = Object.freeze(new BrandInfo(t2, this.os)), this.browser = Object.freeze(new BrowserInfo(t2)), this.client = Object.freeze(new ClientInfo(t2)), this.isTablet = this.brand.isIPad || /\bTablet\b/i.test(t2) || this.os.isAndroid && !/\bMobile\b/i.test(t2), this.os.isIOS || this.os.isAndroid || this.isTablet ? this.isPortable = true : /\(X11[;)]/i.test(t2) || /\b(Windows\sNT|Macintosh)\b/.test(t2) ? this.isPortable = false : this.isPortable = /mobile|android/i.test(t2), Object.freeze(this);
637
- }
638
- }
639
- let currentUAInfo;
640
- function getCurrentUAInfo() {
641
- return currentUAInfo || (currentUAInfo = Object.freeze("undefined" != typeof window ? new UAInfo(window.navigator.userAgent, window.navigator) : new UAInfo(""))), currentUAInfo;
642
- }
643
741
  const ua = navigator.userAgent.toLowerCase();
644
742
  const uaInfo = getCurrentUAInfo();
645
743
  const isAndroid = uaInfo.os.isAndroid;
@@ -1039,6 +1137,7 @@ function get(object, path, defaultValue) {
1039
1137
  }
1040
1138
  const order$5 = { "title": "订单中心", "chooseAddress": "请添加收货地址", "add": "去添加", "phone": "手机号码:", "phonePlaceholder": "请输入手机号码", "submitOrder": "提交订单", "addAddress": "添加地址", "applyRefund": "申请退款", "refundTips": "退款金额 ", "confirmRefund": "退款", "refundFailed": "退款失败", "failed": "发起失败", "list": { "all": "全部", "waitPay": "待支付", "waitDelivery": "待发货", "delivering": "待收货", "finish": "已完成", "close": "已取消", "refunding": "退款中", "refunded": "已退款", "total": "合计", "waitPayBtnText": "立即支付", "waitDeliveryBtnText": "查看详情", "deliveringBtnText": "确认收货", "finishBtnText": "查看详情", "closeBtnText": "查看详情", "emptyText": "暂无订单" }, "detail": { "orderNo": "订单号", "createTime": "下单时间", "payTime": "支付时间", "deliveryTime": "发货时间", "finishTime": "完成时间", "actualPay": "实付", "payNow": "立即支付", "confirmReceipt": "确认收货", "expired": "已失效", "payAutoCancel": " 后自动取消", "cancelReason": "取消原因", "payTimeOut": "超时未支付", "refundTips": "退款金额原路返回", "qrCodeTips": "长按识别或截图保存,联系客服", "qrCodeExpiredTips": "二维码已失效,暂时无法联系客服", "paymentMethod": "支付方式", "wechat": "微信", "alipay": "支付宝" }, "confirmOrder": "确认订单", "shippingAddress": "收货地址", "noAddressTips": "请填写收货地址", "paySuccess": "支付成功", "cancelPay": "取消支付", "payFailed": "支付失败", "createOrderFailed": "无法创建订单,请稍后重试", "wechatPayTips": "请在微信中打开本页进行支付", "confirmReceiptTips": "请确认已经收到包裹", "confirmedReceipt": "已确认收货" };
1041
1139
  const addressEdit$5 = { "name": "联系人", "namePlaceholder": "请填写联系人姓名", "choiceAddress": "选择地区", "addressPlaceholder": "请选择地区", "phone": "手机号码", "phonePlaceholder": "请填写手机号码", "phoneError": "请输入正确的手机号", "addressDetail": "详细地址", "addressDetailPlaceholder": "请填写详细地址", "error": "请完善信息", "submit": "保存", "deleteConfirm": "确定要删除该地址吗?", "addAddress": "添加地址", "editAddress": "修改地址", "deleteAddress": "删除地址", "addSuccess": "保存成功", "addError": "保存失败", "editSuccess": "修改成功", "editError": "修改失败" };
1140
+ const bigCard$5 = { "title": "商品推荐" };
1042
1141
  const zhCNLang = {
1043
1142
  "common.confirm": "确认",
1044
1143
  "common.cancel": "取消",
@@ -1066,10 +1165,12 @@ const zhCNLang = {
1066
1165
  "product.allProduct": "全部商品",
1067
1166
  "product.stock.soldOut": "已抢光",
1068
1167
  order: order$5,
1069
- addressEdit: addressEdit$5
1168
+ addressEdit: addressEdit$5,
1169
+ bigCard: bigCard$5
1070
1170
  };
1071
1171
  const order$4 = { "title": "訂單中心", "chooseAddress": "請添加收貨地址", "add": "去添加", "phone": "手機號碼:", "phonePlaceholder": "請輸入手機號碼", "submitOrder": "提交訂單", "addAddress": "添加地址", "applyRefund": "申請退款", "refundTips": "退款金額 ", "confirmRefund": "退款", "refundFailed": "退款失敗", "failed": "发起失敗", "list": { "all": "全部", "waitPay": "待支付", "waitDelivery": "待發貨", "delivering": "待收貨", "finish": "已完成", "close": "已取消", "refunding": "退款中", "refunded": "已退款", "total": "合計", "waitPayBtnText": "立即支付", "waitDeliveryBtnText": "查看詳情", "deliveringBtnText": "確認收貨", "finishBtnText": "查看詳情", "closeBtnText": "查看詳情", "emptyText": "暫無訂單" }, "detail": { "orderNo": "訂單號", "createTime": "下單時間", "payTime": "支付時間", "deliveryTime": "發貨時間", "finishTime": "完成時間", "actualPay": "實付", "payNow": "立即支付", "confirmReceipt": "確認收貨", "expired": "已失效", "payAutoCancel": " 後自動取消", "cancelReason": "取消原因", "payTimeOut": "超時未支付", "refundTips": "退款金額原路返回", "qrCodeTips": "長按識別或截圖保存,聯繫客服", "qrCodeExpiredTips": "二維碼已失效,暫時無法聯繫客服", "paymentMethod": "支付方式", "wechat": "微信", "alipay": "支付寶" }, "confirmOrder": "確認訂單", "shippingAddress": "收貨地址", "noAddressTips": "請填寫收貨地址", "paySuccess": "支付成功", "payFailed": "支付失敗", "cancelPay": "取消支付", "createOrderFailed": "無法創建訂單,請稍後重試", "wechatPayTips": "請在微信中打開本頁進行支付", "confirmReceiptTips": "請確認已經收到包裹", "confirmedReceipt": "已確認收貨" };
1072
1172
  const addressEdit$4 = { "name": "聯絡人", "namePlaceholder": "請填寫聯絡人", "choiceAddress": "選擇地區", "addressPlaceholder": "請選擇地區", "phone": "手機號碼", "phonePlaceholder": "請填寫手機號碼", "phoneError": "請輸入正確的手機號", "addressDetail": "詳細地址", "addressDetailPlaceholder": "請填寫詳細地址", "error": "請完善信息", "submit": "保存", "deleteConfirm": "確定要刪除該地址嗎?", "deleteAddress": "刪除地址", "addAddress": "添加地址", "editAddress": "修改地址", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "修改成功", "editError": "修改失敗" };
1173
+ const bigCard$4 = { "title": "商品推薦" };
1073
1174
  const zhTWLang = {
1074
1175
  "common.confirm": "確認",
1075
1176
  "common.cancel": "取消",
@@ -1097,10 +1198,12 @@ const zhTWLang = {
1097
1198
  "product.allProduct": "全部商品",
1098
1199
  "product.stock.soldOut": "已搶光",
1099
1200
  order: order$4,
1100
- addressEdit: addressEdit$4
1201
+ addressEdit: addressEdit$4,
1202
+ bigCard: bigCard$4
1101
1203
  };
1102
1204
  const order$3 = { "title": "Order Center", "chooseAddress": "Add Shipping Address", "add": "Add Shipping Address", "phone": "Phone:", "phonePlaceholder": "Enter Phone", "submitOrder": "Submit", "addAddress": "Add Address", "applyRefund": "Apply Refund", "refundTips": "Refund Amount ", "confirmRefund": "Refund", "refundFailed": "Refund Failed", "failed": "Failed", "list": { "all": "All", "waitPay": "Wait Payment", "waitDelivery": "Wait Delivery", "delivering": "Delivering", "finish": "Finished", "close": "Closed", "refunding": "Refunding", "refunded": "Refunded", "total": "Total", "waitPayBtnText": "Pay Now", "waitDeliveryBtnText": "View Details", "deliveringBtnText": "Confirm Receipt", "finishBtnText": "View Details", "closeBtnText": "View Details", "emptyText": "No Order History" }, "detail": { "orderNo": "Order Number", "createTime": "Order Time", "payTime": "Payment Time", "deliveryTime": "Delivery Time", "finishTime": "Completion Time", "actualPay": "Total Amount", "payNow": "Pay Now", "confirmReceipt": "Confirm Receipt", "expired": "Expired", "payAutoCancel": "Cancel", "cancelReason": "Cancel Reason", "payTimeOut": "Pay Time Out", "refundTips": "Refund amount returned to the original path", "qrCodeTips": "Long press to scan or save screenshot for support", "qrCodeExpiredTips": "QR code expired, support unavailable", "paymentMethod": "Payment Method", "wechat": "Wechat", "alipay": "Alipay" }, "confirmOrder": "Confirm Order", "shippingAddress": "Shipping Address", "noAddressTips": "Please fill in the shipping address", "paySuccess": "Payment Success", "cancelPay": "Cancel Payment", "payFailed": "Payment Failed", "createOrderFailed": "Failed to create order, please try again later", "wechatPayTips": "Please open this page in WeChat to pay", "confirmReceiptTips": "Have you received the package?", "confirmedReceipt": "Confirmed Receipt" };
1103
1205
  const addressEdit$3 = { "name": "Name", "namePlaceholder": "Enter Name", "choiceAddress": "Select Area", "addressPlaceholder": "Select Area", "phone": "Phone", "phonePlaceholder": "Enter Phone", "phoneError": "Please enter a valid phone number", "addressDetail": "Address Detail", "addressDetailPlaceholder": "Enter Address Detail", "error": "Please fill in all required fields", "submit": "Save", "deleteConfirm": "Delete this address?", "deleteAddress": "Yes", "addAddress": "Add Address", "editAddress": "Edit Address", "addSuccess": "Save Success", "addError": "Save Failed", "editSuccess": "Edit Success", "editError": "Edit Failed" };
1206
+ const bigCard$3 = { "title": "Top Picks" };
1104
1207
  const enLang = {
1105
1208
  "common.confirm": "Confirm",
1106
1209
  "common.cancel": "Cancel",
@@ -1128,10 +1231,12 @@ const enLang = {
1128
1231
  "product.allProduct": "Products",
1129
1232
  "product.stock.soldOut": "Sold Out",
1130
1233
  order: order$3,
1131
- addressEdit: addressEdit$3
1234
+ addressEdit: addressEdit$3,
1235
+ bigCard: bigCard$3
1132
1236
  };
1133
1237
  const order$2 = { "title": "注文中心", "chooseAddress": "配送先を追加", "add": "配送先を追加", "phone": "電話番号:", "phonePlaceholder": "電話番号を入力", "submitOrder": "注文を提出", "addAddress": "配送先を追加", "applyRefund": "退款申請", "refundTips": "退款金額 ", "confirmRefund": "退款", "refundFailed": "退款失敗", "failed": "失敗", "list": { "all": "全て", "waitPay": "支払い待ち", "waitDelivery": "発送待ち", "delivering": "配送中", "finish": "完了", "close": "キャンセル", "refunding": "退款中", "refunded": "退款完了", "total": "合計", "waitPayBtnText": "支払い", "waitDeliveryBtnText": "詳細を見る", "deliveringBtnText": "確認受け取り", "finishBtnText": "詳細を見る", "closeBtnText": "詳細を見る", "emptyText": "注文履歴がありません" }, "detail": { "orderNo": "注文番号", "createTime": "注文日時", "payTime": "支払い日時", "deliveryTime": "発送日時", "finishTime": "完了日時", "actualPay": "実払い", "payNow": "支払い", "confirmReceipt": "確認受け取り", "expired": "失効", "payAutoCancel": " 後自動キャンセル", "cancelReason": "キャンセル理由", "payTimeOut": "超時未支払い", "refundTips": "退款金額原路返回", "qrCodeTips": "長押し識別またはスクリーンショット保存、サポートにお問い合わせください", "qrCodeExpiredTips": "QRコードは失効しました。暫時的にサポートに連絡できません", "paymentMethod": "支払い方法", "wechat": "ウェブアプリ", "alipay": "アリペイ" }, "confirmOrder": "注文を確認", "shippingAddress": "配送先", "noAddressTips": "配送先を入力してください", "paySuccess": "支払い成功", "cancelPay": "支払いをキャンセル", "payFailed": "支払い失敗", "createOrderFailed": "注文の作成に失敗しました。後で再試行してください。", "wechatPayTips": "WeChatでこのページを開いて支払いしてください", "confirmReceiptTips": "パッケージを確認しましたか?", "confirmedReceipt": "確認受け取り完了" };
1134
1238
  const addressEdit$2 = { "name": "連絡先", "namePlaceholder": "連絡先を入力", "choiceAddress": "地域を選択", "addressPlaceholder": "地域を選択", "phone": "電話番号", "phonePlaceholder": "電話番号を入力", "phoneError": "正しい電話番号を入力してください", "addressDetail": "詳細住所", "addressDetailPlaceholder": "詳細住所を入力", "error": "情報を入力してください", "submit": "保存", "deleteConfirm": "この住所を削除しますか?", "deleteAddress": "住所を削除", "addAddress": "住所を追加", "editAddress": "住所を編集", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "編集成功", "editError": "編集失敗" };
1239
+ const bigCard$2 = { "title": "商品推薦" };
1135
1240
  const jaLang = {
1136
1241
  "common.confirm": "確認",
1137
1242
  "common.cancel": "キャンセル",
@@ -1159,10 +1264,12 @@ const jaLang = {
1159
1264
  "product.allProduct": "すべての商品",
1160
1265
  "product.stock.soldOut": "売り切れ",
1161
1266
  order: order$2,
1162
- addressEdit: addressEdit$2
1267
+ addressEdit: addressEdit$2,
1268
+ bigCard: bigCard$2
1163
1269
  };
1164
1270
  const order$1 = { "title": "주문 센터", "chooseAddress": "주문 주소 추가", "add": "주문 주소 추가", "phone": "전화번호:", "phonePlaceholder": "전화번호 입력", "submitOrder": "주문 제출", "addAddress": "주문 주소 추가", "applyRefund": "환불 신청", "refundTips": "환불 금액 ", "confirmRefund": "환불", "refundFailed": "환불 실패", "failed": "실패", "list": { "all": "전체", "waitPay": "결제 대기", "waitDelivery": "배송 대기", "delivering": "배송 중", "finish": "완료", "close": "취소", "refunding": "환불 중", "refunded": "환불 완료", "total": "총 금액", "waitPayBtnText": "결제하기", "waitDeliveryBtnText": "상세 보기", "deliveringBtnText": "확인 받기", "finishBtnText": "상세 보기", "closeBtnText": "상세 보기", "emptyText": "주문 내역이 없습니다." }, "detail": { "orderNo": "주문번호", "createTime": "주문일시", "payTime": "결제일시", "deliveryTime": "배송일시", "finishTime": "완료일시", "actualPay": "총 금액", "payNow": "결제하기", "confirmReceipt": "확인 받기", "expired": "만료", "payAutoCancel": " 후 자동 취소", "cancelReason": "취소 사유", "payTimeOut": "결제 시간 초과", "refundTips": "환불 금액 원래 경로로 반환", "qrCodeTips": "장치 인식 또는 스크린샷 저장 후 문의", "qrCodeExpiredTips": "이미 만료되었습니다. 잠시 후 다시 시도해주세요.", "paymentMethod": "결제 방법", "wechat": "웹앱", "alipay": "알리페이" }, "confirmOrder": "주문 확인", "shippingAddress": "배송 주소", "noAddressTips": "배송 주소를 입력해주세요", "paySuccess": "결제 성공", "cancelPay": "결제 취소", "payFailed": "결제 실패", "createOrderFailed": "주문 생성에 실패했습니다. 나중에 다시 시도해주세요.", "wechatPayTips": "카카오톡에서 이 페이지를 열어 결제해주세요", "confirmReceiptTips": "패키지를 확인하셨습니까?", "confirmedReceipt": "확인 받기 완료" };
1165
1271
  const addressEdit$1 = { "name": "연락처", "namePlaceholder": "연락처 입력", "choiceAddress": "지역 선택", "addressPlaceholder": "지역 선택", "phone": "전화번호", "phonePlaceholder": "전화번호 입력", "phoneError": "올바른 전화번호를 입력해주세요", "addressDetail": "상세 주소", "addressDetailPlaceholder": "상세 주소 입력", "error": "정보를 입력해주세요.", "submit": "저장", "deleteConfirm": "주소를 삭제하시겠습니까?", "deleteAddress": "주소 삭제", "addAddress": "주소 추가", "editAddress": "주소 수정", "addSuccess": "저장 성공", "addError": "저장 실패", "editSuccess": "수정 성공", "editError": "수정 실패" };
1272
+ const bigCard$1 = { "title": "상품 추천" };
1166
1273
  const koLang = {
1167
1274
  "common.confirm": "확인",
1168
1275
  "common.cancel": "취소",
@@ -1190,10 +1297,12 @@ const koLang = {
1190
1297
  "product.allProduct": "모든 상품",
1191
1298
  "product.stock.soldOut": "품절",
1192
1299
  order: order$1,
1193
- addressEdit: addressEdit$1
1300
+ addressEdit: addressEdit$1,
1301
+ bigCard: bigCard$1
1194
1302
  };
1195
1303
  const order = { "title": "Центр заказов", "chooseAddress": "Пожалуйста, добавьте адрес доставки", "add": "Добавить", "phone": "Номер телефона:", "phonePlaceholder": "Пожалуйста, введите номер телефона", "submitOrder": "Отправить заказ", "addAddress": "Добавить адрес", "applyRefund": "Заявить о возврате", "refundTips": "Сумма возврата ", "confirmRefund": "Возврат", "refundFailed": "Возврат не удался", "failed": "Не удалось инициировать", "list": { "all": "Все", "waitPay": "Ожидает оплаты", "waitDelivery": "Ожидает отправки", "delivering": "Ожидает получения", "finish": "Завершено", "close": "Отменено", "refunding": "В процессе возврата", "refunded": "Возвращено", "total": "Итого", "waitPayBtnText": "Оплатить сейчас", "waitDeliveryBtnText": "Посмотреть детали", "deliveringBtnText": "Подтвердить получение", "finishBtnText": "Посмотреть детали", "closeBtnText": "Посмотреть детали", "emptyText": "Пока нет заказов" }, "detail": { "orderNo": "Номер заказа", "createTime": "Время создания заказа", "payTime": "Время оплаты", "deliveryTime": "Время отправки", "finishTime": "Время завершения", "actualPay": "Фактически оплачено", "payNow": "Оплатить сейчас", "confirmReceipt": "Подтвердить получение", "expired": "Истек срок действия", "payAutoCancel": " автоматическая отмена", "cancelReason": "Причина отмены", "payTimeOut": "Время оплаты истекло", "refundTips": "Сумма возврата вернется тем же способом", "qrCodeTips": "Долго нажмите для распознавания или сохраните скриншот, свяжитесь с сервисом", "qrCodeExpiredTips": "QR-код истек, временно невозможно связаться с сервисом", "paymentMethod": "Способ оплаты", "wechat": "Веб-приложение", "alipay": "АлиПай" }, "confirmOrder": "Подтвердить заказ", "shippingAddress": "Адрес доставки", "noAddressTips": "Пожалуйста, заполните адрес доставки", "paySuccess": "Оплата успешна", "cancelPay": "Отменить оплату", "payFailed": "Оплата не удалась", "createOrderFailed": "Не удается создать заказ, попробуйте позже", "wechatPayTips": "Пожалуйста, откройте эту страницу в WeChat для оплаты", "confirmReceiptTips": "Пожалуйста, подтвердите, что посылка получена", "confirmedReceipt": "Получение подтверждено" };
1196
1304
  const addressEdit = { "name": "Контактное лицо", "namePlaceholder": "Пожалуйста, введите имя контактного лица", "choiceAddress": "Выберите регион", "addressPlaceholder": "Пожалуйста, выберите регион", "phone": "Номер телефона", "phonePlaceholder": "Пожалуйста, введите номер телефона", "phoneError": "Пожалуйста, введите правильный номер телефона", "addressDetail": "Подробный адрес", "addressDetailPlaceholder": "Пожалуйста, заполните подробный адрес", "error": "Пожалуйста, дополните информацию", "submit": "Сохранить", "deleteConfirm": "Вы уверены, что хотите удалить этот адрес?", "addAddress": "Добавить адрес", "editAddress": "Изменить адрес", "deleteAddress": "Удалить адрес", "addSuccess": "Успешно сохранено", "addError": "Не удалось сохранить", "editSuccess": "Успешно изменено", "editError": "Не удалось изменить" };
1305
+ const bigCard = { "title": "Товары" };
1197
1306
  const ruLang = {
1198
1307
  "common.confirm": "Подтвердить",
1199
1308
  "common.cancel": "Отмена",
@@ -1221,7 +1330,8 @@ const ruLang = {
1221
1330
  "product.allProduct": "Все товары",
1222
1331
  "product.stock.soldOut": "Распродано",
1223
1332
  order,
1224
- addressEdit
1333
+ addressEdit,
1334
+ bigCard
1225
1335
  };
1226
1336
  const fullI18nData = {
1227
1337
  [LangType.ZH_CN]: zhCNLang,
@@ -1304,7 +1414,8 @@ function getProductTargetExport(productTarget) {
1304
1414
  ProductExplainStatus: productTarget.ProductExplainStatus,
1305
1415
  ProductMediaType: productTarget.ProductMediaType,
1306
1416
  ProductDeliveryType: productTarget.ProductDeliveryType,
1307
- ProductEvents: productTarget.ProductEvents
1417
+ ProductEvents: productTarget.ProductEvents,
1418
+ ProductPushRule: productTarget.ProductPushRule
1308
1419
  };
1309
1420
  }
1310
1421
  const PRODUCT_PROVIDE_KEY = Symbol("PRODUCT_PROVIDE_KEY");
@@ -1364,7 +1475,7 @@ const useProductStock = (options) => {
1364
1475
  isSoldOut
1365
1476
  };
1366
1477
  };
1367
- const htmlChars = ['"', "'", "&", "<", ">"], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
1478
+ const htmlChars = ['"', "'", "&", "<", ">", " "], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;", "&nbsp;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
1368
1479
  htmlChars.forEach((n2, e) => {
1369
1480
  charsToEntities[n2] = htmlEntities[e], entitiesToChars[htmlEntities[e]] = n2;
1370
1481
  });
@@ -1419,7 +1530,7 @@ const useWeixinButton = (hookOptions = {}) => {
1419
1530
  }
1420
1531
  const wx = yield injectData.getWeixinSdk();
1421
1532
  (_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.navigateTo({
1422
- url
1533
+ url: url.startsWith("/") ? url : `/${url}`
1423
1534
  });
1424
1535
  return;
1425
1536
  });
@@ -1474,7 +1585,9 @@ const useWeixinButton = (hookOptions = {}) => {
1474
1585
  watch(
1475
1586
  () => [weixinBtnRef.value, supportWxOpenLaunchWeapp.value, buttonOptions.value],
1476
1587
  () => {
1477
- createWxMiniProgramButton();
1588
+ setTimeout(() => {
1589
+ createWxMiniProgramButton();
1590
+ }, 500);
1478
1591
  },
1479
1592
  {
1480
1593
  immediate: true
@@ -1491,7 +1604,7 @@ const useWeixinButton = (hookOptions = {}) => {
1491
1604
  };
1492
1605
  };
1493
1606
  const useAppNative = () => {
1494
- function getNativeToPointMallFn() {
1607
+ function getNativeToPointMallFn2() {
1495
1608
  var _a, _b, _c, _d;
1496
1609
  if (isAndroid) {
1497
1610
  return (_a = window.AndroidNative) == null ? void 0 : _a.toPointMall;
@@ -1500,14 +1613,14 @@ const useAppNative = () => {
1500
1613
  }
1501
1614
  }
1502
1615
  function supportNativeToPointMall() {
1503
- return !!getNativeToPointMallFn();
1616
+ return !!getNativeToPointMallFn2();
1504
1617
  }
1505
1618
  const supportAppNative = computed(() => {
1506
1619
  return supportNativeToPointMall();
1507
1620
  });
1508
- function toNativeLink(options) {
1621
+ function toNativeLink2(options) {
1509
1622
  const { androidLink, iosLink, otherLink } = options;
1510
- const nativePointMallFn = getNativeToPointMallFn();
1623
+ const nativePointMallFn = getNativeToPointMallFn2();
1511
1624
  if (nativePointMallFn) {
1512
1625
  let url = isAndroid ? androidLink : iosLink;
1513
1626
  const pltBackUri = encodeURIComponent(location.href);
@@ -1523,60 +1636,10 @@ const useAppNative = () => {
1523
1636
  window.open(otherLink, "_blank", "noopener=yes");
1524
1637
  }
1525
1638
  return {
1526
- getNativeToPointMallFn,
1639
+ getNativeToPointMallFn: getNativeToPointMallFn2,
1527
1640
  supportNativeToPointMall,
1528
1641
  supportAppNative,
1529
- toNativeLink
1530
- };
1531
- };
1532
- const usePolyvWebview = () => {
1533
- const { injectData } = useGlobalInject();
1534
- const isPlvWebview = ref(false);
1535
- const supportPlvWebview = computed(() => {
1536
- return isPlvWebview.value;
1537
- });
1538
- function getPlvWebviewBridge() {
1539
- return __async(this, null, function* () {
1540
- if (injectData.getPlvWebviewBridge) {
1541
- return yield injectData.getPlvWebviewBridge();
1542
- }
1543
- });
1544
- }
1545
- function toPlvWebviewBridge(options) {
1546
- return __async(this, null, function* () {
1547
- if (!supportPlvWebview.value) {
1548
- return;
1549
- }
1550
- let plvWebviewDataSize = {
1551
- width: 90,
1552
- height: 160
1553
- };
1554
- if (injectData.getPlvWebviewSmallWindowSize) {
1555
- plvWebviewDataSize = injectData.getPlvWebviewSmallWindowSize();
1556
- }
1557
- const webviewBridge = yield getPlvWebviewBridge();
1558
- if (!webviewBridge) {
1559
- return;
1560
- }
1561
- webviewBridge.sendData("clickProduct", {
1562
- width: plvWebviewDataSize.width,
1563
- height: plvWebviewDataSize.height,
1564
- newPage: true,
1565
- link: options.link,
1566
- data: options.data
1567
- });
1568
- });
1569
- }
1570
- onMounted(() => {
1571
- if (injectData.isPlvWebview) {
1572
- isPlvWebview.value = injectData.isPlvWebview();
1573
- }
1574
- });
1575
- return {
1576
- isPlvWebview,
1577
- supportPlvWebview,
1578
- getPlvWebviewBridge,
1579
- toPlvWebviewBridge
1642
+ toNativeLink: toNativeLink2
1580
1643
  };
1581
1644
  };
1582
1645
  const productButtonProps = () => __spreadProps(__spreadValues({}, productProps()), {
@@ -1595,12 +1658,12 @@ const useProductButton = (options) => {
1595
1658
  const { isSoldOut } = useProductStock({
1596
1659
  product: () => props.productData
1597
1660
  });
1598
- const { getEmitter } = useGlobalInject();
1661
+ const { getEmitter, injectData } = useGlobalInject();
1599
1662
  const { $t } = useI18n();
1600
1663
  const productConfig = computed(() => {
1601
1664
  return props.productConfig;
1602
1665
  });
1603
- const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram } = useWeixinButton({
1666
+ const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram, supportWxMiniProgramNavigateTo } = useWeixinButton({
1604
1667
  getButtonOptions: () => {
1605
1668
  const productData = props.productData;
1606
1669
  return {
@@ -1611,10 +1674,9 @@ const useProductButton = (options) => {
1611
1674
  },
1612
1675
  launchCallback: () => sendClickEvent()
1613
1676
  });
1614
- const { supportAppNative, toNativeLink } = useAppNative();
1615
- const { supportPlvWebview, toPlvWebviewBridge } = usePolyvWebview();
1677
+ const { supportAppNative } = useAppNative();
1616
1678
  const { trackEvent } = useTrackEvent(props.productTarget.iarCore);
1617
- const { ProductBuyType, ProductType, ProductLinkType, ProductLinkJumpWay } = getProductTargetExport(props.productTarget);
1679
+ const { ProductBuyType, ProductType } = getProductTargetExport(props.productTarget);
1618
1680
  const isDirectBuy = computed(() => {
1619
1681
  return props.productData.productType === ProductType.Normal && props.productData.buyType === ProductBuyType.DirectBuy;
1620
1682
  });
@@ -1641,13 +1703,13 @@ const useProductButton = (options) => {
1641
1703
  if (isDirectBuy.value) {
1642
1704
  return false;
1643
1705
  }
1644
- if (productData.linkType === ProductLinkType.Normal) {
1706
+ if (productData.linkType === LinkType.Normal) {
1645
1707
  return !productData.link;
1646
1708
  }
1647
- if (productData.linkType === ProductLinkType.MultiPlatform) {
1709
+ if (productData.linkType === LinkType.MultiPlatform) {
1648
1710
  return isMultiPlatformDisabled.value;
1649
1711
  }
1650
- if (productData.linkType === ProductLinkType.Native) {
1712
+ if (productData.linkType === LinkType.Native) {
1651
1713
  if (supportAppNative.value) {
1652
1714
  return !productData.androidLink && !productData.iosLink;
1653
1715
  }
@@ -1706,9 +1768,26 @@ const useProductButton = (options) => {
1706
1768
  }
1707
1769
  return concat(url, urlParams);
1708
1770
  }
1771
+ function getLinkData() {
1772
+ const productData = props.productData;
1773
+ const linkData = {
1774
+ linkType: productData.linkType,
1775
+ jumpWay: productData.jumpWay,
1776
+ link: productData.link,
1777
+ pcLink: productData.pcLink,
1778
+ mobileLink: productData.mobileLink,
1779
+ mobileAppLink: productData.mobileAppLink,
1780
+ androidLink: productData.androidLink,
1781
+ iosLink: productData.iosLink,
1782
+ otherLink: productData.otherLink,
1783
+ wxMiniprogramOriginalId: productData.wxMiniprogramOriginalId,
1784
+ wxMiniprogramAppId: productData.wxMiniprogramAppId,
1785
+ wxMiniprogramLink: productData.wxMiniprogramLink
1786
+ };
1787
+ return linkData;
1788
+ }
1709
1789
  function onClickLinkBtn() {
1710
1790
  const productData = props.productData;
1711
- const { linkType } = productData;
1712
1791
  sendClickEvent();
1713
1792
  if (productConfig.value.customClickButtonHandler) {
1714
1793
  productConfig.value.customClickButtonHandler(productData);
@@ -1718,70 +1797,28 @@ const useProductButton = (options) => {
1718
1797
  toDirectBuy();
1719
1798
  return;
1720
1799
  }
1721
- if (productData.linkType === ProductLinkType.Native) {
1722
- toNativeLink({
1723
- androidLink: formatProductLink(productData.androidLink),
1724
- iosLink: formatProductLink(productData.iosLink),
1725
- otherLink: formatProductLink(productData.otherLink)
1726
- });
1727
- return;
1728
- }
1729
- if (supportPlvWebview.value) {
1730
- let linkTo = "";
1731
- const { link, mobileLink, mobileAppLink, wxMiniprogramOriginalId, wxMiniprogramLink } = productData;
1732
- switch (productData.linkType) {
1733
- case ProductLinkType.Normal:
1734
- linkTo = link;
1735
- break;
1736
- case ProductLinkType.MultiPlatform:
1737
- linkTo = mobileAppLink || mobileLink;
1738
- break;
1739
- }
1740
- let otherData = null;
1741
- if (productData.linkType !== ProductLinkType.Normal) {
1742
- otherData = {
1743
- mobileLink: formatProductLink(mobileLink),
1744
- wxMiniprogramOriginalId,
1745
- wxMiniprogramLink: formatProductLink(wxMiniprogramLink),
1746
- mobileAppLink: formatProductLink(mobileAppLink)
1747
- };
1748
- }
1749
- toPlvWebviewBridge({
1750
- link: formatProductLink(linkTo),
1751
- data: otherData
1752
- });
1753
- return;
1754
- }
1755
- if (linkType === ProductLinkType.Normal) {
1756
- const { link, jumpWay } = productData;
1757
- openLink(formatProductLink(link), jumpWay);
1758
- return;
1759
- }
1760
- if (linkType === ProductLinkType.MultiPlatform) {
1761
- const { wxMiniprogramLink, mobileLink, pcLink } = productData;
1762
- if (isWxMiniProgramWebview.value && wxMiniprogramLink) {
1763
- toWxMiniProgram(formatProductLink(wxMiniprogramLink));
1764
- return;
1765
- }
1766
- if (isMobile) {
1767
- openLink(formatProductLink(mobileLink), ProductLinkJumpWay.NewWindow);
1768
- return;
1769
- }
1770
- if (!isMobile) {
1771
- openLink(formatProductLink(pcLink), ProductLinkJumpWay.NewWindow);
1772
- return;
1773
- }
1774
- }
1800
+ const linkData = getLinkData();
1801
+ navigateToLink({
1802
+ linkData,
1803
+ getLinkParams: productConfig.value.getLinkParams,
1804
+ openLink,
1805
+ isPlvWebview: injectData.isPlvWebview,
1806
+ isMobile: injectData.isMobile,
1807
+ getPlvWebviewBridge: injectData.getPlvWebviewBridge,
1808
+ getPlvWebviewSmallWindowSize: injectData.getPlvWebviewSmallWindowSize,
1809
+ isWxMiniProgramEnv: supportWxMiniProgramNavigateTo,
1810
+ toWxMiniProgram
1811
+ });
1775
1812
  }
1776
1813
  function openLink(url, jumpWay) {
1777
1814
  switch (jumpWay) {
1778
- case ProductLinkJumpWay.NewWindow:
1815
+ case LinkJumpWay.NewWindow:
1779
1816
  window.open(url, "_blank", "noopener=yes");
1780
1817
  break;
1781
- case ProductLinkJumpWay.CurrentWindow:
1818
+ case LinkJumpWay.CurrentWindow:
1782
1819
  window.location.href = url;
1783
1820
  break;
1784
- case ProductLinkJumpWay.PopUp:
1821
+ case LinkJumpWay.PopUp:
1785
1822
  getEmitter().emit(productEvents.OpenProductIframeLinkPopup, url);
1786
1823
  break;
1787
1824
  default:
@@ -1804,7 +1841,7 @@ const useProductButton = (options) => {
1804
1841
  name: productData.name,
1805
1842
  productId: productData.productId,
1806
1843
  productType: productData.productType,
1807
- productPushRule: data == null ? void 0 : data.pushRule
1844
+ productPushRule: (data == null ? void 0 : data.pushRule) || ""
1808
1845
  }
1809
1846
  });
1810
1847
  props.productTarget.sendProductClickEvent({
@@ -1874,8 +1911,8 @@ console.log(
1874
1911
  "%c@polyv/product-ui",
1875
1912
  "background:#409EFF;padding: 2px 6px;border-radius: 3px;color: #fff",
1876
1913
  "[component: product-button]",
1877
- "[version: 1.0.0-rc-20250612.3]",
1878
- "[buildTime: 2025-06-12 02:28:59]"
1914
+ "[version: 1.1.0-rc-20250703.1]",
1915
+ "[buildTime: 2025-07-03 01:48:27]"
1879
1916
  );
1880
1917
  export {
1881
1918
  productButton as default