1import jQuery from 'jquery'; 2window.$ = window.jQuery = jQuery; 3 4var $document = $(document); 5 6$.turbo = { 7 version: '2.1.0', 8 isReady: false, 9 use: function(load, fetch) { 10 return $document.off('.turbo').on("" + load + ".turbo", this.onLoad).on("" + fetch + ".turbo", this.onFetch); 11 }, 12 addCallback: function(callback) { 13 if ($.turbo.isReady) { 14 callback($); 15 } 16 return $document.on('turbo:ready', function() { 17 return callback($); 18 }); 19 }, 20 onLoad: function() { 21 $.turbo.isReady = true; 22 return $document.trigger('turbo:ready'); 23 }, 24 onFetch: function() { 25 $.turbo.isReady = false; 26 return true; 27 }, 28 register: function() { 29 $(this.onLoad); 30 return $.fn.ready = this.addCallback; 31 } 32}; 33 34$.turbo.register(); 35 36$.turbo.use('turbo:load', 'turbo:before-fetch-request'); 37 38document.addEventListener("turbo:frame-missing", function(event) { 39 if (event.detail.response.redirected) { 40 event.preventDefault() 41 event.detail.visit(event.detail.response); 42 } 43}) 44 45 46// Keeps scroll position of certain elements between navigations, usefull for long sidebar with scroll 47var scrollPositions = {}; 48 49document.addEventListener("turbo:before-render", function(){ 50 document.querySelectorAll("[data-turbo-keep-scroll]").forEach(function(element){ 51 scrollPositions[element.id] = element.scrollTop; 52 }); 53}); 54 55document.addEventListener("turbo:render", function(){ 56 document.querySelectorAll("[data-turbo-keep-scroll]").forEach(function(element){ 57 element.scrollTop = scrollPositions[element.id]; 58 }); 59}); 60 61export default $; 62
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.