You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.7 KiB
53 lines
1.7 KiB
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
|
|
}
|
|
}
|