ecplayer 1.0.4 → 1.0.8
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/ecplayer.es.js +197 -184
- package/dist/ecplayer.umd.js +5 -5
- package/package.json +1 -1
package/dist/ecplayer.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".ecp-full-width{width:100%}.ecp-h-full{height:100%}.ecp-relative{position:relative}.ecp-absolute{position:absolute}.ecp-inset-0{top:0;right:0;bottom:0;left:0}.ecp-z-10{z-index:10}.ecp-flex{display:flex}.ecp-inline-flex{display:inline-flex}.ecp-flex-col{flex-direction:column}.ecp-flex-wrap{flex-wrap:wrap}.ecp-flex-1{flex:1 1 0%}.ecp-flex-shrink-0{flex-shrink:0}.ecp-grid{display:grid}.ecp-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ecp-hidden{display:none}.ecp-items-center{align-items:center}.ecp-items-end{align-items:flex-end}.ecp-items-start{align-items:flex-start}.ecp-justify-center{justify-content:center}.ecp-justify-between{justify-content:space-between}.ecp-justify-end{justify-content:flex-end}.ecp-justify-start{justify-content:flex-start}.ecp-text-center{text-align:center}.ecp-text-right{text-align:right}.ecp-self-center{align-self:center}.ecp-gap-1{gap:.25rem}.ecp-gap-2{gap:.5rem}.ecp-gap-3{gap:.75rem}.ecp-gap-px{gap:1px}.ecp-gap-05{gap:2px}.ecp-mb-1{margin-bottom:.25rem}.ecp-mb-2{margin-bottom:.5rem}.ecp-mb-4{margin-bottom:1rem}.ecp-mb-6{margin-bottom:1.5rem}.ecp-mr-2{margin-right:.5rem}.ecp-mt-4{margin-top:1rem}.ecp-mt-6{margin-top:1.5rem}.ecp-ml-auto{margin-left:auto}.ecp-p-1{padding:.25rem}.ecp-p-1-5{padding:.375rem}.ecp-p-2{padding:.5rem}.ecp-p-3{padding:.75rem}.ecp-p-4{padding:1rem}.ecp-p-6{padding:1.5rem}.ecp-p-8{padding:2rem}.ecp-px-2{padding-left:.5rem;padding-right:.5rem}.ecp-px-3{padding-left:.75rem;padding-right:.75rem}.ecp-px-4{padding-left:1rem;padding-right:1rem}.ecp-px-6{padding-left:1.5rem;padding-right:1.5rem}.ecp-py-1{padding-top:.25rem;padding-bottom:.25rem}.ecp-py-2{padding-top:.5rem;padding-bottom:.5rem}.ecp-py-3{padding-top:.75rem;padding-bottom:.75rem}.ecp-py-5{padding-top:1.25rem;padding-bottom:1.25rem}.ecp-pb-2{padding-bottom:.5rem}.ecp-pt-2{padding-top:.5rem}.ecp-w-1{width:.25rem}.ecp-w-3{width:.75rem}.ecp-w-4{width:1rem}.ecp-w-10{width:2.5rem}.ecp-w-12{width:3rem}.ecp-w-20{width:5rem}.ecp-w-24{width:6rem}.ecp-w-px{width:1px}.ecp-w-full{width:100%}.ecp-max-w-xs{max-width:20rem}.ecp-max-w-lg{max-width:32rem}.ecp-max-w-4xl{max-width:56rem}.ecp-h-0-5{height:.125rem}.ecp-h-1{height:.25rem}.ecp-h-1-5{height:.375rem}.ecp-h-2{height:.5rem}.ecp-h-3{height:.75rem}.ecp-h-4{height:1rem}.ecp-h-6{height:1.5rem}.ecp-h-8{height:2rem}.ecp-h-10{height:2.5rem}.ecp-h-12{height:3rem}.ecp-h-20{height:5rem}.ecp-h-40{width:10rem;height:40px}.ecp-h-64{height:16rem}.ecp-h-screen{height:100vh}.ecp-min-h-screen{min-height:100vh}.ecp-min-h-0{min-height:0}.ecp-min-w-12{min-width:3rem}.ecp-min-w-0{min-width:0}.ecp-aspect-square{aspect-ratio:1 / 1}.ecp-text-xs{font-size:.75rem;line-height:1rem}.ecp-text-sm{font-size:.875rem;line-height:1.25rem}.ecp-text-lg{font-size:1.125rem;line-height:1.75rem}.ecp-text-2xl{font-size:1.5rem;line-height:2rem}.ecp-font-medium{font-weight:500}.ecp-font-semibold{font-weight:600}.ecp-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.ecp-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ecp-text-white{color:#fff}.ecp-text-transparent{color:transparent}.ecp-text-gray-400{color:#9ca3af}.ecp-text-gray-500{color:#6b7280}.ecp-text-gray-600{color:#4b5563}.ecp-text-gray-700{color:#374151}.ecp-text-gray-800{color:#1f2937}.ecp-text-gray-100{color:#f3f4f6}.ecp-text-gray-200{color:#e5e7eb}.ecp-text-gray-300{color:#d1d5db}.ecp-text-red-500{color:#ef4444}.ecp-dark .ecp-text-dark-100{color:#f3f4f6}.ecp-dark .ecp-text-dark-200{color:#e5e7eb}.ecp-dark .ecp-text-dark-300{color:#d1d5db}.ecp-bg-white{background-color:#fff}.ecp-bg-black-20{background-color:#0003}.ecp-bg-black-30{background-color:#0000004d}.ecp-bg-black-40{background-color:#0006}.ecp-bg-black-50{background-color:#00000080}.ecp-bg-gray-100{background-color:#f3f4f6}.ecp-bg-gray-200{background-color:#e5e7eb}.ecp-bg-gray-300{background-color:#d1d5db}.ecp-bg-gray-700{background-color:#374151}.ecp-bg-gray-800{background-color:#1f2937}.ecp-bg-red-50{background-color:#fef2f2}.ecp-bg-transparent{background-color:transparent}.ecp-border{border-width:1px}.ecp-border-2{border-width:2px}.ecp-border-r{border-right-width:1px}.ecp-border-transparent{border-color:transparent}.ecp-border-gray-300{border-color:#d1d5db}.ecp-border-red-300{border-color:#fca5a5}.ecp-border-current{border-color:currentColor}.ecp-border-none{border:none}.ecp-outline-none{outline:none}.ecp-rounded{border-radius:.25rem}.ecp-rounded-lg{border-radius:.5rem}.ecp-rounded-xl{border-radius:.75rem}.ecp-rounded-2xl{border-radius:1rem}.ecp-rounded-full{border-radius:9999px}.ecp-rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.ecp-shadow-sm{box-shadow:0 1px 2px #0000000d}.ecp-shadow-lg{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.ecp-shadow-2xl{box-shadow:0 25px 50px -12px #00000040}.ecp-opacity-20{opacity:.2}.ecp-opacity-40{opacity:.4}.ecp-opacity-70{opacity:.7}.ecp-opacity-80{opacity:.8}.ecp-cursor-pointer{cursor:pointer}.ecp-cursor-not-allowed{cursor:not-allowed}.ecp-pointer-events-none{pointer-events:none}.ecp-transition{transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ecp-transition-all{transition:all .15s cubic-bezier(.4,0,.2,1)}.ecp-duration-75{transition-duration:75ms}.ecp-duration-100{transition-duration:.1s}.ecp-duration-150{transition-duration:.15s}.ecp-duration-300{transition-duration:.3s}.ecp-scale-0{transform:scale(0)}.ecp-translate-y-10{transform:translateY(2.5rem)}.ecp--translate-y-10{transform:translateY(-2.5rem)}.ecp-rotate-180{transform:rotate(180deg)}.ecp-hover-scale-105:hover{transform:scale(1.05)}.ecp-hover-scale-110:hover{transform:scale(1.1)}@keyframes ecp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ecp-animation-spin{animation:ecp-spin 15s infinite linear}.ecp-object-contain{-o-object-fit:contain;object-fit:contain}.ecp-backdrop-blur-xl{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.ecp-overflow-hidden{overflow:hidden}.ecp-top-0{top:0}.ecp-left-0{left:0}.ecp-fixed{position:fixed}.ecp-z-9999{z-index:9999}.ecp-appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.ecp-page-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}@media (min-width: 768px){.ecp-page-wrapper{padding:2rem}}.ecp-demo-container{width:100%;height:100%}@media (min-width: 768px){.ecp-demo-container{height:auto;max-width:56rem}}.ecp-container-glass{border-radius:.75rem;padding:2rem}.ecp-demo-header{margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:flex-start}.ecp-demo-title{font-size:1.5rem;font-weight:600;color:#1f2937;margin-bottom:.25rem}.ecp-demo-title--dark{color:#e5e7eb}.ecp-demo-subtitle{font-size:.875rem;color:#6b7280}.ecp-theme-btn{background:#fff;border:1px solid #d1d5db;color:#374151;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem}.ecp-theme-btn:hover{background:#f9fafb}.ecp-demo-actions{margin-top:1.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-action-btn{background:#fff;border:1px solid #d1d5db;color:#374151;padding:.5rem 1.5rem;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem}.ecp-action-btn:hover{background:#f9fafb}.ecp-file-input-hidden{display:none}.ecp-theme-selector-panel{border-radius:.75rem;padding:1.5rem;margin-bottom:1.5rem}.ecp-theme-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.ecp-theme-selector-title{font-size:1.125rem;font-weight:600;color:#1f2937}.ecp-theme-selector-close{color:#6b7280;font-size:.875rem;font-weight:500;background:none;border:none;cursor:pointer}.ecp-theme-selector-close:hover{color:#374151}.ecp-theme-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (min-width: 640px){.ecp-theme-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.ecp-theme-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.ecp-theme-card{background:#fff;padding:1rem;border-radius:.5rem;cursor:pointer;border:2px solid transparent;transition:all .15s cubic-bezier(.4,0,.2,1)}.ecp-theme-card--active{border-color:currentColor;box-shadow:0 10px 15px -3px #0000001a}.ecp-theme-color-preview{height:2.5rem;border-radius:.25rem;margin-bottom:.5rem}.ecp-theme-name{font-size:.875rem;font-weight:500;color:#374151}.ecp-vp-wrapper{width:100%;border-radius:.75rem;overflow:hidden}.ecp-vp-bg{padding:1rem}.ecp-vp-vu-outer{position:relative}.ecp-vp-vu-bg{border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d}.ecp-vp-vu-bg--light{background:#ffffffb3}.ecp-vp-vu-bg--dark{background:#0006}.ecp-vp-vu-bg--dimmed{opacity:.3}.ecp-vp-vu-bg--no-margin{margin-bottom:0}.ecp-vp-vu-bars{display:flex;justify-content:center;align-items:flex-end;gap:.25rem;height:16rem}.ecp-vp-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;justify-content:center;z-index:10;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s cubic-bezier(.4,0,.2,1)}.ecp-vp-eq-overlay--light{background:#fffc}.ecp-vp-eq-overlay--dark{background:#00000080}.ecp-vp-eq-title{font-size:.875rem;font-weight:500;margin-bottom:1rem}.ecp-vp-eq-title--light{color:#374151}.ecp-vp-eq-title--dark{color:#e5e7eb}.ecp-vp-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-vp-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-vp-eq-band-label{font-size:.75rem}.ecp-vp-eq-band-label--light{color:#4b5563}.ecp-vp-eq-band-label--dark{color:#d1d5db}.ecp-vp-eq-band-range{display:flex;align-items:center;gap:.75rem}.ecp-vp-eq-range-bound{font-size:.75rem}.ecp-vp-eq-range-bound--light{color:#6b7280}.ecp-vp-eq-range-bound--dark{color:#9ca3af}.ecp-vp-eq-slider{flex:1;height:2rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-vp-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-vp-eq-footer{display:flex;justify-content:flex-end;margin-top:1rem}.ecp-vp-eq-reset{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;transition:all .15s;border:none}.ecp-vp-eq-reset--light{background:#e5e7eb;color:#374151}.ecp-vp-eq-reset--light:hover{background:#d1d5db}.ecp-vp-eq-reset--dark{background:#374151;color:#e5e7eb}.ecp-vp-eq-reset--dark:hover{background:#4b5563}.ecp-vp-track{margin-bottom:1.5rem;display:flex;align-items:center}.ecp-vp-thumbnail-wrap{margin-right:.5rem;width:3rem;flex-shrink:0}.ecp-vp-thumbnail{height:3rem;width:3rem;border-radius:9999px}.ecp-vp-track-info{width:100%;min-width:0}.ecp-vp-track-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ecp-vp-track-name--light{color:#374151}.ecp-vp-track-name--dark{color:#f3f4f6}.ecp-vp-track-author{font-size:.75rem}.ecp-vp-track-author--light{color:#6b7280}.ecp-vp-track-author--dark{color:#d1d5db}.ecp-vp-seekbar{margin-bottom:1.5rem}.ecp-vp-seekbar-row{display:flex;align-items:center;gap:.25rem}.ecp-vp-time{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:3rem}.ecp-vp-time--right{text-align:right}.ecp-vp-time--light{color:#4b5563}.ecp-vp-time--dark{color:#f3f4f6}.ecp-vp-seek-input{flex:1;height:.5rem;background:#e5e7eb;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-seek-input:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-seek-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-vp-seek-input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-vp-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-vp-controls--sm{gap:.5rem}.ecp-vp-play-btn{padding:.5rem 1rem;min-width:6rem;border-radius:9999px;font-size:.875rem;font-weight:500;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:opacity .15s}.ecp-vp-play-btn:hover{opacity:.9}.ecp-vp-play-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-play-btn--compact{padding:1.25rem .75rem;min-width:unset}.ecp-vp-play-icon-wrap{position:relative;width:1rem;display:flex;align-items:center}.ecp-vp-stop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-stop-btn--light{background:#374151;color:#fff}.ecp-vp-stop-btn--light:hover{background:#1f2937}.ecp-vp-stop-btn--dark{background:#f3f4f6;color:#000}.ecp-vp-stop-btn--dark:hover{background:#d1d5db}.ecp-vp-stop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-stop-btn--wide{padding:.5rem 1rem}.ecp-vp-eq-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-eq-btn--off{background:#f3f4f6;color:#374151}.ecp-vp-eq-btn--off:hover{background:#d1d5db}.ecp-vp-eq-btn--on{color:#fff}.ecp-vp-eq-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-eq-btn--wide{padding:.5rem 1rem}.ecp-vp-loop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-loop-btn--off{background:#f3f4f6;color:#374151}.ecp-vp-loop-btn--off:hover{background:#d1d5db}.ecp-vp-loop-btn--on{color:#fff}.ecp-vp-loop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-loop-btn--wide{padding:.5rem 1rem}.ecp-vp-loop-icon--active{transform:rotate(180deg)}.ecp-vp-speed-wrap{display:flex;align-items:center}.ecp-vp-speed-select{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;outline:none;cursor:pointer;transition:all .15s;background:transparent}.ecp-vp-speed-select--light{color:#1f2937}.ecp-vp-speed-select--dark{color:#e5e7eb}.ecp-vp-speed-option--light{background:#fff;color:#1f2937}.ecp-vp-speed-option--dark{background:#1f2937;color:#f3f4f6}.ecp-vp-volume{display:flex;align-items:center;gap:.25rem;margin-left:auto}@media (min-width: 768px){.ecp-vp-volume{gap:.75rem}}.ecp-vp-mute-btn{padding:.5rem;border-radius:9999px;background:none;border:none;cursor:pointer;transition:all .15s}.ecp-vp-mute-btn:hover{background:#f3f4f680}.ecp-vp-mute-icon--light{color:#4b5563}.ecp-vp-mute-icon--dark{color:#f3f4f6}.ecp-vp-volume-slider{width:6rem;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-vp-volume-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}@media (max-width: 460px){.ecp-vp-volume-slider{display:none}}.ecp-vp-volume-pct{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:2.5rem;text-align:right}.ecp-vp-volume-pct--light{color:#374151}.ecp-vp-volume-pct--dark{color:#f3f4f6}.ecp-vp-error{font-size:.875rem;color:#ef4444;background:#fef2f2;padding:.75rem;border-radius:.25rem;margin-bottom:1rem;border:1px solid #fca5a5}.ecp-wave-outer{width:100%;max-width:32rem;position:relative}.ecp-wave-audio-el{display:none}.ecp-wave-card{border-radius:1rem;box-shadow:0 25px 50px -12px #00000040}.ecp-wave-card-inner{border-radius:1rem;padding:1.5rem;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.ecp-wave-thumbnail-wrap{width:100%;padding:1rem}.ecp-wave-thumbnail{width:100%;aspect-ratio:1 / 1;border-radius:.75rem}.ecp-wave-seek{position:relative;height:5rem;margin-bottom:1.5rem;cursor:pointer}.ecp-wave-bars{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;height:100%;width:100%;gap:1px}.ecp-wave-bar{width:.25rem;border-radius:.25rem .25rem 0 0;transition:all .15s}.ecp-wave-progress-line{position:absolute;top:0;height:100%;width:.25rem;background:#fff;border-right:1px solid black;border-radius:9999px;transition:all .15s;transform:translate(-50%)}.ecp-wave-times{display:flex;justify-content:space-between;font-size:.875rem;margin-bottom:1.5rem}.ecp-wave-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;justify-content:space-between;margin-bottom:1rem}.ecp-wave-left-controls{display:flex;align-items:center;gap:.5rem}.ecp-wave-vol-btn{padding:.5rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s}.ecp-wave-vol-slider{width:5rem;height:.375rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-wave-vol-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 1px 3px #0003}.ecp-wave-vol-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;cursor:pointer;border:2px solid white}.ecp-wave-center-controls{display:flex;justify-content:center}.ecp-wave-play-btn{padding:1rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s;box-shadow:0 10px 15px -3px #0000001a}.ecp-wave-play-btn:hover{transform:scale(1.05)}.ecp-wave-right-controls{display:flex;align-items:center;gap:.75rem}.ecp-wave-speed-select{padding:.25rem .5rem;border-radius:.5rem;font-size:.875rem;border:none;cursor:pointer}.ecp-wave-speed-select--light{background:#f3f4f6;color:#374151}.ecp-wave-speed-select--dark{background:#1f2937;color:#f3f4f6}.ecp-wave-eq-btn{padding:.5rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s}.ecp-wave-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0003;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:1rem;padding:1rem}.ecp-wave-eq-panel{max-width:20rem;width:100%;padding:.5rem 1rem 1rem;border-radius:.75rem}.ecp-wave-eq-panel--light{background:#fff}.ecp-wave-eq-panel--dark{background:#1f2937}.ecp-wave-eq-title{font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.ecp-wave-eq-title--light{color:#374151}.ecp-wave-eq-title--dark{color:#e5e7eb}.ecp-wave-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-wave-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-wave-eq-label--light{font-size:.75rem;color:#4b5563}.ecp-wave-eq-label--dark{font-size:.75rem;color:#d1d5db}.ecp-wave-eq-range-row{display:flex;align-items:center;gap:.75rem}.ecp-wave-eq-bound--light{font-size:.75rem;color:#6b7280}.ecp-wave-eq-bound--dark{font-size:.75rem;color:#9ca3af}.ecp-wave-eq-slider{flex:1;height:1rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-wave-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-wave-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none}.ecp-wave-eq-footer{display:flex;justify-content:space-between;margin-top:1.5rem}.ecp-wave-eq-footer-btn{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;border:none;transition:all .15s}.ecp-wave-eq-footer-btn--light{background:#e5e7eb;color:#374151}.ecp-wave-eq-footer-btn--light:hover{background:#d1d5db}.ecp-wave-eq-footer-btn--dark{background:#374151;color:#e5e7eb}.ecp-wave-eq-footer-btn--dark:hover{background:#4b5563}.ecp-wave-error{padding:1.5rem;border-radius:.75rem;text-align:center}.ecp-wave-error-title{font-weight:500}.ecp-wave-error-msg{font-size:.875rem}.ecp-wave-error--light{color:#dc2626}.ecp-wave-error--dark{color:#fca5a5}.ecp-nano-wrapper{position:relative;overflow:hidden;display:inline-flex;flex-direction:column;padding:.5rem .75rem;box-shadow:0 10px 15px -3px #0000001a}.ecp-nano-wrapper--pill{border-radius:9999px;width:110px;height:40px}.ecp-nano-wrapper--card{border-radius:1rem;width:120px;height:150px}.ecp-nano-progress-bg{position:absolute;top:0;left:0;height:100%;opacity:.2}.ecp-nano-content{position:absolute;display:flex;flex-direction:column}.ecp-nano-thumbnail-wrap{width:6rem;padding-bottom:.5rem}.ecp-nano-thumbnail{width:6rem;aspect-ratio:1 / 1;border-radius:.75rem}.ecp-nano-row{display:flex;align-items:center;gap:.5rem}.ecp-nano-play-btn{padding:.375rem;border-radius:9999px;border:none;cursor:pointer;flex-shrink:0;transition:transform .15s}.ecp-nano-play-btn:hover{transform:scale(1.1)}.ecp-nano-waveform{display:flex;width:100%;min-width:3rem;align-items:center;gap:2px;height:1.5rem}.ecp-nano-wave-bar{border-radius:9999px;width:100%;transition:height .2s}.ecp-video-wrapper{border-radius:.75rem;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.ecp-video-wrapper--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;height:100vh;width:100vw;background:#000}.ecp-video-inner{height:auto}.ecp-video-inner--fullscreen{display:flex;flex-direction:column;flex:1}.ecp-video-inner--padded{padding:1rem}.ecp-video-name{margin-bottom:1rem;font-weight:500}.ecp-video-name--light{color:#374151}.ecp-video-name--dark{color:#f3f4f6}.ecp-video-layout{position:relative;margin-bottom:1rem}.ecp-video-layout--row{display:flex;gap:.75rem}.ecp-video-layout--col{display:flex;flex-direction:column;gap:.75rem}.ecp-video-layout--fullscreen{flex:1;min-height:0}.ecp-video-vu-top,.ecp-video-vu-bottom{width:100%;height:3rem}.ecp-video-vu-side{width:3rem;background:#00000080;border-radius:.5rem;padding:.25rem}.ecp-video-el-wrap{flex:1;border-radius:.5rem;overflow:hidden;position:relative}.ecp-video-el-wrap--light{background:#ffffffb3}.ecp-video-el-wrap--dark{background:#000000b3}.ecp-video-el{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.ecp-video-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;justify-content:center;z-index:10;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s}.ecp-video-eq-panel{max-width:600px;width:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s}.ecp-video-eq-panel--light{background:#fffc}.ecp-video-eq-panel--dark{background:#000000b3}.ecp-video-eq-title{font-size:.875rem;font-weight:500;margin-bottom:1rem}.ecp-video-eq-title--light{color:#374151}.ecp-video-eq-title--dark{color:#e5e7eb}.ecp-video-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-video-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-video-eq-label--light{font-size:.75rem;color:#4b5563}.ecp-video-eq-label--dark{font-size:.75rem;color:#d1d5db}.ecp-video-eq-range-row{display:flex;align-items:center;gap:.75rem}.ecp-video-eq-bound--light{font-size:.75rem;color:#6b7280}.ecp-video-eq-bound--dark{font-size:.75rem;color:#9ca3af}.ecp-video-eq-slider{flex:1;height:1.5rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-video-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none}.ecp-video-eq-footer{display:flex;justify-content:space-between;margin-top:1.5rem}.ecp-video-eq-footer-btn{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;border:none;transition:all .15s}.ecp-video-eq-footer-btn--light{background:#e5e7eb;color:#374151}.ecp-video-eq-footer-btn--light:hover{background:#d1d5db}.ecp-video-eq-footer-btn--dark{background:#374151;color:#e5e7eb}.ecp-video-eq-footer-btn--dark:hover{background:#4b5563}.ecp-video-seekbar{margin-bottom:1rem}.ecp-video-seekbar--fullscreen{margin-top:.75rem}.ecp-video-seekbar-row{display:flex;align-items:center;gap:.75rem}.ecp-video-time{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:3rem}.ecp-video-time--right{text-align:right}.ecp-video-time--light{color:#4b5563}.ecp-video-time--dark{color:#f3f4f6}.ecp-video-seek-input{flex:1;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-seek-input:disabled{opacity:.4;cursor:not-allowed}.ecp-video-seek-input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-video-seek-input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-video-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-video-play-btn{border-radius:9999px;font-size:.875rem;font-weight:500;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:opacity .15s;padding:.5rem 1rem}.ecp-video-play-btn:hover{opacity:.9}.ecp-video-play-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-play-btn--compact{padding:1.25rem .75rem}.ecp-video-play-icon-wrap{position:relative;width:1rem;display:flex;align-items:center}.ecp-video-stop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-video-stop-btn--light{background:#374151;color:#fff}.ecp-video-stop-btn--light:hover{background:#1f2937}.ecp-video-stop-btn--dark{background:#f3f4f6;color:#000}.ecp-video-stop-btn--dark:hover{background:#d1d5db}.ecp-video-stop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-fullscreen-btn{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s;padding:.75rem}.ecp-video-fullscreen-btn--light{background:#374151;color:#fff}.ecp-video-fullscreen-btn--light:hover{background:#1f2937}.ecp-video-fullscreen-btn--dark{background:#f3f4f6;color:#000}.ecp-video-fullscreen-btn--dark:hover{background:#d1d5db}.ecp-video-fullscreen-btn--wide{padding:.5rem 1rem}.ecp-video-eq-toggle-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-video-eq-toggle-btn--off{background:#f3f4f6;color:#374151}.ecp-video-eq-toggle-btn--off:hover{background:#d1d5db}.ecp-video-eq-toggle-btn--on{color:#fff}.ecp-video-eq-toggle-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-eq-toggle-btn--wide{padding:.5rem 1rem}.ecp-video-speed-wrap{display:flex;align-items:center}.ecp-video-speed-select{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;outline:none;cursor:pointer;background:transparent;transition:all .15s}.ecp-video-speed-select--light{color:#1f2937}.ecp-video-speed-select--dark{color:#e5e7eb}.ecp-video-speed-option--light{background:#f3f4f6;color:#1f2937}.ecp-video-speed-option--dark{background:#1f2937;color:#f3f4f6}.ecp-video-volume{display:flex;align-items:center;gap:.25rem;margin-left:auto}@media (min-width: 768px){.ecp-video-volume{gap:.75rem}}.ecp-video-mute-btn{padding:.5rem;border-radius:.5rem;background:none;border:none;cursor:pointer;transition:all .15s}.ecp-video-mute-btn:hover{background:#f3f4f6}.ecp-video-mute-icon--light{color:#4b5563}.ecp-video-mute-icon--dark{color:#f3f4f6}.ecp-video-vol-slider{width:6rem;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-vol-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}.ecp-video-vol-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px #0003}@media (max-width: 460px){.ecp-video-vol-slider{display:none}}.ecp-video-vol-pct{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:2.5rem;text-align:right}.ecp-video-vol-pct--light{color:#374151}.ecp-video-vol-pct--dark{color:#f3f4f6}.ecp-video-error{font-size:.875rem;color:#ef4444;background:#fef2f2;padding:.75rem;border-radius:.25rem;margin-bottom:1rem;border:1px solid #fca5a5}.ecp-vu-bar-wrap{flex:1;height:100%;position:relative;display:flex;flex-direction:column;justify-content:flex-end}.ecp-vu-bar-fill{border-radius:.25rem .25rem 0 0;transition:height 75ms}.ecp-vu-peak-line{position:absolute;width:100%;height:2px;transition:top .1s}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".ecp-full-width{width:100%}.ecp-h-full{height:100%}.ecp-relative{position:relative}.ecp-absolute{position:absolute}.ecp-inset-0{top:0;right:0;bottom:0;left:0}.ecp-z-10{z-index:10}.ecp-flex{display:flex}.ecp-inline-flex{display:inline-flex}.ecp-flex-col{flex-direction:column}.ecp-flex-wrap{flex-wrap:wrap}.ecp-flex-1{flex:1 1 0%}.ecp-flex-shrink-0{flex-shrink:0}.ecp-grid{display:grid}.ecp-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ecp-hidden{display:none}.ecp-items-center{align-items:center}.ecp-items-end{align-items:flex-end}.ecp-items-start{align-items:flex-start}.ecp-justify-center{justify-content:center}.ecp-justify-between{justify-content:space-between}.ecp-justify-end{justify-content:flex-end}.ecp-justify-start{justify-content:flex-start}.ecp-text-center{text-align:center}.ecp-text-right{text-align:right}.ecp-self-center{align-self:center}.ecp-gap-1{gap:.25rem}.ecp-gap-2{gap:.5rem}.ecp-gap-3{gap:.75rem}.ecp-gap-px{gap:1px}.ecp-gap-05{gap:2px}.ecp-mb-1{margin-bottom:.25rem}.ecp-mb-2{margin-bottom:.5rem}.ecp-mb-4{margin-bottom:1rem}.ecp-mb-6{margin-bottom:1.5rem}.ecp-mr-2{margin-right:.5rem}.ecp-mt-4{margin-top:1rem}.ecp-mt-6{margin-top:1.5rem}.ecp-ml-auto{margin-left:auto}.ecp-p-1{padding:.25rem}.ecp-p-1-5{padding:.375rem}.ecp-p-2{padding:.5rem}.ecp-p-3{padding:.75rem}.ecp-p-4{padding:1rem}.ecp-p-6{padding:1.5rem}.ecp-p-8{padding:2rem}.ecp-px-2{padding-left:.5rem;padding-right:.5rem}.ecp-px-3{padding-left:.75rem;padding-right:.75rem}.ecp-px-4{padding-left:1rem;padding-right:1rem}.ecp-px-6{padding-left:1.5rem;padding-right:1.5rem}.ecp-py-1{padding-top:.25rem;padding-bottom:.25rem}.ecp-py-2{padding-top:.5rem;padding-bottom:.5rem}.ecp-py-3{padding-top:.75rem;padding-bottom:.75rem}.ecp-py-5{padding-top:1.25rem;padding-bottom:1.25rem}.ecp-pb-2{padding-bottom:.5rem}.ecp-pt-2{padding-top:.5rem}.ecp-w-1{width:.25rem}.ecp-w-3{width:.75rem}.ecp-w-4{width:1rem}.ecp-w-10{width:2.5rem}.ecp-w-12{width:3rem}.ecp-w-20{width:5rem}.ecp-w-24{width:6rem}.ecp-w-px{width:1px}.ecp-w-full{width:100%}.ecp-max-w-xs{max-width:20rem}.ecp-max-w-lg{max-width:32rem}.ecp-max-w-4xl{max-width:56rem}.ecp-h-0-5{height:.125rem}.ecp-h-1{height:.25rem}.ecp-h-1-5{height:.375rem}.ecp-h-2{height:.5rem}.ecp-h-3{height:.75rem}.ecp-h-4{height:1rem}.ecp-h-6{height:1.5rem}.ecp-h-8{height:2rem}.ecp-h-10{height:2.5rem}.ecp-h-12{height:3rem}.ecp-h-20{height:5rem}.ecp-h-40{width:10rem;height:40px}.ecp-h-64{height:16rem}.ecp-h-screen{height:100vh}.ecp-min-h-screen{min-height:100vh}.ecp-min-h-0{min-height:0}.ecp-min-w-12{min-width:3rem}.ecp-min-w-0{min-width:0}.ecp-aspect-square{aspect-ratio:1 / 1}.ecp-text-xs{font-size:.75rem;line-height:1rem}.ecp-text-sm{font-size:.875rem;line-height:1.25rem}.ecp-text-lg{font-size:1.125rem;line-height:1.75rem}.ecp-text-2xl{font-size:1.5rem;line-height:2rem}.ecp-font-medium{font-weight:500}.ecp-font-semibold{font-weight:600}.ecp-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.ecp-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ecp-text-white{color:#fff}.ecp-text-transparent{color:transparent}.ecp-text-gray-400{color:#9ca3af}.ecp-text-gray-500{color:#6b7280}.ecp-text-gray-600{color:#4b5563}.ecp-text-gray-700{color:#374151}.ecp-text-gray-800{color:#1f2937}.ecp-text-gray-100{color:#f3f4f6}.ecp-text-gray-200{color:#e5e7eb}.ecp-text-gray-300{color:#d1d5db}.ecp-text-red-500{color:#ef4444}.ecp-dark .ecp-text-dark-100{color:#f3f4f6}.ecp-dark .ecp-text-dark-200{color:#e5e7eb}.ecp-dark .ecp-text-dark-300{color:#d1d5db}.ecp-bg-white{background-color:#fff}.ecp-bg-black-20{background-color:#0003}.ecp-bg-black-30{background-color:#0000004d}.ecp-bg-black-40{background-color:#0006}.ecp-bg-black-50{background-color:#00000080}.ecp-bg-gray-100{background-color:#f3f4f6}.ecp-bg-gray-200{background-color:#e5e7eb}.ecp-bg-gray-300{background-color:#d1d5db}.ecp-bg-gray-700{background-color:#374151}.ecp-bg-gray-800{background-color:#1f2937}.ecp-bg-red-50{background-color:#fef2f2}.ecp-bg-transparent{background-color:transparent}.ecp-border{border-width:1px}.ecp-border-2{border-width:2px}.ecp-border-r{border-right-width:1px}.ecp-border-transparent{border-color:transparent}.ecp-border-gray-300{border-color:#d1d5db}.ecp-border-red-300{border-color:#fca5a5}.ecp-border-current{border-color:currentColor}.ecp-border-none{border:none}.ecp-outline-none{outline:none}.ecp-rounded{border-radius:.25rem}.ecp-rounded-lg{border-radius:.5rem}.ecp-rounded-xl{border-radius:.75rem}.ecp-rounded-2xl{border-radius:1rem}.ecp-rounded-full{border-radius:9999px}.ecp-rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.ecp-shadow-sm{box-shadow:0 1px 2px #0000000d}.ecp-shadow-lg{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.ecp-shadow-2xl{box-shadow:0 25px 50px -12px #00000040}.ecp-opacity-20{opacity:.2}.ecp-opacity-40{opacity:.4}.ecp-opacity-70{opacity:.7}.ecp-opacity-80{opacity:.8}.ecp-cursor-pointer{cursor:pointer}.ecp-cursor-not-allowed{cursor:not-allowed}.ecp-pointer-events-none{pointer-events:none}.ecp-transition{transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ecp-transition-all{transition:all .15s cubic-bezier(.4,0,.2,1)}.ecp-duration-75{transition-duration:75ms}.ecp-duration-100{transition-duration:.1s}.ecp-duration-150{transition-duration:.15s}.ecp-duration-300{transition-duration:.3s}.ecp-scale-0{transform:scale(0)}.ecp-translate-y-10{transform:translateY(2.5rem)}.ecp--translate-y-10{transform:translateY(-2.5rem)}.ecp-rotate-180{transform:rotate(180deg)}.ecp-hover-scale-105:hover{transform:scale(1.05)}.ecp-hover-scale-110:hover{transform:scale(1.1)}@keyframes ecp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ecp-animation-spin{animation:ecp-spin 15s infinite linear}.ecp-object-contain{-o-object-fit:contain;object-fit:contain}.ecp-backdrop-blur-xl{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.ecp-overflow-hidden{overflow:hidden}.ecp-top-0{top:0}.ecp-left-0{left:0}.ecp-fixed{position:fixed}.ecp-z-9999{z-index:9999}.ecp-appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.ecp-page-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}@media (min-width: 768px){.ecp-page-wrapper{padding:2rem}}.ecp-demo-container{width:100%;height:100%}@media (min-width: 768px){.ecp-demo-container{height:auto;max-width:56rem}}.ecp-container-glass{border-radius:.75rem;padding:2rem}.ecp-demo-header{margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:flex-start}.ecp-demo-title{font-size:1.5rem;font-weight:600;color:#1f2937;margin-bottom:.25rem}.ecp-demo-title--dark{color:#e5e7eb}.ecp-demo-subtitle{font-size:.875rem;color:#6b7280}.ecp-theme-btn{background:#fff;border:1px solid #d1d5db;color:#374151;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem}.ecp-theme-btn:hover{background:#f9fafb}.ecp-demo-actions{margin-top:1.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-action-btn{background:#fff;border:1px solid #d1d5db;color:#374151;padding:.5rem 1.5rem;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:.5rem}.ecp-action-btn:hover{background:#f9fafb}.ecp-file-input-hidden{display:none}.ecp-theme-selector-panel{border-radius:.75rem;padding:1.5rem;margin-bottom:1.5rem}.ecp-theme-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.ecp-theme-selector-title{font-size:1.125rem;font-weight:600;color:#1f2937}.ecp-theme-selector-close{color:#6b7280;font-size:.875rem;font-weight:500;background:none;border:none;cursor:pointer}.ecp-theme-selector-close:hover{color:#374151}.ecp-theme-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (min-width: 640px){.ecp-theme-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.ecp-theme-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.ecp-theme-card{background:#fff;padding:1rem;border-radius:.5rem;cursor:pointer;border:2px solid transparent;transition:all .15s cubic-bezier(.4,0,.2,1)}.ecp-theme-card--active{border-color:currentColor;box-shadow:0 10px 15px -3px #0000001a}.ecp-theme-color-preview{height:2.5rem;border-radius:.25rem;margin-bottom:.5rem}.ecp-theme-name{font-size:.875rem;font-weight:500;color:#374151}.ecp-vp-wrapper{width:100%;border-radius:.75rem;overflow:hidden}.ecp-vp-bg{padding:1rem}.ecp-vp-vu-outer{position:relative}.ecp-vp-vu-bg{border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d}.ecp-vp-vu-bg--light{background:#ffffffb3}.ecp-vp-vu-bg--dark{background:#0006}.ecp-vp-vu-bg--transparent{background:transparent!important;padding:0!important;box-shadow:none!important}.ecp-vp-vu-bg--dimmed{opacity:.3}.ecp-vp-vu-bg--no-margin{margin-bottom:0}.ecp-vp-vu-bars{display:flex;justify-content:center;align-items:flex-end;gap:.25rem;height:16rem}.ecp-vp-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;justify-content:center;z-index:10;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s cubic-bezier(.4,0,.2,1)}.ecp-vp-eq-overlay--light{background:#fffc}.ecp-vp-eq-overlay--dark{background:#00000080}.ecp-vp-eq-title{font-size:.875rem;font-weight:500;margin-bottom:1rem}.ecp-vp-eq-title--light{color:#374151}.ecp-vp-eq-title--dark{color:#e5e7eb}.ecp-vp-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-vp-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-vp-eq-band-label{font-size:.75rem}.ecp-vp-eq-band-label--light{color:#4b5563}.ecp-vp-eq-band-label--dark{color:#d1d5db}.ecp-vp-eq-band-range{display:flex;align-items:center;gap:.75rem}.ecp-vp-eq-range-bound{font-size:.75rem}.ecp-vp-eq-range-bound--light{color:#6b7280}.ecp-vp-eq-range-bound--dark{color:#9ca3af}.ecp-vp-eq-slider{flex:1;height:2rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-vp-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-vp-eq-footer{display:flex;justify-content:flex-end;margin-top:1rem}.ecp-vp-eq-reset{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;transition:all .15s;border:none}.ecp-vp-eq-reset--light{background:#e5e7eb;color:#374151}.ecp-vp-eq-reset--light:hover{background:#d1d5db}.ecp-vp-eq-reset--dark{background:#374151;color:#e5e7eb}.ecp-vp-eq-reset--dark:hover{background:#4b5563}.ecp-vp-track{margin-bottom:1.5rem;display:flex;align-items:center}.ecp-vp-thumbnail-wrap{margin-right:.5rem;width:3rem;flex-shrink:0}.ecp-vp-thumbnail{height:3rem;width:3rem;border-radius:9999px}.ecp-vp-track-info{width:100%;min-width:0}.ecp-vp-track-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ecp-vp-track-name--light{color:#374151}.ecp-vp-track-name--dark{color:#f3f4f6}.ecp-vp-track-author{font-size:.75rem}.ecp-vp-track-author--light{color:#6b7280}.ecp-vp-track-author--dark{color:#d1d5db}.ecp-vp-seekbar{margin-bottom:1.5rem}.ecp-vp-seekbar-row{display:flex;align-items:center;gap:.25rem}.ecp-vp-time{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:3rem}.ecp-vp-time--right{text-align:right}.ecp-vp-time--light{color:#4b5563}.ecp-vp-time--dark{color:#f3f4f6}.ecp-vp-seek-input{flex:1;height:.5rem;background:#e5e7eb;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-seek-input:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-seek-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-vp-seek-input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-vp-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-vp-controls--sm{gap:.5rem}.ecp-vp-play-btn{padding:.5rem 1rem;min-width:6rem;border-radius:9999px;font-size:.875rem;font-weight:500;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:opacity .15s}.ecp-vp-play-btn:hover{opacity:.9}.ecp-vp-play-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-play-btn--compact{padding:1.25rem .75rem;min-width:unset}.ecp-vp-play-icon-wrap{position:relative;width:1rem;display:flex;align-items:center}.ecp-vp-stop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-stop-btn--light{background:#374151;color:#fff}.ecp-vp-stop-btn--light:hover{background:#1f2937}.ecp-vp-stop-btn--dark{background:#f3f4f6;color:#000}.ecp-vp-stop-btn--dark:hover{background:#d1d5db}.ecp-vp-stop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-stop-btn--wide{padding:.5rem 1rem}.ecp-vp-eq-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-eq-btn--off{background:#f3f4f6;color:#374151}.ecp-vp-eq-btn--off:hover{background:#d1d5db}.ecp-vp-eq-btn--on{color:#fff}.ecp-vp-eq-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-eq-btn--wide{padding:.5rem 1rem}.ecp-vp-loop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-vp-loop-btn--off{background:#f3f4f6;color:#374151}.ecp-vp-loop-btn--off:hover{background:#d1d5db}.ecp-vp-loop-btn--on{color:#fff}.ecp-vp-loop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-vp-loop-btn--wide{padding:.5rem 1rem}.ecp-vp-loop-icon--active{transform:rotate(180deg)}.ecp-vp-speed-wrap{display:flex;align-items:center}.ecp-vp-speed-select{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;outline:none;cursor:pointer;transition:all .15s;background:transparent}.ecp-vp-speed-select--light{color:#1f2937}.ecp-vp-speed-select--dark{color:#e5e7eb}.ecp-vp-speed-option--light{background:#fff;color:#1f2937}.ecp-vp-speed-option--dark{background:#1f2937;color:#f3f4f6}.ecp-vp-volume{display:flex;align-items:center;gap:.25rem;margin-left:auto}@media (min-width: 768px){.ecp-vp-volume{gap:.75rem}}.ecp-vp-mute-btn{padding:.5rem;border-radius:9999px;background:none;border:none;cursor:pointer;transition:all .15s}.ecp-vp-mute-btn:hover{background:#f3f4f680}.ecp-vp-mute-icon--light{color:#4b5563}.ecp-vp-mute-icon--dark{color:#f3f4f6}.ecp-vp-volume-slider{width:6rem;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-vp-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-vp-volume-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}@media (max-width: 460px){.ecp-vp-volume-slider{display:none}}.ecp-vp-volume-pct{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:2.5rem;text-align:right}.ecp-vp-volume-pct--light{color:#374151}.ecp-vp-volume-pct--dark{color:#f3f4f6}.ecp-vp-error{font-size:.875rem;color:#ef4444;background:#fef2f2;padding:.75rem;border-radius:.25rem;margin-bottom:1rem;border:1px solid #fca5a5}.ecp-wave-outer{width:100%;max-width:32rem;position:relative}.ecp-wave-audio-el{display:none}.ecp-wave-card{border-radius:1rem;box-shadow:0 25px 50px -12px #00000040}.ecp-wave-card-inner{border-radius:1rem;padding:1.5rem;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.ecp-wave-thumbnail-wrap{width:100%;padding:1rem}.ecp-wave-thumbnail{width:100%;aspect-ratio:1 / 1;border-radius:.75rem}.ecp-wave-seek{position:relative;height:5rem;margin-bottom:1.5rem;cursor:pointer}.ecp-wave-bars{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;height:100%;width:100%;gap:1px}.ecp-wave-bar{width:.25rem;border-radius:.25rem .25rem 0 0;transition:all .15s}.ecp-wave-progress-line{position:absolute;top:0;height:100%;width:.25rem;background:#fff;border-right:1px solid black;border-radius:9999px;transition:all .15s;transform:translate(-50%)}.ecp-wave-times{display:flex;justify-content:space-between;font-size:.875rem;margin-bottom:1.5rem}.ecp-wave-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;justify-content:space-between;margin-bottom:1rem}.ecp-wave-left-controls{display:flex;align-items:center;gap:.5rem}.ecp-wave-vol-btn{padding:.5rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s}.ecp-wave-vol-slider{width:5rem;height:.375rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-wave-vol-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 1px 3px #0003}.ecp-wave-vol-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none}.ecp-wave-center-controls{display:flex;justify-content:center}.ecp-wave-play-btn{padding:1rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s;box-shadow:0 10px 15px -3px #0000001a}.ecp-wave-play-btn:hover{transform:scale(1.05)}.ecp-wave-right-controls{display:flex;align-items:center;gap:.75rem}.ecp-wave-speed-select{padding:.25rem .5rem;border-radius:.5rem;font-size:.875rem;border:none;cursor:pointer}.ecp-wave-speed-select--light{background:#f3f4f6;color:#374151}.ecp-wave-speed-select--dark{background:#1f2937;color:#f3f4f6}.ecp-wave-eq-btn{padding:.5rem;border-radius:9999px;border:none;cursor:pointer;transition:all .15s}.ecp-wave-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0003;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:1rem;padding:1rem}.ecp-wave-eq-panel{max-width:20rem;width:100%;padding:.5rem 1rem 1rem;border-radius:.75rem}.ecp-wave-eq-panel--light{background:#fff}.ecp-wave-eq-panel--dark{background:#1f2937}.ecp-wave-eq-title{font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.ecp-wave-eq-title--light{color:#374151}.ecp-wave-eq-title--dark{color:#e5e7eb}.ecp-wave-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-wave-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-wave-eq-label--light{font-size:.75rem;color:#4b5563}.ecp-wave-eq-label--dark{font-size:.75rem;color:#d1d5db}.ecp-wave-eq-range-row{display:flex;align-items:center;gap:.75rem}.ecp-wave-eq-bound--light{font-size:.75rem;color:#6b7280}.ecp-wave-eq-bound--dark{font-size:.75rem;color:#9ca3af}.ecp-wave-eq-slider{flex:1;height:1rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-wave-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-wave-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none}.ecp-wave-eq-footer{display:flex;justify-content:space-between;margin-top:1.5rem}.ecp-wave-eq-footer-btn{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;border:none;transition:all .15s}.ecp-wave-eq-footer-btn--light{background:#e5e7eb;color:#374151}.ecp-wave-eq-footer-btn--light:hover{background:#d1d5db}.ecp-wave-eq-footer-btn--dark{background:#374151;color:#e5e7eb}.ecp-wave-eq-footer-btn--dark:hover{background:#4b5563}.ecp-wave-error{padding:1.5rem;border-radius:.75rem;text-align:center}.ecp-wave-error-title{font-weight:500}.ecp-wave-error-msg{font-size:.875rem}.ecp-wave-error--light{color:#dc2626}.ecp-wave-error--dark{color:#fca5a5}.ecp-nano-wrapper{position:relative;overflow:hidden;display:inline-flex;flex-direction:column;padding:.5rem .75rem;box-shadow:0 10px 15px -3px #0000001a}.ecp-nano-wrapper--pill{border-radius:9999px;width:110px;height:40px}.ecp-nano-wrapper--card{border-radius:1rem;width:120px;height:150px}.ecp-nano-progress-bg{position:absolute;top:0;left:0;height:100%;opacity:.2}.ecp-nano-content{position:absolute;display:flex;flex-direction:column}.ecp-nano-thumbnail-wrap{width:6rem;padding-bottom:.5rem}.ecp-nano-thumbnail{width:6rem;aspect-ratio:1 / 1;border-radius:.75rem}.ecp-nano-row{display:flex;align-items:center;gap:.5rem}.ecp-nano-play-btn{padding:.375rem;border-radius:9999px;border:none;cursor:pointer;flex-shrink:0;transition:transform .15s}.ecp-nano-play-btn:hover{transform:scale(1.1)}.ecp-nano-waveform{display:flex;width:100%;min-width:3rem;align-items:center;gap:2px;height:1.5rem}.ecp-nano-wave-bar{border-radius:9999px;width:100%;transition:height .2s}.ecp-video-wrapper{border-radius:.75rem;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.ecp-video-wrapper--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;height:100vh;width:100vw;background:#000}.ecp-video-inner{height:auto}.ecp-video-inner--fullscreen{display:flex;flex-direction:column;flex:1;min-height:0}.ecp-video-inner--padded{padding:1rem}.ecp-video-name{margin-bottom:1rem;font-weight:500}.ecp-video-name--light{color:#374151}.ecp-video-name--dark{color:#f3f4f6}.ecp-video-layout{position:relative;margin-bottom:1rem}.ecp-video-layout--row{display:flex;gap:.75rem}.ecp-video-layout--col{display:flex;flex-direction:column;gap:.75rem}.ecp-video-layout--fullscreen{flex:1;min-height:0}.ecp-video-vu-top,.ecp-video-vu-bottom{width:100%;height:3rem}.ecp-video-vu-side{width:3rem;background:#00000080;border-radius:.5rem;padding:.25rem}.ecp-video-el-wrap{flex:1;border-radius:.5rem;overflow:hidden;position:relative}.ecp-video-el-wrap--light{background:#ffffffb3}.ecp-video-el-wrap--dark{background:#000000b3}.ecp-video-el{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.ecp-video-eq-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;justify-content:center;z-index:10;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s}.ecp-video-eq-panel{max-width:600px;width:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center;border-radius:.5rem;padding:1rem;box-shadow:0 1px 2px #0000000d;transition:all .3s}.ecp-video-eq-panel--light{background:#fffc}.ecp-video-eq-panel--dark{background:#000000b3}.ecp-video-eq-title{font-size:.875rem;font-weight:500;margin-bottom:1rem}.ecp-video-eq-title--light{color:#374151}.ecp-video-eq-title--dark{color:#e5e7eb}.ecp-video-eq-bands{display:flex;flex-direction:column;gap:1rem}.ecp-video-eq-band-header{display:flex;justify-content:space-between;margin-bottom:.25rem}.ecp-video-eq-label--light{font-size:.75rem;color:#4b5563}.ecp-video-eq-label--dark{font-size:.75rem;color:#d1d5db}.ecp-video-eq-range-row{display:flex;align-items:center;gap:.75rem}.ecp-video-eq-bound--light{font-size:.75rem;color:#6b7280}.ecp-video-eq-bound--dark{font-size:.75rem;color:#9ca3af}.ecp-video-eq-slider{flex:1;height:1.5rem;background:#d1d5db;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-eq-slider::-webkit-slider-thumb{-webkit-appearance:none;width:0;height:0;background:transparent;border:none;box-shadow:none}.ecp-video-eq-slider::-moz-range-thumb{width:0;height:0;background:transparent;border:none}.ecp-video-eq-footer{display:flex;justify-content:space-between;margin-top:1.5rem}.ecp-video-eq-footer-btn{padding:.25rem .75rem;border-radius:.25rem;font-size:.75rem;cursor:pointer;border:none;transition:all .15s}.ecp-video-eq-footer-btn--light{background:#e5e7eb;color:#374151}.ecp-video-eq-footer-btn--light:hover{background:#d1d5db}.ecp-video-eq-footer-btn--dark{background:#374151;color:#e5e7eb}.ecp-video-eq-footer-btn--dark:hover{background:#4b5563}.ecp-video-seekbar{margin-bottom:1rem}.ecp-video-seekbar--fullscreen{margin-top:.75rem}.ecp-video-seekbar-row{display:flex;align-items:center;gap:.75rem}.ecp-video-time{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:3rem}.ecp-video-time--right{text-align:right}.ecp-video-time--light{color:#4b5563}.ecp-video-time--dark{color:#f3f4f6}.ecp-video-seek-input{flex:1;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-seek-input:disabled{opacity:.4;cursor:not-allowed}.ecp-video-seek-input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-video-seek-input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-video-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.ecp-video-play-btn{border-radius:9999px;font-size:.875rem;font-weight:500;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:opacity .15s;padding:.5rem 1rem}.ecp-video-play-btn:hover{opacity:.9}.ecp-video-play-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-play-btn--compact{padding:1.25rem .75rem}.ecp-video-play-icon-wrap{position:relative;width:1rem;display:flex;align-items:center}.ecp-video-stop-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-video-stop-btn--light{background:#374151;color:#fff}.ecp-video-stop-btn--light:hover{background:#1f2937}.ecp-video-stop-btn--dark{background:#f3f4f6;color:#000}.ecp-video-stop-btn--dark:hover{background:#d1d5db}.ecp-video-stop-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-fullscreen-btn{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s;padding:.75rem}.ecp-video-fullscreen-btn--light{background:#374151;color:#fff}.ecp-video-fullscreen-btn--light:hover{background:#1f2937}.ecp-video-fullscreen-btn--dark{background:#f3f4f6;color:#000}.ecp-video-fullscreen-btn--dark:hover{background:#d1d5db}.ecp-video-fullscreen-btn--wide{padding:.5rem 1rem}.ecp-video-eq-toggle-btn{padding:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s}.ecp-video-eq-toggle-btn--off{background:#f3f4f6;color:#374151}.ecp-video-eq-toggle-btn--off:hover{background:#d1d5db}.ecp-video-eq-toggle-btn--on{color:#fff}.ecp-video-eq-toggle-btn:disabled{opacity:.4;cursor:not-allowed}.ecp-video-eq-toggle-btn--wide{padding:.5rem 1rem}.ecp-video-speed-wrap{display:flex;align-items:center}.ecp-video-speed-select{border-radius:9999px;font-size:.875rem;font-weight:500;border:none;outline:none;cursor:pointer;background:transparent;transition:all .15s}.ecp-video-speed-select--light{color:#1f2937}.ecp-video-speed-select--dark{color:#e5e7eb}.ecp-video-speed-option--light{background:#f3f4f6;color:#1f2937}.ecp-video-speed-option--dark{background:#1f2937;color:#f3f4f6}.ecp-video-volume{display:flex;align-items:center;gap:.25rem;margin-left:auto}@media (min-width: 768px){.ecp-video-volume{gap:.75rem}}.ecp-video-mute-btn{padding:.5rem;border-radius:.5rem;background:none;border:none;cursor:pointer;transition:all .15s}.ecp-video-mute-btn:hover{background:#f3f4f6}.ecp-video-mute-icon--light{color:#4b5563}.ecp-video-mute-icon--dark{color:#f3f4f6}.ecp-video-vol-slider{width:6rem;height:.5rem;border-radius:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ecp-video-vol-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}.ecp-video-vol-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;cursor:pointer;background:var(--thumb-color, #ffffff);border:none;box-shadow:0 2px 6px #0003}@media (max-width: 460px){.ecp-video-vol-slider{display:none}}.ecp-video-vol-pct{font-size:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;width:2.5rem;text-align:right}.ecp-video-vol-pct--light{color:#374151}.ecp-video-vol-pct--dark{color:#f3f4f6}.ecp-video-error{font-size:.875rem;color:#ef4444;background:#fef2f2;padding:.75rem;border-radius:.25rem;margin-bottom:1rem;border:1px solid #fca5a5}.ecp-vu-bar-wrap{flex:1;height:100%;position:relative;display:flex;flex-direction:column;justify-content:flex-end}.ecp-vu-bar-fill{border-radius:.25rem .25rem 0 0;transition:height 75ms}.ecp-vu-peak-line{position:absolute;width:100%;height:2px;transition:top .1s}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
2
2
|
import { jsx as e, Fragment as Ve, jsxs as c } from "react/jsx-runtime";
|
|
3
|
-
import { forwardRef as Qe, createElement as Ie, useState as m, useRef as
|
|
3
|
+
import { forwardRef as Qe, createElement as Ie, useState as m, useRef as b, useEffect as $ } from "react";
|
|
4
4
|
/**
|
|
5
5
|
* @license lucide-react v0.540.0 - ISC
|
|
6
6
|
*
|
|
@@ -65,7 +65,7 @@ const et = Qe(
|
|
|
65
65
|
...O
|
|
66
66
|
},
|
|
67
67
|
[
|
|
68
|
-
...y.map(([
|
|
68
|
+
...y.map(([F, I]) => Ie(F, I)),
|
|
69
69
|
...Array.isArray(f) ? f : [f]
|
|
70
70
|
]
|
|
71
71
|
)
|
|
@@ -322,7 +322,7 @@ const ft = [
|
|
|
322
322
|
slider: "#ec4899"
|
|
323
323
|
}
|
|
324
324
|
};
|
|
325
|
-
function
|
|
325
|
+
function ht({ theme: s, setTheme: l, close: u }) {
|
|
326
326
|
const v = Object.keys(ge).map((C) => ({
|
|
327
327
|
key: C,
|
|
328
328
|
name: ge[C].name,
|
|
@@ -353,7 +353,7 @@ function vt({ theme: s, setTheme: l, close: u }) {
|
|
|
353
353
|
)) })
|
|
354
354
|
] });
|
|
355
355
|
}
|
|
356
|
-
function
|
|
356
|
+
function vt({
|
|
357
357
|
audio: s,
|
|
358
358
|
name: l = "No track loaded",
|
|
359
359
|
author: u,
|
|
@@ -373,15 +373,15 @@ function ht({
|
|
|
373
373
|
},
|
|
374
374
|
mode: O = "light",
|
|
375
375
|
bands: x = null,
|
|
376
|
-
transparent:
|
|
376
|
+
transparent: F = !1,
|
|
377
377
|
autoPlay: I = !1,
|
|
378
|
-
equalizer:
|
|
378
|
+
equalizer: z = { bass: 0, mid: 0, treble: 0 }
|
|
379
379
|
}) {
|
|
380
|
-
const [
|
|
381
|
-
bass:
|
|
382
|
-
mid:
|
|
383
|
-
treble:
|
|
384
|
-
}), [ue, te] = m(1), [G, w] = m(0), p =
|
|
380
|
+
const [E, H] = m(!1), [j, P] = m(0), [M, D] = m(0), [k, S] = m(C || 100), [ae, me] = m(!1), [V, ee] = m(!1), [se, ie] = m(!1), [ce, de] = m([]), [R, Q] = m(!1), [Y, oe] = m({
|
|
381
|
+
bass: z.bass || 0,
|
|
382
|
+
mid: z.mid || 0,
|
|
383
|
+
treble: z.treble || 0
|
|
384
|
+
}), [ue, te] = m(1), [G, w] = m(0), p = b(null), L = b(null), K = b(null), fe = b(null), W = b(null), re = b(null), X = b(null), N = b(null), T = b(null), Z = b(null);
|
|
385
385
|
$(() => {
|
|
386
386
|
const t = Z.current;
|
|
387
387
|
if (!t) return;
|
|
@@ -435,13 +435,13 @@ function ht({
|
|
|
435
435
|
{ freq: 8e3 },
|
|
436
436
|
{ freq: 1e4 },
|
|
437
437
|
{ freq: 12500 }
|
|
438
|
-
], d =
|
|
438
|
+
], d = b(r.map(() => 0)), g = b(r.map(() => 0)), B = b(r.map(() => 0)), _ = b(!1), J = b(typeof v == "string" ? v : "purple"), h = typeof v == "string" ? ge[v] || ge.purple : typeof v == "object" ? v : ge.purple, A = O === "dark", ke = typeof y == "object" && Object.keys(y).length === 0;
|
|
439
439
|
$(() => {
|
|
440
|
-
typeof v == "string" ? J.current = v : J.current = "purple",
|
|
440
|
+
typeof v == "string" ? J.current = v : J.current = "purple", ve();
|
|
441
441
|
}, [v]), $(() => {
|
|
442
442
|
p.current || (p.current = new Audio());
|
|
443
443
|
const t = p.current, a = () => {
|
|
444
|
-
se ||
|
|
444
|
+
se || P(t.currentTime);
|
|
445
445
|
}, o = () => D(t.duration), i = () => {
|
|
446
446
|
V || (H(!1), N.current && cancelAnimationFrame(N.current));
|
|
447
447
|
}, q = () => H(!0), U = () => H(!1);
|
|
@@ -449,10 +449,10 @@ function ht({
|
|
|
449
449
|
t.removeEventListener("timeupdate", a), t.removeEventListener("loadedmetadata", o), t.removeEventListener("ended", i), t.removeEventListener("play", q), t.removeEventListener("pause", U);
|
|
450
450
|
};
|
|
451
451
|
}, [se, V]), $(() => () => {
|
|
452
|
-
p.current && (p.current.pause(), p.current.src = "", p.current.load()),
|
|
452
|
+
p.current && (p.current.pause(), p.current.src = "", p.current.load()), L.current && L.current.close().catch((t) => console.warn("AudioContext cleanup error:", t)), N.current && cancelAnimationFrame(N.current);
|
|
453
453
|
}, []), $(() => {
|
|
454
454
|
if (s) {
|
|
455
|
-
const t =
|
|
455
|
+
const t = E, a = k, o = V;
|
|
456
456
|
if (N.current && (cancelAnimationFrame(N.current), N.current = null), fe.current) {
|
|
457
457
|
try {
|
|
458
458
|
fe.current.disconnect();
|
|
@@ -488,18 +488,18 @@ function ht({
|
|
|
488
488
|
}
|
|
489
489
|
X.current = null;
|
|
490
490
|
}
|
|
491
|
-
|
|
491
|
+
L.current && (L.current.close().catch((ne) => console.warn("AudioContext close error:", ne)), L.current = null), p.current && (p.current.pause(), p.current.src = "", p.current.load()), p.current = new Audio();
|
|
492
492
|
try {
|
|
493
493
|
p.current.crossOrigin = "anonymous";
|
|
494
494
|
} catch {
|
|
495
495
|
}
|
|
496
496
|
p.current.src = s, p.current.preload = "auto", p.current.muted = !1, p.current.volume = ae ? 0 : a / 100, p.current.loop = o, p.current.load();
|
|
497
497
|
const i = p.current, q = () => {
|
|
498
|
-
se ||
|
|
498
|
+
se || P(i.currentTime);
|
|
499
499
|
}, U = () => D(i.duration), pe = () => {
|
|
500
500
|
V || (H(!1), N.current && cancelAnimationFrame(N.current));
|
|
501
501
|
}, ye = () => H(!0), $e = () => H(!1);
|
|
502
|
-
i.addEventListener("timeupdate", q), i.addEventListener("loadedmetadata", U), i.addEventListener("ended", pe), i.addEventListener("play", ye), i.addEventListener("pause", $e),
|
|
502
|
+
i.addEventListener("timeupdate", q), i.addEventListener("loadedmetadata", U), i.addEventListener("ended", pe), i.addEventListener("play", ye), i.addEventListener("pause", $e), P(0), H(!1), d.current = r.map(() => 0), g.current = r.map(() => 0), B.current = r.map(() => 0), ve(), t && p.current.play().catch((ne) => console.error("Play failed:", ne));
|
|
503
503
|
}
|
|
504
504
|
}, [s]), $(() => {
|
|
505
505
|
p.current && (p.current.volume = ae ? 0 : k / 100);
|
|
@@ -508,17 +508,17 @@ function ht({
|
|
|
508
508
|
}, [V]), $(() => {
|
|
509
509
|
p.current && (p.current.playbackRate = ue);
|
|
510
510
|
}, [ue]), $(() => {
|
|
511
|
-
|
|
511
|
+
L.current && (W.current && (W.current.gain.value = Y.bass), re.current && (re.current.gain.value = Y.mid), X.current && (X.current.gain.value = Y.treble));
|
|
512
512
|
}, [Y]), $(() => {
|
|
513
|
-
_.current =
|
|
514
|
-
}, [
|
|
513
|
+
_.current = E, N.current && (cancelAnimationFrame(N.current), N.current = null), E ? (L.current || Ce(), Ne()) : he();
|
|
514
|
+
}, [E]);
|
|
515
515
|
const Ce = () => {
|
|
516
|
-
if (!
|
|
516
|
+
if (!L.current && p.current)
|
|
517
517
|
try {
|
|
518
518
|
const t = window.AudioContext || window.webkitAudioContext;
|
|
519
519
|
if (t) {
|
|
520
520
|
const a = new t();
|
|
521
|
-
|
|
521
|
+
L.current = a;
|
|
522
522
|
const o = a.createBiquadFilter();
|
|
523
523
|
o.type = "lowshelf", o.frequency.value = 320, o.gain.value = Y.bass;
|
|
524
524
|
const i = a.createBiquadFilter();
|
|
@@ -534,17 +534,17 @@ function ht({
|
|
|
534
534
|
console.error("Failed to setup audio context:", t);
|
|
535
535
|
}
|
|
536
536
|
}, we = (t) => {
|
|
537
|
-
const a =
|
|
537
|
+
const a = L.current, o = K.current;
|
|
538
538
|
if (!a || !o) return 0;
|
|
539
539
|
const i = a.sampleRate / 2, q = Math.round(t / i * o.frequencyBinCount);
|
|
540
540
|
return Math.min(q, o.frequencyBinCount - 1);
|
|
541
|
-
},
|
|
541
|
+
}, he = () => {
|
|
542
542
|
if (_.current) return;
|
|
543
543
|
d.current = d.current.map((i) => i * 0.7);
|
|
544
544
|
const t = Date.now();
|
|
545
|
-
g.current = g.current.map((i, q) => t -
|
|
545
|
+
g.current = g.current.map((i, q) => t - B.current[q] > 1500 ? i * 0.95 : i), ve();
|
|
546
546
|
const a = Math.max(...d.current), o = Math.max(...g.current);
|
|
547
|
-
a > 0.01 || o > 0.01 ? N.current = requestAnimationFrame(
|
|
547
|
+
a > 0.01 || o > 0.01 ? N.current = requestAnimationFrame(he) : (_.current || (d.current = r.map(() => 0), g.current = r.map(() => 0), B.current = r.map(() => 0), ve()), N.current && cancelAnimationFrame(N.current), N.current = null);
|
|
548
548
|
}, Ne = () => {
|
|
549
549
|
if (!K.current || !_.current) return;
|
|
550
550
|
const t = K.current.frequencyBinCount, a = new Uint8Array(t);
|
|
@@ -556,9 +556,9 @@ function ht({
|
|
|
556
556
|
let $e = ye > 0 ? pe / ye / 255 : 0;
|
|
557
557
|
$e = Math.pow($e, 0.6), d.current[i] = d.current[i] * 0.8 + $e * 0.2;
|
|
558
558
|
const ne = Date.now();
|
|
559
|
-
d.current[i] > g.current[i] ? (g.current[i] = d.current[i],
|
|
560
|
-
}),
|
|
561
|
-
},
|
|
559
|
+
d.current[i] > g.current[i] ? (g.current[i] = d.current[i], B.current[i] = ne) : ne - B.current[i] > 1500 && (g.current[i] *= 0.95);
|
|
560
|
+
}), ve(), N.current = requestAnimationFrame(Ne);
|
|
561
|
+
}, ve = () => {
|
|
562
562
|
if (!T.current) return;
|
|
563
563
|
const t = ge[J.current] || ge.rainbow;
|
|
564
564
|
let a = "";
|
|
@@ -573,20 +573,20 @@ function ht({
|
|
|
573
573
|
`;
|
|
574
574
|
}), T.current.innerHTML = a;
|
|
575
575
|
}, xe = () => {
|
|
576
|
-
!p.current || !s || (
|
|
576
|
+
!p.current || !s || (E ? p.current.pause() : (L.current && L.current.state === "suspended" && L.current.resume(), p.current.play().catch((t) => console.error("Play failed:", t))));
|
|
577
577
|
}, Ee = () => {
|
|
578
|
-
p.current && (p.current.pause(), p.current.currentTime = 0, H(!1),
|
|
578
|
+
p.current && (p.current.pause(), p.current.currentTime = 0, H(!1), P(0), d.current = r.map(() => 0), g.current = r.map(() => 0), B.current = r.map(() => 0), ve());
|
|
579
579
|
}, Le = (t) => {
|
|
580
|
-
const o = parseFloat(t.target.value) / 100 *
|
|
581
|
-
|
|
580
|
+
const o = parseFloat(t.target.value) / 100 * M;
|
|
581
|
+
P(o), p.current && !se && (p.current.currentTime = o);
|
|
582
582
|
}, Ae = () => ie(!0), Re = () => {
|
|
583
|
-
p.current && (p.current.currentTime =
|
|
583
|
+
p.current && (p.current.currentTime = j), ie(!1);
|
|
584
584
|
}, ze = (t) => {
|
|
585
585
|
const a = parseInt(t.target.value);
|
|
586
|
-
|
|
586
|
+
S(a), me(a === 0);
|
|
587
587
|
}, Se = () => me(!ae), Be = (t) => te(parseFloat(t.target.value)), je = () => ee(!V), Te = (t, a) => oe((o) => ({ ...o, [t]: a })), be = () => oe({ bass: 0, mid: 0, treble: 0 });
|
|
588
588
|
$(() => {
|
|
589
|
-
((typeof y == "object" && Object.keys(y).length === 0 || !y) && !
|
|
589
|
+
((typeof y == "object" && Object.keys(y).length === 0 || !y) && !E || I) && xe();
|
|
590
590
|
}, [y]);
|
|
591
591
|
const qe = (t) => {
|
|
592
592
|
if (isNaN(t)) return "0:00";
|
|
@@ -602,22 +602,22 @@ function ht({
|
|
|
602
602
|
" ",
|
|
603
603
|
t[1]
|
|
604
604
|
] }, a)) });
|
|
605
|
-
const Ue = ke ||
|
|
605
|
+
const Ue = ke || F ? void 0 : A ? "#6060606a" : "#ffffffab", Oe = ke || F ? void 0 : h.bg;
|
|
606
606
|
return /* @__PURE__ */ e("div", { ref: Z, className: "ecp-vp-wrapper", style: { backgroundColor: Ue }, children: /* @__PURE__ */ c("div", { className: "ecp-vp-bg", style: { background: Oe }, children: [
|
|
607
607
|
/* @__PURE__ */ c("div", { className: "ecp-vp-vu-outer", children: [
|
|
608
|
-
/* @__PURE__ */ e("div", { className: `ecp-vp-vu-bg${
|
|
609
|
-
R && /* @__PURE__ */ c("div", { className: `ecp-vp-eq-overlay${
|
|
610
|
-
/* @__PURE__ */ e("h3", { className: `ecp-vp-eq-title${
|
|
608
|
+
/* @__PURE__ */ e("div", { className: `ecp-vp-vu-bg ${F ? " ecp-vp-vu-bg--transparent" : A ? " ecp-vp-vu-bg--dark" : " ecp-vp-vu-bg--light"}${R && F ? " ecp-vp-vu-bg--dimmed" : ""}${ke ? " ecp-vp-vu-bg--no-margin" : ""}`, children: /* @__PURE__ */ e("div", { className: "ecp-vp-vu-bars", ref: T }) }),
|
|
609
|
+
R && /* @__PURE__ */ c("div", { className: `ecp-vp-eq-overlay${A ? " ecp-vp-eq-overlay--dark" : " ecp-vp-eq-overlay--light"}`, children: [
|
|
610
|
+
/* @__PURE__ */ e("h3", { className: `ecp-vp-eq-title${A ? " ecp-vp-eq-title--dark" : " ecp-vp-eq-title--light"}`, children: "Equalizer" }),
|
|
611
611
|
/* @__PURE__ */ e("div", { className: "ecp-vp-eq-bands", children: ["bass", "mid", "treble"].map((t) => /* @__PURE__ */ c("div", { className: "ecp-vp-eq-band", children: [
|
|
612
612
|
/* @__PURE__ */ c("div", { className: "ecp-vp-eq-band-header", children: [
|
|
613
|
-
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-band-label${
|
|
614
|
-
/* @__PURE__ */ c("span", { className: `ecp-vp-eq-band-label${
|
|
613
|
+
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-band-label${A ? " ecp-vp-eq-band-label--dark" : " ecp-vp-eq-band-label--light"}`, children: t.charAt(0).toUpperCase() + t.slice(1) }),
|
|
614
|
+
/* @__PURE__ */ c("span", { className: `ecp-vp-eq-band-label${A ? " ecp-vp-eq-band-label--dark" : " ecp-vp-eq-band-label--light"}`, children: [
|
|
615
615
|
Y[t],
|
|
616
616
|
" dB"
|
|
617
617
|
] })
|
|
618
618
|
] }),
|
|
619
619
|
/* @__PURE__ */ c("div", { className: "ecp-vp-eq-band-range", children: [
|
|
620
|
-
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-range-bound${
|
|
620
|
+
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-range-bound${A ? " ecp-vp-eq-range-bound--dark" : " ecp-vp-eq-range-bound--light"}`, children: "-20" }),
|
|
621
621
|
/* @__PURE__ */ e(
|
|
622
622
|
"input",
|
|
623
623
|
{
|
|
@@ -627,31 +627,34 @@ function ht({
|
|
|
627
627
|
value: Y[t],
|
|
628
628
|
onChange: (a) => Te(t, parseInt(a.target.value)),
|
|
629
629
|
className: "ecp-vp-eq-slider",
|
|
630
|
-
style: {
|
|
630
|
+
style: {
|
|
631
|
+
background: `linear-gradient(to right, ${h.slider} ${(Y[t] + 20) / 40 * 100}%, ${h.slider + "30"} ${(Y[t] + 20) / 40 * 100}%)`,
|
|
632
|
+
"--thumb-color": h.slider
|
|
633
|
+
}
|
|
631
634
|
}
|
|
632
635
|
),
|
|
633
|
-
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-range-bound${
|
|
636
|
+
/* @__PURE__ */ e("span", { className: `ecp-vp-eq-range-bound${A ? " ecp-vp-eq-range-bound--dark" : " ecp-vp-eq-range-bound--light"}`, children: "+20" })
|
|
634
637
|
] })
|
|
635
638
|
] }, t)) }),
|
|
636
|
-
/* @__PURE__ */ e("div", { className: "ecp-vp-eq-footer", children: /* @__PURE__ */ e("button", { onClick: be, className: `ecp-vp-eq-reset${
|
|
639
|
+
/* @__PURE__ */ e("div", { className: "ecp-vp-eq-footer", children: /* @__PURE__ */ e("button", { onClick: be, className: `ecp-vp-eq-reset${A ? " ecp-vp-eq-reset--dark" : " ecp-vp-eq-reset--light"}`, children: "Reset" }) })
|
|
637
640
|
] })
|
|
638
641
|
] }),
|
|
639
642
|
y.trackName && /* @__PURE__ */ c("div", { className: "ecp-vp-track", children: [
|
|
640
|
-
f && /* @__PURE__ */ e("div", { className: "ecp-vp-thumbnail-wrap", children: /* @__PURE__ */ e("img", { src: f, alt: "", className: `ecp-vp-thumbnail${
|
|
643
|
+
f && /* @__PURE__ */ e("div", { className: "ecp-vp-thumbnail-wrap", children: /* @__PURE__ */ e("img", { src: f, alt: "", className: `ecp-vp-thumbnail${E ? " ecp-animation-spin" : ""}` }) }),
|
|
641
644
|
/* @__PURE__ */ c("div", { className: "ecp-vp-track-info", children: [
|
|
642
|
-
/* @__PURE__ */ e("div", { className: `ecp-vp-track-name${
|
|
643
|
-
u && typeof u == "string" && /* @__PURE__ */ e("div", { className: `ecp-vp-track-author${
|
|
645
|
+
/* @__PURE__ */ e("div", { className: `ecp-vp-track-name${A ? " ecp-vp-track-name--dark" : " ecp-vp-track-name--light"}`, children: l }),
|
|
646
|
+
u && typeof u == "string" && /* @__PURE__ */ e("div", { className: `ecp-vp-track-author${A ? " ecp-vp-track-author--dark" : " ecp-vp-track-author--light"}`, children: u })
|
|
644
647
|
] })
|
|
645
648
|
] }),
|
|
646
649
|
y.seekbar && /* @__PURE__ */ e("div", { className: "ecp-vp-seekbar", children: /* @__PURE__ */ c("div", { className: "ecp-vp-seekbar-row", children: [
|
|
647
|
-
/* @__PURE__ */ e("span", { className: `ecp-vp-time${
|
|
650
|
+
/* @__PURE__ */ e("span", { className: `ecp-vp-time${A ? " ecp-vp-time--dark" : " ecp-vp-time--light"}`, children: qe(j) }),
|
|
648
651
|
/* @__PURE__ */ e(
|
|
649
652
|
"input",
|
|
650
653
|
{
|
|
651
654
|
type: "range",
|
|
652
655
|
min: "0",
|
|
653
656
|
max: "100",
|
|
654
|
-
value:
|
|
657
|
+
value: M > 0 ? j / M * 100 : 0,
|
|
655
658
|
onChange: Le,
|
|
656
659
|
onMouseDown: Ae,
|
|
657
660
|
onMouseUp: Re,
|
|
@@ -660,12 +663,12 @@ function ht({
|
|
|
660
663
|
disabled: !s,
|
|
661
664
|
className: "ecp-vp-seek-input",
|
|
662
665
|
style: {
|
|
663
|
-
background: s &&
|
|
664
|
-
"--thumb-color":
|
|
666
|
+
background: s && M > 0 ? `linear-gradient(to right, ${h.slider} ${j / M * 100}%, ${h.slider + "30"} ${j / M * 100}%)` : h.slider + "30",
|
|
667
|
+
"--thumb-color": h.slider
|
|
665
668
|
}
|
|
666
669
|
}
|
|
667
670
|
),
|
|
668
|
-
/* @__PURE__ */ e("span", { className: `ecp-vp-time ecp-vp-time--right${
|
|
671
|
+
/* @__PURE__ */ e("span", { className: `ecp-vp-time ecp-vp-time--right${A ? " ecp-vp-time--dark" : " ecp-vp-time--light"}`, children: qe(M) })
|
|
669
672
|
] }) }),
|
|
670
673
|
/* @__PURE__ */ c("div", { className: `ecp-vp-controls${G < 330 ? " ecp-vp-controls--sm" : ""}`, children: [
|
|
671
674
|
y.play && /* @__PURE__ */ c(
|
|
@@ -674,13 +677,13 @@ function ht({
|
|
|
674
677
|
onClick: xe,
|
|
675
678
|
disabled: !s,
|
|
676
679
|
className: `ecp-vp-play-btn${G < 350 ? " ecp-vp-play-btn--compact" : ""}`,
|
|
677
|
-
style: { backgroundColor:
|
|
680
|
+
style: { backgroundColor: h.button },
|
|
678
681
|
children: [
|
|
679
682
|
/* @__PURE__ */ c("div", { className: "ecp-vp-play-icon-wrap", children: [
|
|
680
|
-
/* @__PURE__ */ e(Pe, { size: 16, style: { position: "absolute", transform:
|
|
681
|
-
/* @__PURE__ */ e(Me, { size: 16, style: { position: "absolute", transform:
|
|
683
|
+
/* @__PURE__ */ e(Pe, { size: 16, style: { position: "absolute", transform: E ? void 0 : "scale(0) translateY(2.5rem)", transition: "all 150ms" } }),
|
|
684
|
+
/* @__PURE__ */ e(Me, { size: 16, style: { position: "absolute", transform: E ? "scale(0) translateY(-2.5rem)" : void 0, transition: "all 150ms" } })
|
|
682
685
|
] }),
|
|
683
|
-
/* @__PURE__ */ e("span", { style: { display: G < 350 ? "none" : "block" }, children:
|
|
686
|
+
/* @__PURE__ */ e("span", { style: { display: G < 350 ? "none" : "block" }, children: E ? "Pause" : "Play" })
|
|
684
687
|
]
|
|
685
688
|
}
|
|
686
689
|
),
|
|
@@ -689,7 +692,7 @@ function ht({
|
|
|
689
692
|
{
|
|
690
693
|
onClick: Ee,
|
|
691
694
|
disabled: !s,
|
|
692
|
-
className: `ecp-vp-stop-btn${
|
|
695
|
+
className: `ecp-vp-stop-btn${A ? " ecp-vp-stop-btn--dark" : " ecp-vp-stop-btn--light"}${G >= 600 ? " ecp-vp-stop-btn--wide" : ""}`,
|
|
693
696
|
children: [
|
|
694
697
|
/* @__PURE__ */ e(Ge, { size: 16 }),
|
|
695
698
|
/* @__PURE__ */ e("span", { style: { display: G < 600 ? "none" : "block" }, children: "Stop" })
|
|
@@ -702,7 +705,7 @@ function ht({
|
|
|
702
705
|
onClick: () => Q(!R),
|
|
703
706
|
disabled: !s,
|
|
704
707
|
className: `ecp-vp-eq-btn${R ? " ecp-vp-eq-btn--on" : " ecp-vp-eq-btn--off"}${G >= 600 ? " ecp-vp-eq-btn--wide" : ""}`,
|
|
705
|
-
style: R ? { backgroundColor:
|
|
708
|
+
style: R ? { backgroundColor: h.button } : {},
|
|
706
709
|
children: [
|
|
707
710
|
/* @__PURE__ */ e(Fe, { size: 16 }),
|
|
708
711
|
/* @__PURE__ */ e("span", { style: { display: G < 600 ? "none" : "block" }, children: "EQ" })
|
|
@@ -715,19 +718,19 @@ function ht({
|
|
|
715
718
|
onClick: je,
|
|
716
719
|
disabled: !s,
|
|
717
720
|
className: `ecp-vp-loop-btn${V ? " ecp-vp-loop-btn--on" : " ecp-vp-loop-btn--off"}${G >= 700 ? " ecp-vp-loop-btn--wide" : ""}`,
|
|
718
|
-
style: V ? { backgroundColor:
|
|
721
|
+
style: V ? { backgroundColor: h.button } : {},
|
|
719
722
|
children: [
|
|
720
723
|
/* @__PURE__ */ e(ot, { size: 16, className: V ? "ecp-vp-loop-icon--active" : "" }),
|
|
721
724
|
/* @__PURE__ */ e("span", { style: { display: G < 700 ? "none" : "block" }, children: "Loop" })
|
|
722
725
|
]
|
|
723
726
|
}
|
|
724
727
|
),
|
|
725
|
-
y.speed && /* @__PURE__ */ e("div", { className: "ecp-vp-speed-wrap", children: /* @__PURE__ */ e("select", { value: ue, onChange: Be, className: `ecp-vp-speed-select${
|
|
728
|
+
y.speed && /* @__PURE__ */ e("div", { className: "ecp-vp-speed-wrap", children: /* @__PURE__ */ e("select", { value: ue, onChange: Be, className: `ecp-vp-speed-select${A ? " ecp-vp-speed-select--dark" : " ecp-vp-speed-select--light"}`, children: ["0.5", "0.75", "1", "1.25", "1.5", "2"].map((t) => /* @__PURE__ */ c("option", { value: t, className: A ? "ecp-vp-speed-option--dark" : "ecp-vp-speed-option--light", children: [
|
|
726
729
|
t,
|
|
727
730
|
"x"
|
|
728
731
|
] }, t)) }) }),
|
|
729
732
|
y.volume && /* @__PURE__ */ c("div", { className: "ecp-vp-volume", children: [
|
|
730
|
-
/* @__PURE__ */ e("button", { onClick: Se, className: "ecp-vp-mute-btn", children: ae || k === 0 ? /* @__PURE__ */ e(_e, { size: 20, className:
|
|
733
|
+
/* @__PURE__ */ e("button", { onClick: Se, className: "ecp-vp-mute-btn", children: ae || k === 0 ? /* @__PURE__ */ e(_e, { size: 20, className: A ? "ecp-vp-mute-icon--dark" : "ecp-vp-mute-icon--light" }) : /* @__PURE__ */ e(De, { size: 20, className: A ? "ecp-vp-mute-icon--dark" : "ecp-vp-mute-icon--light" }) }),
|
|
731
734
|
/* @__PURE__ */ e(
|
|
732
735
|
"input",
|
|
733
736
|
{
|
|
@@ -738,7 +741,8 @@ function ht({
|
|
|
738
741
|
onChange: ze,
|
|
739
742
|
className: "ecp-vp-volume-slider",
|
|
740
743
|
style: {
|
|
741
|
-
background: `linear-gradient(to right, ${
|
|
744
|
+
background: `linear-gradient(to right, ${h.slider} ${k}%, ${h.slider + "30"} ${k}%)`,
|
|
745
|
+
"--thumb-color": h.slider,
|
|
742
746
|
display: G < 460 ? "none" : "block"
|
|
743
747
|
}
|
|
744
748
|
}
|
|
@@ -746,7 +750,7 @@ function ht({
|
|
|
746
750
|
/* @__PURE__ */ c(
|
|
747
751
|
"span",
|
|
748
752
|
{
|
|
749
|
-
className: `ecp-vp-volume-pct${
|
|
753
|
+
className: `ecp-vp-volume-pct${A ? " ecp-vp-volume-pct--dark" : " ecp-vp-volume-pct--light"}`,
|
|
750
754
|
style: { display: G < 800 ? "none" : "block" },
|
|
751
755
|
children: [
|
|
752
756
|
k,
|
|
@@ -768,7 +772,7 @@ function bt({
|
|
|
768
772
|
equalizer: y = { bass: 0, mid: 0, treble: 0 },
|
|
769
773
|
mode: O = "light"
|
|
770
774
|
}) {
|
|
771
|
-
const [x,
|
|
775
|
+
const [x, F] = m(!1), [I, z] = m(0), [E, H] = m(0), [j, P] = m(!1), [M, D] = m(80), [k, S] = m(1), [ae, me] = m([]), [V, ee] = m(null), [se, ie] = m(!1), [ce, de] = m({ bass: y.bass || 0, mid: y.mid || 0, treble: y.treble || 0 }), R = b(null), Q = b(null), Y = b(null), oe = b(null), ue = b(null), te = b(null), G = () => {
|
|
772
776
|
const r = [];
|
|
773
777
|
for (let d = 0; d < 100; d++) r.push(20 + Math.random() * 60);
|
|
774
778
|
return r;
|
|
@@ -781,19 +785,19 @@ function bt({
|
|
|
781
785
|
}
|
|
782
786
|
const r = R.current;
|
|
783
787
|
if (!r) return;
|
|
784
|
-
const d = () =>
|
|
788
|
+
const d = () => z(r.currentTime), g = () => {
|
|
785
789
|
H(r.duration), me(G());
|
|
786
|
-
},
|
|
787
|
-
var
|
|
788
|
-
return ee(`Audio error: ${((
|
|
790
|
+
}, B = () => F(!1), _ = (J) => {
|
|
791
|
+
var h, A;
|
|
792
|
+
return ee(`Audio error: ${((A = (h = J.target) == null ? void 0 : h.error) == null ? void 0 : A.message) || "Failed to load audio"}`);
|
|
789
793
|
};
|
|
790
|
-
return r.addEventListener("timeupdate", d), r.addEventListener("loadedmetadata", g), r.addEventListener("ended",
|
|
791
|
-
r.removeEventListener("timeupdate", d), r.removeEventListener("loadedmetadata", g), r.removeEventListener("ended",
|
|
794
|
+
return r.addEventListener("timeupdate", d), r.addEventListener("loadedmetadata", g), r.addEventListener("ended", B), r.addEventListener("error", _), () => {
|
|
795
|
+
r.removeEventListener("timeupdate", d), r.removeEventListener("loadedmetadata", g), r.removeEventListener("ended", B), r.removeEventListener("error", _);
|
|
792
796
|
};
|
|
793
797
|
}, [s, l, O]), $(() => {
|
|
794
798
|
s && R.current && v && (R.current.play().catch((r) => {
|
|
795
|
-
console.error("Play failed:", r),
|
|
796
|
-
}),
|
|
799
|
+
console.error("Play failed:", r), F(!1);
|
|
800
|
+
}), F(!0));
|
|
797
801
|
}, [s]), $(() => {
|
|
798
802
|
if (R.current && !Q.current && R.current) {
|
|
799
803
|
const r = window.AudioContext || window.webkitAudioContext;
|
|
@@ -802,26 +806,26 @@ function bt({
|
|
|
802
806
|
Q.current = d;
|
|
803
807
|
const g = d.createMediaElementSource(R.current);
|
|
804
808
|
Y.current = g;
|
|
805
|
-
const
|
|
806
|
-
|
|
809
|
+
const B = d.createBiquadFilter();
|
|
810
|
+
B.type = "lowshelf", B.frequency.value = 200, oe.current = B;
|
|
807
811
|
const _ = d.createBiquadFilter();
|
|
808
812
|
_.type = "peaking", _.frequency.value = 1e3, _.Q.value = 1, ue.current = _;
|
|
809
813
|
const J = d.createBiquadFilter();
|
|
810
|
-
J.type = "highshelf", J.frequency.value = 3e3, te.current = J, g.connect(
|
|
814
|
+
J.type = "highshelf", J.frequency.value = 3e3, te.current = J, g.connect(B).connect(_).connect(J).connect(d.destination);
|
|
811
815
|
}
|
|
812
816
|
}
|
|
813
817
|
}, [s]), $(() => {
|
|
814
|
-
R.current && (R.current.volume =
|
|
815
|
-
}, [
|
|
818
|
+
R.current && (R.current.volume = j ? 0 : M / 100);
|
|
819
|
+
}, [M, j]), $(() => {
|
|
816
820
|
R.current && (R.current.playbackRate = k);
|
|
817
821
|
}, [k]);
|
|
818
822
|
const w = () => {
|
|
819
|
-
R.current && (x ? R.current.pause() : R.current.play().catch((r) => ee(`Playback failed: ${r instanceof Error ? r.message : String(r)}`)),
|
|
820
|
-
}, p = () =>
|
|
821
|
-
D(parseInt(r.target.value)),
|
|
822
|
-
}, K = (r) =>
|
|
823
|
-
const d = r.currentTarget.getBoundingClientRect(),
|
|
824
|
-
R.current && (R.current.currentTime =
|
|
823
|
+
R.current && (x ? R.current.pause() : R.current.play().catch((r) => ee(`Playback failed: ${r instanceof Error ? r.message : String(r)}`)), F(!x));
|
|
824
|
+
}, p = () => P(!j), L = (r) => {
|
|
825
|
+
D(parseInt(r.target.value)), j && parseInt(r.target.value) > 0 && P(!1);
|
|
826
|
+
}, K = (r) => S(parseFloat(r.target.value)), fe = (r) => {
|
|
827
|
+
const d = r.currentTarget.getBoundingClientRect(), B = (r.clientX - d.left) / d.width * E;
|
|
828
|
+
R.current && (R.current.currentTime = B, z(B));
|
|
825
829
|
}, W = (r, d) => {
|
|
826
830
|
de((g) => ({ ...g, [r]: d })), r === "bass" && oe.current && (oe.current.gain.value = d), r === "mid" && ue.current && (ue.current.gain.value = d), r === "treble" && te.current && (te.current.gain.value = d);
|
|
827
831
|
}, re = () => {
|
|
@@ -830,7 +834,7 @@ function bt({
|
|
|
830
834
|
if (isNaN(r)) return "0:00";
|
|
831
835
|
const d = Math.floor(r / 60), g = Math.floor(r % 60);
|
|
832
836
|
return `${d}:${g.toString().padStart(2, "0")}`;
|
|
833
|
-
}, N =
|
|
837
|
+
}, N = E > 0 ? I / E * 100 : 0, T = O === "dark";
|
|
834
838
|
if (V)
|
|
835
839
|
return /* @__PURE__ */ c("div", { className: "ecp-wave-error", style: { background: u }, children: [
|
|
836
840
|
/* @__PURE__ */ e("p", { className: `ecp-wave-error-title${T ? " ecp-wave-error--dark" : " ecp-wave-error--light"}`, children: "Error" }),
|
|
@@ -862,7 +866,7 @@ function bt({
|
|
|
862
866
|
] }),
|
|
863
867
|
/* @__PURE__ */ c("div", { className: "ecp-wave-times", style: { color: Z }, children: [
|
|
864
868
|
/* @__PURE__ */ e("span", { children: X(I) }),
|
|
865
|
-
/* @__PURE__ */ e("span", { children: X(
|
|
869
|
+
/* @__PURE__ */ e("span", { children: X(E) })
|
|
866
870
|
] }),
|
|
867
871
|
/* @__PURE__ */ c("div", { className: "ecp-wave-controls", children: [
|
|
868
872
|
/* @__PURE__ */ c("div", { className: "ecp-wave-left-controls", children: [
|
|
@@ -872,7 +876,7 @@ function bt({
|
|
|
872
876
|
onClick: p,
|
|
873
877
|
className: "ecp-wave-vol-btn",
|
|
874
878
|
style: { background: `linear-gradient(135deg, ${l[0]}, ${l[1]})` },
|
|
875
|
-
children:
|
|
879
|
+
children: j || M === 0 ? /* @__PURE__ */ e(_e, { style: { width: "1rem", height: "1rem", color: "white" } }) : /* @__PURE__ */ e(De, { style: { width: "1rem", height: "1rem", color: "white" } })
|
|
876
880
|
}
|
|
877
881
|
),
|
|
878
882
|
/* @__PURE__ */ e(
|
|
@@ -881,11 +885,12 @@ function bt({
|
|
|
881
885
|
type: "range",
|
|
882
886
|
min: "0",
|
|
883
887
|
max: "100",
|
|
884
|
-
value:
|
|
885
|
-
onChange:
|
|
888
|
+
value: M,
|
|
889
|
+
onChange: L,
|
|
886
890
|
className: "ecp-wave-vol-slider",
|
|
887
891
|
style: {
|
|
888
|
-
background: `linear-gradient(to right, ${l[0]} ${
|
|
892
|
+
background: `linear-gradient(to right, ${l[0]} ${M}%, ${T ? "#374151" : "#d1d5db"} ${M}%)`,
|
|
893
|
+
"--thumb-color": l[0],
|
|
889
894
|
display: f && f < 400 ? "none" : void 0
|
|
890
895
|
}
|
|
891
896
|
}
|
|
@@ -956,7 +961,10 @@ function bt({
|
|
|
956
961
|
value: ce[r],
|
|
957
962
|
onChange: (d) => W(r, parseInt(d.target.value)),
|
|
958
963
|
className: "ecp-wave-eq-slider",
|
|
959
|
-
style: {
|
|
964
|
+
style: {
|
|
965
|
+
background: `linear-gradient(to right, ${l[0]} ${(ce[r] + 20) / 40 * 100}%, ${l[1] + "30"} ${(ce[r] + 20) / 40 * 100}%)`,
|
|
966
|
+
"--thumb-color": l[0]
|
|
967
|
+
}
|
|
960
968
|
}
|
|
961
969
|
),
|
|
962
970
|
/* @__PURE__ */ e("span", { className: T ? "ecp-wave-eq-bound--dark" : "ecp-wave-eq-bound--light", children: "+20" })
|
|
@@ -970,20 +978,20 @@ function bt({
|
|
|
970
978
|
] });
|
|
971
979
|
}
|
|
972
980
|
function gt({ audio: s, thumbnail: l, gradient: u = ["#cd7eff", "#fe59f6"], background: v = "#1f273a", autoPlay: C = !1 }) {
|
|
973
|
-
const [f, y] = m(!1), [, O] = m(0), x =
|
|
981
|
+
const [f, y] = m(!1), [, O] = m(0), x = b(null), [F, I] = m(0), [z, E] = m(0), [H, j] = m(0);
|
|
974
982
|
$(() => {
|
|
975
983
|
const k = x.current;
|
|
976
984
|
if (!k) return;
|
|
977
|
-
const
|
|
978
|
-
return k.addEventListener("timeupdate",
|
|
985
|
+
const S = () => O(k.currentTime);
|
|
986
|
+
return k.addEventListener("timeupdate", S), () => k.removeEventListener("timeupdate", S);
|
|
979
987
|
}, []), $(() => {
|
|
980
988
|
const k = setInterval(() => {
|
|
981
|
-
f && I((
|
|
989
|
+
f && I((S) => S + 0.1);
|
|
982
990
|
}, 100);
|
|
983
991
|
return () => clearInterval(k);
|
|
984
992
|
}, [f]), $(() => {
|
|
985
993
|
const k = setInterval(() => {
|
|
986
|
-
f &&
|
|
994
|
+
f && j((S) => S + 0.1);
|
|
987
995
|
}, 100);
|
|
988
996
|
return () => clearInterval(k);
|
|
989
997
|
}, [f]), $(() => {
|
|
@@ -991,14 +999,14 @@ function gt({ audio: s, thumbnail: l, gradient: u = ["#cd7eff", "#fe59f6"], back
|
|
|
991
999
|
}, [s]), $(() => {
|
|
992
1000
|
const k = x.current;
|
|
993
1001
|
if (!k) return;
|
|
994
|
-
const
|
|
995
|
-
return
|
|
1002
|
+
const S = () => E(k.duration);
|
|
1003
|
+
return j(0), k.addEventListener("loadedmetadata", S), () => k.removeEventListener("loadedmetadata", S);
|
|
996
1004
|
}, [s]);
|
|
997
|
-
const
|
|
1005
|
+
const P = () => {
|
|
998
1006
|
x.current && (f ? x.current.pause() : x.current.play().catch((k) => console.error("NanoPlayer play failed:", k)), y(!f));
|
|
999
1007
|
};
|
|
1000
1008
|
if (!s) return null;
|
|
1001
|
-
const
|
|
1009
|
+
const M = `linear-gradient(135deg, ${u[0]}, ${u[1]})`, D = `${(z > 0 ? H / z : 0) * 100}%`;
|
|
1002
1010
|
return /* @__PURE__ */ c(
|
|
1003
1011
|
"div",
|
|
1004
1012
|
{
|
|
@@ -1011,26 +1019,26 @@ function gt({ audio: s, thumbnail: l, gradient: u = ["#cd7eff", "#fe59f6"], back
|
|
|
1011
1019
|
ref: x,
|
|
1012
1020
|
src: s,
|
|
1013
1021
|
onEnded: () => {
|
|
1014
|
-
y(!1),
|
|
1022
|
+
y(!1), j(0);
|
|
1015
1023
|
}
|
|
1016
1024
|
}
|
|
1017
1025
|
),
|
|
1018
|
-
/* @__PURE__ */ e("div", { className: "ecp-nano-progress-bg", style: { width: D, backgroundImage:
|
|
1026
|
+
/* @__PURE__ */ e("div", { className: "ecp-nano-progress-bg", style: { width: D, backgroundImage: M } }),
|
|
1019
1027
|
/* @__PURE__ */ c("div", { className: "ecp-nano-content", children: [
|
|
1020
1028
|
l && /* @__PURE__ */ e("div", { className: "ecp-nano-thumbnail-wrap", children: /* @__PURE__ */ e("img", { src: l, alt: "", className: "ecp-nano-thumbnail" }) }),
|
|
1021
1029
|
/* @__PURE__ */ c("div", { className: "ecp-nano-row", children: [
|
|
1022
|
-
/* @__PURE__ */ e("button", { onClick:
|
|
1023
|
-
/* @__PURE__ */ e("div", { className: "ecp-nano-waveform", children: [...Array(12)].map((k,
|
|
1030
|
+
/* @__PURE__ */ e("button", { onClick: P, className: "ecp-nano-play-btn", style: { background: M }, children: f ? /* @__PURE__ */ e(Pe, { fill: v, style: { width: "0.75rem", height: "0.75rem", color: "transparent" } }) : /* @__PURE__ */ e(Me, { fill: v, style: { width: "0.75rem", height: "0.75rem", color: "transparent" } }) }),
|
|
1031
|
+
/* @__PURE__ */ e("div", { className: "ecp-nano-waveform", children: [...Array(12)].map((k, S) => /* @__PURE__ */ e(
|
|
1024
1032
|
"div",
|
|
1025
1033
|
{
|
|
1026
1034
|
className: "ecp-nano-wave-bar",
|
|
1027
1035
|
style: {
|
|
1028
1036
|
background: `linear-gradient(to top, ${u[0]}, ${u[1]})`,
|
|
1029
|
-
height: f ? `${8 + Math.sin((
|
|
1037
|
+
height: f ? `${8 + Math.sin((F * 8 + S) * 0.6) * 10}px` : "8px",
|
|
1030
1038
|
opacity: f ? 0.8 : 0.4
|
|
1031
1039
|
}
|
|
1032
1040
|
},
|
|
1033
|
-
|
|
1041
|
+
S
|
|
1034
1042
|
)) })
|
|
1035
1043
|
] })
|
|
1036
1044
|
] })
|
|
@@ -1058,10 +1066,10 @@ function wt({
|
|
|
1058
1066
|
mode: y = "light",
|
|
1059
1067
|
transparent: O = !1,
|
|
1060
1068
|
autoPlay: x = !1,
|
|
1061
|
-
color:
|
|
1069
|
+
color: F = "#3b82f6",
|
|
1062
1070
|
equalizer: I = { bass: 0, mid: 0, treble: 0 }
|
|
1063
1071
|
}) {
|
|
1064
|
-
const [
|
|
1072
|
+
const [z, E] = m(!1), [H, j] = m(0), [P, M] = m(0), [D, k] = m(v || 100), [S, ae] = m(!1), [me, V] = m(!1), [ee, se] = m(!1), [ie, ce] = m([]), [de, R] = m(!1), [Q, Y] = m({ bass: I.bass || 0, mid: I.mid || 0, treble: I.treble || 0 }), [oe, ue] = m(1), [te, G] = m(0), w = b(null), p = b(null), L = b(null), K = b(null), fe = b(null), W = b(null), re = b(null), X = b(null), N = b(null), T = b(null), Z = b(0), r = b(0), d = b(0), g = b(0), B = b(0), _ = b(0), J = b(!1), h = y === "dark" || ee, A = typeof f == "object" && Object.keys(f).length === 0;
|
|
1065
1073
|
$(() => {
|
|
1066
1074
|
const n = p.current;
|
|
1067
1075
|
if (!n) return;
|
|
@@ -1075,46 +1083,46 @@ function wt({
|
|
|
1075
1083
|
}, [s, l, v, u, f, y]), $(() => {
|
|
1076
1084
|
if (!w.current) return;
|
|
1077
1085
|
const n = w.current, t = () => {
|
|
1078
|
-
me ||
|
|
1079
|
-
}, a = () =>
|
|
1080
|
-
|
|
1081
|
-
}, i = () =>
|
|
1086
|
+
me || j(n.currentTime);
|
|
1087
|
+
}, a = () => M(n.duration), o = () => {
|
|
1088
|
+
E(!1), N.current && cancelAnimationFrame(N.current);
|
|
1089
|
+
}, i = () => E(!0), q = () => E(!1);
|
|
1082
1090
|
return n.addEventListener("timeupdate", t), n.addEventListener("loadedmetadata", a), n.addEventListener("ended", o), n.addEventListener("play", i), n.addEventListener("pause", q), () => {
|
|
1083
1091
|
n.removeEventListener("timeupdate", t), n.removeEventListener("loadedmetadata", a), n.removeEventListener("ended", o), n.removeEventListener("play", i), n.removeEventListener("pause", q);
|
|
1084
1092
|
};
|
|
1085
1093
|
}, [me]), $(() => {
|
|
1086
1094
|
if (s) {
|
|
1087
|
-
const n =
|
|
1095
|
+
const n = z, t = D;
|
|
1088
1096
|
if (w.current) {
|
|
1089
|
-
w.current.pause(), w.current.src = s, w.current.volume =
|
|
1097
|
+
w.current.pause(), w.current.src = s, w.current.volume = S ? 0 : t / 100;
|
|
1090
1098
|
const a = () => {
|
|
1091
1099
|
n && w.current && w.current.play().catch((o) => console.error("Play failed:", o)), w.current && w.current.removeEventListener("canplay", a);
|
|
1092
1100
|
};
|
|
1093
1101
|
w.current.addEventListener("canplay", a), w.current.load();
|
|
1094
1102
|
}
|
|
1095
|
-
|
|
1103
|
+
j(0), E(!1), Z.current = 0, r.current = 0, d.current = 0, g.current = 0, B.current = 0, _.current = 0, he();
|
|
1096
1104
|
}
|
|
1097
1105
|
}, [s]), $(() => {
|
|
1098
|
-
w.current && (w.current.volume =
|
|
1099
|
-
}, [D,
|
|
1106
|
+
w.current && (w.current.volume = S ? 0 : D / 100);
|
|
1107
|
+
}, [D, S]), $(() => {
|
|
1100
1108
|
w.current && (w.current.playbackRate = oe);
|
|
1101
1109
|
}, [oe]), $(() => {
|
|
1102
|
-
|
|
1110
|
+
L.current && (W.current && (W.current.gain.value = Q.bass), re.current && (re.current.gain.value = Q.mid), X.current && (X.current.gain.value = Q.treble));
|
|
1103
1111
|
}, [Q]), $(() => {
|
|
1104
|
-
J.current =
|
|
1105
|
-
}, [
|
|
1112
|
+
J.current = z, N.current && (cancelAnimationFrame(N.current), N.current = null), z && u ? (L.current || ke(), we()) : !z && u && Ce();
|
|
1113
|
+
}, [z, u]), $(() => {
|
|
1106
1114
|
const n = () => se(!!document.fullscreenElement);
|
|
1107
1115
|
return document.addEventListener("fullscreenchange", n), () => document.removeEventListener("fullscreenchange", n);
|
|
1108
1116
|
}, []), $(() => () => {
|
|
1109
|
-
N.current && cancelAnimationFrame(N.current),
|
|
1117
|
+
N.current && cancelAnimationFrame(N.current), L.current && L.current.close().catch((n) => console.warn("AudioContext cleanup error:", n));
|
|
1110
1118
|
}, []);
|
|
1111
1119
|
const ke = () => {
|
|
1112
|
-
if (!
|
|
1120
|
+
if (!L.current && w.current)
|
|
1113
1121
|
try {
|
|
1114
1122
|
const n = window.AudioContext || window.webkitAudioContext;
|
|
1115
1123
|
if (n) {
|
|
1116
1124
|
const t = new n();
|
|
1117
|
-
|
|
1125
|
+
L.current = t;
|
|
1118
1126
|
const a = t.createBiquadFilter();
|
|
1119
1127
|
a.type = "lowshelf", a.frequency.value = 320, a.gain.value = Q.bass;
|
|
1120
1128
|
const o = t.createBiquadFilter();
|
|
@@ -1133,9 +1141,9 @@ function wt({
|
|
|
1133
1141
|
if (J.current) return;
|
|
1134
1142
|
Z.current *= 0.7, r.current *= 0.7;
|
|
1135
1143
|
const n = Date.now();
|
|
1136
|
-
n -
|
|
1144
|
+
n - B.current > 1500 && (d.current *= 0.95), n - _.current > 1500 && (g.current *= 0.95), he();
|
|
1137
1145
|
const t = Math.max(Z.current, r.current), a = Math.max(d.current, g.current);
|
|
1138
|
-
t > 0.01 || a > 0.01 ? N.current = requestAnimationFrame(Ce) : (J.current || (Z.current = 0, r.current = 0, d.current = 0, g.current = 0,
|
|
1146
|
+
t > 0.01 || a > 0.01 ? N.current = requestAnimationFrame(Ce) : (J.current || (Z.current = 0, r.current = 0, d.current = 0, g.current = 0, he()), N.current && cancelAnimationFrame(N.current), N.current = null);
|
|
1139
1147
|
}, we = () => {
|
|
1140
1148
|
if (!K.current || !J.current) return;
|
|
1141
1149
|
const n = K.current.frequencyBinCount, t = new Uint8Array(n);
|
|
@@ -1145,14 +1153,14 @@ function wt({
|
|
|
1145
1153
|
let o = Math.pow(a / n / 255, 0.5);
|
|
1146
1154
|
Z.current = Z.current * 0.7 + o * 0.3, r.current = r.current * 0.7 + o * 0.3;
|
|
1147
1155
|
const i = Date.now();
|
|
1148
|
-
Z.current > d.current ? (d.current = Z.current,
|
|
1149
|
-
},
|
|
1156
|
+
Z.current > d.current ? (d.current = Z.current, B.current = i) : i - B.current > 1500 && (d.current *= 0.95), r.current > g.current ? (g.current = r.current, _.current = i) : i - _.current > 1500 && (g.current *= 0.95), he(), N.current = requestAnimationFrame(we);
|
|
1157
|
+
}, he = () => {
|
|
1150
1158
|
if (!T.current || !u) return;
|
|
1151
1159
|
const n = u.color || "#00ff00", t = u.peak || "#ff0000", a = Z.current * 100, o = r.current * 100, i = 100 - d.current * 100, q = 100 - g.current * 100;
|
|
1152
1160
|
u.side === "top" || u.side === "bottom" ? T.current.innerHTML = `
|
|
1153
1161
|
<div style="display:flex;flex-direction:column;gap:0.25rem;height:100%;justify-content:center;">
|
|
1154
1162
|
<div style="display:flex;align-items:center;justify-content:center;gap:0.5rem;">
|
|
1155
|
-
<div style="font-size:0.75rem;opacity:0.8;width:1rem;text-align:center;color:${
|
|
1163
|
+
<div style="font-size:0.75rem;opacity:0.8;width:1rem;text-align:center;color:${h ? "#f3f4f6" : "#111827"}">L</div>
|
|
1156
1164
|
<div style="position:relative;flex:1;height:0.75rem;background:rgba(0,0,0,0.4);border-radius:9999px;overflow:hidden;display:flex;justify-content:flex-end;">
|
|
1157
1165
|
<div style="height:100%;border-radius:9999px 0 0 9999px;transition:width 75ms;width:${a}%;background:${n};"></div>
|
|
1158
1166
|
${d.current > 0.1 ? `<div style="position:absolute;top:0;width:0.25rem;height:100%;transition:right 100ms;right:${d.current * 100}%;background:${t};"></div>` : ""}
|
|
@@ -1162,7 +1170,7 @@ function wt({
|
|
|
1162
1170
|
<div style="height:100%;border-radius:0 9999px 9999px 0;transition:width 75ms;width:${o}%;background:${n};"></div>
|
|
1163
1171
|
${g.current > 0.1 ? `<div style="position:absolute;top:0;width:0.25rem;height:100%;transition:left 100ms;left:${g.current * 100}%;background:${t};"></div>` : ""}
|
|
1164
1172
|
</div>
|
|
1165
|
-
<div style="font-size:0.75rem;opacity:0.8;width:1rem;text-align:center;color:${
|
|
1173
|
+
<div style="font-size:0.75rem;opacity:0.8;width:1rem;text-align:center;color:${h ? "#f3f4f6" : "#111827"}">R</div>
|
|
1166
1174
|
</div>
|
|
1167
1175
|
</div>
|
|
1168
1176
|
` : T.current.innerHTML = `
|
|
@@ -1186,28 +1194,28 @@ function wt({
|
|
|
1186
1194
|
</div>
|
|
1187
1195
|
`;
|
|
1188
1196
|
}, Ne = () => {
|
|
1189
|
-
!w.current || !s || (
|
|
1190
|
-
},
|
|
1191
|
-
w.current && (w.current.pause(), w.current.currentTime = 0,
|
|
1197
|
+
!w.current || !s || (z ? w.current.pause() : (L.current && L.current.state === "suspended" && L.current.resume(), w.current.play().catch((n) => console.error("Play failed:", n))));
|
|
1198
|
+
}, ve = () => {
|
|
1199
|
+
w.current && (w.current.pause(), w.current.currentTime = 0, E(!1), j(0), Z.current = 0, r.current = 0, d.current = 0, g.current = 0, he());
|
|
1192
1200
|
}, xe = (n) => {
|
|
1193
|
-
const a = parseFloat(n.target.value) / 100 *
|
|
1194
|
-
|
|
1201
|
+
const a = parseFloat(n.target.value) / 100 * P;
|
|
1202
|
+
j(a), w.current && !me && (w.current.currentTime = a);
|
|
1195
1203
|
}, Ee = () => V(!0), Le = () => {
|
|
1196
1204
|
w.current && (w.current.currentTime = H), V(!1);
|
|
1197
1205
|
}, Ae = (n) => {
|
|
1198
1206
|
const t = parseInt(n.target.value);
|
|
1199
1207
|
k(t), ae(t === 0);
|
|
1200
|
-
}, Re = (n) => ue(parseFloat(n.target.value)), ze = () => ae(!
|
|
1208
|
+
}, Re = (n) => ue(parseFloat(n.target.value)), ze = () => ae(!S), Se = () => {
|
|
1201
1209
|
p.current && (document.fullscreenElement ? document.exitFullscreen() : p.current.requestFullscreen().catch((n) => console.error("Fullscreen failed:", n)));
|
|
1202
1210
|
}, Be = (n, t) => {
|
|
1203
|
-
Y((a) => ({ ...a, [n]: t })),
|
|
1211
|
+
Y((a) => ({ ...a, [n]: t })), L.current && (n === "bass" && W.current && (W.current.gain.value = t), n === "mid" && re.current && (re.current.gain.value = t), n === "treble" && X.current && (X.current.gain.value = t));
|
|
1204
1212
|
}, je = () => Y({ bass: 0, mid: 0, treble: 0 }), Te = (n) => {
|
|
1205
1213
|
if (isNaN(n)) return "0:00";
|
|
1206
1214
|
const t = Math.floor(n / 60), a = Math.floor(n % 60);
|
|
1207
1215
|
return `${t}:${a.toString().padStart(2, "0")}`;
|
|
1208
1216
|
};
|
|
1209
1217
|
if ($(() => {
|
|
1210
|
-
(
|
|
1218
|
+
(A && !z || x) && Ne();
|
|
1211
1219
|
}, [f]), ie && ie.length > 0)
|
|
1212
1220
|
return /* @__PURE__ */ e(Ve, { children: ie.map((n, t) => /* @__PURE__ */ c("div", { className: "ecp-video-error", children: [
|
|
1213
1221
|
/* @__PURE__ */ c("strong", { children: [
|
|
@@ -1223,35 +1231,35 @@ function wt({
|
|
|
1223
1231
|
{
|
|
1224
1232
|
ref: p,
|
|
1225
1233
|
className: `ecp-video-wrapper${ee ? " ecp-video-wrapper--fullscreen" : ""}`,
|
|
1226
|
-
style: { backgroundColor:
|
|
1234
|
+
style: { backgroundColor: A || O ? void 0 : h ? "#49494937" : "white" },
|
|
1227
1235
|
children: /* @__PURE__ */ c(
|
|
1228
1236
|
"div",
|
|
1229
1237
|
{
|
|
1230
|
-
className: `ecp-video-inner${ee ? " ecp-video-inner--fullscreen" : ""}${
|
|
1231
|
-
style: { background:
|
|
1238
|
+
className: `ecp-video-inner${ee ? " ecp-video-inner--fullscreen" : ""}${O ? "" : " ecp-video-inner--padded"}`,
|
|
1239
|
+
style: { background: A || O ? void 0 : h ? "#1a1a1ab0" : "#f5f5f5" },
|
|
1232
1240
|
children: [
|
|
1233
|
-
f.videoName && !ee && /* @__PURE__ */ e("div", { className: `ecp-video-name${
|
|
1241
|
+
f.videoName && !ee && /* @__PURE__ */ e("div", { className: `ecp-video-name${h ? " ecp-video-name--dark" : " ecp-video-name--light"}`, children: l }),
|
|
1234
1242
|
/* @__PURE__ */ c("div", { className: `ecp-video-layout${qe ? " ecp-video-layout--col" : " ecp-video-layout--row"}${ee ? " ecp-video-layout--fullscreen" : ""}`, children: [
|
|
1235
1243
|
u && be === "top" && /* @__PURE__ */ e("div", { className: "ecp-video-vu-top", ref: T }),
|
|
1236
1244
|
/* @__PURE__ */ c("div", { style: { display: "flex", flex: qe ? void 0 : 1, gap: "0.75rem" }, children: [
|
|
1237
1245
|
u && be === "left" && /* @__PURE__ */ e("div", { className: "ecp-video-vu-side", ref: T }),
|
|
1238
|
-
/* @__PURE__ */ c("div", { className: `ecp-video-el-wrap${
|
|
1246
|
+
/* @__PURE__ */ c("div", { className: `ecp-video-el-wrap${h ? " ecp-video-el-wrap--dark" : " ecp-video-el-wrap--light"}`, children: [
|
|
1239
1247
|
/* @__PURE__ */ c("video", { ref: w, className: "ecp-video-el", poster: C || void 0, children: [
|
|
1240
1248
|
s && /* @__PURE__ */ e("source", { src: s }),
|
|
1241
1249
|
"Your browser does not support the video tag."
|
|
1242
1250
|
] }),
|
|
1243
|
-
de && /* @__PURE__ */ e("div", { className: "ecp-video-eq-overlay", children: /* @__PURE__ */ c("div", { className: `ecp-video-eq-panel${
|
|
1244
|
-
/* @__PURE__ */ e("h3", { className: `ecp-video-eq-title${
|
|
1251
|
+
de && /* @__PURE__ */ e("div", { className: "ecp-video-eq-overlay", children: /* @__PURE__ */ c("div", { className: `ecp-video-eq-panel${h ? " ecp-video-eq-panel--dark" : " ecp-video-eq-panel--light"}`, children: [
|
|
1252
|
+
/* @__PURE__ */ e("h3", { className: `ecp-video-eq-title${h ? " ecp-video-eq-title--dark" : " ecp-video-eq-title--light"}`, children: "Equalizer" }),
|
|
1245
1253
|
/* @__PURE__ */ e("div", { className: "ecp-video-eq-bands", children: ["bass", "mid", "treble"].map((n) => /* @__PURE__ */ c("div", { children: [
|
|
1246
1254
|
/* @__PURE__ */ c("div", { className: "ecp-video-eq-band-header", children: [
|
|
1247
|
-
/* @__PURE__ */ e("span", { className:
|
|
1248
|
-
/* @__PURE__ */ c("span", { className:
|
|
1255
|
+
/* @__PURE__ */ e("span", { className: h ? "ecp-video-eq-label--dark" : "ecp-video-eq-label--light", children: n.charAt(0).toUpperCase() + n.slice(1) }),
|
|
1256
|
+
/* @__PURE__ */ c("span", { className: h ? "ecp-video-eq-label--dark" : "ecp-video-eq-label--light", children: [
|
|
1249
1257
|
Q[n],
|
|
1250
1258
|
" dB"
|
|
1251
1259
|
] })
|
|
1252
1260
|
] }),
|
|
1253
1261
|
/* @__PURE__ */ c("div", { className: "ecp-video-eq-range-row", children: [
|
|
1254
|
-
/* @__PURE__ */ e("span", { className:
|
|
1262
|
+
/* @__PURE__ */ e("span", { className: h ? "ecp-video-eq-bound--dark" : "ecp-video-eq-bound--light", children: "-20" }),
|
|
1255
1263
|
/* @__PURE__ */ e(
|
|
1256
1264
|
"input",
|
|
1257
1265
|
{
|
|
@@ -1261,15 +1269,18 @@ function wt({
|
|
|
1261
1269
|
value: Q[n],
|
|
1262
1270
|
onChange: (t) => Be(n, parseInt(t.target.value)),
|
|
1263
1271
|
className: "ecp-video-eq-slider",
|
|
1264
|
-
style: {
|
|
1272
|
+
style: {
|
|
1273
|
+
background: `linear-gradient(to right, ${F} ${(Q[n] + 20) / 40 * 100}%, #e5e7eb ${(Q[n] + 20) / 40 * 100}%)`,
|
|
1274
|
+
"--thumb-color": F
|
|
1275
|
+
}
|
|
1265
1276
|
}
|
|
1266
1277
|
),
|
|
1267
|
-
/* @__PURE__ */ e("span", { className:
|
|
1278
|
+
/* @__PURE__ */ e("span", { className: h ? "ecp-video-eq-bound--dark" : "ecp-video-eq-bound--light", children: "+20" })
|
|
1268
1279
|
] })
|
|
1269
1280
|
] }, n)) }),
|
|
1270
1281
|
/* @__PURE__ */ c("div", { className: "ecp-video-eq-footer", children: [
|
|
1271
|
-
/* @__PURE__ */ e("button", { onClick: je, className: `ecp-video-eq-footer-btn${
|
|
1272
|
-
/* @__PURE__ */ e("button", { onClick: () => R(!1), className: `ecp-video-eq-footer-btn${
|
|
1282
|
+
/* @__PURE__ */ e("button", { onClick: je, className: `ecp-video-eq-footer-btn${h ? " ecp-video-eq-footer-btn--dark" : " ecp-video-eq-footer-btn--light"}`, children: "Reset" }),
|
|
1283
|
+
/* @__PURE__ */ e("button", { onClick: () => R(!1), className: `ecp-video-eq-footer-btn${h ? " ecp-video-eq-footer-btn--dark" : " ecp-video-eq-footer-btn--light"}`, style: { marginLeft: "0.5rem" }, children: "Close" })
|
|
1273
1284
|
] })
|
|
1274
1285
|
] }) })
|
|
1275
1286
|
] }),
|
|
@@ -1278,14 +1289,14 @@ function wt({
|
|
|
1278
1289
|
u && be === "bottom" && /* @__PURE__ */ e("div", { className: "ecp-video-vu-bottom", ref: T })
|
|
1279
1290
|
] }),
|
|
1280
1291
|
f.seekbar && /* @__PURE__ */ e("div", { className: `ecp-video-seekbar${ee ? " ecp-video-seekbar--fullscreen" : ""}`, children: /* @__PURE__ */ c("div", { className: "ecp-video-seekbar-row", children: [
|
|
1281
|
-
/* @__PURE__ */ e("span", { className: `ecp-video-time${
|
|
1292
|
+
/* @__PURE__ */ e("span", { className: `ecp-video-time${h ? " ecp-video-time--dark" : " ecp-video-time--light"}`, children: Te(H) }),
|
|
1282
1293
|
/* @__PURE__ */ e(
|
|
1283
1294
|
"input",
|
|
1284
1295
|
{
|
|
1285
1296
|
type: "range",
|
|
1286
1297
|
min: "0",
|
|
1287
1298
|
max: "100",
|
|
1288
|
-
value:
|
|
1299
|
+
value: P > 0 ? H / P * 100 : 0,
|
|
1289
1300
|
onChange: xe,
|
|
1290
1301
|
onMouseDown: Ee,
|
|
1291
1302
|
onMouseUp: Le,
|
|
@@ -1294,11 +1305,12 @@ function wt({
|
|
|
1294
1305
|
disabled: !s,
|
|
1295
1306
|
className: "ecp-video-seek-input",
|
|
1296
1307
|
style: {
|
|
1297
|
-
background: s &&
|
|
1308
|
+
background: s && P > 0 ? `linear-gradient(to right, ${F} ${H / P * 100}%, #e5e7eb ${H / P * 100}%)` : "#e5e7eb",
|
|
1309
|
+
"--thumb-color": F
|
|
1298
1310
|
}
|
|
1299
1311
|
}
|
|
1300
1312
|
),
|
|
1301
|
-
/* @__PURE__ */ e("span", { className: `ecp-video-time ecp-video-time--right${
|
|
1313
|
+
/* @__PURE__ */ e("span", { className: `ecp-video-time ecp-video-time--right${h ? " ecp-video-time--dark" : " ecp-video-time--light"}`, children: Te(P) })
|
|
1302
1314
|
] }) }),
|
|
1303
1315
|
/* @__PURE__ */ c("div", { className: "ecp-video-controls", children: [
|
|
1304
1316
|
f.play && /* @__PURE__ */ c(
|
|
@@ -1307,22 +1319,22 @@ function wt({
|
|
|
1307
1319
|
onClick: Ne,
|
|
1308
1320
|
disabled: !s,
|
|
1309
1321
|
className: `ecp-video-play-btn${te <= 400 ? " ecp-video-play-btn--compact" : ""}`,
|
|
1310
|
-
style: { backgroundColor:
|
|
1322
|
+
style: { backgroundColor: F },
|
|
1311
1323
|
children: [
|
|
1312
1324
|
/* @__PURE__ */ c("div", { className: "ecp-video-play-icon-wrap", children: [
|
|
1313
|
-
/* @__PURE__ */ e(Pe, { size: 16, style: { position: "absolute", transform:
|
|
1314
|
-
/* @__PURE__ */ e(Me, { size: 16, style: { position: "absolute", transform:
|
|
1325
|
+
/* @__PURE__ */ e(Pe, { size: 16, style: { position: "absolute", transform: z ? void 0 : "scale(0) translateY(2.5rem)", transition: "all 150ms" } }),
|
|
1326
|
+
/* @__PURE__ */ e(Me, { size: 16, style: { position: "absolute", transform: z ? "scale(0) translateY(-2.5rem)" : void 0, transition: "all 150ms" } })
|
|
1315
1327
|
] }),
|
|
1316
|
-
te > 400 && (
|
|
1328
|
+
te > 400 && (z ? "Pause" : "Play")
|
|
1317
1329
|
]
|
|
1318
1330
|
}
|
|
1319
1331
|
),
|
|
1320
|
-
f.stop && /* @__PURE__ */ e("button", { onClick:
|
|
1332
|
+
f.stop && /* @__PURE__ */ e("button", { onClick: ve, disabled: !s, className: `ecp-video-stop-btn${h ? " ecp-video-stop-btn--dark" : " ecp-video-stop-btn--light"}`, children: /* @__PURE__ */ e(Ge, { size: 16 }) }),
|
|
1321
1333
|
f.fullscreen && /* @__PURE__ */ c(
|
|
1322
1334
|
"button",
|
|
1323
1335
|
{
|
|
1324
1336
|
onClick: Se,
|
|
1325
|
-
className: `ecp-video-fullscreen-btn${
|
|
1337
|
+
className: `ecp-video-fullscreen-btn${h ? " ecp-video-fullscreen-btn--dark" : " ecp-video-fullscreen-btn--light"}${te >= 800 ? " ecp-video-fullscreen-btn--wide" : ""}`,
|
|
1326
1338
|
children: [
|
|
1327
1339
|
ee ? /* @__PURE__ */ e(at, { size: 16 }) : /* @__PURE__ */ e(rt, { size: 16 }),
|
|
1328
1340
|
/* @__PURE__ */ e("span", { style: { display: te < 800 ? "none" : "block" }, children: ee ? "Exit" : "Full" })
|
|
@@ -1335,19 +1347,19 @@ function wt({
|
|
|
1335
1347
|
onClick: () => R(!de),
|
|
1336
1348
|
disabled: !s,
|
|
1337
1349
|
className: `ecp-video-eq-toggle-btn${de ? " ecp-video-eq-toggle-btn--on" : " ecp-video-eq-toggle-btn--off"}${te >= 700 ? " ecp-video-eq-toggle-btn--wide" : ""}`,
|
|
1338
|
-
style: de ? { backgroundColor:
|
|
1350
|
+
style: de ? { backgroundColor: F } : {},
|
|
1339
1351
|
children: [
|
|
1340
1352
|
/* @__PURE__ */ e(Fe, { size: 16 }),
|
|
1341
1353
|
/* @__PURE__ */ e("span", { style: { display: te < 700 ? "none" : "block" }, children: "EQ" })
|
|
1342
1354
|
]
|
|
1343
1355
|
}
|
|
1344
1356
|
),
|
|
1345
|
-
f.speed && /* @__PURE__ */ e("div", { className: "ecp-video-speed-wrap", children: /* @__PURE__ */ e("select", { value: oe, onChange: Re, className: `ecp-video-speed-select${
|
|
1357
|
+
f.speed && /* @__PURE__ */ e("div", { className: "ecp-video-speed-wrap", children: /* @__PURE__ */ e("select", { value: oe, onChange: Re, className: `ecp-video-speed-select${h ? " ecp-video-speed-select--dark" : " ecp-video-speed-select--light"}`, children: ["0.5", "0.75", "1", "1.25", "1.5", "2"].map((n) => /* @__PURE__ */ c("option", { value: n, className: h ? "ecp-video-speed-option--dark" : "ecp-video-speed-option--light", children: [
|
|
1346
1358
|
n,
|
|
1347
1359
|
"x"
|
|
1348
1360
|
] }, n)) }) }),
|
|
1349
1361
|
f.volume && /* @__PURE__ */ c("div", { className: "ecp-video-volume", children: [
|
|
1350
|
-
/* @__PURE__ */ e("button", { onClick: ze, className: "ecp-video-mute-btn", children:
|
|
1362
|
+
/* @__PURE__ */ e("button", { onClick: ze, className: "ecp-video-mute-btn", children: S || D === 0 ? /* @__PURE__ */ e(_e, { size: 20, className: h ? "ecp-video-mute-icon--dark" : "ecp-video-mute-icon--light" }) : /* @__PURE__ */ e(De, { size: 20, className: h ? "ecp-video-mute-icon--dark" : "ecp-video-mute-icon--light" }) }),
|
|
1351
1363
|
/* @__PURE__ */ e(
|
|
1352
1364
|
"input",
|
|
1353
1365
|
{
|
|
@@ -1358,7 +1370,8 @@ function wt({
|
|
|
1358
1370
|
onChange: Ae,
|
|
1359
1371
|
className: "ecp-video-vol-slider",
|
|
1360
1372
|
style: {
|
|
1361
|
-
background: `linear-gradient(to right, ${
|
|
1373
|
+
background: `linear-gradient(to right, ${F} ${D}%, #e5e7eb ${D}%)`,
|
|
1374
|
+
"--thumb-color": F,
|
|
1362
1375
|
display: te < 460 ? "none" : "block"
|
|
1363
1376
|
}
|
|
1364
1377
|
}
|
|
@@ -1366,7 +1379,7 @@ function wt({
|
|
|
1366
1379
|
/* @__PURE__ */ c(
|
|
1367
1380
|
"span",
|
|
1368
1381
|
{
|
|
1369
|
-
className: `ecp-video-vol-pct${
|
|
1382
|
+
className: `ecp-video-vol-pct${h ? " ecp-video-vol-pct--dark" : " ecp-video-vol-pct--light"}`,
|
|
1370
1383
|
style: { display: te < 800 ? "none" : "block" },
|
|
1371
1384
|
children: [
|
|
1372
1385
|
D,
|
|
@@ -1383,9 +1396,9 @@ function wt({
|
|
|
1383
1396
|
);
|
|
1384
1397
|
}
|
|
1385
1398
|
function Nt() {
|
|
1386
|
-
const [s, l] = m(null), [u, v] = m("No track loaded"), [C, f] = m("purple"), [y, O] = m(!1), [x,
|
|
1399
|
+
const [s, l] = m(null), [u, v] = m("No track loaded"), [C, f] = m("purple"), [y, O] = m(!1), [x, F] = m(!1), [I, z] = m("light"), E = b(null);
|
|
1387
1400
|
return /* @__PURE__ */ e("div", { className: "ecp-page-wrapper", style: { backgroundColor: I === "dark" ? "#222" : "white" }, children: /* @__PURE__ */ c("div", { className: "ecp-demo-container", children: [
|
|
1388
|
-
y && /* @__PURE__ */ e(
|
|
1401
|
+
y && /* @__PURE__ */ e(ht, { theme: C, setTheme: f, close: () => O(!1) }),
|
|
1389
1402
|
/* @__PURE__ */ c("div", { className: "ecp-container-glass", children: [
|
|
1390
1403
|
/* @__PURE__ */ c("div", { className: "ecp-demo-header", children: [
|
|
1391
1404
|
/* @__PURE__ */ c("div", { children: [
|
|
@@ -1398,7 +1411,7 @@ function Nt() {
|
|
|
1398
1411
|
] })
|
|
1399
1412
|
] }),
|
|
1400
1413
|
/* @__PURE__ */ e(
|
|
1401
|
-
|
|
1414
|
+
vt,
|
|
1402
1415
|
{
|
|
1403
1416
|
audio: s || void 0,
|
|
1404
1417
|
name: u || void 0,
|
|
@@ -1442,23 +1455,23 @@ function Nt() {
|
|
|
1442
1455
|
}
|
|
1443
1456
|
),
|
|
1444
1457
|
/* @__PURE__ */ c("div", { className: "ecp-demo-actions", children: [
|
|
1445
|
-
/* @__PURE__ */ e("input", { type: "file", ref:
|
|
1458
|
+
/* @__PURE__ */ e("input", { type: "file", ref: E, onChange: (P) => {
|
|
1446
1459
|
var D;
|
|
1447
|
-
const
|
|
1448
|
-
if (
|
|
1449
|
-
const k = URL.createObjectURL(
|
|
1450
|
-
l(k), v(
|
|
1460
|
+
const M = (D = P.target.files) == null ? void 0 : D[0];
|
|
1461
|
+
if (M) {
|
|
1462
|
+
const k = URL.createObjectURL(M);
|
|
1463
|
+
l(k), v(M.name);
|
|
1451
1464
|
}
|
|
1452
1465
|
}, accept: "audio/*", className: "ecp-file-input-hidden" }),
|
|
1453
1466
|
/* @__PURE__ */ c("button", { onClick: () => {
|
|
1454
|
-
var
|
|
1455
|
-
return (
|
|
1467
|
+
var P;
|
|
1468
|
+
return (P = E.current) == null ? void 0 : P.click();
|
|
1456
1469
|
}, className: "ecp-action-btn", children: [
|
|
1457
1470
|
/* @__PURE__ */ e(pt, { size: 16 }),
|
|
1458
1471
|
"Load Audio"
|
|
1459
1472
|
] }),
|
|
1460
|
-
/* @__PURE__ */ e("button", { onClick: () =>
|
|
1461
|
-
/* @__PURE__ */ c("button", { onClick: () =>
|
|
1473
|
+
/* @__PURE__ */ e("button", { onClick: () => z(I === "dark" ? "light" : "dark"), className: "ecp-action-btn", children: I === "dark" ? "Light" : "Dark" }),
|
|
1474
|
+
/* @__PURE__ */ c("button", { onClick: () => F(!x), className: "ecp-action-btn", children: [
|
|
1462
1475
|
"Transparent: ",
|
|
1463
1476
|
String(x)
|
|
1464
1477
|
] })
|
|
@@ -1469,9 +1482,9 @@ function Nt() {
|
|
|
1469
1482
|
export {
|
|
1470
1483
|
Nt as DemoVisualizePlayer,
|
|
1471
1484
|
gt as NanoAudioPlayer,
|
|
1472
|
-
|
|
1485
|
+
ht as ThemeSelector,
|
|
1473
1486
|
wt as VideoPlayer,
|
|
1474
|
-
|
|
1487
|
+
vt as VisualizePlayer,
|
|
1475
1488
|
bt as WaveAudioPlayer,
|
|
1476
1489
|
ge as themes
|
|
1477
1490
|
};
|