@polyv/product-ui 1.0.0-rc-20250612.4 → 1.2.0-rc-20250724.2

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 +7 -3
  2. package/address-edit.es.js +1194 -1143
  3. package/address-edit.umd.js +7 -3
  4. package/address-item.cjs.js +2 -2
  5. package/address-item.es.js +12 -12
  6. package/address-item.umd.js +4 -3
  7. package/address-list.cjs.js +3 -3
  8. package/address-list.es.js +36 -18
  9. package/address-list.umd.js +3 -3
  10. package/big-card-popup.cjs.js +11 -0
  11. package/big-card-popup.es.d.ts +3 -0
  12. package/big-card-popup.es.js +4439 -0
  13. package/big-card-popup.umd.js +11 -0
  14. package/index.cjs.js +7 -3
  15. package/index.es.js +2644 -1847
  16. package/index.umd.js +7 -3
  17. package/mobile-product-pendant.cjs.js +3 -3
  18. package/mobile-product-pendant.es.js +46 -36
  19. package/mobile-product-pendant.umd.js +3 -3
  20. package/order-confirm.cjs.js +5 -3
  21. package/order-confirm.es.js +311 -293
  22. package/order-confirm.umd.js +5 -3
  23. package/order-detail.cjs.js +5 -3
  24. package/order-detail.es.js +311 -293
  25. package/order-detail.umd.js +5 -3
  26. package/order-item.cjs.js +2 -2
  27. package/order-item.es.js +27 -9
  28. package/order-item.umd.js +4 -3
  29. package/order-list-popup.cjs.js +5 -3
  30. package/order-list-popup.es.js +329 -297
  31. package/order-list-popup.umd.js +5 -3
  32. package/order-list.cjs.js +3 -3
  33. package/order-list.es.js +27 -9
  34. package/order-list.umd.js +3 -3
  35. package/order-popup.cjs.js +7 -3
  36. package/order-popup.es.js +1215 -1156
  37. package/order-popup.umd.js +7 -3
  38. package/package.json +3 -2
  39. package/pc-product-pendant.cjs.js +3 -3
  40. package/pc-product-pendant.es.js +27 -9
  41. package/pc-product-pendant.umd.js +3 -3
  42. package/product-button.cjs.js +3 -3
  43. package/product-button.es.js +318 -267
  44. package/product-button.umd.js +3 -3
  45. package/product-detail-popup.cjs.js +5 -3
  46. package/product-detail-popup.es.js +560 -473
  47. package/product-detail-popup.umd.js +5 -3
  48. package/product-detail.cjs.js +5 -3
  49. package/product-detail.es.js +632 -553
  50. package/product-detail.umd.js +5 -3
  51. package/product-iframe-link-popup.cjs.js +5 -3
  52. package/product-iframe-link-popup.es.js +296 -282
  53. package/product-iframe-link-popup.umd.js +5 -3
  54. package/product-item.cjs.js +5 -3
  55. package/product-item.es.js +720 -494
  56. package/product-item.umd.js +5 -3
  57. package/product-list-popup.cjs.js +5 -3
  58. package/product-list-popup.es.js +753 -585
  59. package/product-list-popup.umd.js +5 -3
  60. package/product-list.cjs.js +5 -3
  61. package/product-list.es.js +744 -584
  62. package/product-list.umd.js +5 -3
  63. package/small-card.cjs.js +10 -0
  64. package/small-card.es.d.ts +3 -0
  65. package/small-card.es.js +4496 -0
  66. package/small-card.umd.js +11 -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,.plv-product-button__render{position:relative}.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": "取消",
@@ -1065,11 +1164,14 @@ const zhCNLang = {
1065
1164
  "product.disableBuy": "暂不支持购买",
1066
1165
  "product.allProduct": "全部商品",
1067
1166
  "product.stock.soldOut": "已抢光",
1167
+ "product.position.detail": "职位详情",
1068
1168
  order: order$5,
1069
- addressEdit: addressEdit$5
1169
+ addressEdit: addressEdit$5,
1170
+ bigCard: bigCard$5
1070
1171
  };
1071
1172
  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
1173
  const addressEdit$4 = { "name": "聯絡人", "namePlaceholder": "請填寫聯絡人", "choiceAddress": "選擇地區", "addressPlaceholder": "請選擇地區", "phone": "手機號碼", "phonePlaceholder": "請填寫手機號碼", "phoneError": "請輸入正確的手機號", "addressDetail": "詳細地址", "addressDetailPlaceholder": "請填寫詳細地址", "error": "請完善信息", "submit": "保存", "deleteConfirm": "確定要刪除該地址嗎?", "deleteAddress": "刪除地址", "addAddress": "添加地址", "editAddress": "修改地址", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "修改成功", "editError": "修改失敗" };
1174
+ const bigCard$4 = { "title": "商品推薦" };
1073
1175
  const zhTWLang = {
1074
1176
  "common.confirm": "確認",
1075
1177
  "common.cancel": "取消",
@@ -1096,11 +1198,14 @@ const zhTWLang = {
1096
1198
  "product.disableBuy": "暫不支持購買",
1097
1199
  "product.allProduct": "全部商品",
1098
1200
  "product.stock.soldOut": "已搶光",
1201
+ "product.position.detail": "職位詳情",
1099
1202
  order: order$4,
1100
- addressEdit: addressEdit$4
1203
+ addressEdit: addressEdit$4,
1204
+ bigCard: bigCard$4
1101
1205
  };
1102
1206
  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
1207
  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" };
1208
+ const bigCard$3 = { "title": "Top Picks" };
1104
1209
  const enLang = {
1105
1210
  "common.confirm": "Confirm",
1106
1211
  "common.cancel": "Cancel",
@@ -1127,11 +1232,14 @@ const enLang = {
1127
1232
  "product.disableBuy": "Purchase not supported",
1128
1233
  "product.allProduct": "Products",
1129
1234
  "product.stock.soldOut": "Sold Out",
1235
+ "product.position.detail": "Job Details",
1130
1236
  order: order$3,
1131
- addressEdit: addressEdit$3
1237
+ addressEdit: addressEdit$3,
1238
+ bigCard: bigCard$3
1132
1239
  };
1133
1240
  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
1241
  const addressEdit$2 = { "name": "連絡先", "namePlaceholder": "連絡先を入力", "choiceAddress": "地域を選択", "addressPlaceholder": "地域を選択", "phone": "電話番号", "phonePlaceholder": "電話番号を入力", "phoneError": "正しい電話番号を入力してください", "addressDetail": "詳細住所", "addressDetailPlaceholder": "詳細住所を入力", "error": "情報を入力してください", "submit": "保存", "deleteConfirm": "この住所を削除しますか?", "deleteAddress": "住所を削除", "addAddress": "住所を追加", "editAddress": "住所を編集", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "編集成功", "editError": "編集失敗" };
1242
+ const bigCard$2 = { "title": "商品推薦" };
1135
1243
  const jaLang = {
1136
1244
  "common.confirm": "確認",
1137
1245
  "common.cancel": "キャンセル",
@@ -1158,11 +1266,14 @@ const jaLang = {
1158
1266
  "product.disableBuy": "購入不可",
1159
1267
  "product.allProduct": "すべての商品",
1160
1268
  "product.stock.soldOut": "売り切れ",
1269
+ "product.position.detail": "職務詳細",
1161
1270
  order: order$2,
1162
- addressEdit: addressEdit$2
1271
+ addressEdit: addressEdit$2,
1272
+ bigCard: bigCard$2
1163
1273
  };
1164
1274
  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
1275
  const addressEdit$1 = { "name": "연락처", "namePlaceholder": "연락처 입력", "choiceAddress": "지역 선택", "addressPlaceholder": "지역 선택", "phone": "전화번호", "phonePlaceholder": "전화번호 입력", "phoneError": "올바른 전화번호를 입력해주세요", "addressDetail": "상세 주소", "addressDetailPlaceholder": "상세 주소 입력", "error": "정보를 입력해주세요.", "submit": "저장", "deleteConfirm": "주소를 삭제하시겠습니까?", "deleteAddress": "주소 삭제", "addAddress": "주소 추가", "editAddress": "주소 수정", "addSuccess": "저장 성공", "addError": "저장 실패", "editSuccess": "수정 성공", "editError": "수정 실패" };
1276
+ const bigCard$1 = { "title": "상품 추천" };
1166
1277
  const koLang = {
1167
1278
  "common.confirm": "확인",
1168
1279
  "common.cancel": "취소",
@@ -1189,11 +1300,14 @@ const koLang = {
1189
1300
  "product.disableBuy": "구매 불가",
1190
1301
  "product.allProduct": "모든 상품",
1191
1302
  "product.stock.soldOut": "품절",
1303
+ "product.position.detail": "직무 상세",
1192
1304
  order: order$1,
1193
- addressEdit: addressEdit$1
1305
+ addressEdit: addressEdit$1,
1306
+ bigCard: bigCard$1
1194
1307
  };
1195
1308
  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
1309
  const addressEdit = { "name": "Контактное лицо", "namePlaceholder": "Пожалуйста, введите имя контактного лица", "choiceAddress": "Выберите регион", "addressPlaceholder": "Пожалуйста, выберите регион", "phone": "Номер телефона", "phonePlaceholder": "Пожалуйста, введите номер телефона", "phoneError": "Пожалуйста, введите правильный номер телефона", "addressDetail": "Подробный адрес", "addressDetailPlaceholder": "Пожалуйста, заполните подробный адрес", "error": "Пожалуйста, дополните информацию", "submit": "Сохранить", "deleteConfirm": "Вы уверены, что хотите удалить этот адрес?", "addAddress": "Добавить адрес", "editAddress": "Изменить адрес", "deleteAddress": "Удалить адрес", "addSuccess": "Успешно сохранено", "addError": "Не удалось сохранить", "editSuccess": "Успешно изменено", "editError": "Не удалось изменить" };
1310
+ const bigCard = { "title": "Товары" };
1197
1311
  const ruLang = {
1198
1312
  "common.confirm": "Подтвердить",
1199
1313
  "common.cancel": "Отмена",
@@ -1220,8 +1334,10 @@ const ruLang = {
1220
1334
  "product.disableBuy": "Покупка временно недоступна",
1221
1335
  "product.allProduct": "Все товары",
1222
1336
  "product.stock.soldOut": "Распродано",
1337
+ "product.position.detail": "Детали вакансии",
1223
1338
  order,
1224
- addressEdit
1339
+ addressEdit,
1340
+ bigCard
1225
1341
  };
1226
1342
  const fullI18nData = {
1227
1343
  [LangType.ZH_CN]: zhCNLang,
@@ -1304,7 +1420,8 @@ function getProductTargetExport(productTarget) {
1304
1420
  ProductExplainStatus: productTarget.ProductExplainStatus,
1305
1421
  ProductMediaType: productTarget.ProductMediaType,
1306
1422
  ProductDeliveryType: productTarget.ProductDeliveryType,
1307
- ProductEvents: productTarget.ProductEvents
1423
+ ProductEvents: productTarget.ProductEvents,
1424
+ ProductPushRule: productTarget.ProductPushRule
1308
1425
  };
1309
1426
  }
1310
1427
  const PRODUCT_PROVIDE_KEY = Symbol("PRODUCT_PROVIDE_KEY");
@@ -1330,17 +1447,25 @@ const useProductStock = (options) => {
1330
1447
  ProductBuyType = result.ProductBuyType;
1331
1448
  }
1332
1449
  function getStock(target) {
1333
- if (!ProductType || !ProductBuyType) {
1450
+ if (!ProductType || !ProductBuyType || !target) {
1334
1451
  return {
1335
1452
  enabled: false,
1336
1453
  stock: 0
1337
1454
  };
1338
1455
  }
1339
- if ((target == null ? void 0 : target.productType) === ProductType.Normal && target.buyType === ProductBuyType.DirectBuy && (target == null ? void 0 : target.stockEnabled)) {
1340
- return {
1341
- enabled: true,
1342
- stock: target.stock
1343
- };
1456
+ if (target.productType === ProductType.Normal) {
1457
+ if (target.buyType === ProductBuyType.Link && target.forceShowSoldOut) {
1458
+ return {
1459
+ enabled: true,
1460
+ stock: 0
1461
+ };
1462
+ }
1463
+ if (target.buyType === ProductBuyType.DirectBuy && (target == null ? void 0 : target.stockEnabled)) {
1464
+ return {
1465
+ enabled: true,
1466
+ stock: target.stock
1467
+ };
1468
+ }
1344
1469
  }
1345
1470
  return {
1346
1471
  enabled: false,
@@ -1364,7 +1489,7 @@ const useProductStock = (options) => {
1364
1489
  isSoldOut
1365
1490
  };
1366
1491
  };
1367
- const htmlChars = ['"', "'", "&", "<", ">"], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
1492
+ const htmlChars = ['"', "'", "&", "<", ">", " "], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;", "&nbsp;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
1368
1493
  htmlChars.forEach((n2, e) => {
1369
1494
  charsToEntities[n2] = htmlEntities[e], entitiesToChars[htmlEntities[e]] = n2;
1370
1495
  });
@@ -1419,7 +1544,7 @@ const useWeixinButton = (hookOptions = {}) => {
1419
1544
  }
1420
1545
  const wx = yield injectData.getWeixinSdk();
1421
1546
  (_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.navigateTo({
1422
- url
1547
+ url: url.startsWith("/") ? url : `/${url}`
1423
1548
  });
1424
1549
  return;
1425
1550
  });
@@ -1474,7 +1599,9 @@ const useWeixinButton = (hookOptions = {}) => {
1474
1599
  watch(
1475
1600
  () => [weixinBtnRef.value, supportWxOpenLaunchWeapp.value, buttonOptions.value],
1476
1601
  () => {
1477
- createWxMiniProgramButton();
1602
+ setTimeout(() => {
1603
+ createWxMiniProgramButton();
1604
+ }, 500);
1478
1605
  },
1479
1606
  {
1480
1607
  immediate: true
@@ -1491,7 +1618,7 @@ const useWeixinButton = (hookOptions = {}) => {
1491
1618
  };
1492
1619
  };
1493
1620
  const useAppNative = () => {
1494
- function getNativeToPointMallFn() {
1621
+ function getNativeToPointMallFn2() {
1495
1622
  var _a, _b, _c, _d;
1496
1623
  if (isAndroid) {
1497
1624
  return (_a = window.AndroidNative) == null ? void 0 : _a.toPointMall;
@@ -1500,14 +1627,14 @@ const useAppNative = () => {
1500
1627
  }
1501
1628
  }
1502
1629
  function supportNativeToPointMall() {
1503
- return !!getNativeToPointMallFn();
1630
+ return !!getNativeToPointMallFn2();
1504
1631
  }
1505
1632
  const supportAppNative = computed(() => {
1506
1633
  return supportNativeToPointMall();
1507
1634
  });
1508
- function toNativeLink(options) {
1635
+ function toNativeLink2(options) {
1509
1636
  const { androidLink, iosLink, otherLink } = options;
1510
- const nativePointMallFn = getNativeToPointMallFn();
1637
+ const nativePointMallFn = getNativeToPointMallFn2();
1511
1638
  if (nativePointMallFn) {
1512
1639
  let url = isAndroid ? androidLink : iosLink;
1513
1640
  const pltBackUri = encodeURIComponent(location.href);
@@ -1523,60 +1650,10 @@ const useAppNative = () => {
1523
1650
  window.open(otherLink, "_blank", "noopener=yes");
1524
1651
  }
1525
1652
  return {
1526
- getNativeToPointMallFn,
1653
+ getNativeToPointMallFn: getNativeToPointMallFn2,
1527
1654
  supportNativeToPointMall,
1528
1655
  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
1656
+ toNativeLink: toNativeLink2
1580
1657
  };
1581
1658
  };
1582
1659
  const productButtonProps = () => __spreadProps(__spreadValues({}, productProps()), {
@@ -1595,12 +1672,12 @@ const useProductButton = (options) => {
1595
1672
  const { isSoldOut } = useProductStock({
1596
1673
  product: () => props.productData
1597
1674
  });
1598
- const { getEmitter } = useGlobalInject();
1675
+ const { getEmitter, injectData } = useGlobalInject();
1599
1676
  const { $t } = useI18n();
1600
1677
  const productConfig = computed(() => {
1601
1678
  return props.productConfig;
1602
1679
  });
1603
- const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram } = useWeixinButton({
1680
+ const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram, supportWxMiniProgramNavigateTo } = useWeixinButton({
1604
1681
  getButtonOptions: () => {
1605
1682
  const productData = props.productData;
1606
1683
  return {
@@ -1611,10 +1688,9 @@ const useProductButton = (options) => {
1611
1688
  },
1612
1689
  launchCallback: () => sendClickEvent()
1613
1690
  });
1614
- const { supportAppNative, toNativeLink } = useAppNative();
1615
- const { supportPlvWebview, toPlvWebviewBridge } = usePolyvWebview();
1691
+ const { supportAppNative } = useAppNative();
1616
1692
  const { trackEvent } = useTrackEvent(props.productTarget.iarCore);
1617
- const { ProductBuyType, ProductType, ProductLinkType, ProductLinkJumpWay } = getProductTargetExport(props.productTarget);
1693
+ const { ProductBuyType, ProductType } = getProductTargetExport(props.productTarget);
1618
1694
  const isDirectBuy = computed(() => {
1619
1695
  return props.productData.productType === ProductType.Normal && props.productData.buyType === ProductBuyType.DirectBuy;
1620
1696
  });
@@ -1641,13 +1717,13 @@ const useProductButton = (options) => {
1641
1717
  if (isDirectBuy.value) {
1642
1718
  return false;
1643
1719
  }
1644
- if (productData.linkType === ProductLinkType.Normal) {
1720
+ if (productData.linkType === LinkType.Normal) {
1645
1721
  return !productData.link;
1646
1722
  }
1647
- if (productData.linkType === ProductLinkType.MultiPlatform) {
1723
+ if (productData.linkType === LinkType.MultiPlatform) {
1648
1724
  return isMultiPlatformDisabled.value;
1649
1725
  }
1650
- if (productData.linkType === ProductLinkType.Native) {
1726
+ if (productData.linkType === LinkType.Native) {
1651
1727
  if (supportAppNative.value) {
1652
1728
  return !productData.androidLink && !productData.iosLink;
1653
1729
  }
@@ -1706,9 +1782,26 @@ const useProductButton = (options) => {
1706
1782
  }
1707
1783
  return concat(url, urlParams);
1708
1784
  }
1785
+ function getLinkData() {
1786
+ const productData = props.productData;
1787
+ const linkData = {
1788
+ linkType: productData.linkType,
1789
+ jumpWay: productData.jumpWay,
1790
+ link: productData.link,
1791
+ pcLink: productData.pcLink,
1792
+ mobileLink: productData.mobileLink,
1793
+ mobileAppLink: productData.mobileAppLink,
1794
+ androidLink: productData.androidLink,
1795
+ iosLink: productData.iosLink,
1796
+ otherLink: productData.otherLink,
1797
+ wxMiniprogramOriginalId: productData.wxMiniprogramOriginalId,
1798
+ wxMiniprogramAppId: productData.wxMiniprogramAppId,
1799
+ wxMiniprogramLink: productData.wxMiniprogramLink
1800
+ };
1801
+ return linkData;
1802
+ }
1709
1803
  function onClickLinkBtn() {
1710
1804
  const productData = props.productData;
1711
- const { linkType } = productData;
1712
1805
  sendClickEvent();
1713
1806
  if (productConfig.value.customClickButtonHandler) {
1714
1807
  productConfig.value.customClickButtonHandler(productData);
@@ -1718,70 +1811,28 @@ const useProductButton = (options) => {
1718
1811
  toDirectBuy();
1719
1812
  return;
1720
1813
  }
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
- }
1814
+ const linkData = getLinkData();
1815
+ navigateToLink({
1816
+ linkData,
1817
+ getLinkParams: productConfig.value.getLinkParams,
1818
+ openLink,
1819
+ isPlvWebview: injectData.isPlvWebview,
1820
+ isMobile: injectData.isMobile,
1821
+ getPlvWebviewBridge: injectData.getPlvWebviewBridge,
1822
+ getPlvWebviewSmallWindowSize: injectData.getPlvWebviewSmallWindowSize,
1823
+ isWxMiniProgramEnv: supportWxMiniProgramNavigateTo,
1824
+ toWxMiniProgram
1825
+ });
1775
1826
  }
1776
1827
  function openLink(url, jumpWay) {
1777
1828
  switch (jumpWay) {
1778
- case ProductLinkJumpWay.NewWindow:
1829
+ case LinkJumpWay.NewWindow:
1779
1830
  window.open(url, "_blank", "noopener=yes");
1780
1831
  break;
1781
- case ProductLinkJumpWay.CurrentWindow:
1832
+ case LinkJumpWay.CurrentWindow:
1782
1833
  window.location.href = url;
1783
1834
  break;
1784
- case ProductLinkJumpWay.PopUp:
1835
+ case LinkJumpWay.PopUp:
1785
1836
  getEmitter().emit(productEvents.OpenProductIframeLinkPopup, url);
1786
1837
  break;
1787
1838
  default:
@@ -1804,7 +1855,7 @@ const useProductButton = (options) => {
1804
1855
  name: productData.name,
1805
1856
  productId: productData.productId,
1806
1857
  productType: productData.productType,
1807
- productPushRule: data == null ? void 0 : data.pushRule
1858
+ productPushRule: (data == null ? void 0 : data.pushRule) || ""
1808
1859
  }
1809
1860
  });
1810
1861
  props.productTarget.sendProductClickEvent({
@@ -1874,8 +1925,8 @@ console.log(
1874
1925
  "%c@polyv/product-ui",
1875
1926
  "background:#409EFF;padding: 2px 6px;border-radius: 3px;color: #fff",
1876
1927
  "[component: product-button]",
1877
- "[version: 1.0.0-rc-20250612.4]",
1878
- "[buildTime: 2025-06-12 09:58:32]"
1928
+ "[version: 1.2.0-rc-20250724.2]",
1929
+ "[buildTime: 2025-07-24 03:57:27]"
1879
1930
  );
1880
1931
  export {
1881
1932
  productButton as default