1import { Controller } from "@hotwired/stimulus"; 2 3export default class extends Controller { 4 static targets = ["player", "setStartButton", "setEndButton", "startTimeField", "endTimeField"]; 5 6 connect() { 7 this.setStartButtonTarget.addEventListener("click", this.setStartTime); 8 this.setEndButtonTarget.addEventListener("click", this.setEndTime); 9 } 10 11 disconnect() { 12 this.setStartButtonTarget.removeEventListener("click", this.setStartTime); 13 this.setEndButtonTarget.removeEventListener("click", this.setEndTime); 14 } 15 16 setStartTime = (event) => { 17 this.setTime(event, this.startTimeFieldTarget); 18 }; 19 20 setEndTime = (event) => { 21 this.setTime(event, this.endTimeFieldTarget); 22 }; 23 24 setTime = (event, field) => { 25 const hiddenField = event.target.closest("div").querySelector("input[type='hidden']"); 26 const time = this.secondsToTime(this.playerTarget.currentTime); 27 28 field.value = time; 29 hiddenField.value = parseInt(this.playerTarget.currentTime, 10); 30 }; 31 32 secondsToTime = (seconds) => { 33 const minutes = Math.floor(seconds / 60); 34 const secs = seconds % 60; 35 return `${minutes.toString().padStart(2, "0")}:${parseInt(secs, 10).toString().padStart(2, "0")}`; 36 }; 37};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.