@polyv/product-ui 1.0.0-rc-20250612.3

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 (76) hide show
  1. package/address-edit.cjs.js +8 -0
  2. package/address-edit.es.d.ts +3 -0
  3. package/address-edit.es.js +5908 -0
  4. package/address-edit.umd.js +8 -0
  5. package/address-item.cjs.js +8 -0
  6. package/address-item.es.d.ts +3 -0
  7. package/address-item.es.js +425 -0
  8. package/address-item.umd.js +8 -0
  9. package/address-list.cjs.js +9 -0
  10. package/address-list.es.d.ts +3 -0
  11. package/address-list.es.js +1908 -0
  12. package/address-list.umd.js +9 -0
  13. package/index.cjs.js +8 -0
  14. package/index.es.js +15347 -0
  15. package/index.umd.js +8 -0
  16. package/mobile-product-pendant.cjs.js +8 -0
  17. package/mobile-product-pendant.es.d.ts +3 -0
  18. package/mobile-product-pendant.es.js +813 -0
  19. package/mobile-product-pendant.umd.js +8 -0
  20. package/order-confirm.cjs.js +9 -0
  21. package/order-confirm.es.d.ts +3 -0
  22. package/order-confirm.es.js +5254 -0
  23. package/order-confirm.umd.js +9 -0
  24. package/order-detail.cjs.js +8 -0
  25. package/order-detail.es.d.ts +3 -0
  26. package/order-detail.es.js +2474 -0
  27. package/order-detail.umd.js +8 -0
  28. package/order-item.cjs.js +8 -0
  29. package/order-item.es.d.ts +3 -0
  30. package/order-item.es.js +1448 -0
  31. package/order-item.umd.js +8 -0
  32. package/order-list-popup.cjs.js +9 -0
  33. package/order-list-popup.es.d.ts +3 -0
  34. package/order-list-popup.es.js +4114 -0
  35. package/order-list-popup.umd.js +9 -0
  36. package/order-list.cjs.js +8 -0
  37. package/order-list.es.d.ts +3 -0
  38. package/order-list.es.js +2572 -0
  39. package/order-list.umd.js +9 -0
  40. package/order-popup.cjs.js +9 -0
  41. package/order-popup.es.d.ts +3 -0
  42. package/order-popup.es.js +8050 -0
  43. package/order-popup.umd.js +9 -0
  44. package/package.json +28 -0
  45. package/pc-product-pendant.cjs.js +9 -0
  46. package/pc-product-pendant.es.d.ts +3 -0
  47. package/pc-product-pendant.es.js +1604 -0
  48. package/pc-product-pendant.umd.js +9 -0
  49. package/product-button.cjs.js +9 -0
  50. package/product-button.es.d.ts +3 -0
  51. package/product-button.es.js +1882 -0
  52. package/product-button.umd.js +9 -0
  53. package/product-detail-popup.cjs.js +9 -0
  54. package/product-detail-popup.es.d.ts +3 -0
  55. package/product-detail-popup.es.js +8250 -0
  56. package/product-detail-popup.umd.js +9 -0
  57. package/product-detail.cjs.js +9 -0
  58. package/product-detail.es.d.ts +3 -0
  59. package/product-detail.es.js +8082 -0
  60. package/product-detail.umd.js +9 -0
  61. package/product-iframe-link-popup.cjs.js +9 -0
  62. package/product-iframe-link-popup.es.d.ts +3 -0
  63. package/product-iframe-link-popup.es.js +2209 -0
  64. package/product-iframe-link-popup.umd.js +9 -0
  65. package/product-item.cjs.js +8 -0
  66. package/product-item.es.d.ts +3 -0
  67. package/product-item.es.js +3700 -0
  68. package/product-item.umd.js +9 -0
  69. package/product-list-popup.cjs.js +9 -0
  70. package/product-list-popup.es.d.ts +3 -0
  71. package/product-list-popup.es.js +5302 -0
  72. package/product-list-popup.umd.js +9 -0
  73. package/product-list.cjs.js +9 -0
  74. package/product-list.es.d.ts +3 -0
  75. package/product-list.es.js +5189 -0
  76. package/product-list.umd.js +9 -0
@@ -0,0 +1,3700 @@
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)}}();
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a2, b2) => {
10
+ for (var prop in b2 || (b2 = {}))
11
+ if (__hasOwnProp.call(b2, prop))
12
+ __defNormalProp(a2, prop, b2[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b2)) {
15
+ if (__propIsEnum.call(b2, prop))
16
+ __defNormalProp(a2, prop, b2[prop]);
17
+ }
18
+ return a2;
19
+ };
20
+ var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
21
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
+ var __async = (__this, __arguments, generator) => {
23
+ return new Promise((resolve, reject) => {
24
+ var fulfilled = (value) => {
25
+ try {
26
+ step(generator.next(value));
27
+ } catch (e) {
28
+ reject(e);
29
+ }
30
+ };
31
+ var rejected = (value) => {
32
+ try {
33
+ step(generator.throw(value));
34
+ } catch (e) {
35
+ reject(e);
36
+ }
37
+ };
38
+ var step = (x2) => x2.done ? resolve(x2.value) : Promise.resolve(x2.value).then(fulfilled, rejected);
39
+ step((generator = generator.apply(__this, __arguments)).next());
40
+ });
41
+ };
42
+ import { onMounted, onBeforeUnmount, inject, computed, defineComponent, ref, watch, nextTick, unref, watchEffect } from "vue";
43
+ /*!
44
+ * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
45
+ *
46
+ * Copyright (c) 2014-2017, Jon Schlinkert.
47
+ * Released under the MIT License.
48
+ */
49
+ function isObject$1(o2) {
50
+ return Object.prototype.toString.call(o2) === "[object Object]";
51
+ }
52
+ function isPlainObject(o2) {
53
+ var ctor, prot;
54
+ if (isObject$1(o2) === false) return false;
55
+ ctor = o2.constructor;
56
+ if (ctor === void 0) return true;
57
+ prot = ctor.prototype;
58
+ if (isObject$1(prot) === false) return false;
59
+ if (prot.hasOwnProperty("isPrototypeOf") === false) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ var define_process_env_default = {};
65
+ function t() {
66
+ return t = Object.assign ? Object.assign.bind() : function(e2) {
67
+ for (var t2 = 1; t2 < arguments.length; t2++) {
68
+ var n2 = arguments[t2];
69
+ for (var r2 in n2) Object.prototype.hasOwnProperty.call(n2, r2) && (e2[r2] = n2[r2]);
70
+ }
71
+ return e2;
72
+ }, t.apply(this, arguments);
73
+ }
74
+ function n(e2, t2) {
75
+ if (null == e2) return {};
76
+ var n2 = {};
77
+ for (var r2 in e2) if (Object.prototype.hasOwnProperty.call(e2, r2)) {
78
+ if (t2.indexOf(r2) >= 0) continue;
79
+ n2[r2] = e2[r2];
80
+ }
81
+ return n2;
82
+ }
83
+ const r = { silent: false, logLevel: "warn" }, i = ["validator"], o = Object.prototype, a = o.toString, s = o.hasOwnProperty, u = /^\s*function (\w+)/;
84
+ function l(e2) {
85
+ var t2;
86
+ const n2 = null !== (t2 = null == e2 ? void 0 : e2.type) && void 0 !== t2 ? t2 : e2;
87
+ if (n2) {
88
+ const e3 = n2.toString().match(u);
89
+ return e3 ? e3[1] : "";
90
+ }
91
+ return "";
92
+ }
93
+ const c = isPlainObject;
94
+ function f() {
95
+ }
96
+ let d = f;
97
+ if ("production" !== define_process_env_default.NODE_ENV) {
98
+ const e2 = "undefined" != typeof console;
99
+ d = e2 ? function(e3, t2 = r.logLevel) {
100
+ false === r.silent && console[t2](`[VueTypes warn]: ${e3}`);
101
+ } : f;
102
+ }
103
+ const p = (e2, t2) => s.call(e2, t2), y = Number.isInteger || function(e2) {
104
+ return "number" == typeof e2 && isFinite(e2) && Math.floor(e2) === e2;
105
+ }, v = Array.isArray || function(e2) {
106
+ return "[object Array]" === a.call(e2);
107
+ }, h = (e2) => "[object Function]" === a.call(e2), b = (e2, t2) => c(e2) && p(e2, "_vueTypes_name") && (!t2 || e2._vueTypes_name === t2), g = (e2) => c(e2) && (p(e2, "type") || ["_vueTypes_name", "validator", "default", "required"].some((t2) => p(e2, t2)));
108
+ function O(e2, t2) {
109
+ return Object.defineProperty(e2.bind(t2), "__original", { value: e2 });
110
+ }
111
+ function m(e2, t2, n2 = false) {
112
+ let r2, i2 = true, o2 = "";
113
+ r2 = c(e2) ? e2 : { type: e2 };
114
+ const a2 = b(r2) ? r2._vueTypes_name + " - " : "";
115
+ if (g(r2) && null !== r2.type) {
116
+ if (void 0 === r2.type || true === r2.type) return i2;
117
+ if (!r2.required && null == t2) return i2;
118
+ v(r2.type) ? (i2 = r2.type.some((e3) => true === m(e3, t2, true)), o2 = r2.type.map((e3) => l(e3)).join(" or ")) : (o2 = l(r2), i2 = "Array" === o2 ? v(t2) : "Object" === o2 ? c(t2) : "String" === o2 || "Number" === o2 || "Boolean" === o2 || "Function" === o2 ? function(e3) {
119
+ if (null == e3) return "";
120
+ const t3 = e3.constructor.toString().match(u);
121
+ return t3 ? t3[1].replace(/^Async/, "") : "";
122
+ }(t2) === o2 : t2 instanceof r2.type);
123
+ }
124
+ if (!i2) {
125
+ const e3 = `${a2}value "${t2}" should be of type "${o2}"`;
126
+ return false === n2 ? (d(e3), false) : e3;
127
+ }
128
+ if (p(r2, "validator") && h(r2.validator)) {
129
+ const e3 = d, o3 = [];
130
+ if (d = (e4) => {
131
+ o3.push(e4);
132
+ }, i2 = r2.validator(t2), d = e3, !i2) {
133
+ const e4 = (o3.length > 1 ? "* " : "") + o3.join("\n* ");
134
+ return o3.length = 0, false === n2 ? (d(e4), i2) : e4;
135
+ }
136
+ }
137
+ return i2;
138
+ }
139
+ function j(e2, t2) {
140
+ const n2 = Object.defineProperties(t2, { _vueTypes_name: { value: e2, writable: true }, isRequired: { get() {
141
+ return this.required = true, this;
142
+ } }, def: { value(e3) {
143
+ return void 0 === e3 ? this.type === Boolean || Array.isArray(this.type) && this.type.includes(Boolean) ? void (this.default = void 0) : (p(this, "default") && delete this.default, this) : h(e3) || true === m(this, e3, true) ? (this.default = v(e3) ? () => [...e3] : c(e3) ? () => Object.assign({}, e3) : e3, this) : (d(`${this._vueTypes_name} - invalid default value: "${e3}"`), this);
144
+ } } }), { validator: r2 } = n2;
145
+ return h(r2) && (n2.validator = O(r2, n2)), n2;
146
+ }
147
+ function _(e2, t2) {
148
+ const n2 = j(e2, t2);
149
+ return Object.defineProperty(n2, "validate", { value(e3) {
150
+ return h(this.validator) && d(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info:
151
+ ${JSON.stringify(this)}`), this.validator = O(e3, this), this;
152
+ } });
153
+ }
154
+ function T(e2, t2, r2) {
155
+ const o2 = function(e3) {
156
+ const t3 = {};
157
+ return Object.getOwnPropertyNames(e3).forEach((n2) => {
158
+ t3[n2] = Object.getOwnPropertyDescriptor(e3, n2);
159
+ }), Object.defineProperties({}, t3);
160
+ }(t2);
161
+ if (o2._vueTypes_name = e2, !c(r2)) return o2;
162
+ const { validator: a2 } = r2, s2 = n(r2, i);
163
+ if (h(a2)) {
164
+ let { validator: e3 } = o2;
165
+ e3 && (e3 = null !== (l2 = (u2 = e3).__original) && void 0 !== l2 ? l2 : u2), o2.validator = O(e3 ? function(t3) {
166
+ return e3.call(this, t3) && a2.call(this, t3);
167
+ } : a2, o2);
168
+ }
169
+ var u2, l2;
170
+ return Object.assign(o2, s2);
171
+ }
172
+ function $(e2) {
173
+ return e2.replace(/^(?!\s*$)/gm, " ");
174
+ }
175
+ const w = () => _("any", {}), x = () => _("function", { type: Function }), P = () => _("boolean", { type: Boolean }), A = () => _("string", { type: String }), E = () => _("number", { type: Number }), S = () => _("array", { type: Array }), N = () => _("object", { type: Object }), V = () => j("integer", { type: Number, validator(e2) {
176
+ const t2 = y(e2);
177
+ return false === t2 && d(`integer - "${e2}" is not an integer`), t2;
178
+ } }), q = () => j("symbol", { validator(e2) {
179
+ const t2 = "symbol" == typeof e2;
180
+ return false === t2 && d(`symbol - invalid value "${e2}"`), t2;
181
+ } }), k = () => Object.defineProperty({ type: null, validator(e2) {
182
+ const t2 = null === e2;
183
+ return false === t2 && d("nullable - value should be null"), t2;
184
+ } }, "_vueTypes_name", { value: "nullable" });
185
+ function D(e2, t2 = "custom validation failed") {
186
+ if ("function" != typeof e2) throw new TypeError("[VueTypes error]: You must provide a function as argument");
187
+ return j(e2.name || "<<anonymous function>>", { type: null, validator(n2) {
188
+ const r2 = e2(n2);
189
+ return r2 || d(`${this._vueTypes_name} - ${t2}`), r2;
190
+ } });
191
+ }
192
+ function L(e2) {
193
+ if (!v(e2)) throw new TypeError("[VueTypes error]: You must provide an array as argument.");
194
+ const t2 = `oneOf - value should be one of "${e2.map((e3) => "symbol" == typeof e3 ? e3.toString() : e3).join('", "')}".`, n2 = { validator(n3) {
195
+ const r2 = -1 !== e2.indexOf(n3);
196
+ return r2 || d(t2), r2;
197
+ } };
198
+ if (-1 === e2.indexOf(null)) {
199
+ const t3 = e2.reduce((e3, t4) => {
200
+ if (null != t4) {
201
+ const n3 = t4.constructor;
202
+ -1 === e3.indexOf(n3) && e3.push(n3);
203
+ }
204
+ return e3;
205
+ }, []);
206
+ t3.length > 0 && (n2.type = t3);
207
+ }
208
+ return j("oneOf", n2);
209
+ }
210
+ function B(e2) {
211
+ if (!v(e2)) throw new TypeError("[VueTypes error]: You must provide an array as argument");
212
+ let t2 = false, n2 = false, r2 = [];
213
+ for (let i3 = 0; i3 < e2.length; i3 += 1) {
214
+ const o2 = e2[i3];
215
+ if (g(o2)) {
216
+ if (h(o2.validator) && (t2 = true), b(o2, "oneOf") && o2.type) {
217
+ r2 = r2.concat(o2.type);
218
+ continue;
219
+ }
220
+ if (b(o2, "nullable")) {
221
+ n2 = true;
222
+ continue;
223
+ }
224
+ if (true === o2.type || !o2.type) {
225
+ d('oneOfType - invalid usage of "true" and "null" as types.');
226
+ continue;
227
+ }
228
+ r2 = r2.concat(o2.type);
229
+ } else r2.push(o2);
230
+ }
231
+ r2 = r2.filter((e3, t3) => r2.indexOf(e3) === t3);
232
+ const i2 = false === n2 && r2.length > 0 ? r2 : null;
233
+ return j("oneOfType", t2 ? { type: i2, validator(t3) {
234
+ const n3 = [], r3 = e2.some((e3) => {
235
+ const r4 = m(e3, t3, true);
236
+ return "string" == typeof r4 && n3.push(r4), true === r4;
237
+ });
238
+ return r3 || d(`oneOfType - provided value does not match any of the ${n3.length} passed-in validators:
239
+ ${$(n3.join("\n"))}`), r3;
240
+ } } : { type: i2 });
241
+ }
242
+ function F(e2) {
243
+ return j("arrayOf", { type: Array, validator(t2) {
244
+ let n2 = "";
245
+ const r2 = t2.every((t3) => (n2 = m(e2, t3, true), true === n2));
246
+ return r2 || d(`arrayOf - value validation error:
247
+ ${$(n2)}`), r2;
248
+ } });
249
+ }
250
+ function Y(e2) {
251
+ return j("instanceOf", { type: e2 });
252
+ }
253
+ function I(e2) {
254
+ return j("objectOf", { type: Object, validator(t2) {
255
+ let n2 = "";
256
+ const r2 = Object.keys(t2).every((r3) => (n2 = m(e2, t2[r3], true), true === n2));
257
+ return r2 || d(`objectOf - value validation error:
258
+ ${$(n2)}`), r2;
259
+ } });
260
+ }
261
+ function J(e2) {
262
+ const t2 = Object.keys(e2), n2 = t2.filter((t3) => {
263
+ var n3;
264
+ return !(null === (n3 = e2[t3]) || void 0 === n3 || !n3.required);
265
+ }), r2 = j("shape", { type: Object, validator(r3) {
266
+ if (!c(r3)) return false;
267
+ const i2 = Object.keys(r3);
268
+ if (n2.length > 0 && n2.some((e3) => -1 === i2.indexOf(e3))) {
269
+ const e3 = n2.filter((e4) => -1 === i2.indexOf(e4));
270
+ return d(1 === e3.length ? `shape - required property "${e3[0]}" is not defined.` : `shape - required properties "${e3.join('", "')}" are not defined.`), false;
271
+ }
272
+ return i2.every((n3) => {
273
+ if (-1 === t2.indexOf(n3)) return true === this._vueTypes_isLoose || (d(`shape - shape definition does not include a "${n3}" property. Allowed keys: "${t2.join('", "')}".`), false);
274
+ const i3 = m(e2[n3], r3[n3], true);
275
+ return "string" == typeof i3 && d(`shape - "${n3}" property validation error:
276
+ ${$(i3)}`), true === i3;
277
+ });
278
+ } });
279
+ return Object.defineProperty(r2, "_vueTypes_isLoose", { writable: true, value: false }), Object.defineProperty(r2, "loose", { get() {
280
+ return this._vueTypes_isLoose = true, this;
281
+ } }), r2;
282
+ }
283
+ const M = ["name", "validate", "getter"], R = /* @__PURE__ */ ((e2) => ((e2 = class {
284
+ static get any() {
285
+ return w();
286
+ }
287
+ static get func() {
288
+ return x().def(this.defaults.func);
289
+ }
290
+ static get bool() {
291
+ return void 0 === this.defaults.bool ? P() : P().def(this.defaults.bool);
292
+ }
293
+ static get string() {
294
+ return A().def(this.defaults.string);
295
+ }
296
+ static get number() {
297
+ return E().def(this.defaults.number);
298
+ }
299
+ static get array() {
300
+ return S().def(this.defaults.array);
301
+ }
302
+ static get object() {
303
+ return N().def(this.defaults.object);
304
+ }
305
+ static get integer() {
306
+ return V().def(this.defaults.integer);
307
+ }
308
+ static get symbol() {
309
+ return q();
310
+ }
311
+ static get nullable() {
312
+ return k();
313
+ }
314
+ static extend(e3) {
315
+ if (d("VueTypes.extend is deprecated. Use the ES6+ method instead. See https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#extending-namespaced-validators-in-es6 for details."), v(e3)) return e3.forEach((e4) => this.extend(e4)), this;
316
+ const { name: t2, validate: r2 = false, getter: i2 = false } = e3, o2 = n(e3, M);
317
+ if (p(this, t2)) throw new TypeError(`[VueTypes error]: Type "${t2}" already defined`);
318
+ const { type: a2 } = o2;
319
+ if (b(a2)) return delete o2.type, Object.defineProperty(this, t2, i2 ? { get: () => T(t2, a2, o2) } : { value(...e4) {
320
+ const n2 = T(t2, a2, o2);
321
+ return n2.validator && (n2.validator = n2.validator.bind(n2, ...e4)), n2;
322
+ } });
323
+ let s2;
324
+ return s2 = i2 ? { get() {
325
+ const e4 = Object.assign({}, o2);
326
+ return r2 ? _(t2, e4) : j(t2, e4);
327
+ }, enumerable: true } : { value(...e4) {
328
+ const n2 = Object.assign({}, o2);
329
+ let i3;
330
+ return i3 = r2 ? _(t2, n2) : j(t2, n2), n2.validator && (i3.validator = n2.validator.bind(i3, ...e4)), i3;
331
+ }, enumerable: true }, Object.defineProperty(this, t2, s2);
332
+ }
333
+ }).defaults = {}, e2.sensibleDefaults = void 0, e2.config = r, e2.custom = D, e2.oneOf = L, e2.instanceOf = Y, e2.oneOfType = B, e2.arrayOf = F, e2.objectOf = I, e2.shape = J, e2.utils = { validate: (e3, t2) => true === m(t2, e3, true), toType: (e3, t2, n2 = false) => n2 ? _(e3, t2) : j(e3, t2) }, e2))();
334
+ function U(e2 = { func: () => {
335
+ }, bool: true, string: "", number: 0, array: () => [], object: () => ({}), integer: 0 }) {
336
+ var n2;
337
+ return (n2 = class extends R {
338
+ static get sensibleDefaults() {
339
+ return t({}, this.defaults);
340
+ }
341
+ static set sensibleDefaults(n3) {
342
+ this.defaults = false !== n3 ? t({}, true !== n3 ? n3 : e2) : {};
343
+ }
344
+ }).defaults = t({}, e2), n2;
345
+ }
346
+ class z extends U() {
347
+ }
348
+ class PropUtils {
349
+ /** String 类型,默认:'' */
350
+ static get string() {
351
+ return A().def("");
352
+ }
353
+ /** String 类型,默认:undefined */
354
+ static get looseString() {
355
+ return A();
356
+ }
357
+ /** Number 类型,默认:0 */
358
+ static get number() {
359
+ return E().def(0);
360
+ }
361
+ /** Number 类型,默认:undefined */
362
+ static get looseNumber() {
363
+ return E();
364
+ }
365
+ /** Boolean 类型,默认:true */
366
+ static get bool() {
367
+ return P().def(true);
368
+ }
369
+ static get looseBool() {
370
+ return B([]).def(void 0);
371
+ }
372
+ static get looseElement() {
373
+ return B([]).def(void 0);
374
+ }
375
+ }
376
+ __publicField(PropUtils, "objectType", N);
377
+ /** Array 类型,默认:[] */
378
+ __publicField(PropUtils, "array", () => {
379
+ return S().def([]);
380
+ });
381
+ /** Object 类型 */
382
+ __publicField(PropUtils, "object", N);
383
+ /** Function 类型 */
384
+ __publicField(PropUtils, "func", x);
385
+ /** 指定为数组中的值 */
386
+ __publicField(PropUtils, "oneOf", L);
387
+ /** 自定义类型 */
388
+ __publicField(PropUtils, "oneOfType", B);
389
+ /** 枚举类型 */
390
+ __publicField(PropUtils, "enum", A);
391
+ /** 任意类型 */
392
+ __publicField(PropUtils, "any", w);
393
+ const emitFunc = () => () => true;
394
+ function mitt(n2) {
395
+ return { all: n2 = n2 || /* @__PURE__ */ new Map(), on: function(t2, e) {
396
+ var i2 = n2.get(t2);
397
+ i2 ? i2.push(e) : n2.set(t2, [e]);
398
+ }, off: function(t2, e) {
399
+ var i2 = n2.get(t2);
400
+ i2 && (e ? i2.splice(i2.indexOf(e) >>> 0, 1) : n2.set(t2, []));
401
+ }, emit: function(t2, e) {
402
+ var i2 = n2.get(t2);
403
+ i2 && i2.slice().map(function(n3) {
404
+ n3(e);
405
+ }), (i2 = n2.get("*")) && i2.slice().map(function(n3) {
406
+ n3(t2, e);
407
+ });
408
+ } };
409
+ }
410
+ const globalKey = "__product-event-emitter-key";
411
+ function createEmitter() {
412
+ if (window[globalKey]) {
413
+ return window[globalKey];
414
+ }
415
+ const emitter = mitt();
416
+ window[globalKey] = emitter;
417
+ return emitter;
418
+ }
419
+ const useEventBusListener = (event, callback) => {
420
+ const { getEmitter } = useGlobalInject();
421
+ onMounted(() => {
422
+ getEmitter().on(event, callback);
423
+ });
424
+ onBeforeUnmount(() => {
425
+ getEmitter().off(event, callback);
426
+ });
427
+ };
428
+ var LangType = /* @__PURE__ */ ((LangType2) => {
429
+ LangType2["ZH_CN"] = "zh_CN";
430
+ LangType2["ZH_TW"] = "zh_TW";
431
+ LangType2["English"] = "en";
432
+ LangType2["Japanese"] = "ja";
433
+ LangType2["Korean"] = "ko";
434
+ LangType2["Russian"] = "ru";
435
+ return LangType2;
436
+ })(LangType || {});
437
+ const ProductInjectKey = "interactGlobalConfigV2";
438
+ const useGlobalInject = () => {
439
+ const injectData = inject(ProductInjectKey, {
440
+ globalLang: LangType.ZH_CN
441
+ });
442
+ const toast = (msg) => {
443
+ if (injectData.toast) {
444
+ injectData.toast(msg);
445
+ }
446
+ };
447
+ function getEmitter() {
448
+ if (injectData.getEmitter) {
449
+ return injectData.getEmitter();
450
+ }
451
+ return createEmitter();
452
+ }
453
+ const messageBox = (options) => {
454
+ if (injectData.messageBox) {
455
+ return injectData.messageBox(options);
456
+ }
457
+ return Promise.resolve(false);
458
+ };
459
+ return {
460
+ injectData,
461
+ toast,
462
+ getEmitter,
463
+ messageBox
464
+ };
465
+ };
466
+ var isArray = Array.isArray;
467
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
468
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
469
+ var root = freeGlobal || freeSelf || Function("return this")();
470
+ var Symbol$1 = root.Symbol;
471
+ var objectProto$4 = Object.prototype;
472
+ var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
473
+ var nativeObjectToString$1 = objectProto$4.toString;
474
+ var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;
475
+ function getRawTag(value) {
476
+ var isOwn = hasOwnProperty$4.call(value, symToStringTag$1), tag = value[symToStringTag$1];
477
+ try {
478
+ value[symToStringTag$1] = void 0;
479
+ var unmasked = true;
480
+ } catch (e) {
481
+ }
482
+ var result = nativeObjectToString$1.call(value);
483
+ if (unmasked) {
484
+ if (isOwn) {
485
+ value[symToStringTag$1] = tag;
486
+ } else {
487
+ delete value[symToStringTag$1];
488
+ }
489
+ }
490
+ return result;
491
+ }
492
+ var objectProto$3 = Object.prototype;
493
+ var nativeObjectToString = objectProto$3.toString;
494
+ function objectToString(value) {
495
+ return nativeObjectToString.call(value);
496
+ }
497
+ var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
498
+ var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0;
499
+ function baseGetTag(value) {
500
+ if (value == null) {
501
+ return value === void 0 ? undefinedTag : nullTag;
502
+ }
503
+ return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
504
+ }
505
+ function isObjectLike(value) {
506
+ return value != null && typeof value == "object";
507
+ }
508
+ var symbolTag = "[object Symbol]";
509
+ function isSymbol(value) {
510
+ return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
511
+ }
512
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
513
+ function isKey(value, object) {
514
+ if (isArray(value)) {
515
+ return false;
516
+ }
517
+ var type = typeof value;
518
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
519
+ return true;
520
+ }
521
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
522
+ }
523
+ function isObject(value) {
524
+ var type = typeof value;
525
+ return value != null && (type == "object" || type == "function");
526
+ }
527
+ var asyncTag = "[object AsyncFunction]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
528
+ function isFunction(value) {
529
+ if (!isObject(value)) {
530
+ return false;
531
+ }
532
+ var tag = baseGetTag(value);
533
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
534
+ }
535
+ var coreJsData = root["__core-js_shared__"];
536
+ var maskSrcKey = function() {
537
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
538
+ return uid ? "Symbol(src)_1." + uid : "";
539
+ }();
540
+ function isMasked(func) {
541
+ return !!maskSrcKey && maskSrcKey in func;
542
+ }
543
+ var funcProto$1 = Function.prototype;
544
+ var funcToString$1 = funcProto$1.toString;
545
+ function toSource(func) {
546
+ if (func != null) {
547
+ try {
548
+ return funcToString$1.call(func);
549
+ } catch (e) {
550
+ }
551
+ try {
552
+ return func + "";
553
+ } catch (e) {
554
+ }
555
+ }
556
+ return "";
557
+ }
558
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
559
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
560
+ var funcProto = Function.prototype, objectProto$2 = Object.prototype;
561
+ var funcToString = funcProto.toString;
562
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
563
+ var reIsNative = RegExp(
564
+ "^" + funcToString.call(hasOwnProperty$3).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
565
+ );
566
+ function baseIsNative(value) {
567
+ if (!isObject(value) || isMasked(value)) {
568
+ return false;
569
+ }
570
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
571
+ return pattern.test(toSource(value));
572
+ }
573
+ function getValue(object, key) {
574
+ return object == null ? void 0 : object[key];
575
+ }
576
+ function getNative(object, key) {
577
+ var value = getValue(object, key);
578
+ return baseIsNative(value) ? value : void 0;
579
+ }
580
+ var nativeCreate = getNative(Object, "create");
581
+ function hashClear() {
582
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
583
+ this.size = 0;
584
+ }
585
+ function hashDelete(key) {
586
+ var result = this.has(key) && delete this.__data__[key];
587
+ this.size -= result ? 1 : 0;
588
+ return result;
589
+ }
590
+ var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
591
+ var objectProto$1 = Object.prototype;
592
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
593
+ function hashGet(key) {
594
+ var data = this.__data__;
595
+ if (nativeCreate) {
596
+ var result = data[key];
597
+ return result === HASH_UNDEFINED$1 ? void 0 : result;
598
+ }
599
+ return hasOwnProperty$2.call(data, key) ? data[key] : void 0;
600
+ }
601
+ var objectProto = Object.prototype;
602
+ var hasOwnProperty$1 = objectProto.hasOwnProperty;
603
+ function hashHas(key) {
604
+ var data = this.__data__;
605
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty$1.call(data, key);
606
+ }
607
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
608
+ function hashSet(key, value) {
609
+ var data = this.__data__;
610
+ this.size += this.has(key) ? 0 : 1;
611
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
612
+ return this;
613
+ }
614
+ function Hash(entries) {
615
+ var index = -1, length = entries == null ? 0 : entries.length;
616
+ this.clear();
617
+ while (++index < length) {
618
+ var entry = entries[index];
619
+ this.set(entry[0], entry[1]);
620
+ }
621
+ }
622
+ Hash.prototype.clear = hashClear;
623
+ Hash.prototype["delete"] = hashDelete;
624
+ Hash.prototype.get = hashGet;
625
+ Hash.prototype.has = hashHas;
626
+ Hash.prototype.set = hashSet;
627
+ function listCacheClear() {
628
+ this.__data__ = [];
629
+ this.size = 0;
630
+ }
631
+ function eq(value, other) {
632
+ return value === other || value !== value && other !== other;
633
+ }
634
+ function assocIndexOf(array, key) {
635
+ var length = array.length;
636
+ while (length--) {
637
+ if (eq(array[length][0], key)) {
638
+ return length;
639
+ }
640
+ }
641
+ return -1;
642
+ }
643
+ var arrayProto = Array.prototype;
644
+ var splice = arrayProto.splice;
645
+ function listCacheDelete(key) {
646
+ var data = this.__data__, index = assocIndexOf(data, key);
647
+ if (index < 0) {
648
+ return false;
649
+ }
650
+ var lastIndex = data.length - 1;
651
+ if (index == lastIndex) {
652
+ data.pop();
653
+ } else {
654
+ splice.call(data, index, 1);
655
+ }
656
+ --this.size;
657
+ return true;
658
+ }
659
+ function listCacheGet(key) {
660
+ var data = this.__data__, index = assocIndexOf(data, key);
661
+ return index < 0 ? void 0 : data[index][1];
662
+ }
663
+ function listCacheHas(key) {
664
+ return assocIndexOf(this.__data__, key) > -1;
665
+ }
666
+ function listCacheSet(key, value) {
667
+ var data = this.__data__, index = assocIndexOf(data, key);
668
+ if (index < 0) {
669
+ ++this.size;
670
+ data.push([key, value]);
671
+ } else {
672
+ data[index][1] = value;
673
+ }
674
+ return this;
675
+ }
676
+ function ListCache(entries) {
677
+ var index = -1, length = entries == null ? 0 : entries.length;
678
+ this.clear();
679
+ while (++index < length) {
680
+ var entry = entries[index];
681
+ this.set(entry[0], entry[1]);
682
+ }
683
+ }
684
+ ListCache.prototype.clear = listCacheClear;
685
+ ListCache.prototype["delete"] = listCacheDelete;
686
+ ListCache.prototype.get = listCacheGet;
687
+ ListCache.prototype.has = listCacheHas;
688
+ ListCache.prototype.set = listCacheSet;
689
+ var Map$1 = getNative(root, "Map");
690
+ function mapCacheClear() {
691
+ this.size = 0;
692
+ this.__data__ = {
693
+ "hash": new Hash(),
694
+ "map": new (Map$1 || ListCache)(),
695
+ "string": new Hash()
696
+ };
697
+ }
698
+ function isKeyable(value) {
699
+ var type = typeof value;
700
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
701
+ }
702
+ function getMapData(map, key) {
703
+ var data = map.__data__;
704
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
705
+ }
706
+ function mapCacheDelete(key) {
707
+ var result = getMapData(this, key)["delete"](key);
708
+ this.size -= result ? 1 : 0;
709
+ return result;
710
+ }
711
+ function mapCacheGet(key) {
712
+ return getMapData(this, key).get(key);
713
+ }
714
+ function mapCacheHas(key) {
715
+ return getMapData(this, key).has(key);
716
+ }
717
+ function mapCacheSet(key, value) {
718
+ var data = getMapData(this, key), size = data.size;
719
+ data.set(key, value);
720
+ this.size += data.size == size ? 0 : 1;
721
+ return this;
722
+ }
723
+ function MapCache(entries) {
724
+ var index = -1, length = entries == null ? 0 : entries.length;
725
+ this.clear();
726
+ while (++index < length) {
727
+ var entry = entries[index];
728
+ this.set(entry[0], entry[1]);
729
+ }
730
+ }
731
+ MapCache.prototype.clear = mapCacheClear;
732
+ MapCache.prototype["delete"] = mapCacheDelete;
733
+ MapCache.prototype.get = mapCacheGet;
734
+ MapCache.prototype.has = mapCacheHas;
735
+ MapCache.prototype.set = mapCacheSet;
736
+ var FUNC_ERROR_TEXT = "Expected a function";
737
+ function memoize(func, resolver) {
738
+ if (typeof func != "function" || resolver != null && typeof resolver != "function") {
739
+ throw new TypeError(FUNC_ERROR_TEXT);
740
+ }
741
+ var memoized = function() {
742
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
743
+ if (cache.has(key)) {
744
+ return cache.get(key);
745
+ }
746
+ var result = func.apply(this, args);
747
+ memoized.cache = cache.set(key, result) || cache;
748
+ return result;
749
+ };
750
+ memoized.cache = new (memoize.Cache || MapCache)();
751
+ return memoized;
752
+ }
753
+ memoize.Cache = MapCache;
754
+ var MAX_MEMOIZE_SIZE = 500;
755
+ function memoizeCapped(func) {
756
+ var result = memoize(func, function(key) {
757
+ if (cache.size === MAX_MEMOIZE_SIZE) {
758
+ cache.clear();
759
+ }
760
+ return key;
761
+ });
762
+ var cache = result.cache;
763
+ return result;
764
+ }
765
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
766
+ var reEscapeChar = /\\(\\)?/g;
767
+ var stringToPath = memoizeCapped(function(string) {
768
+ var result = [];
769
+ if (string.charCodeAt(0) === 46) {
770
+ result.push("");
771
+ }
772
+ string.replace(rePropName, function(match, number, quote, subString) {
773
+ result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
774
+ });
775
+ return result;
776
+ });
777
+ function arrayMap(array, iteratee) {
778
+ var index = -1, length = array == null ? 0 : array.length, result = Array(length);
779
+ while (++index < length) {
780
+ result[index] = iteratee(array[index], index, array);
781
+ }
782
+ return result;
783
+ }
784
+ var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
785
+ function baseToString(value) {
786
+ if (typeof value == "string") {
787
+ return value;
788
+ }
789
+ if (isArray(value)) {
790
+ return arrayMap(value, baseToString) + "";
791
+ }
792
+ if (isSymbol(value)) {
793
+ return symbolToString ? symbolToString.call(value) : "";
794
+ }
795
+ var result = value + "";
796
+ return result == "0" && 1 / value == -Infinity ? "-0" : result;
797
+ }
798
+ function toString(value) {
799
+ return value == null ? "" : baseToString(value);
800
+ }
801
+ function castPath(value, object) {
802
+ if (isArray(value)) {
803
+ return value;
804
+ }
805
+ return isKey(value, object) ? [value] : stringToPath(toString(value));
806
+ }
807
+ function toKey(value) {
808
+ if (typeof value == "string" || isSymbol(value)) {
809
+ return value;
810
+ }
811
+ var result = value + "";
812
+ return result == "0" && 1 / value == -Infinity ? "-0" : result;
813
+ }
814
+ function baseGet(object, path) {
815
+ path = castPath(path, object);
816
+ var index = 0, length = path.length;
817
+ while (object != null && index < length) {
818
+ object = object[toKey(path[index++])];
819
+ }
820
+ return index && index == length ? object : void 0;
821
+ }
822
+ function get(object, path, defaultValue) {
823
+ var result = object == null ? void 0 : baseGet(object, path);
824
+ return result === void 0 ? defaultValue : result;
825
+ }
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
+ const addressEdit$5 = { "name": "联系人", "namePlaceholder": "请填写联系人姓名", "choiceAddress": "选择地区", "addressPlaceholder": "请选择地区", "phone": "手机号码", "phonePlaceholder": "请填写手机号码", "phoneError": "请输入正确的手机号", "addressDetail": "详细地址", "addressDetailPlaceholder": "请填写详细地址", "error": "请完善信息", "submit": "保存", "deleteConfirm": "确定要删除该地址吗?", "addAddress": "添加地址", "editAddress": "修改地址", "deleteAddress": "删除地址", "addSuccess": "保存成功", "addError": "保存失败", "editSuccess": "修改成功", "editError": "修改失败" };
828
+ const zhCNLang = {
829
+ "common.confirm": "确认",
830
+ "common.cancel": "取消",
831
+ "common.delete": "删除",
832
+ "common.edit": "修改",
833
+ "common.submitSuccess": "提交成功",
834
+ "product.button.normal": "去购买",
835
+ "product.button.finance": "立即了解",
836
+ "product.button.position": "投递简历",
837
+ "product.all": "全部",
838
+ "product.searchPlaceholder": "输入商品名称搜索",
839
+ "product.explaining": "讲解中",
840
+ "product.watchExplain": "看讲解",
841
+ "product.notExplained": "待讲解",
842
+ "product.detail.title": "商品详情",
843
+ "product.detail.video": "视频",
844
+ "product.detail.image": "图片",
845
+ "product.detail.job": "职位详情",
846
+ "product.price.free": "免费",
847
+ "product.empty": "暂无内容",
848
+ "product.price.hidden": "待开价",
849
+ "product.order": "订单",
850
+ "product.num": "数量",
851
+ "product.disableBuy": "暂不支持购买",
852
+ "product.allProduct": "全部商品",
853
+ "product.stock.soldOut": "已抢光",
854
+ order: order$5,
855
+ addressEdit: addressEdit$5
856
+ };
857
+ 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
+ const addressEdit$4 = { "name": "聯絡人", "namePlaceholder": "請填寫聯絡人", "choiceAddress": "選擇地區", "addressPlaceholder": "請選擇地區", "phone": "手機號碼", "phonePlaceholder": "請填寫手機號碼", "phoneError": "請輸入正確的手機號", "addressDetail": "詳細地址", "addressDetailPlaceholder": "請填寫詳細地址", "error": "請完善信息", "submit": "保存", "deleteConfirm": "確定要刪除該地址嗎?", "deleteAddress": "刪除地址", "addAddress": "添加地址", "editAddress": "修改地址", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "修改成功", "editError": "修改失敗" };
859
+ const zhTWLang = {
860
+ "common.confirm": "確認",
861
+ "common.cancel": "取消",
862
+ "common.delete": "刪除",
863
+ "common.edit": "修改",
864
+ "common.submitSuccess": "提交成功",
865
+ "product.button.normal": "去購買",
866
+ "product.button.finance": "立即瞭解",
867
+ "product.button.position": "投遞簡歷",
868
+ "product.all": "全部",
869
+ "product.searchPlaceholder": "輸入商品名稱搜索",
870
+ "product.explaining": "講解中",
871
+ "product.watchExplain": "看講解",
872
+ "product.notExplained": "待講解",
873
+ "product.detail.title": "商品詳情",
874
+ "product.detail.video": "視頻",
875
+ "product.detail.image": "圖片",
876
+ "product.detail.job": "職位詳情",
877
+ "product.price.free": "免費",
878
+ "product.empty": "暫無內容",
879
+ "product.price.hidden": "待開價",
880
+ "product.order": "訂單",
881
+ "product.num": "數量",
882
+ "product.disableBuy": "暫不支持購買",
883
+ "product.allProduct": "全部商品",
884
+ "product.stock.soldOut": "已搶光",
885
+ order: order$4,
886
+ addressEdit: addressEdit$4
887
+ };
888
+ 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
+ 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" };
890
+ const enLang = {
891
+ "common.confirm": "Confirm",
892
+ "common.cancel": "Cancel",
893
+ "common.delete": "Delete",
894
+ "common.edit": "Edit",
895
+ "common.submitSuccess": "Submit Success",
896
+ "product.button.normal": "Buy Now",
897
+ "product.button.finance": "Learn More",
898
+ "product.button.position": "Submit Resume",
899
+ "product.all": "All",
900
+ "product.searchPlaceholder": "Search by product name",
901
+ "product.explaining": "Explaining",
902
+ "product.watchExplain": "Watch Now",
903
+ "product.notExplained": "Pending",
904
+ "product.detail.title": "Product Details",
905
+ "product.detail.video": "Video",
906
+ "product.detail.image": "Image",
907
+ "product.detail.job": "Job Details",
908
+ "product.price.free": "Free",
909
+ "product.empty": "No Content",
910
+ "product.price.hidden": "Pending Price",
911
+ "product.order": "Order",
912
+ "product.num": "Quantity",
913
+ "product.disableBuy": "Purchase not supported",
914
+ "product.allProduct": "Products",
915
+ "product.stock.soldOut": "Sold Out",
916
+ order: order$3,
917
+ addressEdit: addressEdit$3
918
+ };
919
+ 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
+ const addressEdit$2 = { "name": "連絡先", "namePlaceholder": "連絡先を入力", "choiceAddress": "地域を選択", "addressPlaceholder": "地域を選択", "phone": "電話番号", "phonePlaceholder": "電話番号を入力", "phoneError": "正しい電話番号を入力してください", "addressDetail": "詳細住所", "addressDetailPlaceholder": "詳細住所を入力", "error": "情報を入力してください", "submit": "保存", "deleteConfirm": "この住所を削除しますか?", "deleteAddress": "住所を削除", "addAddress": "住所を追加", "editAddress": "住所を編集", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "編集成功", "editError": "編集失敗" };
921
+ const jaLang = {
922
+ "common.confirm": "確認",
923
+ "common.cancel": "キャンセル",
924
+ "common.delete": "削除",
925
+ "common.edit": "編集",
926
+ "common.submitSuccess": "提出成功",
927
+ "product.button.normal": "購入する",
928
+ "product.button.finance": "今すぐ詳細を見る",
929
+ "product.button.position": "履歴書を送信",
930
+ "product.all": "すべて",
931
+ "product.searchPlaceholder": "商品名を検索",
932
+ "product.explaining": "解説中",
933
+ "product.watchExplain": "解説を見る",
934
+ "product.notExplained": "解説なし",
935
+ "product.detail.title": "商品詳細",
936
+ "product.detail.video": "ビデオ",
937
+ "product.detail.image": "画像",
938
+ "product.detail.job": "職務詳細",
939
+ "product.price.free": "無料",
940
+ "product.empty": "内容なし",
941
+ "product.price.hidden": "価格非公開",
942
+ "product.order": "注文",
943
+ "product.num": "数量",
944
+ "product.disableBuy": "購入不可",
945
+ "product.allProduct": "すべての商品",
946
+ "product.stock.soldOut": "売り切れ",
947
+ order: order$2,
948
+ addressEdit: addressEdit$2
949
+ };
950
+ 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
+ const addressEdit$1 = { "name": "연락처", "namePlaceholder": "연락처 입력", "choiceAddress": "지역 선택", "addressPlaceholder": "지역 선택", "phone": "전화번호", "phonePlaceholder": "전화번호 입력", "phoneError": "올바른 전화번호를 입력해주세요", "addressDetail": "상세 주소", "addressDetailPlaceholder": "상세 주소 입력", "error": "정보를 입력해주세요.", "submit": "저장", "deleteConfirm": "주소를 삭제하시겠습니까?", "deleteAddress": "주소 삭제", "addAddress": "주소 추가", "editAddress": "주소 수정", "addSuccess": "저장 성공", "addError": "저장 실패", "editSuccess": "수정 성공", "editError": "수정 실패" };
952
+ const koLang = {
953
+ "common.confirm": "확인",
954
+ "common.cancel": "취소",
955
+ "common.delete": "삭제",
956
+ "common.edit": "수정",
957
+ "common.submitSuccess": "제출 성공",
958
+ "product.button.normal": "구매하기",
959
+ "product.button.finance": "지금 알아보기",
960
+ "product.button.position": "이력서 제출",
961
+ "product.all": "모든",
962
+ "product.searchPlaceholder": "상품 이름 검색",
963
+ "product.explaining": "설명중",
964
+ "product.watchExplain": "설명 보기",
965
+ "product.notExplained": "설명 없음",
966
+ "product.detail.title": "상품 상세",
967
+ "product.detail.video": "비디오",
968
+ "product.detail.image": "이미지",
969
+ "product.detail.job": "직무 상세",
970
+ "product.price.free": "무료",
971
+ "product.empty": "내용 없음",
972
+ "product.price.hidden": "가격 미공개",
973
+ "product.order": "주문",
974
+ "product.num": "수량",
975
+ "product.disableBuy": "구매 불가",
976
+ "product.allProduct": "모든 상품",
977
+ "product.stock.soldOut": "품절",
978
+ order: order$1,
979
+ addressEdit: addressEdit$1
980
+ };
981
+ 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
+ const addressEdit = { "name": "Контактное лицо", "namePlaceholder": "Пожалуйста, введите имя контактного лица", "choiceAddress": "Выберите регион", "addressPlaceholder": "Пожалуйста, выберите регион", "phone": "Номер телефона", "phonePlaceholder": "Пожалуйста, введите номер телефона", "phoneError": "Пожалуйста, введите правильный номер телефона", "addressDetail": "Подробный адрес", "addressDetailPlaceholder": "Пожалуйста, заполните подробный адрес", "error": "Пожалуйста, дополните информацию", "submit": "Сохранить", "deleteConfirm": "Вы уверены, что хотите удалить этот адрес?", "addAddress": "Добавить адрес", "editAddress": "Изменить адрес", "deleteAddress": "Удалить адрес", "addSuccess": "Успешно сохранено", "addError": "Не удалось сохранить", "editSuccess": "Успешно изменено", "editError": "Не удалось изменить" };
983
+ const ruLang = {
984
+ "common.confirm": "Подтвердить",
985
+ "common.cancel": "Отмена",
986
+ "common.delete": "Удалить",
987
+ "common.edit": "Изменить",
988
+ "common.submitSuccess": "Успешно отправлено",
989
+ "product.button.normal": "Купить",
990
+ "product.button.finance": "Узнать подробнее",
991
+ "product.button.position": "Подать резюме",
992
+ "product.all": "Все",
993
+ "product.searchPlaceholder": "Введите название товара для поиска",
994
+ "product.explaining": "В процессе объяснения",
995
+ "product.watchExplain": "Посмотреть объяснение",
996
+ "product.notExplained": "Ожидает объяснения",
997
+ "product.detail.title": "Детали товара",
998
+ "product.detail.video": "Видео",
999
+ "product.detail.image": "Изображение",
1000
+ "product.detail.job": "Детали вакансии",
1001
+ "product.price.free": "Бесплатно",
1002
+ "product.empty": "Пока нет содержимого",
1003
+ "product.price.hidden": "Цена уточняется",
1004
+ "product.order": "Заказ",
1005
+ "product.num": "Количество",
1006
+ "product.disableBuy": "Покупка временно недоступна",
1007
+ "product.allProduct": "Все товары",
1008
+ "product.stock.soldOut": "Распродано",
1009
+ order,
1010
+ addressEdit
1011
+ };
1012
+ const fullI18nData = {
1013
+ [LangType.ZH_CN]: zhCNLang,
1014
+ [LangType.ZH_TW]: zhTWLang,
1015
+ [LangType.English]: enLang,
1016
+ [LangType.Japanese]: jaLang,
1017
+ [LangType.Korean]: koLang,
1018
+ [LangType.Russian]: ruLang
1019
+ };
1020
+ const useI18n = () => {
1021
+ const { injectData } = useGlobalInject();
1022
+ const langValueToKeyMap = {
1023
+ "zh_CN": LangType.ZH_CN,
1024
+ "zh_TW": LangType.ZH_TW,
1025
+ "en": LangType.English,
1026
+ "ja": LangType.Japanese,
1027
+ "ko": LangType.Korean,
1028
+ "ru": LangType.Russian
1029
+ };
1030
+ const currentLang = computed(() => {
1031
+ const injectedLang = injectData.globalLang || LangType.ZH_CN;
1032
+ if (typeof injectedLang === "string" && langValueToKeyMap[injectedLang]) {
1033
+ const mappedLang = langValueToKeyMap[injectedLang];
1034
+ return mappedLang;
1035
+ }
1036
+ return injectedLang;
1037
+ });
1038
+ const currentLangData = computed(() => {
1039
+ const langKey = currentLang.value;
1040
+ const data = fullI18nData[langKey];
1041
+ if (!data) {
1042
+ console.warn(`Language data not found for: ${langKey}, falling back to zh_CN`);
1043
+ return fullI18nData[LangType.ZH_CN];
1044
+ }
1045
+ return data;
1046
+ });
1047
+ const isZhCN = computed(() => {
1048
+ const lang = currentLang.value;
1049
+ return lang === LangType.ZH_CN || lang === LangType.ZH_TW;
1050
+ });
1051
+ function replace(key, value, str) {
1052
+ return str.replace(new RegExp("\\{" + key + "}", "g"), value);
1053
+ }
1054
+ function $t(key, options = {}) {
1055
+ const langData = currentLangData.value;
1056
+ let text = get(langData, key);
1057
+ if (text === void 0 || typeof text !== "string") {
1058
+ console.warn(`Translation key not found: ${key}, current lang: ${currentLang.value}`);
1059
+ return key;
1060
+ }
1061
+ if (options) {
1062
+ const optionKeys = Object.keys(options);
1063
+ for (const optKey of optionKeys) {
1064
+ const value = options[optKey].toString();
1065
+ text = replace(optKey, value, text);
1066
+ }
1067
+ }
1068
+ return text;
1069
+ }
1070
+ return {
1071
+ currentLang,
1072
+ isZhCN,
1073
+ $t
1074
+ };
1075
+ };
1076
+ function canMatchKeywords(e, t2) {
1077
+ e = e.toLowerCase();
1078
+ const n2 = /[/\s;_-]/, s2 = /[/\s;_-]/;
1079
+ return t2.some((t3) => {
1080
+ const o2 = e.indexOf(t3.toLowerCase());
1081
+ if (-1 !== o2 && (n2.test(e[o2 - 1]) || 0 === o2) && (s2.test(e[o2 + t3.length]) || o2 + t3.length >= e.length)) return true;
1082
+ });
1083
+ }
1084
+ function canMatchModelRule(e, t2) {
1085
+ return !!/;\s*([^;)]*?)(?:\s+Build\/[^;)]+)?(?:;(?:\s*wv)?)?\)/.test(e) && t2.test(RegExp.$1);
1086
+ }
1087
+ function execRules(e, t2) {
1088
+ let n2;
1089
+ return t2.some((t3) => {
1090
+ let s2, o2 = false;
1091
+ 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;
1092
+ }), n2;
1093
+ }
1094
+ 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|_)/ }];
1095
+ function compareVersions(r2, e) {
1096
+ const t2 = /(\.0+)+$/, n2 = String(r2).replace(t2, "").split("."), s2 = String(e).replace(t2, "").split("."), i2 = Math.min(n2.length, s2.length);
1097
+ for (let r3 = 0; r3 < i2; r3++) {
1098
+ const e2 = parseInt(n2[r3]) - parseInt(s2[r3]);
1099
+ if (e2) return e2;
1100
+ }
1101
+ return n2.length - s2.length;
1102
+ }
1103
+ class Version {
1104
+ constructor(r2) {
1105
+ this._ver = (r2 || "").replace(/_/g, ".").replace(/\.+$/, ""), Object.freeze(this);
1106
+ }
1107
+ _compare(r2, e) {
1108
+ if (!this._ver || !r2) return false;
1109
+ const t2 = Array.isArray(e) ? e : [e], n2 = compareVersions(this._ver, r2);
1110
+ return t2.some(function(r3) {
1111
+ return n2 * r3 > 0 || 0 === n2 && 0 === r3;
1112
+ });
1113
+ }
1114
+ gt(r2) {
1115
+ return this._compare(r2, 1);
1116
+ }
1117
+ gte(r2) {
1118
+ return this._compare(r2, [1, 0]);
1119
+ }
1120
+ lt(r2) {
1121
+ return this._compare(r2, -1);
1122
+ }
1123
+ lte(r2) {
1124
+ return this._compare(r2, [-1, 0]);
1125
+ }
1126
+ eq(r2) {
1127
+ return this._compare(r2, 0);
1128
+ }
1129
+ toString() {
1130
+ return this._ver;
1131
+ }
1132
+ }
1133
+ const propMap$3 = { ios: "isIOS", openharmony: "isOpenHarmony", android: "isAndroid", windows: "isWindows", macos: "isMacOS" };
1134
+ function platformToOS(s2) {
1135
+ switch (s2) {
1136
+ case "Android":
1137
+ return "android";
1138
+ case "iPad":
1139
+ case "iPhone":
1140
+ case "iPod":
1141
+ return "ios";
1142
+ case "MacIntel":
1143
+ return "macos";
1144
+ case "Win32":
1145
+ return "windows";
1146
+ }
1147
+ }
1148
+ class OSInfo {
1149
+ constructor(s2, o2) {
1150
+ var i2;
1151
+ let e;
1152
+ 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) {
1153
+ const s3 = platformToOS(o2.platform);
1154
+ void 0 !== s3 && (e = { name: s3, version: "" });
1155
+ }
1156
+ let n2 = null !== (i2 = execRules(s2, osRules)) && void 0 !== i2 ? i2 : e;
1157
+ 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(""));
1158
+ }
1159
+ }
1160
+ const appleRules = [{ name: "ipad", regExp: /iPad/ }, { name: "ipod", regExp: /iPod/ }, { name: "iphone", regExp: /iPhone/ }];
1161
+ 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}$/ }];
1162
+ const propMap$2 = { ipod: "isIPod", iphone: "isIPhone", ipad: "isIPad", huawei: "isHuawei", mi: "isMi", oppo: "isOppo", vivo: "isVivo", oneplus: "isOnePlus", samsung: "isSamsung" };
1163
+ class BrandInfo {
1164
+ constructor(i2, s2) {
1165
+ let e;
1166
+ 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) {
1167
+ const o2 = execRules(i2, e);
1168
+ o2 ? this[propMap$2[o2.name]] = true : s2.isIOS && (this.isIPad = true);
1169
+ }
1170
+ Object.freeze(this);
1171
+ }
1172
+ }
1173
+ 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.]+)/ }];
1174
+ const propMap$1 = { chrome: "isChrome", safari: "isSafari", edge: "isEdge", ie: "isIE", firefox: "isFirefox", "opera-presto": "isPrestoOpera" };
1175
+ class BrowserInfo {
1176
+ constructor(e) {
1177
+ this.isChrome = false, this.isSafari = false, this.isEdge = false, this.isIE = false, this.isFirefox = false, this.isPrestoOpera = false;
1178
+ const s2 = execRules(e, browserRules);
1179
+ s2 ? (this[propMap$1[s2.name]] = true, this.version = new Version(s2.version)) : this.version = new Version(""), Object.freeze(this);
1180
+ }
1181
+ }
1182
+ 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 }];
1183
+ clientRules = clientRules.concat(browserRules);
1184
+ 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" };
1185
+ class ClientInfo {
1186
+ constructor(i2) {
1187
+ 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;
1188
+ const s2 = execRules(i2, clientRules);
1189
+ 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);
1190
+ }
1191
+ }
1192
+ class UAInfo {
1193
+ constructor(t2, i2) {
1194
+ 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);
1195
+ }
1196
+ }
1197
+ let currentUAInfo;
1198
+ function getCurrentUAInfo() {
1199
+ return currentUAInfo || (currentUAInfo = Object.freeze("undefined" != typeof window ? new UAInfo(window.navigator.userAgent, window.navigator) : new UAInfo(""))), currentUAInfo;
1200
+ }
1201
+ 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;
1208
+ const isPcMiniProgram = (isWeixin || isWorkWeixin) && /miniprogramenv/.test(ua);
1209
+ function __isMobile() {
1210
+ const ua2 = navigator.userAgent;
1211
+ if (/mobile|android/i.test(ua2)) {
1212
+ return true;
1213
+ } else {
1214
+ if (/\b(Windows\sNT|Macintosh|x86(_(32|64))?|amd64|i[1-6]86)\b/.test(ua2) || !("onorientationchange" in window)) {
1215
+ return false;
1216
+ } else {
1217
+ return true;
1218
+ }
1219
+ }
1220
+ }
1221
+ function __isTablet() {
1222
+ const ua2 = navigator.userAgent;
1223
+ if (/(?:iPad|PlayBook)/.test(ua2)) return true;
1224
+ if (uaInfo.os.isAndroid && !/(?:Mobile)/.test(ua2) || /(?:Tablet)/.test(ua2)) return true;
1225
+ return false;
1226
+ }
1227
+ const isMob = __isMobile();
1228
+ isMob && __isTablet();
1229
+ const isMobile = /* @__PURE__ */ (() => {
1230
+ return isMob || isPcMiniProgram;
1231
+ })();
1232
+ const liveGif = "data:image/gif;base64,R0lGODlhKgAqAKIEAP7//////v3//////////wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzFEQjYxNzBBNjg5MTFFQjhBN0REMjM4Qzk4RDRFMzciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzFEQjYxNzFBNjg5MTFFQjhBN0REMjM4Qzk4RDRFMzciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENzE0QTU2QkE2NkUxMUVCOEE3REQyMzhDOThENEUzNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENzE0QTU2Q0E2NkUxMUVCOEE3REQyMzhDOThENEUzNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAkEAAQALAAAAAAqACoAAAOQSLrc/jDKSau9OOvNuxxg6FlACI5VaaKUebKfC8crFJgl5w7Rzm+7XhAogwxUx59m+PDpik1mRtpwEmtR6FRbpV68C+uSyxBvsQ4zBqxQf8lhdgvelk/kbgsezKcT8n1oXXCBIkaFL4OGWYJ1jX9+gISRiEpllJOPe5mLl4+OmpyJaUijC6WWpzgzrK2ur6wJACH5BAkEAAQALAAAAAAqACoAAAOVSLrc/jDKSau9OOvNu/9gOIxkOJGlGaGjurIuxA7xM0cBAJAAd8s7lA8m+2mMjhltg2woh8Ii8ThNNi/XxZNZdWYrX8KWGrWFT13GOBNea9NiuMI9h7ezeHnczi9b+ylefoKDdYV7gX+HeYeGi4AtUo+TiYSVjpGWS2aQm2p6dIiZn40EAQNBowupqgqsPTWxsrO0FAkAIfkECQQABAAsAAAAACoAKgAAA5FIutz+MMpJq7046827/2AojmSJDWhqOqm6Mi36wvG8xEMUAMDAAxxcBJfbCCHEYA151DRZz9PykTROoVdpaxi9dG9f3hbron7PWVqagB6b1+0yWQ52q+l3PBu+VlQbcTJMfHZ1en6BRYB9e4R6X4iOgouFeZOWb4eNlZuXhp6Wiphzog0BPpw9qS1ANq6vsCYJACH5BAkEAAQALAAAAAAqACoAAAONSLrc/jDKSau9OOvNu/9gKI5kaZ7oM6xsugAsALgKzA40Ybf0vUa+3yYIJA59wJ1QY1Q1M89GEOdQUqVIyMDqvHV5XzAjqiAvpuHrOJtWn9lrr9ZMh2PtZTzBnNfX5W1pgnN+hYAOaIiGYneHb459jHGQe4tLipZukZeNkpWUfJ+gmUl6XFV6OaqrrBgJACH5BAkEAAQALAAAAAAqACoAAAOISLrc/jDKSau9OOvNu/9gKI5kaZ5oqq6nMAxAzL70MNf2iudPEL8AHuNHe+wiO+Hi6GAanQzoEoeUKqwE7BXLpUKSz1q4+O2Km94xuWFeo9NR+PSsftXvZfmWHuez23Zvbn96WYVahoeKfn2MiYN7kHOOgEqNkpVVi5iFV0GOn5KhgSylpqcdCQAh+QQJBAAEACwAAAAAKgAqAAADi0i63P4wykmrvTjrzbv/YCiOZGmeaKqubFsOcPwAMfzVtkPXN/7ggx5P54MMALvjr9gARoBBh1PKpFYX0+aVAV0OtV9rGLslZMUydBSc9o4VZ/JbPo/Dy/ey3Yzn6/9zeXWAbWprXIQ5boV0ioiBfoOSjI+Tjo2HbJSRl4KdCwFHc0mfpJkuqKmqEgkAIfkECQQABAAsAAAAACoAKgAAA4JIutz+MMpJq7046827/2AojmRpnmiqrhowvC8Lw/I81DNOO/bt9Q/XCwD4AHk2YxKZgwyIz+fj2KAym9VlFnvdbb0M6xe8ECvMZbRa2421p+yxWw7nyn30t3NtP8fDfGR+fWl/BIFzbXiAhGiDjYaOh4iLhYILAVGXQpuGLJ+goRgJACH5BAkEAAQALAAAAAAqACoAAAOASLrc/jDKSau9OOvNu/9gKI5kaZ5ougxsqyqt+8bsS9CDjes0H/sy1W7WcwCKnWHj2AJ8lAxoA5dzSGFI6/WWXXWjzZr2Nw6WzV7y9JtWg91t8YM6Z2+x9jz8vef2735/emh8hIFyhVV1g4hximeNeIaAA0yGlpEEmI82nZ6fGwkAIfkECQQABAAsAAAAACoAKgAAA3dIutz+MMpJq7046827/2AojmRpXkOqno26soubwrFMK/JwE/ne3z9aEDZkFU9HU7KUDLgCn+QSZXNMc4CHtKrdurpfSE5n5TKu3lfLvGbj3Dz4Gy6DlsNg/Jkuj/P1NYB7f2qDhW2CfodzizEAhDN3jTuUlZYYCQAh+QQJBAAEACwAAAAAKgAqAAADgEi63P4wykmrvTjrzbv/YCiOZGmeaLoMbKsqrfvG7EvQg43rNB/7MtVu1nMAip1h49gCfJQMaAOXc0hhSOv1ll11o82a9jcOls1e8vSbVoPdbfGDOmdvsfY8/L3n9u9+f3pofISBcoVVdYOIcYpnjXiGgANMhpaRBJiPNp2enxsJACH5BAkEAAQALAAAAAAqACoAAAOCSLrc/jDKSau9OOvNu/9gKI5kaZ5oqq4aMLwvC8PyPNQzTjv27fUP1wsA+AB5NmMSmYMMiM/n49igMpvVZRZ73W29DOsXvBArzGW0WtuNtafssVsO58p99LdzbT/Hw3xkfn1pfwSBc214gIRog42GjoeIi4WCCwFRl0KbhiyfoKEYCQAh+QQJBAAEACwAAAAAKgAqAAADi0i63P4wykmrvTjrzbv/YCiOZGmeaKqubFsOcPwAMfzVtkPXN/7ggx5P54MMALvjr9gARoBBh1PKpFYX0+aVAV0OtV9rGLslZMUydBSc9o4VZ/JbPo/Dy/ey3Yzn6/9zeXWAbWprXIQ5boV0ioiBfoOSjI+Tjo2HbJSRl4KdCwFHc0mfpJkuqKmqEgkAIfkECQQABAAsAAAAACoAKgAAA4hIutz+MMpJq7046827/2AojmRpnmiqrqcwDEDMvvQw1/aK508QvwAe40d77CI74eLoYBqdDOgSh5QqrATsFculQpLPWrj47Yqb3jG5YV6j01H49Kx+1e9l+ZYe57Pbdm9uf3pZhVqGh4p+fYyJg3uQc46ASo2SlVWLmIVXQY6fkqGBLKWmpx0JACH5BAkEAAQALAAAAAAqACoAAAONSLrc/jDKSau9OOvNu/9gKI5kaZ7oM6xsugAsALgKzA40Ybf0vUa+3yYIJA59wJ1QY1Q1M89GEOdQUqVIyMDqvHV5XzAjqiAvpuHrOJtWn9lrr9ZMh2PtZTzBnNfX5W1pgnN+hYAOaIiGYneHb459jHGQe4tLipZukZeNkpWUfJ+gmUl6XFV6OaqrrBgJACH5BAkEAAQALAAAAAAqACoAAAORSLrc/jDKSau9OOvNu/9gKI5kiQ1oajqpujIt+sLxvMRDFADAwAMcXASX2wghxGANedQ0Wc/T8pE0TqFXaWsYvXRvX94W66J+z1lamoAem9ftMlkOdqvpdzwbvlZUG3EyTHx2dXp+gUWAfXuEel+IjoKLhXmTlm+HjZWbl4aeloqYc6INAT6cPaktQDaur7AmCQAh+QQFBAAEACwAAAAAKgAqAAADlUi63P4wykmrvTjrzbv/YDiMZDiRpRmho7qyLsQO8TNHAQCQAHfLO5QPJvtpjI4ZbYNsKIfCIvE4TTYv18WTWXVmK1/Clhq1hU9dxjgTXmvTYrjCPYe3s3h53M4vW/spXn6Cg3WFe4F/h3mHhouALVKPk4mElY6RlktmkJtqenSImZ+NBAEDQaMLqaoKrD01sbKztBQJADs=";
1233
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1234
+ __name: "product-explain",
1235
+ props: {
1236
+ product: PropUtils.object().isRequired,
1237
+ productTarget: PropUtils.object().isRequired
1238
+ },
1239
+ emits: {
1240
+ "click-explain": emitFunc()
1241
+ },
1242
+ setup(__props, { emit }) {
1243
+ const props = __props;
1244
+ const { $t } = useI18n();
1245
+ const { ProductExplainStatus } = props.productTarget;
1246
+ function onClickExplain() {
1247
+ emit("click-explain", props.product);
1248
+ }
1249
+ return { __sfc: true, props, emit, $t, ProductExplainStatus, onClickExplain, isMobile, liveGif };
1250
+ }
1251
+ });
1252
+ function normalizeComponent(scriptExports, render7, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
1253
+ var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
1254
+ if (render7) {
1255
+ options.render = render7;
1256
+ options.staticRenderFns = staticRenderFns;
1257
+ options._compiled = true;
1258
+ }
1259
+ return {
1260
+ exports: scriptExports,
1261
+ options
1262
+ };
1263
+ }
1264
+ var _sfc_render$5 = function render() {
1265
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
1266
+ return _setup.isMobile ? _c("div", { class: { "plv-product-c-explain--no-cover": !_vm.product.cover } }, [_vm.product.explainStatus === _setup.ProductExplainStatus.Explaining ? _c("div", { staticClass: "plv-product-c-explain--explaining", class: {
1267
+ "plv-product-c-explain--explaining-cover": _vm.product.cover
1268
+ } }, [_c("img", { staticClass: "plv-product-c-explain--explaining-icon", attrs: { "src": _setup.liveGif } }), _c("span", [_vm._v(_vm._s(_setup.$t("product.explaining")))])]) : _vm.product.explainStatus === _setup.ProductExplainStatus.Explained ? _c("div", { staticClass: "plv-product-c-explain--explained", class: {
1269
+ "plv-product-c-explain--explained-cover": _vm.product.cover
1270
+ }, on: { "click": function($event) {
1271
+ $event.stopPropagation();
1272
+ return _setup.onClickExplain.apply(null, arguments);
1273
+ } } }, [_c("span", [_vm._v(_vm._s(_setup.$t("product.watchExplain")))])]) : _c("div", { staticClass: "plv-product-c-explain--not-explained", class: {
1274
+ "plv-product-c-explain--not-explained-cover": _vm.product.cover
1275
+ } }, [_c("span", [_vm._v(_vm._s(_setup.$t("product.notExplained")))])])]) : _vm._e();
1276
+ };
1277
+ var _sfc_staticRenderFns$5 = [];
1278
+ var __component__$5 = /* @__PURE__ */ normalizeComponent(
1279
+ _sfc_main$5,
1280
+ _sfc_render$5,
1281
+ _sfc_staticRenderFns$5
1282
+ );
1283
+ const ProductExplain = __component__$5.exports;
1284
+ function getDefaultExportFromCjs(x2) {
1285
+ return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
1286
+ }
1287
+ var iconBuilder = {};
1288
+ var interfaces = {};
1289
+ var hasRequiredInterfaces;
1290
+ function requireInterfaces() {
1291
+ if (hasRequiredInterfaces) return interfaces;
1292
+ hasRequiredInterfaces = 1;
1293
+ (function(exports) {
1294
+ Object.defineProperty(exports, "__esModule", { value: true });
1295
+ exports.getColorDescription = exports.defaultIconConfig = exports.currentColor = void 0;
1296
+ exports.currentColor = "currentColor";
1297
+ exports.defaultIconConfig = {
1298
+ size: "1em",
1299
+ type: "outline",
1300
+ strokeLinecap: "round",
1301
+ strokeLinejoin: "round",
1302
+ colors: {
1303
+ outline: {
1304
+ background: "none"
1305
+ },
1306
+ filled: {
1307
+ background: "#FFF"
1308
+ },
1309
+ twoTone: {
1310
+ stroke: "#333",
1311
+ fill: "#2F88FF"
1312
+ },
1313
+ multiColor: {
1314
+ outStroke: "#333",
1315
+ outFill: "#2F88FF",
1316
+ innerStroke: "#FFF",
1317
+ innerFill: "#43CCF8"
1318
+ }
1319
+ }
1320
+ };
1321
+ var getColorDescription = function(colorProp, iconType) {
1322
+ var color = typeof colorProp === "string" ? [colorProp] : colorProp || [];
1323
+ var colorDesc = [exports.currentColor, exports.currentColor, exports.currentColor, exports.currentColor];
1324
+ switch (iconType) {
1325
+ case "outline": {
1326
+ colorDesc[0] = typeof color[0] === "string" ? color[0] : exports.currentColor;
1327
+ colorDesc[1] = "none";
1328
+ colorDesc[2] = typeof color[0] === "string" ? color[0] : exports.currentColor;
1329
+ colorDesc[3] = "none";
1330
+ break;
1331
+ }
1332
+ case "filled": {
1333
+ colorDesc[0] = typeof color[0] === "string" ? color[0] : exports.currentColor;
1334
+ colorDesc[1] = typeof color[0] === "string" ? color[0] : exports.currentColor;
1335
+ colorDesc[2] = "#FFF";
1336
+ colorDesc[3] = "#FFF";
1337
+ break;
1338
+ }
1339
+ case "two-tone": {
1340
+ var _a = exports.defaultIconConfig.colors.twoTone, stroke = _a.stroke, fill = _a.fill;
1341
+ colorDesc[0] = typeof color[0] === "string" ? color[0] : stroke;
1342
+ colorDesc[1] = typeof color[1] === "string" ? color[1] : fill;
1343
+ colorDesc[2] = typeof color[0] === "string" ? color[0] : stroke;
1344
+ colorDesc[3] = typeof color[1] === "string" ? color[1] : fill;
1345
+ break;
1346
+ }
1347
+ case "multi-color": {
1348
+ var _b = exports.defaultIconConfig.colors.multiColor, outStroke = _b.outStroke, outFill = _b.outFill, innerStroke = _b.innerStroke, innerFill = _b.innerFill;
1349
+ colorDesc[0] = typeof color[0] === "string" ? color[0] : outStroke;
1350
+ colorDesc[1] = typeof color[1] === "string" ? color[1] : outFill;
1351
+ colorDesc[2] = typeof color[2] === "string" ? color[2] : innerStroke;
1352
+ colorDesc[3] = typeof color[3] === "string" ? color[3] : innerFill;
1353
+ break;
1354
+ }
1355
+ }
1356
+ return colorDesc;
1357
+ };
1358
+ exports.getColorDescription = getColorDescription;
1359
+ })(interfaces);
1360
+ return interfaces;
1361
+ }
1362
+ var utils = {};
1363
+ var config = {};
1364
+ var hasRequiredConfig;
1365
+ function requireConfig() {
1366
+ if (hasRequiredConfig) return config;
1367
+ hasRequiredConfig = 1;
1368
+ Object.defineProperty(config, "__esModule", { value: true });
1369
+ config.CLASS_NAME_PREFIX = void 0;
1370
+ config.CLASS_NAME_PREFIX = "polyv";
1371
+ return config;
1372
+ }
1373
+ var hasRequiredUtils;
1374
+ function requireUtils() {
1375
+ if (hasRequiredUtils) return utils;
1376
+ hasRequiredUtils = 1;
1377
+ Object.defineProperty(utils, "__esModule", { value: true });
1378
+ utils.line2UpperCase = utils.createClsName = void 0;
1379
+ var config_1 = requireConfig();
1380
+ var createClsName = function(name) {
1381
+ return "".concat(config_1.CLASS_NAME_PREFIX, "-").concat(name);
1382
+ };
1383
+ utils.createClsName = createClsName;
1384
+ var line2UpperCase = function(text) {
1385
+ return text.replace(/(^\w|-\w)/g, function(c2) {
1386
+ return c2.slice(-1).toUpperCase();
1387
+ });
1388
+ };
1389
+ utils.line2UpperCase = line2UpperCase;
1390
+ return utils;
1391
+ }
1392
+ var hasRequiredIconBuilder;
1393
+ function requireIconBuilder() {
1394
+ if (hasRequiredIconBuilder) return iconBuilder;
1395
+ hasRequiredIconBuilder = 1;
1396
+ Object.defineProperty(iconBuilder, "__esModule", { value: true });
1397
+ iconBuilder.IconBuilder = void 0;
1398
+ var interfaces_1 = requireInterfaces();
1399
+ var utils_1 = requireUtils();
1400
+ var IconBuilder = function(lineName, render7) {
1401
+ var IconComponent = {
1402
+ name: lineName,
1403
+ props: ["size", "type", "color", "strokeLinecap", "strokeLinejoin"],
1404
+ computed: {
1405
+ renderData: function() {
1406
+ var colorProp = this.color;
1407
+ var iconType = this.type || interfaces_1.defaultIconConfig.type;
1408
+ var size = this.size || interfaces_1.defaultIconConfig.size;
1409
+ var strokeLinecap = this.strokeLinecap || interfaces_1.defaultIconConfig.strokeLinecap;
1410
+ var strokeLinejoin = this.strokeLinejoin || interfaces_1.defaultIconConfig.strokeLinejoin;
1411
+ var colorDesc = (0, interfaces_1.getColorDescription)(colorProp, iconType);
1412
+ return {
1413
+ size,
1414
+ colorDesc,
1415
+ strokeLinecap,
1416
+ strokeLinejoin
1417
+ };
1418
+ }
1419
+ },
1420
+ render: function(h2) {
1421
+ var renderData = this.renderData;
1422
+ var classes = [
1423
+ (0, utils_1.createClsName)("icon"),
1424
+ (0, utils_1.createClsName)("icon-".concat(lineName))
1425
+ ];
1426
+ var styles = {};
1427
+ if (renderData.size) {
1428
+ styles.fontSize = "".concat(renderData.size, "px");
1429
+ }
1430
+ return h2("span", {
1431
+ class: classes.join(" "),
1432
+ style: styles,
1433
+ on: this.$listeners,
1434
+ attrs: this.$attrs,
1435
+ domProps: {
1436
+ innerHTML: render7(renderData)
1437
+ }
1438
+ });
1439
+ }
1440
+ };
1441
+ return IconComponent;
1442
+ };
1443
+ iconBuilder.IconBuilder = IconBuilder;
1444
+ return iconBuilder;
1445
+ }
1446
+ var iconBuilderExports = requireIconBuilder();
1447
+ const ProductIconArrowDown = iconBuilderExports.IconBuilder(
1448
+ "arrow-down",
1449
+ (data) => `
1450
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 16 16">
1451
+ <g>
1452
+ <g />
1453
+ <g>
1454
+ <path
1455
+ fill="${data.colorDesc[0]}"
1456
+ fill-opacity="1"
1457
+ fill-rule="evenodd"
1458
+ d="M2.868623,4.662188L8,10.26005L13.1313,4.6623L13.1314,4.662138Q13.2025,4.584652,13.2987,4.542326Q13.3949,4.5,13.5,4.5Q13.5492,4.5,13.5975,4.509607Q13.6458,4.519215,13.6913,4.53806Q13.7368,4.556906,13.7778,4.584265Q13.8187,4.611625,13.8536,4.646447Q13.8884,4.681269,13.9157,4.722215Q13.9431,4.763161,13.9619,4.808658Q13.9808,4.854155,13.9904,4.9024549Q14,4.9507543,14,5Q14,5.0938219,13.966,5.181262Q13.932,5.268701,13.8686,5.337862L13.8684,5.338025L8.36858,11.33786Q8.35389,11.35389,8.33786,11.36858Q8.26455,11.435780000000001,8.1711,11.46982Q8.077639999999999,11.50385,7.97828,11.49953Q7.87892,11.49521,7.78877,11.45319Q7.69863,11.41118,7.63142,11.33786L2.131469,5.337913L2.131423,5.337862Q2.068025,5.268701,2.034013,5.181261Q2,5.0938219,2,5Q2,4.9507543,2.009607,4.9024549Q2.019215,4.854155,2.0380599999999998,4.808658Q2.056906,4.763161,2.084265,4.722215Q2.111625,4.681269,2.146447,4.646447Q2.181269,4.611625,2.222215,4.584265Q2.263161,4.556906,2.308658,4.53806Q2.354155,4.519215,2.4024549,4.509607Q2.4507543,4.5,2.5,4.5Q2.605115,4.5,2.701332,4.542326Q2.797548,4.584652,2.868577,4.662138L2.868623,4.662188Z"
1459
+ />
1460
+ </g>
1461
+ </g>
1462
+ </svg>
1463
+ `
1464
+ );
1465
+ const ProductIconArrowLeft = iconBuilderExports.IconBuilder(
1466
+ "arrow-left",
1467
+ (data) => `
1468
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 20 20">
1469
+ <g>
1470
+ <g>
1471
+ <g />
1472
+ <g
1473
+ transform="matrix(0,0.9999999403953552,-0.9999999403953552,0,16.874999813735485,-10.624999180436134)"
1474
+ >
1475
+ <path
1476
+ fill="${data.colorDesc[0]}"
1477
+ fill-opacity="0.6000000238418579"
1478
+ fill-rule="evenodd"
1479
+ d="M14.302944,2.618292L20.625,9.515080000000001L26.9471,2.618207Q27.0537,2.5019780000000003,27.198,2.438489Q27.3423,2.375,27.5,2.375Q27.573900000000002,2.375,27.6463,2.389411Q27.7188,2.403822,27.787,2.43209Q27.8553,2.460359,27.9167,2.501398Q27.978099999999998,2.542437,28.0303,2.59467Q28.0826,2.646903,28.1236,2.708322Q28.1646,2.769742,28.1929,2.837987Q28.2212,2.906233,28.235599999999998,2.978682Q28.25,3.0511315,28.25,3.125Q28.25,3.265733,28.198999999999998,3.3968920000000002Q28.148,3.528052,28.0529,3.631794L28.052300000000002,3.632367L21.17787,11.13179Q21.15583,11.15583,21.13179,11.17786Q21.021819999999998,11.27867,20.88164,11.32972Q20.74147,11.38077,20.59242,11.37429Q20.44338,11.36781,20.30816,11.30479Q20.17294,11.24176,20.07213,11.13179L13.197134,3.631793Q13.102038,3.528052,13.051019,3.3968920000000002Q13,3.265733,13,3.125Q13,3.0511315,13.014410999999999,2.978682Q13.028822,2.906233,13.05709,2.837987Q13.085359,2.769742,13.126398,2.708322Q13.167437,2.646903,13.21967,2.59467Q13.271903,2.542437,13.333322,2.501398Q13.394742,2.460359,13.462987,2.43209Q13.531233,2.403822,13.603682,2.389411Q13.6761315,2.375,13.75,2.375Q13.907672,2.375,14.051997,2.438489Q14.196322,2.5019780000000003,14.302866,2.618207L14.302944,2.618292Z"
1480
+ />
1481
+ </g>
1482
+ </g>
1483
+ </g>
1484
+ </svg>
1485
+ `
1486
+ );
1487
+ iconBuilderExports.IconBuilder(
1488
+ "arrow-right",
1489
+ (data) => `
1490
+ <svg
1491
+ width="${data.size}"
1492
+ height="${data.size}"
1493
+ fill="${data.colorDesc[0]}"
1494
+ viewBox="0 0 1024 1024"
1495
+ >
1496
+ <path
1497
+ d="M373.504 770.56a31.744 31.744 0 0 1-10.24-23.04c0-8.78933301 3.669333-17.066667 10.24-23.210667L587.946667 522.75200001l-211.541334-198.65600001c-13.568-12.8-13.568-33.536 0-46.336 13.653333-12.8 35.754667-12.79999999 49.322667 0L660.309333 498.005333a31.232 31.232 0 0 1 5.034667 40.277334 32.170667 32.170667 0 0 1-8.106667 12.117333L422.741333 770.56a36.437333 36.437333 0 0 1-49.237333 0z"
1498
+ />
1499
+ </svg>
1500
+ `
1501
+ );
1502
+ iconBuilderExports.IconBuilder(
1503
+ "choose-address",
1504
+ (data) => `
1505
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 13.5 10">
1506
+ <g>
1507
+ <path
1508
+ fill="${data.colorDesc[0]}"
1509
+ fill-opacity="1"
1510
+ fill-rule="evenodd"
1511
+ d="M13.2295,1.683941Q13.3599,1.544932,13.4299,1.3677380000000001Q13.5,1.190545,13.5,1Q13.5,0.9015086,13.4808,0.80491Q13.4616,0.708311,13.4239,0.617317Q13.3862,0.526322,13.3315,0.44443Q13.2767,0.362537,13.2071,0.29289299999999996Q13.1375,0.22324900000000003,13.0556,0.16852999999999996Q12.9737,0.11381200000000002,12.8827,0.076121Q12.7917,0.038429999999999964,12.6951,0.019214999999999982Q12.5985,0,12.5,0Q12.2927,0,12.1025,0.08241100000000001Q11.9122,0.164821,11.7705,0.316059L11.7701,0.316446L4.97682,7.56261L1.7071070000000002,4.29289Q1.566455,4.15224,1.382683,4.0761199999999995Q1.198912,4,1,4Q0.9015086,4,0.80491,4.01921Q0.708311,4.03843,0.617317,4.0761199999999995Q0.526322,4.11381,0.44443,4.1685300000000005Q0.362537,4.22325,0.29289299999999996,4.29289Q0.22324900000000003,4.36254,0.16852999999999996,4.4444300000000005Q0.11381200000000002,4.52632,0.076121,4.617319999999999Q0.038429999999999964,4.70831,0.019214999999999982,4.80491Q0,4.90151,0,5Q0,5.19891,0.07611999999999997,5.38268Q0.15224099999999996,5.56645,0.29289299999999996,5.70711L0.293268,5.70748L4.29289,9.70711Q4.3043,9.71851,4.31606,9.72954Q4.46117,9.86558,4.6472999999999995,9.93574Q4.83343,10.00589,5.03224,9.99948Q5.23105,9.99307,5.41227,9.91106Q5.59349,9.82905,5.72954,9.68394L13.2292,1.684328L13.2295,1.683941L13.2295,1.683941Z"
1512
+ />
1513
+ </g>
1514
+ </svg>
1515
+ `
1516
+ );
1517
+ const ProductIconClose = iconBuilderExports.IconBuilder(
1518
+ "close",
1519
+ (data) => `
1520
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 24 24">
1521
+ <g>
1522
+ <g />
1523
+ <g>
1524
+ <path
1525
+ fill="${data.colorDesc[0]}"
1526
+ fill-rule="evenodd"
1527
+ d="M13.06067779937744,12.72779953125L18.894417799377443,6.89409953125Q18.99981779937744,6.78860953125,19.05691779937744,6.65077953125Q19.114017799377443,6.51295353125,19.114017799377443,6.36376953125Q19.114017799377443,6.21458553125,19.05691779937744,6.07675653125Q18.99981779937744,5.93892853125,18.894417799377443,5.83343953125Q18.788917799377444,5.72795053125,18.651017799377442,5.67085993125Q18.513217799377443,5.61376953125,18.364017799377443,5.61376953125Q18.214817799377442,5.61376953125,18.077017799377444,5.67085993125Q17.93921779937744,5.72795053125,17.83371779937744,5.83343953125L12.000017799377442,11.667139531250001L6.166317799377442,5.83343953125Q6.114087799377441,5.78120653125,6.052667799377441,5.74016753125Q5.991247799377441,5.69912813125,5.922997799377441,5.67085993125Q5.854753799377441,5.64259163125,5.7823047993774415,5.62818063125Q5.709855799377442,5.6137695661656,5.6359867993774415,5.6137695661656Q5.5621187993774415,5.6137695661656,5.489669799377442,5.62818063125Q5.417219799377442,5.64259163125,5.348974799377442,5.67085993125Q5.280728799377441,5.69912813125,5.2193097993774415,5.74016753125Q5.1578897993774415,5.78120653125,5.105656799377441,5.83343953125Q5.053423799377441,5.88567253125,5.0123847993774415,5.94709153125Q4.971345899377441,6.00851153125,4.943077699377441,6.07675653125Q4.914809399377441,6.14500253125,4.900398399377441,6.21745153125Q4.885987318077442,6.28990053125,4.885987318077442,6.36376953125Q4.885987318077442,6.43763753125,4.900398399377441,6.51008753125Q4.914809399377441,6.58253653125,4.943077699377441,6.65077953125Q4.971345899377441,6.7190295312499995,5.0123847993774415,6.7804495312499995Q5.053423799377441,6.8418695312499995,5.105656799377441,6.89409953125L10.939357799377442,12.72779953125L5.105793799377442,18.56136953125Q5.053560799377442,18.61356953125,5.012521799377441,18.67496953125Q4.971482499377442,18.736469531250002,4.943214099377442,18.80466953125Q4.914945799377441,18.87296953125,4.900534699377442,18.94536953125Q4.886123590377442,19.01786953125,4.886123523377441,19.091669531249998Q4.886123457377441,19.16556953125,4.900534399377442,19.237969531250002Q4.914945399377442,19.31046953125,4.943213599377441,19.37866953125Q4.971481799377441,19.446969531249998,5.012520799377441,19.50836953125Q5.0535597993774415,19.56976953125,5.105792799377442,19.62206953125Q5.158025799377441,19.674269531249998,5.219445799377441,19.71526953125Q5.280864799377442,19.75636953125,5.349110799377441,19.78456953125Q5.417355799377441,19.81286953125,5.489804799377441,19.82726953125Q5.562254799377442,19.841669531249998,5.636122799377441,19.841669531249998Q5.709991799377441,19.841669531249998,5.782440799377442,19.82726953125Q5.854889799377442,19.81286953125,5.923137799377441,19.78456953125Q5.9913777993774415,19.75636953125,6.052797799377442,19.71526953125Q6.114217799377442,19.674269531249998,6.166457799377442,19.62206953125L12.000017799377442,13.78845953125L17.833617799377443,19.62206953125Q17.885817799377442,19.674269531249998,17.94721779937744,19.71526953125Q18.00861779937744,19.75636953125,18.07691779937744,19.78456953125Q18.14511779937744,19.81286953125,18.217617799377443,19.82726953125Q18.29001779937744,19.841669531249998,18.36391779937744,19.841669531249998Q18.43781779937744,19.841669531249998,18.510217799377443,19.82726953125Q18.58271779937744,19.81286953125,18.650917799377442,19.78456953125Q18.719117799377443,19.75636953125,18.780617799377442,19.71526953125Q18.84201779937744,19.674269531249998,18.894217799377444,19.62206953125Q18.94651779937744,19.56976953125,18.987517799377443,19.50836953125Q19.02851779937744,19.446969531249998,19.05681779937744,19.37866953125Q19.085117799377443,19.31046953125,19.09951779937744,19.237969531250002Q19.11391779937744,19.16556953125,19.11391779937744,19.091669531249998Q19.11391779937744,19.01786953125,19.09951779937744,18.94536953125Q19.085117799377443,18.87296953125,19.05681779937744,18.80466953125Q19.02851779937744,18.736469531250002,18.987517799377443,18.67496953125Q18.94651779937744,18.61356953125,18.894217799377444,18.56136953125L13.06067779937744,12.72779953125Z"
1528
+ />
1529
+ </g>
1530
+ </g>
1531
+ </svg>
1532
+ `
1533
+ );
1534
+ iconBuilderExports.IconBuilder(
1535
+ "close-round-fill",
1536
+ (data) => `
1537
+ <svg
1538
+ width="${data.size}"
1539
+ height="${data.size}"
1540
+ fill="${data.colorDesc[0]}"
1541
+ viewBox="0 0 1024 1024"
1542
+ >
1543
+ <path
1544
+ d="M512 0c282.7776 0 512 229.2224 512 512s-229.2224 512-512 512S0 794.7776 0 512 229.2224 0 512 0zM376.5248 319.0784a40.6528 40.6528 0 0 0-57.344 57.4976l143.872 144.0256-143.872 143.872a40.6016 40.6016 0 1 0 57.4464 57.5488l143.872-143.9744 143.9232 143.9744a40.6528 40.6528 0 0 0 57.4464-57.4976l-143.872-143.9232L721.92 376.576a40.6016 40.6016 0 1 0-57.3952-57.4976l-143.9744 144.0256z"
1545
+ />
1546
+ </svg>
1547
+ `
1548
+ );
1549
+ iconBuilderExports.IconBuilder(
1550
+ "img-placeholder",
1551
+ (data) => `
1552
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 80 80">
1553
+ <defs>
1554
+ <clipPath><rect width="80" height="80" x="0" y="0" rx="0" /></clipPath>
1555
+ </defs>
1556
+ <g clip-path="url(#master_svg0_6_25301/6_23777)">
1557
+ <g>
1558
+ <path
1559
+ fill="${data.colorDesc[0]}"
1560
+ fill-opacity="0.10000000149011612"
1561
+ fill-rule="evenodd"
1562
+ d="M4.000041484832764,21.999980926513672L4.000041484832764,57.99998092651367Q4.000041484832764,61.72788092651367,6.636081484832763,64.36398092651368Q9.272121484832763,66.99998092651367,13.000041484832764,66.99998092651367L65.00004148483276,66.99998092651367Q68.72794148483277,66.99998092651367,71.36404148483277,64.36398092651368Q74.00004148483276,61.72788092651367,74.00004148483276,57.99998092651367L74.00004148483276,21.999980926513672Q74.00004148483276,18.27206092651367,71.36404148483277,15.636020926513671Q68.72794148483277,12.999980926513672,65.00004148483276,12.999980926513672L13.000041484832764,12.999980926513672Q9.272121484832763,12.999980926513672,6.636081484832763,15.636020926513671Q4.000041484832764,18.27206092651367,4.000041484832764,21.999980926513672ZM7.000041484832764,21.999980926513672L7.000041484832764,46.84138092651367Q7.026161484832764,46.83008092651367,7.0526914848327635,46.81978092651367Q14.100341484832764,44.08258092651367,20.035341484832763,46.00858092651367Q24.706041484832763,47.52428092651367,28.582441484832763,50.861780926513674Q32.89634148483276,38.45178092651367,44.86384148483276,33.90138092651367Q57.276841484832765,29.18148092651367,71.00004148483276,36.75598092651367L71.00004148483276,21.999980926513672Q71.00004148483276,21.852690926513674,70.99284148483277,21.705570926513673Q70.98554148483277,21.55846092651367,70.97114148483277,21.41188092651367Q70.95674148483276,21.26530092651367,70.93514148483277,21.11960092651367Q70.91354148483276,20.97390092651367,70.88474148483276,20.829440926513673Q70.85604148483276,20.68498092651367,70.82024148483276,20.542100926513672Q70.78444148483277,20.39922092651367,70.74164148483277,20.25827092651367Q70.69894148483276,20.11732092651367,70.64934148483276,19.97864092651367Q70.59964148483276,19.839960926513672,70.54334148483277,19.703880926513673Q70.48694148483277,19.567800926513673,70.42394148483277,19.434650926513672Q70.36094148483276,19.301500926513672,70.29154148483276,19.171600926513673Q70.22214148483276,19.04170092651367,70.14644148483276,18.91536092651367Q70.07064148483276,18.78903092651367,69.98884148483276,18.66656092651367Q69.90704148483276,18.54409092651367,69.81924148483276,18.42578092651367Q69.73154148483276,18.307480926513673,69.63814148483276,18.193620926513674Q69.54464148483277,18.07976092651367,69.44574148483277,17.97063092651367Q69.34684148483277,17.86149092651367,69.24264148483276,17.75734092651367Q69.13854148483276,17.653190926513673,69.02944148483276,17.554270926513674Q68.92024148483276,17.45536092651367,68.80644148483276,17.361920926513672Q68.69254148483276,17.26848092651367,68.57424148483277,17.18073092651367Q68.45594148483276,17.09299092651367,68.33344148483276,17.01116092651367Q68.21094148483276,16.92933092651367,68.08464148483276,16.85361092651367Q67.95834148483277,16.77788092651367,67.82844148483277,16.70845092651367Q67.69854148483276,16.639020926513673,67.56534148483277,16.57604092651367Q67.43224148483276,16.51307092651367,67.29614148483276,16.456700926513673Q67.16004148483276,16.40034092651367,67.02134148483276,16.350720926513674Q66.88264148483276,16.301090926513673,66.74174148483277,16.25834092651367Q66.60074148483277,16.21558092651367,66.45794148483276,16.17979092651367Q66.31504148483276,16.144000926513673,66.17054148483277,16.115270926513674Q66.02614148483276,16.08653092651367,65.88044148483277,16.064920926513672Q65.73474148483277,16.043310926513673,65.58814148483276,16.028870926513672Q65.44154148483275,16.014430926513672,65.29444148483276,16.00721092651367Q65.14734148483276,15.999980926513672,65.00004148483276,15.999980926513672L13.000041484832764,15.999980926513672Q12.852751484832764,15.999980926513672,12.705631484832764,16.00721092651367Q12.558521484832763,16.014430926513672,12.411941484832763,16.028870926513672Q12.265361484832763,16.043310926513673,12.119661484832763,16.064920926513672Q11.973961484832763,16.08653092651367,11.829501484832765,16.115270926513674Q11.685041484832762,16.144000926513673,11.542161484832764,16.17979092651367Q11.399281484832763,16.21558092651367,11.258331484832762,16.25834092651367Q11.117381484832764,16.301090926513673,10.978701484832763,16.350720926513674Q10.840021484832764,16.40034092651367,10.703941484832765,16.456700926513673Q10.567861484832765,16.51307092651367,10.434711484832764,16.57604092651367Q10.301561484832764,16.639020926513673,10.171661484832764,16.70845092651367Q10.041761484832763,16.77789092651367,9.915421484832763,16.85361092651367Q9.789091484832763,16.92933092651367,9.666621484832763,17.01116092651367Q9.544151484832764,17.09299092651367,9.425841484832763,17.18073092651367Q9.307541484832765,17.26848092651367,9.193681484832764,17.361920926513672Q9.079821484832763,17.45536092651367,8.970691484832763,17.554270926513674Q8.861551484832763,17.653190926513673,8.757401484832764,17.75734092651367Q8.653251484832763,17.86149092651367,8.554331484832764,17.97063092651367Q8.455421484832764,18.07976092651367,8.361981484832764,18.193620926513674Q8.268541484832763,18.307480926513673,8.180791484832763,18.42578092651367Q8.093051484832763,18.54409092651367,8.011221484832763,18.66656092651367Q7.929391484832763,18.78903092651367,7.853671484832764,18.91536092651367Q7.7779414848327635,19.04170092651367,7.708511484832764,19.171600926513673Q7.639081484832763,19.301500926513672,7.576101484832764,19.434650926513672Q7.513131484832764,19.567800926513673,7.4567614848327635,19.703880926513673Q7.400401484832764,19.839960926513672,7.350781484832764,19.97864092651367Q7.301151484832763,20.11732092651367,7.258401484832763,20.25827092651367Q7.215641484832764,20.39922092651367,7.1798514848327635,20.542100926513672Q7.144061484832763,20.68498092651367,7.115331484832764,20.829440926513673Q7.086591484832764,20.97390092651367,7.064981484832764,21.11960092651367Q7.043371484832764,21.26530092651367,7.028931484832764,21.41188092651367Q7.014491484832764,21.55846092651367,7.0072714848327635,21.705570926513673Q7.000041484832764,21.852690926513674,7.000041484832764,21.999980926513672ZM23.595741484832764,37.59568092651367Q23.718441484832763,37.59568092651367,23.841041484832765,37.58968092651367Q23.963641484832763,37.58368092651367,24.085841484832763,37.571580926513676Q24.207941484832762,37.559580926513675,24.329441484832763,37.541580926513674Q24.450841484832765,37.523580926513674,24.571241484832765,37.49958092651367Q24.691541484832765,37.475680926513675,24.810641484832765,37.445880926513674Q24.929741484832764,37.41598092651367,25.047141484832764,37.38038092651367Q25.164641484832764,37.34478092651367,25.280141484832765,37.30338092651367Q25.395741484832765,37.262080926513676,25.509141484832764,37.21508092651367Q25.622541484832762,37.16808092651367,25.733541484832763,37.11558092651367Q25.844441484832764,37.06318092651367,25.952741484832764,37.00528092651367Q26.060941484832764,36.947380926513674,26.166241484832764,36.88428092651367Q26.271541484832763,36.82118092651368,26.373641484832763,36.75298092651367Q26.475641484832764,36.68488092651367,26.574241484832765,36.61168092651367Q26.672841484832762,36.538580926513674,26.767741484832765,36.46078092651367Q26.862641484832764,36.38288092651367,26.953541484832762,36.30048092651367Q27.044441484832763,36.217980926513675,27.131241484832763,36.13118092651367Q27.218041484832764,36.04438092651367,27.300541484832763,35.95348092651367Q27.382941484832763,35.86258092651367,27.460841484832763,35.76768092651368Q27.538641484832763,35.67278092651367,27.611741484832763,35.57418092651368Q27.684941484832763,35.47558092651367,27.753041484832764,35.37358092651367Q27.821241484832765,35.271480926513675,27.884341484832763,35.166180926513675Q27.947441484832762,35.060880926513676,28.005341484832762,34.95268092651367Q28.063241484832762,34.84438092651367,28.115641484832764,34.73348092651367Q28.168141484832763,34.622480926513674,28.215141484832763,34.509080926513676Q28.262141484832764,34.39568092651368,28.303441484832764,34.28018092651367Q28.344841484832763,34.16458092651367,28.380441484832765,34.04708092651367Q28.416041484832764,33.92968092651367,28.445941484832765,33.81058092651367Q28.475741484832763,33.69148092651368,28.499641484832765,33.57118092651368Q28.523641484832762,33.45078092651367,28.541641484832763,33.32938092651367Q28.559641484832763,33.20788092651367,28.571641484832764,33.08578092651367Q28.583741484832764,32.96358092651367,28.589741484832764,32.84098092651367Q28.595741484832764,32.718380926513674,28.595741484832764,32.59568092651367Q28.595741484832764,32.47298092651367,28.589741484832764,32.35038092651367Q28.583741484832764,32.227780926513674,28.571641484832764,32.10558092651367Q28.559641484832763,31.98348092651367,28.541641484832763,31.862080926513674Q28.523641484832762,31.740580926513672,28.499641484832765,31.620180926513672Q28.475741484832763,31.499880926513672,28.445941484832765,31.380780926513673Q28.416041484832764,31.261680926513673,28.380441484832765,31.144280926513673Q28.344841484832763,31.026780926513673,28.303441484832764,30.911280926513673Q28.262141484832764,30.795680926513672,28.215141484832763,30.682280926513673Q28.168141484832763,30.56888092651367,28.115641484832764,30.45788092651367Q28.063241484832762,30.346980926513673,28.005341484832762,30.238680926513673Q27.947441484832762,30.130480926513673,27.884341484832763,30.025180926513674Q27.821241484832765,29.91988092651367,27.753041484832764,29.81778092651367Q27.684941484832763,29.715780926513673,27.611741484832763,29.617180926513672Q27.538641484832763,29.51858092651367,27.460841484832763,29.423680926513672Q27.382941484832763,29.328880926513673,27.300541484832763,29.23788092651367Q27.218041484832764,29.14698092651367,27.131241484832763,29.06018092651367Q27.044441484832763,28.97338092651367,26.953541484832762,28.890880926513674Q26.862641484832764,28.808480926513674,26.767741484832765,28.730580926513674Q26.672841484832762,28.65278092651367,26.574241484832765,28.579680926513674Q26.475641484832764,28.506480926513674,26.373641484832763,28.438380926513673Q26.271541484832763,28.370180926513672,26.166241484832764,28.30708092651367Q26.060941484832764,28.24398092651367,25.952741484832764,28.18608092651367Q25.844441484832764,28.12818092651367,25.733541484832763,28.075780926513673Q25.622541484832762,28.02328092651367,25.509141484832764,27.976280926513674Q25.395741484832765,27.92928092651367,25.280241484832764,27.88798092651367Q25.164641484832764,27.846580926513674,25.047141484832764,27.810980926513672Q24.929741484832764,27.77538092651367,24.810641484832765,27.74548092651367Q24.691541484832765,27.71568092651367,24.571241484832765,27.691780926513673Q24.450841484832765,27.66778092651367,24.329441484832763,27.64978092651367Q24.207941484832762,27.63178092651367,24.085841484832763,27.61978092651367Q23.963641484832763,27.607680926513673,23.841041484832765,27.601680926513673Q23.718441484832763,27.595680926513673,23.595741484832764,27.595680926513673Q23.473041484832763,27.595680926513673,23.350441484832764,27.601680926513673Q23.227841484832762,27.607680926513673,23.105641484832763,27.61978092651367Q22.983541484832763,27.63178092651367,22.862141484832765,27.64978092651367Q22.740641484832764,27.66778092651367,22.620241484832764,27.691780926513673Q22.499941484832764,27.71568092651367,22.380841484832764,27.74548092651367Q22.261741484832765,27.77538092651367,22.144341484832765,27.810980926513672Q22.026841484832765,27.846580926513674,21.911341484832764,27.88798092651367Q21.795741484832764,27.92928092651367,21.682341484832765,27.976280926513674Q21.568941484832763,28.02328092651367,21.457941484832762,28.075780926513673Q21.347041484832765,28.12818092651367,21.238741484832765,28.18608092651367Q21.130541484832765,28.24398092651367,21.025241484832765,28.30708092651367Q20.919941484832762,28.370180926513672,20.817841484832762,28.438380926513673Q20.715841484832765,28.506480926513674,20.617241484832764,28.579680926513674Q20.518641484832763,28.65278092651367,20.423741484832764,28.730580926513674Q20.328941484832765,28.808480926513674,20.237941484832763,28.890880926513674Q20.147041484832762,28.97338092651367,20.060241484832762,29.06018092651367Q19.97344148483276,29.14698092651367,19.890941484832766,29.23788092651367Q19.808541484832766,29.328880926513673,19.730641484832766,29.423680926513672Q19.652841484832763,29.51858092651367,19.579741484832766,29.617180926513672Q19.506541484832766,29.715780926513673,19.438441484832765,29.81778092651367Q19.370241484832764,29.91988092651367,19.307141484832762,30.025180926513674Q19.244041484832763,30.130480926513673,19.186141484832763,30.238680926513673Q19.128241484832763,30.346980926513673,19.075841484832765,30.45788092651367Q19.023341484832763,30.56888092651367,18.976341484832766,30.682280926513673Q18.92934148483276,30.795680926513672,18.888041484832762,30.911280926513673Q18.846641484832766,31.026780926513673,18.811041484832764,31.144280926513673Q18.77544148483276,31.261680926513673,18.745541484832764,31.380780926513673Q18.715741484832762,31.499880926513672,18.691841484832764,31.620180926513672Q18.667841484832763,31.740580926513672,18.649841484832763,31.86198092651367Q18.631841484832762,31.98348092651367,18.61984148483276,32.10558092651367Q18.607741484832765,32.227780926513674,18.601741484832765,32.35038092651367Q18.595741484832764,32.47298092651367,18.595741484832764,32.59568092651367Q18.595741484832764,32.718380926513674,18.601741484832765,32.84098092651367Q18.607741484832765,32.96358092651367,18.61984148483276,33.08578092651367Q18.631841484832762,33.20788092651367,18.649841484832763,33.32938092651367Q18.667841484832763,33.45078092651367,18.691841484832764,33.57118092651368Q18.715741484832762,33.69148092651368,18.745541484832764,33.81058092651367Q18.77544148483276,33.92968092651367,18.811041484832764,34.04708092651367Q18.846641484832766,34.16458092651367,18.888041484832762,34.280080926513676Q18.92934148483276,34.39568092651368,18.976341484832766,34.509080926513676Q19.023341484832763,34.622480926513674,19.075841484832765,34.73348092651367Q19.128241484832763,34.84438092651367,19.186141484832763,34.95268092651367Q19.244041484832763,35.060880926513676,19.307141484832762,35.166180926513675Q19.370241484832764,35.271480926513675,19.438441484832765,35.37358092651367Q19.506541484832766,35.47558092651367,19.579741484832766,35.57418092651368Q19.652841484832763,35.67278092651367,19.730641484832766,35.76768092651368Q19.808541484832766,35.86258092651367,19.890941484832766,35.95348092651367Q19.97344148483276,36.04438092651367,20.060241484832762,36.13118092651367Q20.147041484832762,36.217980926513675,20.237941484832763,36.30048092651367Q20.328941484832765,36.38288092651367,20.423741484832764,36.46078092651367Q20.518641484832763,36.538580926513674,20.617241484832764,36.61168092651367Q20.715841484832765,36.68488092651367,20.817841484832762,36.75298092651367Q20.919941484832762,36.82118092651368,21.025241484832765,36.88428092651367Q21.130541484832765,36.947380926513674,21.238741484832765,37.00528092651367Q21.347041484832765,37.06318092651367,21.457941484832762,37.11558092651367Q21.568941484832763,37.16808092651367,21.682341484832765,37.21508092651367Q21.795741484832764,37.262080926513676,21.911341484832764,37.30338092651367Q22.026841484832765,37.34478092651367,22.144341484832765,37.38038092651367Q22.261741484832765,37.41598092651367,22.380841484832764,37.445880926513674Q22.499941484832764,37.475680926513675,22.620241484832764,37.49958092651367Q22.740641484832764,37.523580926513674,22.862041484832762,37.541580926513674Q22.983541484832763,37.559580926513675,23.105641484832763,37.571580926513676Q23.227841484832762,37.58368092651367,23.350441484832764,37.58968092651367Q23.473041484832763,37.59568092651367,23.595741484832764,37.59568092651367ZM23.595741484832764,30.595680926513673Q23.694041484832763,30.595680926513673,23.791741484832762,30.60528092651367Q23.889541484832765,30.61498092651367,23.985941484832765,30.634080926513672Q24.082241484832764,30.653280926513673,24.176341484832765,30.68178092651367Q24.270341484832763,30.710280926513672,24.361141484832764,30.747880926513673Q24.451841484832762,30.78548092651367,24.538541484832763,30.831880926513673Q24.625141484832763,30.87818092651367,24.706841484832765,30.932780926513672Q24.788541484832763,30.987380926513673,24.864541484832763,31.049680926513673Q24.940441484832764,31.11198092651367,25.009941484832762,31.18148092651367Q25.079441484832763,31.250980926513673,25.141741484832764,31.32688092651367Q25.204141484832764,31.40288092651367,25.258641484832765,31.484580926513672Q25.313241484832762,31.56628092651367,25.359541484832764,31.65288092651367Q25.405941484832763,31.73958092651367,25.443541484832764,31.830280926513673Q25.481141484832765,31.92108092651367,25.509641484832763,32.015080926513676Q25.538141484832764,32.10918092651367,25.557341484832765,32.20548092651367Q25.576441484832763,32.301880926513675,25.586141484832762,32.39968092651367Q25.595741484832764,32.49738092651367,25.595741484832764,32.59568092651367Q25.595741484832764,32.693980926513674,25.586141484832762,32.79168092651367Q25.576441484832763,32.88948092651367,25.557341484832765,32.98588092651367Q25.538141484832764,33.08218092651367,25.509641484832763,33.17628092651367Q25.481141484832765,33.27028092651367,25.443541484832764,33.36108092651367Q25.405941484832763,33.45178092651367,25.359541484832764,33.53848092651367Q25.313241484832762,33.625080926513675,25.258641484832765,33.70678092651367Q25.204141484832764,33.78848092651367,25.141741484832764,33.86448092651367Q25.079441484832763,33.94038092651367,25.009941484832762,34.009880926513674Q24.940441484832764,34.07938092651367,24.864541484832763,34.14168092651367Q24.788541484832763,34.20408092651367,24.706841484832765,34.25858092651367Q24.625141484832763,34.31318092651367,24.538541484832763,34.35948092651367Q24.451841484832762,34.405880926513674,24.361141484832764,34.44348092651367Q24.270341484832763,34.48108092651367,24.176341484832765,34.50958092651367Q24.082241484832764,34.53808092651367,23.985941484832765,34.55728092651367Q23.889541484832765,34.57638092651367,23.791741484832762,34.586080926513674Q23.694041484832763,34.59568092651367,23.595741484832764,34.59568092651367Q23.497441484832763,34.59568092651367,23.399741484832763,34.586080926513674Q23.301941484832764,34.57638092651367,23.205541484832764,34.55728092651367Q23.109241484832765,34.53808092651367,23.015141484832764,34.50958092651367Q22.921141484832763,34.48108092651367,22.830341484832765,34.44348092651367Q22.739641484832763,34.405880926513674,22.652941484832763,34.35948092651367Q22.566341484832762,34.31318092651367,22.484641484832764,34.25858092651367Q22.402941484832763,34.20408092651367,22.326941484832762,34.14168092651367Q22.251041484832765,34.07938092651367,22.181541484832763,34.009880926513674Q22.112041484832762,33.94038092651367,22.049741484832765,33.86448092651367Q21.987441484832765,33.78848092651367,21.932841484832764,33.70678092651367Q21.878241484832763,33.625080926513675,21.831941484832765,33.53848092651367Q21.785541484832763,33.45178092651367,21.747941484832765,33.36108092651367Q21.710341484832764,33.27028092651367,21.681841484832763,33.17628092651367Q21.653341484832765,33.08218092651367,21.634141484832764,32.98588092651367Q21.615041484832762,32.88948092651367,21.605341484832763,32.79168092651367Q21.595741484832764,32.693980926513674,21.595741484832764,32.59568092651367Q21.595741484832764,32.49738092651367,21.605341484832763,32.39968092651367Q21.615041484832762,32.301880926513675,21.634141484832764,32.20548092651367Q21.653341484832765,32.10918092651367,21.681841484832763,32.015080926513676Q21.710341484832764,31.92108092651367,21.747941484832765,31.830280926513673Q21.785541484832763,31.73958092651367,21.831941484832765,31.65288092651367Q21.878241484832763,31.56628092651367,21.932841484832764,31.484580926513672Q21.987441484832765,31.40288092651367,22.049741484832765,31.32688092651367Q22.112041484832762,31.250980926513673,22.181541484832763,31.18148092651367Q22.251041484832765,31.11198092651367,22.326941484832762,31.049680926513673Q22.402941484832763,30.987380926513673,22.484641484832764,30.932780926513672Q22.566341484832762,30.87818092651367,22.652941484832763,30.831880926513673Q22.739641484832763,30.78548092651367,22.830341484832765,30.747880926513673Q22.921141484832763,30.710280926513672,23.015141484832764,30.68178092651367Q23.109241484832765,30.653280926513673,23.205541484832764,30.634080926513672Q23.301941484832764,30.61498092651367,23.399741484832763,30.60528092651367Q23.497441484832763,30.595680926513673,23.595741484832764,30.595680926513673ZM7.000041484832764,57.99998092651367L7.000041484832764,49.594680926513675Q7.2851214848327634,49.717980926513675,7.595741484832764,49.717980926513675Q7.876801484832764,49.717980926513675,8.138801484832765,49.616280926513674Q14.190541484832764,47.265880926513674,19.10934148483276,48.86208092651367Q24.185241484832762,50.50918092651367,28.231341484832765,54.64468092651367Q28.514741484832765,54.93438092651367,28.905441484832764,55.04188092651367Q28.976541484832765,55.061480926513674,29.049141484832763,55.07398092651367Q29.121741484832764,55.08648092651367,29.195241484832763,55.09178092651367Q29.268741484832763,55.09708092651367,29.342441484832765,55.09518092651367Q29.416041484832764,55.09328092651367,29.489241484832764,55.084180926513675Q29.562341484832764,55.074980926513675,29.634241484832764,55.05878092651367Q29.706041484832763,55.04258092651367,29.776041484832763,55.01928092651367Q29.845941484832764,54.99608092651367,29.913341484832763,54.96618092651367Q29.980641484832763,54.93618092651367,30.044741484832763,54.89978092651367Q30.108741484832763,54.86338092651367,30.168941484832764,54.820880926513674Q30.229141484832763,54.77838092651367,30.284841484832764,54.730180926513675Q30.340641484832762,54.681980926513674,30.391341484832765,54.628480926513674Q30.442041484832764,54.57508092651367,30.487341484832765,54.51688092651367Q30.532641484832762,54.45878092651367,30.571941484832763,54.396480926513675Q30.611241484832764,54.33408092651367,30.644341484832765,54.268280926513675Q30.677341484832763,54.20238092651367,30.703741484832765,54.13358092651367Q30.730241484832764,54.06478092651367,30.749741484832764,53.99378092651367Q34.290341484832766,41.13128092651367,45.93004148483276,36.70548092651367Q57.604541484832765,32.26648092651367,70.83024148483277,40.11548092651367Q70.91234148483277,40.16428092651367,71.00004148483276,40.20218092651368L71.00004148483276,57.99998092651367Q71.00004148483276,58.14728092651367,70.99284148483277,58.294380926513675Q70.98554148483277,58.44148092651367,70.97114148483277,58.58808092651367Q70.95674148483276,58.73468092651367,70.93514148483277,58.88038092651367Q70.91354148483276,59.02608092651367,70.88474148483276,59.17048092651367Q70.85604148483276,59.31498092651367,70.82024148483276,59.457880926513674Q70.78444148483277,59.60078092651367,70.74164148483277,59.74168092651367Q70.69894148483276,59.88268092651367,70.64934148483276,60.02128092651367Q70.59964148483276,60.15998092651367,70.54334148483277,60.296080926513675Q70.48694148483277,60.432180926513674,70.42394148483277,60.56528092651367Q70.36094148483276,60.698480926513675,70.29154148483276,60.828380926513674Q70.22214148483276,60.95828092651367,70.14644148483276,61.084580926513674Q70.07064148483276,61.210880926513674,69.98884148483276,61.33338092651367Q69.90704148483276,61.45588092651367,69.81924148483276,61.57418092651367Q69.73154148483276,61.692480926513674,69.63814148483276,61.80638092651367Q69.54464148483277,61.92018092651367,69.44574148483277,62.029380926513674Q69.34684148483277,62.13848092651367,69.24264148483276,62.242580926513675Q69.13854148483276,62.346780926513674,69.02944148483276,62.445680926513674Q68.92024148483276,62.544580926513675,68.80644148483276,62.63808092651367Q68.69254148483276,62.73148092651367,68.57424148483277,62.819180926513674Q68.45594148483276,62.90698092651367,68.33344148483276,62.98878092651367Q68.21094148483276,63.07058092651367,68.08464148483276,63.14638092651367Q67.95834148483277,63.22208092651367,67.82844148483277,63.29148092651367Q67.69854148483276,63.36098092651367,67.56534148483277,63.423880926513675Q67.43224148483276,63.48688092651367,67.29614148483276,63.543280926513674Q67.16004148483276,63.599580926513674,67.02134148483276,63.64928092651367Q66.88264148483276,63.698880926513674,66.74174148483277,63.74158092651367Q66.60074148483277,63.78438092651367,66.45794148483276,63.82018092651367Q66.31504148483276,63.85598092651367,66.17054148483277,63.884680926513674Q66.02614148483276,63.913380926513675,65.88044148483277,63.93508092651367Q65.73474148483277,63.95668092651367,65.58814148483276,63.97108092651367Q65.44154148483275,63.985480926513674,65.29444148483276,63.992780926513674Q65.14734148483276,63.99998092651367,65.00004148483276,63.99998092651367L13.000041484832764,63.99998092651367Q12.852751484832764,63.99998092651367,12.705631484832764,63.992780926513674Q12.558521484832763,63.985480926513674,12.411941484832763,63.97108092651367Q12.265361484832763,63.95668092651367,12.119661484832763,63.93508092651367Q11.973961484832763,63.913380926513675,11.829501484832765,63.884680926513674Q11.685041484832762,63.85598092651367,11.542161484832764,63.82018092651367Q11.399281484832763,63.78438092651367,11.258331484832762,63.74158092651367Q11.117381484832764,63.698880926513674,10.978701484832763,63.64928092651367Q10.840021484832764,63.599580926513674,10.703941484832765,63.543280926513674Q10.567861484832765,63.48688092651367,10.434711484832764,63.423880926513675Q10.301561484832764,63.36098092651367,10.171661484832764,63.29148092651367Q10.041761484832763,63.22208092651367,9.915421484832763,63.14638092651367Q9.789091484832763,63.07058092651367,9.666621484832763,62.98878092651367Q9.544151484832764,62.90698092651367,9.425841484832763,62.819180926513674Q9.307541484832765,62.73148092651367,9.193681484832764,62.63808092651367Q9.079821484832763,62.544580926513675,8.970691484832763,62.445680926513674Q8.861551484832763,62.346780926513674,8.757401484832764,62.242580926513675Q8.653251484832763,62.13848092651367,8.554331484832764,62.029380926513674Q8.455421484832764,61.92018092651367,8.361981484832764,61.80638092651367Q8.268541484832763,61.692480926513674,8.180791484832763,61.57418092651367Q8.093051484832763,61.45588092651367,8.011221484832763,61.33338092651367Q7.929391484832763,61.210880926513674,7.853671484832764,61.084580926513674Q7.7779414848327635,60.95828092651367,7.708511484832764,60.828380926513674Q7.639081484832763,60.698480926513675,7.576101484832764,60.56528092651367Q7.513131484832764,60.432180926513674,7.4567614848327635,60.296080926513675Q7.400401484832764,60.15998092651367,7.350781484832764,60.02128092651367Q7.301151484832763,59.88268092651367,7.258401484832763,59.74168092651367Q7.215641484832764,59.60078092651367,7.1798514848327635,59.457880926513674Q7.144061484832763,59.31498092651367,7.115331484832764,59.17048092651367Q7.086591484832764,59.02608092651367,7.064981484832764,58.88038092651367Q7.043371484832764,58.73468092651367,7.028931484832764,58.58808092651367Q7.014491484832764,58.44148092651367,7.0072714848327635,58.294380926513675Q7.000041484832764,58.14728092651367,7.000041484832764,57.99998092651367Z"
1563
+ />
1564
+ </g>
1565
+ </g>
1566
+ </svg>
1567
+ `
1568
+ );
1569
+ iconBuilderExports.IconBuilder(
1570
+ "order-empty",
1571
+ (data) => `
1572
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 70 70">
1573
+ <defs>
1574
+ <clipPath><rect width="70" height="70" x="0" y="0" rx="0" /></clipPath>
1575
+ </defs>
1576
+ <g clip-path="url(#master_svg0_1_6828)">
1577
+ <g>
1578
+ <g>
1579
+ <path
1580
+ fill="${data.colorDesc[0]}"
1581
+ fill-opacity="1"
1582
+ d="M53.562049403381344,33.934721223754885C53.43764940338135,32.172721223754884,52.055249403381346,30.844301223754883,50.34594940338135,30.844301223754883L18.827749403381347,30.844301223754883C17.132259403381347,30.844301223754883,15.699349403381348,32.29193122375488,15.699349403381348,34.005171223754886C15.699349403381348,35.71809122375488,17.132259403381347,37.16539122375488,18.827749403381347,37.16539122375488L50.43544940338135,37.16539122375488C52.13154940338135,37.16539122375488,53.564449403381346,35.71809122375488,53.564449403381346,34.005171223754886L53.562049403381344,33.934721223754885Z"
1583
+ />
1584
+ </g>
1585
+ <g>
1586
+ <path
1587
+ fill="${data.colorDesc[0]}"
1588
+ fill-opacity="1"
1589
+ d="M27.334229237670897,9.39679L42.0187092376709,9.39679C44.2485092376709,9.39679,46.1324092376709,7.24512,46.1324092376709,4.69827C46.1324092376709,2.1076,44.2467092376709,0,41.9290092376709,0L27.334229237670897,0C25.0164992376709,0,23.1311092376709,2.10752,23.1311092376709,4.69827C23.1311092376709,7.28902,25.0165892376709,9.39679,27.334229237670897,9.39679Z"
1590
+ />
1591
+ </g>
1592
+ <g>
1593
+ <path
1594
+ fill="${data.colorDesc[0]}"
1595
+ fill-opacity="1"
1596
+ d="M50.43544940338135,19.085237503051758L18.827749403381347,19.085237503051758C17.132259403381347,19.085237503051758,15.699349403381348,20.532537503051756,15.699349403381348,22.246107503051757C15.699349403381348,23.959357503051756,17.132259403381347,25.406657503051758,18.827749403381347,25.406657503051758L50.43544940338135,25.406657503051758C52.13154940338135,25.406657503051758,53.564449403381346,23.959357503051756,53.564449403381346,22.246107503051757C53.56434940338135,20.532537503051756,52.131449403381346,19.085237503051758,50.43544940338135,19.085237503051758Z"
1597
+ />
1598
+ </g>
1599
+ <g>
1600
+ <path
1601
+ fill="${data.colorDesc[0]}"
1602
+ fill-opacity="1"
1603
+ d="M50.34594940338135,43.59782409667969L18.827749403381347,43.59782409667969C17.132259403381347,43.59782409667969,15.699349403381348,45.045454096679684,15.699349403381348,46.75869409667969C15.699349403381348,48.47161409667969,17.132259403381347,49.918914096679686,18.827749403381347,49.918914096679686L50.43544940338135,49.918914096679686C52.13154940338135,49.918914096679686,53.564449403381346,48.47161409667969,53.564449403381346,46.75869409667969L53.562049403381344,46.68824409667969C53.43764940338135,44.92633409667969,52.05514940338135,43.59782409667969,50.34594940338135,43.59782409667969Z"
1604
+ />
1605
+ </g>
1606
+ <g>
1607
+ <path
1608
+ fill="${data.colorDesc[0]}"
1609
+ fill-opacity="1"
1610
+ d="M64.75030000000001,4.860395980682373C63.0699,3.042334980682373,60.6587,2.081305980682373,57.7776,2.081305980682373L53.5692,2.081305980682373C51.8921,2.081305980682373,50.0824,3.186115980682373,50.0824,4.9703959806823725C50.0824,6.657005980682373,51.8094,8.312295980682373,53.5692,8.312295980682373L57.7776,8.312295980682373C59.7387,8.312295980682373,61.0061,9.592295980682373,61.0061,11.573625980682372L61.0061,60.507705980682374C61.0061,62.48900598068237,59.7386,63.76900598068237,57.7776,63.76900598068237L12.4706,63.76900598068237C10.43963,63.76900598068237,8.16793,62.374405980682376,8.16793,60.507705980682374L8.16793,11.573705980682373C8.16793,9.592375980682373,9.43511,8.312375980682372,11.39646,8.312375980682372L16.6792,8.312375980682372C18.2292,8.312375980682372,19.2706,6.969235980682373,19.2706,4.970475980682373C19.2706,3.161375980682373,18.3018,2.081388112482373,16.6792,2.081388112482373L11.39646,2.081388112482373C5.512560000000001,2.081388112482373,2,5.663835980682373,2,11.664135980682373L2,60.05540598068237C2,66.09640598068238,5.86401,70.00000598068237,11.8441,70.00000598068237L57.3296,70.00000598068237C63.678,70.00000598068237,67.174,66.46810598068237,67.174,60.05540598068237L67.174,11.664055980682374C67.174,8.928455980682372,66.3361,6.575785980682373,64.75030000000001,4.860395980682373Z"
1611
+ />
1612
+ </g>
1613
+ </g>
1614
+ </g>
1615
+ </svg>
1616
+ `
1617
+ );
1618
+ iconBuilderExports.IconBuilder(
1619
+ "order-enter",
1620
+ (data) => `
1621
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 16 16">
1622
+ <defs>
1623
+ <clipPath><rect width="16" height="16" x="0" y="0" rx="0" /></clipPath>
1624
+ </defs>
1625
+ <g clip-path="url(#master_svg0_1_00794/1_4215)">
1626
+ <g>
1627
+ <rect
1628
+ width="10.666666626930237"
1629
+ height="12.000000596046448"
1630
+ x="2.67"
1631
+ y="2"
1632
+ fill="none"
1633
+ stroke="${data.colorDesc[0]}"
1634
+ stroke-opacity="1"
1635
+ stroke-width="1.3333333730697632"
1636
+ rx="0"
1637
+ />
1638
+ </g>
1639
+ <g>
1640
+ <path
1641
+ fill="${data.colorDesc[0]}"
1642
+ fill-opacity="1"
1643
+ fill-rule="evenodd"
1644
+ d="M10.666581953125,6.0000410234375L5.333251953125,6.0000410234375L5.333251953125,4.6667070234375L10.666581953125,4.6667070234375L10.666581953125,6.0000410234375Z"
1645
+ />
1646
+ </g>
1647
+ <g>
1648
+ <path
1649
+ fill="${data.colorDesc[0]}"
1650
+ fill-opacity="1"
1651
+ fill-rule="evenodd"
1652
+ d="M10.666581953125,8.666667L5.333251953125,8.666667L5.333251953125,7.333333L10.666581953125,7.333333L10.666581953125,8.666667Z"
1653
+ />
1654
+ </g>
1655
+ <g>
1656
+ <path
1657
+ fill="${data.colorDesc[0]}"
1658
+ fill-opacity="1"
1659
+ fill-rule="evenodd"
1660
+ d="M9.333251953125,11.3332929765625L5.333251953125,11.3332929765625L5.333251953125,9.9999589765625L9.333251953125,9.9999589765625L9.333251953125,11.3332929765625Z"
1661
+ />
1662
+ </g>
1663
+ </g>
1664
+ </svg>
1665
+ `
1666
+ );
1667
+ iconBuilderExports.IconBuilder(
1668
+ "product",
1669
+ (data) => `
1670
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 12 12">
1671
+ <g style="mix-blend-mode: passthrough">
1672
+ <g style="mix-blend-mode: passthrough">
1673
+ <g style="mix-blend-mode: passthrough">
1674
+ <g style="mix-blend-mode: passthrough">
1675
+ <path
1676
+ fill="${data.colorDesc[0]}"
1677
+ fill-opacity="1"
1678
+ fill-rule="evenodd"
1679
+ d="M2.16316,1.26412Q2.4502,1,2.84027,1L9.15973,1Q9.5498,1,9.83684,1.26412Q10.1239,1.52824,10.1563,1.91695L10.8229,9.91695Q10.8594,10.3542,10.5623,10.6771Q10.2652,11,9.8264,11L2.1736,11Q1.73482,11,1.43772,10.6771Q1.14061,10.3542,1.17705,9.91695L1.84372,1.91695Q1.87611,1.52824,2.16316,1.26412ZM9.15973,0L2.84027,0C1.80009,0,0.933556,0.797325,0.847174,1.83391L0.180508,9.83391C0.0833377,10.9999,1.00352,12,2.1736,12L9.8264,12C10.9965,12,11.9167,10.9999,11.8195,9.83391L11.1528,1.83391C11.0664,0.797325,10.1999,0,9.15973,0Z"
1680
+ />
1681
+ </g>
1682
+ <g style="mix-blend-mode: passthrough">
1683
+ <path
1684
+ fill="${data.colorDesc[0]}"
1685
+ fill-opacity="1"
1686
+ d="M9.5,3Q9.5,4.44975,8.47487,5.47487Q7.44975,6.5,6,6.5Q4.55025,6.5,3.525126,5.47487Q2.5,4.44975,2.5,2.999999559137L3.5,2.999999487188Q3.5,4.03553,4.2322299999999995,4.7677700000000005Q4.96447,5.5,6,5.5Q7.03553,5.5,7.76777,4.7677700000000005Q8.5,4.03553,8.5,3L9.5,3ZM9.5,3Q9.5,3.0492457,9.49039,3.0975451Q9.48078,3.145845,9.46194,3.191342Q9.44309,3.236839,9.41573,3.277785Q9.38837,3.318731,9.35355,3.353553Q9.31873,3.388375,9.27778,3.415735Q9.23684,3.443094,9.19134,3.4619400000000002Q9.14584,3.480785,9.09755,3.490393Q9.04925,3.5,9,3.5Q8.95075,3.5,8.90245,3.490393Q8.85415,3.480785,8.80866,3.4619400000000002Q8.76316,3.443094,8.72221,3.415735Q8.68127,3.388375,8.64645,3.353553Q8.61162,3.318731,8.58426,3.277785Q8.55691,3.236839,8.53806,3.191342Q8.519210000000001,3.145845,8.50961,3.0975451Q8.5,3.0492457,8.5,3Q8.5,2.9507543,8.50961,2.9024549Q8.519210000000001,2.854155,8.53806,2.808658Q8.55691,2.763161,8.58426,2.722215Q8.61162,2.681269,8.64645,2.646447Q8.68127,2.611625,8.72221,2.584265Q8.76316,2.556906,8.80866,2.5380599999999998Q8.85415,2.519215,8.90245,2.509607Q8.95075,2.5,9,2.5Q9.04925,2.5,9.09755,2.509607Q9.14584,2.519215,9.19134,2.5380599999999998Q9.23684,2.556906,9.27778,2.584265Q9.31873,2.611625,9.35355,2.646447Q9.38837,2.681269,9.41573,2.722215Q9.44309,2.763161,9.46194,2.808658Q9.48078,2.854155,9.49039,2.9024549Q9.5,2.9507543,9.5,3ZM3.5,3Q3.5,3.0492457,3.490393,3.0975451Q3.480785,3.145845,3.4619400000000002,3.191342Q3.443094,3.236839,3.415735,3.277785Q3.388375,3.318731,3.353553,3.353553Q3.318731,3.388375,3.277785,3.415735Q3.236839,3.443094,3.191342,3.4619400000000002Q3.145845,3.480785,3.0975451,3.490393Q3.0492457,3.5,3,3.5Q2.9507543,3.5,2.9024549,3.490393Q2.854155,3.480785,2.808658,3.4619400000000002Q2.763161,3.443094,2.722215,3.415735Q2.681269,3.388375,2.646447,3.353553Q2.611625,3.318731,2.584265,3.277785Q2.556906,3.236839,2.5380599999999998,3.191342Q2.519215,3.145845,2.509607,3.0975451Q2.5,3.0492457,2.5,3Q2.5,2.9507543,2.509607,2.9024549Q2.519215,2.854155,2.5380599999999998,2.808658Q2.556906,2.763161,2.584265,2.722215Q2.611625,2.681269,2.646447,2.646447Q2.681269,2.611625,2.722215,2.584265Q2.763161,2.556906,2.808658,2.5380599999999998Q2.854155,2.519215,2.9024549,2.509607Q2.9507543,2.5,3,2.5Q3.0492457,2.5,3.0975451,2.509607Q3.145845,2.519215,3.191342,2.5380599999999998Q3.236839,2.556906,3.277785,2.584265Q3.318731,2.611625,3.353553,2.646447Q3.388375,2.681269,3.415735,2.722215Q3.443094,2.763161,3.4619400000000002,2.808658Q3.480785,2.854155,3.490393,2.9024549Q3.5,2.9507543,3.5,3Z"
1687
+ />
1688
+ </g>
1689
+ </g>
1690
+ </g>
1691
+ </g>
1692
+ </svg>
1693
+ `
1694
+ );
1695
+ iconBuilderExports.IconBuilder(
1696
+ "search",
1697
+ (data) => `
1698
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 16 16">
1699
+ <g>
1700
+ <g>
1701
+ <g>
1702
+ <path
1703
+ fill="${data.colorDesc[0]}"
1704
+ fill-rule="evenodd"
1705
+ d="M11.5814,10.87433Q11.9223,10.47129,12.1875,10.01494Q12.4527,9.55858,12.6342,9.06293Q12.8157,8.56728,12.9078,8.04756Q13,7.52783,13,7Q13,6.85271,12.9928,6.70559Q12.9855,6.55848,12.9711,6.4119Q12.9567,6.26531,12.9351,6.11962Q12.9134,5.97392,12.8847,5.82946Q12.856,5.685,12.8202,5.54212Q12.7844,5.39924,12.7416,5.25829Q12.6989,5.11734,12.6493,4.97866Q12.5996,4.839980000000001,12.5433,4.7039Q12.4869,4.56782,12.4239,4.434670000000001Q12.361,4.30152,12.2915,4.17162Q12.2221,4.04172,12.1464,3.91538Q12.0706,3.78905,11.9888,3.66658Q11.907,3.54411,11.8192,3.4258Q11.7315,3.3075,11.6381,3.19364Q11.5446,3.07978,11.4457,2.97065Q11.3468,2.86151,11.2426,2.7573600000000003Q11.1385,2.65321,11.0294,2.55429Q10.92022,2.45538,10.80636,2.3619399999999997Q10.6925,2.2685,10.57419,2.1807499999999997Q10.45589,2.09301,10.33342,2.01118Q10.21095,1.929351,10.08462,1.853628Q9.95828,1.777905,9.82838,1.708472Q9.69848,1.63904,9.56533,1.5760640000000001Q9.43218,1.513089,9.2961,1.456723Q9.16002,1.400357,9.02134,1.350736Q8.88266,1.301114,8.741710000000001,1.2583579999999999Q8.600760000000001,1.215601,8.45788,1.179812Q8.315000000000001,1.144023,8.170539999999999,1.115288Q8.02608,1.0865531,7.88038,1.0649409Q7.73469,1.0433288,7.5881,1.0288916Q7.44152,1.0144545,7.29441,1.00722726Q7.14729,1,7,1Q6.85271,1,6.70559,1.00722726Q6.55848,1.0144545,6.4119,1.0288916Q6.26531,1.0433288,6.11962,1.0649409Q5.97392,1.0865531,5.82946,1.115288Q5.685,1.144023,5.54212,1.179812Q5.39924,1.215601,5.25829,1.2583579999999999Q5.11734,1.301114,4.97866,1.350736Q4.839980000000001,1.400357,4.7039,1.456723Q4.56782,1.513089,4.434670000000001,1.5760640000000001Q4.30152,1.63904,4.17162,1.708472Q4.04172,1.777905,3.91538,1.853628Q3.78905,1.929351,3.66658,2.01118Q3.54411,2.09301,3.4258,2.1807499999999997Q3.3075,2.2685,3.19364,2.3619399999999997Q3.07978,2.45538,2.97065,2.55429Q2.86151,2.65321,2.7573600000000003,2.7573600000000003Q2.65321,2.86151,2.55429,2.97065Q2.45538,3.07978,2.3619399999999997,3.19364Q2.2685,3.3075,2.1807499999999997,3.4258Q2.09301,3.54411,2.01118,3.66658Q1.929351,3.78905,1.853628,3.91538Q1.777905,4.04172,1.708472,4.17162Q1.63904,4.30152,1.5760640000000001,4.434670000000001Q1.513089,4.56782,1.456723,4.7039Q1.400357,4.839980000000001,1.350736,4.97866Q1.301114,5.11734,1.2583579999999999,5.25829Q1.215601,5.39924,1.179812,5.54212Q1.144023,5.685,1.115288,5.82946Q1.0865531,5.97392,1.0649409,6.11962Q1.0433288,6.26532,1.0288916,6.4119Q1.0144545,6.55848,1.00722726,6.70559Q1,6.85271,1,7Q1,7.14729,1.00722726,7.29441Q1.0144545,7.44152,1.0288916,7.5881Q1.0433288,7.73469,1.0649409,7.88038Q1.0865531,8.02608,1.115288,8.170539999999999Q1.144023,8.315000000000001,1.179812,8.45788Q1.215601,8.600760000000001,1.2583579999999999,8.741710000000001Q1.301114,8.88266,1.350736,9.02134Q1.400357,9.16002,1.456723,9.2961Q1.513089,9.43218,1.5760640000000001,9.56533Q1.63904,9.69848,1.708472,9.82838Q1.777905,9.95828,1.853628,10.08462Q1.929351,10.21095,2.01118,10.33342Q2.09301,10.45589,2.1807499999999997,10.5742Q2.2685,10.6925,2.3619399999999997,10.80636Q2.45538,10.92022,2.55429,11.0294Q2.65321,11.1385,2.7573600000000003,11.2426Q2.86151,11.3468,2.97065,11.4457Q3.07978,11.5446,3.19364,11.6381Q3.3075,11.7315,3.4258,11.8192Q3.54411,11.907,3.66658,11.9888Q3.78905,12.0706,3.91538,12.1464Q4.04172,12.2221,4.17162,12.2915Q4.30152,12.361,4.434670000000001,12.4239Q4.56782,12.4869,4.7039,12.5433Q4.839980000000001,12.5996,4.97866,12.6493Q5.11734,12.6989,5.25829,12.7416Q5.39924,12.7844,5.54212,12.8202Q5.685,12.856,5.82946,12.8847Q5.97392,12.9134,6.11962,12.9351Q6.26532,12.9567,6.4119,12.9711Q6.55848,12.9855,6.70559,12.9928Q6.85271,13,7,13Q7.52783,13,8.04756,12.9078Q8.56728,12.8157,9.06293,12.6342Q9.55858,12.4527,10.01494,12.1875Q10.47129,11.9223,10.87433,11.5814L13.4749,14.182Q13.5452,14.2523,13.6371,14.2904Q13.729,14.3284,13.8284,14.3284Q13.9279,14.3284,14.0198,14.2904Q14.1117,14.2523,14.182,14.182Q14.2523,14.1117,14.2904,14.0198Q14.3284,13.9279,14.3284,13.8284Q14.3284,13.729,14.2904,13.6371Q14.2523,13.5452,14.182,13.4749L11.5814,10.87433ZM7,2Q7.12274,2,7.24534,2.00602Q7.36793,2.01205,7.49009,2.02408Q7.61224,2.03611,7.73365,2.05412Q7.85507,2.07213,7.97545,2.09607Q8.095839999999999,2.1200200000000002,8.2149,2.14984Q8.33397,2.1796699999999998,8.451419999999999,2.2153Q8.56888,2.2509300000000003,8.68445,2.29228Q8.80002,2.3336300000000003,8.91342,2.3806000000000003Q9.02682,2.4275700000000002,9.13777,2.4800500000000003Q9.24873,2.53253,9.35698,2.59039Q9.46523,2.64825,9.57051,2.71136Q9.67579,2.77446,9.77785,2.84265Q9.87991,2.9108400000000003,9.9785,2.9839599999999997Q10.07708,3.05708,10.17197,3.13495Q10.26685,3.21281,10.35779,3.29524Q10.44874,3.37767,10.53553,3.46447Q10.62233,3.55126,10.70475,3.6422Q10.78718,3.73315,10.86505,3.82803Q10.94292,3.92291,11.016,4.0215Q11.0892,4.120089999999999,11.1573,4.22215Q11.2255,4.32421,11.2886,4.4294899999999995Q11.3517,4.53477,11.4096,4.64302Q11.4675,4.75127,11.5199,4.862220000000001Q11.5724,4.97318,11.6194,5.08658Q11.6664,5.19998,11.7077,5.31555Q11.7491,5.43112,11.7847,5.54858Q11.8203,5.66603,11.8502,5.7851Q11.88,5.90416,11.9039,6.02455Q11.9279,6.14493,11.9459,6.26635Q11.9639,6.38776,11.9759,6.50991Q11.988,6.63207,11.994,6.75466Q12,6.87726,12,7Q12,7.12274,11.994,7.24534Q11.988,7.36793,11.9759,7.49009Q11.9639,7.61224,11.9459,7.73365Q11.9279,7.85507,11.9039,7.97545Q11.88,8.095839999999999,11.8502,8.2149Q11.8203,8.33397,11.7847,8.451419999999999Q11.7491,8.56888,11.7077,8.68445Q11.6664,8.80002,11.6194,8.91342Q11.5724,9.02682,11.5199,9.13777Q11.4675,9.24873,11.4096,9.35698Q11.3517,9.46523,11.2886,9.57051Q11.2255,9.67579,11.1573,9.77785Q11.0892,9.87991,11.016,9.9785Q10.94292,10.07708,10.86505,10.17197Q10.78718,10.26685,10.70475,10.35779Q10.62233,10.44874,10.53553,10.53553Q10.44874,10.62233,10.35779,10.70475Q10.26685,10.78718,10.17197,10.86505Q10.07708,10.94292,9.9785,11.016Q9.87991,11.0892,9.77785,11.1573Q9.67579,11.2255,9.57051,11.2886Q9.46523,11.3517,9.35698,11.4096Q9.24873,11.4675,9.13777,11.5199Q9.02682,11.5724,8.91342,11.6194Q8.80002,11.6664,8.68445,11.7077Q8.56888,11.7491,8.451419999999999,11.7847Q8.333960000000001,11.8203,8.2149,11.8502Q8.095839999999999,11.88,7.97545,11.9039Q7.85507,11.9279,7.73365,11.9459Q7.61224,11.9639,7.49009,11.9759Q7.36793,11.988,7.24534,11.994Q7.12274,12,7,12Q6.87726,12,6.75466,11.994Q6.63207,11.988,6.50991,11.9759Q6.38776,11.9639,6.26635,11.9459Q6.14493,11.9279,6.02455,11.9039Q5.90416,11.88,5.7851,11.8502Q5.66603,11.8203,5.54858,11.7847Q5.43112,11.7491,5.31555,11.7077Q5.19998,11.6664,5.08658,11.6194Q4.97318,11.5724,4.862220000000001,11.5199Q4.75127,11.4675,4.64302,11.4096Q4.53477,11.3517,4.4294899999999995,11.2886Q4.32421,11.2255,4.22215,11.1573Q4.120089999999999,11.0892,4.0215,11.016Q3.92292,10.94292,3.82803,10.86505Q3.73315,10.78718,3.6422,10.70475Q3.55126,10.62233,3.46447,10.53553Q3.37767,10.44874,3.29524,10.35779Q3.21281,10.26685,3.13495,10.17197Q3.05708,10.07708,2.9839599999999997,9.9785Q2.9108400000000003,9.87991,2.84265,9.77785Q2.77446,9.67579,2.71136,9.57051Q2.64825,9.46523,2.59039,9.35698Q2.53253,9.24873,2.4800500000000003,9.13777Q2.4275700000000002,9.02682,2.3806000000000003,8.91342Q2.3336300000000003,8.80002,2.29228,8.68445Q2.2509300000000003,8.56888,2.2153,8.451419999999999Q2.1796699999999998,8.333960000000001,2.14984,8.2149Q2.1200200000000002,8.095839999999999,2.09607,7.97545Q2.07213,7.85507,2.05412,7.73365Q2.03611,7.61224,2.02408,7.49009Q2.01205,7.36793,2.00602,7.24534Q2,7.12274,2,7Q2,6.87726,2.00602,6.75466Q2.01205,6.63207,2.02408,6.50991Q2.03611,6.38776,2.05412,6.26635Q2.07213,6.14493,2.09607,6.02455Q2.1200200000000002,5.90416,2.14984,5.7851Q2.1796699999999998,5.66603,2.2153,5.54858Q2.2509300000000003,5.43112,2.29228,5.31555Q2.3336300000000003,5.19998,2.3806000000000003,5.08658Q2.4275700000000002,4.97318,2.4800500000000003,4.862220000000001Q2.53253,4.75127,2.59039,4.64302Q2.64825,4.53477,2.71136,4.4294899999999995Q2.77446,4.32421,2.84265,4.22215Q2.9108400000000003,4.120089999999999,2.9839599999999997,4.0215Q3.05708,3.92292,3.13495,3.82803Q3.21281,3.73315,3.29524,3.6422Q3.37767,3.55126,3.46447,3.46447Q3.55126,3.37767,3.6422,3.29524Q3.73315,3.21281,3.82803,3.13495Q3.92291,3.05708,4.0215,2.9839599999999997Q4.120089999999999,2.9108400000000003,4.22215,2.84265Q4.32421,2.77446,4.4294899999999995,2.71136Q4.53477,2.64825,4.64302,2.59039Q4.75127,2.53253,4.862220000000001,2.4800500000000003Q4.97318,2.4275700000000002,5.08658,2.3806000000000003Q5.19998,2.3336300000000003,5.31555,2.29228Q5.43112,2.2509300000000003,5.54858,2.2153Q5.66603,2.1796699999999998,5.7851,2.14984Q5.90416,2.1200200000000002,6.02455,2.09607Q6.14493,2.07213,6.26635,2.05412Q6.38776,2.03611,6.50991,2.02408Q6.63207,2.01205,6.75466,2.00602Q6.87726,2,7,2Z"
1706
+ />
1707
+ </g>
1708
+ </g>
1709
+ </g>
1710
+ </svg>
1711
+ `
1712
+ );
1713
+ iconBuilderExports.IconBuilder(
1714
+ "search-empty",
1715
+ (data) => `
1716
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 70 70">
1717
+ <defs>
1718
+ <clipPath><rect width="70" height="70" x="0" y="0" rx="0" /></clipPath>
1719
+ </defs>
1720
+ <g clip-path="url(#master_svg0_1_05361)">
1721
+ <g>
1722
+ <path
1723
+ fill="${data.colorDesc[0]}"
1724
+ fill-opacity="1"
1725
+ d="M34.99823296875,13.078125C34.11226296875,13.078125,33.39404296875,13.796345,33.39404296875,14.682315C33.39404296875,15.568285,34.11226296875,16.286505,34.99823296875,16.286505C42.63643296875,16.286505,48.82844296875,22.478485,48.82844296875,30.116725C48.82964296875,31.001825,49.54754296875,31.718625,50.43264296875,31.718625C51.31774296875,31.718625,52.03554296875,31.001825,52.03684296875,30.116725C52.041142968749995,20.707835,44.41144296875,13.078125,34.99823296875,13.078125Z"
1726
+ />
1727
+ </g>
1728
+ <g>
1729
+ <path
1730
+ fill="${data.colorDesc[0]}"
1731
+ fill-opacity="1"
1732
+ d="M68.995683984375,65.5144796875L57.182683984375,53.7013796875C73.022783984375,35.3662796875,63.929183984375,6.7689296875,40.408483984375,0.9499226875C16.887683984375,-4.8690803125,-4.490606015625,16.1894796875,0.973315984375,39.7952796875C6.437253984375,63.4009796875,34.894283984375,72.9244796875,53.466083984375,57.3624796875L65.306883984375,69.2032796875C66.320183984375,70.2521796875,67.996583984375,70.2665796875,69.027783984375,69.2353796875C70.058983984375,68.2040796875,70.044583984375,66.5277796875,68.995683984375,65.5144796875ZM32.551983984375,59.3597796875C17.711083984375,59.3267796875,5.707163984375,47.2683796875,5.741543984375,32.4273796875C5.775923984375,17.5863796875,17.835483984375,5.5836996875,32.676483984375,5.6195196875C47.517483984375,5.6553396875,59.518983984375,17.7160796875,59.481783984375,32.5570796875C59.444483984375,47.3939796875,47.388883984375,59.3926796875,32.551983984375,59.3597796875Z"
1733
+ />
1734
+ </g>
1735
+ </g>
1736
+ </svg>
1737
+ `
1738
+ );
1739
+ iconBuilderExports.IconBuilder(
1740
+ "video-placeholder",
1741
+ (data) => `
1742
+ <svg width="${data.size}" height="${data.size}" fill="none" viewBox="0 0 80 80">
1743
+ <defs>
1744
+ <clipPath><rect width="80" height="80" x="0" y="0" rx="0" /></clipPath>
1745
+ </defs>
1746
+ <g clip-path="url(#master_svg0_6_23777)">
1747
+ <g>
1748
+ <path
1749
+ fill="${data.colorDesc[0]}"
1750
+ fill-opacity="0.10000000149011612"
1751
+ fill-rule="evenodd"
1752
+ d="M5,22L5,58Q5,61.7279,7.6360399999999995,64.364Q10.272079999999999,67,14,67L66,67Q69.7279,67,72.364,64.364Q75,61.7279,75,58L75,22Q75,18.27208,72.364,15.63604Q69.7279,13,66,13L14,13Q10.272079999999999,13,7.6360399999999995,15.63604Q5,18.27208,5,22ZM20.1631,30.5754L8,30.5754L8,22Q8,21.852710000000002,8.00723,21.70559Q8.01445,21.55848,8.02889,21.4119Q8.043330000000001,21.26532,8.06494,21.119619999999998Q8.086549999999999,20.97392,8.11529,20.82946Q8.14402,20.685,8.17981,20.54212Q8.2156,20.39924,8.25836,20.25829Q8.30111,20.11734,8.35074,19.978659999999998Q8.40036,19.83998,8.45672,19.7039Q8.51309,19.56782,8.57606,19.43467Q8.63904,19.30152,8.70847,19.17162Q8.77791,19.041719999999998,8.853629999999999,18.91538Q8.92935,18.78905,9.01118,18.66658Q9.09301,18.54411,9.18075,18.4258Q9.2685,18.3075,9.36194,18.193640000000002Q9.45538,18.07978,9.55429,17.97065Q9.65321,17.86151,9.75736,17.75736Q9.861509999999999,17.65321,9.97065,17.55429Q10.07978,17.455379999999998,10.19364,17.36194Q10.307500000000001,17.2685,10.425799999999999,17.18075Q10.54411,17.09301,10.66658,17.01118Q10.78905,16.92935,10.915379999999999,16.85363Q11.04172,16.7779,11.17162,16.70847Q11.30152,16.63904,11.43467,16.57606Q11.567820000000001,16.51309,11.7039,16.45672Q11.83998,16.40036,11.97866,16.350740000000002Q12.11734,16.30111,12.258289999999999,16.25836Q12.399239999999999,16.2156,12.54212,16.17981Q12.684999999999999,16.14402,12.829460000000001,16.11529Q12.97392,16.08655,13.11962,16.06494Q13.26532,16.04333,13.4119,16.02889Q13.55848,16.01445,13.70559,16.00723Q13.85271,16,14,16L20.1631,16L20.1631,30.5754ZM23.1631,16L56.334,16L56.334,64L23.1631,64L23.1631,16ZM72,22L72,29.7717L59.334,29.7717L59.334,16L66,16Q66.1473,16,66.2944,16.00723Q66.44149999999999,16.01445,66.5881,16.02889Q66.7347,16.04333,66.88040000000001,16.06494Q67.0261,16.08655,67.1705,16.11529Q67.315,16.14402,67.4579,16.17981Q67.6007,16.2156,67.74170000000001,16.25836Q67.8826,16.30111,68.0213,16.350740000000002Q68.16,16.40036,68.2961,16.45672Q68.4322,16.51309,68.56530000000001,16.57606Q68.6985,16.63904,68.8284,16.70847Q68.95830000000001,16.77791,69.0846,16.85363Q69.2109,16.92935,69.3334,17.01118Q69.4559,17.09301,69.5742,17.18075Q69.6925,17.2685,69.8064,17.36194Q69.9202,17.455379999999998,70.0294,17.55429Q70.1385,17.65321,70.2426,17.75736Q70.3468,17.86151,70.4457,17.97065Q70.5446,18.07978,70.6381,18.193640000000002Q70.7315,18.3075,70.8192,18.4258Q70.907,18.54411,70.9888,18.66658Q71.0706,18.78905,71.1464,18.91538Q71.2221,19.041719999999998,71.2915,19.17162Q71.3609,19.30152,71.4239,19.43467Q71.4869,19.56782,71.5433,19.7039Q71.5996,19.83998,71.6493,19.978659999999998Q71.6989,20.11734,71.7416,20.25829Q71.7844,20.39924,71.8202,20.54212Q71.856,20.685,71.8847,20.82946Q71.9135,20.97392,71.9351,21.119619999999998Q71.9567,21.26532,71.9711,21.4119Q71.9855,21.55848,71.9928,21.70559Q72,21.852710000000002,72,22ZM35.75,47.3612Q38,48.6603,40.25,47.3612L46.25,43.897099999999995Q48.5,42.5981,48.5,40Q48.5,37.4019,46.25,36.102900000000005L40.25,32.6388Q38,31.3397,35.75,32.6388Q33.5,33.937799999999996,33.5,36.5359L33.5,43.4641Q33.5,46.0622,35.75,47.3612ZM72,32.771699999999996L72,45.8474L59.334,45.8474L59.334,32.771699999999996L72,32.771699999999996ZM20.1631,46.6511L8,46.6511L8,33.5754L20.1631,33.5754L20.1631,46.6511ZM44.75,41.299L38.75,44.7631Q38,45.1962,37.25,44.7631Q36.5,44.3301,36.5,43.4641L36.5,36.5359Q36.5,35.6699,37.25,35.2369Q38,34.803799999999995,38.75,35.2369L44.75,38.701Q45.5,39.134,45.5,40Q45.5,40.866,44.75,41.299ZM66,64L59.334,64L59.334,48.8474L72,48.8474L72,58Q72,58.1473,71.9928,58.2944Q71.9855,58.4415,71.9711,58.5881Q71.9567,58.7347,71.9351,58.8804Q71.9135,59.0261,71.8847,59.1705Q71.856,59.315,71.8202,59.4579Q71.7844,59.6008,71.7416,59.7417Q71.6989,59.8827,71.6493,60.0213Q71.5996,60.16,71.5433,60.2961Q71.4869,60.4322,71.4239,60.5653Q71.3609,60.6985,71.2915,60.8284Q71.2221,60.9583,71.1464,61.0846Q71.0706,61.2109,70.9888,61.3334Q70.907,61.4559,70.8192,61.5742Q70.7315,61.6925,70.6381,61.8064Q70.5446,61.9202,70.4457,62.0294Q70.3468,62.1385,70.2426,62.2426Q70.1385,62.3468,70.0294,62.4457Q69.9202,62.5446,69.8064,62.6381Q69.6925,62.7315,69.5742,62.8192Q69.4559,62.907,69.3334,62.9888Q69.2109,63.0706,69.0846,63.1464Q68.95830000000001,63.2221,68.8284,63.2915Q68.6985,63.361,68.56530000000001,63.4239Q68.4322,63.4869,68.2961,63.5433Q68.16,63.5996,68.0213,63.6493Q67.8826,63.6989,67.74170000000001,63.7416Q67.6007,63.7844,67.4579,63.8202Q67.315,63.856,67.1705,63.8847Q67.0261,63.9134,66.88040000000001,63.9351Q66.7347,63.9567,66.5881,63.9711Q66.44149999999999,63.9855,66.2944,63.9928Q66.1473,64,66,64ZM20.1631,49.6511L20.1631,64L14,64Q13.85271,64,13.70559,63.9928Q13.55848,63.9855,13.4119,63.9711Q13.26532,63.9567,13.11962,63.9351Q12.97392,63.9134,12.829460000000001,63.8847Q12.684999999999999,63.856,12.54212,63.8202Q12.399239999999999,63.7844,12.258289999999999,63.7416Q12.11734,63.6989,11.97866,63.6493Q11.83998,63.5996,11.7039,63.5433Q11.567820000000001,63.4869,11.43467,63.4239Q11.30152,63.361,11.17162,63.2915Q11.04172,63.2221,10.915379999999999,63.1464Q10.78905,63.0706,10.66658,62.9888Q10.54411,62.907,10.425799999999999,62.8192Q10.307500000000001,62.7315,10.19364,62.6381Q10.07978,62.5446,9.97065,62.4457Q9.861509999999999,62.3468,9.75736,62.2426Q9.65321,62.1385,9.55429,62.0294Q9.45538,61.9202,9.36194,61.8064Q9.2685,61.6925,9.18075,61.5742Q9.09301,61.4559,9.01118,61.3334Q8.92935,61.2109,8.853629999999999,61.0846Q8.777899999999999,60.9583,8.70847,60.8284Q8.63904,60.6985,8.57606,60.5653Q8.51309,60.4322,8.45672,60.2961Q8.40036,60.16,8.35074,60.0213Q8.30111,59.8827,8.25836,59.7417Q8.2156,59.6008,8.17981,59.4579Q8.14402,59.315,8.11529,59.1705Q8.086549999999999,59.0261,8.06494,58.8804Q8.043330000000001,58.7347,8.02889,58.5881Q8.01445,58.4415,8.00723,58.2944Q8,58.1473,8,58L8,49.6511L20.1631,49.6511Z"
1753
+ />
1754
+ </g>
1755
+ </g>
1756
+ </svg>
1757
+ `
1758
+ );
1759
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1760
+ __name: "product-title",
1761
+ props: {
1762
+ title: PropUtils.string.def(""),
1763
+ useExpand: PropUtils.bool.def(false),
1764
+ useEllipsis: PropUtils.bool.def(false)
1765
+ },
1766
+ setup(__props) {
1767
+ const props = __props;
1768
+ const titleRef = ref();
1769
+ const moreArrowVisible = ref(false);
1770
+ function handleExpand() {
1771
+ var _a;
1772
+ moreArrowVisible.value = false;
1773
+ (_a = titleRef.value) == null ? void 0 : _a.classList.add("plv-product-c-item__title--expanded");
1774
+ }
1775
+ function isTitleOverflowing() {
1776
+ const titleEl = titleRef.value;
1777
+ if (!titleEl) return false;
1778
+ const clone = titleEl.cloneNode(true);
1779
+ const computedStyle = window.getComputedStyle(titleEl);
1780
+ clone.style.font = computedStyle.font;
1781
+ clone.style.lineHeight = computedStyle.lineHeight;
1782
+ clone.style.display = "block";
1783
+ clone.style.width = titleEl.clientWidth + "px";
1784
+ clone.style.visibility = "hidden";
1785
+ clone.style.position = "absolute";
1786
+ clone.style.whiteSpace = "normal";
1787
+ document.body.appendChild(clone);
1788
+ const isOverflowing = clone.scrollHeight > titleEl.clientHeight + 1;
1789
+ document.body.removeChild(clone);
1790
+ return isOverflowing;
1791
+ }
1792
+ function checkTitleOverflow() {
1793
+ moreArrowVisible.value = isTitleOverflowing();
1794
+ }
1795
+ watch(
1796
+ () => props.title,
1797
+ () => {
1798
+ if (titleRef.value) {
1799
+ titleRef.value.classList.remove("plv-product-c-item__title--expanded");
1800
+ }
1801
+ nextTick(() => {
1802
+ checkTitleOverflow();
1803
+ });
1804
+ }
1805
+ );
1806
+ onMounted(() => {
1807
+ checkTitleOverflow();
1808
+ });
1809
+ return { __sfc: true, props, titleRef, moreArrowVisible, handleExpand, isTitleOverflowing, checkTitleOverflow, ProductIconArrowDown };
1810
+ }
1811
+ });
1812
+ var _sfc_render$4 = function render2() {
1813
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
1814
+ return _c("div", { staticClass: "plv-product-c-item__title-container" }, [_c("div", { ref: "titleRef", staticClass: "plv-product-c-item__title", class: {
1815
+ "plv-product-c-item__title--single": _vm.useEllipsis
1816
+ } }, [_vm._v(" " + _vm._s(_vm.title) + " ")]), _vm.useExpand && _setup.moreArrowVisible ? _c("button", { staticClass: "plv-product-c-item__title-more", on: { "click": _setup.handleExpand } }, [_c(_setup.ProductIconArrowDown, { staticClass: "plv-product-c-item__title-more-icon" })], 1) : _vm._e()]);
1817
+ };
1818
+ var _sfc_staticRenderFns$4 = [];
1819
+ var __component__$4 = /* @__PURE__ */ normalizeComponent(
1820
+ _sfc_main$4,
1821
+ _sfc_render$4,
1822
+ _sfc_staticRenderFns$4
1823
+ );
1824
+ const ProductTitle = __component__$4.exports;
1825
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1826
+ __name: "product-feature-tag",
1827
+ props: {
1828
+ tag: PropUtils.string.def(""),
1829
+ maxWidth: PropUtils.number.def(88)
1830
+ },
1831
+ setup(__props) {
1832
+ const props = __props;
1833
+ const containerStyle = computed(() => ({
1834
+ maxWidth: `${props.maxWidth}px`
1835
+ }));
1836
+ return { __sfc: true, props, containerStyle };
1837
+ }
1838
+ });
1839
+ var _sfc_render$3 = function render3() {
1840
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
1841
+ return _c("div", { staticClass: "plv-product-c-item__tag-container", style: _setup.containerStyle, attrs: { "title": _vm.tag } }, [_vm.tag ? _c("span", { staticClass: "plv-product-c-item__tag" }, [_vm._v(_vm._s(_vm.tag))]) : _vm._e()]);
1842
+ };
1843
+ var _sfc_staticRenderFns$3 = [];
1844
+ var __component__$3 = /* @__PURE__ */ normalizeComponent(
1845
+ _sfc_main$3,
1846
+ _sfc_render$3,
1847
+ _sfc_staticRenderFns$3
1848
+ );
1849
+ const ProductFeatureTag = __component__$3.exports;
1850
+ const productEvents = {
1851
+ /**
1852
+ * 打开商品详情弹层
1853
+ */
1854
+ OpenProductDetailPopup: "openProductDetailPopup",
1855
+ /**
1856
+ * 打开 iframe 链接弹层
1857
+ */
1858
+ OpenProductIframeLinkPopup: "openProductIframeLinkPopup"
1859
+ };
1860
+ const productProps = () => ({
1861
+ /** 商品 SDK 实例 */
1862
+ productTarget: PropUtils.object().isRequired,
1863
+ /** 商品配置 */
1864
+ productConfig: PropUtils.object().def({})
1865
+ });
1866
+ function getProductTargetExport(productTarget) {
1867
+ return {
1868
+ ProductType: productTarget.ProductType,
1869
+ ProductLinkType: productTarget.ProductLinkType,
1870
+ ProductLinkJumpWay: productTarget.ProductLinkJumpWay,
1871
+ ProductBuyType: productTarget.ProductBuyType,
1872
+ ProductStatus: productTarget.ProductStatus,
1873
+ ProductPriceType: productTarget.ProductPriceType,
1874
+ ProductExplainStatus: productTarget.ProductExplainStatus,
1875
+ ProductMediaType: productTarget.ProductMediaType,
1876
+ ProductDeliveryType: productTarget.ProductDeliveryType,
1877
+ ProductEvents: productTarget.ProductEvents
1878
+ };
1879
+ }
1880
+ const PRODUCT_PROVIDE_KEY = Symbol("PRODUCT_PROVIDE_KEY");
1881
+ const useProductInject = () => {
1882
+ const data = inject(PRODUCT_PROVIDE_KEY);
1883
+ const productTarget = data.getProductTarget();
1884
+ return __spreadValues({
1885
+ productTarget,
1886
+ productConfig: data.productConfig
1887
+ }, getProductTargetExport(productTarget));
1888
+ };
1889
+ const useProductStock = (options) => {
1890
+ const { product } = options;
1891
+ let ProductType;
1892
+ let ProductBuyType;
1893
+ if (options.entranceProps) {
1894
+ const result = getProductTargetExport(options.entranceProps.productTarget);
1895
+ ProductType = result.ProductType;
1896
+ ProductBuyType = result.ProductBuyType;
1897
+ } else {
1898
+ const result = useProductInject();
1899
+ ProductType = result.ProductType;
1900
+ ProductBuyType = result.ProductBuyType;
1901
+ }
1902
+ function getStock(target) {
1903
+ if (!ProductType || !ProductBuyType) {
1904
+ return {
1905
+ enabled: false,
1906
+ stock: 0
1907
+ };
1908
+ }
1909
+ if ((target == null ? void 0 : target.productType) === ProductType.Normal && target.buyType === ProductBuyType.DirectBuy && (target == null ? void 0 : target.stockEnabled)) {
1910
+ return {
1911
+ enabled: true,
1912
+ stock: target.stock
1913
+ };
1914
+ }
1915
+ return {
1916
+ enabled: false,
1917
+ stock: 0
1918
+ };
1919
+ }
1920
+ const stock = computed(() => {
1921
+ let target;
1922
+ if (typeof product === "function") {
1923
+ target = product();
1924
+ } else {
1925
+ target = unref(product);
1926
+ }
1927
+ return getStock(target);
1928
+ });
1929
+ const isSoldOut = computed(() => {
1930
+ return stock.value.enabled && stock.value.stock <= 0;
1931
+ });
1932
+ return {
1933
+ stock,
1934
+ isSoldOut
1935
+ };
1936
+ };
1937
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1938
+ __name: "product-price",
1939
+ props: {
1940
+ product: PropUtils.object()
1941
+ },
1942
+ setup(__props) {
1943
+ const props = __props;
1944
+ const { $t } = useI18n();
1945
+ const { ProductType, ProductPriceType } = useProductInject();
1946
+ const isFreeProduct = computed(() => {
1947
+ if (!props.product || props.product.productType !== ProductType.Normal) return false;
1948
+ if (!props.product.realPrice) return true;
1949
+ return false;
1950
+ });
1951
+ const hiddenPriceMarks = computed(() => {
1952
+ const { product } = props;
1953
+ if (!product || product.productType !== ProductType.Normal) return "";
1954
+ if (!product.realPrice) return "??";
1955
+ const integerPart = String(product.realPrice).split(".")[0];
1956
+ const repeatTimes = Math.min(
1957
+ integerPart.length,
1958
+ 3
1959
+ /** 由于空间所限,最多显示 3 个 */
1960
+ );
1961
+ return "?".repeat(repeatTimes);
1962
+ });
1963
+ const displayPrice = computed(() => {
1964
+ if (!props.product || props.product.productType !== ProductType.Normal) return;
1965
+ if (isFreeProduct.value) return $t("product.price.free");
1966
+ return props.product.realPrice;
1967
+ });
1968
+ return { __sfc: true, props, $t, ProductType, ProductPriceType, isFreeProduct, hiddenPriceMarks, displayPrice };
1969
+ }
1970
+ });
1971
+ var _sfc_render$2 = function render4() {
1972
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
1973
+ return _vm.product ? _c("div", { staticClass: "plv-product-c-item__price-area" }, [_vm.product.productType === _setup.ProductType.Normal ? [_c("span", { staticClass: "plv-product-c-item__price" }, [!_setup.isFreeProduct && _vm.product.priceType === _setup.ProductPriceType.Amount ? _c("span", { staticClass: "plv-product-c-item__price-symbol" }, [_vm._v("¥")]) : _vm._e(), _vm.product.priceVisible || _setup.isFreeProduct ? _c("span", [_vm.product.priceType === _setup.ProductPriceType.Custom ? _c("span", { staticClass: "plv-product-c-item__price-custom" }, [_vm._v(_vm._s(_vm.product.customPrice))]) : _c("span", { staticClass: "plv-font-din-pro-regular" }, [_vm._v(_vm._s(_setup.displayPrice))])]) : [_c("span", { staticClass: "plv-product-c-item__price-placeholder plv-font-din-pro-regular" }, [_vm._v(_vm._s(_setup.hiddenPriceMarks))]), _c("span", { staticClass: "plv-product-c-item__placeholder-text plv-font-din-pro-regular" }, [_vm._v(_vm._s(_setup.$t("product.price.hidden")))])]], 2), _vm.product.originPrice ? _c("span", { staticClass: "plv-product-c-item__original-price" }, [_vm._v("¥" + _vm._s(_vm.product.originPrice))]) : _vm._e()] : _vm._e(), _vm.product.productType === _setup.ProductType.Finance ? [_c("div", { staticClass: "plv-product-c-item__price-finance" }, [_vm._v(" " + _vm._s(_vm.product.yield) + " ")])] : _vm._e(), _vm.product.productType === _setup.ProductType.Position ? [_c("div", { staticClass: "plv-product-c-item__price-finance" }, [_vm._v(" " + _vm._s(_vm.product.treatment) + " ")])] : _vm._e()], 2) : _vm._e();
1974
+ };
1975
+ var _sfc_staticRenderFns$2 = [];
1976
+ var __component__$2 = /* @__PURE__ */ normalizeComponent(
1977
+ _sfc_main$2,
1978
+ _sfc_render$2,
1979
+ _sfc_staticRenderFns$2
1980
+ );
1981
+ const ProductPrice = __component__$2.exports;
1982
+ const hasOwnProperty = Object.prototype.hasOwnProperty;
1983
+ function hasOwnProp(r2, n2) {
1984
+ return hasOwnProperty.call(r2, n2);
1985
+ }
1986
+ function assignProps(r2, ...n2) {
1987
+ if (null == r2) throw new TypeError("Cannot convert undefined or null to object");
1988
+ for (let o2 = 0; o2 < n2.length; o2++) {
1989
+ const t2 = n2[o2];
1990
+ if (null != t2) for (const n3 in t2) "__proto__" !== n3 && hasOwnProp(t2, n3) && (r2[n3] = t2[n3]);
1991
+ }
1992
+ return r2;
1993
+ }
1994
+ function addToResult(n2, o2, e, t2) {
1995
+ if (null == e && (e = ""), "" !== e || !t2.ignoreEmpty) {
1996
+ if ("function" == typeof t2.encode) {
1997
+ o2 = t2.encode(o2);
1998
+ e = -1 !== ["boolean", "string", "number"].indexOf(typeof e) ? t2.encode(String(e)) : "";
1999
+ }
2000
+ n2.push(o2 + "=" + e);
2001
+ }
2002
+ }
2003
+ function handleMultiValues(n2, o2, e, t2) {
2004
+ e.forEach((e2) => {
2005
+ addToResult(n2, o2, e2, t2);
2006
+ });
2007
+ }
2008
+ function stringify(n2, o2) {
2009
+ const e = assignProps({ encode: encodeURIComponent }, o2), t2 = [];
2010
+ let i2, r2;
2011
+ for (i2 in n2) hasOwnProp(n2, i2) && (r2 = n2[i2], Array.isArray(r2) ? handleMultiValues(t2, i2, r2, e) : addToResult(t2, i2, r2, e));
2012
+ return t2.join("&");
2013
+ }
2014
+ function splitURL(e) {
2015
+ const t2 = { leftContext: "" };
2016
+ let n2 = e.indexOf("#");
2017
+ return -1 !== n2 && (t2.hash = e.slice(n2 + 1), e = e.slice(0, n2)), n2 = e.indexOf("?"), -1 !== n2 && (t2.search = e.slice(n2 + 1), e = e.slice(0, n2)), t2.leftContext = e, t2;
2018
+ }
2019
+ function joinURL(e) {
2020
+ let t2 = e.leftContext;
2021
+ return null != e.search && (t2 += "?" + e.search), null != e.hash && (t2 += "#" + e.hash), t2;
2022
+ }
2023
+ function concat(i2, r2, t2) {
2024
+ if (i2 = String(i2), null == r2) return i2;
2025
+ if (!(r2 = "string" == typeof r2 ? r2.replace(/^[?&]/, "") : stringify(r2, t2))) return i2;
2026
+ const n2 = splitURL(i2);
2027
+ let e = n2.search || "";
2028
+ return e && "&" !== e.slice(-1) && (e += "&"), e += r2, n2.search = e, joinURL(n2);
2029
+ }
2030
+ const useTrackEvent = (iarCore) => {
2031
+ const { injectData } = useGlobalInject();
2032
+ function trackEvent(data) {
2033
+ if (injectData.trackEventCallback) {
2034
+ injectData.trackEventCallback(data);
2035
+ return;
2036
+ }
2037
+ iarCore.trackEvent(data);
2038
+ }
2039
+ return {
2040
+ trackEvent
2041
+ };
2042
+ };
2043
+ const htmlChars = ['"', "'", "&", "<", ">"], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
2044
+ htmlChars.forEach((n2, e) => {
2045
+ charsToEntities[n2] = htmlEntities[e], entitiesToChars[htmlEntities[e]] = n2;
2046
+ });
2047
+ const reHTMLChars = new RegExp("[" + htmlChars.join("") + "]", "g");
2048
+ function escapeHTML(n2) {
2049
+ return null == n2 ? n2 : String(n2).replace(reHTMLChars, (n3) => charsToEntities[n3]);
2050
+ }
2051
+ function randomStr(n2, e) {
2052
+ if (!(n2 |= 0) || n2 < 0) throw new Error('"length" must be a number greater than 0');
2053
+ let t2 = "";
2054
+ do {
2055
+ t2 += Math.random().toString(36).substr(2);
2056
+ } while (t2.length < n2);
2057
+ return t2 = t2.substr(0, n2), t2;
2058
+ }
2059
+ const useWeixinButton = (hookOptions = {}) => {
2060
+ const { injectData } = useGlobalInject();
2061
+ const isHighWeixinVersion = weixinVersion.gte("7.0.12");
2062
+ const isWxMiniProgramWebview = ref(false);
2063
+ const supportWxOpenLaunchWeapp = computed(() => {
2064
+ return isWeixin && isHighWeixinVersion && isMobile;
2065
+ });
2066
+ function supportWxMiniProgramNavigateTo() {
2067
+ return __async(this, null, function* () {
2068
+ var _a;
2069
+ if (!isWeixin || !injectData.getWeixinSdk) {
2070
+ return false;
2071
+ }
2072
+ const wx = yield injectData.getWeixinSdk();
2073
+ if ((_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.getEnv) {
2074
+ return new Promise((resolve) => {
2075
+ var _a2;
2076
+ (_a2 = wx.miniProgram) == null ? void 0 : _a2.getEnv((res) => {
2077
+ resolve((res == null ? void 0 : res.miniprogram) === true);
2078
+ });
2079
+ });
2080
+ }
2081
+ return false;
2082
+ });
2083
+ }
2084
+ function checkWxMiniProgramWebview() {
2085
+ return __async(this, null, function* () {
2086
+ const check = yield supportWxMiniProgramNavigateTo();
2087
+ isWxMiniProgramWebview.value = check;
2088
+ });
2089
+ }
2090
+ function toWxMiniProgram(url) {
2091
+ return __async(this, null, function* () {
2092
+ var _a;
2093
+ if (!isWeixin || !injectData.getWeixinSdk) {
2094
+ return;
2095
+ }
2096
+ const wx = yield injectData.getWeixinSdk();
2097
+ (_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.navigateTo({
2098
+ url
2099
+ });
2100
+ return;
2101
+ });
2102
+ }
2103
+ onMounted(() => {
2104
+ checkWxMiniProgramWebview();
2105
+ });
2106
+ const weixinBtnRef = ref();
2107
+ const buttonOptions = computed(() => {
2108
+ var _a;
2109
+ return (_a = hookOptions.getButtonOptions) == null ? void 0 : _a.call(hookOptions);
2110
+ });
2111
+ function createWxMiniProgramButton() {
2112
+ if (!weixinBtnRef.value || !supportWxOpenLaunchWeapp.value) {
2113
+ return;
2114
+ }
2115
+ const options = buttonOptions.value;
2116
+ if (!options) {
2117
+ return;
2118
+ }
2119
+ const { wxMiniprogramOriginalId, wxMiniprogramLink, classKey } = options;
2120
+ const btnElem = weixinBtnRef.value;
2121
+ const width = btnElem.clientWidth;
2122
+ const height = btnElem.clientHeight;
2123
+ const id = "wx-open-launch-weapp-" + randomStr(8);
2124
+ const htmlText = `
2125
+ <wx-open-launch-weapp
2126
+ id="${id}"
2127
+ username="${escapeHTML(wxMiniprogramOriginalId)}"
2128
+ path="${wxMiniprogramLink}"
2129
+ >
2130
+ <script type="text/wxtag-template">
2131
+ <style>.plv-iar-${classKey}-wx-buy-btn {width: ${width}px;height: ${height}px;}</style>
2132
+ <div class="plv-iar-${classKey}-wx-buy-btn"></div>
2133
+ <\/script>
2134
+ </wx-open-launch-weapp>
2135
+ `;
2136
+ btnElem.innerHTML = htmlText;
2137
+ setTimeout(() => {
2138
+ const launchElem = document.querySelector(`#${id}`);
2139
+ launchElem == null ? void 0 : launchElem.addEventListener("launch", () => {
2140
+ if (hookOptions.launchCallback) {
2141
+ hookOptions.launchCallback();
2142
+ }
2143
+ });
2144
+ launchElem == null ? void 0 : launchElem.addEventListener("error", (e) => {
2145
+ const error = e;
2146
+ console.error("Launch error", error.detail);
2147
+ });
2148
+ }, 10);
2149
+ }
2150
+ watch(
2151
+ () => [weixinBtnRef.value, supportWxOpenLaunchWeapp.value, buttonOptions.value],
2152
+ () => {
2153
+ createWxMiniProgramButton();
2154
+ },
2155
+ {
2156
+ immediate: true
2157
+ }
2158
+ );
2159
+ return {
2160
+ isHighWeixinVersion,
2161
+ isWxMiniProgramWebview,
2162
+ supportWxOpenLaunchWeapp,
2163
+ supportWxMiniProgramNavigateTo,
2164
+ toWxMiniProgram,
2165
+ weixinBtnRef,
2166
+ createWxMiniProgramButton
2167
+ };
2168
+ };
2169
+ const useAppNative = () => {
2170
+ function getNativeToPointMallFn() {
2171
+ var _a, _b, _c, _d;
2172
+ if (isAndroid) {
2173
+ return (_a = window.AndroidNative) == null ? void 0 : _a.toPointMall;
2174
+ } else if (isIOS) {
2175
+ return (_d = (_c = (_b = window.webkit) == null ? void 0 : _b.messageHandlers) == null ? void 0 : _c.gotoPointsMall) == null ? void 0 : _d.postMessage;
2176
+ }
2177
+ }
2178
+ function supportNativeToPointMall() {
2179
+ return !!getNativeToPointMallFn();
2180
+ }
2181
+ const supportAppNative = computed(() => {
2182
+ return supportNativeToPointMall();
2183
+ });
2184
+ function toNativeLink(options) {
2185
+ const { androidLink, iosLink, otherLink } = options;
2186
+ const nativePointMallFn = getNativeToPointMallFn();
2187
+ if (nativePointMallFn) {
2188
+ let url = isAndroid ? androidLink : iosLink;
2189
+ const pltBackUri = encodeURIComponent(location.href);
2190
+ url = concat(url, {
2191
+ plt_back_uri: pltBackUri
2192
+ });
2193
+ const paramsStr = JSON.stringify({
2194
+ url
2195
+ });
2196
+ nativePointMallFn(paramsStr);
2197
+ return;
2198
+ }
2199
+ window.open(otherLink, "_blank", "noopener=yes");
2200
+ }
2201
+ return {
2202
+ getNativeToPointMallFn,
2203
+ supportNativeToPointMall,
2204
+ supportAppNative,
2205
+ toNativeLink
2206
+ };
2207
+ };
2208
+ const usePolyvWebview = () => {
2209
+ const { injectData } = useGlobalInject();
2210
+ const isPlvWebview = ref(false);
2211
+ const supportPlvWebview = computed(() => {
2212
+ return isPlvWebview.value;
2213
+ });
2214
+ function getPlvWebviewBridge() {
2215
+ return __async(this, null, function* () {
2216
+ if (injectData.getPlvWebviewBridge) {
2217
+ return yield injectData.getPlvWebviewBridge();
2218
+ }
2219
+ });
2220
+ }
2221
+ function toPlvWebviewBridge(options) {
2222
+ return __async(this, null, function* () {
2223
+ if (!supportPlvWebview.value) {
2224
+ return;
2225
+ }
2226
+ let plvWebviewDataSize = {
2227
+ width: 90,
2228
+ height: 160
2229
+ };
2230
+ if (injectData.getPlvWebviewSmallWindowSize) {
2231
+ plvWebviewDataSize = injectData.getPlvWebviewSmallWindowSize();
2232
+ }
2233
+ const webviewBridge = yield getPlvWebviewBridge();
2234
+ if (!webviewBridge) {
2235
+ return;
2236
+ }
2237
+ webviewBridge.sendData("clickProduct", {
2238
+ width: plvWebviewDataSize.width,
2239
+ height: plvWebviewDataSize.height,
2240
+ newPage: true,
2241
+ link: options.link,
2242
+ data: options.data
2243
+ });
2244
+ });
2245
+ }
2246
+ onMounted(() => {
2247
+ if (injectData.isPlvWebview) {
2248
+ isPlvWebview.value = injectData.isPlvWebview();
2249
+ }
2250
+ });
2251
+ return {
2252
+ isPlvWebview,
2253
+ supportPlvWebview,
2254
+ getPlvWebviewBridge,
2255
+ toPlvWebviewBridge
2256
+ };
2257
+ };
2258
+ const productButtonProps = () => __spreadProps(__spreadValues({}, productProps()), {
2259
+ /**
2260
+ * 商品数据
2261
+ */
2262
+ productData: PropUtils.object().isRequired,
2263
+ disabled: PropUtils.bool.def(false)
2264
+ });
2265
+ const productButtonEmits = () => ({
2266
+ /** 直接购买 */
2267
+ "direct-buy": emitFunc()
2268
+ });
2269
+ const useProductButton = (options) => {
2270
+ const { props, emit } = options;
2271
+ const { isSoldOut } = useProductStock({
2272
+ product: () => props.productData
2273
+ });
2274
+ const { getEmitter } = useGlobalInject();
2275
+ const { $t } = useI18n();
2276
+ const productConfig = computed(() => {
2277
+ return props.productConfig;
2278
+ });
2279
+ const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram } = useWeixinButton({
2280
+ getButtonOptions: () => {
2281
+ const productData = props.productData;
2282
+ return {
2283
+ wxMiniprogramOriginalId: productData.wxMiniprogramOriginalId,
2284
+ wxMiniprogramLink: formatProductLink(productData.wxMiniprogramLink),
2285
+ classKey: "product"
2286
+ };
2287
+ },
2288
+ launchCallback: () => sendClickEvent()
2289
+ });
2290
+ const { supportAppNative, toNativeLink } = useAppNative();
2291
+ const { supportPlvWebview, toPlvWebviewBridge } = usePolyvWebview();
2292
+ const { trackEvent } = useTrackEvent(props.productTarget.iarCore);
2293
+ const { ProductBuyType, ProductType, ProductLinkType, ProductLinkJumpWay } = getProductTargetExport(props.productTarget);
2294
+ const isDirectBuy = computed(() => {
2295
+ return props.productData.productType === ProductType.Normal && props.productData.buyType === ProductBuyType.DirectBuy;
2296
+ });
2297
+ const isPreviewMode = computed(() => {
2298
+ var _a;
2299
+ return (_a = productConfig.value.isPreviewMode) != null ? _a : false;
2300
+ });
2301
+ const isButtonDisabled = computed(() => {
2302
+ const productData = props.productData;
2303
+ if (productConfig.value.customProductDisabled) {
2304
+ const isDisabled = productConfig.value.customProductDisabled(productData);
2305
+ return !!isDisabled;
2306
+ }
2307
+ if (props.disabled) return true;
2308
+ if (isPreviewMode.value) {
2309
+ return false;
2310
+ }
2311
+ if (isSoldOut.value) {
2312
+ return true;
2313
+ }
2314
+ if (productData.productType === ProductType.Normal && !productData.priceVisible && productData.realPrice > 0) {
2315
+ return true;
2316
+ }
2317
+ if (isDirectBuy.value) {
2318
+ return false;
2319
+ }
2320
+ if (productData.linkType === ProductLinkType.Normal) {
2321
+ return !productData.link;
2322
+ }
2323
+ if (productData.linkType === ProductLinkType.MultiPlatform) {
2324
+ return isMultiPlatformDisabled.value;
2325
+ }
2326
+ if (productData.linkType === ProductLinkType.Native) {
2327
+ if (supportAppNative.value) {
2328
+ return !productData.androidLink && !productData.iosLink;
2329
+ }
2330
+ return !productData.otherLink;
2331
+ }
2332
+ return false;
2333
+ });
2334
+ const isMultiPlatformDisabled = computed(() => {
2335
+ const { pcLink, mobileLink, wxMiniprogramLink, mobileAppLink } = props.productData;
2336
+ if (isWeixinButton.value) {
2337
+ return false;
2338
+ }
2339
+ if (isWxMiniProgramWebview.value && wxMiniprogramLink) {
2340
+ return false;
2341
+ }
2342
+ if (isMobile) {
2343
+ return !mobileLink && !mobileAppLink;
2344
+ }
2345
+ if (!isMobile) {
2346
+ return !pcLink;
2347
+ }
2348
+ return true;
2349
+ });
2350
+ const isWeixinButton = computed(() => {
2351
+ if (typeof productConfig.value.customClickButtonHandler === "function") {
2352
+ return false;
2353
+ }
2354
+ if (isDirectBuy.value) {
2355
+ return false;
2356
+ }
2357
+ if (isWxMiniProgramWebview.value) {
2358
+ return false;
2359
+ }
2360
+ return supportWxOpenLaunchWeapp.value && !!props.productData.wxMiniprogramOriginalId;
2361
+ });
2362
+ const buttonText = computed(() => {
2363
+ let defaultText = $t("product.button.normal");
2364
+ switch (props.productData.productType) {
2365
+ case ProductType.Normal:
2366
+ defaultText = $t("product.button.normal");
2367
+ break;
2368
+ case ProductType.Finance:
2369
+ defaultText = $t("product.button.finance");
2370
+ break;
2371
+ case ProductType.Position:
2372
+ defaultText = $t("product.button.position");
2373
+ break;
2374
+ }
2375
+ return props.productData.buttonText || defaultText;
2376
+ });
2377
+ function formatProductLink(url, params = {}) {
2378
+ let urlParams = __spreadValues({}, params);
2379
+ if (productConfig.value.getLinkParams) {
2380
+ const res = productConfig.value.getLinkParams(url);
2381
+ urlParams = Object.assign({}, urlParams, res);
2382
+ }
2383
+ return concat(url, urlParams);
2384
+ }
2385
+ function onClickLinkBtn() {
2386
+ const productData = props.productData;
2387
+ const { linkType } = productData;
2388
+ sendClickEvent();
2389
+ if (productConfig.value.customClickButtonHandler) {
2390
+ productConfig.value.customClickButtonHandler(productData);
2391
+ return;
2392
+ }
2393
+ if (isDirectBuy.value) {
2394
+ toDirectBuy();
2395
+ return;
2396
+ }
2397
+ if (productData.linkType === ProductLinkType.Native) {
2398
+ toNativeLink({
2399
+ androidLink: formatProductLink(productData.androidLink),
2400
+ iosLink: formatProductLink(productData.iosLink),
2401
+ otherLink: formatProductLink(productData.otherLink)
2402
+ });
2403
+ return;
2404
+ }
2405
+ if (supportPlvWebview.value) {
2406
+ let linkTo = "";
2407
+ const { link, mobileLink, mobileAppLink, wxMiniprogramOriginalId, wxMiniprogramLink } = productData;
2408
+ switch (productData.linkType) {
2409
+ case ProductLinkType.Normal:
2410
+ linkTo = link;
2411
+ break;
2412
+ case ProductLinkType.MultiPlatform:
2413
+ linkTo = mobileAppLink || mobileLink;
2414
+ break;
2415
+ }
2416
+ let otherData = null;
2417
+ if (productData.linkType !== ProductLinkType.Normal) {
2418
+ otherData = {
2419
+ mobileLink: formatProductLink(mobileLink),
2420
+ wxMiniprogramOriginalId,
2421
+ wxMiniprogramLink: formatProductLink(wxMiniprogramLink),
2422
+ mobileAppLink: formatProductLink(mobileAppLink)
2423
+ };
2424
+ }
2425
+ toPlvWebviewBridge({
2426
+ link: formatProductLink(linkTo),
2427
+ data: otherData
2428
+ });
2429
+ return;
2430
+ }
2431
+ if (linkType === ProductLinkType.Normal) {
2432
+ const { link, jumpWay } = productData;
2433
+ openLink(formatProductLink(link), jumpWay);
2434
+ return;
2435
+ }
2436
+ if (linkType === ProductLinkType.MultiPlatform) {
2437
+ const { wxMiniprogramLink, mobileLink, pcLink } = productData;
2438
+ if (isWxMiniProgramWebview.value && wxMiniprogramLink) {
2439
+ toWxMiniProgram(formatProductLink(wxMiniprogramLink));
2440
+ return;
2441
+ }
2442
+ if (isMobile) {
2443
+ openLink(formatProductLink(mobileLink), ProductLinkJumpWay.NewWindow);
2444
+ return;
2445
+ }
2446
+ if (!isMobile) {
2447
+ openLink(formatProductLink(pcLink), ProductLinkJumpWay.NewWindow);
2448
+ return;
2449
+ }
2450
+ }
2451
+ }
2452
+ function openLink(url, jumpWay) {
2453
+ switch (jumpWay) {
2454
+ case ProductLinkJumpWay.NewWindow:
2455
+ window.open(url, "_blank", "noopener=yes");
2456
+ break;
2457
+ case ProductLinkJumpWay.CurrentWindow:
2458
+ window.location.href = url;
2459
+ break;
2460
+ case ProductLinkJumpWay.PopUp:
2461
+ getEmitter().emit(productEvents.OpenProductIframeLinkPopup, url);
2462
+ break;
2463
+ default:
2464
+ window.open(url, "_blank", "noopener=yes");
2465
+ }
2466
+ }
2467
+ function toDirectBuy() {
2468
+ emit("direct-buy", props.productData);
2469
+ }
2470
+ function sendClickEvent() {
2471
+ return __async(this, null, function* () {
2472
+ const productData = props.productData;
2473
+ const data = yield props.productTarget.getCurrentPushingProduct();
2474
+ trackEvent({
2475
+ event_id: "product_click_button",
2476
+ event_type: "click",
2477
+ spec_attrs: {
2478
+ buyType: productData.productType === ProductType.Normal ? productData.buyType : "",
2479
+ deliveryType: productData.productType === ProductType.Normal ? productData.deliveryType : "",
2480
+ name: productData.name,
2481
+ productId: productData.productId,
2482
+ productType: productData.productType,
2483
+ productPushRule: data == null ? void 0 : data.pushRule
2484
+ }
2485
+ });
2486
+ props.productTarget.sendProductClickEvent({
2487
+ productId: productData.productId,
2488
+ name: productData.name,
2489
+ productType: productData.productType
2490
+ });
2491
+ });
2492
+ }
2493
+ return {
2494
+ isButtonDisabled,
2495
+ isWeixinButton,
2496
+ isPreviewMode,
2497
+ buttonText,
2498
+ weixinBtnRef,
2499
+ formatProductLink,
2500
+ onClickLinkBtn
2501
+ };
2502
+ };
2503
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2504
+ __name: "product-button",
2505
+ props: productButtonProps(),
2506
+ emits: productButtonEmits(),
2507
+ setup(__props, { emit }) {
2508
+ const props = __props;
2509
+ const {
2510
+ isButtonDisabled,
2511
+ buttonText,
2512
+ isWeixinButton,
2513
+ isPreviewMode,
2514
+ weixinBtnRef,
2515
+ onClickLinkBtn
2516
+ } = useProductButton({ props, emit });
2517
+ return { __sfc: true, props, emit, isButtonDisabled, buttonText, isWeixinButton, isPreviewMode, weixinBtnRef, onClickLinkBtn };
2518
+ }
2519
+ });
2520
+ var _sfc_render$1 = function render5() {
2521
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
2522
+ return _c("div", { staticClass: "plv-product-button", class: {
2523
+ "is-disabled": _setup.isButtonDisabled
2524
+ } }, [_c("div", { staticClass: "plv-product-button__render" }, [_vm._t("default", null, { "buttonText": _setup.buttonText, "disabled": _setup.isButtonDisabled })], 2), !_setup.isButtonDisabled && !_setup.isPreviewMode ? [_setup.isWeixinButton ? _c("div", { key: "weixin-btn", ref: "weixinBtnRef", staticClass: "plv-product-button__inner plv-product-button__inner--wx" }) : _c("div", { key: "link-btn", staticClass: "plv-product-button__inner plv-product-button__inner--link", on: { "click": function($event) {
2525
+ $event.stopPropagation();
2526
+ return _setup.onClickLinkBtn.apply(null, arguments);
2527
+ } } })] : _vm._e()], 2);
2528
+ };
2529
+ var _sfc_staticRenderFns$1 = [];
2530
+ var __component__$1 = /* @__PURE__ */ normalizeComponent(
2531
+ _sfc_main$1,
2532
+ _sfc_render$1,
2533
+ _sfc_staticRenderFns$1
2534
+ );
2535
+ const ProductButton = __component__$1.exports;
2536
+ var popperManager;
2537
+ var hasRequiredPopperManager;
2538
+ function requirePopperManager() {
2539
+ if (hasRequiredPopperManager) return popperManager;
2540
+ hasRequiredPopperManager = 1;
2541
+ popperManager = function(e) {
2542
+ var n2 = {};
2543
+ function t2(r2) {
2544
+ if (n2[r2]) return n2[r2].exports;
2545
+ var o2 = n2[r2] = { i: r2, l: false, exports: {} };
2546
+ return e[r2].call(o2.exports, o2, o2.exports, t2), o2.l = true, o2.exports;
2547
+ }
2548
+ return t2.m = e, t2.c = n2, t2.d = function(e2, n3, r2) {
2549
+ t2.o(e2, n3) || Object.defineProperty(e2, n3, { enumerable: true, get: r2 });
2550
+ }, t2.r = function(e2) {
2551
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e2, "__esModule", { value: true });
2552
+ }, t2.t = function(e2, n3) {
2553
+ if (1 & n3 && (e2 = t2(e2)), 8 & n3) return e2;
2554
+ if (4 & n3 && "object" == typeof e2 && e2 && e2.__esModule) return e2;
2555
+ var r2 = /* @__PURE__ */ Object.create(null);
2556
+ if (t2.r(r2), Object.defineProperty(r2, "default", { enumerable: true, value: e2 }), 2 & n3 && "string" != typeof e2) for (var o2 in e2) t2.d(r2, o2, function(n4) {
2557
+ return e2[n4];
2558
+ }.bind(null, o2));
2559
+ return r2;
2560
+ }, t2.n = function(e2) {
2561
+ var n3 = e2 && e2.__esModule ? function() {
2562
+ return e2.default;
2563
+ } : function() {
2564
+ return e2;
2565
+ };
2566
+ return t2.d(n3, "a", n3), n3;
2567
+ }, t2.o = function(e2, n3) {
2568
+ return Object.prototype.hasOwnProperty.call(e2, n3);
2569
+ }, t2.p = "", t2(t2.s = 14);
2570
+ }({ 14: function(e, n2, t2) {
2571
+ t2.r(n2);
2572
+ t2(41);
2573
+ var r2 = "@@polyvAdminUIzIndex", o2 = { ctx: r2, openPopper: function(e2) {
2574
+ o2.zIndex++, e2.style.zIndex = o2.zIndex;
2575
+ }, install: function(e2) {
2576
+ var n3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, t3 = n3.defaultZIndex, o3 = void 0 === t3 ? 3e3 : t3;
2577
+ window[r2] = o3;
2578
+ } };
2579
+ Object.defineProperty(o2, "zIndex", { configurable: true, get: function() {
2580
+ return window[r2] || (window[r2] = 3e3), window[r2];
2581
+ }, set: function(e2) {
2582
+ window[r2] = e2;
2583
+ } }), n2.default = o2;
2584
+ }, 41: function(e, n2, t2) {
2585
+ } }).default;
2586
+ return popperManager;
2587
+ }
2588
+ var popperManagerExports = requirePopperManager();
2589
+ const PlvPopperManager = /* @__PURE__ */ getDefaultExportFromCjs(popperManagerExports);
2590
+ var radio;
2591
+ var hasRequiredRadio;
2592
+ function requireRadio() {
2593
+ if (hasRequiredRadio) return radio;
2594
+ hasRequiredRadio = 1;
2595
+ radio = function(t2) {
2596
+ var e = {};
2597
+ function r2(n2) {
2598
+ if (e[n2]) return e[n2].exports;
2599
+ var o2 = e[n2] = { i: n2, l: false, exports: {} };
2600
+ return t2[n2].call(o2.exports, o2, o2.exports, r2), o2.l = true, o2.exports;
2601
+ }
2602
+ return r2.m = t2, r2.c = e, r2.d = function(t3, e2, n2) {
2603
+ r2.o(t3, e2) || Object.defineProperty(t3, e2, { enumerable: true, get: n2 });
2604
+ }, r2.r = function(t3) {
2605
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t3, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t3, "__esModule", { value: true });
2606
+ }, r2.t = function(t3, e2) {
2607
+ if (1 & e2 && (t3 = r2(t3)), 8 & e2) return t3;
2608
+ if (4 & e2 && "object" == typeof t3 && t3 && t3.__esModule) return t3;
2609
+ var n2 = /* @__PURE__ */ Object.create(null);
2610
+ if (r2.r(n2), Object.defineProperty(n2, "default", { enumerable: true, value: t3 }), 2 & e2 && "string" != typeof t3) for (var o2 in t3) r2.d(n2, o2, function(e3) {
2611
+ return t3[e3];
2612
+ }.bind(null, o2));
2613
+ return n2;
2614
+ }, r2.n = function(t3) {
2615
+ var e2 = t3 && t3.__esModule ? function() {
2616
+ return t3.default;
2617
+ } : function() {
2618
+ return t3;
2619
+ };
2620
+ return r2.d(e2, "a", e2), e2;
2621
+ }, r2.o = function(t3, e2) {
2622
+ return Object.prototype.hasOwnProperty.call(t3, e2);
2623
+ }, r2.p = "", r2(r2.s = 298);
2624
+ }({ 0: function(t2, e, r2) {
2625
+ function n2(t3, e2, r3, n3, o2, i2, a2, s2) {
2626
+ var u2, c2 = "function" == typeof t3 ? t3.options : t3;
2627
+ if (e2 && (c2.render = e2, c2.staticRenderFns = r3, c2._compiled = true), n3 && (c2.functional = true), i2 && (c2._scopeId = "data-v-" + i2), a2 ? (u2 = function(t4) {
2628
+ (t4 = t4 || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (t4 = __VUE_SSR_CONTEXT__), o2 && o2.call(this, t4), t4 && t4._registeredComponents && t4._registeredComponents.add(a2);
2629
+ }, c2._ssrRegister = u2) : o2 && (u2 = s2 ? function() {
2630
+ o2.call(this, this.$root.$options.shadowRoot);
2631
+ } : o2), u2) if (c2.functional) {
2632
+ c2._injectStyles = u2;
2633
+ var l2 = c2.render;
2634
+ c2.render = function(t4, e3) {
2635
+ return u2.call(e3), l2(t4, e3);
2636
+ };
2637
+ } else {
2638
+ var f2 = c2.beforeCreate;
2639
+ c2.beforeCreate = f2 ? [].concat(f2, u2) : [u2];
2640
+ }
2641
+ return { exports: t3, options: c2 };
2642
+ }
2643
+ r2.d(e, "a", function() {
2644
+ return n2;
2645
+ });
2646
+ }, 115: function(t2, e, r2) {
2647
+ var n2 = { name: "plv-radio", mixins: [r2(15).a], inject: { radioGroup: { default: "" } }, props: { checked: { type: Boolean, default: false }, value: [String, Number, Boolean], label: String, trueLabel: String, falseLabel: String, type: { type: String, default: "", validator: function(t3) {
2648
+ return -1 !== ["", "border"].indexOf(t3);
2649
+ } }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, corner: { type: Boolean, default: false } }, model: { prop: "checked", event: "change" }, computed: { inGroup: function() {
2650
+ return !!this.radioGroup;
2651
+ }, isChecked: function() {
2652
+ return this.inGroup ? this.radioGroup.value === this.value : this.checked;
2653
+ }, isDisabled: function() {
2654
+ return this.disabled || this.inGroup && this.radioGroup.disabled;
2655
+ }, isReadonly: function() {
2656
+ return this.readonly || this.radioGroup.readonly;
2657
+ }, radioLabel: function() {
2658
+ return this.isChecked ? this.trueLabel || this.label : this.falseLabel || this.label;
2659
+ }, radioType: function() {
2660
+ return this.type || this.radioGroup.type;
2661
+ }, isHasSlot: function() {
2662
+ return this.$slots.default || this.$slots.trueLabel || this.$slots.falseLabel;
2663
+ } }, methods: { emitChange: function(t3) {
2664
+ this.$emit("change", t3);
2665
+ }, handleClick: function() {
2666
+ this.isDisabled || this.isReadonly || (this.inGroup ? this.radioGroup.radioClick(this.value) : this.checked || this.emitChange(true), this.blurToValidateItem());
2667
+ } } }, o2 = (r2(354), r2(355), r2(0)), i2 = Object(o2.a)(n2, function() {
2668
+ var t3 = this, e2 = t3.$createElement, r3 = t3._self._c || e2;
2669
+ return r3("label", { staticClass: "plv-radio", class: { "plv-radio--checked": t3.isChecked, "plv-radio--disabled": t3.isDisabled, "plv-radio--readonly": t3.isReadonly, "plv-radio--border": "border" === t3.radioType }, on: { click: t3.handleClick } }, ["border" !== t3.radioType ? r3("span", { staticClass: "plv-radio__inner", class: { "plv-radio__inner--checked": t3.isChecked } }) : t3._e(), t3._v(" "), t3.radioLabel || t3.isHasSlot ? r3("span", { staticClass: "plv-radio__label" }, [t3.isChecked ? [t3.$slots.trueLabel ? [t3._t("trueLabel", [t3._v(t3._s(t3.trueLabel))])] : [t3._t("default", [t3._v(t3._s(t3.radioLabel))])]] : [t3.$slots.falseLabel ? [t3._t("falseLabel", [t3._v(t3._s(t3.falseLabel))])] : [t3._t("default", [t3._v(t3._s(t3.radioLabel))])]]], 2) : t3._e(), t3._v(" "), "border" === t3.type && t3.isChecked && t3.corner ? r3("div", { staticClass: "plv-radio__corner" }) : t3._e()]);
2670
+ }, [], false, null, null, null);
2671
+ e.a = i2.exports;
2672
+ }, 147: function(t2, e, r2) {
2673
+ }, 148: function(t2, e, r2) {
2674
+ }, 15: function(t2, e, r2) {
2675
+ r2.d(e, "a", function() {
2676
+ return i2;
2677
+ });
2678
+ var n2 = r2(2), o2 = r2.n(n2), i2 = { inject: { formItem: { default: void 0 } }, computed: { formItemIsError: function() {
2679
+ return !!this.formItem && this.formItem.formItemIsError;
2680
+ } }, watch: { showPopper: function() {
2681
+ this.showPopper ? this.focusToRemoveError() : this.blurToValidateItem();
2682
+ } }, methods: { validateCurrentFormItem: function() {
2683
+ if (this.formItem) return this.formItem.validate();
2684
+ }, blurToValidateItem: function() {
2685
+ return o2.a.async(function(t3) {
2686
+ for (; ; ) switch (t3.prev = t3.next) {
2687
+ case 0:
2688
+ return t3.prev = 0, t3.next = 3, o2.a.awrap(this.validateCurrentFormItem());
2689
+ case 3:
2690
+ t3.next = 8;
2691
+ break;
2692
+ case 5:
2693
+ t3.prev = 5, t3.t0 = t3.catch(0), console.error("blur-validate", t3.t0.message);
2694
+ case 8:
2695
+ case "end":
2696
+ return t3.stop();
2697
+ }
2698
+ }, null, this, [[0, 5]]);
2699
+ }, focusToRemoveError: function() {
2700
+ this.formItem && this.formItem.removeErrorMessage();
2701
+ } } };
2702
+ }, 2: function(t2, e, r2) {
2703
+ t2.exports = r2(24);
2704
+ }, 24: function(t2, e, r2) {
2705
+ var n2 = function(t3) {
2706
+ var e2, r3 = Object.prototype, n3 = r3.hasOwnProperty, o2 = "function" == typeof Symbol ? Symbol : {}, i2 = o2.iterator || "@@iterator", a2 = o2.asyncIterator || "@@asyncIterator", s2 = o2.toStringTag || "@@toStringTag";
2707
+ function u2(t4, e3, r4) {
2708
+ return Object.defineProperty(t4, e3, { value: r4, enumerable: true, configurable: true, writable: true }), t4[e3];
2709
+ }
2710
+ try {
2711
+ u2({}, "");
2712
+ } catch (t4) {
2713
+ u2 = function(t5, e3, r4) {
2714
+ return t5[e3] = r4;
2715
+ };
2716
+ }
2717
+ function c2(t4, e3, r4, n4) {
2718
+ var o3 = e3 && e3.prototype instanceof y2 ? e3 : y2, i3 = Object.create(o3.prototype), a3 = new O2(n4 || []);
2719
+ return i3._invoke = /* @__PURE__ */ function(t5, e4, r5) {
2720
+ var n5 = f2;
2721
+ return function(o4, i4) {
2722
+ if (n5 === d2) throw new Error("Generator is already running");
2723
+ if (n5 === p2) {
2724
+ if ("throw" === o4) throw i4;
2725
+ return T2();
2726
+ }
2727
+ for (r5.method = o4, r5.arg = i4; ; ) {
2728
+ var a4 = r5.delegate;
2729
+ if (a4) {
2730
+ var s3 = k2(a4, r5);
2731
+ if (s3) {
2732
+ if (s3 === v2) continue;
2733
+ return s3;
2734
+ }
2735
+ }
2736
+ if ("next" === r5.method) r5.sent = r5._sent = r5.arg;
2737
+ else if ("throw" === r5.method) {
2738
+ if (n5 === f2) throw n5 = p2, r5.arg;
2739
+ r5.dispatchException(r5.arg);
2740
+ } else "return" === r5.method && r5.abrupt("return", r5.arg);
2741
+ n5 = d2;
2742
+ var u3 = l2(t5, e4, r5);
2743
+ if ("normal" === u3.type) {
2744
+ if (n5 = r5.done ? p2 : h2, u3.arg === v2) continue;
2745
+ return { value: u3.arg, done: r5.done };
2746
+ }
2747
+ "throw" === u3.type && (n5 = p2, r5.method = "throw", r5.arg = u3.arg);
2748
+ }
2749
+ };
2750
+ }(t4, r4, a3), i3;
2751
+ }
2752
+ function l2(t4, e3, r4) {
2753
+ try {
2754
+ return { type: "normal", arg: t4.call(e3, r4) };
2755
+ } catch (t5) {
2756
+ return { type: "throw", arg: t5 };
2757
+ }
2758
+ }
2759
+ t3.wrap = c2;
2760
+ var f2 = "suspendedStart", h2 = "suspendedYield", d2 = "executing", p2 = "completed", v2 = {};
2761
+ function y2() {
2762
+ }
2763
+ function m2() {
2764
+ }
2765
+ function g2() {
2766
+ }
2767
+ var b2 = {};
2768
+ u2(b2, i2, function() {
2769
+ return this;
2770
+ });
2771
+ var _2 = Object.getPrototypeOf, w2 = _2 && _2(_2(S2([])));
2772
+ w2 && w2 !== r3 && n3.call(w2, i2) && (b2 = w2);
2773
+ var L2 = g2.prototype = y2.prototype = Object.create(b2);
2774
+ function x2(t4) {
2775
+ ["next", "throw", "return"].forEach(function(e3) {
2776
+ u2(t4, e3, function(t5) {
2777
+ return this._invoke(e3, t5);
2778
+ });
2779
+ });
2780
+ }
2781
+ function E2(t4, e3) {
2782
+ var r4;
2783
+ this._invoke = function(o3, i3) {
2784
+ function a3() {
2785
+ return new e3(function(r5, a4) {
2786
+ !function r6(o4, i4, a5, s3) {
2787
+ var u3 = l2(t4[o4], t4, i4);
2788
+ if ("throw" !== u3.type) {
2789
+ var c3 = u3.arg, f3 = c3.value;
2790
+ return f3 && "object" == typeof f3 && n3.call(f3, "__await") ? e3.resolve(f3.__await).then(function(t5) {
2791
+ r6("next", t5, a5, s3);
2792
+ }, function(t5) {
2793
+ r6("throw", t5, a5, s3);
2794
+ }) : e3.resolve(f3).then(function(t5) {
2795
+ c3.value = t5, a5(c3);
2796
+ }, function(t5) {
2797
+ return r6("throw", t5, a5, s3);
2798
+ });
2799
+ }
2800
+ s3(u3.arg);
2801
+ }(o3, i3, r5, a4);
2802
+ });
2803
+ }
2804
+ return r4 = r4 ? r4.then(a3, a3) : a3();
2805
+ };
2806
+ }
2807
+ function k2(t4, r4) {
2808
+ var n4 = t4.iterator[r4.method];
2809
+ if (n4 === e2) {
2810
+ if (r4.delegate = null, "throw" === r4.method) {
2811
+ if (t4.iterator.return && (r4.method = "return", r4.arg = e2, k2(t4, r4), "throw" === r4.method)) return v2;
2812
+ r4.method = "throw", r4.arg = new TypeError("The iterator does not provide a 'throw' method");
2813
+ }
2814
+ return v2;
2815
+ }
2816
+ var o3 = l2(n4, t4.iterator, r4.arg);
2817
+ if ("throw" === o3.type) return r4.method = "throw", r4.arg = o3.arg, r4.delegate = null, v2;
2818
+ var i3 = o3.arg;
2819
+ return i3 ? i3.done ? (r4[t4.resultName] = i3.value, r4.next = t4.nextLoc, "return" !== r4.method && (r4.method = "next", r4.arg = e2), r4.delegate = null, v2) : i3 : (r4.method = "throw", r4.arg = new TypeError("iterator result is not an object"), r4.delegate = null, v2);
2820
+ }
2821
+ function C(t4) {
2822
+ var e3 = { tryLoc: t4[0] };
2823
+ 1 in t4 && (e3.catchLoc = t4[1]), 2 in t4 && (e3.finallyLoc = t4[2], e3.afterLoc = t4[3]), this.tryEntries.push(e3);
2824
+ }
2825
+ function j2(t4) {
2826
+ var e3 = t4.completion || {};
2827
+ e3.type = "normal", delete e3.arg, t4.completion = e3;
2828
+ }
2829
+ function O2(t4) {
2830
+ this.tryEntries = [{ tryLoc: "root" }], t4.forEach(C, this), this.reset(true);
2831
+ }
2832
+ function S2(t4) {
2833
+ if (t4) {
2834
+ var r4 = t4[i2];
2835
+ if (r4) return r4.call(t4);
2836
+ if ("function" == typeof t4.next) return t4;
2837
+ if (!isNaN(t4.length)) {
2838
+ var o3 = -1, a3 = function r5() {
2839
+ for (; ++o3 < t4.length; ) if (n3.call(t4, o3)) return r5.value = t4[o3], r5.done = false, r5;
2840
+ return r5.value = e2, r5.done = true, r5;
2841
+ };
2842
+ return a3.next = a3;
2843
+ }
2844
+ }
2845
+ return { next: T2 };
2846
+ }
2847
+ function T2() {
2848
+ return { value: e2, done: true };
2849
+ }
2850
+ return m2.prototype = g2, u2(L2, "constructor", g2), u2(g2, "constructor", m2), m2.displayName = u2(g2, s2, "GeneratorFunction"), t3.isGeneratorFunction = function(t4) {
2851
+ var e3 = "function" == typeof t4 && t4.constructor;
2852
+ return !!e3 && (e3 === m2 || "GeneratorFunction" === (e3.displayName || e3.name));
2853
+ }, t3.mark = function(t4) {
2854
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t4, g2) : (t4.__proto__ = g2, u2(t4, s2, "GeneratorFunction")), t4.prototype = Object.create(L2), t4;
2855
+ }, t3.awrap = function(t4) {
2856
+ return { __await: t4 };
2857
+ }, x2(E2.prototype), u2(E2.prototype, a2, function() {
2858
+ return this;
2859
+ }), t3.AsyncIterator = E2, t3.async = function(e3, r4, n4, o3, i3) {
2860
+ void 0 === i3 && (i3 = Promise);
2861
+ var a3 = new E2(c2(e3, r4, n4, o3), i3);
2862
+ return t3.isGeneratorFunction(r4) ? a3 : a3.next().then(function(t4) {
2863
+ return t4.done ? t4.value : a3.next();
2864
+ });
2865
+ }, x2(L2), u2(L2, s2, "Generator"), u2(L2, i2, function() {
2866
+ return this;
2867
+ }), u2(L2, "toString", function() {
2868
+ return "[object Generator]";
2869
+ }), t3.keys = function(t4) {
2870
+ var e3 = [];
2871
+ for (var r4 in t4) e3.push(r4);
2872
+ return e3.reverse(), function r5() {
2873
+ for (; e3.length; ) {
2874
+ var n4 = e3.pop();
2875
+ if (n4 in t4) return r5.value = n4, r5.done = false, r5;
2876
+ }
2877
+ return r5.done = true, r5;
2878
+ };
2879
+ }, t3.values = S2, O2.prototype = { constructor: O2, reset: function(t4) {
2880
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = e2, this.done = false, this.delegate = null, this.method = "next", this.arg = e2, this.tryEntries.forEach(j2), !t4) for (var r4 in this) "t" === r4.charAt(0) && n3.call(this, r4) && !isNaN(+r4.slice(1)) && (this[r4] = e2);
2881
+ }, stop: function() {
2882
+ this.done = true;
2883
+ var t4 = this.tryEntries[0].completion;
2884
+ if ("throw" === t4.type) throw t4.arg;
2885
+ return this.rval;
2886
+ }, dispatchException: function(t4) {
2887
+ if (this.done) throw t4;
2888
+ var r4 = this;
2889
+ function o3(n4, o4) {
2890
+ return s3.type = "throw", s3.arg = t4, r4.next = n4, o4 && (r4.method = "next", r4.arg = e2), !!o4;
2891
+ }
2892
+ for (var i3 = this.tryEntries.length - 1; i3 >= 0; --i3) {
2893
+ var a3 = this.tryEntries[i3], s3 = a3.completion;
2894
+ if ("root" === a3.tryLoc) return o3("end");
2895
+ if (a3.tryLoc <= this.prev) {
2896
+ var u3 = n3.call(a3, "catchLoc"), c3 = n3.call(a3, "finallyLoc");
2897
+ if (u3 && c3) {
2898
+ if (this.prev < a3.catchLoc) return o3(a3.catchLoc, true);
2899
+ if (this.prev < a3.finallyLoc) return o3(a3.finallyLoc);
2900
+ } else if (u3) {
2901
+ if (this.prev < a3.catchLoc) return o3(a3.catchLoc, true);
2902
+ } else {
2903
+ if (!c3) throw new Error("try statement without catch or finally");
2904
+ if (this.prev < a3.finallyLoc) return o3(a3.finallyLoc);
2905
+ }
2906
+ }
2907
+ }
2908
+ }, abrupt: function(t4, e3) {
2909
+ for (var r4 = this.tryEntries.length - 1; r4 >= 0; --r4) {
2910
+ var o3 = this.tryEntries[r4];
2911
+ if (o3.tryLoc <= this.prev && n3.call(o3, "finallyLoc") && this.prev < o3.finallyLoc) {
2912
+ var i3 = o3;
2913
+ break;
2914
+ }
2915
+ }
2916
+ i3 && ("break" === t4 || "continue" === t4) && i3.tryLoc <= e3 && e3 <= i3.finallyLoc && (i3 = null);
2917
+ var a3 = i3 ? i3.completion : {};
2918
+ return a3.type = t4, a3.arg = e3, i3 ? (this.method = "next", this.next = i3.finallyLoc, v2) : this.complete(a3);
2919
+ }, complete: function(t4, e3) {
2920
+ if ("throw" === t4.type) throw t4.arg;
2921
+ return "break" === t4.type || "continue" === t4.type ? this.next = t4.arg : "return" === t4.type ? (this.rval = this.arg = t4.arg, this.method = "return", this.next = "end") : "normal" === t4.type && e3 && (this.next = e3), v2;
2922
+ }, finish: function(t4) {
2923
+ for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
2924
+ var r4 = this.tryEntries[e3];
2925
+ if (r4.finallyLoc === t4) return this.complete(r4.completion, r4.afterLoc), j2(r4), v2;
2926
+ }
2927
+ }, catch: function(t4) {
2928
+ for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
2929
+ var r4 = this.tryEntries[e3];
2930
+ if (r4.tryLoc === t4) {
2931
+ var n4 = r4.completion;
2932
+ if ("throw" === n4.type) {
2933
+ var o3 = n4.arg;
2934
+ j2(r4);
2935
+ }
2936
+ return o3;
2937
+ }
2938
+ }
2939
+ throw new Error("illegal catch attempt");
2940
+ }, delegateYield: function(t4, r4, n4) {
2941
+ return this.delegate = { iterator: S2(t4), resultName: r4, nextLoc: n4 }, "next" === this.method && (this.arg = e2), v2;
2942
+ } }, t3;
2943
+ }(t2.exports);
2944
+ try {
2945
+ regeneratorRuntime = n2;
2946
+ } catch (t3) {
2947
+ "object" == typeof globalThis ? globalThis.regeneratorRuntime = n2 : Function("r", "regeneratorRuntime = r")(n2);
2948
+ }
2949
+ }, 298: function(t2, e, r2) {
2950
+ r2.r(e);
2951
+ var n2 = r2(115);
2952
+ n2.a.install = function(t3) {
2953
+ t3.component(n2.a.name, n2.a);
2954
+ }, e.default = n2.a;
2955
+ }, 354: function(t2, e, r2) {
2956
+ var n2 = r2(147);
2957
+ r2.n(n2).a;
2958
+ }, 355: function(t2, e, r2) {
2959
+ var n2 = r2(148);
2960
+ r2.n(n2).a;
2961
+ } }).default;
2962
+ return radio;
2963
+ }
2964
+ requireRadio();
2965
+ const useAppendTo = (elemRef, parentRef) => {
2966
+ function getBodyElement() {
2967
+ return document.body;
2968
+ }
2969
+ const appendToParent = computed(() => {
2970
+ let _parentRef = getBodyElement();
2971
+ if (unref(parentRef)) {
2972
+ _parentRef = unref(parentRef);
2973
+ }
2974
+ return _parentRef;
2975
+ });
2976
+ function setAppend() {
2977
+ const elem = unref(elemRef);
2978
+ const parentElem = unref(appendToParent);
2979
+ if (!elem || !parentElem) {
2980
+ return;
2981
+ }
2982
+ parentElem.appendChild(elem);
2983
+ }
2984
+ watch(
2985
+ () => [unref(elemRef), unref(appendToParent)],
2986
+ () => {
2987
+ setAppend();
2988
+ },
2989
+ {
2990
+ immediate: true
2991
+ }
2992
+ );
2993
+ onBeforeUnmount(() => {
2994
+ const elem = unref(elemRef);
2995
+ if (elem && elem.parentNode) {
2996
+ elem.parentNode.removeChild(elem);
2997
+ }
2998
+ });
2999
+ };
3000
+ const useScreenOrientHook = (params = {}) => {
3001
+ const { autoListen = true, autoListenCb = () => {
3002
+ } } = params;
3003
+ const { injectData } = useGlobalInject();
3004
+ const screenOrientationMode = ref(
3005
+ "Vertical"
3006
+ /* Vertical */
3007
+ );
3008
+ const pageFullscreen = computed(() => {
3009
+ var _a;
3010
+ return (_a = injectData.pageFullscreen) != null ? _a : false;
3011
+ });
3012
+ const isVerticalScreenOrientation = computed(() => {
3013
+ if (!isMobile) {
3014
+ return false;
3015
+ }
3016
+ return screenOrientationMode.value === "Vertical";
3017
+ });
3018
+ const isHorizontalScreenOrientation = computed(() => {
3019
+ if (!isMobile) {
3020
+ return false;
3021
+ }
3022
+ if (pageFullscreen.value) {
3023
+ return true;
3024
+ }
3025
+ return screenOrientationMode.value === "Horizontal";
3026
+ });
3027
+ function resetScreenOrientationModeByWindow() {
3028
+ if (window.innerWidth < window.innerHeight) {
3029
+ screenOrientationMode.value = "Vertical";
3030
+ }
3031
+ }
3032
+ function updateScreenOrientationModeManually() {
3033
+ if (window.orientation === 180 || window.orientation === 0) {
3034
+ screenOrientationMode.value = "Vertical";
3035
+ }
3036
+ if (window.orientation === 90 || window.orientation === -90) {
3037
+ screenOrientationMode.value = "Horizontal";
3038
+ }
3039
+ resetScreenOrientationModeByWindow();
3040
+ }
3041
+ function onOrientationChange() {
3042
+ setTimeout(() => {
3043
+ const mql = window.matchMedia("(orientation: portrait)");
3044
+ if (mql == null ? void 0 : mql.matches) {
3045
+ screenOrientationMode.value = "Vertical";
3046
+ } else {
3047
+ screenOrientationMode.value = "Horizontal";
3048
+ }
3049
+ resetScreenOrientationModeByWindow();
3050
+ autoListenCb(screenOrientationMode.value);
3051
+ }, 200);
3052
+ }
3053
+ function listenOrientationEvent() {
3054
+ window.addEventListener(
3055
+ "onorientationchange" in window ? "orientationchange" : "resize",
3056
+ onOrientationChange,
3057
+ false
3058
+ );
3059
+ }
3060
+ function unlistenOrientationEvent() {
3061
+ window.removeEventListener(
3062
+ "onorientationchange" in window ? "orientationchange" : "resize",
3063
+ onOrientationChange,
3064
+ false
3065
+ );
3066
+ }
3067
+ onMounted(() => {
3068
+ if (autoListen) {
3069
+ listenOrientationEvent();
3070
+ onOrientationChange();
3071
+ }
3072
+ });
3073
+ onBeforeUnmount(() => {
3074
+ unlistenOrientationEvent();
3075
+ });
3076
+ return {
3077
+ screenOrientationMode,
3078
+ isVerticalScreenOrientation,
3079
+ isHorizontalScreenOrientation,
3080
+ pageFullscreen,
3081
+ listenOrientationEvent,
3082
+ updateScreenOrientationModeManually
3083
+ };
3084
+ };
3085
+ const useFullscreenApi = () => {
3086
+ const apis = [
3087
+ {
3088
+ enabledField: "fullscreenEnabled",
3089
+ elementField: "fullscreenElement",
3090
+ requestApiField: "requestFullscreen",
3091
+ exitApiField: "exitFullscreen",
3092
+ fullscreenChangeEvent: "fullscreenchange"
3093
+ },
3094
+ // New WebKit
3095
+ {
3096
+ enabledField: "webkitFullscreenEnabled",
3097
+ elementField: "webkitFullscreenElement",
3098
+ requestApiField: "webkitRequestFullscreen",
3099
+ exitApiField: "webkitExitFullscreen",
3100
+ fullscreenChangeEvent: "webkitfullscreenchange"
3101
+ },
3102
+ // Old WebKit
3103
+ {
3104
+ enabledField: "webkitCancelFullScreen",
3105
+ elementField: "webkitCurrentFullScreenElement",
3106
+ requestApiField: "webkitRequestFullScreen",
3107
+ exitApiField: "webkitCancelFullScreen",
3108
+ fullscreenChangeEvent: "webkitfullscreenchange"
3109
+ },
3110
+ {
3111
+ enabledField: "mozFullScreenEnabled",
3112
+ elementField: "mozFullScreenElement",
3113
+ requestApiField: "mozRequestFullScreen",
3114
+ exitApiField: "mozCancelFullScreen",
3115
+ fullscreenChangeEvent: "mozfullscreenchange"
3116
+ },
3117
+ {
3118
+ enabledField: "msFullscreenEnabled",
3119
+ elementField: "msFullscreenElement",
3120
+ requestApiField: "msRequestFullscreen",
3121
+ exitApiField: "msExitFullscreen",
3122
+ fullscreenChangeEvent: "MSFullscreenChange"
3123
+ }
3124
+ ];
3125
+ let fieldData;
3126
+ for (let i2 = 0; i2 < apis.length; i2++) {
3127
+ const item = apis[i2];
3128
+ if (item.enabledField in document) {
3129
+ fieldData = item;
3130
+ break;
3131
+ }
3132
+ }
3133
+ return {
3134
+ fieldData
3135
+ };
3136
+ };
3137
+ const useFullscreen = (elementRef = document.documentElement) => {
3138
+ const { fieldData } = useFullscreenApi();
3139
+ const isFullscreen = ref(false);
3140
+ const fullscreenElement = ref(null);
3141
+ const supportFullscreen = computed(() => !!fieldData);
3142
+ const getFullscreenTargetElement = () => {
3143
+ if (typeof elementRef === "function") {
3144
+ const res = elementRef();
3145
+ return unref(res) || document.documentElement;
3146
+ }
3147
+ return unref(elementRef) || document.documentElement;
3148
+ };
3149
+ function requestFullscreen() {
3150
+ const element = getFullscreenTargetElement();
3151
+ if (!fieldData || !element[fieldData.requestApiField]) {
3152
+ return;
3153
+ }
3154
+ element[fieldData.requestApiField]();
3155
+ }
3156
+ function exitFullscreen() {
3157
+ if (!fieldData) {
3158
+ return;
3159
+ }
3160
+ document[fieldData.exitApiField]();
3161
+ }
3162
+ function toggleFullscreen() {
3163
+ if (!fieldData) {
3164
+ return;
3165
+ }
3166
+ if (!document[fieldData.elementField]) {
3167
+ requestFullscreen();
3168
+ } else {
3169
+ exitFullscreen();
3170
+ }
3171
+ }
3172
+ function onFullscreenChange() {
3173
+ if (!fieldData) {
3174
+ return;
3175
+ }
3176
+ if (document[fieldData.elementField]) {
3177
+ isFullscreen.value = true;
3178
+ } else {
3179
+ isFullscreen.value = false;
3180
+ }
3181
+ fullscreenElement.value = document[fieldData.elementField];
3182
+ }
3183
+ onMounted(() => {
3184
+ if (fieldData) {
3185
+ document.addEventListener(fieldData.fullscreenChangeEvent, onFullscreenChange);
3186
+ if (document[fieldData.elementField]) {
3187
+ onFullscreenChange();
3188
+ }
3189
+ }
3190
+ });
3191
+ onBeforeUnmount(() => {
3192
+ if (!fieldData) {
3193
+ return;
3194
+ }
3195
+ document.removeEventListener(fieldData.fullscreenChangeEvent, onFullscreenChange);
3196
+ });
3197
+ return {
3198
+ isFullscreen,
3199
+ supportFullscreen,
3200
+ requestFullscreen,
3201
+ exitFullscreen,
3202
+ toggleFullscreen
3203
+ };
3204
+ };
3205
+ const popupPositionList = ["bottom", "left", "right", "center"];
3206
+ const COMMON_POPUP_PROVIDE_KEY = Symbol("plv-product-common-popup");
3207
+ const useCommonPopupInject = () => {
3208
+ const injectData = inject(COMMON_POPUP_PROVIDE_KEY, {});
3209
+ return injectData;
3210
+ };
3211
+ const useDynamicHeight = (options) => {
3212
+ const { initHeightRatio = 0.7, maxHeightRatio = 0.85 } = options || {};
3213
+ const prevScrollTop = ref(0);
3214
+ const dynamicHeightIncrementRatio = ref(0);
3215
+ const rafId = ref(null);
3216
+ const dynamicContentHeightPercent = computed(() => {
3217
+ return Math.min(initHeightRatio + dynamicHeightIncrementRatio.value, maxHeightRatio);
3218
+ });
3219
+ const isReachMaxHeight = computed(() => {
3220
+ return dynamicHeightIncrementRatio.value + initHeightRatio >= maxHeightRatio;
3221
+ });
3222
+ function handleScroll(event) {
3223
+ if (rafId.value !== null) return;
3224
+ rafId.value = requestAnimationFrame(() => {
3225
+ const target = event.target;
3226
+ const scrollTop = target.scrollTop;
3227
+ const scrollHeight = target.scrollHeight;
3228
+ const clientHeight = target.clientHeight;
3229
+ if (!isReachMaxHeight.value && scrollTop > prevScrollTop.value) {
3230
+ dynamicHeightIncrementRatio.value += (scrollTop - prevScrollTop.value) / (scrollHeight - clientHeight);
3231
+ prevScrollTop.value = scrollTop;
3232
+ }
3233
+ rafId.value = null;
3234
+ });
3235
+ }
3236
+ function reset() {
3237
+ dynamicHeightIncrementRatio.value = 0;
3238
+ prevScrollTop.value = 0;
3239
+ if (rafId.value !== null) {
3240
+ cancelAnimationFrame(rafId.value);
3241
+ rafId.value = null;
3242
+ }
3243
+ }
3244
+ return {
3245
+ dynamicContentHeightPercent,
3246
+ handleScroll,
3247
+ reset
3248
+ };
3249
+ };
3250
+ /* @__PURE__ */ defineComponent({
3251
+ __name: "index",
3252
+ props: {
3253
+ value: PropUtils.bool.def(false),
3254
+ /** 标题 */
3255
+ title: PropUtils.string.def(""),
3256
+ /** 背景模式 */
3257
+ backgroundMode: PropUtils.oneOf(["bg1"]),
3258
+ /** 背景 */
3259
+ background: PropUtils.string,
3260
+ /** 显示关闭 */
3261
+ closeable: PropUtils.bool.def(true),
3262
+ /** 填充 */
3263
+ fillBody: PropUtils.bool.def(false),
3264
+ /** 是否显示返回按钮 */
3265
+ backable: PropUtils.bool.def(false),
3266
+ /** 头部高度 */
3267
+ headerHeight: PropUtils.string.def("52px"),
3268
+ /** 使用页面高度百分比,0 ~ 1,当 enableDynamicHeight 为 true 时,该配置无效 */
3269
+ contentHeightPercent: PropUtils.oneOfType([Boolean, Number]).def(0.7),
3270
+ /** 是否显示头部 */
3271
+ showHeader: PropUtils.bool.def(true),
3272
+ /** 打开事件 */
3273
+ openEvent: PropUtils.looseString,
3274
+ /** 位置 */
3275
+ position: PropUtils.oneOf(popupPositionList),
3276
+ /** 在屏幕横屏时,强制使用的位置 */
3277
+ horizontalScreenPosition: PropUtils.oneOf(popupPositionList).def("right"),
3278
+ /** 在屏幕横屏时,弹层 className */
3279
+ horizontalScreenClassName: PropUtils.string,
3280
+ /** 宽度 */
3281
+ width: PropUtils.looseString,
3282
+ /** 插入到的节点 */
3283
+ appendTo: PropUtils.looseElement,
3284
+ /** 是否显示遮罩层 */
3285
+ showModal: PropUtils.looseBool,
3286
+ /** 配置 */
3287
+ popupConfig: PropUtils.object(),
3288
+ /** 是否显示滚动条 */
3289
+ showScrollbar: PropUtils.bool.def(true),
3290
+ /** 点击遮罩是否关闭 */
3291
+ closeOnMask: PropUtils.bool.def(true),
3292
+ /** 自定义关闭弹层 */
3293
+ customClose: PropUtils.func(),
3294
+ /** 自定义返回 */
3295
+ customBack: PropUtils.func(),
3296
+ /** 开启后,滑动内容区域,弹层高度会逐渐增大 */
3297
+ enableDynamicHeight: PropUtils.bool.def(false),
3298
+ /** 动态高度配置 */
3299
+ dynamicHeightOptions: PropUtils.object()
3300
+ },
3301
+ emits: {
3302
+ input: emitFunc(),
3303
+ "after-leave": emitFunc()
3304
+ },
3305
+ setup(__props, { expose, emit }) {
3306
+ const props = __props;
3307
+ const { injectData: globalInjectData } = useGlobalInject();
3308
+ const popupInjectData = useCommonPopupInject();
3309
+ const { isHorizontalScreenOrientation, pageFullscreen } = useScreenOrientHook();
3310
+ const { isFullscreen } = useFullscreen();
3311
+ const { dynamicContentHeightPercent, handleScroll, reset: resetContentHeight } = useDynamicHeight(props.dynamicHeightOptions);
3312
+ function getOriginAppendTo() {
3313
+ var _a, _b, _c, _d;
3314
+ return (_d = (_b = props.appendTo) != null ? _b : (_a = props.popupConfig) == null ? void 0 : _a.appendTo) != null ? _d : (_c = unref(popupInjectData.popupConfig)) == null ? void 0 : _c.appendTo;
3315
+ }
3316
+ const popupAppendTo = computed(() => {
3317
+ let appendToElem = getOriginAppendTo();
3318
+ if (isFullscreen.value && unref(globalInjectData.fullscreenElement)) {
3319
+ let fullscreenElement = unref(globalInjectData.fullscreenElement);
3320
+ if (typeof fullscreenElement === "string") {
3321
+ fullscreenElement = document.querySelector(fullscreenElement) || void 0;
3322
+ } else {
3323
+ fullscreenElement = fullscreenElement;
3324
+ }
3325
+ if (fullscreenElement) {
3326
+ appendToElem = fullscreenElement;
3327
+ }
3328
+ }
3329
+ return appendToElem;
3330
+ });
3331
+ const popupShowModal = computed(() => {
3332
+ var _a, _b, _c, _d, _e;
3333
+ return (_e = (_d = (_b = props.showModal) != null ? _b : (_a = props.popupConfig) == null ? void 0 : _a.showModal) != null ? _d : (_c = unref(popupInjectData.popupConfig)) == null ? void 0 : _c.showModal) != null ? _e : true;
3334
+ });
3335
+ function getOriginPosition() {
3336
+ var _a, _b;
3337
+ let originPosition = props.position || ((_a = props.popupConfig) == null ? void 0 : _a.position) || ((_b = unref(popupInjectData.popupConfig)) == null ? void 0 : _b.position);
3338
+ if (originPosition) {
3339
+ return originPosition;
3340
+ }
3341
+ if (isMobile) {
3342
+ originPosition = "bottom";
3343
+ } else {
3344
+ originPosition = "center";
3345
+ }
3346
+ return originPosition;
3347
+ }
3348
+ const popupPosition = computed(() => {
3349
+ let originPosition = getOriginPosition();
3350
+ if (originPosition === "bottom" && isHorizontalScreenOrientation.value) {
3351
+ originPosition = props.horizontalScreenPosition;
3352
+ }
3353
+ return originPosition;
3354
+ });
3355
+ const wrapClass = computed(() => {
3356
+ const cls = [];
3357
+ if (props.fillBody) {
3358
+ cls.push("plv-product-common-popup--fill-body");
3359
+ }
3360
+ if (popupPosition.value) {
3361
+ cls.push(`plv-product-common-popup--position-${popupPosition.value}`);
3362
+ }
3363
+ if (isMobile) {
3364
+ cls.push("plv-product-common-popup--mobile");
3365
+ }
3366
+ if (!popupShowModal.value) {
3367
+ cls.push("plv-product-common-popup--hide-modal");
3368
+ }
3369
+ if (!props.showScrollbar) {
3370
+ cls.push("plv-product-common-popup--hide-scrollbar");
3371
+ }
3372
+ if (isHorizontalScreenOrientation.value) {
3373
+ cls.push("plv-product-common-popup--horizontal-screen");
3374
+ if (props.horizontalScreenClassName) {
3375
+ cls.push(props.horizontalScreenClassName);
3376
+ }
3377
+ }
3378
+ if (pageFullscreen.value) {
3379
+ cls.push("plv-product-common-popup--page-fullscreen");
3380
+ }
3381
+ return cls;
3382
+ });
3383
+ const wrapStyle = computed(() => {
3384
+ const styles = {};
3385
+ if (popupAppendTo.value && popupAppendTo.value !== document.body) {
3386
+ styles.position = "absolute";
3387
+ }
3388
+ return styles;
3389
+ });
3390
+ const headerStyle = computed(() => {
3391
+ const styles = {};
3392
+ if (props.headerHeight) {
3393
+ styles.height = props.headerHeight;
3394
+ }
3395
+ return styles;
3396
+ });
3397
+ const bodyWidth = computed(() => {
3398
+ var _a, _b;
3399
+ let width = props.width || ((_a = props.popupConfig) == null ? void 0 : _a.width) || ((_b = unref(popupInjectData.popupConfig)) == null ? void 0 : _b.width);
3400
+ if (width) {
3401
+ return width;
3402
+ }
3403
+ width = "100%";
3404
+ switch (popupPosition.value) {
3405
+ case "bottom":
3406
+ width = "100%";
3407
+ break;
3408
+ case "left":
3409
+ width = "375px";
3410
+ break;
3411
+ case "right":
3412
+ width = "375px";
3413
+ break;
3414
+ case "center":
3415
+ width = "375px";
3416
+ break;
3417
+ }
3418
+ return width;
3419
+ });
3420
+ const bodyHeight = computed(() => {
3421
+ if (props.fillBody) {
3422
+ return "90%";
3423
+ }
3424
+ if (props.enableDynamicHeight) {
3425
+ return document.documentElement.clientHeight * dynamicContentHeightPercent.value;
3426
+ }
3427
+ if (typeof props.contentHeightPercent === "number") {
3428
+ return document.documentElement.clientHeight * props.contentHeightPercent;
3429
+ }
3430
+ return null;
3431
+ });
3432
+ const bodyClass = computed(() => {
3433
+ const cls = [];
3434
+ if (props.backgroundMode) {
3435
+ cls.push(`plv-product-common-popup__body--${props.backgroundMode}`);
3436
+ }
3437
+ return cls;
3438
+ });
3439
+ const bodyStyle = computed(() => {
3440
+ const styles = {};
3441
+ if (props.background) {
3442
+ styles.background = props.background;
3443
+ }
3444
+ if (bodyWidth.value) {
3445
+ styles.width = bodyWidth.value;
3446
+ }
3447
+ if (bodyHeight.value) {
3448
+ styles.height = `${bodyHeight.value}px`;
3449
+ }
3450
+ return styles;
3451
+ });
3452
+ const wrapVisible = ref(false);
3453
+ const bodyVisible = ref(false);
3454
+ const wrapRef = ref();
3455
+ const innerRef = ref();
3456
+ useAppendTo(wrapRef, popupAppendTo);
3457
+ function topicPopup() {
3458
+ return __async(this, null, function* () {
3459
+ yield nextTick();
3460
+ if (wrapRef.value) {
3461
+ PlvPopperManager.openPopper(wrapRef.value);
3462
+ }
3463
+ });
3464
+ }
3465
+ if (props.openEvent) {
3466
+ useEventBusListener(props.openEvent, () => {
3467
+ topicPopup();
3468
+ });
3469
+ }
3470
+ function onBodyScroll(event) {
3471
+ if (props.enableDynamicHeight) {
3472
+ handleScroll(event);
3473
+ }
3474
+ }
3475
+ function open() {
3476
+ wrapVisible.value = true;
3477
+ bodyVisible.value = true;
3478
+ topicPopup();
3479
+ }
3480
+ function closeBody() {
3481
+ bodyVisible.value = false;
3482
+ emit("input", false);
3483
+ }
3484
+ function close() {
3485
+ if (props.customClose) {
3486
+ props.customClose({ closeBody });
3487
+ return;
3488
+ }
3489
+ closeBody();
3490
+ }
3491
+ function onClickMask() {
3492
+ if (!props.closeOnMask) {
3493
+ return;
3494
+ }
3495
+ close();
3496
+ }
3497
+ function back() {
3498
+ if (props.customBack) {
3499
+ props.customBack({ closeBody });
3500
+ return;
3501
+ }
3502
+ closeBody();
3503
+ }
3504
+ function onAfterLeave() {
3505
+ wrapVisible.value = false;
3506
+ emit("after-leave");
3507
+ if (props.enableDynamicHeight) {
3508
+ resetContentHeight();
3509
+ }
3510
+ }
3511
+ function resetScroll() {
3512
+ if (innerRef.value) {
3513
+ innerRef.value.scrollTop = 0;
3514
+ }
3515
+ }
3516
+ watch(
3517
+ () => props.value,
3518
+ () => {
3519
+ if (props.value) {
3520
+ open();
3521
+ } else {
3522
+ closeBody();
3523
+ }
3524
+ }
3525
+ );
3526
+ onMounted(() => {
3527
+ if (props.value) {
3528
+ open();
3529
+ }
3530
+ });
3531
+ expose({
3532
+ resetScroll
3533
+ });
3534
+ return { __sfc: true, props, emit, globalInjectData, popupInjectData, isHorizontalScreenOrientation, pageFullscreen, isFullscreen, dynamicContentHeightPercent, handleScroll, resetContentHeight, getOriginAppendTo, popupAppendTo, popupShowModal, getOriginPosition, popupPosition, wrapClass, wrapStyle, headerStyle, bodyWidth, bodyHeight, bodyClass, bodyStyle, wrapVisible, bodyVisible, wrapRef, innerRef, topicPopup, onBodyScroll, open, closeBody, close, onClickMask, back, onAfterLeave, resetScroll, ProductIconClose, ProductIconArrowLeft };
3535
+ }
3536
+ });
3537
+ const supportWebP = /* @__PURE__ */ (() => {
3538
+ let A2;
3539
+ return () => {
3540
+ if (null == A2) try {
3541
+ A2 = function() {
3542
+ const A3 = document.createElement("canvas");
3543
+ if (A3.getContext && A3.getContext("2d")) {
3544
+ const e = "image/webp";
3545
+ return 0 === A3.toDataURL(e).indexOf("data:" + e);
3546
+ }
3547
+ return false;
3548
+ }();
3549
+ } catch (e) {
3550
+ A2 = false;
3551
+ }
3552
+ return A2;
3553
+ };
3554
+ })();
3555
+ function getExtname(A2) {
3556
+ const e = (A2 || "").split("."), t2 = e[e.length - 1];
3557
+ return t2 ? t2.toLowerCase() : "";
3558
+ }
3559
+ function handleCompressOptions(A2) {
3560
+ var e, t2;
3561
+ const r2 = "number" == typeof A2 ? { width: A2 } : A2;
3562
+ return r2.allowJPG = null === (e = r2.allowJPG) || void 0 === e || e, r2.allowWebP = null !== (t2 = r2.allowWebP) && void 0 !== t2 ? t2 : "auto", r2;
3563
+ }
3564
+ function createURLObject(A2) {
3565
+ let e;
3566
+ if ("undefined" != typeof document) {
3567
+ const t2 = document.createElement("a");
3568
+ t2.href = A2, e = t2;
3569
+ } else if ("function" == typeof URL) try {
3570
+ e = new URL(/^\/\//.test(A2) ? "https:" + A2 : A2);
3571
+ } catch (A3) {
3572
+ }
3573
+ return e;
3574
+ }
3575
+ function genOSSCompressParams(A2, e) {
3576
+ let t2 = "";
3577
+ 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;
3578
+ }
3579
+ function setOSSCompressParams(A2, e) {
3580
+ let t2 = false;
3581
+ 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;
3582
+ }
3583
+ function ossCompress(A2, e) {
3584
+ const t2 = createURLObject(A2);
3585
+ if (!t2) return A2;
3586
+ if (!/\.videocc\.net$/i.test(t2.hostname)) return A2;
3587
+ const r2 = genOSSCompressParams(getExtname(t2.pathname.split("/").pop()), handleCompressOptions(e));
3588
+ return r2 && (t2.search = setOSSCompressParams(t2.search, r2)), t2.href;
3589
+ }
3590
+ const productItemProps = () => __spreadProps(__spreadValues({}, productProps()), {
3591
+ product: PropUtils.object().isRequired
3592
+ });
3593
+ const productItemEmits = () => ({
3594
+ "click-explain": emitFunc(),
3595
+ "click-product-item": emitFunc(),
3596
+ "direct-buy": emitFunc()
3597
+ });
3598
+ const useProductItem = (options) => {
3599
+ const { props, emit } = options;
3600
+ const { ProductType, ProductBuyType } = getProductTargetExport(props.productTarget);
3601
+ const { getEmitter } = useGlobalInject();
3602
+ const productExplainEnabled = ref(false);
3603
+ const isProductRedirectLinkDirectly = ref(false);
3604
+ const shouldEllipsisTitle = computed(() => {
3605
+ const { product } = props;
3606
+ return !!(product.name && product.featureTags.length && (product.description && product.productType !== ProductType.Position));
3607
+ });
3608
+ function setProductExplainEnabled() {
3609
+ return __async(this, null, function* () {
3610
+ if (!props.productTarget) return;
3611
+ const enabled = yield props.productTarget.getProductExplainEnabled();
3612
+ productExplainEnabled.value = enabled;
3613
+ });
3614
+ }
3615
+ function setIsProductRedirectLinkDirectly() {
3616
+ return __async(this, null, function* () {
3617
+ const { product, productTarget } = props;
3618
+ if (!product || !productTarget) return false;
3619
+ const enabled = yield productTarget.getOutLinkProductRedirectEnabled();
3620
+ isProductRedirectLinkDirectly.value = product.productType === ProductType.Normal && product.buyType === ProductBuyType.Link && enabled;
3621
+ });
3622
+ }
3623
+ function onClickExplain(product) {
3624
+ emit("click-explain", product);
3625
+ }
3626
+ function onClickProductItem() {
3627
+ emit("click-product-item", props.product);
3628
+ if (props.product.productType !== ProductType.Finance) {
3629
+ getEmitter().emit(productEvents.OpenProductDetailPopup, props.product);
3630
+ }
3631
+ }
3632
+ function onDirectBuy(product) {
3633
+ emit("direct-buy", product);
3634
+ }
3635
+ onMounted(() => {
3636
+ setProductExplainEnabled();
3637
+ });
3638
+ watchEffect(() => {
3639
+ setIsProductRedirectLinkDirectly();
3640
+ });
3641
+ return {
3642
+ productExplainEnabled,
3643
+ isProductRedirectLinkDirectly,
3644
+ shouldEllipsisTitle,
3645
+ onDirectBuy,
3646
+ onClickExplain,
3647
+ onClickProductItem
3648
+ };
3649
+ };
3650
+ const _sfc_main = /* @__PURE__ */ defineComponent({
3651
+ __name: "product-item",
3652
+ props: productItemProps(),
3653
+ emits: productItemEmits(),
3654
+ setup(__props, { emit }) {
3655
+ const props = __props;
3656
+ const { ProductExplainStatus } = getProductTargetExport(props.productTarget);
3657
+ const { $t } = useI18n();
3658
+ const { isSoldOut } = useProductStock({
3659
+ product: () => props.product
3660
+ });
3661
+ const {
3662
+ productExplainEnabled,
3663
+ isProductRedirectLinkDirectly,
3664
+ shouldEllipsisTitle,
3665
+ onDirectBuy,
3666
+ onClickExplain,
3667
+ onClickProductItem
3668
+ } = useProductItem({
3669
+ props,
3670
+ emit
3671
+ });
3672
+ return { __sfc: true, props, emit, ProductExplainStatus, $t, isSoldOut, productExplainEnabled, isProductRedirectLinkDirectly, shouldEllipsisTitle, onDirectBuy, onClickExplain, onClickProductItem, ProductExplain, ProductTitle, ProductFeatureTag, ProductPrice, ProductButton, ossCompress };
3673
+ }
3674
+ });
3675
+ var _sfc_render = function render6() {
3676
+ var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
3677
+ 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) {
3678
+ return _c(_setup.ProductFeatureTag, { key: index, attrs: { "tag": tag } });
3679
+ }), 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 }) {
3680
+ return [_c("button", { staticClass: "plv-product-item__buy-button", class: { "plv-product-item__buy-button--disabled": disabled } }, [_vm._v(" " + _vm._s(buttonText) + " ")])];
3681
+ } }]) })], 1)])])]);
3682
+ };
3683
+ var _sfc_staticRenderFns = [];
3684
+ var __component__ = /* @__PURE__ */ normalizeComponent(
3685
+ _sfc_main,
3686
+ _sfc_render,
3687
+ _sfc_staticRenderFns
3688
+ );
3689
+ const productItem = __component__.exports;
3690
+ ;
3691
+ console.log(
3692
+ "%c@polyv/product-ui",
3693
+ "background:#409EFF;padding: 2px 6px;border-radius: 3px;color: #fff",
3694
+ "[component: product-item]",
3695
+ "[version: 1.0.0-rc-20250612.3]",
3696
+ "[buildTime: 2025-06-12 02:28:45]"
3697
+ );
3698
+ export {
3699
+ productItem as default
3700
+ };