///|
#cfg(target="js")
#external
pub type Clipboard

// TODO: support ClipboardItem
//
// ///|
// pub extern type ClipboardItem

// ///|
// pub extern "js" fn Clipboard::write(
//   self : Clipboard,
//   data : Array[ClipboardItem]
// ) =
//   #| (self,data) => self.write(data)

// ///|
// pub extern "js" fn Clipboard::read(self : Clipboard) -> @js.Promise =
//   #| (self) => self.read()

///|
#cfg(target="js")
pub extern "js" fn Clipboard::write_text(
  self : Clipboard,
  text : String,
) -> @js.Promise =
  #| (self, text) => {
  #|   const writeText = self && self.writeText
  #|   if (typeof writeText === 'function') {
  #|     return writeText.call(self, text)
  #|   }
  #|   return Promise.reject(
  #|     new Error(
  #|       "Clipboard.writeText is unavailable (requires browser support and secure context)."
  #|     )
  #|   )
  #| }

///|
#cfg(target="js")
pub extern "js" fn Clipboard::read_text(self : Clipboard) -> @js.Promise =
  #| (self) => {
  #|   const readText = self && self.readText
  #|   if (typeof readText === 'function') {
  #|     return readText.call(self)
  #|   }
  #|   return Promise.reject(
  #|     new Error(
  #|       "Clipboard.readText is unavailable (requires browser support and secure context)."
  #|     )
  #|   )
  #| }