1let ItemListInstance = { 2 instance: null 3}; 4 5(function () { 6 class ItemList { 7 constructor() { 8 this.opt = { 9 container: ".apps-wrapper", 10 token: "TRDIZIN_TOKEN", 11 requestUrl: null, 12 button:null, 13 classes: { 14 item: "item", 15 list: "wrapper" 16 }, 17 template: { 18 item: ` 19 <a href="{link}" target="_blank" style="border-radius: 10px;" class='link bg-hover pointer'> 20 <div class="app-icons"> 21 {html} 22 </div> 23 <span>{title}</span> 24 </a>`, 25 list: ` 26 <div id="menu-container" class='menu-container' data-is-closed="true"> 27 <div class="icons-container" > 28 {child} 29 </div> 30 </div>` 31 } 32 } 33 this.state="true"; 34 this._containerDom = null; 35 } 36 37 init(options){ 38 let _instance = this; 39 setTimeout(function (){ 40 if(document.querySelector(options.container)){ 41 _instance._init(options); 42 }else{ 43 _instance.init(options); 44 } 45 },100); 46 } 47 48 _init(options) { 49 this.opt = Object.assign(this.opt, options); 50 if (!this.opt.requestUrl) { 51 throw "requestURL is required"; 52 } 53 this.opt.template.list = this.opt.template.list.replace("{classes.list}", 54 this.opt.classes.list); 55 const _instance = this; 56 this.request(function (d){ _instance.templateBinder(d,_instance); 57 const container= _instance._containerDom; 58 59 container.show=function (e){ 60 container.setAttribute("data-is-closed","false"); 61 } 62 container.hide=function () { 63 container.setAttribute("data-is-closed", "true"); 64 } 65 container.toggle=function (){ 66 container.setAttribute("data-is-closed",container.getAttribute("data-is-closed")==="false"); 67 } 68 const containerCommand = document.querySelector(_instance.opt.button); 69 window.addEventListener('click', function(e){ 70 if (container.contains(e.target) || containerCommand.contains(e.target)){ 71 } else{ 72 container.hide(); 73 } 74 }); 75 }); 76 } 77 show(){ 78 if(this._containerDom) 79 this._containerDom.show(); 80 } 81 hide(){ 82 if(this._containerDom) 83 this._containerDom.hide(); 84 } 85 toggle(){ 86 if(this._containerDom) 87 this._containerDom.toggle(); 88 return this.isOpen(); 89 } 90 isOpen(){ 91 return this._containerDom.getAttribute("data-is-closed")==='true'; 92 } 93 itemBinder(item) { 94 let result = this.opt.template.item; 95 result = result.replace("{classes.item}", this.opt.classes.item); 96 result = result.replace("{link}", item["url"]); 97 result = result.replace("{icon}", item["icon"]); 98 result = result.replace("{html}", item["html"]); 99 result = result.replace("{title}", item["title"]); 100 result = result.replace("{id}", item["id"]); 101 return result; 102 } 103 templateBinder(data, _instance){ 104 let childString = ""; 105 if (data && data.length > 0) { 106 for (let i = 0; i < data.length; i++) { 107 childString += _instance.itemBinder(data[i]); 108 } 109 110 document.querySelector(_instance.opt.container).innerHTML = 111 _instance.opt.template.list.replace("{child}", childString); 112 }else{ 113 document.querySelector(_instance.opt.container).innerHTML = "<div/>" 114 } 115 _instance._containerDom = document.querySelector(_instance.opt.container).children[0]; 116 } 117 118 119 request(callback) { 120 let match = document.cookie.match( 121 new RegExp('(^| )' + this.opt.token + '=([^;]+)')); 122 if (match) { 123 let xmlHttp = new XMLHttpRequest(); 124 xmlHttp.onreadystatechange = function () { 125 if (xmlHttp.status == 200) { 126 const result = JSON.parse(xmlHttp.responseText); 127 callback(result); 128 } 129 }; 130 xmlHttp.open("GET", this.opt.requestUrl, false); 131 xmlHttp.setRequestHeader("Authorization", "Bearer " + match[2]); 132 xmlHttp.setRequestHeader("Accept-Language",sessionStorage.getItem("activeLanguage")) 133 let _lang=navigator.language || navigator.userLanguage; 134 xmlHttp.setRequestHeader("accept-language", _lang.split('-')[0]); 135 xmlHttp.send(null); 136 } else { 137 console.log('--something went wrong---'); 138 } 139 } 140 } 141 ItemListInstance.instance = new ItemList(); 142})();
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.