@ezuikit/player-theme 3.1.2-beta.4 → 3.1.3-beta.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.
package/dist/style.css CHANGED
@@ -17,12 +17,13 @@ body.ezplayer-body-mobile-noscroll{background-color:#000!important;height:100vh;
17
17
  :root{--emodal-z-index:1000;--emodal-bg:#fff;--emodal-color:rgba(0,0,0,.88);--emodal-border-radius:2px;--emodal-shadow:0 6px 16px 0 rgba(0,0,0,.08),0 3px 6px -4px rgba(0,0,0,.12),0 9px 28px 8px rgba(0,0,0,.05);--emodal-mask-bg:rgba(0,0,0,.45);--emodal-header-height:48px;--emodal-title-color:rgba(0,0,0,.88);--emodal-border-color:rgba(5,5,5,.06);--emodal-close-color:rgba(0,0,0,.45);--emodal-close-hover-color:rgba(0,0,0,.88);--emodal-close-hover-bg:rgba(0,0,0,.06)}.emodal-mask{background-color:var(--emodal-mask-bg,rgba(0,0,0,.45));inset:0;position:fixed;z-index:var(--emodal-z-index,1000)}.emodal-wrap{background-color:var(--emodal-bg,#fff);border-radius:var(--emodal-border-radius,2px);box-shadow:var(--emodal-shadow,0 6px 16px 0 rgba(0,0,0,.08));color:var(--emodal-color,rgba(0,0,0,.88));flex-direction:column;left:0;max-height:100vh;max-width:100vw;overflow:hidden;position:fixed;top:0;z-index:calc(var(--emodal-z-index, 1000) + 1)}.emodal-header,.emodal-wrap{box-sizing:border-box;display:flex}.emodal-header{align-items:center;border-bottom:1px solid var(--emodal-border-color,rgba(5,5,5,.06));flex:0 0 auto;justify-content:space-between;min-height:var(--emodal-header-height,48px);padding:0 16px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.emodal-draggable .emodal-header{cursor:move}.emodal-title{color:var(--emodal-title-color,rgba(0,0,0,.88));flex:1 1 auto;font-size:14px;font-weight:600;line-height:1.5;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.emodal-close{align-items:center;background:transparent;border:none;border-radius:4px;color:var(--emodal-close-color,rgba(0,0,0,.45));cursor:pointer;display:inline-flex;flex:0 0 auto;height:28px;justify-content:center;margin-left:12px;padding:0;transition:color .2s,background-color .2s;width:28px}.emodal-close:hover{background-color:var(--emodal-close-hover-bg,rgba(0,0,0,.06));color:var(--emodal-close-hover-color,rgba(0,0,0,.88))}.emodal-close svg{display:block;height:16px;width:16px}.emodal-body{box-sizing:border-box;flex:1 1 auto;overflow:auto}.emodal-hidden{display:none!important}.emodal-dragging{cursor:move!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}
18
18
  .evscroll-wrapper{overflow-x:hidden;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch}.evscroll-content{position:relative;width:100%}.evscroll-viewport{top:0}.evscroll-item,.evscroll-viewport{left:0;position:absolute;width:100%}.evscroll-item{box-sizing:border-box}.evscroll-wrapper::-webkit-scrollbar{height:6px;width:6px}.evscroll-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.evscroll-wrapper::-webkit-scrollbar-track{background:transparent}
19
19
  .ez-rec-list-modal-list{box-sizing:border-box;height:100%;position:relative;width:100%}.ez-rec-list-modal-empty{align-items:center;color:rgba(0,0,0,.35);display:flex;font-size:14px;inset:0;justify-content:center;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.ez-rec-list-modal-group{align-items:flex-end;box-sizing:border-box;display:flex;gap:6px;height:100%;line-height:1;padding:0 10px 8px 12px}.ez-rec-list-modal-group-title{color:rgba(0,0,0,.88);font-size:14px;font-weight:600;height:20px;line-height:20px}.ez-rec-list-modal-group-count{align-items:center;background-color:#369fff;border-radius:9px;box-sizing:border-box;color:#fff;display:inline-flex;font-size:12px;height:18px;justify-content:center;line-height:18px;min-width:18px;padding:0 5px}.ez-rec-list-modal-row{align-items:stretch;box-sizing:border-box;display:flex;gap:8px;height:100%;padding:0 10px 8px 12px}.ez-rec-list-modal-card{cursor:pointer;flex:1 1 0;max-width:calc(50% - 4px);min-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ez-rec-list-modal-card-active .ez-rec-list-modal-card-thumb{box-shadow:0 0 0 1px var(--ez-rec-list-modal-card-active-gap,#fff),0 0 0 3px var(--ez-rec-list-modal-card-active,#369fff)}.ez-rec-list-modal-card-playing{align-items:flex-end;bottom:4px;color:#fff;display:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6));left:6px;pointer-events:none;position:absolute;z-index:2}.ez-rec-list-modal-card-playing svg{display:block;height:16px;width:16px}.ez-rec-list-modal-card-playing svg rect{animation:ez-rec-list-modal-eq .9s ease-in-out infinite;transform-box:fill-box;transform-origin:bottom}.ez-rec-list-modal-card-playing svg rect:nth-child(2){animation-delay:.15s}.ez-rec-list-modal-card-playing svg rect:nth-child(3){animation-delay:.3s}.ez-rec-list-modal-card-active .ez-rec-list-modal-card-playing{display:inline-flex}@media (prefers-reduced-motion:reduce){.ez-rec-list-modal-card-playing svg rect{animation:none}}.ez-rec-list-modal-card-thumb{background-color:#ddd;border-radius:8px;height:100%;overflow:hidden;position:relative;width:100%}.ez-rec-list-modal-card-thumb:before{background:linear-gradient(180deg,rgba(0,0,0,.45),transparent);content:"";height:38px;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.ez-rec-list-modal-card-img{height:100%;left:0;-o-object-fit:cover;object-fit:cover;opacity:0;position:absolute;top:0;transition:opacity .25s ease;width:100%;z-index:0}.ez-rec-list-modal-card-placeholder{align-items:center;background:linear-gradient(180deg,var(--ez-rec-list-modal-item-cover-placeholder-start,#b7c3cf),var(--ez-rec-list-modal-item-cover-placeholder-end,#d4d1d1) 100%);color:#fff;display:flex;font-size:20px;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%;z-index:1}.ez-rec-list-modal-card-start{left:6px}.ez-rec-list-modal-card-duration,.ez-rec-list-modal-card-start{color:#fff;font-size:12px;line-height:14px;position:absolute;text-shadow:0 1px 2px rgba(0,0,0,.5);top:5px;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2}.ez-rec-list-modal-card-duration{right:6px}.ez-rec-list-modal-card-icon{align-items:center;bottom:4px;color:#fff;display:inline-flex;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6));justify-content:center;pointer-events:none;position:absolute;right:5px;z-index:2}.ez-rec-list-modal-card-icon svg{display:block;height:14px;width:14px}.ez-rec-list-modal-title{align-items:center;display:flex;gap:12px;min-width:0}.ez-rec-list-modal-title-text{flex:0 0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ez-lazy-image.ez-lazy-image-loaded{opacity:1}.ez-lazy-image.ez-lazy-image-error{opacity:0}.ez-rec-list-modal-checkbox{align-items:center;color:var(--ez-rec-list-modal-checkbox-label,rgba(0,0,0,.65));cursor:pointer;display:inline-flex;font-size:13px;gap:6px;line-height:1;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ez-rec-list-modal-checkbox-input{border:0;height:1px;margin:0;opacity:0;padding:0;pointer-events:none;position:absolute;width:1px}.ez-rec-list-modal-checkbox-box{background-color:#fff;border:1px solid var(--ez-rec-list-modal-checkbox-border,#c0c4cc);border-radius:4px;box-sizing:border-box;flex:0 0 auto;height:var(--ez-rec-list-modal-checkbox-size,16px);position:relative;transition:background-color .2s ease,border-color .2s ease;width:var(--ez-rec-list-modal-checkbox-size,16px)}.ez-rec-list-modal-checkbox-check{color:#fff;display:block;inset:0;opacity:0;position:absolute;transform:scale(.6);transition:opacity .15s ease,transform .15s ease}.ez-rec-list-modal-checkbox-check svg{display:block;height:100%;width:100%}.ez-rec-list-modal-checkbox-checked .ez-rec-list-modal-checkbox-box{background-color:var(--ez-rec-list-modal-checkbox-active,#2f6fdb);border-color:var(--ez-rec-list-modal-checkbox-active,#2f6fdb)}.ez-rec-list-modal-checkbox-checked .ez-rec-list-modal-checkbox-check{opacity:1;transform:scale(1)}.ez-rec-list-modal-checkbox-disabled{cursor:not-allowed;opacity:.5}.ez-rec-list-modal-checkbox-input:focus-visible+.ez-rec-list-modal-checkbox-box{box-shadow:0 0 0 2px rgba(47,111,219,.3)}@keyframes ez-rec-list-modal-eq{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}
20
+ .ez-segment-progress{align-items:center;box-sizing:border-box;display:flex;padding:8px 10px;-moz-user-select:none;user-select:none;-webkit-user-select:none;width:100%;-webkit-tap-highlight-color:transparent}.ez-segment-progress-time{color:var(--ez-segment-progress-text-color,hsla(0,0%,100%,.9));flex:none;font-size:12px;font-variant-numeric:tabular-nums;line-height:1}.ez-segment-progress-time-current{margin-right:8px}.ez-segment-progress-time-total{margin-left:8px}.ez-segment-progress-track{background:var(--ez-segment-progress-track-color,hsla(0,0%,100%,.35));border-radius:2px;cursor:pointer;flex:1 1 auto;height:3px;position:relative;touch-action:none}.ez-segment-progress-track:before{bottom:-12px;content:"";left:0;position:absolute;right:0;top:-12px}.ez-segment-progress-track:focus-visible{outline:2px solid var(--ez-segment-progress-played-color,#1890ff);outline-offset:4px}.ez-segment-progress-played{background:var(--ez-segment-progress-played-color,#1890ff);border-radius:2px;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:0}.ez-segment-progress-thumb{background:var(--ez-segment-progress-thumb-color,#fff);border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.35);height:10px;left:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .1s,height .1s;width:10px}.ez-segment-progress-dragging .ez-segment-progress-thumb{height:14px;width:14px}.ez-segment-progress-disabled{opacity:.5}.ez-segment-progress-disabled .ez-segment-progress-track{cursor:not-allowed}
20
21
  .ezplayer .ezplayer-progress{align-items:center;background-color:var(--ezplayer-panel-bg-color,rgba(0,0,0,.7));border-radius:var(--ezplayer-border-radius,8px);box-sizing:border-box;cursor:default;display:flex;flex-direction:column;justify-content:center;padding:30px 9px 11px;position:relative;width:38px}.ezplayer .ezplayer-progress,.ezplayer .ezplayer-progress-text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ezplayer .ezplayer-progress-text{font-size:12px;height:17px;left:0;line-height:17px;position:absolute;text-align:center;top:8px;width:100%}.ezplayer .ezplayer-progress-minus,.ezplayer .ezplayer-progress-plus{display:flex;height:25px;justify-content:center}.ezplayer .ezplayer-progress-minus .ezplayer-icon,.ezplayer .ezplayer-progress-plus .ezplayer-icon{color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:20px;text-align:center;transition:color .3s ease,border-color .3s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:20px}.ezplayer .ezplayer-progress-minus .ezplayer-icon:active,.ezplayer .ezplayer-progress-plus .ezplayer-icon:active{color:var(--ezplayer-primary-color,#407aff)}@media (hover:hover){.ezplayer .ezplayer-progress-minus .ezplayer-icon:hover,.ezplayer .ezplayer-progress-plus .ezplayer-icon:hover{color:var(--ezplayer-primary-color,#407aff)}}.ezplayer .ezplayer-progress-plus{padding-bottom:5px}.ezplayer .ezplayer-progress-minus{padding-top:5px}.ezplayer .ezplayer-progress-slider{background-color:hsla(0,0%,100%,.75);border-radius:2px;cursor:pointer;flex:1 1 auto;position:relative;width:4px}.ezplayer .ezplayer-progress-slider-fill{background-color:var(--ezplayer-primary-color,#407aff);border-radius:4px;bottom:0;height:0;left:0;position:absolute;width:100%}.ezplayer .ezplayer-progress-slider-handle{align-items:center;background-color:var(--ezplayer-primary-color,#407aff);border-radius:50%;cursor:pointer;display:inline-flex;height:12px;justify-content:center;left:50%;position:absolute;top:0;transform:translate(-50%,-50%);width:12px}.ezplayer .ezplayer-progress-slider-handle:hover{box-shadow:0 0 2px var(--ezplayer-primary-color,#407aff)}.ezplayer .ezplayer-progress-slider-handle:before{background-color:#fff;border-radius:50%;content:"";display:inline;height:6px;width:6px}
21
22
  .ezplayer-icon{align-items:center;color:inherit;display:inline-flex;font-size:var(--ezplayer-icon-font-size,24px);font-style:normal;line-height:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
22
23
  .ezplayer-select-panel{background-color:var(--ezplayer-panel-bg-color,rgba(0,0,0,.7));border-radius:var(--ezplayer-border-radius,8px);color:var(--ezplayer-default-color,#fff);display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;position:relative}.ezplayer-select-btn{width:50px}.ezplayer-select-btn span{display:inline-block;font-size:12px;font-size:calc(var(--ezplayer-font-size, 14px) - 2px);line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ezplayer-select-list{align-items:center;display:flex;flex-direction:column;font-size:var(--ezplayer-font-size,14px);list-style:none;margin:0;padding:12px 0!important;width:100%}.ezplayer-select-option{box-sizing:border-box;cursor:pointer;display:inline-flex;height:28px;justify-content:center;line-height:18px;list-style:none;padding:5px 20px!important;transition:color .3s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.ezplayer-select-option span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ezplayer-select-option:hover{color:var(--ezplayer-active-color)}.ezplayer-select-cancel,.ezplayer-select-close{display:none}.ezplayer-select-cancel{font-size:var(--ezplayer-font-size,14px)}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-panel{background-color:transparent;max-width:400px;padding-bottom:calc(54px + env(safe-area-inset-bottom));width:90%}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-list{align-items:center;background-color:#fff;border-radius:var(--ezplayer-border-radius,8px);display:flex;flex-direction:column;font-size:var(--ezplayer-font-size,14px);max-height:70vh;max-height:calc(90vh - 108px);overflow-x:hidden;overflow-y:auto;padding:20px 0!important}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-cancel,.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-option{align-items:center;box-sizing:border-box;color:#2c2c2c;display:inline-flex;height:36px;justify-content:center;line-height:26px;padding:5px 20px!important}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-option{--webkit-tap-highlight-color:transparent!important}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-option:hover{color:#2c2c2c}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-option:active{background-color:#f8f8f8}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-cancel{background-color:#fff;border-radius:var(--ezplayer-border-radius,8px);display:flex;height:54px;margin-top:8px}.ezplayer-mobile .epicker-mobile.ezplayer-select-picker .ezplayer-select-cancel:active{color:var(--ezplayer-active-color)}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .epicker-body{bottom:0;left:unset;right:0;top:0;width:240px}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-panel{align-items:center;background-color:var(--ezplayer-panel-bg-color,rgba(0,0,0,.7));border-bottom-right-radius:0;border-top-right-radius:0;height:100%;justify-content:center;padding-bottom:env(safe-area-inset-bottom);width:100%}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-list{background-color:transparent;border-radius:0;color:#fff;height:auto;margin:0;max-height:100%;width:100%}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-option,.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-option:hover{color:#fff}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-option:active{background-color:transparent;color:var(--ezplayer-active-color)}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-cancel{display:none}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-close{display:inline-flex;left:10px;position:absolute;top:10px}.ezplayer-mobile.ezplayer-fullscreen .epicker-mobile.ezplayer-select-picker .ezplayer-select-close:active{color:var(--ezplayer-active-color)}
23
24
  .ezplayer-control-fullscreen .ezplayer-icon-exit-fullscreen,.ezplayer-control-global-fullscreen .ezplayer-icon-exit-global-fullscreen{display:none}.ezplayer-fullscreen .ezplayer-icon-exit-fullscreen{display:inline-flex}.ezplayer-fullscreen .ezplayer-icon-fullscreen{display:none}.ezplayer-global-fullscreen .ezplayer-icon-exit-global-fullscreen{display:inline-flex}.ezplayer-global-fullscreen .ezplayer-icon-global-fullscreen{display:none}
24
25
  .ezplayer-loading{background-color:rgba(0,0,0,.5);bottom:0;color:#fff;display:none;font-size:14px;height:100%;left:0;position:absolute;right:0;top:0;transition:transform .3s cubic-bezier(.78,.14,.15,.86);vertical-align:middle;width:100%;z-index:4}.ezplayer-loading-dot{display:inline-block;font-size:25px;height:25px;position:relative;width:25px}.ezplayer-loading-dot-item{background-color:#fff;border-radius:2px;display:block;height:10px;position:absolute;transform-origin:50% 50%;width:10px}.ezplayer-loading-dot-item:first-child{animation:animationShape1 2s linear 0s infinite normal;left:0;opacity:1;top:0}.ezplayer-loading-dot-item:nth-child(2){animation:animationShape2 2s linear 0s infinite normal;left:15px;opacity:.8;top:0}.ezplayer-loading-dot-item:nth-child(3){animation:animationShape3 2s linear 0s infinite normal;left:0;opacity:.5;top:15px}.ezplayer-loading-dot-item:nth-child(4){animation:animationShape4 2s linear 0s infinite normal;left:15px;opacity:.3;top:15px}.ezplayer-loading-dot-load{animation:rotation 1s infinite}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ezplayer-load-blur{background:#fff;opacity:.5}}@keyframes ezdSpinMove{to{opacity:1}}@keyframes ezdRotate{to{transform:rotate(405deg)}}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes animationShape1{0%{transform:translate(0)}25%{transform:translateY(15px)}50%{transform:translate(15px,15px)}75%{transform:translate(15px)}to{transform:translate(translate)}}@keyframes animationShape2{0%{transform:translate(0)}25%{transform:translate(-15px)}50%{transform:translate(-15px,15px)}75%{transform:translateY(15px)}}@keyframes animationShape3{0%{transform:translate(0)}25%{transform:translate(15px)}50%{transform:translate(15px,-15px)}75%{transform:translateY(-15px)}}@keyframes animationShape4{0%{transform:translate(0)}25%{transform:translateY(-15px)}50%{transform:translate(-15px,-15px)}75%{transform:translate(-15px)}}.ezplayer-loading-text{margin-top:20px}
25
- .ezplayer-message{background-color:rgba(0,0,0,.4);bottom:0;color:#fff;display:none;font-size:16px;height:100%;left:0;overflow:hidden;position:absolute;right:0;top:0;width:100%;z-index:5}.ezplayer-message-content{align-items:center;display:flex;flex-direction:column;justify-content:center}.ezplayer-message-msg{display:-webkit-box;margin-top:15px;max-width:500px;overflow:hidden;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0 20px}.ezplayer-message-error{color:#ff4d4f}.ezplayer-toast{background-color:rgba(0,0,0,.8);border-radius:var(--ezplayer-border-radius,8px);box-shadow:0 9px 28px 8px rgba(0,0,0,.05),0 3px 16px 0 rgba(0,0,0,.03),0 3px 7px -4px rgba(0,0,0,.05);color:#fff;display:flex;font-size:14px;left:50%;line-height:22px;max-width:450px;overflow:hidden;padding:9px 16px;position:absolute;top:50px;transform:translateX(-50%);z-index:6}.ezplayer-toast-content{padding-left:24px;position:relative}.ezplayer-toast .ezplayer-icon{font-size:16px;left:0;position:absolute;top:3px}.ezplayer-toast .ezplayer-icon-info-circle{color:var(--ezplayer-default-color,#fff)}.ezplayer-toast .ezplayer-icon-warn-circle{color:#faad14}.ezplayer-toast .ezplayer-icon-close-circle{color:#ff4d4f}.ezplayer-mobile .ezplayer-toast{font-size:12px;line-height:20px}.ezplayer-mobile .ezplayer-toast-content{padding-left:20px}.ezplayer-mobile .ezplayer-toast .ezplayer-icon{font-size:14px}
26
+ .ezplayer-message{background-color:rgba(0,0,0,.4);bottom:0;color:#fff;display:none;font-size:16px;height:100%;left:0;overflow:hidden;position:absolute;right:0;top:0;width:100%;z-index:5}.ezplayer-message-content{align-items:center;display:flex;flex-direction:column;justify-content:center}.ezplayer-message-msg{display:-webkit-box;-webkit-line-clamp:2;margin-top:15px;max-width:500px;overflow:hidden;word-break:break-all;-webkit-box-orient:vertical;padding:0 20px}.ezplayer-message-error{color:#ff4d4f}.ezplayer-toast{background-color:rgba(0,0,0,.8);border-radius:var(--ezplayer-border-radius,8px);box-shadow:0 9px 28px 8px rgba(0,0,0,.05),0 3px 16px 0 rgba(0,0,0,.03),0 3px 7px -4px rgba(0,0,0,.05);color:#fff;display:flex;font-size:14px;left:50%;line-height:22px;max-width:450px;overflow:hidden;padding:9px 16px;position:absolute;top:50px;transform:translateX(-50%);z-index:6}.ezplayer-toast-content{padding-left:24px;position:relative}.ezplayer-toast .ezplayer-icon{font-size:16px;left:0;position:absolute;top:3px}.ezplayer-toast .ezplayer-icon-info-circle{color:var(--ezplayer-default-color,#fff)}.ezplayer-toast .ezplayer-icon-warn-circle{color:#faad14}.ezplayer-toast .ezplayer-icon-close-circle{color:#ff4d4f}.ezplayer-mobile .ezplayer-toast{font-size:12px;line-height:20px}.ezplayer-mobile .ezplayer-toast-content{padding-left:20px}.ezplayer-mobile .ezplayer-toast .ezplayer-icon{font-size:14px}
26
27
  .ezplayer-poster{bottom:0;display:none;height:100%;left:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.ezplayer-poster img{border:0;font-size:0;height:100%;outline:none;pointer-events:none;width:100%}
27
28
  .ezplayer-icon-volume{position:relative}.ezplayer-icon-volume svg .ezplayer-icon-volume-high,.ezplayer-icon-volume svg .ezplayer-icon-volume-low,.ezplayer-icon-volume svg .ezplayer-icon-volume-muted{display:none}.ezplayer-icon-volume.ezplayer-icon-volume-high svg .ezplayer-icon-volume-high,.ezplayer-icon-volume.ezplayer-icon-volume-high svg .ezplayer-icon-volume-low,.ezplayer-icon-volume.ezplayer-icon-volume-low svg .ezplayer-icon-volume-low,.ezplayer-icon-volume.ezplayer-icon-volume-muted svg .ezplayer-icon-volume-muted,.ezplayer-icon-volume.ezplayer-icon-volume-zero svg .ezplayer-icon-volume-muted{display:inline}.ezplayer-volume-progress{height:126px}
28
29
  .ezplayer-control-rec{box-sizing:border-box;display:inline-flex;flex-direction:row}.ezplayer-control-rec .ezplayer-icon-cloud-rec,.ezplayer-control-rec .ezplayer-icon-cloud-record,.ezplayer-control-rec .ezplayer-icon-sdk{color:#d4d7dd;cursor:pointer;margin-left:5px}.ezplayer-mobile-extend .ezplayer-control-rec{background-color:#f4f6fc;border:1px solid #ededed;border-radius:18px;height:30px}.ezplayer-mobile-extend .ezplayer-icon-cloud-rec,.ezplayer-mobile-extend .ezplayer-icon-cloud-record,.ezplayer-mobile-extend .ezplayer-icon-sdk{cursor:pointer;font-size:20px;margin-left:1px;padding:2px 7px}.ezplayer-mobile-extend .ezplayer-icon-cloud-rec.ezplayer-active,.ezplayer-mobile-extend .ezplayer-icon-cloud-record.ezplayer-active,.ezplayer-mobile-extend .ezplayer-icon-sdk.ezplayer-active{background-color:#fff;border-radius:12px;box-shadow:0 1px 4px 0 hsla(0,0%,68%,.2)}.ezplayer-mobile .ezplayer-icon-cloud-rec,.ezplayer-mobile .ezplayer-icon-cloud-record,.ezplayer-mobile .ezplayer-icon-sdk{margin-left:10px}
@@ -35,7 +36,7 @@ body.ezplayer-body-mobile-noscroll{background-color:#000!important;height:100vh;
35
36
  .ezplayer-control-rec-dropdown .ezplayer-rec-dropdown-btn{cursor:pointer;font-size:14px;line-height:20px;padding:2px 6px;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.ezplayer-control-rec-dropdown.ezplayer-active .ezplayer-rec-dropdown-btn{color:var(--ezplayer-active-color,#407aff)}.ezplayer-rec-dropdown-picker .ezplayer-rec-dropdown-panel{background-color:var(--ezplayer-panel-bg-color,rgba(0,0,0,.7));border-radius:var(--ezplayer-border-radius,8px);color:var(--ezplayer-default-color,#fff);padding:8px 0}.ezplayer-rec-dropdown-picker .ezplayer-rec-dropdown-list{list-style:none;margin:0;padding:0}.ezplayer-rec-dropdown-picker .ezplayer-rec-dropdown-item{cursor:pointer;font-size:14px;line-height:20px;padding:6px 20px;transition:color .2s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.ezplayer-rec-dropdown-picker .ezplayer-rec-dropdown-item.ezplayer-active,.ezplayer-rec-dropdown-picker .ezplayer-rec-dropdown-item:hover{color:var(--ezplayer-active-color,#407aff)}
36
37
  .ezplayer-control-rec-list .ezplayer-rec-list-btn{cursor:pointer;font-size:14px;line-height:20px;padding:2px 6px;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.ezplayer-control-rec-list.ezplayer-active .ezplayer-rec-list-btn{color:var(--ezplayer-active-color,#407aff)}.ezplayer-mobile-extend .ezplayer-control-rec-list{display:none}
37
38
  .ezplayer-control-alarm-message .ezplayer-alarm-message-btn{cursor:pointer;font-size:14px;line-height:20px;padding:2px 6px;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.ezplayer-mobile-extend .ezplayer-control-alarm-message{align-items:center;background-color:#f4f6fc;border:1px solid #ededed;border-radius:50%;box-sizing:border-box;cursor:pointer;display:inline-flex;font-size:18px;height:30px;justify-content:center;margin-left:8px;width:30px}
38
- .ezplayer-record-timer{align-items:center;background-color:#ff4c5c;border-radius:24px;color:#fff;display:inline-flex;flex-direction:row;left:50%;padding:2px 6px;position:absolute;top:60px;transform:translateX(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.ezplayer-record-timer .ezplayer-icon-record-circle{font-size:14px}.ezplayer-record-timer-time{font-weight:400;letter-spacing:1px;line-height:20px;margin-left:2px}
39
+ .ezplayer-record-timer .ezplayer-icon-record-circle{font-size:14px}.ezplayer-record-timer{align-items:center;background-color:#ff4c5c;border-radius:24px;color:#fff;display:inline-flex;flex-direction:row;left:50%;padding:2px 6px;position:absolute;top:60px;transform:translateX(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.ezplayer-record-timer-time{font-weight:400;letter-spacing:1px;line-height:20px;margin-left:2px}
39
40
  .ezplayer-select-definition .ezplayer-select-panel{width:100px}.ezplayer-control-definition .ezplayer-select-btn{width:75px}
40
41
 
41
42
  .ezplayer-control-device{width:100%}.ezplayer-control-device span{display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@@ -44,4 +45,5 @@ body.ezplayer-body-mobile-noscroll{background-color:#000!important;height:100vh;
44
45
 
45
46
  .ezplayer-control-date .ezplayer-icon-date:hover{color:var(--ezplayer-primary-color,#407aff)}.ezplayer-mobile-extend .ezplayer-mobile-date-filter{align-items:center;background:#f4f6fc;border:1px solid #ededed;border-radius:8px;box-sizing:border-box;color:#2c2c2c;display:inline-flex;font-family:PingFang SC;font-size:16px;font-weight:500;height:36px;justify-content:center;letter-spacing:0;line-height:20px;padding:6px 10px}.ezplayer-mobile-extend .ezplayer-mobile-date-filter-value{margin-right:5px}.ezplayer-mobile-extend .ezplayer-icon-filter{font-size:20px}
46
47
  .ezplayer-control-time .ezplayer-icon-time:hover{color:var(--ezplayer-primary-color,#407aff)}
47
- .ezplayer-control-time-line{position:relative}.ezplayer-control-time-line .ezplayer-time-line-zoom{background-color:#000;bottom:0;display:inline-flex;flex-direction:column;justify-content:space-between;padding-bottom:2px;padding-left:10px;padding-top:2px;position:absolute;right:0;top:0;z-index:3}.ezplayer-control-time-line .ezplayer-time-line-zoom-add,.ezplayer-control-time-line .ezplayer-time-line-zoom-sub{align-items:center;background-color:#333;color:var(--ezplayer-default-color,#fff);cursor:pointer;display:inline-flex;height:20px;justify-content:center;overflow:hidden;right:0;transition:color .3s ease;width:14px}.ezplayer-control-time-line .ezplayer-icon-add,.ezplayer-control-time-line .ezplayer-icon-reduce{font-size:14px;font-weight:500}.ezplayer-control-time-line .ezplayer-icon-add:hover,.ezplayer-control-time-line .ezplayer-icon-reduce:hover{color:var(--ezplayer-primary-color,#407aff)}.ezplayer-control-time-line .ezplayer-time-line-zoom-add{border-top-left-radius:2px;border-top-right-radius:2px}.ezplayer-control-time-line .ezplayer-time-line-zoom-sub{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.ezplayer-mobile-extend .ezplayer-control-time-line{display:block;height:300px;margin-top:10px;padding-right:0}
48
+ .ezplayer-control-time-line{position:relative}.ezplayer-control-time-line .ezplayer-time-line-zoom{background-color:#000;bottom:0;display:inline-flex;flex-direction:column;justify-content:space-between;padding-bottom:2px;padding-left:10px;padding-top:2px;position:absolute;right:0;top:0;z-index:3}.ezplayer-control-time-line .ezplayer-time-line-zoom-add,.ezplayer-control-time-line .ezplayer-time-line-zoom-sub{align-items:center;background-color:#333;color:var(--ezplayer-default-color,#fff);cursor:pointer;display:inline-flex;height:20px;justify-content:center;overflow:hidden;right:0;transition:color .3s ease;width:14px}.ezplayer-control-time-line .ezplayer-icon-add,.ezplayer-control-time-line .ezplayer-icon-reduce{font-size:14px;font-weight:500}.ezplayer-control-time-line .ezplayer-icon-add:hover,.ezplayer-control-time-line .ezplayer-icon-reduce:hover{color:var(--ezplayer-primary-color,#407aff)}.ezplayer-control-time-line .ezplayer-time-line-zoom-add{border-top-left-radius:2px;border-top-right-radius:2px}.ezplayer-control-time-line .ezplayer-time-line-zoom-sub{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.ezplayer-mobile-extend .ezplayer-control-time-line{display:block;height:300px;margin-top:10px;padding-right:0}
49
+ .ezplayer-control-segment-progress{display:block;padding:0;width:100%}.ezplayer-mobile-extend-segment-progress{width:100%;--ez-segment-progress-text-color:var(--ezplayer-mobile-extend-default-color,#2c2c2c);--ez-segment-progress-track-color:rgba(0,0,0,.15)}.ezplayer-mobile-extend-segment-progress:empty{display:none}.ezplayer-mobile-extend-segment-progress .ezplayer-control-segment-progress{touch-action:none}.ezplayer-mobile-extend-segment-progress .ezplayer-control-segment-progress .ez-segment-progress{padding-top:0}
package/dist/style.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
- * @ezuikit/player-theme v3.1.2-beta.4
3
- * Copyright (c) 2026-08-16 15:20:04 Ezviz-OpenBiz
2
+ * @ezuikit/player-theme v3.1.3-beta.2
3
+ * Copyright (c) 2026-08-19 17:37:07 Ezviz-OpenBiz
4
4
  * Released under the MIT License.
5
5
  */
6
6
  require("./style.css");
@@ -4,7 +4,6 @@ import I18n, { I18nTranslation } from '@ezuikit/utils-i18n';
4
4
  import { LoggerCls, LoggerOptions } from '@ezuikit/utils-logger';
5
5
  import { BasePtzOptions } from '@ezuikit/control-ptz';
6
6
  import { RecListModalOptions } from '@ezuikit/control-rec-list-modal';
7
- import * as _ezuikit_utils_tools from '@ezuikit/utils-tools';
8
7
  import Zoom from '@ezuikit/control-zoom';
9
8
  import { TimeLineTimeSection } from '@ezuikit/control-time-line';
10
9
  import { TimePickerOptions } from '@ezuikit/control-date-picker';
@@ -18,7 +17,7 @@ declare const THEME_SCALE_MODE_TYPE: {
18
17
  /** 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 */
19
18
  readonly fullAuto: 2;
20
19
  };
21
- declare const THEME_PROPS: readonly ["width", "height", "playing", "volume", "muted", "loading", "recType", "isCurrentFullscreen", "orientationAngle", "zooming", "zoom", "recording", "recordList", "speed", "urlInfo", "videoLevelList", "videoLevel", "recMonth", "url"];
20
+ declare const THEME_PROPS: readonly ["width", "height", "playing", "volume", "muted", "loading", "recType", "isCurrentFullscreen", "orientationAngle", "zooming", "zoom", "recording", "recordList", "speed", "urlInfo", "videoLevelList", "videoLevel", "recMonth", "url", "playbackRange"];
22
21
  /**
23
22
  *
24
23
  * 事件名
@@ -111,6 +110,8 @@ declare const EVENTS: {
111
110
  readonly currentVideoLevelAuto: "currentVideoLevelAuto";
112
111
  readonly setAllDayRecTimes: "setAllDayRecTimes";
113
112
  readonly getOSDTime: "getOSDTime";
113
+ /** 播放区间播放结束(SDK 层 playbackRange 特性) */
114
+ readonly playbackEnd: "playbackEnd";
114
115
  /**
115
116
  * 控件相关
116
117
  */
@@ -1024,7 +1025,9 @@ type ControlType =
1024
1025
  /** 时间选择 */
1025
1026
  | 'time'
1026
1027
  /** 时间轴 */
1027
- | 'timeLine';
1028
+ | 'timeLine'
1029
+ /** 回放片段进度条(移动端,播放区间约束下渲染) */
1030
+ | 'segmentProgress';
1028
1031
  type MergeControlType =
1029
1032
  /** 设备序列号 */
1030
1033
  'deviceID'
@@ -1343,6 +1346,10 @@ declare class MobileExtend extends EventEmitter {
1343
1346
  $topLeft: HTMLElement;
1344
1347
  $topRight: HTMLElement;
1345
1348
  $top: HTMLElement;
1349
+ /**
1350
+ * 回放片段进度条容器,位于扩展区最上方(紧贴播放控件下方)
1351
+ */
1352
+ $segmentProgress: HTMLElement;
1346
1353
  private readonly _$siblingContainer;
1347
1354
  constructor($siblingContainer: HTMLElement);
1348
1355
  render(): void;
@@ -1504,37 +1511,31 @@ declare class Theme extends EventEmitter {
1504
1511
  readonly recTypeChange: "recTypeChange";
1505
1512
  readonly definitionChange: "definitionChange";
1506
1513
  readonly speedChange: "speedChange";
1507
- readonly recordingChange: "recordingChange";
1514
+ readonly recordingChange: "recordingChange"; /** 封面控件 @since 0.0.1 @private */
1508
1515
  readonly talkingChange: "talkingChange";
1509
1516
  readonly talkVolumeChange: "talkVolumeChange";
1510
1517
  readonly broadcastChange: "broadcastChange";
1511
1518
  readonly aichatChange: "aichatChange";
1512
1519
  readonly liveChange: "liveChange";
1513
- /**
1514
- * @type { "rec" | "cloudRec" | "cloudRecord" } recType 回放类型
1515
- * ```ts
1516
- * theme.recType // 回放类型
1517
- * ```
1518
- */
1519
1520
  readonly recDropdownChange: "recDropdownChange";
1520
1521
  readonly recListChange: "recListChange";
1521
1522
  readonly alarmMessageChange: "alarmMessageChange";
1522
1523
  readonly setLoggerOptions: "setLoggerOptions";
1523
- readonly records: "records"; /**
1524
- * 更多控件(footer more)
1525
- * @since 0.0.1
1526
- * @private
1527
- */
1524
+ readonly records: "records";
1528
1525
  readonly ptzSpeedChange: "ptzSpeedChange";
1529
1526
  readonly setVideoLevelList: "setVideoLevelList";
1530
1527
  readonly currentVideoLevel: "currentVideoLevel";
1531
1528
  readonly currentVideoLevelAuto: "currentVideoLevelAuto";
1532
- readonly setAllDayRecTimes: "setAllDayRecTimes";
1529
+ readonly setAllDayRecTimes: "setAllDayRecTimes"; /**
1530
+ * 移动端扩展容器, 扩展的控件渲染在指定容器以外, 仅只用端适用, 为了可以放置大的控件和方便开发接入
1531
+ * @private
1532
+ */
1533
1533
  readonly getOSDTime: "getOSDTime";
1534
+ readonly playbackEnd: "playbackEnd";
1534
1535
  readonly control: {
1535
1536
  readonly play: "Control.play";
1536
1537
  readonly playDestroy: "Control.playDestroy";
1537
- readonly capturePicture: "Control.capturePicture"; /** @since 0.0.1 @private */
1538
+ readonly capturePicture: "Control.capturePicture";
1538
1539
  readonly capturePictureResult: "Control.capturePictureResult";
1539
1540
  readonly capturePictureDestroy: "Control.capturePictureDestroy";
1540
1541
  readonly volumechange: "Control.volumechange";
@@ -1546,17 +1547,27 @@ declare class Theme extends EventEmitter {
1546
1547
  readonly footerMoreShowControlsChange: "Control.footerMoreShowControlsChange";
1547
1548
  readonly footerMorePanelOpenChange: "Control.footerMorePanelOpenChange";
1548
1549
  readonly deviceDestroy: "Control.deviceDestroy";
1549
- readonly recTypeChange: "Control.recTypeChange"; /** 自定清晰度 @private */
1550
+ readonly recTypeChange: "Control.recTypeChange";
1550
1551
  readonly recDestroy: "Control.recDestroy";
1551
1552
  readonly definitionChange: "Control.definitionChange";
1552
1553
  readonly definitionList: "Control.definitionList";
1553
1554
  readonly definitionPanelOpenChange: "Control.definitionPanelOpenChange";
1555
+ /**
1556
+ * 录像回放的月份列表 @private
1557
+ */
1554
1558
  readonly definitionDestroy: "Control.definitionDestroy";
1555
1559
  readonly speedChange: "Control.speedChange";
1560
+ /**
1561
+ * 录像回放的月份列表 @private
1562
+ */
1556
1563
  readonly speedPanelOpenChange: "Control.speedPanelOpenChange";
1557
1564
  readonly speedDestroy: "Control.speedDestroy";
1558
1565
  readonly ptzPanelOpenChange: "Control.ptzPanelOpenChange";
1559
- readonly ptzSpeedChange: "Control.ptzSpeedChange";
1566
+ readonly ptzSpeedChange: "Control.ptzSpeedChange"; /**
1567
+ * 首帧同步 Live/RecDropdown 激活态的监听器引用。
1568
+ * 每次 `_renderTheme` 重新绑定前需先移除旧引用,避免 changeTheme 累积监听。
1569
+ * @private
1570
+ */
1560
1571
  readonly ptzError: "Control.ptzError";
1561
1572
  readonly ptzDestroy: "Control.ptzDestroy";
1562
1573
  readonly recordingChange: "Control.recordingChange";
@@ -1750,7 +1761,7 @@ declare class Theme extends EventEmitter {
1750
1761
  DEVICE_ENCRYPTED: string;
1751
1762
  NO_RECORD: string;
1752
1763
  PLAY_FAILED: string;
1753
- PLAY_SUCCESS: string;
1764
+ PLAY_SUCCESS: string; /** 语言包 @since 0.0.1 */
1754
1765
  STOP_SUCCESS: string;
1755
1766
  CHANGE_PLAYURL_SUCCESS: string;
1756
1767
  CHANGE_PLAYURL_FAILED: string;
@@ -1765,14 +1776,14 @@ declare class Theme extends EventEmitter {
1765
1776
  MAX_SPEED_LIMIT: string;
1766
1777
  MIN_SPEED_LIMIT: string;
1767
1778
  SEEK_CANNOT_CROSS_DAYS: string;
1768
- SEEK_TIMEFORMAT_ERROR: string;
1769
1779
  /** 所有控件列表, 所有控件名称规则(`${iconId}Control`), 如音量控件 this.controls["volumeControl"] @since 0.0.1 */
1780
+ SEEK_TIMEFORMAT_ERROR: string;
1770
1781
  PAUSE: string;
1771
1782
  PAUSE_FAILED: string;
1772
1783
  RESUME: string;
1773
1784
  RESUME_FAILED: string;
1774
1785
  CALL_END: string;
1775
- USER_DO_NOT_OWN_DEVICE: string;
1786
+ USER_DO_NOT_OWN_DEVICE: string; /** 加载控件 @since 0.0.1 @private */
1776
1787
  NO_CLOUD_RECORD: string;
1777
1788
  CHANGE_VIDEO_LEVEL: string;
1778
1789
  CHANGE_VIDEO_LEVEL_FAIL: string;
@@ -1788,13 +1799,13 @@ declare class Theme extends EventEmitter {
1788
1799
  VIDEO_LEVEL_3K: string;
1789
1800
  VIDEO_LEVEL_4k: string;
1790
1801
  RESET_THEME: string;
1791
- BTN_PLAY: string;
1792
- BTN_PAUSE: string;
1793
1802
  /**
1794
1803
  * 更多控件(header more)
1795
1804
  * @since 0.0.1
1796
1805
  * @private
1797
1806
  */
1807
+ BTN_PLAY: string;
1808
+ BTN_PAUSE: string;
1798
1809
  BTN_VOLUME: string;
1799
1810
  BTN_MUTED: string;
1800
1811
  BTN_RECORDVIDEO: string;
@@ -1804,9 +1815,9 @@ declare class Theme extends EventEmitter {
1804
1815
  BTN_AICHAT: string;
1805
1816
  BTN_LIVE: string;
1806
1817
  BTN_REC_DROPDOWN: string;
1807
- BTN_ALARM_MESSAGE: string; /** 头部控件 @since 0.0.1 @private */
1808
- REC_DROPDOWN_CLOUD_REC: string;
1809
- REC_DROPDOWN_CLOUD_RECORD: string; /** 低部控件 @since 0.0.1 @private */
1818
+ BTN_ALARM_MESSAGE: string;
1819
+ REC_DROPDOWN_CLOUD_REC: string; /** 低部控件 @since 0.0.1 @private */
1820
+ REC_DROPDOWN_CLOUD_RECORD: string;
1810
1821
  REC_DROPDOWN_LOCAL_REC: string;
1811
1822
  BTN_ZOOM: string;
1812
1823
  BTN_3D_ZOOM: string;
@@ -1834,7 +1845,7 @@ declare class Theme extends EventEmitter {
1834
1845
  RECORD_TIPS: string;
1835
1846
  RECORDS: string;
1836
1847
  OPEN_SOUND: string;
1837
- CLOSE_SOUND: string;
1848
+ CLOSE_SOUND: string; /** 容器的宽 */
1838
1849
  SOUND_OPENED: string;
1839
1850
  ZOOM: string;
1840
1851
  START_ZOOM: string;
@@ -1848,23 +1859,26 @@ declare class Theme extends EventEmitter {
1848
1859
  ZOOM_NOT_ENABLED: string;
1849
1860
  '3D_ZOOM': string;
1850
1861
  '3D_ZOOM_DISABLE': string;
1851
- '3D_ZOOM_FAILED': string;
1862
+ '3D_ZOOM_FAILED': string; /** 音量 */
1852
1863
  START_3D_ZOOM: string;
1853
1864
  CLOSE_3D_ZOOM: string;
1854
1865
  DEVICE_NOT_SUPPORT_3D_ZOOM: string;
1855
1866
  '3D_ZOOM_ACTIVED': string;
1856
1867
  '3D_ZOOM_NOT_ACTIVED': string;
1857
- '3D_ZOOM_CLOSED': string; /** 录制中 @private */
1868
+ '3D_ZOOM_CLOSED': string;
1858
1869
  CHANGE_ZOOM_TYPE: string;
1859
1870
  FULLSCREEN: string;
1860
1871
  FULLSCREEN_EXIT: string;
1861
- /** 倍速 @private */
1862
1872
  GET_WEB_FULLSCREEN_STATUS: string;
1863
1873
  WEB_FULLSCREEN: string;
1864
1874
  WEB_FULLSCREEN_EXIT: string;
1865
1875
  DESTROY: string;
1866
1876
  GET_CAPACITY: string;
1867
- GET_PTZ_STATUS: string;
1877
+ GET_PTZ_STATUS: string; /**
1878
+ * 播放区间(片段分享),null 表示不约束。
1879
+ * 由 SDK 层在初始化时通过 props 下发,主题层据此决定日历/回放类型按钮
1880
+ * 是否渲染、片段进度条是否渲染。区间没有运行时变更入口。
1881
+ */
1868
1882
  GET_PTZ_STATUS_FAILED: string;
1869
1883
  MOBILE_HIDE_PTZ: string;
1870
1884
  OPTION_PTZ_FAILED: string;
@@ -1873,16 +1887,20 @@ declare class Theme extends EventEmitter {
1873
1887
  PTZ_MID: string;
1874
1888
  PTZ_SLOW: string;
1875
1889
  PTZ_SPEED: string;
1876
- DEVICE_ZOOM: string;
1890
+ DEVICE_ZOOM: string; /**
1891
+ // * 记录回放的月份
1892
+ // *
1893
+ // * key: {序列号}_{通道号}_{rec | cloud | cloudRecord} 比如:BC7799091_1_rec BC7799091_1_cloud BC7799091_1_cloudRecord
1894
+ // *
1895
+ // * value: 月份列表 比如 ["2025-12-01", "2025-12-02"]
1896
+ // * @private
1897
+ // */
1877
1898
  DEVICE_FOCUS: string;
1878
1899
  NOT_SUPPORT_DEVICE_ZOOM: string;
1879
1900
  NOT_SUPPORT_FOCUS: string;
1880
1901
  MIRROR: string;
1881
- /**
1882
- * 录像回放的月份列表 @private
1883
- */
1884
1902
  MIRROR_TYPE_ERROR: string;
1885
- CHANGE_FEC_TYPE: string; /** 清理 header/footer 动画 定时器 @private */
1903
+ CHANGE_FEC_TYPE: string;
1886
1904
  DEVICE_NOT_SUPPORT: string;
1887
1905
  TYPE_NOT_SUPPORT: string;
1888
1906
  FEC_SUPPORT_VERSION: string;
@@ -1890,11 +1908,6 @@ declare class Theme extends EventEmitter {
1890
1908
  SET_FEC_PARAMS: string;
1891
1909
  GET_FEC_PARAMS: string;
1892
1910
  SET_FEC_PARAMS_FAILED: string;
1893
- /**
1894
- * 模板请求(getDetail)的中止控制器。
1895
- * 重新渲染或销毁时中止在途请求,避免请求返回后在已销毁/已切换的 theme 上继续操作。
1896
- * @private
1897
- */
1898
1911
  GET_FEC_PARAMS_FAILED: string;
1899
1912
  GET_FEC_PARAMS_SUPPORT_VERSION: string;
1900
1913
  SET_WATERMARK: string;
@@ -1939,6 +1952,40 @@ declare class Theme extends EventEmitter {
1939
1952
  395506: string;
1940
1953
  395507: string;
1941
1954
  395530: string;
1955
+ /**
1956
+ * 播放器主题
1957
+ * @class Theme
1958
+ * @category Theme
1959
+ * @remarks
1960
+ * 萤石播放器主题,主要用于播放器的 UI 展示和交互,支持 flv, hls, mp4, ezopen 等流类型。
1961
+ * 提供了丰富的控件和配置选项,支持多语言和自定义样式。
1962
+ *
1963
+ * @example
1964
+ * ```ts
1965
+ * // import css file
1966
+ * import "@ezuikit/player-theme/dist/style.js"
1967
+ * import Theme from '@ezuikit/player-theme';
1968
+ *
1969
+ * // class Player extends Theme {}
1970
+ *
1971
+ * const theme = new Theme({
1972
+ * container: () => document.querySelector('.player'),
1973
+ * type: 'flv',
1974
+ * });
1975
+ * ```
1976
+ *
1977
+ * ```html
1978
+ * <!-- html script, static in `@ezuikit/player-theme/dist` -->
1979
+ * <link rel="stylesheet" href="./assets/@ezuikit/player-theme/dist/style.css" />
1980
+ * <script src="./assets/@ezuikit/player-theme/dist/index.umd.js"></script>
1981
+ * <script>
1982
+ * const theme = new Theme({
1983
+ * container: () => document.querySelector('.player'),
1984
+ * type: 'flv',
1985
+ * });
1986
+ * </script>
1987
+ * ```
1988
+ */
1942
1989
  395544: string;
1943
1990
  395545: string;
1944
1991
  395546: string;
@@ -1960,7 +2007,6 @@ declare class Theme extends EventEmitter {
1960
2007
  395602: string;
1961
2008
  395610: string;
1962
2009
  395620: string;
1963
- /** 消息提示控件 @since 0.0.1 @private */
1964
2010
  395701: string;
1965
2011
  395702: string;
1966
2012
  395703: string;
@@ -1985,15 +2031,12 @@ declare class Theme extends EventEmitter {
1985
2031
  396508: string;
1986
2032
  396509: string;
1987
2033
  396510: string;
1988
- 396511: string;
1989
- 396512: string;
1990
- 396513: string;
1991
- 396514: string; /** 回放片段列表 */
2034
+ 396511: string; /** 静音 */
2035
+ 396512: string; /** 放大中 true: 可缩放状态,false: 禁止缩放状态(不能缩放) @private */
2036
+ 396513: string; /** 录制中 @private */
2037
+ 396514: string;
1992
2038
  396515: string;
1993
- 396516: string;
1994
- /**
1995
- * 录像回放的月份列表 @private
1996
- */
2039
+ 396516: string; /** 回放片段列表 */
1997
2040
  396517: string;
1998
2041
  396518: string;
1999
2042
  396519: string;
@@ -2003,9 +2046,17 @@ declare class Theme extends EventEmitter {
2003
2046
  397001: string;
2004
2047
  397002: string;
2005
2048
  397003: string;
2006
- 397004: string;
2049
+ 397004: string; /**
2050
+ * 首帧同步 Live/RecDropdown 激活态的监听器引用。
2051
+ * 每次 `_renderTheme` 重新绑定前需先移除旧引用,避免 changeTheme 累积监听。
2052
+ * @private
2053
+ */
2007
2054
  397005: string;
2008
- 397006: string;
2055
+ 397006: string; /**
2056
+ * 模板请求(getDetail)的中止控制器。
2057
+ * 重新渲染或销毁时中止在途请求,避免请求返回后在已销毁/已切换的 theme 上继续操作。
2058
+ * @private
2059
+ */
2009
2060
  397007: string;
2010
2061
  399000: string;
2011
2062
  399001: string;
@@ -2073,32 +2124,17 @@ declare class Theme extends EventEmitter {
2073
2124
  CHANGE_VIDEO_LEVEL: string;
2074
2125
  CHANGE_VIDEO_LEVEL_FAIL: string;
2075
2126
  GET_VIDEO_LEVEL_LIST: string;
2076
- /**
2077
- * 视频信息
2078
- * @version 3.1.2
2079
- * ```ts
2080
- * theme.videoInfo // ThemeVideoInfo
2081
- * ```
2082
- */
2083
2127
  PLEASE_INPUT_RIGHT_VIDEO_LEVEL: string;
2084
2128
  VIDEO_LEVEL_NOT_SUPPORT: string;
2085
2129
  VIDEO_LEVEL_AUTO: string;
2086
2130
  VIDEO_LEVEL_FLUENT: string;
2087
2131
  VIDEO_LEVEL_STANDARD: string;
2088
2132
  VIDEO_LEVEL_HEIGH: string;
2089
- VIDEO_LEVEL_SUPER: string; /**
2090
- * 视频分辨率 高
2091
- * @version 3.1.2
2092
- */
2133
+ VIDEO_LEVEL_SUPER: string;
2093
2134
  VIDEO_LEVEL_EXTREME: string;
2094
2135
  VIDEO_LEVEL_3K: string;
2095
2136
  VIDEO_LEVEL_4k: string;
2096
- RESET_THEME: string; /**
2097
- * 当前播放状态
2098
- * ```ts
2099
- * theme.playing // boolean
2100
- * ```
2101
- */
2137
+ RESET_THEME: string;
2102
2138
  BTN_PLAY: string;
2103
2139
  BTN_PAUSE: string;
2104
2140
  BTN_VOLUME: string;
@@ -2110,7 +2146,15 @@ declare class Theme extends EventEmitter {
2110
2146
  BTN_AICHAT: string;
2111
2147
  BTN_LIVE: string;
2112
2148
  BTN_REC_DROPDOWN: string;
2113
- BTN_ALARM_MESSAGE: string;
2149
+ BTN_ALARM_MESSAGE: string; /**
2150
+ * 视频分辨率 宽
2151
+ *
2152
+ * @version 3.1.2
2153
+ *
2154
+ * ```ts
2155
+ * theme.videoWidth // number
2156
+ * ```
2157
+ */
2114
2158
  REC_DROPDOWN_CLOUD_REC: string;
2115
2159
  REC_DROPDOWN_CLOUD_RECORD: string;
2116
2160
  REC_DROPDOWN_LOCAL_REC: string;
@@ -2135,13 +2179,7 @@ declare class Theme extends EventEmitter {
2135
2179
  DEVICE_ID: string;
2136
2180
  CAPTURE_SUCCESS: string;
2137
2181
  CAPTURE_FAILED: string;
2138
- START_RECORD_SUCCESS: string; /**
2139
- * 加载状态
2140
- * ```ts
2141
- * // 事件监听
2142
- * theme.on(Theme.EVENTS.loading, (loading: boolean) => {})
2143
- * ```
2144
- */
2182
+ START_RECORD_SUCCESS: string;
2145
2183
  START_RECORD_FAILED: string;
2146
2184
  STOP_RECORD_SUCCESS: string;
2147
2185
  STOP_RECORD_FAILED: string;
@@ -2157,6 +2195,13 @@ declare class Theme extends EventEmitter {
2157
2195
  ZOOM_SUB: string;
2158
2196
  ZOOM_ADD_MAX: string;
2159
2197
  ZOOM_SUB_MIN: string;
2198
+ /**
2199
+ * 加载状态
2200
+ * ```ts
2201
+ * // 事件监听
2202
+ * theme.on(Theme.EVENTS.loading, (loading: boolean) => {})
2203
+ * ```
2204
+ */
2160
2205
  ZOOM_LIMIT_MAX: string;
2161
2206
  ZOOM_LIMIT_MIN: string;
2162
2207
  ZOOM_NOT_ENABLED: string;
@@ -2287,6 +2332,7 @@ declare class Theme extends EventEmitter {
2287
2332
  /** 屏幕旋转角度 0 | 90 | 180 | 270 */
2288
2333
  private _orientationAngle;
2289
2334
  _url: string;
2335
+ _urlInfoCache: any;
2290
2336
  /** 是否播放中 @private */
2291
2337
  _playing: boolean;
2292
2338
  /** @private 加载中 */
@@ -2311,6 +2357,15 @@ declare class Theme extends EventEmitter {
2311
2357
  videoLevelList: DefinitionItem[];
2312
2358
  /** 回放片段列表 */
2313
2359
  recordList: TimeLineTimeSection[];
2360
+ /**
2361
+ * 播放区间(片段分享),null 表示不约束。
2362
+ * 由 SDK 层在初始化时通过 props 下发,主题层据此决定日历/回放类型按钮
2363
+ * 是否渲染、片段进度条是否渲染。区间没有运行时变更入口。
2364
+ */
2365
+ playbackRange: {
2366
+ begin: string;
2367
+ end: string;
2368
+ } | null;
2314
2369
  /** 窗口尺寸变化时,设置窗口超出隐藏,防止出现滚动条 */
2315
2370
  private _resizeOverflowTimer;
2316
2371
  /**
@@ -2341,7 +2396,8 @@ declare class Theme extends EventEmitter {
2341
2396
  /**
2342
2397
  * url 信息 播放地址信息
2343
2398
  */
2344
- get urlInfo(): Partial<_ezuikit_utils_tools.EzopenURL>;
2399
+ get urlInfo(): any;
2400
+ set urlInfo(info: any);
2345
2401
  /**
2346
2402
  * 容器的宽(单位 px)
2347
2403
  * ```ts
@@ -2364,6 +2420,7 @@ declare class Theme extends EventEmitter {
2364
2420
  * ```
2365
2421
  */
2366
2422
  get videoInfo(): ThemeVideoInfo;
2423
+ set videoInfo(info: ThemeVideoInfo);
2367
2424
  /**
2368
2425
  * 视频分辨率 宽
2369
2426
  *
@@ -2848,6 +2905,8 @@ interface ThemeOptions {
2848
2905
  timeOptions?: OmitControlOptions<TimePickerControlOptions> | null;
2849
2906
  /** 时间轴控件配置, 设置 null 不渲染控件 @since 0.0.1 */
2850
2907
  timeLineOptions?: any | null;
2908
+ /** 回放片段进度条配置(移动端,仅在设置了播放区间时渲染), 设置 null 不渲染控件 */
2909
+ segmentProgressOptions?: any | null;
2851
2910
  /** 初始化开始回调, 在内部可以添加事件(Control.beforeMountControls, Control.mountedControls)监听,设置 null 不渲染控件 @since 0.0.1 */
2852
2911
  onInitializing?: (theme: Theme) => void;
2853
2912
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ezuikit/player-theme",
3
- "version": "3.1.2-beta.4",
3
+ "version": "3.1.3-beta.2",
4
4
  "description": "player theme",
5
5
  "title": "theme",
6
6
  "main": "dist/index.cjs",
@@ -37,7 +37,8 @@
37
37
  "@ezuikit/utils-i18n": "^2.0.1",
38
38
  "@ezuikit/utils-logger": "^2.0.1",
39
39
  "@ezuikit/utils-tools": "^2.0.6",
40
- "@ezuikit/control-date-picker": "2.1.1",
40
+ "@ezuikit/control-date-picker": "2.1.2-beta.1",
41
+ "@ezuikit/control-segment-progress": "0.0.1",
41
42
  "@ezuikit/control-time-line": "2.1.0",
42
43
  "@ezuikit/control-ptz": "1.0.0",
43
44
  "@ezuikit/control-rec-list-modal": "0.0.1",