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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/address-edit.cjs.js +7 -3
  2. package/address-edit.es.js +1194 -1143
  3. package/address-edit.umd.js +7 -3
  4. package/address-item.cjs.js +2 -2
  5. package/address-item.es.js +12 -12
  6. package/address-item.umd.js +4 -3
  7. package/address-list.cjs.js +3 -3
  8. package/address-list.es.js +36 -18
  9. package/address-list.umd.js +3 -3
  10. package/big-card-popup.cjs.js +11 -0
  11. package/big-card-popup.es.d.ts +3 -0
  12. package/big-card-popup.es.js +4439 -0
  13. package/big-card-popup.umd.js +11 -0
  14. package/index.cjs.js +7 -3
  15. package/index.es.js +2644 -1847
  16. package/index.umd.js +7 -3
  17. package/mobile-product-pendant.cjs.js +3 -3
  18. package/mobile-product-pendant.es.js +46 -36
  19. package/mobile-product-pendant.umd.js +3 -3
  20. package/order-confirm.cjs.js +5 -3
  21. package/order-confirm.es.js +311 -293
  22. package/order-confirm.umd.js +5 -3
  23. package/order-detail.cjs.js +5 -3
  24. package/order-detail.es.js +311 -293
  25. package/order-detail.umd.js +5 -3
  26. package/order-item.cjs.js +2 -2
  27. package/order-item.es.js +27 -9
  28. package/order-item.umd.js +4 -3
  29. package/order-list-popup.cjs.js +5 -3
  30. package/order-list-popup.es.js +329 -297
  31. package/order-list-popup.umd.js +5 -3
  32. package/order-list.cjs.js +3 -3
  33. package/order-list.es.js +27 -9
  34. package/order-list.umd.js +3 -3
  35. package/order-popup.cjs.js +7 -3
  36. package/order-popup.es.js +1215 -1156
  37. package/order-popup.umd.js +7 -3
  38. package/package.json +3 -2
  39. package/pc-product-pendant.cjs.js +3 -3
  40. package/pc-product-pendant.es.js +27 -9
  41. package/pc-product-pendant.umd.js +3 -3
  42. package/product-button.cjs.js +3 -3
  43. package/product-button.es.js +318 -267
  44. package/product-button.umd.js +3 -3
  45. package/product-detail-popup.cjs.js +5 -3
  46. package/product-detail-popup.es.js +560 -473
  47. package/product-detail-popup.umd.js +5 -3
  48. package/product-detail.cjs.js +5 -3
  49. package/product-detail.es.js +632 -553
  50. package/product-detail.umd.js +5 -3
  51. package/product-iframe-link-popup.cjs.js +5 -3
  52. package/product-iframe-link-popup.es.js +296 -282
  53. package/product-iframe-link-popup.umd.js +5 -3
  54. package/product-item.cjs.js +5 -3
  55. package/product-item.es.js +720 -494
  56. package/product-item.umd.js +5 -3
  57. package/product-list-popup.cjs.js +5 -3
  58. package/product-list-popup.es.js +753 -585
  59. package/product-list-popup.umd.js +5 -3
  60. package/product-list.cjs.js +5 -3
  61. package/product-list.es.js +744 -584
  62. package/product-list.umd.js +5 -3
  63. package/small-card.cjs.js +10 -0
  64. package/small-card.es.d.ts +3 -0
  65. package/small-card.es.js +4496 -0
  66. package/small-card.umd.js +11 -0
@@ -1,4 +1,4 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var o=document.createElement("style");o.appendChild(document.createTextNode('@charset "UTF-8";.plv-radio{cursor:pointer;line-height:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.plv-radio:last-of-type{margin-right:0}.plv-radio .plv-radio__inner{-ms-flex-negative:0;flex-shrink:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;border-radius:8px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;vertical-align:middle}.plv-radio .plv-radio__label{color:#1d2129;font-size:14px;padding-left:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;line-height:16px;word-break:break-word}.plv-radio:hover .plv-radio__inner{border-color:#3f76fc}.plv-radio.plv-radio--checked .plv-radio__inner{border-width:4px;border-color:#3f76fc}.plv-radio.plv-radio--disabled{cursor:not-allowed}.plv-radio.plv-radio--disabled .plv-radio__inner{border-color:#e5e5e5;background:#f9fafd}.plv-radio.plv-radio--disabled .plv-radio__label{color:#969ba5}.plv-radio.plv-radio--disabled.plv-radio--checked .plv-radio__inner{background:#f9fafd}.plv-radio.plv-radio--readonly{cursor:default}.plv-radio.plv-radio--readonly:hover .plv-radio__inner{border-color:#e5e5e5}.plv-radio.plv-radio--readonly:hover .plv-radio__inner.plv-radio__inner--checked{border-color:#3f76fc}.plv-radio--border{min-width:80px;height:36px!important;padding:0 16px;border-radius:2px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s;transition:border-color .35s;position:relative;margin-right:16px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.plv-radio--border:hover{border-color:#3f76fc}.plv-radio--border .plv-radio__label{padding-left:0;font-size:12px;float:none}.plv-radio--border.plv-radio--checked{border-width:2px;border-color:#3f76fc}.plv-radio--border .plv-radio__corner{position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background-image:url(data:image/png;base64,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);background-size:100% 100%}.plv-radio--border.plv-radio--disabled{background:#f9fafd;border-color:#e5e5e5!important}.plv-radio--border.plv-radio--disabled:hover,.plv-radio--border.plv-radio--readonly{border-color:#e5e5e5}.plv-radio--border.plv-radio--readonly.plv-radio--checked{border-color:#3f76fc}@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-product-form-input{display:flex}.plv-product-form-input__main{position:relative;display:flex;flex:1;align-items:center;box-sizing:border-box;height:50px;overflow:hidden;border-radius:8px;background:#f7f8fa}.plv-product-form-input__input{display:block;flex:1;box-sizing:border-box;height:100%;color:inherit}.plv-product-form-input__input-inner{border:none;border-radius:0;outline:none;display:block;box-sizing:border-box;width:100%;height:100%;padding:0 12px;background:none;font-size:14px}.plv-product-form-input__input-inner::placeholder{color:#9e9e9e}.plv-product-form-input__input-inner::-webkit-outer-spin-button,.plv-product-form-input__input-inner::-webkit-inner-spin-button{margin:0;appearance:none!important}.plv-product-form-input__input-inner[type=number]{appearance:textfield}.plv-product-form-input__input-inner[disabled]{opacity:100%}.plv-product-form-input__input-inner[type=button],.plv-product-form-input__input-inner[type=submit],.plv-product-form-input__input-inner[type=reset]{appearance:none;background:#fff}.plv-product-form-input__clearable{display:flex;margin-right:16px;color:#999;font-size:20px}.plv-product-form-input__suffix-text{color:#aaa;font-size:16px}.plv-product-form-input--textarea .plv-product-form-input__main{height:initial}.plv-product-form-input--textarea .plv-product-form-input__input-inner{padding-top:8px}.plv-product-form-input__suffix{display:flex;align-items:center;padding-right:12px}.plv-product-form-input__suffix .polyv-icon{display:flex;color:#0006;font-size:18px}.plv-product-form-input__suffix:empty{display: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-loading{display:inline-block;width:32px;height:32px;background-image:url(data:image/png;base64,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);background-position:center;background-size:cover;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@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-label-panel{position:relative;background-color:#f7f8fa}.plv-product-c-label-list__wrapper{position:relative;z-index:1060;display:flex;box-sizing:border-box;margin-bottom:4px;padding:0 12px;background-color:#f7f8fa}.plv-product-c-label-list__inner{display:flex}.plv-product-c-label-list__item{display:flex;flex:none;flex-direction:column;align-items:center;box-sizing:border-box;height:26px;margin-right:8px;margin-bottom:8px;padding:4px 12px;border:1px solid rgba(0,0,0,.06);border-radius:20px;color:#0009;font-size:12px;line-height:18px}.plv-product-c-label-list__item.plv-product-c-label-list__item--active{border-color:#ff62644d;color:#ff6264;font-weight:500}.plv-product-c-label-list__arrow{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:26px;height:26px;margin-left:auto;border:1px solid rgba(0,0,0,.1);border-radius:20px}.plv-product-c-label-list__arrow-icon{display:flex;color:#0006;font-size:16px;transition:.3s}.plv-product-c-label-list__arrow--active .plv-product-c-label-list__arrow-icon{transform:rotate(180deg)}.plv-product-c-label-list__shadow{position:absolute;top:0;right:0;z-index:0;width:80px;height:42px;background:linear-gradient(90deg,#f7f8fa00,#f7f8fa 39%)}.plv-product-c-label-list-panel{position:absolute;top:100%;right:0;left:0;z-index:1050;box-sizing:border-box;padding:0 12px;border-bottom-right-radius:16px;border-bottom-left-radius:16px;background-color:#f7f8fa}.plv-product-c-label-list-panel__content{flex-wrap:wrap;box-sizing:border-box;max-height:216px;overflow-y:auto;transform:translateZ(0)}.slide-fade-enter-active,.slide-fade-leave-active{overflow:hidden;transition:transform .3s ease,opacity .3s ease}.slide-fade-enter,.slide-fade-leave-to{opacity:0%;transform:translateY(-10px)}.fade-overlay-enter-active,.fade-overlay-leave-active{transition:opacity .3s ease}.fade-overlay-enter,.fade-overlay-leave-to{opacity:0%}.plv-product-c-label-overlay{position:fixed;inset:45% 0 0;z-index:1040;background-color:#0006}.plv-product-c-label-overlay-pc{position:absolute;inset:45% 0 0;z-index:1040;height:600px;background-color:#0006}@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}@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-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}@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-list-empty{position:absolute;top:50%;left:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;padding:0 10px;font-size:14px;line-height:18px;text-align:center;transform:translate(-50%,-50%)}.plv-product-list-empty__icon{display:flex;opacity:40%;margin-bottom:16px;color:#999;font-size:70px}.plv-product-list-empty__text{color:#999}@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-list{height:100%;overflow-y:auto;background-color:#f7f8fa;-webkit-overflow-scrolling:touch}.plv-product-list .plv-product-form-input.plv-product-form-input--theme-dark .plv-product-form-input__main{height:32px;border-radius:8px;background:#0000000a}.plv-product-list .plv-product-form-input.plv-product-form-input--theme-dark .plv-product-form-input__input-inner{padding-left:4px}.plv-product-list__header-search-icon{display:flex;margin-left:11px;color:#0006}.plv-product-list__header{position:sticky;top:0;left:0;z-index:30;padding-bottom:12px;background-color:#f7f8fa}.plv-product-list__header-search-wrapper{display:flex;align-items:center;margin:0 0 12px;padding:7px 12px 0}.plv-product-list__search-input{flex:1;margin-right:8px}.plv-product-list__header-right{display:flex;flex-direction:column;margin-left:auto;padding:6px 10px 3px}.plv-product-list__header-right-icon{display:flex;margin:0 auto 2px}.plv-product-list__header-right-text{color:#333a47;font-size:12px}.plv-product-list__wrapper{padding:0 8px}.plv-product-list__product-total{display:flex;align-items:center;margin-top:12px;padding:0 12px}.plv-product-list__product-total-icon{display:flex;margin-right:4px;color:#000c;font-size:12px}.plv-product-list__product-total-text,.plv-product-list__product-total-num{color:#0009;font-size:12px}.plv-product-list__product-total-num{margin-left:8px;font-weight:500}.plv-product-list__loading{position:absolute;top:0;left:0;z-index:999;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:#fff9}.plv-product-list-popup__icon-close{display:flex;margin:0 4px 0 8px;color:#0009;font-size:24px;cursor:pointer}')),document.head.appendChild(o)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var o=document.createElement("style");o.appendChild(document.createTextNode('@charset "UTF-8";.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:56px;height:36px!important;padding:0 16px;border-radius:4px;border:1px solid #e5e5e5;-webkit-transition:border-color .35s ease-in-out;transition:border-color .35s ease-in-out;position:relative;margin-right:16px;margin-bottom:8px;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 .plv-radio__label{padding-left:0;font-size:12px;float:none;-webkit-transition:color .35s ease-in-out;transition:color .35s ease-in-out}.plv-radio--border:hover{border-color:#3f76fc;-webkit-transition:border-color .35s ease-in-out;transition:border-color .35s ease-in-out}.plv-radio--border:hover .plv-radio__label{-webkit-transition:color .35s ease-in-out;transition:color .35s ease-in-out;color:#3f76fc}.plv-radio--border.plv-radio--checked{border-width:1px;border-color:#3f76fc;background:#3f76fc1a}.plv-radio--border.plv-radio--checked:hover{border-color:#3f76fc}.plv-radio--border.plv-radio--checked .plv-radio__label{color:#3f76fc}.plv-radio--border .plv-radio__corner{position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background-image:url(data:image/png;base64,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);background-size:100% 100%}.plv-radio--border.plv-radio--disabled{opacity:.6}.plv-radio--border.plv-radio--disabled:hover{border-color:#e5e5e5}.plv-radio--border.plv-radio--disabled:hover .plv-radio__label{color:#969ba5}.plv-radio--border.plv-radio--disabled.plv-radio--checked:hover{border-color:#3f76fc}.plv-radio--border.plv-radio--disabled.plv-radio--checked:hover .plv-radio__label{color:#3f76fc}.plv-radio--border.plv-radio--readonly{border-color:#e5e5e5;pointer-events:none}.plv-radio--border.plv-radio--readonly.plv-radio--checked{border-color:#3f76fc}.plv-product-common-popup{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006}.plv-product-common-popup__body{position:absolute;display:flex;flex-direction:column;width:100%;max-height:90%;overflow:hidden;border-radius:16px 16px 0 0;background:#fff}.plv-product-common-popup__header{position:relative;z-index:2;display:flex;flex-shrink:0;justify-content:center;align-items:center;padding:0 54px}.plv-product-common-popup__back{position:absolute;top:50%;left:18px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:20px;transform:translateY(-50%);cursor:pointer}.plv-product-common-popup__title{color:#000c;font-size:16px;font-weight:500;text-align:center}.plv-product-common-popup__header-right{position:absolute;top:50%;right:12px;display:flex;align-items:center;transform:translateY(-50%)}.plv-product-common-popup__close{display:flex;color:#0009;font-size:24px;cursor:pointer}.plv-product-common-popup__content{position:relative;z-index:2;display:flex;flex:1;overflow:hidden}.plv-product-common-popup__inner{flex:1;overflow-y:auto}.plv-product-common-popup__body--bg1{background:linear-gradient(180deg,#fee5e1,#fef9f4)}.plv-product-common-popup__body--bg1:before{position:absolute;top:-26px;right:-87px;z-index:1;width:176px;height:168px;background:#fdf0d5;pointer-events:none;content:"";filter:blur(80px)}.plv-product-common-popup__body--bg1 .plv-product-common-popup__content{padding:0 12px 30px}.plv-product-common-popup__body--bg1 .plv-product-common-popup__inner{border-radius:12px;background:#fff}.plv-product-common-popup--hide-modal{background:none;pointer-events:none}.plv-product-common-popup--hide-modal .plv-product-common-popup__body{pointer-events:initial}.plv-product-common-popup--fill-body .plv-product-common-popup__content{height:90%}.plv-product-common-popup--mobile .plv-product-common-popup__body{border-radius:16px 16px 0 0}.plv-product-common-popup--position-bottom .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(0, 100%);--plv-product-popup-animation-end: translate(0, 0);bottom:0;left:0}.plv-product-common-popup--position-left .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(-100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;left:0;height:100%;max-height:100%}.plv-product-common-popup--position-right .plv-product-common-popup__body{--plv-product-popup-animation-start: translate(100%, 0);--plv-product-popup-animation-end: translate(0, 0);top:0;right:0;height:100%;max-height:100%}.plv-product-common-popup--position-center .plv-product-common-popup__body{top:50%;left:50%;max-height:90%;animation:none!important;transform:translate(-50%,-50%)}.plv-product-common-popup--horizontal-screen .plv-product-common-popup__body{border-radius:0}.plv-product-common-popup--page-fullscreen{top:50%;left:50%;width:100vh;height:100vw;transform:translate(-50%,-50%) rotate(90deg)}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__body,.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__content{overflow:initial}.plv-product-common-popup--hide-scrollbar .plv-product-common-popup__inner{overflow-y:initial}.plv-product-common-popup-slide-enter-active{animation:plv-product-common-popup-slide-in .2s ease-in-out}.plv-product-common-popup-slide-leave-active{animation:plv-product-common-popup-slide-in .15s reverse ease-in-out}@keyframes plv-product-common-popup-slide-in{0%{transform:var(--plv-product-popup-animation-start)}to{transform:var(--plv-product-popup-animation-end)}}.plv-product-form-input{display:flex}.plv-product-form-input__main{position:relative;display:flex;flex:1;align-items:center;box-sizing:border-box;height:50px;overflow:hidden;border-radius:8px;background:#f7f8fa}.plv-product-form-input__input{display:block;flex:1;box-sizing:border-box;height:100%;color:inherit}.plv-product-form-input__input-inner{border:none;border-radius:0;outline:none;-webkit-tap-highlight-color:transparent;-webkit-focus-ring-color:transparent;tap-highlight-color:transparent;display:block;box-sizing:border-box;width:100%;height:100%;padding:0 12px;background:none;font-size:14px}.plv-product-form-input__input-inner::placeholder{color:#9e9e9e}.plv-product-form-input__input-inner::-webkit-outer-spin-button,.plv-product-form-input__input-inner::-webkit-inner-spin-button{margin:0;appearance:none!important}.plv-product-form-input__input-inner[type=number]{appearance:textfield}.plv-product-form-input__input-inner[disabled]{opacity:100%}.plv-product-form-input__input-inner[type=button],.plv-product-form-input__input-inner[type=submit],.plv-product-form-input__input-inner[type=reset]{appearance:none;background:#fff}.plv-product-form-input__clearable{display:flex;margin-right:16px;color:#999;font-size:20px}.plv-product-form-input__suffix-text{color:#aaa;font-size:16px}.plv-product-form-input--textarea .plv-product-form-input__main{height:initial}.plv-product-form-input--textarea .plv-product-form-input__input-inner{padding-top:8px}.plv-product-form-input__suffix{display:flex;align-items:center;padding-right:12px}.plv-product-form-input__suffix .polyv-icon{display:flex;color:#0006;font-size:18px}.plv-product-form-input__suffix:empty{display:none}.plv-product-c-loading{display:inline-block;width:32px;height:32px;background-image:url(data:image/png;base64,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);background-position:center;background-size:cover;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.plv-product-c-label-panel{position:relative;background-color:#f7f8fa}.plv-product-c-label-list__wrapper{position:relative;z-index:1060;display:flex;box-sizing:border-box;margin-bottom:4px;padding:0 12px;background-color:#f7f8fa}.plv-product-c-label-list__inner{display:flex}.plv-product-c-label-list__item{display:flex;flex:none;flex-direction:column;align-items:center;box-sizing:border-box;height:26px;margin-right:8px;margin-bottom:8px;padding:4px 12px;border:1px solid rgba(0,0,0,.06);border-radius:20px;color:#0009;font-size:12px;line-height:18px}.plv-product-c-label-list__item.plv-product-c-label-list__item--active{border-color:#ff62644d;color:#ff6264;font-weight:500}.plv-product-c-label-list__arrow{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:26px;height:26px;margin-left:auto;border:1px solid rgba(0,0,0,.1);border-radius:20px}.plv-product-c-label-list__arrow-icon{display:flex;color:#0006;font-size:16px;transition:.3s}.plv-product-c-label-list__arrow--active .plv-product-c-label-list__arrow-icon{transform:rotate(180deg)}.plv-product-c-label-list__shadow{position:absolute;top:0;right:0;z-index:0;width:80px;height:42px;background:linear-gradient(90deg,#f7f8fa00,#f7f8fa 39%)}.plv-product-c-label-list-panel{position:absolute;top:100%;right:0;left:0;z-index:1050;box-sizing:border-box;padding:0 12px;border-bottom-right-radius:16px;border-bottom-left-radius:16px;background-color:#f7f8fa}.plv-product-c-label-list-panel__content{flex-wrap:wrap;box-sizing:border-box;max-height:216px;overflow-y:auto;transform:translateZ(0)}.slide-fade-enter-active,.slide-fade-leave-active{overflow:hidden;transition:transform .3s ease,opacity .3s ease}.slide-fade-enter,.slide-fade-leave-to{opacity:0%;transform:translateY(-10px)}.fade-overlay-enter-active,.fade-overlay-leave-active{transition:opacity .3s ease}.fade-overlay-enter,.fade-overlay-leave-to{opacity:0%}.plv-product-c-label-overlay{position:fixed;inset:45% 0 0;z-index:1040;background-color:#0006}.plv-product-c-label-overlay-pc{position:absolute;inset:45% 0 0;z-index:1040;height:600px;background-color:#0006}.plv-product-c-explain--explaining{display:flex;justify-content:center;align-items:center;width:100%;height:20px;border-radius:0 0 4px 4px;background:#ff6264cc;color:#fff;font-size:12px;font-weight:500;backdrop-filter:blur(3px)}.plv-product-c-explain--explaining .plv-product-c-explain--explaining-icon{width:14px;height:14px;margin-right:2px;vertical-align:top}.plv-product-c-explain--explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(255,98,100,.3);border-radius:20px;background:#fff;color:#ff6264;font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer}.plv-product-c-explain--not-explained{display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:20px;padding:4px 12px;border:1px solid rgba(0,0,0,.1);border-radius:20px;background:#fff;color:#666;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--explaining-cover{position:absolute;bottom:0;left:0}.plv-product-c-explain--not-explained-cover,.plv-product-c-explain--explained-cover{position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.plv-product-c-explain--explained-cover{z-index:12}.plv-product-c-explain--no-cover .plv-product-c-explain--explaining{width:52px;height:16px;padding:1px 2px;border:1px solid rgba(255,82,82,.6);border-radius:2px;background:#ff5252;color:#fff;font-size:12px;white-space:nowrap;transform:scale(.8333)}.plv-product-c-explain--no-cover .plv-product-c-explain--explaining span{margin-top:2px}.plv-product-c-explain--no-cover .plv-product-c-explain--explained{width:60px;height:24px;padding:3px 12px;background:transparent;color:#ff5252;font-size:12px}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained{display:flex;box-sizing:border-box;height:16px;margin-left:4px;padding:1px 4px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;white-space:nowrap}.plv-product-c-explain--no-cover .plv-product-c-explain--not-explained span{display:inline-block;transform:scale(.833);user-select:none}.plv-product-c-item__title-container{position:relative;margin-bottom:6px}.plv-product-c-item__title{color:#000c;font-size:14px;font-weight:500;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.plv-product-c-item__title--single{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__title-more{position:absolute;top:22px;right:-6px;display:flex;border:none;background:none}.plv-product-c-item__title-more-icon{display:flex;color:#0006;font-size:16px}.plv-product-c-item__title--expanded{-webkit-line-clamp:unset}.plv-product-c-item__tag-container{box-sizing:border-box;margin-right:4px;padding:0 1px;border:.5px solid rgba(0,0,0,.2);border-radius:2px;color:#0009;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-c-item__tag-container:last-child{margin-right:0}.plv-product-c-item__tag{display:inline-block;transform:scale(.833);user-select:none}.plv-product-c-item__price-area{display:flex;flex-wrap:wrap;gap:2px;align-items:baseline}.plv-product-c-item__price{color:#ff5252;font-size:18px;line-height:18px;word-break:break-all}.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{color:#0006;font-size:12px;line-height:14px;text-decoration:line-through;word-break:break-all}.plv-product-c-item__price-finance{color:#ff5252;font-size:14px}.plv-product-button,.plv-product-button__render{position:relative}.plv-product-button__inner{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;cursor:pointer}.plv-product-item{position:relative;display:flex;box-sizing:border-box;min-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-shrink:0;width:100px;height:100px;overflow:hidden;margin-right:8px;border-radius:4px}.plv-product-item__cover-stock{position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#00000080;color:#fff;font-size:12px}.plv-product-item__cover{width:100px;height:100px;object-fit:cover}.plv-product-item__content{display:flex;flex-grow:1;flex-direction:column;justify-content:space-between;min-width:0}.plv-product-item__content .plv-product-c-item__title-container{min-width:0;margin-bottom:0}.plv-product-item__title-area{display:flex;align-items:center}.plv-product-item__tags{display:flex;margin-top:6px;margin-bottom:6px}.plv-product-item__description{margin:0;color:#0006;font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-item__footer{display:flex;gap:4px;justify-content:space-between;align-items:flex-end;margin-top:auto}.plv-product-item__position-detail-button{position:relative;z-index:12;box-sizing:border-box;width:64px;max-width:64px;height:24px;margin-right:12px;margin-left:auto;padding:0 4px;border:1px solid rgba(0,0,0,.2);border-radius:456px;background:transparent;color:#0009;font-size:12px;line-height:23px;text-align:center;cursor:pointer;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-product-item__explained--no-cover{margin-right:12px;margin-left:auto}.plv-product-item__explained--no-cover-position{margin-left:0}.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}.plv-product-list-empty{position:absolute;top:50%;left:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;padding:0 10px;font-size:14px;line-height:18px;text-align:center;transform:translate(-50%,-50%)}.plv-product-list-empty__icon{display:flex;opacity:40%;margin-bottom:16px;color:#999;font-size:70px}.plv-product-list-empty__text{color:#999}.plv-product-list{height:100%;overflow-y:auto;background-color:#f7f8fa;-webkit-overflow-scrolling:touch}.plv-product-list .plv-product-form-input.plv-product-form-input--theme-dark .plv-product-form-input__main{height:32px;border-radius:8px;background:#0000000a}.plv-product-list .plv-product-form-input.plv-product-form-input--theme-dark .plv-product-form-input__input-inner{padding-left:4px}.plv-product-list__header-search-icon{display:flex;margin-left:11px;color:#0006}.plv-product-list__header{position:sticky;top:0;left:0;z-index:30;padding-bottom:12px;background-color:#f7f8fa}.plv-product-list__header-search-wrapper{display:flex;align-items:center;margin:0 0 12px;padding:7px 12px 0}.plv-product-list__search-input{flex:1;margin-right:8px}.plv-product-list__header-right{display:flex;flex-direction:column;margin-left:auto;padding:6px 10px 3px}.plv-product-list__header-right-icon{display:flex;margin:0 auto 2px}.plv-product-list__header-right-text{color:#333a47;font-size:12px}.plv-product-list__wrapper{padding:0 8px}.plv-product-list__product-total{display:flex;align-items:center;margin-top:12px;padding:0 12px}.plv-product-list__product-total-icon{display:flex;margin-right:4px;color:#000c;font-size:12px}.plv-product-list__product-total-text,.plv-product-list__product-total-num{color:#0009;font-size:12px}.plv-product-list__product-total-num{margin-left:8px;font-weight:500}.plv-product-list__loading{position:absolute;top:0;left:0;z-index:999;display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:#fff9}.plv-product-list-popup__icon-close{display:flex;margin:0 4px 0 8px;color:#0009;font-size:24px;cursor:pointer}')),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}}();
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defProps = Object.defineProperties;
4
4
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -39,7 +39,7 @@ var __async = (__this, __arguments, generator) => {
39
39
  step((generator = generator.apply(__this, __arguments)).next());
40
40
  });
41
41
  };
42
- import { computed, unref, watch, onBeforeUnmount, inject, onMounted, ref, defineComponent, nextTick, getCurrentInstance, onUnmounted, provide, watchEffect, shallowRef } from "vue";
42
+ import { computed, unref, watch, onBeforeUnmount, inject, onMounted, ref, defineComponent, nextTick, getCurrentInstance, onUnmounted, provide, shallowRef, watchEffect } from "vue";
43
43
  function getDefaultExportFromCjs(x2) {
44
44
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
45
45
  }
@@ -76,10 +76,10 @@ function requirePopperManager() {
76
76
  return t2.d(n3, "a", n3), n3;
77
77
  }, t2.o = function(e2, n3) {
78
78
  return Object.prototype.hasOwnProperty.call(e2, n3);
79
- }, t2.p = "", t2(t2.s = 14);
80
- }({ 14: function(e, n2, t2) {
79
+ }, t2.p = "", t2(t2.s = 15);
80
+ }({ 15: function(e, n2, t2) {
81
81
  t2.r(n2);
82
- t2(41);
82
+ t2(48);
83
83
  var r2 = "@@polyvAdminUIzIndex", o2 = { ctx: r2, openPopper: function(e2) {
84
84
  o2.zIndex++, e2.style.zIndex = o2.zIndex;
85
85
  }, install: function(e2) {
@@ -91,7 +91,7 @@ function requirePopperManager() {
91
91
  }, set: function(e2) {
92
92
  window[r2] = e2;
93
93
  } }), n2.default = o2;
94
- }, 41: function(e, n2, t2) {
94
+ }, 48: function(e, n2, t2) {
95
95
  } }).default;
96
96
  return popperManager;
97
97
  }
@@ -130,31 +130,31 @@ function requireRadio() {
130
130
  return r2.d(e2, "a", e2), e2;
131
131
  }, r2.o = function(t3, e2) {
132
132
  return Object.prototype.hasOwnProperty.call(t3, e2);
133
- }, r2.p = "", r2(r2.s = 298);
133
+ }, r2.p = "", r2(r2.s = 160);
134
134
  }({ 0: function(t2, e, r2) {
135
- function n2(t3, e2, r3, n3, o2, i2, a2, s2) {
136
- var u2, c2 = "function" == typeof t3 ? t3.options : t3;
137
- 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) {
138
- (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);
139
- }, c2._ssrRegister = u2) : o2 && (u2 = s2 ? function() {
140
- o2.call(this, this.$root.$options.shadowRoot);
141
- } : o2), u2) if (c2.functional) {
142
- c2._injectStyles = u2;
135
+ function n2(t3, e2, r3, n3, o2, i2, u2, a2) {
136
+ var s2, c2 = "function" == typeof t3 ? t3.options : t3;
137
+ if (e2 && (c2.render = e2, c2.staticRenderFns = r3, c2._compiled = true), n3 && (c2.functional = true), i2 && (c2._scopeId = "data-v-" + i2), u2 ? (s2 = function(t4) {
138
+ (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(u2);
139
+ }, c2._ssrRegister = s2) : o2 && (s2 = a2 ? function() {
140
+ o2.call(this, (c2.functional ? this.parent : this).$root.$options.shadowRoot);
141
+ } : o2), s2) if (c2.functional) {
142
+ c2._injectStyles = s2;
143
143
  var l2 = c2.render;
144
144
  c2.render = function(t4, e3) {
145
- return u2.call(e3), l2(t4, e3);
145
+ return s2.call(e3), l2(t4, e3);
146
146
  };
147
147
  } else {
148
148
  var f2 = c2.beforeCreate;
149
- c2.beforeCreate = f2 ? [].concat(f2, u2) : [u2];
149
+ c2.beforeCreate = f2 ? [].concat(f2, s2) : [s2];
150
150
  }
151
151
  return { exports: t3, options: c2 };
152
152
  }
153
153
  r2.d(e, "a", function() {
154
154
  return n2;
155
155
  });
156
- }, 115: function(t2, e, r2) {
157
- 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) {
156
+ }, 104: function(t2, e, r2) {
157
+ var n2 = { name: "plv-radio", mixins: [r2(16).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) {
158
158
  return -1 !== ["", "border"].indexOf(t3);
159
159
  } }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, corner: { type: Boolean, default: false } }, model: { prop: "checked", event: "change" }, computed: { inGroup: function() {
160
160
  return !!this.radioGroup;
@@ -174,300 +174,300 @@ function requireRadio() {
174
174
  this.$emit("change", t3);
175
175
  }, handleClick: function() {
176
176
  this.isDisabled || this.isReadonly || (this.inGroup ? this.radioGroup.radioClick(this.value) : this.checked || this.emitChange(true), this.blurToValidateItem());
177
- } } }, o2 = (r2(354), r2(355), r2(0)), i2 = Object(o2.a)(n2, function() {
177
+ } } }, o2 = (r2(207), r2(208), r2(0)), i2 = Object(o2.a)(n2, function() {
178
178
  var t3 = this, e2 = t3.$createElement, r3 = t3._self._c || e2;
179
179
  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()]);
180
180
  }, [], false, null, null, null);
181
181
  e.a = i2.exports;
182
- }, 147: function(t2, e, r2) {
183
- }, 148: function(t2, e, r2) {
184
- }, 15: function(t2, e, r2) {
182
+ }, 156: function(t2, e, r2) {
183
+ }, 157: function(t2, e, r2) {
184
+ }, 16: function(t2, e, r2) {
185
185
  r2.d(e, "a", function() {
186
- return i2;
186
+ return a2;
187
187
  });
188
- var n2 = r2(2), o2 = r2.n(n2), i2 = { inject: { formItem: { default: void 0 } }, computed: { formItemIsError: function() {
189
- return !!this.formItem && this.formItem.formItemIsError;
188
+ var n2 = r2(8), o2 = r2.n(n2), i2 = r2(3), u2 = r2.n(i2), a2 = { inject: { formItem: { default: void 0 } }, props: { forceFormError: { type: Boolean, default: false } }, computed: { formItemIsError: function() {
189
+ return !!this.forceFormError || !!this.formItem && this.formItem.formItemIsError;
190
190
  } }, watch: { showPopper: function() {
191
191
  this.showPopper ? this.focusToRemoveError() : this.blurToValidateItem();
192
192
  } }, methods: { validateCurrentFormItem: function() {
193
193
  if (this.formItem) return this.formItem.validate();
194
194
  }, blurToValidateItem: function() {
195
- return o2.a.async(function(t3) {
196
- for (; ; ) switch (t3.prev = t3.next) {
197
- case 0:
198
- return t3.prev = 0, t3.next = 3, o2.a.awrap(this.validateCurrentFormItem());
199
- case 3:
200
- t3.next = 8;
201
- break;
202
- case 5:
203
- t3.prev = 5, t3.t0 = t3.catch(0), console.error("blur-validate", t3.t0.message);
204
- case 8:
205
- case "end":
206
- return t3.stop();
207
- }
208
- }, null, this, [[0, 5]]);
195
+ var t3 = this;
196
+ return o2()(u2.a.mark(function e2() {
197
+ var r3;
198
+ return u2.a.wrap(function(e3) {
199
+ for (; ; ) switch (e3.prev = e3.next) {
200
+ case 0:
201
+ return e3.prev = 0, e3.next = 1, t3.validateCurrentFormItem();
202
+ case 1:
203
+ e3.next = 3;
204
+ break;
205
+ case 2:
206
+ e3.prev = 2, r3 = e3.catch(0), console.error("blur-validate", r3.message);
207
+ case 3:
208
+ case "end":
209
+ return e3.stop();
210
+ }
211
+ }, e2, null, [[0, 2]]);
212
+ }))();
209
213
  }, focusToRemoveError: function() {
210
214
  this.formItem && this.formItem.removeErrorMessage();
211
215
  } } };
212
- }, 2: function(t2, e, r2) {
213
- t2.exports = r2(24);
214
- }, 24: function(t2, e, r2) {
215
- var n2 = function(t3) {
216
- 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";
217
- function u2(t4, e3, r4) {
218
- return Object.defineProperty(t4, e3, { value: r4, enumerable: true, configurable: true, writable: true }), t4[e3];
219
- }
220
- try {
221
- u2({}, "");
222
- } catch (t4) {
223
- u2 = function(t5, e3, r4) {
224
- return t5[e3] = r4;
225
- };
226
- }
227
- function c2(t4, e3, r4, n4) {
228
- var o3 = e3 && e3.prototype instanceof y2 ? e3 : y2, i3 = Object.create(o3.prototype), a3 = new O2(n4 || []);
229
- return i3._invoke = /* @__PURE__ */ function(t5, e4, r5) {
230
- var n5 = f2;
231
- return function(o4, i4) {
232
- if (n5 === d2) throw new Error("Generator is already running");
233
- if (n5 === p2) {
234
- if ("throw" === o4) throw i4;
235
- return T2();
216
+ }, 160: function(t2, e, r2) {
217
+ r2.r(e);
218
+ var n2 = r2(104);
219
+ n2.a.install = function(t3) {
220
+ t3.component(n2.a.name, n2.a);
221
+ }, e.default = n2.a;
222
+ }, 19: function(t2, e) {
223
+ t2.exports = function(t3, e2) {
224
+ this.v = t3, this.k = e2;
225
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
226
+ }, 20: function(t2, e, r2) {
227
+ var n2 = r2(21);
228
+ function o2() {
229
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
230
+ var e2, r3, i2 = "function" == typeof Symbol ? Symbol : {}, u2 = i2.iterator || "@@iterator", a2 = i2.toStringTag || "@@toStringTag";
231
+ function s2(t3, o3, i3, u3) {
232
+ var a3 = o3 && o3.prototype instanceof l2 ? o3 : l2, s3 = Object.create(a3.prototype);
233
+ return n2(s3, "_invoke", function(t4, n3, o4) {
234
+ var i4, u4, a4, s4 = 0, l3 = o4 || [], f3 = false, p3 = { p: 0, n: 0, v: e2, a: d3, f: d3.bind(e2, 4), d: function(t5, r4) {
235
+ return i4 = t5, u4 = 0, a4 = e2, p3.n = r4, c2;
236
+ } };
237
+ function d3(t5, n4) {
238
+ for (u4 = t5, a4 = n4, r3 = 0; !f3 && s4 && !o5 && r3 < l3.length; r3++) {
239
+ var o5, i5 = l3[r3], d4 = p3.p, h3 = i5[2];
240
+ t5 > 3 ? (o5 = h3 === n4) && (a4 = i5[(u4 = i5[4]) ? 5 : (u4 = 3, 3)], i5[4] = i5[5] = e2) : i5[0] <= d4 && ((o5 = t5 < 2 && d4 < i5[1]) ? (u4 = 0, p3.v = n4, p3.n = i5[1]) : d4 < h3 && (o5 = t5 < 3 || i5[0] > n4 || n4 > h3) && (i5[4] = t5, i5[5] = n4, p3.n = h3, u4 = 0));
236
241
  }
237
- for (r5.method = o4, r5.arg = i4; ; ) {
238
- var a4 = r5.delegate;
239
- if (a4) {
240
- var s3 = k2(a4, r5);
241
- if (s3) {
242
- if (s3 === v2) continue;
243
- return s3;
244
- }
245
- }
246
- if ("next" === r5.method) r5.sent = r5._sent = r5.arg;
247
- else if ("throw" === r5.method) {
248
- if (n5 === f2) throw n5 = p2, r5.arg;
249
- r5.dispatchException(r5.arg);
250
- } else "return" === r5.method && r5.abrupt("return", r5.arg);
251
- n5 = d2;
252
- var u3 = l2(t5, e4, r5);
253
- if ("normal" === u3.type) {
254
- if (n5 = r5.done ? p2 : h2, u3.arg === v2) continue;
255
- return { value: u3.arg, done: r5.done };
242
+ if (o5 || t5 > 1) return c2;
243
+ throw f3 = true, n4;
244
+ }
245
+ return function(o5, l4, h3) {
246
+ if (s4 > 1) throw TypeError("Generator is already running");
247
+ for (f3 && 1 === l4 && d3(l4, h3), u4 = l4, a4 = h3; (r3 = u4 < 2 ? e2 : a4) || !f3; ) {
248
+ i4 || (u4 ? u4 < 3 ? (u4 > 1 && (p3.n = -1), d3(u4, a4)) : p3.n = a4 : p3.v = a4);
249
+ try {
250
+ if (s4 = 2, i4) {
251
+ if (u4 || (o5 = "next"), r3 = i4[o5]) {
252
+ if (!(r3 = r3.call(i4, a4))) throw TypeError("iterator result is not an object");
253
+ if (!r3.done) return r3;
254
+ a4 = r3.value, u4 < 2 && (u4 = 0);
255
+ } else 1 === u4 && (r3 = i4.return) && r3.call(i4), u4 < 2 && (a4 = TypeError("The iterator does not provide a '" + o5 + "' method"), u4 = 1);
256
+ i4 = e2;
257
+ } else if ((r3 = (f3 = p3.n < 0) ? a4 : t4.call(n3, p3)) !== c2) break;
258
+ } catch (t5) {
259
+ i4 = e2, u4 = 1, a4 = t5;
260
+ } finally {
261
+ s4 = 1;
256
262
  }
257
- "throw" === u3.type && (n5 = p2, r5.method = "throw", r5.arg = u3.arg);
258
263
  }
264
+ return { value: r3, done: f3 };
259
265
  };
260
- }(t4, r4, a3), i3;
266
+ }(t3, i3, u3), true), s3;
261
267
  }
262
- function l2(t4, e3, r4) {
263
- try {
264
- return { type: "normal", arg: t4.call(e3, r4) };
265
- } catch (t5) {
266
- return { type: "throw", arg: t5 };
267
- }
268
+ var c2 = {};
269
+ function l2() {
268
270
  }
269
- t3.wrap = c2;
270
- var f2 = "suspendedStart", h2 = "suspendedYield", d2 = "executing", p2 = "completed", v2 = {};
271
- function y2() {
271
+ function f2() {
272
272
  }
273
- function m2() {
273
+ function p2() {
274
274
  }
275
- function g2() {
275
+ r3 = Object.getPrototypeOf;
276
+ var d2 = [][u2] ? r3(r3([][u2]())) : (n2(r3 = {}, u2, function() {
277
+ return this;
278
+ }), r3), h2 = p2.prototype = l2.prototype = Object.create(d2);
279
+ function v2(t3) {
280
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t3, p2) : (t3.__proto__ = p2, n2(t3, a2, "GeneratorFunction")), t3.prototype = Object.create(h2), t3;
276
281
  }
277
- var b2 = {};
278
- u2(b2, i2, function() {
282
+ return f2.prototype = p2, n2(h2, "constructor", p2), n2(p2, "constructor", f2), f2.displayName = "GeneratorFunction", n2(p2, a2, "GeneratorFunction"), n2(h2), n2(h2, a2, "Generator"), n2(h2, u2, function() {
279
283
  return this;
280
- });
281
- var _2 = Object.getPrototypeOf, w2 = _2 && _2(_2(S2([])));
282
- w2 && w2 !== r3 && n3.call(w2, i2) && (b2 = w2);
283
- var L2 = g2.prototype = y2.prototype = Object.create(b2);
284
- function x2(t4) {
285
- ["next", "throw", "return"].forEach(function(e3) {
286
- u2(t4, e3, function(t5) {
287
- return this._invoke(e3, t5);
288
- });
289
- });
284
+ }), n2(h2, "toString", function() {
285
+ return "[object Generator]";
286
+ }), (t2.exports = o2 = function() {
287
+ return { w: s2, m: v2 };
288
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports)();
289
+ }
290
+ t2.exports = o2, t2.exports.__esModule = true, t2.exports.default = t2.exports;
291
+ }, 207: function(t2, e, r2) {
292
+ r2(156);
293
+ }, 208: function(t2, e, r2) {
294
+ r2(157);
295
+ }, 21: function(t2, e) {
296
+ function r2(e2, n2, o2, i2) {
297
+ var u2 = Object.defineProperty;
298
+ try {
299
+ u2({}, "", {});
300
+ } catch (e3) {
301
+ u2 = 0;
290
302
  }
291
- function E2(t4, e3) {
292
- var r4;
293
- this._invoke = function(o3, i3) {
294
- function a3() {
295
- return new e3(function(r5, a4) {
296
- !function r6(o4, i4, a5, s3) {
297
- var u3 = l2(t4[o4], t4, i4);
298
- if ("throw" !== u3.type) {
299
- var c3 = u3.arg, f3 = c3.value;
300
- return f3 && "object" == typeof f3 && n3.call(f3, "__await") ? e3.resolve(f3.__await).then(function(t5) {
301
- r6("next", t5, a5, s3);
302
- }, function(t5) {
303
- r6("throw", t5, a5, s3);
304
- }) : e3.resolve(f3).then(function(t5) {
305
- c3.value = t5, a5(c3);
306
- }, function(t5) {
307
- return r6("throw", t5, a5, s3);
308
- });
309
- }
310
- s3(u3.arg);
311
- }(o3, i3, r5, a4);
303
+ t2.exports = r2 = function(t3, e3, n3, o3) {
304
+ if (e3) u2 ? u2(t3, e3, { value: n3, enumerable: !o3, configurable: !o3, writable: !o3 }) : t3[e3] = n3;
305
+ else {
306
+ var i3 = function(e4, n4) {
307
+ r2(t3, e4, function(t4) {
308
+ return this._invoke(e4, n4, t4);
312
309
  });
313
- }
314
- return r4 = r4 ? r4.then(a3, a3) : a3();
315
- };
316
- }
317
- function k2(t4, r4) {
318
- var n4 = t4.iterator[r4.method];
319
- if (n4 === e2) {
320
- if (r4.delegate = null, "throw" === r4.method) {
321
- if (t4.iterator.return && (r4.method = "return", r4.arg = e2, k2(t4, r4), "throw" === r4.method)) return v2;
322
- r4.method = "throw", r4.arg = new TypeError("The iterator does not provide a 'throw' method");
323
- }
324
- return v2;
310
+ };
311
+ i3("next", 0), i3("throw", 1), i3("return", 2);
325
312
  }
326
- var o3 = l2(n4, t4.iterator, r4.arg);
327
- if ("throw" === o3.type) return r4.method = "throw", r4.arg = o3.arg, r4.delegate = null, v2;
328
- var i3 = o3.arg;
329
- 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);
330
- }
331
- function C(t4) {
332
- var e3 = { tryLoc: t4[0] };
333
- 1 in t4 && (e3.catchLoc = t4[1]), 2 in t4 && (e3.finallyLoc = t4[2], e3.afterLoc = t4[3]), this.tryEntries.push(e3);
334
- }
335
- function j2(t4) {
336
- var e3 = t4.completion || {};
337
- e3.type = "normal", delete e3.arg, t4.completion = e3;
338
- }
339
- function O2(t4) {
340
- this.tryEntries = [{ tryLoc: "root" }], t4.forEach(C, this), this.reset(true);
341
- }
342
- function S2(t4) {
343
- if (t4) {
344
- var r4 = t4[i2];
345
- if (r4) return r4.call(t4);
346
- if ("function" == typeof t4.next) return t4;
347
- if (!isNaN(t4.length)) {
348
- var o3 = -1, a3 = function r5() {
349
- for (; ++o3 < t4.length; ) if (n3.call(t4, o3)) return r5.value = t4[o3], r5.done = false, r5;
350
- return r5.value = e2, r5.done = true, r5;
351
- };
352
- return a3.next = a3;
353
- }
313
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports, r2(e2, n2, o2, i2);
314
+ }
315
+ t2.exports = r2, t2.exports.__esModule = true, t2.exports.default = t2.exports;
316
+ }, 22: function(t2, e, r2) {
317
+ var n2 = r2(20), o2 = r2(23);
318
+ t2.exports = function(t3, e2, r3, i2, u2) {
319
+ return new o2(n2().w(t3, e2, r3, i2), u2 || Promise);
320
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
321
+ }, 23: function(t2, e, r2) {
322
+ var n2 = r2(19), o2 = r2(21);
323
+ t2.exports = function t3(e2, r3) {
324
+ function i2(t4, o3, u3, a2) {
325
+ try {
326
+ var s2 = e2[t4](o3), c2 = s2.value;
327
+ return c2 instanceof n2 ? r3.resolve(c2.v).then(function(t5) {
328
+ i2("next", t5, u3, a2);
329
+ }, function(t5) {
330
+ i2("throw", t5, u3, a2);
331
+ }) : r3.resolve(c2).then(function(t5) {
332
+ s2.value = t5, u3(s2);
333
+ }, function(t5) {
334
+ return i2("throw", t5, u3, a2);
335
+ });
336
+ } catch (t5) {
337
+ a2(t5);
354
338
  }
355
- return { next: T2 };
356
- }
357
- function T2() {
358
- return { value: e2, done: true };
359
339
  }
360
- return m2.prototype = g2, u2(L2, "constructor", g2), u2(g2, "constructor", m2), m2.displayName = u2(g2, s2, "GeneratorFunction"), t3.isGeneratorFunction = function(t4) {
361
- var e3 = "function" == typeof t4 && t4.constructor;
362
- return !!e3 && (e3 === m2 || "GeneratorFunction" === (e3.displayName || e3.name));
363
- }, t3.mark = function(t4) {
364
- return Object.setPrototypeOf ? Object.setPrototypeOf(t4, g2) : (t4.__proto__ = g2, u2(t4, s2, "GeneratorFunction")), t4.prototype = Object.create(L2), t4;
365
- }, t3.awrap = function(t4) {
366
- return { __await: t4 };
367
- }, x2(E2.prototype), u2(E2.prototype, a2, function() {
368
- return this;
369
- }), t3.AsyncIterator = E2, t3.async = function(e3, r4, n4, o3, i3) {
370
- void 0 === i3 && (i3 = Promise);
371
- var a3 = new E2(c2(e3, r4, n4, o3), i3);
372
- return t3.isGeneratorFunction(r4) ? a3 : a3.next().then(function(t4) {
373
- return t4.done ? t4.value : a3.next();
374
- });
375
- }, x2(L2), u2(L2, s2, "Generator"), u2(L2, i2, function() {
340
+ var u2;
341
+ this.next || (o2(t3.prototype), o2(t3.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function() {
376
342
  return this;
377
- }), u2(L2, "toString", function() {
378
- return "[object Generator]";
379
- }), t3.keys = function(t4) {
380
- var e3 = [];
381
- for (var r4 in t4) e3.push(r4);
382
- return e3.reverse(), function r5() {
383
- for (; e3.length; ) {
384
- var n4 = e3.pop();
385
- if (n4 in t4) return r5.value = n4, r5.done = false, r5;
386
- }
387
- return r5.done = true, r5;
388
- };
389
- }, t3.values = S2, O2.prototype = { constructor: O2, reset: function(t4) {
390
- 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);
391
- }, stop: function() {
392
- this.done = true;
393
- var t4 = this.tryEntries[0].completion;
394
- if ("throw" === t4.type) throw t4.arg;
395
- return this.rval;
396
- }, dispatchException: function(t4) {
397
- if (this.done) throw t4;
398
- var r4 = this;
399
- function o3(n4, o4) {
400
- return s3.type = "throw", s3.arg = t4, r4.next = n4, o4 && (r4.method = "next", r4.arg = e2), !!o4;
401
- }
402
- for (var i3 = this.tryEntries.length - 1; i3 >= 0; --i3) {
403
- var a3 = this.tryEntries[i3], s3 = a3.completion;
404
- if ("root" === a3.tryLoc) return o3("end");
405
- if (a3.tryLoc <= this.prev) {
406
- var u3 = n3.call(a3, "catchLoc"), c3 = n3.call(a3, "finallyLoc");
407
- if (u3 && c3) {
408
- if (this.prev < a3.catchLoc) return o3(a3.catchLoc, true);
409
- if (this.prev < a3.finallyLoc) return o3(a3.finallyLoc);
410
- } else if (u3) {
411
- if (this.prev < a3.catchLoc) return o3(a3.catchLoc, true);
412
- } else {
413
- if (!c3) throw new Error("try statement without catch or finally");
414
- if (this.prev < a3.finallyLoc) return o3(a3.finallyLoc);
415
- }
416
- }
417
- }
418
- }, abrupt: function(t4, e3) {
419
- for (var r4 = this.tryEntries.length - 1; r4 >= 0; --r4) {
420
- var o3 = this.tryEntries[r4];
421
- if (o3.tryLoc <= this.prev && n3.call(o3, "finallyLoc") && this.prev < o3.finallyLoc) {
422
- var i3 = o3;
423
- break;
424
- }
425
- }
426
- i3 && ("break" === t4 || "continue" === t4) && i3.tryLoc <= e3 && e3 <= i3.finallyLoc && (i3 = null);
427
- var a3 = i3 ? i3.completion : {};
428
- return a3.type = t4, a3.arg = e3, i3 ? (this.method = "next", this.next = i3.finallyLoc, v2) : this.complete(a3);
429
- }, complete: function(t4, e3) {
430
- if ("throw" === t4.type) throw t4.arg;
431
- 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;
432
- }, finish: function(t4) {
433
- for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
434
- var r4 = this.tryEntries[e3];
435
- if (r4.finallyLoc === t4) return this.complete(r4.completion, r4.afterLoc), j2(r4), v2;
436
- }
437
- }, catch: function(t4) {
438
- for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
439
- var r4 = this.tryEntries[e3];
440
- if (r4.tryLoc === t4) {
441
- var n4 = r4.completion;
442
- if ("throw" === n4.type) {
443
- var o3 = n4.arg;
444
- j2(r4);
445
- }
446
- return o3;
447
- }
343
+ })), o2(this, "_invoke", function(t4, e3, n3) {
344
+ function o3() {
345
+ return new r3(function(e4, r4) {
346
+ i2(t4, n3, e4, r4);
347
+ });
448
348
  }
449
- throw new Error("illegal catch attempt");
450
- }, delegateYield: function(t4, r4, n4) {
451
- return this.delegate = { iterator: S2(t4), resultName: r4, nextLoc: n4 }, "next" === this.method && (this.arg = e2), v2;
452
- } }, t3;
453
- }(t2.exports);
349
+ return u2 = u2 ? u2.then(o3, o3) : o3();
350
+ }, true);
351
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
352
+ }, 3: function(t2, e, r2) {
353
+ var n2 = r2(30)();
354
+ t2.exports = n2;
454
355
  try {
455
356
  regeneratorRuntime = n2;
456
357
  } catch (t3) {
457
358
  "object" == typeof globalThis ? globalThis.regeneratorRuntime = n2 : Function("r", "regeneratorRuntime = r")(n2);
458
359
  }
459
- }, 298: function(t2, e, r2) {
460
- r2.r(e);
461
- var n2 = r2(115);
462
- n2.a.install = function(t3) {
463
- t3.component(n2.a.name, n2.a);
464
- }, e.default = n2.a;
465
- }, 354: function(t2, e, r2) {
466
- var n2 = r2(147);
467
- r2.n(n2).a;
468
- }, 355: function(t2, e, r2) {
469
- var n2 = r2(148);
470
- r2.n(n2).a;
360
+ }, 30: function(t2, e, r2) {
361
+ var n2 = r2(19), o2 = r2(20), i2 = r2(31), u2 = r2(22), a2 = r2(23), s2 = r2(32), c2 = r2(33);
362
+ function l2() {
363
+ var e2 = o2(), r3 = e2.m(l2), f2 = (Object.getPrototypeOf ? Object.getPrototypeOf(r3) : r3.__proto__).constructor;
364
+ function p2(t3) {
365
+ var e3 = "function" == typeof t3 && t3.constructor;
366
+ return !!e3 && (e3 === f2 || "GeneratorFunction" === (e3.displayName || e3.name));
367
+ }
368
+ var d2 = { throw: 1, return: 2, break: 3, continue: 3 };
369
+ function h2(t3) {
370
+ var e3, r4;
371
+ return function(n3) {
372
+ e3 || (e3 = { stop: function() {
373
+ return r4(n3.a, 2);
374
+ }, catch: function() {
375
+ return n3.v;
376
+ }, abrupt: function(t4, e4) {
377
+ return r4(n3.a, d2[t4], e4);
378
+ }, delegateYield: function(t4, o3, i3) {
379
+ return e3.resultName = o3, r4(n3.d, c2(t4), i3);
380
+ }, finish: function(t4) {
381
+ return r4(n3.f, t4);
382
+ } }, r4 = function(t4, r5, o3) {
383
+ n3.p = e3.prev, n3.n = e3.next;
384
+ try {
385
+ return t4(r5, o3);
386
+ } finally {
387
+ e3.next = n3.n;
388
+ }
389
+ }), e3.resultName && (e3[e3.resultName] = n3.v, e3.resultName = void 0), e3.sent = n3.v, e3.next = n3.n;
390
+ try {
391
+ return t3.call(this, e3);
392
+ } finally {
393
+ n3.p = e3.prev, n3.n = e3.next;
394
+ }
395
+ };
396
+ }
397
+ return (t2.exports = l2 = function() {
398
+ return { wrap: function(t3, r4, n3, o3) {
399
+ return e2.w(h2(t3), r4, n3, o3 && o3.reverse());
400
+ }, isGeneratorFunction: p2, mark: e2.m, awrap: function(t3, e3) {
401
+ return new n2(t3, e3);
402
+ }, AsyncIterator: a2, async: function(t3, e3, r4, n3, o3) {
403
+ return (p2(e3) ? u2 : i2)(h2(t3), e3, r4, n3, o3);
404
+ }, keys: s2, values: c2 };
405
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports)();
406
+ }
407
+ t2.exports = l2, t2.exports.__esModule = true, t2.exports.default = t2.exports;
408
+ }, 31: function(t2, e, r2) {
409
+ var n2 = r2(22);
410
+ t2.exports = function(t3, e2, r3, o2, i2) {
411
+ var u2 = n2(t3, e2, r3, o2, i2);
412
+ return u2.next().then(function(t4) {
413
+ return t4.done ? t4.value : u2.next();
414
+ });
415
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
416
+ }, 32: function(t2, e) {
417
+ t2.exports = function(t3) {
418
+ var e2 = Object(t3), r2 = [];
419
+ for (var n2 in e2) r2.unshift(n2);
420
+ return function t4() {
421
+ for (; r2.length; ) if ((n2 = r2.pop()) in e2) return t4.value = n2, t4.done = false, t4;
422
+ return t4.done = true, t4;
423
+ };
424
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
425
+ }, 33: function(t2, e, r2) {
426
+ var n2 = r2(4).default;
427
+ t2.exports = function(t3) {
428
+ if (null != t3) {
429
+ var e2 = t3["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r3 = 0;
430
+ if (e2) return e2.call(t3);
431
+ if ("function" == typeof t3.next) return t3;
432
+ if (!isNaN(t3.length)) return { next: function() {
433
+ return t3 && r3 >= t3.length && (t3 = void 0), { value: t3 && t3[r3++], done: !t3 };
434
+ } };
435
+ }
436
+ throw new TypeError(n2(t3) + " is not iterable");
437
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
438
+ }, 4: function(t2, e) {
439
+ function r2(e2) {
440
+ return t2.exports = r2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) {
441
+ return typeof t3;
442
+ } : function(t3) {
443
+ return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3;
444
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports, r2(e2);
445
+ }
446
+ t2.exports = r2, t2.exports.__esModule = true, t2.exports.default = t2.exports;
447
+ }, 8: function(t2, e) {
448
+ function r2(t3, e2, r3, n2, o2, i2, u2) {
449
+ try {
450
+ var a2 = t3[i2](u2), s2 = a2.value;
451
+ } catch (t4) {
452
+ return void r3(t4);
453
+ }
454
+ a2.done ? e2(s2) : Promise.resolve(s2).then(n2, o2);
455
+ }
456
+ t2.exports = function(t3) {
457
+ return function() {
458
+ var e2 = this, n2 = arguments;
459
+ return new Promise(function(o2, i2) {
460
+ var u2 = t3.apply(e2, n2);
461
+ function a2(t4) {
462
+ r2(u2, o2, i2, a2, s2, "next", t4);
463
+ }
464
+ function s2(t4) {
465
+ r2(u2, o2, i2, a2, s2, "throw", t4);
466
+ }
467
+ a2(void 0);
468
+ });
469
+ };
470
+ }, t2.exports.__esModule = true, t2.exports.default = t2.exports;
471
471
  } }).default;
472
472
  return radio;
473
473
  }
@@ -1463,12 +1463,12 @@ function getCurrentUAInfo() {
1463
1463
  return currentUAInfo || (currentUAInfo = Object.freeze("undefined" != typeof window ? new UAInfo(window.navigator.userAgent, window.navigator) : new UAInfo(""))), currentUAInfo;
1464
1464
  }
1465
1465
  const ua = navigator.userAgent.toLowerCase();
1466
- const uaInfo = getCurrentUAInfo();
1467
- const isAndroid = uaInfo.os.isAndroid;
1468
- const isIOS = uaInfo.os.isIOS;
1469
- const weixinVersion = uaInfo.client.version;
1470
- const isWeixin = uaInfo.client.isWx;
1471
- const isWorkWeixin = uaInfo.client.isWxWork;
1466
+ const uaInfo$1 = getCurrentUAInfo();
1467
+ const isAndroid$1 = uaInfo$1.os.isAndroid;
1468
+ const isIOS$1 = uaInfo$1.os.isIOS;
1469
+ const weixinVersion = uaInfo$1.client.version;
1470
+ const isWeixin = uaInfo$1.client.isWx;
1471
+ const isWorkWeixin = uaInfo$1.client.isWxWork;
1472
1472
  const isPcMiniProgram = (isWeixin || isWorkWeixin) && /miniprogramenv/.test(ua);
1473
1473
  function __isMobile() {
1474
1474
  const ua2 = navigator.userAgent;
@@ -1485,7 +1485,7 @@ function __isMobile() {
1485
1485
  function __isTablet() {
1486
1486
  const ua2 = navigator.userAgent;
1487
1487
  if (/(?:iPad|PlayBook)/.test(ua2)) return true;
1488
- if (uaInfo.os.isAndroid && !/(?:Mobile)/.test(ua2) || /(?:Tablet)/.test(ua2)) return true;
1488
+ if (uaInfo$1.os.isAndroid && !/(?:Mobile)/.test(ua2) || /(?:Tablet)/.test(ua2)) return true;
1489
1489
  return false;
1490
1490
  }
1491
1491
  const isMob = __isMobile();
@@ -1565,6 +1565,11 @@ const useEventBusListener = (event, callback) => {
1565
1565
  getEmitter().off(event, callback);
1566
1566
  });
1567
1567
  };
1568
+ var ScreenOrientationMode = /* @__PURE__ */ ((ScreenOrientationMode2) => {
1569
+ ScreenOrientationMode2["Vertical"] = "Vertical";
1570
+ ScreenOrientationMode2["Horizontal"] = "Horizontal";
1571
+ return ScreenOrientationMode2;
1572
+ })(ScreenOrientationMode || {});
1568
1573
  const useScreenOrientHook = (params = {}) => {
1569
1574
  const { autoListen = true, autoListenCb = () => {
1570
1575
  } } = params;
@@ -1877,7 +1882,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1877
1882
  const props = __props;
1878
1883
  const { injectData: globalInjectData } = useGlobalInject();
1879
1884
  const popupInjectData = useCommonPopupInject();
1880
- const { isHorizontalScreenOrientation, pageFullscreen } = useScreenOrientHook();
1885
+ const { isHorizontalScreenOrientation, pageFullscreen, screenOrientationMode } = useScreenOrientHook();
1881
1886
  const { isFullscreen } = useFullscreen();
1882
1887
  const { dynamicContentHeightPercent, handleScroll, reset: resetContentHeight } = useDynamicHeight(props.dynamicHeightOptions);
1883
1888
  function getOriginAppendTo() {
@@ -1946,7 +1951,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1946
1951
  cls.push(props.horizontalScreenClassName);
1947
1952
  }
1948
1953
  }
1949
- if (pageFullscreen.value) {
1954
+ if (pageFullscreen.value && screenOrientationMode.value !== ScreenOrientationMode.Horizontal) {
1950
1955
  cls.push("plv-product-common-popup--page-fullscreen");
1951
1956
  }
1952
1957
  return cls;
@@ -1992,6 +1997,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1992
1997
  if (props.fillBody) {
1993
1998
  return "90%";
1994
1999
  }
2000
+ if (isHorizontalScreenOrientation.value) return document.documentElement.clientHeight;
1995
2001
  if (props.enableDynamicHeight) {
1996
2002
  return document.documentElement.clientHeight * dynamicContentHeightPercent.value;
1997
2003
  }
@@ -2102,7 +2108,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2102
2108
  expose({
2103
2109
  resetScroll
2104
2110
  });
2105
- 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 };
2111
+ return { __sfc: true, props, emit, globalInjectData, popupInjectData, isHorizontalScreenOrientation, pageFullscreen, screenOrientationMode, 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 };
2106
2112
  }
2107
2113
  });
2108
2114
  function normalizeComponent(scriptExports, render14, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
@@ -2188,7 +2194,15 @@ const productEvents = {
2188
2194
  /**
2189
2195
  * 打开 iframe 链接弹层
2190
2196
  */
2191
- OpenProductIframeLinkPopup: "openProductIframeLinkPopup"
2197
+ OpenProductIframeLinkPopup: "openProductIframeLinkPopup",
2198
+ /**
2199
+ * 打开大卡片弹层
2200
+ */
2201
+ OpenProductBigCardPopup: "openProductBigCardPopup",
2202
+ /**
2203
+ * 打开小卡片弹层
2204
+ */
2205
+ OpenProductSmallCardPopup: "openProductSmallCardPopup"
2192
2206
  };
2193
2207
  const useVue = () => {
2194
2208
  const instanceVm = getCurrentInstance();
@@ -3263,6 +3277,7 @@ function useScrollPagination(request, options = {}) {
3263
3277
  }
3264
3278
  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": "已确认收货" };
3265
3279
  const addressEdit$5 = { "name": "联系人", "namePlaceholder": "请填写联系人姓名", "choiceAddress": "选择地区", "addressPlaceholder": "请选择地区", "phone": "手机号码", "phonePlaceholder": "请填写手机号码", "phoneError": "请输入正确的手机号", "addressDetail": "详细地址", "addressDetailPlaceholder": "请填写详细地址", "error": "请完善信息", "submit": "保存", "deleteConfirm": "确定要删除该地址吗?", "addAddress": "添加地址", "editAddress": "修改地址", "deleteAddress": "删除地址", "addSuccess": "保存成功", "addError": "保存失败", "editSuccess": "修改成功", "editError": "修改失败" };
3280
+ const bigCard$5 = { "title": "商品推荐" };
3266
3281
  const zhCNLang = {
3267
3282
  "common.confirm": "确认",
3268
3283
  "common.cancel": "取消",
@@ -3289,11 +3304,14 @@ const zhCNLang = {
3289
3304
  "product.disableBuy": "暂不支持购买",
3290
3305
  "product.allProduct": "全部商品",
3291
3306
  "product.stock.soldOut": "已抢光",
3307
+ "product.position.detail": "职位详情",
3292
3308
  order: order$5,
3293
- addressEdit: addressEdit$5
3309
+ addressEdit: addressEdit$5,
3310
+ bigCard: bigCard$5
3294
3311
  };
3295
3312
  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": "已確認收貨" };
3296
3313
  const addressEdit$4 = { "name": "聯絡人", "namePlaceholder": "請填寫聯絡人", "choiceAddress": "選擇地區", "addressPlaceholder": "請選擇地區", "phone": "手機號碼", "phonePlaceholder": "請填寫手機號碼", "phoneError": "請輸入正確的手機號", "addressDetail": "詳細地址", "addressDetailPlaceholder": "請填寫詳細地址", "error": "請完善信息", "submit": "保存", "deleteConfirm": "確定要刪除該地址嗎?", "deleteAddress": "刪除地址", "addAddress": "添加地址", "editAddress": "修改地址", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "修改成功", "editError": "修改失敗" };
3314
+ const bigCard$4 = { "title": "商品推薦" };
3297
3315
  const zhTWLang = {
3298
3316
  "common.confirm": "確認",
3299
3317
  "common.cancel": "取消",
@@ -3320,11 +3338,14 @@ const zhTWLang = {
3320
3338
  "product.disableBuy": "暫不支持購買",
3321
3339
  "product.allProduct": "全部商品",
3322
3340
  "product.stock.soldOut": "已搶光",
3341
+ "product.position.detail": "職位詳情",
3323
3342
  order: order$4,
3324
- addressEdit: addressEdit$4
3343
+ addressEdit: addressEdit$4,
3344
+ bigCard: bigCard$4
3325
3345
  };
3326
3346
  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" };
3327
3347
  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" };
3348
+ const bigCard$3 = { "title": "Top Picks" };
3328
3349
  const enLang = {
3329
3350
  "common.confirm": "Confirm",
3330
3351
  "common.cancel": "Cancel",
@@ -3351,11 +3372,14 @@ const enLang = {
3351
3372
  "product.disableBuy": "Purchase not supported",
3352
3373
  "product.allProduct": "Products",
3353
3374
  "product.stock.soldOut": "Sold Out",
3375
+ "product.position.detail": "Job Details",
3354
3376
  order: order$3,
3355
- addressEdit: addressEdit$3
3377
+ addressEdit: addressEdit$3,
3378
+ bigCard: bigCard$3
3356
3379
  };
3357
3380
  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": "確認受け取り完了" };
3358
3381
  const addressEdit$2 = { "name": "連絡先", "namePlaceholder": "連絡先を入力", "choiceAddress": "地域を選択", "addressPlaceholder": "地域を選択", "phone": "電話番号", "phonePlaceholder": "電話番号を入力", "phoneError": "正しい電話番号を入力してください", "addressDetail": "詳細住所", "addressDetailPlaceholder": "詳細住所を入力", "error": "情報を入力してください", "submit": "保存", "deleteConfirm": "この住所を削除しますか?", "deleteAddress": "住所を削除", "addAddress": "住所を追加", "editAddress": "住所を編集", "addSuccess": "保存成功", "addError": "保存失敗", "editSuccess": "編集成功", "editError": "編集失敗" };
3382
+ const bigCard$2 = { "title": "商品推薦" };
3359
3383
  const jaLang = {
3360
3384
  "common.confirm": "確認",
3361
3385
  "common.cancel": "キャンセル",
@@ -3382,11 +3406,14 @@ const jaLang = {
3382
3406
  "product.disableBuy": "購入不可",
3383
3407
  "product.allProduct": "すべての商品",
3384
3408
  "product.stock.soldOut": "売り切れ",
3409
+ "product.position.detail": "職務詳細",
3385
3410
  order: order$2,
3386
- addressEdit: addressEdit$2
3411
+ addressEdit: addressEdit$2,
3412
+ bigCard: bigCard$2
3387
3413
  };
3388
3414
  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": "확인 받기 완료" };
3389
3415
  const addressEdit$1 = { "name": "연락처", "namePlaceholder": "연락처 입력", "choiceAddress": "지역 선택", "addressPlaceholder": "지역 선택", "phone": "전화번호", "phonePlaceholder": "전화번호 입력", "phoneError": "올바른 전화번호를 입력해주세요", "addressDetail": "상세 주소", "addressDetailPlaceholder": "상세 주소 입력", "error": "정보를 입력해주세요.", "submit": "저장", "deleteConfirm": "주소를 삭제하시겠습니까?", "deleteAddress": "주소 삭제", "addAddress": "주소 추가", "editAddress": "주소 수정", "addSuccess": "저장 성공", "addError": "저장 실패", "editSuccess": "수정 성공", "editError": "수정 실패" };
3416
+ const bigCard$1 = { "title": "상품 추천" };
3390
3417
  const koLang = {
3391
3418
  "common.confirm": "확인",
3392
3419
  "common.cancel": "취소",
@@ -3413,11 +3440,14 @@ const koLang = {
3413
3440
  "product.disableBuy": "구매 불가",
3414
3441
  "product.allProduct": "모든 상품",
3415
3442
  "product.stock.soldOut": "품절",
3443
+ "product.position.detail": "직무 상세",
3416
3444
  order: order$1,
3417
- addressEdit: addressEdit$1
3445
+ addressEdit: addressEdit$1,
3446
+ bigCard: bigCard$1
3418
3447
  };
3419
3448
  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": "Получение подтверждено" };
3420
3449
  const addressEdit = { "name": "Контактное лицо", "namePlaceholder": "Пожалуйста, введите имя контактного лица", "choiceAddress": "Выберите регион", "addressPlaceholder": "Пожалуйста, выберите регион", "phone": "Номер телефона", "phonePlaceholder": "Пожалуйста, введите номер телефона", "phoneError": "Пожалуйста, введите правильный номер телефона", "addressDetail": "Подробный адрес", "addressDetailPlaceholder": "Пожалуйста, заполните подробный адрес", "error": "Пожалуйста, дополните информацию", "submit": "Сохранить", "deleteConfirm": "Вы уверены, что хотите удалить этот адрес?", "addAddress": "Добавить адрес", "editAddress": "Изменить адрес", "deleteAddress": "Удалить адрес", "addSuccess": "Успешно сохранено", "addError": "Не удалось сохранить", "editSuccess": "Успешно изменено", "editError": "Не удалось изменить" };
3450
+ const bigCard = { "title": "Товары" };
3421
3451
  const ruLang = {
3422
3452
  "common.confirm": "Подтвердить",
3423
3453
  "common.cancel": "Отмена",
@@ -3444,8 +3474,10 @@ const ruLang = {
3444
3474
  "product.disableBuy": "Покупка временно недоступна",
3445
3475
  "product.allProduct": "Все товары",
3446
3476
  "product.stock.soldOut": "Распродано",
3477
+ "product.position.detail": "Детали вакансии",
3447
3478
  order,
3448
- addressEdit
3479
+ addressEdit,
3480
+ bigCard
3449
3481
  };
3450
3482
  const fullI18nData = {
3451
3483
  [LangType.ZH_CN]: zhCNLang,
@@ -3829,7 +3861,8 @@ function getProductTargetExport(productTarget) {
3829
3861
  ProductExplainStatus: productTarget.ProductExplainStatus,
3830
3862
  ProductMediaType: productTarget.ProductMediaType,
3831
3863
  ProductDeliveryType: productTarget.ProductDeliveryType,
3832
- ProductEvents: productTarget.ProductEvents
3864
+ ProductEvents: productTarget.ProductEvents,
3865
+ ProductPushRule: productTarget.ProductPushRule
3833
3866
  };
3834
3867
  }
3835
3868
  const PRODUCT_PROVIDE_KEY = Symbol("PRODUCT_PROVIDE_KEY");
@@ -3894,17 +3927,25 @@ const useProductStock = (options) => {
3894
3927
  ProductBuyType = result.ProductBuyType;
3895
3928
  }
3896
3929
  function getStock(target) {
3897
- if (!ProductType || !ProductBuyType) {
3930
+ if (!ProductType || !ProductBuyType || !target) {
3898
3931
  return {
3899
3932
  enabled: false,
3900
3933
  stock: 0
3901
3934
  };
3902
3935
  }
3903
- if ((target == null ? void 0 : target.productType) === ProductType.Normal && target.buyType === ProductBuyType.DirectBuy && (target == null ? void 0 : target.stockEnabled)) {
3904
- return {
3905
- enabled: true,
3906
- stock: target.stock
3907
- };
3936
+ if (target.productType === ProductType.Normal) {
3937
+ if (target.buyType === ProductBuyType.Link && target.forceShowSoldOut) {
3938
+ return {
3939
+ enabled: true,
3940
+ stock: 0
3941
+ };
3942
+ }
3943
+ if (target.buyType === ProductBuyType.DirectBuy && (target == null ? void 0 : target.stockEnabled)) {
3944
+ return {
3945
+ enabled: true,
3946
+ stock: target.stock
3947
+ };
3948
+ }
3908
3949
  }
3909
3950
  return {
3910
3951
  enabled: false,
@@ -3928,6 +3969,37 @@ const useProductStock = (options) => {
3928
3969
  isSoldOut
3929
3970
  };
3930
3971
  };
3972
+ const useProductExplain = (options) => {
3973
+ const { props } = options;
3974
+ const productExplainEnabled = ref(false);
3975
+ function getProductExplainEnabled() {
3976
+ return __async(this, null, function* () {
3977
+ if (!props.productTarget) return;
3978
+ const enabled = yield props.productTarget.getProductExplainEnabled();
3979
+ productExplainEnabled.value = enabled;
3980
+ });
3981
+ }
3982
+ function handleClickExplain(product) {
3983
+ return __async(this, null, function* () {
3984
+ if (typeof props.productConfig.customClickExplainHandler === "function") {
3985
+ props.productConfig.customClickExplainHandler(product);
3986
+ return;
3987
+ }
3988
+ if (!props.productTarget) return;
3989
+ const url = yield props.productTarget.generateProductExplainPageUrl({ productId: product.productId });
3990
+ if (url) {
3991
+ window.open(url, "_blank");
3992
+ }
3993
+ });
3994
+ }
3995
+ onMounted(() => {
3996
+ getProductExplainEnabled();
3997
+ });
3998
+ return {
3999
+ productExplainEnabled,
4000
+ handleClickExplain
4001
+ };
4002
+ };
3931
4003
  const liveGif = "data:image/gif;base64,R0lGODlhKgAqAKIEAP7//////v3//////////wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzFEQjYxNzBBNjg5MTFFQjhBN0REMjM4Qzk4RDRFMzciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzFEQjYxNzFBNjg5MTFFQjhBN0REMjM4Qzk4RDRFMzciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENzE0QTU2QkE2NkUxMUVCOEE3REQyMzhDOThENEUzNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENzE0QTU2Q0E2NkUxMUVCOEE3REQyMzhDOThENEUzNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS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";
3932
4004
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
3933
4005
  __name: "product-explain",
@@ -4094,12 +4166,22 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4094
4166
  if (isFreeProduct.value) return $t("product.price.free");
4095
4167
  return props.product.realPrice;
4096
4168
  });
4097
- return { __sfc: true, props, $t, ProductType, ProductPriceType, isFreeProduct, hiddenPriceMarks, displayPrice };
4169
+ const originPrice = computed(() => {
4170
+ if (!props.product || props.product.productType !== ProductType.Normal) return;
4171
+ if (props.product.originPriceType === ProductPriceType.Amount) {
4172
+ if (!props.product.originPrice) {
4173
+ return;
4174
+ }
4175
+ return `¥${props.product.originPrice}`;
4176
+ }
4177
+ return props.product.customOriginalPrice;
4178
+ });
4179
+ return { __sfc: true, props, $t, ProductType, ProductPriceType, isFreeProduct, hiddenPriceMarks, displayPrice, originPrice };
4098
4180
  }
4099
4181
  });
4100
4182
  var _sfc_render$5 = function render8() {
4101
4183
  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
4102
- 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();
4184
+ 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), _setup.originPrice ? _c("span", { staticClass: "plv-product-c-item__original-price" }, [_vm._v(_vm._s(_setup.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();
4103
4185
  };
4104
4186
  var _sfc_staticRenderFns$5 = [];
4105
4187
  var __component__$5 = /* @__PURE__ */ normalizeComponent(
@@ -4156,6 +4238,104 @@ function concat(i2, r2, t2) {
4156
4238
  let e = n2.search || "";
4157
4239
  return e && "&" !== e.slice(-1) && (e += "&"), e += r2, n2.search = e, joinURL(n2);
4158
4240
  }
4241
+ var __awaiter = function(i2, n2, o2, t2) {
4242
+ return new (o2 || (o2 = Promise))(function(e, a2) {
4243
+ function r2(i3) {
4244
+ try {
4245
+ k2(t2.next(i3));
4246
+ } catch (i4) {
4247
+ a2(i4);
4248
+ }
4249
+ }
4250
+ function l2(i3) {
4251
+ try {
4252
+ k2(t2.throw(i3));
4253
+ } catch (i4) {
4254
+ a2(i4);
4255
+ }
4256
+ }
4257
+ function k2(i3) {
4258
+ var n3;
4259
+ i3.done ? e(i3.value) : (n3 = i3.value, n3 instanceof o2 ? n3 : new o2(function(i4) {
4260
+ i4(n3);
4261
+ })).then(r2, l2);
4262
+ }
4263
+ k2((t2 = t2.apply(i2, n2 || [])).next());
4264
+ });
4265
+ };
4266
+ const uaInfo = getCurrentUAInfo();
4267
+ const isAndroid = uaInfo.os.isAndroid;
4268
+ const isIOS = uaInfo.os.isIOS;
4269
+ var LinkType;
4270
+ !function(i2) {
4271
+ i2[i2.Normal = 10] = "Normal", i2[i2.MultiPlatform = 11] = "MultiPlatform", i2[i2.Native = 12] = "Native";
4272
+ }(LinkType || (LinkType = {}));
4273
+ var LinkJumpWay;
4274
+ function getNativeToPointMallFn() {
4275
+ var i2, n2, o2, t2;
4276
+ return isAndroid ? null === (i2 = window.AndroidNative) || void 0 === i2 ? void 0 : i2.toPointMall : isIOS ? null === (t2 = null === (o2 = null === (n2 = window.webkit) || void 0 === n2 ? void 0 : n2.messageHandlers) || void 0 === o2 ? void 0 : o2.gotoPointsMall) || void 0 === t2 ? void 0 : t2.postMessage : void 0;
4277
+ }
4278
+ function toNativeLink(i2) {
4279
+ const { androidLink: n2, iosLink: o2, otherLink: t2 } = i2, e = getNativeToPointMallFn();
4280
+ if (e) {
4281
+ let i3 = isAndroid ? n2 : o2;
4282
+ const t3 = encodeURIComponent(location.href);
4283
+ i3 = concat(i3, { plt_back_uri: t3 });
4284
+ e(JSON.stringify({ url: i3 }));
4285
+ } else window.open(t2, "_blank", "noopener=yes");
4286
+ }
4287
+ function toPlvWebviewBridge(i2) {
4288
+ return __awaiter(this, void 0, void 0, function* () {
4289
+ const { getPlvWebviewSmallWindowSize: n2, getPlvWebviewBridge: o2 } = i2, t2 = (null == n2 ? void 0 : n2()) || { width: 90, height: 160 }, e = yield null == o2 ? void 0 : o2();
4290
+ e && e.sendData("clickProduct", { width: t2.width, height: t2.height, newPage: true, link: i2.link, data: i2.data });
4291
+ });
4292
+ }
4293
+ function toMultiPlatformLink(i2) {
4294
+ return __awaiter(this, void 0, void 0, function* () {
4295
+ const { linkData: n2, isWxMiniProgramEnv: o2, toWxMiniProgram: t2, openLink: e, getLinkParams: a2, isMobile: r2 } = i2, { wxMiniprogramLink: l2, mobileLink: k2, pcLink: d2 } = n2, s2 = (null == r2 ? void 0 : r2()) || false;
4296
+ let u2 = false;
4297
+ try {
4298
+ u2 = (yield null == o2 ? void 0 : o2()) || false;
4299
+ } catch (i3) {
4300
+ u2 = false;
4301
+ }
4302
+ u2 && l2 && t2 ? t2(formatLink(l2, a2)) : s2 && k2 ? e(formatLink(k2, a2), LinkJumpWay.NewWindow) : !s2 && d2 && e(formatLink(d2, a2), LinkJumpWay.NewWindow);
4303
+ });
4304
+ }
4305
+ !function(i2) {
4306
+ i2.PopUp = "POP_UP", i2.NewWindow = "NEW_WINDOW", i2.CurrentWindow = "CURRENT_WINDOW";
4307
+ }(LinkJumpWay || (LinkJumpWay = {}));
4308
+ function formatLink(i2, n2) {
4309
+ let o2 = {};
4310
+ if (n2) {
4311
+ const t2 = n2(i2);
4312
+ o2 = Object.assign({}, o2, t2);
4313
+ }
4314
+ return concat(i2, o2);
4315
+ }
4316
+ function navigateToLink(i2) {
4317
+ const { linkData: n2, openLink: o2, isPlvWebview: t2, getPlvWebviewSmallWindowSize: e, getPlvWebviewBridge: a2, isWxMiniProgramEnv: r2, toWxMiniProgram: l2, getLinkParams: k2, isMobile: d2 } = i2, { linkType: s2 } = n2, u2 = (null == t2 ? void 0 : t2()) || false;
4318
+ if (s2 !== LinkType.Native) {
4319
+ if (u2) {
4320
+ let i3 = "";
4321
+ const { link: o3, mobileLink: t3, mobileAppLink: r3, wxMiniprogramOriginalId: l3, wxMiniprogramLink: d3 } = n2;
4322
+ switch (s2) {
4323
+ case LinkType.Normal:
4324
+ i3 = o3;
4325
+ break;
4326
+ case LinkType.MultiPlatform:
4327
+ i3 = r3 || t3;
4328
+ }
4329
+ let u3 = null;
4330
+ return s2 !== LinkType.Normal && (u3 = { mobileLink: formatLink(t3, k2), wxMiniprogramOriginalId: l3, wxMiniprogramLink: formatLink(d3, k2), mobileAppLink: formatLink(r3, k2) }), void toPlvWebviewBridge({ link: formatLink(i3, k2), data: u3, getPlvWebviewSmallWindowSize: e, getPlvWebviewBridge: a2 });
4331
+ }
4332
+ if (s2 !== LinkType.Normal) s2 === LinkType.MultiPlatform && toMultiPlatformLink({ linkData: n2, getLinkParams: k2, isWxMiniProgramEnv: r2, toWxMiniProgram: l2, openLink: o2, isMobile: d2 });
4333
+ else {
4334
+ const { link: i3, jumpWay: t3 } = n2;
4335
+ o2(formatLink(i3, k2), t3);
4336
+ }
4337
+ } else toNativeLink({ androidLink: formatLink(n2.androidLink, k2), iosLink: formatLink(n2.iosLink, k2), otherLink: formatLink(n2.otherLink, k2) });
4338
+ }
4159
4339
  const useTrackEvent = (iarCore) => {
4160
4340
  const { injectData } = useGlobalInject();
4161
4341
  function trackEvent(data) {
@@ -4169,7 +4349,7 @@ const useTrackEvent = (iarCore) => {
4169
4349
  trackEvent
4170
4350
  };
4171
4351
  };
4172
- const htmlChars = ['"', "'", "&", "<", ">"], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
4352
+ const htmlChars = ['"', "'", "&", "<", ">", " "], htmlEntities = ["&quot;", "&#39;", "&amp;", "&lt;", "&gt;", "&nbsp;"], charsToEntities = /* @__PURE__ */ Object.create(null), entitiesToChars = /* @__PURE__ */ Object.create(null);
4173
4353
  htmlChars.forEach((n2, e) => {
4174
4354
  charsToEntities[n2] = htmlEntities[e], entitiesToChars[htmlEntities[e]] = n2;
4175
4355
  });
@@ -4224,7 +4404,7 @@ const useWeixinButton = (hookOptions = {}) => {
4224
4404
  }
4225
4405
  const wx = yield injectData.getWeixinSdk();
4226
4406
  (_a = wx == null ? void 0 : wx.miniProgram) == null ? void 0 : _a.navigateTo({
4227
- url
4407
+ url: url.startsWith("/") ? url : `/${url}`
4228
4408
  });
4229
4409
  return;
4230
4410
  });
@@ -4279,7 +4459,9 @@ const useWeixinButton = (hookOptions = {}) => {
4279
4459
  watch(
4280
4460
  () => [weixinBtnRef.value, supportWxOpenLaunchWeapp.value, buttonOptions.value],
4281
4461
  () => {
4282
- createWxMiniProgramButton();
4462
+ setTimeout(() => {
4463
+ createWxMiniProgramButton();
4464
+ }, 500);
4283
4465
  },
4284
4466
  {
4285
4467
  immediate: true
@@ -4296,25 +4478,25 @@ const useWeixinButton = (hookOptions = {}) => {
4296
4478
  };
4297
4479
  };
4298
4480
  const useAppNative = () => {
4299
- function getNativeToPointMallFn() {
4481
+ function getNativeToPointMallFn2() {
4300
4482
  var _a, _b, _c, _d;
4301
- if (isAndroid) {
4483
+ if (isAndroid$1) {
4302
4484
  return (_a = window.AndroidNative) == null ? void 0 : _a.toPointMall;
4303
- } else if (isIOS) {
4485
+ } else if (isIOS$1) {
4304
4486
  return (_d = (_c = (_b = window.webkit) == null ? void 0 : _b.messageHandlers) == null ? void 0 : _c.gotoPointsMall) == null ? void 0 : _d.postMessage;
4305
4487
  }
4306
4488
  }
4307
4489
  function supportNativeToPointMall() {
4308
- return !!getNativeToPointMallFn();
4490
+ return !!getNativeToPointMallFn2();
4309
4491
  }
4310
4492
  const supportAppNative = computed(() => {
4311
4493
  return supportNativeToPointMall();
4312
4494
  });
4313
- function toNativeLink(options) {
4495
+ function toNativeLink2(options) {
4314
4496
  const { androidLink, iosLink, otherLink } = options;
4315
- const nativePointMallFn = getNativeToPointMallFn();
4497
+ const nativePointMallFn = getNativeToPointMallFn2();
4316
4498
  if (nativePointMallFn) {
4317
- let url = isAndroid ? androidLink : iosLink;
4499
+ let url = isAndroid$1 ? androidLink : iosLink;
4318
4500
  const pltBackUri = encodeURIComponent(location.href);
4319
4501
  url = concat(url, {
4320
4502
  plt_back_uri: pltBackUri
@@ -4328,60 +4510,10 @@ const useAppNative = () => {
4328
4510
  window.open(otherLink, "_blank", "noopener=yes");
4329
4511
  }
4330
4512
  return {
4331
- getNativeToPointMallFn,
4513
+ getNativeToPointMallFn: getNativeToPointMallFn2,
4332
4514
  supportNativeToPointMall,
4333
4515
  supportAppNative,
4334
- toNativeLink
4335
- };
4336
- };
4337
- const usePolyvWebview = () => {
4338
- const { injectData } = useGlobalInject();
4339
- const isPlvWebview = ref(false);
4340
- const supportPlvWebview = computed(() => {
4341
- return isPlvWebview.value;
4342
- });
4343
- function getPlvWebviewBridge() {
4344
- return __async(this, null, function* () {
4345
- if (injectData.getPlvWebviewBridge) {
4346
- return yield injectData.getPlvWebviewBridge();
4347
- }
4348
- });
4349
- }
4350
- function toPlvWebviewBridge(options) {
4351
- return __async(this, null, function* () {
4352
- if (!supportPlvWebview.value) {
4353
- return;
4354
- }
4355
- let plvWebviewDataSize = {
4356
- width: 90,
4357
- height: 160
4358
- };
4359
- if (injectData.getPlvWebviewSmallWindowSize) {
4360
- plvWebviewDataSize = injectData.getPlvWebviewSmallWindowSize();
4361
- }
4362
- const webviewBridge = yield getPlvWebviewBridge();
4363
- if (!webviewBridge) {
4364
- return;
4365
- }
4366
- webviewBridge.sendData("clickProduct", {
4367
- width: plvWebviewDataSize.width,
4368
- height: plvWebviewDataSize.height,
4369
- newPage: true,
4370
- link: options.link,
4371
- data: options.data
4372
- });
4373
- });
4374
- }
4375
- onMounted(() => {
4376
- if (injectData.isPlvWebview) {
4377
- isPlvWebview.value = injectData.isPlvWebview();
4378
- }
4379
- });
4380
- return {
4381
- isPlvWebview,
4382
- supportPlvWebview,
4383
- getPlvWebviewBridge,
4384
- toPlvWebviewBridge
4516
+ toNativeLink: toNativeLink2
4385
4517
  };
4386
4518
  };
4387
4519
  const productButtonProps = () => __spreadProps(__spreadValues({}, productProps()), {
@@ -4400,12 +4532,12 @@ const useProductButton = (options) => {
4400
4532
  const { isSoldOut } = useProductStock({
4401
4533
  product: () => props.productData
4402
4534
  });
4403
- const { getEmitter } = useGlobalInject();
4535
+ const { getEmitter, injectData } = useGlobalInject();
4404
4536
  const { $t } = useI18n();
4405
4537
  const productConfig = computed(() => {
4406
4538
  return props.productConfig;
4407
4539
  });
4408
- const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram } = useWeixinButton({
4540
+ const { isWxMiniProgramWebview, supportWxOpenLaunchWeapp, weixinBtnRef, toWxMiniProgram, supportWxMiniProgramNavigateTo } = useWeixinButton({
4409
4541
  getButtonOptions: () => {
4410
4542
  const productData = props.productData;
4411
4543
  return {
@@ -4416,10 +4548,9 @@ const useProductButton = (options) => {
4416
4548
  },
4417
4549
  launchCallback: () => sendClickEvent()
4418
4550
  });
4419
- const { supportAppNative, toNativeLink } = useAppNative();
4420
- const { supportPlvWebview, toPlvWebviewBridge } = usePolyvWebview();
4551
+ const { supportAppNative } = useAppNative();
4421
4552
  const { trackEvent } = useTrackEvent(props.productTarget.iarCore);
4422
- const { ProductBuyType, ProductType, ProductLinkType, ProductLinkJumpWay } = getProductTargetExport(props.productTarget);
4553
+ const { ProductBuyType, ProductType } = getProductTargetExport(props.productTarget);
4423
4554
  const isDirectBuy = computed(() => {
4424
4555
  return props.productData.productType === ProductType.Normal && props.productData.buyType === ProductBuyType.DirectBuy;
4425
4556
  });
@@ -4446,13 +4577,13 @@ const useProductButton = (options) => {
4446
4577
  if (isDirectBuy.value) {
4447
4578
  return false;
4448
4579
  }
4449
- if (productData.linkType === ProductLinkType.Normal) {
4580
+ if (productData.linkType === LinkType.Normal) {
4450
4581
  return !productData.link;
4451
4582
  }
4452
- if (productData.linkType === ProductLinkType.MultiPlatform) {
4583
+ if (productData.linkType === LinkType.MultiPlatform) {
4453
4584
  return isMultiPlatformDisabled.value;
4454
4585
  }
4455
- if (productData.linkType === ProductLinkType.Native) {
4586
+ if (productData.linkType === LinkType.Native) {
4456
4587
  if (supportAppNative.value) {
4457
4588
  return !productData.androidLink && !productData.iosLink;
4458
4589
  }
@@ -4511,9 +4642,26 @@ const useProductButton = (options) => {
4511
4642
  }
4512
4643
  return concat(url, urlParams);
4513
4644
  }
4645
+ function getLinkData() {
4646
+ const productData = props.productData;
4647
+ const linkData = {
4648
+ linkType: productData.linkType,
4649
+ jumpWay: productData.jumpWay,
4650
+ link: productData.link,
4651
+ pcLink: productData.pcLink,
4652
+ mobileLink: productData.mobileLink,
4653
+ mobileAppLink: productData.mobileAppLink,
4654
+ androidLink: productData.androidLink,
4655
+ iosLink: productData.iosLink,
4656
+ otherLink: productData.otherLink,
4657
+ wxMiniprogramOriginalId: productData.wxMiniprogramOriginalId,
4658
+ wxMiniprogramAppId: productData.wxMiniprogramAppId,
4659
+ wxMiniprogramLink: productData.wxMiniprogramLink
4660
+ };
4661
+ return linkData;
4662
+ }
4514
4663
  function onClickLinkBtn() {
4515
4664
  const productData = props.productData;
4516
- const { linkType } = productData;
4517
4665
  sendClickEvent();
4518
4666
  if (productConfig.value.customClickButtonHandler) {
4519
4667
  productConfig.value.customClickButtonHandler(productData);
@@ -4523,70 +4671,28 @@ const useProductButton = (options) => {
4523
4671
  toDirectBuy();
4524
4672
  return;
4525
4673
  }
4526
- if (productData.linkType === ProductLinkType.Native) {
4527
- toNativeLink({
4528
- androidLink: formatProductLink(productData.androidLink),
4529
- iosLink: formatProductLink(productData.iosLink),
4530
- otherLink: formatProductLink(productData.otherLink)
4531
- });
4532
- return;
4533
- }
4534
- if (supportPlvWebview.value) {
4535
- let linkTo = "";
4536
- const { link, mobileLink, mobileAppLink, wxMiniprogramOriginalId, wxMiniprogramLink } = productData;
4537
- switch (productData.linkType) {
4538
- case ProductLinkType.Normal:
4539
- linkTo = link;
4540
- break;
4541
- case ProductLinkType.MultiPlatform:
4542
- linkTo = mobileAppLink || mobileLink;
4543
- break;
4544
- }
4545
- let otherData = null;
4546
- if (productData.linkType !== ProductLinkType.Normal) {
4547
- otherData = {
4548
- mobileLink: formatProductLink(mobileLink),
4549
- wxMiniprogramOriginalId,
4550
- wxMiniprogramLink: formatProductLink(wxMiniprogramLink),
4551
- mobileAppLink: formatProductLink(mobileAppLink)
4552
- };
4553
- }
4554
- toPlvWebviewBridge({
4555
- link: formatProductLink(linkTo),
4556
- data: otherData
4557
- });
4558
- return;
4559
- }
4560
- if (linkType === ProductLinkType.Normal) {
4561
- const { link, jumpWay } = productData;
4562
- openLink(formatProductLink(link), jumpWay);
4563
- return;
4564
- }
4565
- if (linkType === ProductLinkType.MultiPlatform) {
4566
- const { wxMiniprogramLink, mobileLink, pcLink } = productData;
4567
- if (isWxMiniProgramWebview.value && wxMiniprogramLink) {
4568
- toWxMiniProgram(formatProductLink(wxMiniprogramLink));
4569
- return;
4570
- }
4571
- if (isMobile) {
4572
- openLink(formatProductLink(mobileLink), ProductLinkJumpWay.NewWindow);
4573
- return;
4574
- }
4575
- if (!isMobile) {
4576
- openLink(formatProductLink(pcLink), ProductLinkJumpWay.NewWindow);
4577
- return;
4578
- }
4579
- }
4674
+ const linkData = getLinkData();
4675
+ navigateToLink({
4676
+ linkData,
4677
+ getLinkParams: productConfig.value.getLinkParams,
4678
+ openLink,
4679
+ isPlvWebview: injectData.isPlvWebview,
4680
+ isMobile: injectData.isMobile,
4681
+ getPlvWebviewBridge: injectData.getPlvWebviewBridge,
4682
+ getPlvWebviewSmallWindowSize: injectData.getPlvWebviewSmallWindowSize,
4683
+ isWxMiniProgramEnv: supportWxMiniProgramNavigateTo,
4684
+ toWxMiniProgram
4685
+ });
4580
4686
  }
4581
4687
  function openLink(url, jumpWay) {
4582
4688
  switch (jumpWay) {
4583
- case ProductLinkJumpWay.NewWindow:
4689
+ case LinkJumpWay.NewWindow:
4584
4690
  window.open(url, "_blank", "noopener=yes");
4585
4691
  break;
4586
- case ProductLinkJumpWay.CurrentWindow:
4692
+ case LinkJumpWay.CurrentWindow:
4587
4693
  window.location.href = url;
4588
4694
  break;
4589
- case ProductLinkJumpWay.PopUp:
4695
+ case LinkJumpWay.PopUp:
4590
4696
  getEmitter().emit(productEvents.OpenProductIframeLinkPopup, url);
4591
4697
  break;
4592
4698
  default:
@@ -4609,7 +4715,7 @@ const useProductButton = (options) => {
4609
4715
  name: productData.name,
4610
4716
  productId: productData.productId,
4611
4717
  productType: productData.productType,
4612
- productPushRule: data == null ? void 0 : data.pushRule
4718
+ productPushRule: (data == null ? void 0 : data.pushRule) || ""
4613
4719
  }
4614
4720
  });
4615
4721
  props.productTarget.sendProductClickEvent({
@@ -4663,84 +4769,210 @@ var __component__$4 = /* @__PURE__ */ normalizeComponent(
4663
4769
  );
4664
4770
  const ProductButton = __component__$4.exports;
4665
4771
  const supportWebP = /* @__PURE__ */ (() => {
4666
- let A2;
4772
+ let e;
4667
4773
  return () => {
4668
- if (null == A2) try {
4669
- A2 = function() {
4670
- const A3 = document.createElement("canvas");
4671
- if (A3.getContext && A3.getContext("2d")) {
4672
- const e = "image/webp";
4673
- return 0 === A3.toDataURL(e).indexOf("data:" + e);
4774
+ if (null == e) try {
4775
+ e = function() {
4776
+ const e2 = document.createElement("canvas");
4777
+ if (e2.getContext && e2.getContext("2d")) {
4778
+ const A2 = "image/webp";
4779
+ return 0 === e2.toDataURL(A2).indexOf("data:" + A2);
4674
4780
  }
4675
4781
  return false;
4782
+ }() || function() {
4783
+ let e2 = false;
4784
+ const A2 = navigator.userAgent, t2 = /\bOS\s([\d_.]+)\slike\sMac\sOS\sX\b/.exec(A2);
4785
+ if (t2) e2 = parseInt(t2[1]) >= 14;
4786
+ else {
4787
+ const t3 = /\bVersion\/([\d.]+)\sSafari\b/.exec(A2);
4788
+ t3 && (e2 = parseInt(t3[1]) >= 16);
4789
+ }
4790
+ return e2;
4676
4791
  }();
4677
- } catch (e) {
4678
- A2 = false;
4792
+ } catch (A2) {
4793
+ e = false;
4679
4794
  }
4680
- return A2;
4795
+ return e;
4681
4796
  };
4682
4797
  })();
4683
- function getExtname(A2) {
4684
- const e = (A2 || "").split("."), t2 = e[e.length - 1];
4798
+ function getExtname(e) {
4799
+ const A2 = (e || "").split("."), t2 = A2[A2.length - 1];
4685
4800
  return t2 ? t2.toLowerCase() : "";
4686
4801
  }
4687
- function handleCompressOptions(A2) {
4688
- var e, t2;
4689
- const r2 = "number" == typeof A2 ? { width: A2 } : A2;
4690
- return r2.allowJPG = null === (e = r2.allowJPG) || void 0 === e || e, r2.allowWebP = null !== (t2 = r2.allowWebP) && void 0 !== t2 ? t2 : "auto", r2;
4802
+ function handleCompressOptions(e) {
4803
+ var A2, t2;
4804
+ const n2 = "number" == typeof e ? { width: e } : e;
4805
+ return n2.allowJPG = null === (A2 = n2.allowJPG) || void 0 === A2 || A2, n2.allowWebP = null !== (t2 = n2.allowWebP) && void 0 !== t2 ? t2 : "auto", n2;
4691
4806
  }
4692
- function createURLObject(A2) {
4693
- let e;
4807
+ function createURLObject(e) {
4808
+ let A2;
4694
4809
  if ("undefined" != typeof document) {
4695
4810
  const t2 = document.createElement("a");
4696
- t2.href = A2, e = t2;
4811
+ t2.href = e, A2 = t2;
4697
4812
  } else if ("function" == typeof URL) try {
4698
- e = new URL(/^\/\//.test(A2) ? "https:" + A2 : A2);
4699
- } catch (A3) {
4813
+ A2 = new URL(/^\/\//.test(e) ? "https:" + e : e);
4814
+ } catch (e2) {
4700
4815
  }
4701
- return e;
4816
+ return A2;
4702
4817
  }
4703
- function genOSSCompressParams(A2, e) {
4818
+ function genOSSCompressParams(e, A2) {
4704
4819
  let t2 = "";
4705
- 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;
4820
+ return null == A2.width && null == A2.height || (t2 += "/resize", A2.width && (t2 += ",w_" + A2.width), A2.height && (t2 += ",h_" + A2.height), t2 += ",limit_1"), A2.allowAVIF && "gif" !== e ? t2 += "/format,avif" : true === A2.allowWebP || "auto" === A2.allowWebP && supportWebP() ? t2 += "/format,webp/quality,Q_80" : A2.allowJPG && "gif" !== e && (t2 += "/format,jpg/quality,Q_80"), t2;
4706
4821
  }
4707
- function setOSSCompressParams(A2, e) {
4822
+ function setOSSCompressParams(e, A2) {
4708
4823
  let t2 = false;
4709
- 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;
4710
- }
4711
- function ossCompress(A2, e) {
4712
- const t2 = createURLObject(A2);
4713
- if (!t2) return A2;
4714
- if (!/\.videocc\.net$/i.test(t2.hostname)) return A2;
4715
- const r2 = genOSSCompressParams(getExtname(t2.pathname.split("/").pop()), handleCompressOptions(e));
4824
+ return e = e.replace(/([?&]x-oss-process)(?:=([^&]*))?/, (e2, n2, r2) => (t2 = true, /^image/.test(r2) ? n2 + "=" + r2.replace(/\/(?:resize|format|quality)[^/]*/gi, "") + A2 : e2)), t2 ? e : e + (-1 === e.indexOf("?") ? "?" : "&") + "x-oss-process=image" + A2;
4825
+ }
4826
+ function ossCompress(e, A2) {
4827
+ const t2 = createURLObject(e);
4828
+ if (!t2) return e;
4829
+ const n2 = getExtname(t2.pathname.split("/").pop());
4830
+ if (!/\.videocc\.net$/i.test(t2.hostname) || "svg" === n2) return e;
4831
+ const r2 = genOSSCompressParams(n2, handleCompressOptions(A2));
4716
4832
  return r2 && (t2.search = setOSSCompressParams(t2.search, r2)), t2.href;
4717
4833
  }
4834
+ var ProductItemScene = /* @__PURE__ */ ((ProductItemScene2) => {
4835
+ ProductItemScene2["ProductList"] = "productList";
4836
+ ProductItemScene2["BigCard"] = "bigCard";
4837
+ ProductItemScene2["AggregateStation"] = "aggregateStation";
4838
+ return ProductItemScene2;
4839
+ })(ProductItemScene || {});
4840
+ const useProductTrack = (options) => {
4841
+ const { productTarget } = options;
4842
+ const { ProductType } = getProductTargetExport(productTarget);
4843
+ const { trackEvent } = useTrackEvent(productTarget == null ? void 0 : productTarget.iarCore);
4844
+ const trackedProductIds = ref({});
4845
+ const productListRef = ref(null);
4846
+ const productItemsRef = shallowRef([]);
4847
+ function setItemRef(el) {
4848
+ if (el) {
4849
+ productItemsRef.value.push(el);
4850
+ }
4851
+ }
4852
+ function trackProductViewEvent(productData) {
4853
+ const specAttrs = {
4854
+ name: productData.name,
4855
+ realPrice: productData.productType === ProductType.Normal ? productData.realPrice : "",
4856
+ productId: productData.productId,
4857
+ productType: productData.productType,
4858
+ productFeature: JSON.stringify(productData.featureTags)
4859
+ };
4860
+ if (productData.productType === ProductType.Normal && productData.originPrice !== void 0) {
4861
+ specAttrs.price = productData.originPrice;
4862
+ }
4863
+ trackEvent({
4864
+ event_id: "product_list_item_view",
4865
+ event_type: "show",
4866
+ spec_attrs: specAttrs
4867
+ });
4868
+ }
4869
+ function isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom) {
4870
+ const offsetTop = element.offsetTop;
4871
+ const offsetHeight = element.offsetHeight;
4872
+ const elementBottom = offsetTop + offsetHeight;
4873
+ const isFullyAbove = elementBottom <= containerScrollTop;
4874
+ const isBottomBelowViewportBottom = containerViewportBottom < elementBottom;
4875
+ return !isFullyAbove && !isBottomBelowViewportBottom;
4876
+ }
4877
+ function checkAndTrackProductItem(itemInstance, containerScrollTop, containerViewportBottom) {
4878
+ if (!itemInstance || !itemInstance.$el || !itemInstance.product || !itemInstance.product.productId) {
4879
+ return;
4880
+ }
4881
+ const element = itemInstance.$el;
4882
+ const productId = itemInstance.product.productId;
4883
+ const isVisible = isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom);
4884
+ if (isVisible && !trackedProductIds.value[productId]) {
4885
+ trackedProductIds.value = __spreadProps(__spreadValues({}, trackedProductIds.value), { [productId]: true });
4886
+ trackProductViewEvent(itemInstance.product);
4887
+ }
4888
+ }
4889
+ function trackProduct() {
4890
+ return __async(this, null, function* () {
4891
+ yield nextTick();
4892
+ const container = productListRef.value;
4893
+ if (!container || !productItemsRef.value.length) return;
4894
+ const scrollTop = container.scrollTop;
4895
+ const scrollClientHeight = container.clientHeight;
4896
+ const viewportBottom = scrollTop + scrollClientHeight;
4897
+ productItemsRef.value.forEach((itemInstance) => {
4898
+ checkAndTrackProductItem(itemInstance, scrollTop, viewportBottom);
4899
+ });
4900
+ });
4901
+ }
4902
+ function clearTrackedProducts() {
4903
+ trackedProductIds.value = {};
4904
+ productItemsRef.value = [];
4905
+ }
4906
+ function getCommonSpecAttrs(productData) {
4907
+ return {
4908
+ clickTime: (/* @__PURE__ */ new Date()).getTime(),
4909
+ linkType: isMobile ? "mobile" : "pc",
4910
+ productName: productData.name,
4911
+ productId: productData.productId,
4912
+ productType: productData.productType,
4913
+ feature: JSON.stringify(productData.featureTags),
4914
+ price: productData.productType === ProductType.Normal ? productData.originPrice : "",
4915
+ realPrice: productData.productType === ProductType.Normal ? productData.realPrice : ""
4916
+ };
4917
+ }
4918
+ function trackProductItemClick(productData) {
4919
+ trackEvent({
4920
+ event_id: "product_list_item_click",
4921
+ event_type: "click",
4922
+ spec_attrs: __spreadValues({}, getCommonSpecAttrs(productData))
4923
+ });
4924
+ }
4925
+ function trackProductPushItemClick(productData) {
4926
+ trackEvent({
4927
+ event_id: "product_push_item_click",
4928
+ event_type: "click",
4929
+ spec_attrs: __spreadProps(__spreadValues({}, getCommonSpecAttrs(productData)), {
4930
+ pushId: productData.pushLogId || ""
4931
+ })
4932
+ });
4933
+ }
4934
+ function trackProductPushItemView(productData) {
4935
+ trackEvent({
4936
+ event_id: "product_push_item_view",
4937
+ event_type: "show",
4938
+ spec_attrs: {
4939
+ linkType: isMobile ? "mobile" : "pc",
4940
+ productId: productData.productId,
4941
+ pushId: productData.pushLogId || ""
4942
+ }
4943
+ });
4944
+ }
4945
+ return {
4946
+ productListRef,
4947
+ setItemRef,
4948
+ trackProduct,
4949
+ clearTrackedProducts,
4950
+ trackProductItemClick,
4951
+ trackProductPushItemClick,
4952
+ trackProductPushItemView
4953
+ };
4954
+ };
4718
4955
  const productItemProps = () => __spreadProps(__spreadValues({}, productProps()), {
4719
- product: PropUtils.object().isRequired
4956
+ product: PropUtils.object().isRequired,
4957
+ scene: PropUtils.enum()
4720
4958
  });
4721
4959
  const productItemEmits = () => ({
4722
- "click-explain": emitFunc(),
4723
4960
  "click-product-item": emitFunc(),
4724
- "direct-buy": emitFunc()
4961
+ "direct-buy": emitFunc(),
4962
+ "open-position-detail": emitFunc()
4725
4963
  });
4726
4964
  const useProductItem = (options) => {
4727
4965
  const { props, emit } = options;
4728
4966
  const { ProductType, ProductBuyType } = getProductTargetExport(props.productTarget);
4729
4967
  const { getEmitter } = useGlobalInject();
4730
- const productExplainEnabled = ref(false);
4968
+ const { productExplainEnabled, handleClickExplain } = useProductExplain({ props });
4969
+ const { trackProductItemClick, trackProductPushItemClick } = useProductTrack({ productTarget: props.productTarget });
4731
4970
  const isProductRedirectLinkDirectly = ref(false);
4732
4971
  const shouldEllipsisTitle = computed(() => {
4733
4972
  const { product } = props;
4734
4973
  return !!(product.name && product.featureTags.length && (product.description && product.productType !== ProductType.Position));
4735
4974
  });
4736
- function setProductExplainEnabled() {
4737
- return __async(this, null, function* () {
4738
- if (!props.productTarget) return;
4739
- const enabled = yield props.productTarget.getProductExplainEnabled();
4740
- productExplainEnabled.value = enabled;
4741
- });
4742
- }
4743
- function setIsProductRedirectLinkDirectly() {
4975
+ function getIsProductRedirectLinkDirectly() {
4744
4976
  return __async(this, null, function* () {
4745
4977
  const { product, productTarget } = props;
4746
4978
  if (!product || !productTarget) return false;
@@ -4748,11 +4980,13 @@ const useProductItem = (options) => {
4748
4980
  isProductRedirectLinkDirectly.value = product.productType === ProductType.Normal && product.buyType === ProductBuyType.Link && enabled;
4749
4981
  });
4750
4982
  }
4751
- function onClickExplain(product) {
4752
- emit("click-explain", product);
4753
- }
4754
4983
  function onClickProductItem() {
4755
4984
  emit("click-product-item", props.product);
4985
+ if (props.scene === ProductItemScene.BigCard) {
4986
+ trackProductPushItemClick(props.product);
4987
+ } else {
4988
+ trackProductItemClick(props.product);
4989
+ }
4756
4990
  if (props.product.productType !== ProductType.Finance) {
4757
4991
  getEmitter().emit(productEvents.OpenProductDetailPopup, props.product);
4758
4992
  }
@@ -4760,18 +4994,15 @@ const useProductItem = (options) => {
4760
4994
  function onDirectBuy(product) {
4761
4995
  emit("direct-buy", product);
4762
4996
  }
4763
- onMounted(() => {
4764
- setProductExplainEnabled();
4765
- });
4766
4997
  watchEffect(() => {
4767
- setIsProductRedirectLinkDirectly();
4998
+ getIsProductRedirectLinkDirectly();
4768
4999
  });
4769
5000
  return {
4770
5001
  productExplainEnabled,
4771
5002
  isProductRedirectLinkDirectly,
4772
5003
  shouldEllipsisTitle,
4773
5004
  onDirectBuy,
4774
- onClickExplain,
5005
+ handleClickExplain,
4775
5006
  onClickProductItem
4776
5007
  };
4777
5008
  };
@@ -4781,7 +5012,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4781
5012
  emits: productItemEmits(),
4782
5013
  setup(__props, { emit }) {
4783
5014
  const props = __props;
4784
- const { ProductExplainStatus } = getProductTargetExport(props.productTarget);
5015
+ const { ProductExplainStatus, ProductType } = getProductTargetExport(props.productTarget);
4785
5016
  const { $t } = useI18n();
4786
5017
  const { isSoldOut } = useProductStock({
4787
5018
  product: () => props.product
@@ -4791,22 +5022,25 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4791
5022
  isProductRedirectLinkDirectly,
4792
5023
  shouldEllipsisTitle,
4793
5024
  onDirectBuy,
4794
- onClickExplain,
4795
- onClickProductItem
5025
+ onClickProductItem,
5026
+ handleClickExplain
4796
5027
  } = useProductItem({
4797
5028
  props,
4798
5029
  emit
4799
5030
  });
4800
- return { __sfc: true, props, emit, ProductExplainStatus, $t, isSoldOut, productExplainEnabled, isProductRedirectLinkDirectly, shouldEllipsisTitle, onDirectBuy, onClickExplain, onClickProductItem, ProductExplain, ProductTitle, ProductFeatureTag, ProductPrice, ProductButton, ossCompress };
5031
+ return { __sfc: true, props, emit, ProductExplainStatus, ProductType, $t, isSoldOut, productExplainEnabled, isProductRedirectLinkDirectly, shouldEllipsisTitle, onDirectBuy, onClickProductItem, handleClickExplain, ProductExplain, ProductTitle, ProductFeatureTag, ProductPrice, ProductButton, ossCompress, ProductItemScene };
4801
5032
  }
4802
5033
  });
4803
5034
  var _sfc_render$3 = function render10() {
4804
5035
  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
4805
- 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) {
5036
+ return _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig, "disabled": !_setup.isProductRedirectLinkDirectly } }, [_c("div", { class: ["plv-product-item", { "plv-product-item-no-cover": !_vm.product.cover, "plv-product-item--topping": _vm.product.isTopping }], on: { "click": _setup.onClickProductItem } }, [_vm.product.cover ? _c("div", { staticClass: "plv-product-item__cover-area" }, [_c("img", { staticClass: "plv-product-item__cover", attrs: { "src": _setup.ossCompress(_vm.product.cover, { width: 300 }), "alt": _vm.product.name } }), _setup.isSoldOut ? _c("div", { staticClass: "plv-product-item__cover-stock" }, [_vm._v(" - " + _vm._s(_setup.$t("product.stock.soldOut")) + " - ")]) : _vm._e(), _vm.product.displayNumber ? _c("div", { staticClass: "plv-product-item__ranking plv-product-item__ranking--cover plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e()], 1) : _vm._e(), _c("div", { staticClass: "plv-product-item__content" }, [_c("div", { staticClass: "plv-product-item__title-area" }, [_vm.product.displayNumber && !_vm.product.cover ? _c("div", { staticClass: "plv-product-item__ranking plv-font-din-pro-regular" }, [_vm._v(" " + _vm._s(_vm.product.displayNumber) + " ")]) : _vm._e(), _setup.productExplainEnabled && !_vm.product.cover && _vm.product.explainStatus !== _setup.ProductExplainStatus.Explained ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explain", attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e(), _c(_setup.ProductTitle, { attrs: { "title": _vm.product.name, "use-ellipsis": _setup.shouldEllipsisTitle } })], 1), _c("div", { staticClass: "plv-product-item__tags" }, _vm._l(_vm.product.featureTags, function(tag, index) {
4806
5037
  return _c(_setup.ProductFeatureTag, { key: index, attrs: { "tag": tag } });
4807
- }), 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 }) {
5038
+ }), 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 } }), _vm.product.productType === _setup.ProductType.Position && _vm.productConfig.isProductWebview ? _c("div", { staticClass: "plv-product-item__position-detail-button", on: { "click": function($event) {
5039
+ $event.stopPropagation();
5040
+ return _setup.emit("open-position-detail", _vm.product);
5041
+ } } }, [_vm._v(" " + _vm._s(_setup.$t("product.position.detail")) + " ")]) : _vm._e(), _setup.productExplainEnabled && _vm.product.explainStatus === _setup.ProductExplainStatus.Explained && !_vm.product.cover ? _c(_setup.ProductExplain, { staticClass: "plv-product-item__explained--no-cover", class: { "plv-product-item__explained--no-cover-position": _vm.product.productType === _setup.ProductType.Position && _vm.productConfig.isProductWebview }, attrs: { "product": _vm.product, "product-target": _vm.productTarget }, on: { "click-explain": _setup.handleClickExplain } }) : _vm._e(), _vm.scene !== _setup.ProductItemScene.BigCard ? _c(_setup.ProductButton, { attrs: { "product-data": _vm.product, "product-target": _vm.productTarget, "product-config": _vm.productConfig }, on: { "direct-buy": _setup.onDirectBuy }, scopedSlots: _vm._u([{ key: "default", fn: function({ buttonText, disabled }) {
4808
5042
  return [_c("button", { staticClass: "plv-product-item__buy-button", class: { "plv-product-item__buy-button--disabled": disabled } }, [_vm._v(" " + _vm._s(buttonText) + " ")])];
4809
- } }]) })], 1)])])]);
5043
+ } }], null, false, 477326030) }) : _vm._e()], 1)])])]);
4810
5044
  };
4811
5045
  var _sfc_staticRenderFns$3 = [];
4812
5046
  var __component__$3 = /* @__PURE__ */ normalizeComponent(
@@ -4833,79 +5067,6 @@ var __component__$2 = /* @__PURE__ */ normalizeComponent(
4833
5067
  _sfc_staticRenderFns$2
4834
5068
  );
4835
5069
  const ProductEmpty = __component__$2.exports;
4836
- const useProductTrack = (options) => {
4837
- const { productTarget, ProductType } = options;
4838
- const { trackEvent } = useTrackEvent(productTarget == null ? void 0 : productTarget.iarCore);
4839
- const trackedProductIds = ref({});
4840
- const productListRef = ref(null);
4841
- const productItemsRef = shallowRef([]);
4842
- function setItemRef(el) {
4843
- if (el) {
4844
- productItemsRef.value.push(el);
4845
- }
4846
- }
4847
- function trackProductViewEvent(productData) {
4848
- const specAttrs = {
4849
- exposureTime: (/* @__PURE__ */ new Date()).getTime(),
4850
- name: productData.name,
4851
- realPrice: productData.productType === ProductType.Normal ? productData.realPrice : "",
4852
- productId: productData.productId,
4853
- productType: productData.productType,
4854
- productFeature: JSON.stringify(productData.featureTags)
4855
- };
4856
- if (productData.productType === ProductType.Normal && productData.originPrice !== void 0) {
4857
- specAttrs.price = productData.originPrice;
4858
- }
4859
- trackEvent({
4860
- event_id: "product_list_item_view",
4861
- event_type: "show",
4862
- spec_attrs: specAttrs
4863
- });
4864
- }
4865
- function isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom) {
4866
- const offsetTop = element.offsetTop;
4867
- const offsetHeight = element.offsetHeight;
4868
- const elementBottom = offsetTop + offsetHeight;
4869
- const isFullyAbove = elementBottom <= containerScrollTop;
4870
- const isBottomBelowViewportBottom = containerViewportBottom < elementBottom;
4871
- return !isFullyAbove && !isBottomBelowViewportBottom;
4872
- }
4873
- function checkAndTrackProductItem(itemInstance, containerScrollTop, containerViewportBottom) {
4874
- if (!itemInstance || !itemInstance.$el || !itemInstance.product || !itemInstance.product.productId) {
4875
- return;
4876
- }
4877
- const element = itemInstance.$el;
4878
- const productId = itemInstance.product.productId;
4879
- const isVisible = isElementVisibleInScrollContainer(element, containerScrollTop, containerViewportBottom);
4880
- if (isVisible && !trackedProductIds.value[productId]) {
4881
- trackedProductIds.value = __spreadProps(__spreadValues({}, trackedProductIds.value), { [productId]: true });
4882
- trackProductViewEvent(itemInstance.product);
4883
- }
4884
- }
4885
- function trackProduct() {
4886
- return __async(this, null, function* () {
4887
- yield nextTick();
4888
- const container = productListRef.value;
4889
- if (!container || !productItemsRef.value.length) return;
4890
- const scrollTop = container.scrollTop;
4891
- const scrollClientHeight = container.clientHeight;
4892
- const viewportBottom = scrollTop + scrollClientHeight;
4893
- productItemsRef.value.forEach((itemInstance) => {
4894
- checkAndTrackProductItem(itemInstance, scrollTop, viewportBottom);
4895
- });
4896
- });
4897
- }
4898
- function clearTrackedProducts() {
4899
- trackedProductIds.value = {};
4900
- productItemsRef.value = [];
4901
- }
4902
- return {
4903
- productListRef,
4904
- setItemRef,
4905
- trackProduct,
4906
- clearTrackedProducts
4907
- };
4908
- };
4909
5070
  const useTargetEventEmitter = (eventEmitter, listeners) => {
4910
5071
  onMounted(() => {
4911
5072
  if (!eventEmitter) return;
@@ -4928,7 +5089,7 @@ const useProductList = (options) => {
4928
5089
  const { props } = options;
4929
5090
  const { getEmitter } = useGlobalInject();
4930
5091
  const { ProductStatus, ProductType, ProductEvents } = getProductTargetExport(props.productTarget);
4931
- const { productListRef, setItemRef, trackProduct } = useProductTrack({ productTarget: props.productTarget, ProductType });
5092
+ const { productListRef, setItemRef, trackProduct } = useProductTrack({ productTarget: props.productTarget });
4932
5093
  const { isSupportPay, getPayProviders } = usePayment({ props });
4933
5094
  const pageNumber = ref(1);
4934
5095
  const pageSize = ref(10);
@@ -4989,6 +5150,7 @@ const useProductList = (options) => {
4989
5150
  page: pageNumber.value,
4990
5151
  count: pageSize.value
4991
5152
  });
5153
+ console.info("商品列表:", data.contents);
4992
5154
  toppingProduct.value = data.toppingProduct;
4993
5155
  isNoMore.value = data.contents.length < pageSize.value;
4994
5156
  setProductTotal(data.total);
@@ -5039,18 +5201,6 @@ const useProductList = (options) => {
5039
5201
  }
5040
5202
  });
5041
5203
  }
5042
- function handleClickExplain(product) {
5043
- return __async(this, null, function* () {
5044
- if (typeof props.productConfig.customClickExplainHandler === "function") {
5045
- props.productConfig.customClickExplainHandler(product);
5046
- return;
5047
- }
5048
- const url = yield props.productTarget.generateProductExplainPageUrl({ productId: product.productId });
5049
- if (url) {
5050
- window.open(url, "_blank");
5051
- }
5052
- });
5053
- }
5054
5204
  function getProductOrderEnabled() {
5055
5205
  return __async(this, null, function* () {
5056
5206
  if (!props.productTarget) return;
@@ -5096,10 +5246,24 @@ const useProductList = (options) => {
5096
5246
  const productTarget = props.productTarget;
5097
5247
  if (!productTarget) return;
5098
5248
  const ProductEvents2 = productTarget.ProductEvents;
5249
+ productTarget.eventEmitter.on(ProductEvents2.OnSaleProduct, refreshProductList);
5250
+ productTarget.eventEmitter.on(ProductEvents2.OffSaleProduct, refreshProductList);
5251
+ productTarget.eventEmitter.on(ProductEvents2.DeleteProduct, refreshProductList);
5252
+ productTarget.eventEmitter.on(ProductEvents2.AddProduct, refreshProductList);
5253
+ productTarget.eventEmitter.on(ProductEvents2.ChangeProduct, refreshProductList);
5254
+ productTarget.eventEmitter.on(ProductEvents2.MoveProduct, refreshProductList);
5255
+ productTarget.eventEmitter.on(ProductEvents2.ChangeProductRank, refreshProductList);
5099
5256
  productTarget.eventEmitter.on(ProductEvents2.RefreshProductList, refreshProductList);
5100
5257
  }
5101
5258
  function unbindProductEvent() {
5102
5259
  const ProductEvents2 = props.productTarget.ProductEvents;
5260
+ props.productTarget.eventEmitter.off(ProductEvents2.OnSaleProduct, refreshProductList);
5261
+ props.productTarget.eventEmitter.off(ProductEvents2.OffSaleProduct, refreshProductList);
5262
+ props.productTarget.eventEmitter.off(ProductEvents2.DeleteProduct, refreshProductList);
5263
+ props.productTarget.eventEmitter.off(ProductEvents2.AddProduct, refreshProductList);
5264
+ props.productTarget.eventEmitter.off(ProductEvents2.ChangeProduct, refreshProductList);
5265
+ props.productTarget.eventEmitter.off(ProductEvents2.MoveProduct, refreshProductList);
5266
+ props.productTarget.eventEmitter.off(ProductEvents2.ChangeProductRank, refreshProductList);
5103
5267
  props.productTarget.eventEmitter.off(ProductEvents2.RefreshProductList, refreshProductList);
5104
5268
  }
5105
5269
  function init() {
@@ -5157,7 +5321,8 @@ const useProductList = (options) => {
5157
5321
  }
5158
5322
  });
5159
5323
  const instance = {
5160
- init
5324
+ init,
5325
+ refreshProductList
5161
5326
  };
5162
5327
  return {
5163
5328
  instance,
@@ -5174,14 +5339,16 @@ const useProductList = (options) => {
5174
5339
  productList,
5175
5340
  toppingProduct,
5176
5341
  onScroll,
5177
- handleClickExplain,
5178
5342
  openOrderList
5179
5343
  };
5180
5344
  };
5181
5345
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5182
5346
  __name: "product-list",
5183
5347
  props: productListProps(),
5184
- setup(__props, { expose }) {
5348
+ emits: {
5349
+ "open-position-detail": emitFunc()
5350
+ },
5351
+ setup(__props, { expose, emit }) {
5185
5352
  const props = __props;
5186
5353
  const { $t } = useI18n();
5187
5354
  const closeProductListPopup = inject("closeProductListPopup", () => {
@@ -5210,11 +5377,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5210
5377
  productTotal,
5211
5378
  orderEntranceVisible,
5212
5379
  onScroll,
5213
- handleClickExplain,
5214
5380
  openOrderList
5215
5381
  } = useProductList({ props });
5216
5382
  expose(instance);
5217
- return { __sfc: true, props, $t, closeProductListPopup, emitNotSupportDirectBuy, handleDirectBuy, getPayProviders, instance, productListRef, productTagPanelRef, setItemRef, initialLoading, searchKeyword, activeTagId, isSearchMode, isLoading, productList, productTotal, orderEntranceVisible, onScroll, handleClickExplain, openOrderList, FormInput, FormTheme, Loading, ProductIconClose, ProductIconOrderEnter, ProductIconSearch, ProductIconProduct, ProductTagPanel, isMobile, ProductItem, ProductEmpty };
5383
+ return { __sfc: true, props, emit, $t, closeProductListPopup, emitNotSupportDirectBuy, handleDirectBuy, getPayProviders, instance, productListRef, productTagPanelRef, setItemRef, initialLoading, searchKeyword, activeTagId, isSearchMode, isLoading, productList, productTotal, orderEntranceVisible, onScroll, openOrderList, FormInput, FormTheme, Loading, ProductIconClose, ProductIconOrderEnter, ProductIconSearch, ProductIconProduct, ProductTagPanel, isMobile, ProductItem, ProductEmpty };
5218
5384
  }
5219
5385
  });
5220
5386
  var _sfc_render$1 = function render12() {
@@ -5224,7 +5390,9 @@ var _sfc_render$1 = function render12() {
5224
5390
  }, expression: "searchKeyword" } }, [_c(_setup.ProductIconSearch, { staticClass: "plv-product-list__header-search-icon", attrs: { "slot": "prefix" }, slot: "prefix" })], 1), _setup.orderEntranceVisible ? _c("div", { staticClass: "plv-product-list__header-right", on: { "click": _setup.openOrderList } }, [_c(_setup.ProductIconOrderEnter, { staticClass: "plv-product-list__header-right-icon" }), _c("div", { staticClass: "plv-product-list__header-right-text" }, [_vm._v(" " + _vm._s(_setup.$t("product.order")) + " ")])], 1) : _vm._e(), !_setup.isMobile ? _c(_setup.ProductIconClose, { staticClass: "plv-product-list-popup__icon-close", on: { "click": _setup.closeProductListPopup } }) : _vm._e()], 1), !_setup.isSearchMode ? [_c(_setup.ProductTagPanel, { ref: "productTagPanelRef", attrs: { "product-target": _vm.productTarget }, model: { value: _setup.activeTagId, callback: function($$v) {
5225
5391
  _setup.activeTagId = $$v;
5226
5392
  }, expression: "activeTagId" } }), _c("div", { staticClass: "plv-product-list__product-total" }, [_c(_setup.ProductIconProduct, { staticClass: "plv-product-list__product-total-icon" }), _c("div", { staticClass: "plv-product-list__product-total-text" }, [_vm._v(" " + _vm._s(_setup.$t("product.num")) + ": ")]), _c("div", { staticClass: "plv-product-list__product-total-num" }, [_vm._v(" " + _vm._s(_setup.productTotal) + " ")])], 1)] : _vm._e()], 2), !_setup.initialLoading ? [_setup.productList.length ? _c("div", { staticClass: "plv-product-list__wrapper" }, _vm._l(_setup.productList, function(product, index) {
5227
- return _c(_setup.ProductItem, { key: index, ref: _setup.setItemRef, refInFor: true, attrs: { "product": product, "product-target": _vm.productTarget, "product-config": _vm.productConfig }, on: { "click-explain": _setup.handleClickExplain, "direct-buy": _setup.handleDirectBuy } });
5393
+ return _c(_setup.ProductItem, { key: index, ref: _setup.setItemRef, refInFor: true, attrs: { "product": product, "product-target": _vm.productTarget, "product-config": _vm.productConfig }, on: { "direct-buy": _setup.handleDirectBuy, "open-position-detail": function($event) {
5394
+ return _setup.emit("open-position-detail", $event);
5395
+ } } });
5228
5396
  }), 1) : _c(_setup.ProductEmpty)] : _vm._e(), _setup.isLoading ? _c("div", { staticClass: "plv-product-list__loading" }, [_c(_setup.Loading)], 1) : _vm._e()], 2);
5229
5397
  };
5230
5398
  var _sfc_staticRenderFns$1 = [];
@@ -5298,8 +5466,8 @@ console.log(
5298
5466
  "%c@polyv/product-ui",
5299
5467
  "background:#409EFF;padding: 2px 6px;border-radius: 3px;color: #fff",
5300
5468
  "[component: product-list-popup]",
5301
- "[version: 1.0.0-rc-20250612.4]",
5302
- "[buildTime: 2025-06-12 09:58:21]"
5469
+ "[version: 1.2.0-rc-20250724.2]",
5470
+ "[buildTime: 2025-07-24 03:57:17]"
5303
5471
  );
5304
5472
  export {
5305
5473
  productListPopup as default