Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bep/docuapi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/controllers/lang.js')
-rw-r--r--assets/js/controllers/lang.js37
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);
+ });
+ }
+ };
+}