package outwatchapp import scala.util.Try import colibri.LiftSink import colibri.LiftSource import colibri.ext.monix._ import monix.bio.Task import monix.execution.Scheduler import monix.reactive.Observable import monix.reactive.Observer import org.scalajs.dom.raw.HTMLElement import typings.sweetalert2.mod.SweetAlertOptions import typings.sweetalert2.mod.{default => Swal} import scalajs.js.| package object implicits { // implicit def sinkForMyMonixProSub[A, M] = // new Sink[MonixProSubject[A, M]] {}\ // implicit val monixCreateProSubject = new CreateProSubject[MonixProSubject] { // @inline def from[SI[_]: Sink, SO[_]: Source, I, O]( // sink: SI[I], // source: SO[O] // ): MonixProSubject[I, O] = MonixProSubject.from( // LiftSink[Observer].lift(sink), // LiftSource[Observable].lift(source) // ) // } implicit class Ops[A](val sink: Observer[A]) extends AnyVal { @inline def liftSink[G[_]: LiftSink]: G[A] = LiftSink[G].lift(sink) } implicit class Ops2[A](val source: Observable[A]) extends AnyVal { @inline def liftSource[G[_]: LiftSource](implicit s: Scheduler): G[A] = LiftSource[G].lift(source) } implicit class HTMLElementOps[T <: HTMLElement](private val el: T) extends AnyVal { def asST = el.asInstanceOf[typings.std.HTMLElement] } implicit class SweetAlertOps(private val sw: Swal.type) extends AnyVal { def fireL[T](options: SweetAlertOptions[T, _]) = Task.deferFuture(sw.fire(options).toFuture) } implicit class NullUnionOps[A, B](private val union: A | B) extends AnyVal { @scala.inline def asOption(implicit ev: B =:= scala.Null) = Try( union.asInstanceOf[A] ).toOption } }