@hotwired/turbo 8.0.0-rc.3 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/turbo.es2017-esm.js +20 -10
- package/dist/turbo.es2017-umd.js +20 -10
- package/package.json +1 -1
package/dist/turbo.es2017-esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
Turbo 8.0.
|
|
2
|
+
Turbo 8.0.1
|
|
3
3
|
Copyright © 2024 37signals LLC
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
@@ -2417,11 +2417,11 @@ class Visit {
|
|
|
2417
2417
|
complete() {
|
|
2418
2418
|
if (this.state == VisitState.started) {
|
|
2419
2419
|
this.recordTimingMetric(TimingMetric.visitEnd);
|
|
2420
|
+
this.adapter.visitCompleted(this);
|
|
2420
2421
|
this.state = VisitState.completed;
|
|
2421
2422
|
this.followRedirect();
|
|
2422
2423
|
|
|
2423
2424
|
if (!this.followedRedirect) {
|
|
2424
|
-
this.adapter.visitCompleted(this);
|
|
2425
2425
|
this.delegate.visitCompleted(this);
|
|
2426
2426
|
}
|
|
2427
2427
|
}
|
|
@@ -3085,8 +3085,7 @@ class History {
|
|
|
3085
3085
|
|
|
3086
3086
|
class LinkPrefetchObserver {
|
|
3087
3087
|
started = false
|
|
3088
|
-
|
|
3089
|
-
touchTriggerEvent = "touchstart"
|
|
3088
|
+
#prefetchedLink = null
|
|
3090
3089
|
|
|
3091
3090
|
constructor(delegate, eventTarget) {
|
|
3092
3091
|
this.delegate = delegate;
|
|
@@ -3106,27 +3105,29 @@ class LinkPrefetchObserver {
|
|
|
3106
3105
|
stop() {
|
|
3107
3106
|
if (!this.started) return
|
|
3108
3107
|
|
|
3109
|
-
this.eventTarget.removeEventListener(
|
|
3108
|
+
this.eventTarget.removeEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
|
3110
3109
|
capture: true,
|
|
3111
3110
|
passive: true
|
|
3112
3111
|
});
|
|
3113
|
-
this.eventTarget.removeEventListener(
|
|
3112
|
+
this.eventTarget.removeEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
|
3114
3113
|
capture: true,
|
|
3115
3114
|
passive: true
|
|
3116
3115
|
});
|
|
3116
|
+
|
|
3117
3117
|
this.eventTarget.removeEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
|
|
3118
3118
|
this.started = false;
|
|
3119
3119
|
}
|
|
3120
3120
|
|
|
3121
3121
|
#enable = () => {
|
|
3122
|
-
this.eventTarget.addEventListener(
|
|
3122
|
+
this.eventTarget.addEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
|
3123
3123
|
capture: true,
|
|
3124
3124
|
passive: true
|
|
3125
3125
|
});
|
|
3126
|
-
this.eventTarget.addEventListener(
|
|
3126
|
+
this.eventTarget.addEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
|
3127
3127
|
capture: true,
|
|
3128
3128
|
passive: true
|
|
3129
3129
|
});
|
|
3130
|
+
|
|
3130
3131
|
this.eventTarget.addEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
|
|
3131
3132
|
this.started = true;
|
|
3132
3133
|
}
|
|
@@ -3142,6 +3143,8 @@ class LinkPrefetchObserver {
|
|
|
3142
3143
|
const location = getLocationForLink(link);
|
|
3143
3144
|
|
|
3144
3145
|
if (this.delegate.canPrefetchRequestToLocation(link, location)) {
|
|
3146
|
+
this.#prefetchedLink = link;
|
|
3147
|
+
|
|
3145
3148
|
const fetchRequest = new FetchRequest(
|
|
3146
3149
|
this,
|
|
3147
3150
|
FetchMethod.get,
|
|
@@ -3151,12 +3154,19 @@ class LinkPrefetchObserver {
|
|
|
3151
3154
|
);
|
|
3152
3155
|
|
|
3153
3156
|
prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);
|
|
3154
|
-
|
|
3155
|
-
link.addEventListener("mouseleave", () => prefetchCache.clear(), { once: true });
|
|
3156
3157
|
}
|
|
3157
3158
|
}
|
|
3158
3159
|
}
|
|
3159
3160
|
|
|
3161
|
+
#cancelRequestIfObsolete = (event) => {
|
|
3162
|
+
if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();
|
|
3163
|
+
}
|
|
3164
|
+
|
|
3165
|
+
#cancelPrefetchRequest = () => {
|
|
3166
|
+
prefetchCache.clear();
|
|
3167
|
+
this.#prefetchedLink = null;
|
|
3168
|
+
}
|
|
3169
|
+
|
|
3160
3170
|
#tryToUsePrefetchedRequest = (event) => {
|
|
3161
3171
|
if (event.target.tagName !== "FORM" && event.detail.fetchOptions.method === "get") {
|
|
3162
3172
|
const cached = prefetchCache.get(event.detail.url.toString());
|
package/dist/turbo.es2017-umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
Turbo 8.0.
|
|
2
|
+
Turbo 8.0.1
|
|
3
3
|
Copyright © 2024 37signals LLC
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -2423,11 +2423,11 @@ Copyright © 2024 37signals LLC
|
|
|
2423
2423
|
complete() {
|
|
2424
2424
|
if (this.state == VisitState.started) {
|
|
2425
2425
|
this.recordTimingMetric(TimingMetric.visitEnd);
|
|
2426
|
+
this.adapter.visitCompleted(this);
|
|
2426
2427
|
this.state = VisitState.completed;
|
|
2427
2428
|
this.followRedirect();
|
|
2428
2429
|
|
|
2429
2430
|
if (!this.followedRedirect) {
|
|
2430
|
-
this.adapter.visitCompleted(this);
|
|
2431
2431
|
this.delegate.visitCompleted(this);
|
|
2432
2432
|
}
|
|
2433
2433
|
}
|
|
@@ -3091,8 +3091,7 @@ Copyright © 2024 37signals LLC
|
|
|
3091
3091
|
|
|
3092
3092
|
class LinkPrefetchObserver {
|
|
3093
3093
|
started = false
|
|
3094
|
-
|
|
3095
|
-
touchTriggerEvent = "touchstart"
|
|
3094
|
+
#prefetchedLink = null
|
|
3096
3095
|
|
|
3097
3096
|
constructor(delegate, eventTarget) {
|
|
3098
3097
|
this.delegate = delegate;
|
|
@@ -3112,27 +3111,29 @@ Copyright © 2024 37signals LLC
|
|
|
3112
3111
|
stop() {
|
|
3113
3112
|
if (!this.started) return
|
|
3114
3113
|
|
|
3115
|
-
this.eventTarget.removeEventListener(
|
|
3114
|
+
this.eventTarget.removeEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
|
3116
3115
|
capture: true,
|
|
3117
3116
|
passive: true
|
|
3118
3117
|
});
|
|
3119
|
-
this.eventTarget.removeEventListener(
|
|
3118
|
+
this.eventTarget.removeEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
|
3120
3119
|
capture: true,
|
|
3121
3120
|
passive: true
|
|
3122
3121
|
});
|
|
3122
|
+
|
|
3123
3123
|
this.eventTarget.removeEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
|
|
3124
3124
|
this.started = false;
|
|
3125
3125
|
}
|
|
3126
3126
|
|
|
3127
3127
|
#enable = () => {
|
|
3128
|
-
this.eventTarget.addEventListener(
|
|
3128
|
+
this.eventTarget.addEventListener("mouseenter", this.#tryToPrefetchRequest, {
|
|
3129
3129
|
capture: true,
|
|
3130
3130
|
passive: true
|
|
3131
3131
|
});
|
|
3132
|
-
this.eventTarget.addEventListener(
|
|
3132
|
+
this.eventTarget.addEventListener("mouseleave", this.#cancelRequestIfObsolete, {
|
|
3133
3133
|
capture: true,
|
|
3134
3134
|
passive: true
|
|
3135
3135
|
});
|
|
3136
|
+
|
|
3136
3137
|
this.eventTarget.addEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
|
|
3137
3138
|
this.started = true;
|
|
3138
3139
|
}
|
|
@@ -3148,6 +3149,8 @@ Copyright © 2024 37signals LLC
|
|
|
3148
3149
|
const location = getLocationForLink(link);
|
|
3149
3150
|
|
|
3150
3151
|
if (this.delegate.canPrefetchRequestToLocation(link, location)) {
|
|
3152
|
+
this.#prefetchedLink = link;
|
|
3153
|
+
|
|
3151
3154
|
const fetchRequest = new FetchRequest(
|
|
3152
3155
|
this,
|
|
3153
3156
|
FetchMethod.get,
|
|
@@ -3157,12 +3160,19 @@ Copyright © 2024 37signals LLC
|
|
|
3157
3160
|
);
|
|
3158
3161
|
|
|
3159
3162
|
prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);
|
|
3160
|
-
|
|
3161
|
-
link.addEventListener("mouseleave", () => prefetchCache.clear(), { once: true });
|
|
3162
3163
|
}
|
|
3163
3164
|
}
|
|
3164
3165
|
}
|
|
3165
3166
|
|
|
3167
|
+
#cancelRequestIfObsolete = (event) => {
|
|
3168
|
+
if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();
|
|
3169
|
+
}
|
|
3170
|
+
|
|
3171
|
+
#cancelPrefetchRequest = () => {
|
|
3172
|
+
prefetchCache.clear();
|
|
3173
|
+
this.#prefetchedLink = null;
|
|
3174
|
+
}
|
|
3175
|
+
|
|
3166
3176
|
#tryToUsePrefetchedRequest = (event) => {
|
|
3167
3177
|
if (event.target.tagName !== "FORM" && event.detail.fetchOptions.method === "get") {
|
|
3168
3178
|
const cached = prefetchCache.get(event.detail.url.toString());
|
package/package.json
CHANGED