npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wasm-windows

v2.0.3

Published

An extensible windowing library for JavaScript and C/WASM

Downloads

7

Readme

wasm-windows

A windowing library for JavaScript and WASM.

Quickstart

First, create a normal HTML file:

<!doctype html>

<html>
  <head>
    <title>WASMWindows Quickstart</title>
  </head>
  <body>
    <script type="module">
      // Our code will go here
    </script>
  </body>
</html>

Notice that there are no <script src="..."> elements or anything. This is because WASMWindows uses ES6 imports. Next, in the module script element, put the following to import the JavaScript version of WASMWindows (the WASM version is not implemented yet):

import {JSWindows} from 'https:cdn.jsdelivr.net/npm/wasm-windows';

This will import it from the JSDelivr CDN. After that line, put the following to create your first window:

let myWnd = new (JSWindows.Window(JSWindows.WindowOpenInstantiator))('Hello', '<h1>Welcome to WASMWindows!</h1>');

This line will need some explaining. JSWindows uses the TypingsJS library for generic classes, so the JSWindows.Window(JSWindows.WindowOpenInstantiator) part is actually quite simple. If you look at the docs for Window, you will see that it takes a type parameter TInst. That is where the JSWindows.WindowOpenInstantiator is going. JSWindows.WindowOpenInstantiator is a WindowInstantiator that uses window.open to open a window. So, basically, what this line does is it creates a window that uses the WindowOpenInstantiator, with title 'Hello' and initial document.body <h1>Welcome to WASMWindows!</h1>.

Showing the window

To show the window, simply use this code:

myWnd.open();

To close the window when it is open:

myWnd.close();

Let's put that into our code.

Putting it all together

This code will create a window and a button that closes it. Don't worry about the use of global-id-properties. That is now an HTML5 standard, and I'm pretty sure that there will never be an API called closeWndBtn.

<!doctype html>
<html>
  <head>
    <title>WASMWindows Tutorial</title>
  </head>
  <body>
    <button id="closeWndBtn">Close Window</button>
    <script>
      import {JSWindows} from 'https:cdn.jsdelivr.net/npm/wasm-windows';
      let myWnd = new (JSWindows.Window(JSWindows.WindowOpenInstantiator))('Hello', '<h1>Welcome to WASMWindows!</h1>');
      myWnd.open();
      closeWndBtn.addEventListener('click', () => {
        myWnd.close();
      });
    </script>
  </body>
</html>

Next steps

You can look at the HTML file that I use for testing, which uses a FileViewer as well.