From f0a93ebf474c79c758d9beecd277df6ec82ff9eb Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Fri, 20 Apr 2018 01:06:32 -0500 Subject: [PATCH] New version plus look. --- bin/amo/tab_search-1.1.5-an+fx.xpi | Bin 0 -> 29549 bytes src/backgrounds/bg1.jpg | Bin 0 -> 6032 bytes src/css/dragula.min.css | 1 + src/css/tabsSearch.css | 106 +++++++++++++++++++---------- src/icons/tab.png | Bin 0 -> 1989 bytes src/icons/x.png | Bin 0 -> 1110 bytes src/manifest.json | 24 ++++--- src/pages/tabsSearch.html | 20 ++++-- src/scripts/dragContainersSetup.js | 27 ++++++++ src/scripts/eventListeners.js | 30 ++++++++ src/scripts/generateView.js | 53 +++++++++++++++ src/scripts/libs/dragula.min.js | 1 + src/scripts/searchTabs.js | 38 +++++++++++ src/scripts/tabsSearch.js | 81 ---------------------- 14 files changed, 250 insertions(+), 131 deletions(-) create mode 100644 bin/amo/tab_search-1.1.5-an+fx.xpi create mode 100644 src/backgrounds/bg1.jpg create mode 100644 src/css/dragula.min.css create mode 100644 src/icons/tab.png create mode 100644 src/icons/x.png create mode 100644 src/scripts/dragContainersSetup.js create mode 100644 src/scripts/eventListeners.js create mode 100644 src/scripts/generateView.js create mode 100644 src/scripts/libs/dragula.min.js create mode 100644 src/scripts/searchTabs.js delete mode 100644 src/scripts/tabsSearch.js diff --git a/bin/amo/tab_search-1.1.5-an+fx.xpi b/bin/amo/tab_search-1.1.5-an+fx.xpi new file mode 100644 index 0000000000000000000000000000000000000000..50f5cc68b91fa59c5d319e28c063cc999ef1f782 GIT binary patch literal 29549 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 literal 0 HcmV?d00001 diff --git a/src/backgrounds/bg1.jpg b/src/backgrounds/bg1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c5e9fe68587e46fc806b030b6b2f1ba45b5ff37 GIT binary patch literal 6032 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 CLS=3M literal 0 HcmV?d00001 diff --git a/src/css/dragula.min.css b/src/css/dragula.min.css new file mode 100644 index 0000000..cdcb2bc --- /dev/null +++ b/src/css/dragula.min.css @@ -0,0 +1 @@ +.gu-mirror{position:fixed!important;margin:0!important;z-index:9999!important;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.gu-hide{display:none!important}.gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.gu-transit{opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20)} \ No newline at end of file diff --git a/src/css/tabsSearch.css b/src/css/tabsSearch.css index 6ff47a9..60eee58 100644 --- a/src/css/tabsSearch.css +++ b/src/css/tabsSearch.css @@ -1,51 +1,87 @@ -body { - background: rgb(255,255,255); - width: 18em; +html, body { overflow-x: hidden; - min-height: 2.5em; } -#listZone { padding-top: 2.5em; } +#masterContainer, div[id*="listZone"], .block { + display: block; + padding: 1em; +} -#toFind { +#masterContainer { + background-image: url("../backgrounds/bg1.jpg"); + background-repeat: repeat; + width: 710px; + height: auto; +} + +#controls { position: fixed; - top: 0.5em; - z-index: 100; - width: 90%; - background: rgb(255,255,255); - color: rgb(0,0,0); - border-style: solid; - border-color: rgb(0, 0, 0); - text-align: center; - padding: 0.5em; + top: 0; + background: rgba(255,255,255, 1); + margin-left: 1.5em; } -.box:hover { background-color: #3EA724; } -.box { - display: block; - cursor: pointer; - background-color: #444444; - border-radius: 5px; - padding: 20px; - width: 120px; - height: 120px; - overflow: hidden; - margin: 0 auto; +#searchBar, #errorZone { + width: 630px; + background: rgb(255,255,255); + color: rgba(9,107,120, 0.85); + border-color: rgba(9,107,120, 0.85); text-align: center; } +#searchBar { + border-style: solid; + padding: 0.5em; + font-size: 2em; +} + +#errorZone { + color: red; + border-style: dotted; + margin-top: 2em; + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +#listZone { + background-color: rgba(9,107,120, 0.85); + float: left; + width: 630px; + height: auto; + margin: 1.5em; +} + +.block { + display: block; + background-color: rgba(158, 181, 219, 0.53); + color: rgba(255,255,255,1); + float: left; + width: 125px; + height: 125px; + clear: right; + overflow: hidden; + margin: 1.5em; +} +.block:hover { + cursor: pointer; + background-color: rgba(255, 255, 255, 0.8); + color: rgba(64,64,64, 0.84); +} + .thumbImg { + clear: left; width: 64px; height: 64px; - margin-left: auto; - margin-right: auto; } -.title { - float: left; - clear: left; - height: 55px; - max-width: 120px; - overflow: hidden; - color: #ffffff; +.closeImg { + background-color: rgba(79, 186, 70, 1); + width: 16px; + height: 16px; + float: right; + padding: .5em; +} + +.closeImg:hover { + background-color: rgba(255, 0, 0, 1); } diff --git a/src/icons/tab.png b/src/icons/tab.png new file mode 100644 index 0000000000000000000000000000000000000000..353a4ed6f729877573ebd0749c1977ac828ffd18 GIT binary patch literal 1989 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 HDWM4fg!=4x literal 0 HcmV?d00001 diff --git a/src/manifest.json b/src/manifest.json index 45d231a..cb9873d 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,12 +1,13 @@ { - "manifest_version": 2, - "name": "Tab Search", - "version": "1.1.0", - "description": "Search Tabs and switch to them quickly.", + "manifest_version": 2, + "name": "Tab Search", + "version": "1.1.5", + "description": "Search Tabs and switch to them quickly.", "applications": { "gecko": { - "id": "tabsSearch@itdominator.com" + "id": "tabsSearch@itdominator.com", + "strict_min_version": "55.0" } }, @@ -15,15 +16,18 @@ "96": "icons/tabsSearch_96.png" }, + "web_accessible_resources": [ + "icons/*.png", + "backgrounds/*.jpg" + ], + "permissions": [ - "activeTab", "tabs" ], "browser_action": { - "default_icon": "icons/tabsSearch_48.png", - "default_title": "Tab Search", - "default_popup": "pages/tabsSearch.html" + "default_icon": "icons/tabsSearch_48.png", + "default_title": "Tab Search", + "default_popup": "pages/tabsSearch.html" } - } diff --git a/src/pages/tabsSearch.html b/src/pages/tabsSearch.html index 26c0d57..21e2185 100755 --- a/src/pages/tabsSearch.html +++ b/src/pages/tabsSearch.html @@ -2,14 +2,24 @@ + - + - -
- +
+ +
- +
+
+ + + + + + + + diff --git a/src/scripts/dragContainersSetup.js b/src/scripts/dragContainersSetup.js new file mode 100644 index 0000000..513a435 --- /dev/null +++ b/src/scripts/dragContainersSetup.js @@ -0,0 +1,27 @@ +var count = 2; toMoveID = 0, newIndex = 0;; +var insert = ""; + +var drake = dragula() + .on('drag', function (el) { + toMoveID = parseInt(el.getAttribute("tabID")); + el.className = el.className.replace('ex-moved', ''); + }).on('drop', function (el, container) { + var subCont = document.getElementById("listZone"); + var size = subCont.children.length; + + for (var i = 0; i < size; i++) { + if (subCont.children[i].getAttribute("tabID") == toMoveID) { + newIndex = i; + } + } + + browser.tabs.move(toMoveID, {index: newIndex}).then(); + el.className += ' ex-moved'; + }).on('over', function (el, container) { + container.className += ' ex-over'; + }).on('out', function (el, container) { + container.className = container.className.replace('ex-over', ''); +}); + +// Connect to pre created containers +drake.containers.push(document.querySelector('#listZone')); diff --git a/src/scripts/eventListeners.js b/src/scripts/eventListeners.js new file mode 100644 index 0000000..0d27020 --- /dev/null +++ b/src/scripts/eventListeners.js @@ -0,0 +1,30 @@ +// Set click events +document.addEventListener("click", (e) => { + var target = e.target; + var targetID = target.id; + var parentElm = target.parentElement; + + if (targetID == "closeBttn") { + var id = parseInt(parentElm.getAttribute("tabID")); + + browser.tabs.remove(id).then(function () { + console.log("Removed tab..." + id) + }, onError); + + parentElm.parentElement.removeChild(parentElm); + } else if (targetID == "iconElm" || targetID == "faveIcon") { + if (targetID == "faveIcon") { + var id = parseInt(parentElm.parentElement.getAttribute("tabID")); + } else { + var id = parseInt(target.getAttribute("tabID")); + } + + browser.tabs.update(id, { active: true }).then(function () { + console.log("Selected tab..." + id) + }, onError); + } +}); + +document.getElementById("searchBar").onkeypress = function(e){ + searchTabs(); +} diff --git a/src/scripts/generateView.js b/src/scripts/generateView.js new file mode 100644 index 0000000..f3f965b --- /dev/null +++ b/src/scripts/generateView.js @@ -0,0 +1,53 @@ +const tabQuery = browser.tabs.query({currentWindow: true}); +const searchBar = document.getElementById("searchBar"); +const errHandler = document.getElementById("errorZone"); +const listZone = document.getElementById("listZone"); +const notFoundText = document.createTextNode("Search not found..."); + + +function logTabs(tabs) { + // tab.url requires the `tabs` permission + for (let tab of tabs) { + createContainer(tab); + } + // Set window position to bottom of list + window.scrollTo(0,document.body.scrollHeight); +} + +function createContainer(tab) { + var id = tab.id; + var spanTag = document.createElement("SPAN"); + var iconText = document.createTextNode(tab.title); + var centerTag = document.createElement("CENTER"); + var closeImgTag = document.createElement("IMG"); + var icoImgTag = document.createElement("IMG"); + + spanTag.title = tab.title; + spanTag.id = "iconElm"; + spanTag.className = "block"; + spanTag.setAttribute("tabID",tab.id); + + closeImgTag.id = "closeBttn"; + closeImgTag.className = "closeImg"; + closeImgTag.src = "../icons/x.png"; + + icoImgTag.id = "faveIcon"; + icoImgTag.className = "thumbImg"; + if (tab.favIconUrl == null || tab.favIconUrl == "") { + icoImgTag.src = "../icons/tab.png"; + } else { + icoImgTag.src = tab.favIconUrl; + } + + centerTag.appendChild(icoImgTag); + spanTag.appendChild(closeImgTag); + spanTag.appendChild(centerTag); + spanTag.appendChild(iconText); + listZone.appendChild(spanTag); +} + + +function onError(error) { console.log(`Error: ${error}`); } +function getAllTabs() { tabQuery.then(logTabs, onError); } + +getAllTabs(); diff --git a/src/scripts/libs/dragula.min.js b/src/scripts/libs/dragula.min.js new file mode 100644 index 0000000..41e2c18 --- /dev/null +++ b/src/scripts/libs/dragula.min.js @@ -0,0 +1 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.dragula=e()}}(function(){return function e(n,t,r){function o(u,c){if(!t[u]){if(!n[u]){var a="function"==typeof require&&require;if(!c&&a)return a(u,!0);if(i)return i(u,!0);var f=new Error("Cannot find module '"+u+"'");throw f.code="MODULE_NOT_FOUND",f}var l=t[u]={exports:{}};n[u][0].call(l.exports,function(e){var t=n[u][1][e];return o(t?t:e)},l,l.exports,e,n,t,r)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u0?e:fe.revertOnSpill,t=ie||W,r=v(t),o=k(r);o===!1&&n&&(ie?r&&r.removeChild(ie):Q.insertBefore(t,re)),o||n?le.emit("cancel",t,Q,Q):le.emit("drop",t,r,Q,oe),j()}}function j(){var e=ie||W;I(),z(),e&&E.rm(e,"gu-transit"),ue&&clearTimeout(ue),le.dragging=!1,ae&&le.emit("out",e,ae,Q),le.emit("dragend",e),Q=W=ie=re=oe=ue=ae=null}function k(e,n){var t;return t=void 0!==n?n:J?oe:g(ie||W),e===Q&&t===re}function q(e,n,r){function o(){var o=t(i);if(o===!1)return!1;var u=H(i,e),c=V(i,u,n,r),a=k(i,c);return a?!0:fe.accepts(W,i,Q,c)}for(var i=e;i&&!o();)i=v(i);return i}function U(e){function n(e){le.emit(e,f,ae,Q)}function t(){s&&n("over")}function r(){ae&&n("out")}if(J){e.preventDefault();var o=y("clientX",e),i=y("clientY",e),u=o-Z,c=i-ee;J.style.left=u+"px",J.style.top=c+"px";var f=ie||W,l=a(J,o,i),d=q(l,o,i),s=null!==d&&d!==ae;(s||null===d)&&(r(),ae=d,t());var p=v(f);if(d===Q&&ie&&!fe.copySortSource)return void(p&&p.removeChild(f));var m,h=H(d,l);if(null!==h)m=V(d,h,o,i);else{if(fe.revertOnSpill!==!0||ie)return void(ie&&p&&p.removeChild(f));m=re,d=Q}(null===m&&s||m!==f&&m!==g(f))&&(oe=m,d.insertBefore(f,m),le.emit("shadow",f,d,Q))}}function _(e){E.rm(e,"gu-hide")}function F(e){le.dragging&&E.add(e,"gu-hide")}function K(){if(!J){var e=W.getBoundingClientRect();J=W.cloneNode(!0),J.style.width=d(e)+"px",J.style.height=s(e)+"px",E.rm(J,"gu-transit"),E.add(J,"gu-mirror"),fe.mirrorContainer.appendChild(J),o(S,"add","mousemove",U),E.add(fe.mirrorContainer,"gu-unselectable"),le.emit("cloned",J,W,"mirror")}}function z(){J&&(E.rm(fe.mirrorContainer,"gu-unselectable"),o(S,"remove","mousemove",U),v(J).removeChild(J),J=null)}function H(e,n){for(var t=n;t!==e&&v(t)!==e;)t=v(t);return t===S?null:t}function V(e,n,t,r){function o(){var n,o,i,u=e.children.length;for(n=0;u>n;n++){if(o=e.children[n],i=o.getBoundingClientRect(),c&&i.left+i.width/2>t)return o;if(!c&&i.top+i.height/2>r)return o}return null}function i(){var e=n.getBoundingClientRect();return u(c?t>e.left+d(e)/2:r>e.top+s(e)/2)}function u(e){return e?g(n):n}var c="horizontal"===fe.direction,a=n!==e?i():o();return a}function $(e,n){return"boolean"==typeof fe.copy?fe.copy:fe.copy(e,n)}var G=arguments.length;1===G&&Array.isArray(e)===!1&&(n=e,e=[]);var J,Q,W,Z,ee,ne,te,re,oe,ie,ue,ce,ae=null,fe=n||{};void 0===fe.moves&&(fe.moves=l),void 0===fe.accepts&&(fe.accepts=l),void 0===fe.invalid&&(fe.invalid=P),void 0===fe.containers&&(fe.containers=e||[]),void 0===fe.isContainer&&(fe.isContainer=f),void 0===fe.copy&&(fe.copy=!1),void 0===fe.copySortSource&&(fe.copySortSource=!1),void 0===fe.revertOnSpill&&(fe.revertOnSpill=!1),void 0===fe.removeOnSpill&&(fe.removeOnSpill=!1),void 0===fe.direction&&(fe.direction="vertical"),void 0===fe.ignoreInputTextSelection&&(fe.ignoreInputTextSelection=!0),void 0===fe.mirrorContainer&&(fe.mirrorContainer=x.body);var le=b({containers:fe.containers,start:Y,end:D,cancel:A,remove:R,destroy:h,canMove:X,dragging:!1});return fe.removeOnSpill===!0&&le.on("over",_).on("out",F),r(),le}function o(e,n,r,o){var i={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},u={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},c={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};t.navigator.pointerEnabled?w[n](e,u[r],o):t.navigator.msPointerEnabled?w[n](e,c[r],o):(w[n](e,i[r],o),w[n](e,r,o))}function i(e){if(void 0!==e.touches)return e.touches.length;if(void 0!==e.which&&0!==e.which)return e.which;if(void 0!==e.buttons)return e.buttons;var n=e.button;return void 0!==n?1&n?1:2&n?3:4&n?2:0:void 0}function u(e){var n=e.getBoundingClientRect();return{left:n.left+c("scrollLeft","pageXOffset"),top:n.top+c("scrollTop","pageYOffset")}}function c(e,n){return"undefined"!=typeof t[n]?t[n]:S.clientHeight?S[e]:x.body[e]}function a(e,n,t){var r,o=e||{},i=o.className;return o.className+=" gu-hide",r=x.elementFromPoint(n,t),o.className=i,r}function f(){return!1}function l(){return!0}function d(e){return e.width||e.right-e.left}function s(e){return e.height||e.bottom-e.top}function v(e){return e.parentNode===x?null:e.parentNode}function p(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName||"SELECT"===e.tagName||m(e)}function m(e){return e?"false"===e.contentEditable?!1:"true"===e.contentEditable?!0:m(v(e)):!1}function g(e){function n(){var n=e;do n=n.nextSibling;while(n&&1!==n.nodeType);return n}return e.nextElementSibling||n()}function h(e){return e.targetTouches&&e.targetTouches.length?e.targetTouches[0]:e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e}function y(e,n){var t=h(n),r={pageX:"clientX",pageY:"clientY"};return e in r&&!(e in t)&&r[e]in t&&(e=r[e]),t[e]}var b=e("contra/emitter"),w=e("crossvent"),E=e("./classes"),x=document,S=x.documentElement;n.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./classes":1,"contra/emitter":5,crossvent:6}],3:[function(e,n,t){n.exports=function(e,n){return Array.prototype.slice.call(e,n)}},{}],4:[function(e,n,t){"use strict";var r=e("ticky");n.exports=function(e,n,t){e&&r(function(){e.apply(t||null,n||[])})}},{ticky:9}],5:[function(e,n,t){"use strict";var r=e("atoa"),o=e("./debounce");n.exports=function(e,n){var t=n||{},i={};return void 0===e&&(e={}),e.on=function(n,t){return i[n]?i[n].push(t):i[n]=[t],e},e.once=function(n,t){return t._once=!0,e.on(n,t),e},e.off=function(n,t){var r=arguments.length;if(1===r)delete i[n];else if(0===r)i={};else{var o=i[n];if(!o)return e;o.splice(o.indexOf(t),1)}return e},e.emit=function(){var n=r(arguments);return e.emitterSnapshot(n.shift()).apply(this,n)},e.emitterSnapshot=function(n){var u=(i[n]||[]).slice(0);return function(){var i=r(arguments),c=this||e;if("error"===n&&t["throws"]!==!1&&!u.length)throw 1===i.length?i[0]:i;return u.forEach(function(r){t.async?o(r,i,c):r.apply(c,i),r._once&&e.off(n,r)}),e}},e}},{"./debounce":4,atoa:3}],6:[function(e,n,t){(function(t){"use strict";function r(e,n,t,r){return e.addEventListener(n,t,r)}function o(e,n,t){return e.attachEvent("on"+n,f(e,n,t))}function i(e,n,t,r){return e.removeEventListener(n,t,r)}function u(e,n,t){var r=l(e,n,t);return r?e.detachEvent("on"+n,r):void 0}function c(e,n,t){function r(){var e;return p.createEvent?(e=p.createEvent("Event"),e.initEvent(n,!0,!0)):p.createEventObject&&(e=p.createEventObject()),e}function o(){return new s(n,{detail:t})}var i=-1===v.indexOf(n)?o():r();e.dispatchEvent?e.dispatchEvent(i):e.fireEvent("on"+n,i)}function a(e,n,r){return function(n){var o=n||t.event;o.target=o.target||o.srcElement,o.preventDefault=o.preventDefault||function(){o.returnValue=!1},o.stopPropagation=o.stopPropagation||function(){o.cancelBubble=!0},o.which=o.which||o.keyCode,r.call(e,o)}}function f(e,n,t){var r=l(e,n,t)||a(e,n,t);return h.push({wrapper:r,element:e,type:n,fn:t}),r}function l(e,n,t){var r=d(e,n,t);if(r){var o=h[r].wrapper;return h.splice(r,1),o}}function d(e,n,t){var r,o;for(r=0;r 1) { + for (let sel of selection) { + createContainer(sel) + } + errHandler.style.display = "none"; + clearNodes(errHandler); + } else { + if (selection[0] != undefined) { + errHandler.style.display = "none"; + clearNodes(errHandler); + loadSelTab(selection[0].id); + } else { + errHandler.style.display = "block"; + errHandler.appendChild(notFoundText); + } + } + } else { logTabs(tabs); } +} + +function clearNodes(targetNode) { + while (targetNode.firstChild) { + targetNode.removeChild(targetNode.firstChild); + } +} + +function loadSelTab(id) { browser.tabs.update(id, { active: true }); } +function searchTabs() { tabQuery.then(findTabs, onError); } diff --git a/src/scripts/tabsSearch.js b/src/scripts/tabsSearch.js deleted file mode 100644 index 91f11b2..0000000 --- a/src/scripts/tabsSearch.js +++ /dev/null @@ -1,81 +0,0 @@ -const toFind = document.getElementById("toFind"); -const tabQuery = browser.tabs.query({currentWindow: true}); -const errHandler = document.getElementById("errorZone"); -const listZone = document.getElementById("listZone"); -const notFoundText = document.createTextNode("Search not found..."); - -document.getElementById("toFind").onkeypress = function(e){ - searchTabs(); -} - -document.addEventListener("click", (e) => { - if (e.target.id != "toFind" && e.target.id != "listZone" ) { - if (e.target.tagName == "IMG") { - var parent = e.target.parentNode; - loadSelTab(parseInt(parent.id)); - } else { - loadSelTab(parseInt(e.target.id)); - } - } -}); - -function logTabs(tabs) { - var selection = []; - - clearNodes(listZone); - if (toFind.value != "") { - for (let tab of tabs) { - var title = tab.title; - if (title.toLowerCase().includes(toFind.value.toLowerCase())) { - selection.push(tab); - } - } - if (selection.length > 1) { - for (let sel of selection) { - icon = document.createElement("DIV"); - thumbnail = document.createElement("IMG"); - title = document.createElement("P"); - lineBreak = document.createElement("BR"); - titleText = document.createTextNode(sel.title); - - icon.id = sel.id; - icon.className = "box"; - thumbnail.className = "thumbImg"; - thumbnail.src = sel.favIconUrl; - title.className = "title"; - - icon.appendChild(thumbnail); - icon.appendChild(title); - title.appendChild(titleText); - listZone.appendChild(icon); - listZone.appendChild(lineBreak); - } - errHandler.style.display = "none"; - clearNodes(errHandler); - } else { - if (selection[0] != undefined) { - errHandler.style.display = "none"; - clearNodes(errHandler); - loadSelTab(selection[0].id); - } else { - errHandler.style.display = "block"; - errHandler.appendChild(notFoundText); - } - } - } -} - -function loadSelTab(id) { - browser.tabs.update(id, { - active: true - }); -} - -function clearNodes(targetNode) { - while (targetNode.firstChild) { - targetNode.removeChild(targetNode.firstChild); - } -} - -function searchTabs() { tabQuery.then(logTabs, onError); } -function onError(error) { console.log(`Error: ${error}`); }