UNPKG

@stimulus-library/controllers

Version:

A library of useful controllers for Stimulus

26 lines (25 loc) 919 B
import { BaseController } from "@stimulus-library/utilities"; import { useMutationObserver } from "@stimulus-library/mixins"; export class TurboFrameHistoryController extends BaseController { initialize() { this.mutate = this.mutate.bind(this); } connect() { if (!window.Turbo) { throw new Error("Expected Turbo to be defined on the window."); } const { navigator } = window.Turbo; this.navigator = navigator; useMutationObserver(this, this.el, this.mutate, { attributes: true }); } mutate(entries) { entries.forEach((mutation) => { if (mutation.type === "attributes" && mutation.attributeName === "src") { const src = this.element.getAttribute("src"); if (src != null) { this.navigator.history.push(new URL(src)); } } }); } }