0.1.2 • Published 5 years ago

@zpnester/bs-pwa v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

bs-pwa

Various browser APIs for BuckleScript

Install

npm i @zpnester/bs-filereader@^0.3.0
npm i @zpnester/bs-pwa

bsconfig.json

"bs-dependencies": [
  "@zpnester/bs-pwa"
]
  • Notification
  • ServiceWorkerRegistration
  • HTMLAudioElement
  • HTMLVideoElement
  • MediaStream
  • MediaStreamTrack
  • Client
  • WindowClient
  • ServiceWorkerGlobalScope
  • DedicatedWorkerGlobalScope
  • PushManager
  • RTCPeerConnection
  • RTCDataChannel
  • TextDecoder
  • Worker

Examples

Video element with ReasonReact 7

open React;
open PWA;
open Belt;

module App = {
  [@react.component]
  let make = () => {
    let videoRef = useRef(Js.Nullable.undefined);

    let onPlayClick = _ => {
      open HTMLVideoElement;

      let video =
        videoRef
        ->Ref.current
        ->Js.Nullable.toOption
        ->Option.flatMap(asVideoElement)
        ->Option.getExn;
      video->play |> ignore;
    };

    let onPauseClick = _ => {
      open HTMLVideoElement;

      let video =
        videoRef
        ->Ref.current
        ->Js.Nullable.toOption
        ->Option.flatMap(asVideoElement)
        ->Option.getExn;
      video->pause;
    };

    <>
      <video
        ref={videoRef->ReactDOMRe.Ref.domRef}
        src="https://www.w3schools.com/html/mov_bbb.mp4"
      />
      <br />
      <button onClick=onPlayClick> {string("Play")} </button>
      <button onClick=onPauseClick> {string("Pause")} </button>
    </>;
  };
};

ReactDOMRe.renderToElementWithId(<App />, "app");

Worker

From Window

open PWA;
open Worker;

let worker = Worker.make("doWork.js");
worker->addEventListener(message, e =>
  MessageEvent.(
    switch (e->data->Js.Json.decodeString) {
    | None => ()
    | Some(s) => Js.log("Worker said: " ++ s)
    }
  )
);
worker->postMessage("Hello World");

From Worker

open PWA;
open WorkerPrelude;
open DedicatedWorkerGlobalScope;

self_->addEventListener(message, e =>
  PWA_MessageEvent.(self_->postMessage(e->data))
);
0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.19

5 years ago

0.0.18

5 years ago

0.0.17

5 years ago

0.0.16

5 years ago

0.0.16-beta.0

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago

0.0.0

5 years ago