1import { Controller } from "@hotwired/stimulus" 2 3export default class extends Controller { 4 static targets = ["overlay", "frame"] 5 6 open(event) { 7 if (event.target.closest("a, button, form, input, select")) return 8 9 const url = event.currentTarget.dataset.url 10 if (!url) return 11 12 this.frameTarget.src = url 13 this.overlayTarget.classList.remove("hidden") 14 document.body.style.overflow = "hidden" 15 document.addEventListener("keydown", this._closeOnEscape) 16 this.frameTarget.addEventListener("turbo:submit-end", this._handleSubmit) 17 } 18 19 close() { 20 this.overlayTarget.classList.add("hidden") 21 document.body.style.overflow = "" 22 this.frameTarget.removeEventListener("turbo:submit-end", this._handleSubmit) 23 this.frameTarget.src = "" 24 this.frameTarget.replaceChildren() 25 document.removeEventListener("keydown", this._closeOnEscape) 26 } 27 28 _closeOnEscape = (event) => { 29 if (event.key === "Escape") this.close() 30 } 31 32 _handleSubmit = (event) => { 33 if (event.detail.success) { 34 this.close() 35 window.Turbo.visit(window.location.href, { action: "replace" }) 36 } 37 } 38 39 disconnect() { 40 document.body.style.overflow = "" 41 document.removeEventListener("keydown", this._closeOnEscape) 42 } 43}
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.