Skip to content

4.5.0

Compare
Choose a tag to compare
@matthewp matthewp released this 12 Jul 11:41

👻 Haunted 4.5.0 is out 🎉. This is a pretty big release as it introduces some nice new features:

haunted/core

the new haunted/core entry point is ideal for those who are using a templating library other than lit-html, for example lighterhtml. This has been one of the most requested features for Haunted for a long time. Although Haunted has always worked with hyperHTML, lighterhtml, and others, it always included lit-html even if it was unused.

I didn't like the idea of not including support for a templating library out-of-the-box and forcing configuration on everything, so Haunted still works the easy way with lit-html. The new haunted/core is for people who want a little more control. The haunted export is a function that wires together a render function and produces the component function, createContext, and a few other things. Here's a simple example:

import haunted, { useState } from 'haunted/core';
import { html, render } from 'lighterhtml';

const { component } = haunted({
  render(what, where) {
    render(where, () => what);
  }
});

const App = component(() => {
  const [count, setCount] = useState(0);
  return html`Using lighterhtml! Count: ${count}`;
});

Here a codepen using haunted/core with lighterhtml.

useRef

The useRef hook has been added. It's a simple way to create a mutable value. An example usage is like so:

function App() {
  const myRef = useRef(0);
  return html`
    ${myRef.current}
  `;
}

Better docs on importing Haunted

We're revamped the docs that go over all of the ways that Haunted can be imported. We've also simplified things so that there's the haunted.js bundle that is useful from a CDN for things like demo pages, and the haunted and haunted/core entry points for use with bundlers / other tooling. See the new docs for more.