11export function bridgeTurboAndAlpine ( Alpine ) {
22 document . addEventListener ( 'turbo:before-render' , ( event ) => {
3+ // Stop observing mutations before render
4+ Alpine . stopObservingMutations ( ) ;
5+
36 event . detail . newBody . querySelectorAll ( '[data-alpine-generated]' ) . forEach ( ( el ) => {
47 if ( el . hasAttribute ( 'data-alpine-generated' ) ) {
58 el . removeAttribute ( 'data-alpine-generated' ) ;
@@ -9,10 +12,6 @@ export function bridgeTurboAndAlpine(Alpine) {
912 } ) ;
1013
1114 document . addEventListener ( 'turbo:render' , ( ) => {
12- if ( document . documentElement . hasAttribute ( 'data-turbo-preview' ) ) {
13- return ;
14- }
15-
1615 document . querySelectorAll ( '[data-alpine-ignored]' ) . forEach ( ( el ) => {
1716 el . removeAttribute ( 'x-ignore' ) ;
1817 el . removeAttribute ( 'data-alpine-ignored' ) ;
@@ -30,9 +29,6 @@ export function bridgeTurboAndAlpine(Alpine) {
3029
3130 // Cleanup Alpine state on navigation.
3231 document . addEventListener ( 'turbo:before-cache' , ( ) => {
33- // This will be restarted in turbo:render.
34- Alpine . stopObservingMutations ( ) ;
35-
3632 document . body . querySelectorAll ( '[data-turbo-permanent]' ) . forEach ( ( el ) => {
3733 if ( ! el . hasAttribute ( 'x-ignore' ) ) {
3834 el . setAttribute ( 'x-ignore' , true ) ;
@@ -53,15 +49,5 @@ export function bridgeTurboAndAlpine(Alpine) {
5349 el . _x_teleport . setAttribute ( 'data-alpine-generated' , true ) ;
5450 }
5551 } ) ;
56-
57- document . body . querySelectorAll ( '[x-data]' ) . forEach ( ( el ) => {
58- if ( ! el . hasAttribute ( 'data-turbo-permanent' ) ) {
59- Alpine . destroyTree ( el ) ;
60- // Turbo leaks DOM elements via their data-turbo-permanent handling.
61- // That needs to be fixed upstream, but until then.
62- let clone = el . cloneNode ( true ) ;
63- el . replaceWith ( clone ) ;
64- }
65- } ) ;
6652 } ) ;
6753}
0 commit comments