-
@@ -42,8 +38,9 @@ export default {
data() {
return {
showMenu: false,
- rateIndex: 1,
- numVisible: 5
+ currentPlaybackRate: 0,
+ MIN_SPEED: 0.5,
+ MAX_SPEED: 3
}
},
computed: {
@@ -56,28 +53,40 @@ export default {
}
},
rates() {
- return [0.25, 0.5, 0.8, 1, 1.3, 1.5, 2, 2.5, 3]
+ return [0.5, 1, 1.2, 1.5, 2]
},
- xPos() {
- return -1 * this.rateIndex * 44
+ canIncrement() {
+ return this.playbackRate + 0.1 <= this.MAX_SPEED
+ },
+ canDecrement() {
+ return this.playbackRate - 0.1 >= this.MIN_SPEED
}
},
methods: {
clickOutside() {
- this.showMenu = false
+ this.setShowMenu(false)
},
set(rate) {
- var newPlaybackRate = Number(rate)
- var hasChanged = this.playbackRate !== newPlaybackRate
- this.playbackRate = newPlaybackRate
- if (hasChanged) this.$emit('change', newPlaybackRate)
- this.showMenu = false
+ this.playbackRate = Number(rate)
+ this.$nextTick(() => this.setShowMenu(false))
},
- leftArrowClick() {
- this.rateIndex = Math.max(0, this.rateIndex - 1)
+ increment() {
+ if (this.playbackRate + 0.1 > this.MAX_SPEED) return
+ var newPlaybackRate = this.playbackRate + 0.1
+ this.playbackRate = Number(newPlaybackRate.toFixed(1))
},
- rightArrowClick() {
- this.rateIndex = Math.min(this.rates.length - this.numVisible, this.rateIndex + 1)
+ decrement() {
+ if (this.playbackRate - 0.1 < this.MIN_SPEED) return
+ var newPlaybackRate = this.playbackRate - 0.1
+ this.playbackRate = Number(newPlaybackRate.toFixed(1))
+ },
+ setShowMenu(val) {
+ if (val) {
+ this.currentPlaybackRate = this.playbackRate
+ } else if (this.currentPlaybackRate !== this.playbackRate) {
+ this.$emit('change', this.playbackRate)
+ }
+ this.showMenu = val
}
},
mounted() {}
diff --git a/client/components/ui/IconBtn.vue b/client/components/ui/IconBtn.vue
index b17339dc..3391c86f 100644
--- a/client/components/ui/IconBtn.vue
+++ b/client/components/ui/IconBtn.vue
@@ -68,4 +68,7 @@ button.icon-btn:hover:not(:disabled)::before {
button.icon-btn:disabled::before {
background-color: rgba(0, 0, 0, 0.2);
}
+button.icon-btn:disabled span {
+ color: #777;
+}
\ No newline at end of file