turbo-rails 2.0.0.pre.rc.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/turbo.js +23 -12
- data/app/assets/javascripts/turbo.min.js +6 -6
- data/app/assets/javascripts/turbo.min.js.map +1 -1
- data/lib/turbo/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b66ce6805bd7f4ed7bf032d98080748a3d123959ef81940ca62d1c394b69d79
|
4
|
+
data.tar.gz: 2245107df78ba671eb787f683cc77ac508778fd3832c3396c0d52d4be6f9d64c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6d95bdd5abce68fda1895b52b53474a8c0306545a238af6b0caba6f20354a7e48add0a6c662cd4861152fb0b293468f2f3c2a0c67002c9926922a19c4e734aa
|
7
|
+
data.tar.gz: e9daf44cbd3abf3c120aaf0b7bd58e13feb58f60c8738a57624c9721b6965636214a7e44a47eff5f752890b6df5915dbd852eb58d6449326aaa3969b1e3a91f7
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
Turbo 8.0.0
|
2
|
+
Turbo 8.0.0
|
3
3
|
Copyright © 2024 37signals LLC
|
4
4
|
*/
|
5
5
|
(function(prototype) {
|
@@ -2569,8 +2569,7 @@ class History {
|
|
2569
2569
|
|
2570
2570
|
class LinkPrefetchObserver {
|
2571
2571
|
started=false;
|
2572
|
-
|
2573
|
-
touchTriggerEvent="touchstart";
|
2572
|
+
#prefetchedLink=null;
|
2574
2573
|
constructor(delegate, eventTarget) {
|
2575
2574
|
this.delegate = delegate;
|
2576
2575
|
this.eventTarget = eventTarget;
|
@@ -2587,11 +2586,11 @@ class LinkPrefetchObserver {
|
|
2587
2586
|
}
|
2588
2587
|
stop() {
|
2589
2588
|
if (!this.started) return;
|
2590
|
-
this.eventTarget.removeEventListener(
|
2589
|
+
this.eventTarget.removeEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
2591
2590
|
capture: true,
|
2592
2591
|
passive: true
|
2593
2592
|
});
|
2594
|
-
this.eventTarget.removeEventListener(
|
2593
|
+
this.eventTarget.removeEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
2595
2594
|
capture: true,
|
2596
2595
|
passive: true
|
2597
2596
|
});
|
@@ -2599,11 +2598,11 @@ class LinkPrefetchObserver {
|
|
2599
2598
|
this.started = false;
|
2600
2599
|
}
|
2601
2600
|
#enable=() => {
|
2602
|
-
this.eventTarget.addEventListener(
|
2601
|
+
this.eventTarget.addEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
2603
2602
|
capture: true,
|
2604
2603
|
passive: true
|
2605
2604
|
});
|
2606
|
-
this.eventTarget.addEventListener(
|
2605
|
+
this.eventTarget.addEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
2607
2606
|
capture: true,
|
2608
2607
|
passive: true
|
2609
2608
|
});
|
@@ -2611,21 +2610,26 @@ class LinkPrefetchObserver {
|
|
2611
2610
|
this.started = true;
|
2612
2611
|
};
|
2613
2612
|
#tryToPrefetchRequest=event => {
|
2614
|
-
if (getMetaContent("turbo-prefetch")
|
2613
|
+
if (getMetaContent("turbo-prefetch") === "false") return;
|
2615
2614
|
const target = event.target;
|
2616
2615
|
const isLink = target.matches && target.matches("a[href]:not([target^=_]):not([download])");
|
2617
2616
|
if (isLink && this.#isPrefetchable(target)) {
|
2618
2617
|
const link = target;
|
2619
2618
|
const location = getLocationForLink(link);
|
2620
2619
|
if (this.delegate.canPrefetchRequestToLocation(link, location)) {
|
2620
|
+
this.#prefetchedLink = link;
|
2621
2621
|
const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams, target);
|
2622
2622
|
prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);
|
2623
|
-
link.addEventListener("mouseleave", (() => prefetchCache.clear()), {
|
2624
|
-
once: true
|
2625
|
-
});
|
2626
2623
|
}
|
2627
2624
|
}
|
2628
2625
|
};
|
2626
|
+
#cancelRequestIfObsolete=event => {
|
2627
|
+
if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();
|
2628
|
+
};
|
2629
|
+
#cancelPrefetchRequest=() => {
|
2630
|
+
prefetchCache.clear();
|
2631
|
+
this.#prefetchedLink = null;
|
2632
|
+
};
|
2629
2633
|
#tryToUsePrefetchedRequest=event => {
|
2630
2634
|
if (event.target.tagName !== "FORM" && event.detail.fetchOptions.method === "get") {
|
2631
2635
|
const cached = prefetchCache.get(event.detail.url.toString());
|
@@ -2658,7 +2662,14 @@ class LinkPrefetchObserver {
|
|
2658
2662
|
}
|
2659
2663
|
#isPrefetchable(link) {
|
2660
2664
|
const href = link.getAttribute("href");
|
2661
|
-
if (!href || href
|
2665
|
+
if (!href || href.startsWith("#") || link.getAttribute("data-turbo") === "false" || link.getAttribute("data-turbo-prefetch") === "false") {
|
2666
|
+
return false;
|
2667
|
+
}
|
2668
|
+
const event = dispatch("turbo:before-prefetch", {
|
2669
|
+
target: link,
|
2670
|
+
cancelable: true
|
2671
|
+
});
|
2672
|
+
if (event.defaultPrevented) {
|
2662
2673
|
return false;
|
2663
2674
|
}
|
2664
2675
|
if (link.origin !== document.location.origin) {
|