|
| 1 | +var activeToggleClass = 'is-active' |
| 2 | + |
| 3 | +/** |
| 4 | + * Mode toggles |
| 5 | + */ |
| 6 | +var mode = document.querySelectorAll('.js-mode') |
| 7 | +var currentMode = 'html' |
| 8 | + |
| 9 | +mode.forEach(function(toggle) { |
| 10 | + toggle.addEventListener('click', function(event) { |
| 11 | + // Reset all classes |
| 12 | + mode.forEach(function(modeToggle) { |
| 13 | + // Remove active class from all toggles |
| 14 | + modeToggle.classList.remove(activeToggleClass) |
| 15 | + |
| 16 | + // Hide all views |
| 17 | + document |
| 18 | + .querySelector('.js-' + modeToggle.dataset.mode) |
| 19 | + .classList.add('is-hidden') |
| 20 | + }) |
| 21 | + |
| 22 | + // Add active class |
| 23 | + currentMode = this.dataset.mode |
| 24 | + this.classList.add(activeToggleClass) |
| 25 | + |
| 26 | + // Show view |
| 27 | + document |
| 28 | + .querySelector('.js-' + this.dataset.mode) |
| 29 | + .classList.remove('is-hidden') |
| 30 | + }) |
| 31 | +}) |
| 32 | + |
| 33 | +/** |
| 34 | + * View toggles |
| 35 | + */ |
| 36 | +var view = document.querySelectorAll('.js-view') |
| 37 | +var currentView = 'desktop' |
| 38 | + |
| 39 | +view.forEach(function(toggle) { |
| 40 | + // Add click event |
| 41 | + toggle.addEventListener('click', function(event) { |
| 42 | + view.forEach(function(viewToggle) { |
| 43 | + // Remove active class from all toggles |
| 44 | + viewToggle.classList.remove(activeToggleClass) |
| 45 | + |
| 46 | + document.querySelectorAll('.preview-iframe').forEach(function(item) { |
| 47 | + item.classList.remove('preview-iframe--mobile') |
| 48 | + }) |
| 49 | + }) |
| 50 | + |
| 51 | + currentView = this.dataset.view |
| 52 | + this.classList.add(activeToggleClass) |
| 53 | + |
| 54 | + if (this.dataset.view === 'mobile') { |
| 55 | + document.querySelectorAll('.preview-iframe').forEach(function(item) { |
| 56 | + item.classList.add('preview-iframe--mobile') |
| 57 | + }) |
| 58 | + } |
| 59 | + }) |
| 60 | +}) |
| 61 | + |
| 62 | +function keypress(e) { |
| 63 | + var evt = window.event ? event : e |
| 64 | + |
| 65 | + // ctrl + v |
| 66 | + if (evt.keyCode == 86 && evt.ctrlKey) { |
| 67 | + var view = currentView === 'desktop' ? 'mobile' : 'desktop' |
| 68 | + document.querySelector('.js-view[data-view="' + view + '"]').click() |
| 69 | + } |
| 70 | + |
| 71 | + // ctrl + m |
| 72 | + if (evt.keyCode == 77 && evt.ctrlKey) { |
| 73 | + var mode = currentMode === 'html' ? 'text' : 'html' |
| 74 | + document.querySelector('.js-mode[data-mode="' + mode + '"]').click() |
| 75 | + } |
| 76 | +} |
| 77 | + |
| 78 | +document.onkeydown = keypress |
| 79 | + |
| 80 | +// Manage state when HTML iframe is finished loading |
| 81 | +document.querySelector('.js-html').onload = function() { |
| 82 | + // Hide loading indicator |
| 83 | + document.querySelector('.js-loader').classList.add('is-hidden') |
| 84 | + |
| 85 | + // Add state class to HTML iframe |
| 86 | + this.classList.add('is-loaded') |
| 87 | +} |
0 commit comments