diff options
Diffstat (limited to 'assets/js/controllers/lang.js')
-rw-r--r-- | assets/js/controllers/lang.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/assets/js/controllers/lang.js b/assets/js/controllers/lang.js new file mode 100644 index 0000000..eed1fb8 --- /dev/null +++ b/assets/js/controllers/lang.js @@ -0,0 +1,37 @@ +const debug = 0 ? console.log.bind(console, '[lang]') : function() {}; + +const toggleCodeblockVisibility = function(lang, visible) { + debug('toggleCodeblockVisibility', lang, visible); + document.querySelectorAll(`.highlight code.language-${lang}`).forEach((el) => { + let highlight = el.closest('.highlight'); + highlight.style.display = visible ? 'block' : 'none'; + }); +}; + +export function newLangController() { + return { + tabs: [], + changeLanguage: function(index) { + debug('changeLanguage', index); + let tab = this.tabs[index]; + for (let i = 0; i < this.tabs.length; i++) { + let isActive = i === index; + this.tabs[i].active = isActive; + + toggleCodeblockVisibility(this.tabs[i].key, isActive); + } + }, + initLangs: function(tabs) { + debug('initLangs', tabs); + tabs[0].active = true; + this.tabs = tabs; + + return this.$nextTick(() => { + let first = this.tabs[0]; + // Hide all but the first. + for (let i = 1; i < this.tabs.length; i++) {} + debug('first', first); + }); + } + }; +} |