@hotwired/turbo 8.0.6 → 8.0.10
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 -13
- package/dist/turbo.es2017-umd.js +20 -13
- 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.10
|
|
3
3
|
Copyright © 2024 37signals LLC
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
@@ -1843,12 +1843,16 @@ function createPlaceholderForPermanentElement(permanentElement) {
|
|
|
1843
1843
|
class Renderer {
|
|
1844
1844
|
#activeElement = null
|
|
1845
1845
|
|
|
1846
|
-
|
|
1846
|
+
static renderElement(currentElement, newElement) {
|
|
1847
|
+
// Abstract method
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1850
|
+
constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {
|
|
1847
1851
|
this.currentSnapshot = currentSnapshot;
|
|
1848
1852
|
this.newSnapshot = newSnapshot;
|
|
1849
1853
|
this.isPreview = isPreview;
|
|
1850
1854
|
this.willRender = willRender;
|
|
1851
|
-
this.renderElement = renderElement;
|
|
1855
|
+
this.renderElement = this.constructor.renderElement;
|
|
1852
1856
|
this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));
|
|
1853
1857
|
}
|
|
1854
1858
|
|
|
@@ -2919,6 +2923,10 @@ class MorphingFrameRenderer extends FrameRenderer {
|
|
|
2919
2923
|
|
|
2920
2924
|
morphChildren(currentElement, newElement);
|
|
2921
2925
|
}
|
|
2926
|
+
|
|
2927
|
+
async preservingPermanentElements(callback) {
|
|
2928
|
+
return await callback()
|
|
2929
|
+
}
|
|
2922
2930
|
}
|
|
2923
2931
|
|
|
2924
2932
|
class ProgressBar {
|
|
@@ -5032,7 +5040,7 @@ class PageView extends View {
|
|
|
5032
5040
|
const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;
|
|
5033
5041
|
const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;
|
|
5034
5042
|
|
|
5035
|
-
const renderer = new rendererClass(this.snapshot, snapshot,
|
|
5043
|
+
const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);
|
|
5036
5044
|
|
|
5037
5045
|
if (!renderer.shouldRender) {
|
|
5038
5046
|
this.forceReloaded = true;
|
|
@@ -5045,7 +5053,7 @@ class PageView extends View {
|
|
|
5045
5053
|
|
|
5046
5054
|
renderError(snapshot, visit) {
|
|
5047
5055
|
visit?.changeHistory();
|
|
5048
|
-
const renderer = new ErrorRenderer(this.snapshot, snapshot,
|
|
5056
|
+
const renderer = new ErrorRenderer(this.snapshot, snapshot, false);
|
|
5049
5057
|
return this.render(renderer)
|
|
5050
5058
|
}
|
|
5051
5059
|
|
|
@@ -5816,6 +5824,7 @@ class FrameController {
|
|
|
5816
5824
|
#connected = false
|
|
5817
5825
|
#hasBeenLoaded = false
|
|
5818
5826
|
#ignoredAttributes = new Set()
|
|
5827
|
+
#shouldMorphFrame = false
|
|
5819
5828
|
action = null
|
|
5820
5829
|
|
|
5821
5830
|
constructor(element) {
|
|
@@ -5873,13 +5882,10 @@ class FrameController {
|
|
|
5873
5882
|
}
|
|
5874
5883
|
|
|
5875
5884
|
sourceURLReloaded() {
|
|
5876
|
-
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
}, { once: true });
|
|
5880
|
-
}
|
|
5885
|
+
const { refresh, src } = this.element;
|
|
5886
|
+
|
|
5887
|
+
this.#shouldMorphFrame = src && refresh === "morph";
|
|
5881
5888
|
|
|
5882
|
-
const { src } = this.element;
|
|
5883
5889
|
this.element.removeAttribute("complete");
|
|
5884
5890
|
this.element.src = null;
|
|
5885
5891
|
this.element.src = src;
|
|
@@ -5922,6 +5928,7 @@ class FrameController {
|
|
|
5922
5928
|
}
|
|
5923
5929
|
}
|
|
5924
5930
|
} finally {
|
|
5931
|
+
this.#shouldMorphFrame = false;
|
|
5925
5932
|
this.fetchResponseLoaded = () => Promise.resolve();
|
|
5926
5933
|
}
|
|
5927
5934
|
}
|
|
@@ -6087,11 +6094,11 @@ class FrameController {
|
|
|
6087
6094
|
|
|
6088
6095
|
async #loadFrameResponse(fetchResponse, document) {
|
|
6089
6096
|
const newFrameElement = await this.extractForeignFrameElement(document.body);
|
|
6097
|
+
const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;
|
|
6090
6098
|
|
|
6091
6099
|
if (newFrameElement) {
|
|
6092
6100
|
const snapshot = new Snapshot(newFrameElement);
|
|
6093
|
-
const renderer = new
|
|
6094
|
-
|
|
6101
|
+
const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);
|
|
6095
6102
|
if (this.view.renderPromise) await this.view.renderPromise;
|
|
6096
6103
|
this.changeHistory();
|
|
6097
6104
|
|
package/dist/turbo.es2017-umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
Turbo 8.0.
|
|
2
|
+
Turbo 8.0.10
|
|
3
3
|
Copyright © 2024 37signals LLC
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -1849,12 +1849,16 @@ Copyright © 2024 37signals LLC
|
|
|
1849
1849
|
class Renderer {
|
|
1850
1850
|
#activeElement = null
|
|
1851
1851
|
|
|
1852
|
-
|
|
1852
|
+
static renderElement(currentElement, newElement) {
|
|
1853
|
+
// Abstract method
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {
|
|
1853
1857
|
this.currentSnapshot = currentSnapshot;
|
|
1854
1858
|
this.newSnapshot = newSnapshot;
|
|
1855
1859
|
this.isPreview = isPreview;
|
|
1856
1860
|
this.willRender = willRender;
|
|
1857
|
-
this.renderElement = renderElement;
|
|
1861
|
+
this.renderElement = this.constructor.renderElement;
|
|
1858
1862
|
this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));
|
|
1859
1863
|
}
|
|
1860
1864
|
|
|
@@ -2925,6 +2929,10 @@ Copyright © 2024 37signals LLC
|
|
|
2925
2929
|
|
|
2926
2930
|
morphChildren(currentElement, newElement);
|
|
2927
2931
|
}
|
|
2932
|
+
|
|
2933
|
+
async preservingPermanentElements(callback) {
|
|
2934
|
+
return await callback()
|
|
2935
|
+
}
|
|
2928
2936
|
}
|
|
2929
2937
|
|
|
2930
2938
|
class ProgressBar {
|
|
@@ -5038,7 +5046,7 @@ Copyright © 2024 37signals LLC
|
|
|
5038
5046
|
const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;
|
|
5039
5047
|
const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;
|
|
5040
5048
|
|
|
5041
|
-
const renderer = new rendererClass(this.snapshot, snapshot,
|
|
5049
|
+
const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);
|
|
5042
5050
|
|
|
5043
5051
|
if (!renderer.shouldRender) {
|
|
5044
5052
|
this.forceReloaded = true;
|
|
@@ -5051,7 +5059,7 @@ Copyright © 2024 37signals LLC
|
|
|
5051
5059
|
|
|
5052
5060
|
renderError(snapshot, visit) {
|
|
5053
5061
|
visit?.changeHistory();
|
|
5054
|
-
const renderer = new ErrorRenderer(this.snapshot, snapshot,
|
|
5062
|
+
const renderer = new ErrorRenderer(this.snapshot, snapshot, false);
|
|
5055
5063
|
return this.render(renderer)
|
|
5056
5064
|
}
|
|
5057
5065
|
|
|
@@ -5822,6 +5830,7 @@ Copyright © 2024 37signals LLC
|
|
|
5822
5830
|
#connected = false
|
|
5823
5831
|
#hasBeenLoaded = false
|
|
5824
5832
|
#ignoredAttributes = new Set()
|
|
5833
|
+
#shouldMorphFrame = false
|
|
5825
5834
|
action = null
|
|
5826
5835
|
|
|
5827
5836
|
constructor(element) {
|
|
@@ -5879,13 +5888,10 @@ Copyright © 2024 37signals LLC
|
|
|
5879
5888
|
}
|
|
5880
5889
|
|
|
5881
5890
|
sourceURLReloaded() {
|
|
5882
|
-
|
|
5883
|
-
|
|
5884
|
-
|
|
5885
|
-
}, { once: true });
|
|
5886
|
-
}
|
|
5891
|
+
const { refresh, src } = this.element;
|
|
5892
|
+
|
|
5893
|
+
this.#shouldMorphFrame = src && refresh === "morph";
|
|
5887
5894
|
|
|
5888
|
-
const { src } = this.element;
|
|
5889
5895
|
this.element.removeAttribute("complete");
|
|
5890
5896
|
this.element.src = null;
|
|
5891
5897
|
this.element.src = src;
|
|
@@ -5928,6 +5934,7 @@ Copyright © 2024 37signals LLC
|
|
|
5928
5934
|
}
|
|
5929
5935
|
}
|
|
5930
5936
|
} finally {
|
|
5937
|
+
this.#shouldMorphFrame = false;
|
|
5931
5938
|
this.fetchResponseLoaded = () => Promise.resolve();
|
|
5932
5939
|
}
|
|
5933
5940
|
}
|
|
@@ -6093,11 +6100,11 @@ Copyright © 2024 37signals LLC
|
|
|
6093
6100
|
|
|
6094
6101
|
async #loadFrameResponse(fetchResponse, document) {
|
|
6095
6102
|
const newFrameElement = await this.extractForeignFrameElement(document.body);
|
|
6103
|
+
const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;
|
|
6096
6104
|
|
|
6097
6105
|
if (newFrameElement) {
|
|
6098
6106
|
const snapshot = new Snapshot(newFrameElement);
|
|
6099
|
-
const renderer = new
|
|
6100
|
-
|
|
6107
|
+
const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);
|
|
6101
6108
|
if (this.view.renderPromise) await this.view.renderPromise;
|
|
6102
6109
|
this.changeHistory();
|
|
6103
6110
|
|
package/package.json
CHANGED