package chrome.browserAction import chrome.browserAction.bindings._ import chrome.events.bindings.Event import chrome.tabs.bindings.Tab import org.scalajs.dom.ImageData import scala.concurrent.{Future, Promise} import scala.scalajs.js import scala.scalajs.js.| object BrowserAction { val onClicked: Event[js.Function1[Tab, _]] = bindings.BrowserAction.onClicked def setTitle(title: String, tabId: js.UndefOr[Int] = js.undefined): Unit = { bindings.BrowserAction.setTitle(TitleDetails(title, tabId)) } def getTitle(tabId: js.UndefOr[Int] = js.undefined): Future[String] = { val promise = Promise[String]() bindings.BrowserAction.getTitle(TabIdDetails(tabId), (result: String) => { promise.success(result) }) promise.future } def setIconImageData(imageData: js.UndefOr[ImageData | js.Dictionary[ImageData]], tabId: js.UndefOr[Int] = js.undefined): Future[Unit] = { setIcon(imageData, js.undefined, tabId) } def setIconPath(pathData: js.UndefOr[String | js.Dictionary[String]], tabId: js.UndefOr[Int] = js.undefined): Future[Unit] = { setIcon(js.undefined, pathData, tabId) } def setIcon(imageData: js.UndefOr[ImageData | js.Dictionary[ImageData]], pathData: js.UndefOr[String | js.Dictionary[String]], tabId: js.UndefOr[Int]): Future[Unit] = { val promise = Promise[Unit]() bindings.BrowserAction.setIcon(IconDetails(imageData, pathData, tabId), () => { promise.success(()) }) promise.future } def setPopup(popup: String, tabId: js.UndefOr[Int] = js.undefined): Unit = { bindings.BrowserAction.setPopup(PopupDetails(popup, tabId)) } def getPopup(tabId: js.UndefOr[Int] = js.undefined): Future[String] = { val promise = Promise[String]() bindings.BrowserAction.getPopup(TabIdDetails(tabId), (result: String) => { promise.success(result) }) promise.future } def setBadgeText(text: String, tabId: js.UndefOr[Int] = js.undefined): Unit = { bindings.BrowserAction.setBadgeText(BadgeTextDetails(text, tabId)) } def getBadgeText(tabId: js.UndefOr[Int] = js.undefined): Future[String] = { val promise = Promise[String]() bindings.BrowserAction.getBadgeText(TabIdDetails(tabId), (result: String) => { promise.success(result) }) promise.future } def setBadgeBackgroundColor(color: String | js.Array[Int]): Unit = { bindings.BrowserAction.setBadgeBackgroundColor(BadgeBackgroundColorDetails(color)) } def getBadgeBackgroundColor(tabId: js.UndefOr[Int] = js.undefined): Future[js.Array[Int]] = { val promise = Promise[js.Array[Int]]() bindings.BrowserAction.getBadgeBackgroundColor(TabIdDetails(tabId), (result: js.Array[Int]) => { promise.success(result) }) promise.future } def enable(tabId: js.UndefOr[Int]): Unit = { bindings.BrowserAction.enable(tabId) } def disable(tabId: js.UndefOr[Int]): Unit = { bindings.BrowserAction.disable(tabId) } }