| LEFT | RIGHT | 
|---|
| (no file at all) |  | 
| 1 /*! | 1 /*! | 
| 2  * This file is part of help.eyeo.com. | 2  * This file is part of help.eyeo.com. | 
| 3  * Copyright (C) 2017-present eyeo GmbH | 3  * Copyright (C) 2017-present eyeo GmbH | 
| 4  * | 4  * | 
| 5  * help.eyeo.com is free software: you can redistribute it and/or modify | 5  * help.eyeo.com is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License as published by | 6  * it under the terms of the GNU General Public License as published by | 
| 7  * the Free Software Foundation, either version 3 of the License, or | 7  * the Free Software Foundation, either version 3 of the License, or | 
| 8  * (at your option) any later version. | 8  * (at your option) any later version. | 
| 9  * | 9  * | 
| 10  * help.eyeo.com is distributed in the hope that it will be useful, | 10  * help.eyeo.com is distributed in the hope that it will be useful, | 
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 245     } | 245     } | 
| 246 | 246 | 
| 247     /************************************************************************** | 247     /************************************************************************** | 
| 248      * BrowserSelect | 248      * BrowserSelect | 
| 249      **************************************************************************/ | 249      **************************************************************************/ | 
| 250 | 250 | 
| 251     function BrowserSelect(select) | 251     function BrowserSelect(select) | 
| 252     { | 252     { | 
| 253       this.select = select; | 253       this.select = select; | 
| 254       CustomSelect.apply(this, [this.select]); | 254       CustomSelect.apply(this, [this.select]); | 
|  | 255       this.noContentMessage = document.getElementById("no-content-for-platform-n
     otice"); | 
| 255 | 256 | 
| 256       this.BROWSER_STORAGE_KEY = "BROWSER"; | 257       this.BROWSER_STORAGE_KEY = "BROWSER"; | 
| 257       this.BROWSER_AUTODETECTED_STORAGE_KEY = "BROWSER_AUTODETECTED"; | 258       this.BROWSER_AUTODETECTED_STORAGE_KEY = "BROWSER_AUTODETECTED"; | 
| 258       this.SUPPORTED_BROWSERS = ["chrome", "opera", "samsungBrowser", | 259       this.SUPPORTED_BROWSERS = ["chrome", "opera", "samsungBrowser", | 
| 259                                  "yandexbrowser", "maxthon", "msie", | 260                                  "yandexbrowser", "maxthon", "msie", | 
| 260                                  "msedge", "firefox", "ios", "safari"]; | 261                                  "msedge", "firefox", "ios", "safari"]; | 
| 261       this.DEFAULT_BROWSER = "chrome"; | 262       this.DEFAULT_BROWSER = "chrome"; | 
| 262 | 263 | 
|  | 264       this.setCurrentArticleSupportedBrowsers(); | 
|  | 265 | 
| 263       this.select | 266       this.select | 
| 264         .addEventListener("click", this._onClickOrKeyDown.bind(this), false); | 267         .addEventListener("click", this._onClickOrKeyDown.bind(this), false); | 
| 265 | 268 | 
| 266       this.select | 269       this.select | 
| 267         .addEventListener("keydown", this._onClickOrKeyDown.bind(this), false); | 270         .addEventListener("keydown", this._onClickOrKeyDown.bind(this), false); | 
|  | 271 | 
|  | 272       this.noContentMessage | 
|  | 273         .addEventListener("click", this._onClickNoContentMessage.bind(this), fal
     se); | 
| 268 | 274 | 
| 269       var storedBrowser = localStorage.getItem(this.BROWSER_STORAGE_KEY); | 275       var storedBrowser = localStorage.getItem(this.BROWSER_STORAGE_KEY); | 
| 270       if (storedBrowser) this.selectOption(storedBrowser); | 276       if (storedBrowser) this.selectOption(storedBrowser); | 
| 271       else this.detectBrowser(); | 277       else this.detectBrowser(); | 
| 272     } | 278     } | 
| 273 | 279 | 
| 274     BrowserSelect.prototype = Object.create(CustomSelect.prototype); | 280     BrowserSelect.prototype = Object.create(CustomSelect.prototype); | 
| 275     BrowserSelect.prototype.constructor = BrowserSelect; | 281     BrowserSelect.prototype.constructor = BrowserSelect; | 
|  | 282 | 
|  | 283     BrowserSelect.prototype.setCurrentArticleSupportedBrowsers = function() | 
|  | 284     { | 
|  | 285       for (var i = 0; i < this.SUPPORTED_BROWSERS.length; i++) | 
|  | 286       { | 
|  | 287         var supportedBrowser = this.SUPPORTED_BROWSERS[i]; | 
|  | 288         if (!document.querySelector(".platform-"+supportedBrowser)) | 
|  | 289         { | 
|  | 290           this.noContentMessage | 
|  | 291               .querySelector("[data-value='" + supportedBrowser + "']") | 
|  | 292               .setAttribute("hidden", "true"); | 
|  | 293         } | 
|  | 294       } | 
|  | 295     }; | 
| 276 | 296 | 
| 277     BrowserSelect.prototype.detectBrowser = function() | 297     BrowserSelect.prototype.detectBrowser = function() | 
| 278     { | 298     { | 
| 279       for (var i = 0; i < this.SUPPORTED_BROWSERS.length; i++) | 299       for (var i = 0; i < this.SUPPORTED_BROWSERS.length; i++) | 
| 280       { | 300       { | 
| 281         var supportedBrowser = this.SUPPORTED_BROWSERS[i]; | 301         var supportedBrowser = this.SUPPORTED_BROWSERS[i]; | 
| 282         if (bowser[supportedBrowser]) | 302         if (bowser[supportedBrowser]) | 
| 283         { | 303         { | 
| 284           localStorage.setItem(this.BROWSER_AUTODETECTED_STORAGE_KEY, "true"); | 304           localStorage.setItem(this.BROWSER_AUTODETECTED_STORAGE_KEY, "true"); | 
| 285           return this.selectOption(supportedBrowser); | 305           return this.selectOption(supportedBrowser); | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 316       { | 336       { | 
| 317         var autodetected = document | 337         var autodetected = document | 
| 318                               .getElementById("browser-select-autodetected") | 338                               .getElementById("browser-select-autodetected") | 
| 319                               .innerHTML; | 339                               .innerHTML; | 
| 320         selectedOption += "<span class='muted'>(" + autodetected + ")</span>"; | 340         selectedOption += "<span class='muted'>(" + autodetected + ")</span>"; | 
| 321       } | 341       } | 
| 322 | 342 | 
| 323       this.select | 343       this.select | 
| 324           .querySelector(".custom-select-selected") | 344           .querySelector(".custom-select-selected") | 
| 325           .innerHTML = selectedOption; | 345           .innerHTML = selectedOption; | 
| 326 | 346 | 
| 327       if (!document.querySelector(".platform-" + browser)) | 347       if (document.querySelector(".platform-" + browser)) | 
| 328       { | 348       { | 
| 329         this.handleNoContentForBrowser(browser); | 349         this.noContentMessage.setAttribute("hidden", "true"); | 
| 330       } | 350       } | 
| 331     }; | 351       else | 
| 332 | 352       { | 
| 333     BrowserSelect.prototype.handleNoContentForBrowser = function(browser) | 353         this.noContentMessage.removeAttribute("hidden"); | 
| 334     { | 354       } | 
| 335       var section = document.createElement("section"); | 355     }; | 
| 336       section.classList.add("platform-" + browser); |  | 
| 337       section.innerHTML = document |  | 
| 338                             .getElementById("no-content-for-platform-message") |  | 
| 339                             .innerHTML; |  | 
| 340 |  | 
| 341       document |  | 
| 342         .querySelector(".article-body") |  | 
| 343         .insertAdjacentElement("afterbegin", section); |  | 
| 344     } |  | 
| 345 | 356 | 
| 346     BrowserSelect.prototype._onClickOrKeyDown = function(event) | 357     BrowserSelect.prototype._onClickOrKeyDown = function(event) | 
| 347     { | 358     { | 
| 348       var option = event.target.closest(".custom-select-option"); | 359       var option = event.target.closest(".custom-select-option"); | 
| 349       if (!option) return; | 360       if (!option) return; | 
| 350 | 361 | 
| 351       var IS_ENTER_KEY = event.key == "Enter" || event.keyCode == 13; | 362       var IS_ENTER_KEY = event.key == "Enter" || event.keyCode == 13; | 
| 352       if (event.keyCode && !IS_ENTER_KEY) return; | 363       if (event.keyCode && !IS_ENTER_KEY) return; | 
| 353 | 364 | 
| 354       localStorage.removeItem(this.BROWSER_AUTODETECTED_STORAGE_KEY); | 365       localStorage.removeItem(this.BROWSER_AUTODETECTED_STORAGE_KEY); | 
| 355 | 366 | 
| 356       // Uncheck previously checked option | 367       // Uncheck previously checked option | 
| 357       this.select | 368       this.select | 
| 358           .querySelector("[aria-checked='true']") | 369           .querySelector("[aria-checked='true']") | 
| 359           .setAttribute("aria-checked", "false"); | 370           .setAttribute("aria-checked", "false"); | 
| 360 | 371 | 
| 361       this.selectOption(option.getAttribute("data-value")); | 372       this.selectOption(option.getAttribute("data-value")); | 
| 362 | 373 | 
| 363       this.close(); | 374       this.close(); | 
| 364     }; | 375     }; | 
| 365 | 376 | 
|  | 377     BrowserSelect.prototype._onClickNoContentMessage = function(event) | 
|  | 378     { | 
|  | 379       if (event.target.tagName != "BUTTON") return; | 
|  | 380       this.selectOption(event.target.parentElement.getAttribute("data-value")); | 
|  | 381     }; | 
|  | 382 | 
| 366     var browserSelect = document.getElementById("browser-select"); | 383     var browserSelect = document.getElementById("browser-select"); | 
| 367     if (browserSelect) | 384     if (browserSelect) | 
| 368     { | 385     { | 
| 369       new BrowserSelect(browserSelect); | 386       new BrowserSelect(browserSelect); | 
| 370     } | 387     } | 
| 371 | 388 | 
| 372   }, false); | 389   }, false); | 
| 373 }()); | 390 }()); | 
| 374 //# sourceMappingURL=main.js.map |  | 
| 375 |  | 
| 376 //# sourceMappingURL=main-debug.js.map |  | 
| 377 |  | 
| 378 //# sourceMappingURL=main.js.map |  | 
| LEFT | RIGHT | 
|---|