@polyv/product-ui 1.0.0-rc-20250612.4 → 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 +1418 -692
  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 +243 -185
  47. package/product-detail-popup.umd.js +3 -3
  48. package/product-detail.cjs.js +3 -3
  49. package/product-detail.es.js +315 -265
  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 +397 -204
  56. package/product-item.umd.js +3 -3
  57. package/product-list-popup.cjs.js +3 -3
  58. package/product-list-popup.es.js +423 -295
  59. package/product-list-popup.umd.js +3 -3
  60. package/product-list.cjs.js +3 -3
  61. package/product-list.es.js +414 -294
  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 o=document.createElement("style");o.appendChild(document.createTextNode('@charset "UTF-8";@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-product-c-explain--explaining{display:flex;justify-content:center;align-items:center;width:100%;height:20px;border-radius:0 0 8px 8px;background:#ff6264cc;color:#fff;font-size:12px;font-weight:500;backdrop-filter:blur(3px)}.plv-product-c-explain--explaining .plv-product-c-explain--explaining-icon{width:14px;height:14px;margin-right:2px;vertical-align:top}.plv-product-c-explain--explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(255,98,100,.3);border-radius:20px;background:#fff;color:#ff6264;font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer}.plv-product-c-explain--not-explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(0,0,0,.1);border-radius:20px;background:#fff;color:#666;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--explaining-cover{position:absolute;bottom:0;left:0}.plv-product-c-explain--not-explained-cover,.plv-product-c-explain--explained-cover{position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.plv-product-c-explain--no-cover .plv-product-c-explain--explaining{width:52px;height:16px;padding:1px 2px;border:1px solid rgba(255,82,82,.6);border-radius:2px;background:#ff5252;color:#fff;font-size:12px;white-space:nowrap;transform:scale(.8333)}.plv-product-c-explain--no-cover .plv-product-c-explain--explained{width:60px;height:24px;padding:3px 12px;background:transparent;color:#ff5252;font-size:12px}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained{display:flex;box-sizing:border-box;height:16px;margin-left:4px;padding:1px 4px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained span{display:inline-block;transform:scale(.833);user-select:none}@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-product-c-item__title-container{position:relative;margin-bottom:6px}.plv-product-c-item__title{color:#000c;font-size:14px;font-weight:500;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.plv-product-c-item__title--single{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__title-more{position:absolute;top:22px;right:-6px;display:flex;border:none;background:none}.plv-product-c-item__title-more-icon{display:flex;color:#0006;font-size:16px}.plv-product-c-item__title--expanded{-webkit-line-clamp:unset}@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-product-c-item__tag-container{box-sizing:border-box;margin-right:4px;padding:0 1px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__tag{display:inline-block;transform:scale(.833);user-select:none}@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-product-c-item__price-area{display:flex;align-items:baseline}.plv-product-c-item__price{color:#ff5252;font-size:18px}.plv-product-c-item__price-custom{font-size:14px}.plv-product-c-item__price-symbol{color:#ff5252;font-size:12px}.plv-product-c-item__price-placeholder{margin-left:2px;color:#ff5252;font-size:18px}.plv-product-c-item__placeholder-text{margin:6px 2px 0 3px;color:#0006;font-size:12px}.plv-product-c-item__original-price{margin-left:2px;color:#0006;font-size:12px;line-height:14px;text-decoration:line-through}.plv-product-c-item__price-finance{color:#ff5252;font-size:14px}@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-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}.plv-radio{cursor:pointer;line-height:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.plv-radio:last-of-type{margin-right:0}.plv-radio .plv-radio__inner{-ms-flex-negative:0;flex-shrink:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;border-radius:8px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;vertical-align:middle}.plv-radio .plv-radio__label{color:#1d2129;font-size:14px;padding-left:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;line-height:16px;word-break:break-word}.plv-radio:hover .plv-radio__inner{border-color:#3f76fc}.plv-radio.plv-radio--checked .plv-radio__inner{border-width:4px;border-color:#3f76fc}.plv-radio.plv-radio--disabled{cursor:not-allowed}.plv-radio.plv-radio--disabled .plv-radio__inner{border-color:#e5e5e5;background:#f9fafd}.plv-radio.plv-radio--disabled .plv-radio__label{color:#969ba5}.plv-radio.plv-radio--disabled.plv-radio--checked .plv-radio__inner{background:#f9fafd}.plv-radio.plv-radio--readonly{cursor:default}.plv-radio.plv-radio--readonly:hover .plv-radio__inner{border-color:#e5e5e5}.plv-radio.plv-radio--readonly:hover .plv-radio__inner.plv-radio__inner--checked{border-color:#3f76fc}.plv-radio--border{min-width:80px;height:36px!important;padding:0 16px;border-radius:2px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;position:relative;margin-right:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.plv-radio--border:hover{border-color:#3f76fc}.plv-radio--border .plv-radio__label{padding-left:0;font-size:12px;float:none}.plv-radio--border.plv-radio--checked{border-width:2px;border-color:#3f76fc}.plv-radio--border .plv-radio__corner{position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAJiklEQVR4Xu3du4ucVRjH8TOE7LRWVhZWioraWKlg0MJSEHJTsPAf8B9QDAiiIFpZipVgl8Q/QUSwjWhh1EqsZDdo2M3FXWV2d7I793Pec3suX8v4vuc85/c8n8w7M9lkFPiPBEhgaQKPfv7PlRHZkAAJLCZwiGMU3gcI00ECcwlMcUx+GSCMBwmcSuA0DoAwGiSwBgdAGA8SOE5g/pVjGgyPWIyI+wRW4eAVxP1oEMA6HABhPlwnsAkHQFyPh+/Dx+AAiO8ZcXv6WBwAcTsifg+eggMgfufE5clTcQDE5Zj4PPQQHADxOSvuTj0UB0DcjYq/A+fgAIi/eXF14lwcAHE1Lr4OWwIHQHzNjJvTlsIBEDcj4+egJXEAxM/cuDhpaRwAcTE2Pg5ZAwdAfMyO+VPWwgEQ86Nj/4A1cQDE/vyYPmFtHAAxPT62D9cCB0Bsz5DZ07XCARCzI2T3YC1xAMTuHJk8WWscADE5RjYP1QMHQGzOkrlT9cIBEHOjZO9APXEAxN48mTpRbxwAMTVOtg4jAQdAbM2UmdNIwQEQMyNl5yCScADEzlyZOIk0HAAxMVY2DiERB0BszJb6U0jFARD1o6X/AJJxAET/fKk+gXQcAFE9XrqL14ADILpnTG31WnAARO2I6S1cEw6A6J0zlZVrwwEQlWOms2iNOACic9bUVa0VB0DUjZq+gjXjAIi+eVNVsXYcAFE1brqKtYADILpmTk21VnAARM3I6SnUEg6A6Jk7FZVawwEQFWOno0iLOACiY/bEV2kVB0DEj578Ai3jAIj8+RNdoXUcABE9frKL84ADILJnUGx1XnAAROwIyi3MEw6AyJ1DkZV5wwEQkWMosyiPOAAicxbFVeUVB0DEjaK8gjzjAIi8eRRVkXccABE1jrKKAcdRP0ay2kI1EhIAx0kXACJhIgXVAI7ZZgBE0HD2LgUcix0ASO+pFLI/OJY3AiBCBrRnGeBYnT5Aek6mgL3Bsb4JABEwpL1KAMfm5AGyOSOTV4Ajrq0AicvJ1FXgiG8nQOKzMnElONLaCJC0vFRfDY709gEkPTOVd4BjWNsAMiw3VXeBY3i7ADI8OxV3giOvTQDJy0/03eDIbw9A8jMUuQI4yrQFIGVyFLUKOMq1AyDlshSxEjjKtgEgZfPsuho4yscPkPKZdlkRHHViB0idXJuuCo56cQOkXrZNVgZH3ZgBUjffqquDo2q8h4sDpH7GVXYAR5VYFxYFSJuci+4CjqJxrl0MIO2yLrITOIrEGL0IQKKj6n8hONr3ACDtMx+0IzgGxZZ9E0CyI6y/ADjqZ7xqB4D0yz5qZ3BExVTtIoBUizZ/YXDkZ5i7AkByE6x0PzgqBZu4LEASA2txOThapBy3B0Dicmp2FTiaRR21EUCiYmpzETja5JyyC0BS0qp4LTgqhpuxNEAywit1KzhKJVl+HYCUzzRpRXAkxdX8YoA0j/xkQ3B0DD9ya4BEBlX6MnCUTrTOegCpk+vaVcHRIfSBWwJkYHBDbwPH0OT63AeQhrmDo2HYhbYCSKEgNy0Djk0Jyfz/AGnQF3A0CLnSFgCpFOx0WXBUDrjy8gCpGDA48sJ9/pEz4fs/9vMWybwbIJkBrrodHHnBXnlxK7z19Fb44Lu74csf7+ctlnE3QDLCA0eF8EIIUxzT1XsiAUjhHvPKkRfoPI7eSACS18+Zu8GRF+YqHD2RACSvpw/uBkdekJtwTFd/79s74auf/s3bLOFugCSExXuOAmEtWSIWRw8kAMnsOa8ceQGm4miNBCAZ/QVHRnhLPq1KXa3F4xZAUrtyfD04BgZ3fNvQV475XWsjAciAPoNjQGinbimFo8XjFkASew2OxMDmLi+NozYSgCT0GxwJYRX4tCp1txqPWwCJ7AI4IoNacVmtV47a70kAEtF3cESEtOaSVjhqPG4BZEPvwaELR2kkAFnTfwk43nluK3xx4364fe+/vEntcPe7L2yFt5/Z6rBzCDd3DsKrX+9m7w2QFRH2xjFpzKevjMNrj50NP/+1Hy5d2wu3+/1YRPKgtX6sOl3gbzsH4eK13bB9J7nshRsAsiRDSTim5WlCYgXHJHuAzAGRiEMTEks4AKIIhwYk1nAA5BQQya8c80+BEh+3PnxpHC49eTb/oX/ACiXfc8xvzyNWCEETDomvJFZx8AqiFIckJJZxuAei8ZVj2ePWG9f3wt/3BjybZN5iHYdrIBZwTOf7l+39cOFqWyQecLgFYglHDyRecLgEYhFHSySecLgDYhlHCyTecLgC4gFHTSQecbgB0hvHJOjPjv/gYeYHR9G3l3zj7hWHCyAScHx8bhzOP9H+W+YSSDzjMA9EAo5JyJ+8PA6vP94eyGTvHCTecZgGIgXH9JmoN5LL1/fCTsLPR4DjqHMm/yyWNBwSkPx+6yCcv7obhQQcJ2/1zAGRikMLEnDMfg5iCoh0HNKRgGPxQ0IzQLTgkIoEHMs/QTcBRBsOaUjAsfrrJfVAtOKYtuSjc+NwocN3JJP9f905CD/8uR/efKrPR9A3tw/C5W/2wvae3L/SSDUQ7TgkvJJEfzVf+MKaPyZbslS1QKzg8IhECw6134NYw+EJiSYcKoFYxeEBiTYc6oBYx2EZiUYcqoB4wWERiVYcaoB4w2EJiWYcKoB4xWEBiXYc4oF4x6EZiQUcooGAY/brrp4/T5L6xZsVHGKBgGP5SGpAYgmHSCDgWP/7tWQk1nCIAwKOuIcZiUgs4hAFBBxxOCS+cbeKQwwQcKThkITEMg4RQMAxDIcEJNZxdAcCjjwcPZF4wNEVCDjK4OiBxAuObkDAURZHSySecHQBAo46OFog8YajORBw1MVRE4lHHE2BgKMNjhpIvOJoBgQcbXGUROIZRxMg4OiDowQS7ziqAwFHXxw5SMBxlF61vxcLHDJwDEECjpPeVQECDlk4UpCAY7Z3xYGAQyaOGCTgWOxdUSDgkI1jHRJwLO9dMSDg0IFjGRJwrO5dESDg0IXjNJJnHz4TLl7bDdsJ/8CnztMOqzobCDiGBS/lrofGo3Drrtx/n6N3TllAwNG7fexfO4HBQMBRuzWsLyGBQUDAIaF11NAigWQg4GjRFvaQkkASEHBIaRt1tEogGgg4WrWEfSQlEAUEHJJaRi0tE9gIBBwt28Fe0hJYCwQc0tpFPa0TWAkEHK1bwX4SE1gKBBwSW0VNPRJYAAKOHm1gT6kJzAABh9Q2UVevBB4AAUevFrCv5AQOgYBDcouorWcCI3D0jJ+9pSfwP3eG5IxiNQqFAAAAAElFTkSuQmCC);background-size:100% 100%}.plv-radio--border.plv-radio--disabled{background:#f9fafd;border-color:#e5e5e5!important}.plv-radio--border.plv-radio--disabled:hover,.plv-radio--border.plv-radio--readonly{border-color:#e5e5e5}.plv-radio--border.plv-radio--readonly.plv-radio--checked{border-color:#3f76fc}@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-product-common-popup{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006}.plv-product-common-popup__body{position:absolute;display:flex;flex-direction:column;width:100%;max-height:90%;overflow:hidden;border-radius:16px 16px 0 0;background:#fff}.plv-product-common-popup__header{position:relative;z-index:2;display:flex;flex-shrink:0;justify-content:center;align-items:center;padding:0 54px}.plv-product-common-popup__back{position:absolute;top:50%;left:18px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:20px;transform:translateY(-50%);cursor:pointer}.plv-product-common-popup__title{color:#000c;font-size:16px;font-weight:500;text-align:center}.plv-product-common-popup__header-right{position:absolute;top:50%;right:12px;display:flex;align-items:center;transform:translateY(-50%)}.plv-product-common-popup__close{display:flex;color:#0009;font-size:24px;cursor:pointer}.plv-product-common-popup__content{position:relative;z-index:2;display:flex;flex:1;overflow:hidden}.plv-product-common-popup__inner{flex:1;overflow-y:auto}.plv-product-common-popup__body--bg1{background:linear-gradient(180deg,#fee5e1,#fef9f4)}.plv-product-common-popup__body--bg1:before{position:absolute;top:-26px;right:-87px;z-index:1;width:176px;height:168px;background:#fdf0d5;pointer-events:none;content:"";filter:blur(80px)}.plv-product-common-popup__body--bg1 .plv-product-common-popup__content{padding:0 12px 30px}.plv-product-common-popup__body--bg1 .plv-product-common-popup__inner{border-radius:12px;background:#fff}.plv-product-common-popup--hide-modal{background:none;pointer-events:none}.plv-product-common-popup--hide-modal .plv-product-common-popup__body{pointer-events:initial}.plv-product-common-popup--fill-body .plv-product-common-popup__content{height:90%}.plv-product-common-popup--mobile .plv-product-common-popup__body{border-radius:16px 16px 0 0}.plv-product-common-popup--position-bottom .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(0, 100%);--plv-product-popup-animation-end: translate(0, 0);bottom:0;left:0}.plv-product-common-popup--position-left .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(-100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;left:0;height:100%;max-height:100%}.plv-product-common-popup--position-right .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;right:0;height:100%;max-height:100%}.plv-product-common-popup--position-center .plv-product-common-popup__body{top:50%;left:50%;max-height:90%;animation:none!important;transform:translate(-50%,-50%)}.plv-product-common-popup--horizontal-screen .plv-product-common-popup__body{border-radius:0}.plv-product-common-popup--page-fullscreen{top:50%;left:50%;width:100vh;height:100vw;transform:translate(-50%,-50%) rotate(90deg)}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__body,.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__content{overflow:initial}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__inner{overflow-y:initial}.plv-product-common-popup-slide-enter-active{animation:plv-product-common-popup-slide-in .2s ease-in-out}.plv-product-common-popup-slide-leave-active{animation:plv-product-common-popup-slide-in .15s reverse ease-in-out}@keyframes plv-product-common-popup-slide-in{0%{transform:var(--plv-product-popup-animation-start)}to{transform:var(--plv-product-popup-animation-end)}}@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-item{position:relative;display:flex;box-sizing:border-box;height:124px;margin-bottom:8px;padding:12px;border-radius:8px;background-color:#fff;cursor:pointer}.plv-product-item__ranking{box-sizing:border-box;min-width:19px;height:16px;padding:1px 6px;border-radius:2px;background:#0006;color:#fff;font-size:12px;font-weight:700;line-height:14px}.plv-product-item__ranking--cover{position:absolute;top:2px;left:2px}.plv-product-item__cover-area{position:relative;flex:none;overflow:hidden;margin-right:8px;border-radius:4px}.plv-product-item__cover-stock{position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#00000080;color:#fff;font-size:12px}.plv-product-item__cover{width:100px;height:100px;object-fit:cover}.plv-product-item__content{display:flex;flex-grow:1;flex-direction:column;justify-content:space-between;min-width:0}.plv-product-item__content .plv-product-c-item__title-container{min-width:0;margin-bottom:0}.plv-product-item__title-area{display:flex;align-items:center}.plv-product-item__tags{display:flex;flex-wrap:wrap;margin-top:6px;margin-bottom:6px}.plv-product-item__description{margin:0;color:#0006;font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-item__footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.plv-product-item__explained--no-cover{margin-right:12px;margin-left:auto}.plv-product-item__buy-button{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:24px;padding:3px 12px;border:none;border-radius:16px;background:#ff5252;color:#fff;font-size:12px;white-space:nowrap;outline:none}.plv-product-item__buy-button--disabled{background:#ff525299;color:#fff}.plv-product-item-no-cover .plv-product-c-item__title{margin-left:4px}.plv-product-item--topping{background:#f15d5d14}')),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}}();
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var o=document.createElement("style");o.appendChild(document.createTextNode('@charset "UTF-8";.plv-product-c-explain--explaining{display:flex;justify-content:center;align-items:center;width:100%;height:20px;border-radius:0 0 4px 4px;background:#ff6264cc;color:#fff;font-size:12px;font-weight:500;backdrop-filter:blur(3px)}.plv-product-c-explain--explaining .plv-product-c-explain--explaining-icon{width:14px;height:14px;margin-right:2px;vertical-align:top}.plv-product-c-explain--explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(255,98,100,.3);border-radius:20px;background:#fff;color:#ff6264;font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer}.plv-product-c-explain--not-explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(0,0,0,.1);border-radius:20px;background:#fff;color:#666;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--explaining-cover{position:absolute;bottom:0;left:0}.plv-product-c-explain--not-explained-cover,.plv-product-c-explain--explained-cover{position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.plv-product-c-explain--no-cover .plv-product-c-explain--explaining{width:52px;height:16px;padding:1px 2px;border:1px solid rgba(255,82,82,.6);border-radius:2px;background:#ff5252;color:#fff;font-size:12px;white-space:nowrap;transform:scale(.8333)}.plv-product-c-explain--no-cover .plv-product-c-explain--explaining span{margin-top:2px}.plv-product-c-explain--no-cover .plv-product-c-explain--explained{width:60px;height:24px;padding:3px 12px;background:transparent;color:#ff5252;font-size:12px}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained{display:flex;box-sizing:border-box;height:16px;margin-left:4px;padding:1px 4px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained span{display:inline-block;transform:scale(.833);user-select:none}.plv-product-c-item__title-container{position:relative;margin-bottom:6px}.plv-product-c-item__title{color:#000c;font-size:14px;font-weight:500;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.plv-product-c-item__title--single{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__title-more{position:absolute;top:22px;right:-6px;display:flex;border:none;background:none}.plv-product-c-item__title-more-icon{display:flex;color:#0006;font-size:16px}.plv-product-c-item__title--expanded{-webkit-line-clamp:unset}.plv-product-c-item__tag-container{box-sizing:border-box;margin-right:4px;padding:0 1px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__tag-container:last-child{margin-right:0}.plv-product-c-item__tag{display:inline-block;transform:scale(.833);user-select:none}.plv-product-c-item__price-area{display:flex;align-items:baseline}.plv-product-c-item__price{color:#ff5252;font-size:18px}.plv-product-c-item__price-custom{font-size:14px}.plv-product-c-item__price-symbol{color:#ff5252;font-size:12px}.plv-product-c-item__price-placeholder{margin-left:2px;color:#ff5252;font-size:18px}.plv-product-c-item__placeholder-text{margin:6px 2px 0 3px;color:#0006;font-size:12px}.plv-product-c-item__original-price{margin-left:2px;color:#0006;font-size:12px;line-height:14px;text-decoration:line-through}.plv-product-c-item__price-finance{color:#ff5252;font-size:14px}.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}.plv-radio{cursor:pointer;line-height:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.plv-radio:last-of-type{margin-right:0}.plv-radio .plv-radio__inner{-ms-flex-negative:0;flex-shrink:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;border-radius:8px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;vertical-align:middle}.plv-radio .plv-radio__label{color:#1d2129;font-size:14px;padding-left:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;line-height:16px;word-break:break-word}.plv-radio:hover .plv-radio__inner{border-color:#3f76fc}.plv-radio.plv-radio--checked .plv-radio__inner{border-width:4px;border-color:#3f76fc}.plv-radio.plv-radio--disabled{cursor:not-allowed}.plv-radio.plv-radio--disabled .plv-radio__inner{border-color:#e5e5e5;background:#f9fafd}.plv-radio.plv-radio--disabled .plv-radio__label{color:#969ba5}.plv-radio.plv-radio--disabled.plv-radio--checked .plv-radio__inner{background:#f9fafd}.plv-radio.plv-radio--readonly{cursor:default}.plv-radio.plv-radio--readonly:hover .plv-radio__inner{border-color:#e5e5e5}.plv-radio.plv-radio--readonly:hover .plv-radio__inner.plv-radio__inner--checked{border-color:#3f76fc}.plv-radio--border{min-width:80px;height:36px!important;padding:0 16px;border-radius:2px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;position:relative;margin-right:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.plv-radio--border:hover{border-color:#3f76fc}.plv-radio--border .plv-radio__label{padding-left:0;font-size:12px;float:none}.plv-radio--border.plv-radio--checked{border-width:2px;border-color:#3f76fc}.plv-radio--border .plv-radio__corner{position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background-image:url(data:image/png;base64,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);background-size:100% 100%}.plv-radio--border.plv-radio--disabled{background:#f9fafd;border-color:#e5e5e5!important}.plv-radio--border.plv-radio--disabled:hover,.plv-radio--border.plv-radio--readonly{border-color:#e5e5e5}.plv-radio--border.plv-radio--readonly.plv-radio--checked{border-color:#3f76fc}.plv-product-common-popup{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006}.plv-product-common-popup__body{position:absolute;display:flex;flex-direction:column;width:100%;max-height:90%;overflow:hidden;border-radius:16px 16px 0 0;background:#fff}.plv-product-common-popup__header{position:relative;z-index:2;display:flex;flex-shrink:0;justify-content:center;align-items:center;padding:0 54px}.plv-product-common-popup__back{position:absolute;top:50%;left:18px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:20px;transform:translateY(-50%);cursor:pointer}.plv-product-common-popup__title{color:#000c;font-size:16px;font-weight:500;text-align:center}.plv-product-common-popup__header-right{position:absolute;top:50%;right:12px;display:flex;align-items:center;transform:translateY(-50%)}.plv-product-common-popup__close{display:flex;color:#0009;font-size:24px;cursor:pointer}.plv-product-common-popup__content{position:relative;z-index:2;display:flex;flex:1;overflow:hidden}.plv-product-common-popup__inner{flex:1;overflow-y:auto}.plv-product-common-popup__body--bg1{background:linear-gradient(180deg,#fee5e1,#fef9f4)}.plv-product-common-popup__body--bg1:before{position:absolute;top:-26px;right:-87px;z-index:1;width:176px;height:168px;background:#fdf0d5;pointer-events:none;content:"";filter:blur(80px)}.plv-product-common-popup__body--bg1 .plv-product-common-popup__content{padding:0 12px 30px}.plv-product-common-popup__body--bg1 .plv-product-common-popup__inner{border-radius:12px;background:#fff}.plv-product-common-popup--hide-modal{background:none;pointer-events:none}.plv-product-common-popup--hide-modal .plv-product-common-popup__body{pointer-events:initial}.plv-product-common-popup--fill-body .plv-product-common-popup__content{height:90%}.plv-product-common-popup--mobile .plv-product-common-popup__body{border-radius:16px 16px 0 0}.plv-product-common-popup--position-bottom .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(0, 100%);--plv-product-popup-animation-end: translate(0, 0);bottom:0;left:0}.plv-product-common-popup--position-left .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(-100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;left:0;height:100%;max-height:100%}.plv-product-common-popup--position-right .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;right:0;height:100%;max-height:100%}.plv-product-common-popup--position-center .plv-product-common-popup__body{top:50%;left:50%;max-height:90%;animation:none!important;transform:translate(-50%,-50%)}.plv-product-common-popup--horizontal-screen .plv-product-common-popup__body{border-radius:0}.plv-product-common-popup--page-fullscreen{top:50%;left:50%;width:100vh;height:100vw;transform:translate(-50%,-50%) rotate(90deg)}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__body,.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__content{overflow:initial}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__inner{overflow-y:initial}.plv-product-common-popup-slide-enter-active{animation:plv-product-common-popup-slide-in .2s ease-in-out}.plv-product-common-popup-slide-leave-active{animation:plv-product-common-popup-slide-in .15s reverse ease-in-out}@keyframes plv-product-common-popup-slide-in{0%{transform:var(--plv-product-popup-animation-start)}to{transform:var(--plv-product-popup-animation-end)}}.plv-product-item{position:relative;display:flex;box-sizing:border-box;height:124px;margin-bottom:8px;padding:12px;border-radius:8px;background-color:#fff;cursor:pointer}.plv-product-item__ranking{box-sizing:border-box;min-width:19px;height:16px;padding:1px 6px;border-radius:2px;background:#0006;color:#fff;font-size:12px;font-weight:700;line-height:14px}.plv-product-item__ranking--cover{position:absolute;top:2px;left:2px}.plv-product-item__cover-area{position:relative;flex:none;overflow:hidden;margin-right:8px;border-radius:4px}.plv-product-item__cover-stock{position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#00000080;color:#fff;font-size:12px}.plv-product-item__cover{width:100px;height:100px;object-fit:cover}.plv-product-item__content{display:flex;flex-grow:1;flex-direction:column;justify-content:space-between;min-width:0}.plv-product-item__content .plv-product-c-item__title-container{min-width:0;margin-bottom:0}.plv-product-item__title-area{display:flex;align-items:center}.plv-product-item__tags{display:flex;margin-top:6px;margin-bottom:6px}.plv-product-item__description{margin:0;color:#0006;font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-item__footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.plv-product-item__explained--no-cover{margin-right:12px;margin-left:auto}.plv-product-item__buy-button{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:24px;padding:3px 12px;border:none;border-radius:16px;background:#ff5252;color:#fff;font-size:12px;white-space:nowrap;outline:none}.plv-product-item__buy-button--disabled{background:#ff525299;color:#fff}.plv-product-item-no-cover .plv-product-c-item__title{margin-left:4px}.plv-product-item--topping{background:#f15d5d14}')),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}}();
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defProps = Object.defineProperties;
4
4
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -39,7 +39,7 @@ var __async = (__this, __arguments, generator) => {
39
39
  step((generator = generator.apply(__this, __arguments)).next());
40
40
  });
41
41
  };
42
- import { onMounted, onBeforeUnmount, inject, computed, defineComponent, ref, watch, nextTick, unref, watchEffect } from "vue";
42
+ import { onMounted, onBeforeUnmount, inject, computed, defineComponent, ref, watch, nextTick, unref, shallowRef, watchEffect } from "vue";
43
43
  /*!
44
44
  * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
45
45
  *
@@ -825,6 +825,7 @@ function get(object, path, defaultValue) {
825
825
  }
826
826
  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": "已确认收货" };
827
827
  const addressEdit$5 = { "name": "联系人", "namePlaceholder": "请填写联系人姓名", "choiceAddress": "选择地区", "addressPlaceholder": "请选择地区", "phone": "手机号码", "phonePlaceholder": "请填写手机号码", "phoneError": "请输入正确的手机号", "addressDetail": "详细地址", "addressDetailPlaceholder": "请填写详细地址", "error": "请完善信息", "submit": "保存", "deleteConfirm": "确定要删除该地址吗?", "addAddress": "添加地址", "editAddress": "修改地址", "deleteAddress": "删除地址", "addSuccess": "保存成功", "addError": "保存失败", "editSuccess": "修改成功", "editError": "修改失败" };
828
+ const bigCard$5 = { "title": "商品推荐" };
828
829
  const zhCNLang = {
829
830
  "common.confirm": "确认",
830
831
  "common.cancel": "取消",
@@ -852,10 +853,12 @@ const zhCNLang = {
852
853
  "product.allProduct": "全部商品",
853
854
  "product.stock.soldOut": "已抢光",
854
855
  order: order$5,
855
- addressEdit: addressEdit$5
856
+ addressEdit: addressEdit$5,
857
+ bigCard: bigCard$5
856
858
  };
857
859
  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": "已確認收貨" };
858
860
  const addressEdit$4 = { "name": "聯絡人", "namePlaceholder": "請填寫聯絡人", "choiceAddress": "選擇地區", "addressPlaceholder": "請選擇地區", "phone": "手機號碼", "phonePlaceholder": "請填寫手機號碼", "phoneError": "請輸入正確的手機號", "addressDetail": "詳細地址", "addressDetailPlaceholder": "請填寫詳細地址", "error": "請完善信息", "submit": "保存", "deleteConfirm": "確定要刪除該地址嗎?", "deleteAddress": "刪除地址", "addAddress": "添加地址", "editAddress": "修改地址", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "修改成功", "editError": "修改失敗" };
861
+ const bigCard$4 = { "title": "商品推薦" };
859
862
  const zhTWLang = {
860
863
  "common.confirm": "確認",
861
864
  "common.cancel": "取消",
@@ -883,10 +886,12 @@ const zhTWLang = {
883
886
  "product.allProduct": "全部商品",
884
887
  "product.stock.soldOut": "已搶光",
885
888
  order: order$4,
886
- addressEdit: addressEdit$4
889
+ addressEdit: addressEdit$4,
890
+ bigCard: bigCard$4
887
891
  };
888
892
  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" };
889
893
  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" };
894
+ const bigCard$3 = { "title": "Top Picks" };
890
895
  const enLang = {
891
896
  "common.confirm": "Confirm",
892
897
  "common.cancel": "Cancel",
@@ -914,10 +919,12 @@ const enLang = {
914
919
  "product.allProduct": "Products",
915
920
  "product.stock.soldOut": "Sold Out",
916
921
  order: order$3,
917
- addressEdit: addressEdit$3
922
+ addressEdit: addressEdit$3,
923
+ bigCard: bigCard$3
918
924
  };
919
925
  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": "確認受け取り完了" };
920
926
  const addressEdit$2 = { "name": "連絡先", "namePlaceholder": "連絡先を入力", "choiceAddress": "地域を選択", "addressPlaceholder": "地域を選択", "phone": "電話番号", "phonePlaceholder": "電話番号を入力", "phoneError": "正しい電話番号を入力してください", "addressDetail": "詳細住所", "addressDetailPlaceholder": "詳細住所を入力", "error": "情報を入力してください", "submit": "保存", "deleteConfirm": "この住所を削除しますか?", "deleteAddress": "住所を削除", "addAddress": "住所を追加", "editAddress": "住所を編集", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "編集成功", "editError": "編集失敗" };
927
+ const bigCard$2 = { "title": "商品推薦" };
921
928
  const jaLang = {
922
929
  "common.confirm": "確認",
923
930
  "common.cancel": "キャンセル",
@@ -945,10 +952,12 @@ const jaLang = {
945
952
  "product.allProduct": "すべての商品",
946
953
  "product.stock.soldOut": "売り切れ",
947
954
  order: order$2,
948
- addressEdit: addressEdit$2
955
+ addressEdit: addressEdit$2,
956
+ bigCard: bigCard$2
949
957
  };
950
958
  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": "확인 받기 완료" };
951
959
  const addressEdit$1 = { "name": "연락처", "namePlaceholder": "연락처 입력", "choiceAddress": "지역 선택", "addressPlaceholder": "지역 선택", "phone": "전화번호", "phonePlaceholder": "전화번호 입력", "phoneError": "올바른 전화번호를 입력해주세요", "addressDetail": "상세 주소", "addressDetailPlaceholder": "상세 주소 입력", "error": "정보를 입력해주세요.", "submit": "저장", "deleteConfirm": "주소를 삭제하시겠습니까?", "deleteAddress": "주소 삭제", "addAddress": "주소 추가", "editAddress": "주소 수정", "addSuccess": "저장 성공", "addError": "저장 실패", "editSuccess": "수정 성공", "editError": "수정 실패" };
960
+ const bigCard$1 = { "title": "상품 추천" };
952
961
  const koLang = {
953
962
  "common.confirm": "확인",
954
963
  "common.cancel": "취소",
@@ -976,10 +985,12 @@ const koLang = {
976
985
  "product.allProduct": "모든 상품",
977
986
  "product.stock.soldOut": "품절",
978
987
  order: order$1,
979
- addressEdit: addressEdit$1
988
+ addressEdit: addressEdit$1,
989
+ bigCard: bigCard$1
980
990
  };
981
991
  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": "Получение подтверждено" };
982
992
  const addressEdit = { "name": "Контактное лицо", "namePlaceholder": "Пожалуйста, введите имя контактного лица", "choiceAddress": "Выберите регион", "addressPlaceholder": "Пожалуйста, выберите регион", "phone": "Номер телефона", "phonePlaceholder": "Пожалуйста, введите номер телефона", "phoneError": "Пожалуйста, введите правильный номер телефона", "addressDetail": "Подробный адрес", "addressDetailPlaceholder": "Пожалуйста, заполните подробный адрес", "error": "Пожалуйста, дополните информацию", "submit": "Сохранить", "deleteConfirm": "Вы уверены, что хотите удалить этот адрес?", "addAddress": "Добавить адрес", "editAddress": "Изменить адрес", "deleteAddress": "Удалить адрес", "addSuccess": "Успешно сохранено", "addError": "Не удалось сохранить", "editSuccess": "Успешно изменено", "editError": "Не удалось изменить" };
993
+ const bigCard = { "title": "Товары" };
983
994
  const ruLang = {
984
995
  "common.confirm": "Подтвердить",
985
996
  "common.cancel": "Отмена",
@@ -1007,7 +1018,8 @@ const ruLang = {
1007
1018
  "product.allProduct": "Все товары",
1008
1019
  "product.stock.soldOut": "Распродано",
1009
1020
  order,
1010
- addressEdit
1021
+ addressEdit,
1022
+ bigCard
1011
1023
  };
1012
1024
  const fullI18nData = {
1013
1025
  [LangType.ZH_CN]: zhCNLang,
@@ -1199,12 +1211,12 @@ function getCurrentUAInfo() {
1199
1211
  return currentUAInfo || (currentUAInfo = Object.freeze("undefined" != typeof window ? new UAInfo(window.navigator.userAgent, window.navigator) : new UAInfo(""))), currentUAInfo;
1200
1212
  }
1201
1213
  const ua = navigator.userAgent.toLowerCase();
1202
- const uaInfo = getCurrentUAInfo();
1203
- const isAndroid = uaInfo.os.isAndroid;
1204
- const isIOS = uaInfo.os.isIOS;
1205
- const weixinVersion = uaInfo.client.version;
1206
- const isWeixin = uaInfo.client.isWx;
1207
- const isWorkWeixin = uaInfo.client.isWxWork;
1214
+ const uaInfo$1 = getCurrentUAInfo();
1215
+ const isAndroid$1 = uaInfo$1.os.isAndroid;
1216
+ const isIOS$1 = uaInfo$1.os.isIOS;
1217
+ const weixinVersion = uaInfo$1.client.version;
1218
+ const isWeixin = uaInfo$1.client.isWx;
1219
+ const isWorkWeixin = uaInfo$1.client.isWxWork;
1208
1220
  const isPcMiniProgram = (isWeixin || isWorkWeixin) && /miniprogramenv/.test(ua);
1209
1221
  function __isMobile() {
1210
1222
  const ua2 = navigator.userAgent;
@@ -1221,7 +1233,7 @@ function __isMobile() {
1221
1233
  function __isTablet() {
1222
1234
  const ua2 = navigator.userAgent;
1223
1235
  if (/(?:iPad|PlayBook)/.test(ua2)) return true;
1224
- if (uaInfo.os.isAndroid && !/(?:Mobile)/.test(ua2) || /(?:Tablet)/.test(ua2)) return true;
1236
+ if (uaInfo$1.os.isAndroid && !/(?:Mobile)/.test(ua2) || /(?:Tablet)/.test(ua2)) return true;
1225
1237
  return false;
1226
1238
  }
1227
1239
  const isMob = __isMobile();
@@ -1878,7 +1890,8 @@ function getProductTargetExport(productTarget) {
1878
1890
  ProductExplainStatus: productTarget.ProductExplainStatus,
1879
1891
  ProductMediaType: productTarget.ProductMediaType,
1880
1892
  ProductDeliveryType: productTarget.ProductDeliveryType,
1881
- ProductEvents: productTarget.ProductEvents
1893
+ ProductEvents: productTarget.ProductEvents,
1894
+ ProductPushRule: productTarget.ProductPushRule
1882
1895
  };
1883
1896
  }
1884
1897
  const PRODUCT_PROVIDE_KEY = Symbol("PRODUCT_PROVIDE_KEY");
@@ -1938,6 +1951,37 @@ const useProductStock = (options) => {
1938
1951
  isSoldOut
1939
1952
  };
1940
1953
  };
1954
+ const useProductExplain = (options) => {
1955
+ const { props } = options;
1956
+ const productExplainEnabled = ref(false);
1957
+ function getProductExplainEnabled() {
1958
+ return __async(this, null, function* () {
1959
+ if (!props.productTarget) return;
1960
+ const enabled = yield props.productTarget.getProductExplainEnabled();
1961
+ productExplainEnabled.value = enabled;
1962
+ });
1963
+ }
1964
+ function handleClickExplain(product) {
1965
+ return __async(this, null, function* () {
1966
+ if (typeof props.productConfig.customClickExplainHandler === "function") {
1967
+ props.productConfig.customClickExplainHandler(product);
1968
+ return;
1969
+ }
1970
+ if (!props.productTarget) return;
1971
+ const url = yield props.productTarget.generateProductExplainPageUrl({ productId: product.productId });
1972
+ if (url) {
1973
+ window.open(url, "_blank");
1974
+ }
1975
+ });
1976
+ }
1977
+ onMounted(() => {
1978
+ getProductExplainEnabled();
1979
+ });
1980
+ return {
1981
+ productExplainEnabled,
1982
+ handleClickExplain
1983
+ };
1984
+ };
1941
1985
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1942
1986
  __name: "product-price",
1943
1987
  props: {
@@ -2031,6 +2075,104 @@ function concat(i2, r2, t2) {
2031
2075
  let e = n2.search || "";
2032
2076
  return e && "&" !== e.slice(-1) && (e += "&"), e += r2, n2.search = e, joinURL(n2);
2033
2077
  }
2078
+ var __awaiter = function(i2, n2, o2, t2) {
2079
+ return new (o2 || (o2 = Promise))(function(e, a2) {
2080
+ function r2(i3) {
2081
+ try {
2082
+ k2(t2.next(i3));
2083
+ } catch (i4) {
2084
+ a2(i4);
2085
+ }
2086
+ }
2087
+ function l2(i3) {
2088
+ try {
2089
+ k2(t2.throw(i3));
2090
+ } catch (i4) {
2091
+ a2(i4);
2092
+ }
2093
+ }
2094
+ function k2(i3) {
2095
+ var n3;
2096
+ i3.done ? e(i3.value) : (n3 = i3.value, n3 instanceof o2 ? n3 : new o2(function(i4) {
2097
+ i4(n3);
2098
+ })).then(r2, l2);
2099
+ }
2100
+ k2((t2 = t2.apply(i2, n2 || [])).next());
2101
+ });
2102
+ };
2103
+ const uaInfo = getCurrentUAInfo();
2104
+ const isAndroid = uaInfo.os.isAndroid;
2105
+ const isIOS = uaInfo.os.isIOS;
2106
+ var LinkType;
2107
+ !function(i2) {
2108
+ i2[i2.Normal = 10] = "Normal", i2[i2.MultiPlatform = 11] = "MultiPlatform", i2[i2.Native = 12] = "Native";
2109
+ }(LinkType || (LinkType = {}));
2110
+ var LinkJumpWay;
2111
+ function getNativeToPointMallFn() {
2112
+ var i2, n2, o2, t2;
2113
+ return isAndroid ? null === (i2 = window.AndroidNative) || void 0 === i2 ? void 0 : i2.toPointMall : isIOS ? 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;
2114
+ }
2115
+ function toNativeLink(i2) {
2116
+ const { androidLink: n2, iosLink: o2, otherLink: t2 } = i2, e = getNativeToPointMallFn();
2117
+ if (e) {
2118
+ let i3 = isAndroid ? n2 : o2;
2119
+ const t3 = encodeURIComponent(location.href);
2120
+ i3 = concat(i3, { plt_back_uri: t3 });
2121
+ e(JSON.stringify({ url: i3 }));
2122
+ } else window.open(t2, "_blank", "noopener=yes");
2123
+ }
2124
+ function toPlvWebviewBridge(i2) {
2125
+ return __awaiter(this, void 0, void 0, function* () {
2126
+ const { getPlvWebviewSmallWindowSize: n2, getPlvWebviewBridge: o2 } = i2, t2 = (null == n2 ? void 0 : n2()) || { width: 90, height: 160 }, e = yield null == o2 ? void 0 : o2();
2127
+ e && e.sendData("clickProduct", { width: t2.width, height: t2.height, newPage: true, link: i2.link, data: i2.data });
2128
+ });
2129
+ }
2130
+ function toMultiPlatformLink(i2) {
2131
+ return __awaiter(this, void 0, void 0, function* () {
2132
+ 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;
2133
+ let u2 = false;
2134
+ try {
2135
+ u2 = (yield null == o2 ? void 0 : o2()) || false;
2136
+ } catch (i3) {
2137
+ u2 = false;
2138
+ }
2139
+ u2 && l2 && t2 ? t2(formatLink(l2, a2)) : s2 && k2 ? e(formatLink(k2, a2), LinkJumpWay.NewWindow) : !s2 && d2 && e(formatLink(d2, a2), LinkJumpWay.NewWindow);
2140
+ });
2141
+ }
2142
+ !function(i2) {
2143
+ i2.PopUp = "POP_UP", i2.NewWindow = "NEW_WINDOW", i2.CurrentWindow = "CURRENT_WINDOW";
2144
+ }(LinkJumpWay || (LinkJumpWay = {}));
2145
+ function formatLink(i2, n2) {
2146
+ let o2 = {};
2147
+ if (n2) {
2148
+ const t2 = n2(i2);
2149
+ o2 = Object.assign({}, o2, t2);
2150
+ }
2151
+ return concat(i2, o2);
2152
+ }
2153
+ function navigateToLink(i2) {
2154
+ 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;
2155
+ if (s2 !== LinkType.Native) {
2156
+ if (u2) {
2157
+ let i3 = "";
2158
+ const { link: o3, mobileLink: t3, mobileAppLink: r3, wxMiniprogramOriginalId: l3, wxMiniprogramLink: d3 } = n2;
2159
+ switch (s2) {
2160
+ case LinkType.Normal:
2161
+ i3 = o3;
2162
+ break;
2163
+ case LinkType.MultiPlatform:
2164
+ i3 = r3 || t3;
2165
+ }
2166
+ let u3 = null;
2167
+ 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 });
2168
+ }
2169
+ if (s2 !== LinkType.Normal) s2 === LinkType.MultiPlatform && toMultiPlatformLink({ linkData: n2, getLinkParams: k2, isWxMiniProgramEnv: r2, toWxMiniProgram: l2, openLink: o2, isMobile: d2 });
2170
+ else {
2171
+ const { link: i3, jumpWay: t3 } = n2;
2172
+ o2(formatLink(i3, k2), t3);
2173
+ }
2174
+ } else toNativeLink({ androidLink: formatLink(n2.androidLink, k2), iosLink: formatLink(n2.iosLink, k2), otherLink: formatLink(n2.otherLink, k2) });
2175
+ }
2034
2176
  const useTrackEvent = (iarCore) => {
2035
2177
  const { injectData } = useGlobalInject();
2036
2178
  function trackEvent(data) {
@@ -2044,7 +2186,7 @@ const useTrackEvent = (iarCore) => {
2044
2186
  trackEvent
2045
2187
  };
2046
2188
  };
2047
- const htmlChars = ['"', "'", "&", "<", ">"], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
2189
+ const htmlChars = ['"', "'", "&", "<", ">", " "], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;", "&nbsp;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
2048
2190
  htmlChars.forEach((n2, e) => {
2049
2191
  charsToEntities[n2] = htmlEntities[e], entitiesToChars[htmlEntities[e]] = n2;
2050
2192
  });
@@ -2099,7 +2241,7 @@ const useWeixinButton = (hookOptions = {}) => {
2099
2241
  }
2100
2242
  const wx = yield injectData.getWeixinSdk();
2101
2243
  (_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.navigateTo({
2102
- url
2244
+ url: url.startsWith("/") ? url : `/${url}`
2103
2245
  });
2104
2246
  return;
2105
2247
  });
@@ -2154,7 +2296,9 @@ const useWeixinButton = (hookOptions = {}) => {
2154
2296
  watch(
2155
2297
  () => [weixinBtnRef.value, supportWxOpenLaunchWeapp.value, buttonOptions.value],
2156
2298
  () => {
2157
- createWxMiniProgramButton();
2299
+ setTimeout(() => {
2300
+ createWxMiniProgramButton();
2301
+ }, 500);
2158
2302
  },
2159
2303
  {
2160
2304
  immediate: true
@@ -2171,25 +2315,25 @@ const useWeixinButton = (hookOptions = {}) => {
2171
2315
  };
2172
2316
  };
2173
2317
  const useAppNative = () => {
2174
- function getNativeToPointMallFn() {
2318
+ function getNativeToPointMallFn2() {
2175
2319
  var _a, _b, _c, _d;
2176
- if (isAndroid) {
2320
+ if (isAndroid$1) {
2177
2321
  return (_a = window.AndroidNative) == null ? void 0 : _a.toPointMall;
2178
- } else if (isIOS) {
2322
+ } else if (isIOS$1) {
2179
2323
  return (_d = (_c = (_b = window.webkit) == null ? void 0 : _b.messageHandlers) == null ? void 0 : _c.gotoPointsMall) == null ? void 0 : _d.postMessage;
2180
2324
  }
2181
2325
  }
2182
2326
  function supportNativeToPointMall() {
2183
- return !!getNativeToPointMallFn();
2327
+ return !!getNativeToPointMallFn2();
2184
2328
  }
2185
2329
  const supportAppNative = computed(() => {
2186
2330
  return supportNativeToPointMall();
2187
2331
  });
2188
- function toNativeLink(options) {
2332
+ function toNativeLink2(options) {
2189
2333
  const { androidLink, iosLink, otherLink } = options;
2190
- const nativePointMallFn = getNativeToPointMallFn();
2334
+ const nativePointMallFn = getNativeToPointMallFn2();
2191
2335
  if (nativePointMallFn) {
2192
- let url = isAndroid ? androidLink : iosLink;
2336
+ let url = isAndroid$1 ? androidLink : iosLink;
2193
2337
  const pltBackUri = encodeURIComponent(location.href);
2194
2338
  url = concat(url, {
2195
2339
  plt_back_uri: pltBackUri
@@ -2203,60 +2347,10 @@ const useAppNative = () => {
2203
2347
  window.open(otherLink, "_blank", "noopener=yes");
2204
2348
  }
2205
2349
  return {
2206
- getNativeToPointMallFn,
2350
+ getNativeToPointMallFn: getNativeToPointMallFn2,
2207
2351
  supportNativeToPointMall,
2208
2352
  supportAppNative,
2209
- toNativeLink
2210
- };
2211
- };
2212
- const usePolyvWebview = () => {
2213
- const { injectData } = useGlobalInject();
2214
- const isPlvWebview = ref(false);
2215
- const supportPlvWebview = computed(() => {
2216
- return isPlvWebview.value;
2217
- });
2218
- function getPlvWebviewBridge() {
2219
- return __async(this, null, function* () {
2220
- if (injectData.getPlvWebviewBridge) {
2221
- return yield injectData.getPlvWebviewBridge();
2222
- }
2223
- });
2224
- }
2225
- function toPlvWebviewBridge(options) {
2226
- return __async(this, null, function* () {
2227
- if (!supportPlvWebview.value) {
2228
- return;
2229
- }
2230
- let plvWebviewDataSize = {
2231
- width: 90,
2232
- height: 160
2233
- };
2234
- if (injectData.getPlvWebviewSmallWindowSize) {
2235
- plvWebviewDataSize = injectData.getPlvWebviewSmallWindowSize();
2236
- }
2237
- const webviewBridge = yield getPlvWebviewBridge();
2238
- if (!webviewBridge) {
2239
- return;
2240
- }
2241
- webviewBridge.sendData("clickProduct", {
2242
- width: plvWebviewDataSize.width,
2243
- height: plvWebviewDataSize.height,
2244
- newPage: true,
2245
- link: options.link,
2246
- data: options.data
2247
- });
2248
- });
2249
- }
2250
- onMounted(() => {
2251
- if (injectData.isPlvWebview) {
2252
- isPlvWebview.value = injectData.isPlvWebview();
2253
- }
2254
- });
2255
- return {
2256
- isPlvWebview,
2257
- supportPlvWebview,
2258
- getPlvWebviewBridge,
2259
- toPlvWebviewBridge
2353
+ toNativeLink: toNativeLink2
2260
2354
  };
2261
2355
  };
2262
2356
  const productButtonProps = () => __spreadProps(__spreadValues({}, productProps()), {
@@ -2275,12 +2369,12 @@ const useProductButton = (options) => {
2275
2369
  const { isSoldOut } = useProductStock({
2276
2370
  product: () => props.productData
2277
2371
  });
2278
- const { getEmitter } = useGlobalInject();
2372
+ const { getEmitter, injectData } = useGlobalInject();
2279
2373
  const { $t } = useI18n();
2280
2374
  const productConfig = computed(() => {
2281
2375
  return props.productConfig;
2282
2376
  });
2283
- const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram } = useWeixinButton({
2377
+ const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram, supportWxMiniProgramNavigateTo } = useWeixinButton({
2284
2378
  getButtonOptions: () => {
2285
2379
  const productData = props.productData;
2286
2380
  return {
@@ -2291,10 +2385,9 @@ const useProductButton = (options) => {
2291
2385
  },
2292
2386
  launchCallback: () => sendClickEvent()
2293
2387
  });
2294
- const { supportAppNative, toNativeLink } = useAppNative();
2295
- const { supportPlvWebview, toPlvWebviewBridge } = usePolyvWebview();
2388
+ const { supportAppNative } = useAppNative();
2296
2389
  const { trackEvent } = useTrackEvent(props.productTarget.iarCore);
2297
- const { ProductBuyType, ProductType, ProductLinkType, ProductLinkJumpWay } = getProductTargetExport(props.productTarget);
2390
+ const { ProductBuyType, ProductType } = getProductTargetExport(props.productTarget);
2298
2391
  const isDirectBuy = computed(() => {
2299
2392
  return props.productData.productType === ProductType.Normal && props.productData.buyType === ProductBuyType.DirectBuy;
2300
2393
  });
@@ -2321,13 +2414,13 @@ const useProductButton = (options) => {
2321
2414
  if (isDirectBuy.value) {
2322
2415
  return false;
2323
2416
  }
2324
- if (productData.linkType === ProductLinkType.Normal) {
2417
+ if (productData.linkType === LinkType.Normal) {
2325
2418
  return !productData.link;
2326
2419
  }
2327
- if (productData.linkType === ProductLinkType.MultiPlatform) {
2420
+ if (productData.linkType === LinkType.MultiPlatform) {
2328
2421
  return isMultiPlatformDisabled.value;
2329
2422
  }
2330
- if (productData.linkType === ProductLinkType.Native) {
2423
+ if (productData.linkType === LinkType.Native) {
2331
2424
  if (supportAppNative.value) {
2332
2425
  return !productData.androidLink && !productData.iosLink;
2333
2426
  }
@@ -2386,9 +2479,26 @@ const useProductButton = (options) => {
2386
2479
  }
2387
2480
  return concat(url, urlParams);
2388
2481
  }
2482
+ function getLinkData() {
2483
+ const productData = props.productData;
2484
+ const linkData = {
2485
+ linkType: productData.linkType,
2486
+ jumpWay: productData.jumpWay,
2487
+ link: productData.link,
2488
+ pcLink: productData.pcLink,
2489
+ mobileLink: productData.mobileLink,
2490
+ mobileAppLink: productData.mobileAppLink,
2491
+ androidLink: productData.androidLink,
2492
+ iosLink: productData.iosLink,
2493
+ otherLink: productData.otherLink,
2494
+ wxMiniprogramOriginalId: productData.wxMiniprogramOriginalId,
2495
+ wxMiniprogramAppId: productData.wxMiniprogramAppId,
2496
+ wxMiniprogramLink: productData.wxMiniprogramLink
2497
+ };
2498
+ return linkData;
2499
+ }
2389
2500
  function onClickLinkBtn() {
2390
2501
  const productData = props.productData;
2391
- const { linkType } = productData;
2392
2502
  sendClickEvent();
2393
2503
  if (productConfig.value.customClickButtonHandler) {
2394
2504
  productConfig.value.customClickButtonHandler(productData);
@@ -2398,70 +2508,28 @@ const useProductButton = (options) => {
2398
2508
  toDirectBuy();
2399
2509
  return;
2400
2510
  }
2401
- if (productData.linkType === ProductLinkType.Native) {
2402
- toNativeLink({
2403
- androidLink: formatProductLink(productData.androidLink),
2404
- iosLink: formatProductLink(productData.iosLink),
2405
- otherLink: formatProductLink(productData.otherLink)
2406
- });
2407
- return;
2408
- }
2409
- if (supportPlvWebview.value) {
2410
- let linkTo = "";
2411
- const { link, mobileLink, mobileAppLink, wxMiniprogramOriginalId, wxMiniprogramLink } = productData;
2412
- switch (productData.linkType) {
2413
- case ProductLinkType.Normal:
2414
- linkTo = link;
2415
- break;
2416
- case ProductLinkType.MultiPlatform:
2417
- linkTo = mobileAppLink || mobileLink;
2418
- break;
2419
- }
2420
- let otherData = null;
2421
- if (productData.linkType !== ProductLinkType.Normal) {
2422
- otherData = {
2423
- mobileLink: formatProductLink(mobileLink),
2424
- wxMiniprogramOriginalId,
2425
- wxMiniprogramLink: formatProductLink(wxMiniprogramLink),
2426
- mobileAppLink: formatProductLink(mobileAppLink)
2427
- };
2428
- }
2429
- toPlvWebviewBridge({
2430
- link: formatProductLink(linkTo),
2431
- data: otherData
2432
- });
2433
- return;
2434
- }
2435
- if (linkType === ProductLinkType.Normal) {
2436
- const { link, jumpWay } = productData;
2437
- openLink(formatProductLink(link), jumpWay);
2438
- return;
2439
- }
2440
- if (linkType === ProductLinkType.MultiPlatform) {
2441
- const { wxMiniprogramLink, mobileLink, pcLink } = productData;
2442
- if (isWxMiniProgramWebview.value && wxMiniprogramLink) {
2443
- toWxMiniProgram(formatProductLink(wxMiniprogramLink));
2444
- return;
2445
- }
2446
- if (isMobile) {
2447
- openLink(formatProductLink(mobileLink), ProductLinkJumpWay.NewWindow);
2448
- return;
2449
- }
2450
- if (!isMobile) {
2451
- openLink(formatProductLink(pcLink), ProductLinkJumpWay.NewWindow);
2452
- return;
2453
- }
2454
- }
2511
+ const linkData = getLinkData();
2512
+ navigateToLink({
2513
+ linkData,
2514
+ getLinkParams: productConfig.value.getLinkParams,
2515
+ openLink,
2516
+ isPlvWebview: injectData.isPlvWebview,
2517
+ isMobile: injectData.isMobile,
2518
+ getPlvWebviewBridge: injectData.getPlvWebviewBridge,
2519
+ getPlvWebviewSmallWindowSize: injectData.getPlvWebviewSmallWindowSize,
2520
+ isWxMiniProgramEnv: supportWxMiniProgramNavigateTo,
2521
+ toWxMiniProgram
2522
+ });
2455
2523
  }
2456
2524
  function openLink(url, jumpWay) {
2457
2525
  switch (jumpWay) {
2458
- case ProductLinkJumpWay.NewWindow:
2526
+ case LinkJumpWay.NewWindow:
2459
2527
  window.open(url, "_blank", "noopener=yes");
2460
2528
  break;
2461
- case ProductLinkJumpWay.CurrentWindow:
2529
+ case LinkJumpWay.CurrentWindow:
2462
2530
  window.location.href = url;
2463
2531
  break;
2464
- case ProductLinkJumpWay.PopUp:
2532
+ case LinkJumpWay.PopUp:
2465
2533
  getEmitter().emit(productEvents.OpenProductIframeLinkPopup, url);
2466
2534
  break;
2467
2535
  default:
@@ -2484,7 +2552,7 @@ const useProductButton = (options) => {
2484
2552
  name: productData.name,
2485
2553
  productId: productData.productId,
2486
2554
  productType: productData.productType,
2487
- productPushRule: data == null ? void 0 : data.pushRule
2555
+ productPushRule: (data == null ? void 0 : data.pushRule) || ""
2488
2556
  }
2489
2557
  });
2490
2558
  props.productTarget.sendProductClickEvent({
@@ -3425,6 +3493,7 @@ const useDynamicHeight = (options) => {
3425
3493
  if (props.fillBody) {
3426
3494
  return "90%";
3427
3495
  }
3496
+ if (isHorizontalScreenOrientation.value) return document.documentElement.clientHeight;
3428
3497
  if (props.enableDynamicHeight) {
3429
3498
  return document.documentElement.clientHeight * dynamicContentHeightPercent.value;
3430
3499
  }
@@ -3539,63 +3608,194 @@ const useDynamicHeight = (options) => {
3539
3608
  }
3540
3609
  });
3541
3610
  const supportWebP = /* @__PURE__ */ (() => {
3542
- let A2;
3611
+ let e;
3543
3612
  return () => {
3544
- if (null == A2) try {
3545
- A2 = function() {
3546
- const A3 = document.createElement("canvas");
3547
- if (A3.getContext && A3.getContext("2d")) {
3548
- const e = "image/webp";
3549
- return 0 === A3.toDataURL(e).indexOf("data:" + e);
3613
+ if (null == e) try {
3614
+ e = function() {
3615
+ const e2 = document.createElement("canvas");
3616
+ if (e2.getContext && e2.getContext("2d")) {
3617
+ const A2 = "image/webp";
3618
+ return 0 === e2.toDataURL(A2).indexOf("data:" + A2);
3550
3619
  }
3551
3620
  return false;
3621
+ }() || function() {
3622
+ let e2 = false;
3623
+ const A2 = navigator.userAgent, t2 = /\bOS\s([\d_.]+)\slike\sMac\sOS\sX\b/.exec(A2);
3624
+ if (t2) e2 = parseInt(t2[1]) >= 14;
3625
+ else {
3626
+ const t3 = /\bVersion\/([\d.]+)\sSafari\b/.exec(A2);
3627
+ t3 && (e2 = parseInt(t3[1]) >= 16);
3628
+ }
3629
+ return e2;
3552
3630
  }();
3553
- } catch (e) {
3554
- A2 = false;
3631
+ } catch (A2) {
3632
+ e = false;
3555
3633
  }
3556
- return A2;
3634
+ return e;
3557
3635
  };
3558
3636
  })();
3559
- function getExtname(A2) {
3560
- const e = (A2 || "").split("."), t2 = e[e.length - 1];
3637
+ function getExtname(e) {
3638
+ const A2 = (e || "").split("."), t2 = A2[A2.length - 1];
3561
3639
  return t2 ? t2.toLowerCase() : "";
3562
3640
  }
3563
- function handleCompressOptions(A2) {
3564
- var e, t2;
3565
- const r2 = "number" == typeof A2 ? { width: A2 } : A2;
3566
- return r2.allowJPG = null === (e = r2.allowJPG) || void 0 === e || e, r2.allowWebP = null !== (t2 = r2.allowWebP) && void 0 !== t2 ? t2 : "auto", r2;
3641
+ function handleCompressOptions(e) {
3642
+ var A2, t2;
3643
+ const n2 = "number" == typeof e ? { width: e } : e;
3644
+ return n2.allowJPG = null === (A2 = n2.allowJPG) || void 0 === A2 || A2, n2.allowWebP = null !== (t2 = n2.allowWebP) && void 0 !== t2 ? t2 : "auto", n2;
3567
3645
  }
3568
- function createURLObject(A2) {
3569
- let e;
3646
+ function createURLObject(e) {
3647
+ let A2;
3570
3648
  if ("undefined" != typeof document) {
3571
3649
  const t2 = document.createElement("a");
3572
- t2.href = A2, e = t2;
3650
+ t2.href = e, A2 = t2;
3573
3651
  } else if ("function" == typeof URL) try {
3574
- e = new URL(/^\/\//.test(A2) ? "https:" + A2 : A2);
3575
- } catch (A3) {
3652
+ A2 = new URL(/^\/\//.test(e) ? "https:" + e : e);
3653
+ } catch (e2) {
3576
3654
  }
3577
- return e;
3655
+ return A2;
3578
3656
  }
3579
- function genOSSCompressParams(A2, e) {
3657
+ function genOSSCompressParams(e, A2) {
3580
3658
  let t2 = "";
3581
- return null == e.width && null == e.height || (t2 += "/resize", e.width && (t2 += ",w_" + e.width), e.height && (t2 += ",h_" + e.height), t2 += ",limit_1"), e.allowAVIF && "gif" !== A2 ? t2 += "/format,avif" : true === e.allowWebP || "auto" === e.allowWebP && supportWebP() ? t2 += "/format,webp/quality,Q_80" : e.allowJPG && "gif" !== A2 && (t2 += "/format,jpg/quality,Q_80"), t2;
3659
+ return null == A2.width && null == A2.height || (t2 += "/resize", A2.width && (t2 += ",w_" + A2.width), A2.height && (t2 += ",h_" + A2.height), t2 += ",limit_1"), A2.allowAVIF && "gif" !== e ? t2 += "/format,avif" : true === A2.allowWebP || "auto" === A2.allowWebP && supportWebP() ? t2 += "/format,webp/quality,Q_80" : A2.allowJPG && "gif" !== e && (t2 += "/format,jpg/quality,Q_80"), t2;
3582
3660
  }
3583
- function setOSSCompressParams(A2, e) {
3661
+ function setOSSCompressParams(e, A2) {
3584
3662
  let t2 = false;
3585
- return A2 = A2.replace(/([?&]x-oss-process)(?:=([^&]*))?/, (A3, r2, o2) => (t2 = true, /^image/.test(o2) ? r2 + "=" + o2.replace(/\/(?:resize|format|quality)[^/]*/gi, "") + e : A3)), t2 ? A2 : A2 + (-1 === A2.indexOf("?") ? "?" : "&") + "x-oss-process=image" + e;
3586
- }
3587
- function ossCompress(A2, e) {
3588
- const t2 = createURLObject(A2);
3589
- if (!t2) return A2;
3590
- if (!/\.videocc\.net$/i.test(t2.hostname)) return A2;
3591
- const r2 = genOSSCompressParams(getExtname(t2.pathname.split("/").pop()), handleCompressOptions(e));
3663
+ return e = e.replace(/([?&]x-oss-process)(?:=([^&]*))?/, (e2, n2, r2) => (t2 = true, /^image/.test(r2) ? n2 + "=" + r2.replace(/\/(?:resize|format|quality)[^/]*/gi, "") + A2 : e2)), t2 ? e : e + (-1 === e.indexOf("?") ? "?" : "&") + "x-oss-process=image" + A2;
3664
+ }
3665
+ function ossCompress(e, A2) {
3666
+ const t2 = createURLObject(e);
3667
+ if (!t2) return e;
3668
+ const n2 = getExtname(t2.pathname.split("/").pop());
3669
+ if (!/\.videocc\.net$/i.test(t2.hostname) || "svg" === n2) return e;
3670
+ const r2 = genOSSCompressParams(n2, handleCompressOptions(A2));
3592
3671
  return r2 && (t2.search = setOSSCompressParams(t2.search, r2)), t2.href;
3593
3672
  }
3673
+ var ProductItemScene = /* @__PURE__ */ ((ProductItemScene2) => {
3674
+ ProductItemScene2["ProductList"] = "productList";
3675
+ ProductItemScene2["BigCard"] = "bigCard";
3676
+ ProductItemScene2["AggregateStation"] = "aggregateStation";
3677
+ return ProductItemScene2;
3678
+ })(ProductItemScene || {});
3679
+ const useProductTrack = (options) => {
3680
+ const { productTarget } = options;
3681
+ const { ProductType } = getProductTargetExport(productTarget);
3682
+ const { trackEvent } = useTrackEvent(productTarget == null ? void 0 : productTarget.iarCore);
3683
+ const trackedProductIds = ref({});
3684
+ const productListRef = ref(null);
3685
+ const productItemsRef = shallowRef([]);
3686
+ function setItemRef(el) {
3687
+ if (el) {
3688
+ productItemsRef.value.push(el);
3689
+ }
3690
+ }
3691
+ function trackProductViewEvent(productData) {
3692
+ const specAttrs = {
3693
+ name: productData.name,
3694
+ realPrice: productData.productType === ProductType.Normal ? productData.realPrice : "",
3695
+ productId: productData.productId,
3696
+ productType: productData.productType,
3697
+ productFeature: JSON.stringify(productData.featureTags)
3698
+ };
3699
+ if (productData.productType === ProductType.Normal && productData.originPrice !== void 0) {
3700
+ specAttrs.price = productData.originPrice;
3701
+ }
3702
+ trackEvent({
3703
+ event_id: "product_list_item_view",
3704
+ event_type: "show",
3705
+ spec_attrs: specAttrs
3706
+ });
3707
+ }
3708
+ function isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom) {
3709
+ const offsetTop = element.offsetTop;
3710
+ const offsetHeight = element.offsetHeight;
3711
+ const elementBottom = offsetTop + offsetHeight;
3712
+ const isFullyAbove = elementBottom <= containerScrollTop;
3713
+ const isBottomBelowViewportBottom = containerViewportBottom < elementBottom;
3714
+ return !isFullyAbove && !isBottomBelowViewportBottom;
3715
+ }
3716
+ function checkAndTrackProductItem(itemInstance, containerScrollTop, containerViewportBottom) {
3717
+ if (!itemInstance || !itemInstance.$el || !itemInstance.product || !itemInstance.product.productId) {
3718
+ return;
3719
+ }
3720
+ const element = itemInstance.$el;
3721
+ const productId = itemInstance.product.productId;
3722
+ const isVisible = isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom);
3723
+ if (isVisible && !trackedProductIds.value[productId]) {
3724
+ trackedProductIds.value = __spreadProps(__spreadValues({}, trackedProductIds.value), { [productId]: true });
3725
+ trackProductViewEvent(itemInstance.product);
3726
+ }
3727
+ }
3728
+ function trackProduct() {
3729
+ return __async(this, null, function* () {
3730
+ yield nextTick();
3731
+ const container = productListRef.value;
3732
+ if (!container || !productItemsRef.value.length) return;
3733
+ const scrollTop = container.scrollTop;
3734
+ const scrollClientHeight = container.clientHeight;
3735
+ const viewportBottom = scrollTop + scrollClientHeight;
3736
+ productItemsRef.value.forEach((itemInstance) => {
3737
+ checkAndTrackProductItem(itemInstance, scrollTop, viewportBottom);
3738
+ });
3739
+ });
3740
+ }
3741
+ function clearTrackedProducts() {
3742
+ trackedProductIds.value = {};
3743
+ productItemsRef.value = [];
3744
+ }
3745
+ function getCommonSpecAttrs(productData) {
3746
+ return {
3747
+ clickTime: (/* @__PURE__ */ new Date()).getTime(),
3748
+ linkType: isMobile ? "mobile" : "pc",
3749
+ productName: productData.name,
3750
+ productId: productData.productId,
3751
+ productType: productData.productType,
3752
+ feature: JSON.stringify(productData.featureTags),
3753
+ price: productData.productType === ProductType.Normal ? productData.originPrice : "",
3754
+ realPrice: productData.productType === ProductType.Normal ? productData.realPrice : ""
3755
+ };
3756
+ }
3757
+ function trackProductItemClick(productData) {
3758
+ trackEvent({
3759
+ event_id: "product_list_item_click",
3760
+ event_type: "click",
3761
+ spec_attrs: __spreadValues({}, getCommonSpecAttrs(productData))
3762
+ });
3763
+ }
3764
+ function trackProductPushItemClick(productData) {
3765
+ trackEvent({
3766
+ event_id: "product_push_item_click",
3767
+ event_type: "click",
3768
+ spec_attrs: __spreadProps(__spreadValues({}, getCommonSpecAttrs(productData)), {
3769
+ pushId: productData.pushLogId || ""
3770
+ })
3771
+ });
3772
+ }
3773
+ function trackProductPushItemView(productData) {
3774
+ trackEvent({
3775
+ event_id: "product_push_item_view",
3776
+ event_type: "show",
3777
+ spec_attrs: {
3778
+ linkType: isMobile ? "mobile" : "pc",
3779
+ productId: productData.productId,
3780
+ pushId: productData.pushLogId || ""
3781
+ }
3782
+ });
3783
+ }
3784
+ return {
3785
+ productListRef,
3786
+ setItemRef,
3787
+ trackProduct,
3788
+ clearTrackedProducts,
3789
+ trackProductItemClick,
3790
+ trackProductPushItemClick,
3791
+ trackProductPushItemView
3792
+ };
3793
+ };
3594
3794
  const productItemProps = () => __spreadProps(__spreadValues({}, productProps()), {
3595
- product: PropUtils.object().isRequired
3795
+ product: PropUtils.object().isRequired,
3796
+ scene: PropUtils.enum()
3596
3797
  });
3597
3798
  const productItemEmits = () => ({
3598
- "click-explain": emitFunc(),
3599
3799
  "click-product-item": emitFunc(),
3600
3800
  "direct-buy": emitFunc()
3601
3801
  });
@@ -3603,20 +3803,14 @@ const useProductItem = (options) => {
3603
3803
  const { props, emit } = options;
3604
3804
  const { ProductType, ProductBuyType } = getProductTargetExport(props.productTarget);
3605
3805
  const { getEmitter } = useGlobalInject();
3606
- const productExplainEnabled = ref(false);
3806
+ const { productExplainEnabled, handleClickExplain } = useProductExplain({ props });
3807
+ const { trackProductItemClick, trackProductPushItemClick } = useProductTrack({ productTarget: props.productTarget });
3607
3808
  const isProductRedirectLinkDirectly = ref(false);
3608
3809
  const shouldEllipsisTitle = computed(() => {
3609
3810
  const { product } = props;
3610
3811
  return !!(product.name && product.featureTags.length && (product.description && product.productType !== ProductType.Position));
3611
3812
  });
3612
- function setProductExplainEnabled() {
3613
- return __async(this, null, function* () {
3614
- if (!props.productTarget) return;
3615
- const enabled = yield props.productTarget.getProductExplainEnabled();
3616
- productExplainEnabled.value = enabled;
3617
- });
3618
- }
3619
- function setIsProductRedirectLinkDirectly() {
3813
+ function getIsProductRedirectLinkDirectly() {
3620
3814
  return __async(this, null, function* () {
3621
3815
  const { product, productTarget } = props;
3622
3816
  if (!product || !productTarget) return false;
@@ -3624,11 +3818,13 @@ const useProductItem = (options) => {
3624
3818
  isProductRedirectLinkDirectly.value = product.productType === ProductType.Normal && product.buyType === ProductBuyType.Link && enabled;
3625
3819
  });
3626
3820
  }
3627
- function onClickExplain(product) {
3628
- emit("click-explain", product);
3629
- }
3630
3821
  function onClickProductItem() {
3631
3822
  emit("click-product-item", props.product);
3823
+ if (props.scene === ProductItemScene.BigCard) {
3824
+ trackProductPushItemClick(props.product);
3825
+ } else {
3826
+ trackProductItemClick(props.product);
3827
+ }
3632
3828
  if (props.product.productType !== ProductType.Finance) {
3633
3829
  getEmitter().emit(productEvents.OpenProductDetailPopup, props.product);
3634
3830
  }
@@ -3636,18 +3832,15 @@ const useProductItem = (options) => {
3636
3832
  function onDirectBuy(product) {
3637
3833
  emit("direct-buy", product);
3638
3834
  }
3639
- onMounted(() => {
3640
- setProductExplainEnabled();
3641
- });
3642
3835
  watchEffect(() => {
3643
- setIsProductRedirectLinkDirectly();
3836
+ getIsProductRedirectLinkDirectly();
3644
3837
  });
3645
3838
  return {
3646
3839
  productExplainEnabled,
3647
3840
  isProductRedirectLinkDirectly,
3648
3841
  shouldEllipsisTitle,
3649
3842
  onDirectBuy,
3650
- onClickExplain,
3843
+ handleClickExplain,
3651
3844
  onClickProductItem
3652
3845
  };
3653
3846
  };
@@ -3667,22 +3860,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3667
3860
  isProductRedirectLinkDirectly,
3668
3861
  shouldEllipsisTitle,
3669
3862
  onDirectBuy,
3670
- onClickExplain,
3671
- onClickProductItem
3863
+ onClickProductItem,
3864
+ handleClickExplain
3672
3865
  } = useProductItem({
3673
3866
  props,
3674
3867
  emit
3675
3868
  });
3676
- return { __sfc: true, props, emit, ProductExplainStatus, $t, isSoldOut, productExplainEnabled, isProductRedirectLinkDirectly, shouldEllipsisTitle, onDirectBuy, onClickExplain, onClickProductItem, ProductExplain, ProductTitle, ProductFeatureTag, ProductPrice, ProductButton, ossCompress };
3869
+ return { __sfc: true, props, emit, ProductExplainStatus, $t, isSoldOut, productExplainEnabled, isProductRedirectLinkDirectly, shouldEllipsisTitle, onDirectBuy, onClickProductItem, handleClickExplain, ProductExplain, ProductTitle, ProductFeatureTag, ProductPrice, ProductButton, ossCompress, ProductItemScene };
3677
3870
  }
3678
3871
  });
3679
3872
  var _sfc_render = function render6() {
3680
3873
  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
3681
- return _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig, "disabled": !_setup.isProductRedirectLinkDirectly } }, [_c("div", { class: ["plv-product-item", { "plv-product-item-no-cover": !_vm.product.cover, "plv-product-item--topping": _vm.product.isTopping }], on: { "click": _setup.onClickProductItem } }, [_vm.product.cover ? _c("div", { staticClass: "plv-product-item__cover-area" }, [_c("img", { staticClass: "plv-product-item__cover", attrs: { "src": _setup.ossCompress(_vm.product.cover, { width: 300 }), "alt": _vm.product.name } }), _setup.isSoldOut ? _c("div", { staticClass: "plv-product-item__cover-stock" }, [_vm._v(" - " + _vm._s(_setup.$t("product.stock.soldOut")) + " - ")]) : _vm._e(), _vm.product.displayNumber ? _c("div", { staticClass: "plv-product-item__ranking plv-product-item__ranking--cover plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.onClickExplain } }) : _vm._e()], 1) : _vm._e(), _c("div", { staticClass: "plv-product-item__content" }, [_c("div", { staticClass: "plv-product-item__title-area" }, [_vm.product.displayNumber && !_vm.product.cover ? _c("div", { staticClass: "plv-product-item__ranking plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled && !_vm.product.cover && _vm.product.explainStatus !== _setup.ProductExplainStatus.Explained ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.onClickExplain } }) : _vm._e(), _c(_setup.ProductTitle, { attrs: { "title": _vm.product.name, "use-ellipsis": _setup.shouldEllipsisTitle } })], 1), _c("div", { staticClass: "plv-product-item__tags" }, _vm._l(_vm.product.featureTags, function(tag, index) {
3874
+ return _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig, "disabled": !_setup.isProductRedirectLinkDirectly } }, [_c("div", { class: ["plv-product-item", { "plv-product-item-no-cover": !_vm.product.cover, "plv-product-item--topping": _vm.product.isTopping }], on: { "click": _setup.onClickProductItem } }, [_vm.product.cover ? _c("div", { staticClass: "plv-product-item__cover-area" }, [_c("img", { staticClass: "plv-product-item__cover", attrs: { "src": _setup.ossCompress(_vm.product.cover, { width: 300 }), "alt": _vm.product.name } }), _setup.isSoldOut ? _c("div", { staticClass: "plv-product-item__cover-stock" }, [_vm._v(" - " + _vm._s(_setup.$t("product.stock.soldOut")) + " - ")]) : _vm._e(), _vm.product.displayNumber ? _c("div", { staticClass: "plv-product-item__ranking plv-product-item__ranking--cover plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e()], 1) : _vm._e(), _c("div", { staticClass: "plv-product-item__content" }, [_c("div", { staticClass: "plv-product-item__title-area" }, [_vm.product.displayNumber && !_vm.product.cover ? _c("div", { staticClass: "plv-product-item__ranking plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled && !_vm.product.cover && _vm.product.explainStatus !== _setup.ProductExplainStatus.Explained ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e(), _c(_setup.ProductTitle, { attrs: { "title": _vm.product.name, "use-ellipsis": _setup.shouldEllipsisTitle } })], 1), _c("div", { staticClass: "plv-product-item__tags" }, _vm._l(_vm.product.featureTags, function(tag, index) {
3682
3875
  return _c(_setup.ProductFeatureTag, { key: index, attrs: { "tag": tag } });
3683
- }), 1), _vm.product.description ? _c("p", { staticClass: "plv-product-item__description" }, [_vm._v(" " + _vm._s(_vm.product.description) + " ")]) : _vm._e(), _c("div", { staticClass: "plv-product-item__footer" }, [_c(_setup.ProductPrice, { attrs: { "product": _vm.product } }), _setup.productExplainEnabled && _vm.product.explainStatus === _setup.ProductExplainStatus.Explained && !_vm.product.cover ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explained--no-cover", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.onClickExplain } }) : _vm._e(), _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig }, on: { "direct-buy": _setup.onDirectBuy }, scopedSlots: _vm._u([{ key: "default", fn: function({ buttonText, disabled }) {
3876
+ }), 1), _vm.product.description ? _c("p", { staticClass: "plv-product-item__description" }, [_vm._v(" " + _vm._s(_vm.product.description) + " ")]) : _vm._e(), _c("div", { staticClass: "plv-product-item__footer" }, [_c(_setup.ProductPrice, { attrs: { "product": _vm.product } }), _setup.productExplainEnabled && _vm.product.explainStatus === _setup.ProductExplainStatus.Explained && !_vm.product.cover ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explained--no-cover", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e(), _vm.scene !== _setup.ProductItemScene.BigCard ? _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig }, on: { "direct-buy": _setup.onDirectBuy }, scopedSlots: _vm._u([{ key: "default", fn: function({ buttonText, disabled }) {
3684
3877
  return [_c("button", { staticClass: "plv-product-item__buy-button", class: { "plv-product-item__buy-button--disabled": disabled } }, [_vm._v(" " + _vm._s(buttonText) + " ")])];
3685
- } }]) })], 1)])])]);
3878
+ } }], null, false, 477326030) }) : _vm._e()], 1)])])]);
3686
3879
  };
3687
3880
  var _sfc_staticRenderFns = [];
3688
3881
  var __component__ = /* @__PURE__ */ normalizeComponent(
@@ -3696,8 +3889,8 @@ console.log(
3696
3889
  "%c@polyv/product-ui",
3697
3890
  "background:#409EFF;padding: 2px 6px;border-radius: 3px;color: #fff",
3698
3891
  "[component: product-item]",
3699
- "[version: 1.0.0-rc-20250612.4]",
3700
- "[buildTime: 2025-06-12 09:58:17]"
3892
+ "[version: 1.1.0-rc-20250703.1]",
3893
+ "[buildTime: 2025-07-03 01:48:11]"
3701
3894
  );
3702
3895
  export {
3703
3896
  productItem as default