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 🙏

© 2026 – Pkg Stats / Ryan Hefner

blue-archive-touch-effect

v0.2.0

Published

Attachable Blue Archive-inspired click FX runtime for the browser.

Readme

blue-archive-touch-effect

Attachable browser runtime for the Blue Archive-inspired click FX shader.

Install

npm install blue-archive-touch-effect

What It Does

  • Attaches to any container element
  • Adds a transparent overlay canvas with pointer-events: none
  • Spawns local click burst FX without taking over the full page
  • Exposes a small runtime API for spawning, config updates, resize, and cleanup

Minimal Usage

import { createClickFx } from 'blue-archive-touch-effect'

const target = document.querySelector('#fx-root')

if (!target) {
  throw new Error('Missing target element')
}

const fx = createClickFx({ target })

target.addEventListener('pointerdown', (event) => {
  fx.spawnAtClient(event.clientX, event.clientY)
})

The target container should usually be position: relative or another non-static layout container. The runtime will attach a full-size overlay canvas inside it.

Auto Binding

If you want the runtime to listen for pointer events itself:

import { createClickFx } from 'blue-archive-touch-effect'

const target = document.querySelector('#fx-root')

if (!target) {
  throw new Error('Missing target element')
}

const fx = createClickFx({
  target,
  autoBindPointer: true,
})

Configuration

You can pass initial config and update it later:

import { createClickFx } from 'blue-archive-touch-effect'

const fx = createClickFx({
  target: document.body,
  config: {
    themeColor: { r: 0.23, g: 0.9, b: 1 },
    fxBlurRadius: 1.85,
    fxBloomIntensity: 1.48,
    angleSpanDeg: 360,
    arcRadius: 0.177,
  },
})

fx.updateConfig({
  themeColor: { r: 1, g: 0.55, b: 0.3 },
  fxScreenMix: 1,
  duration: 0.7,
})

themeColor is the unified visible color for the arc, core disk, and fragment branches. Update it as a full object:

fx.updateConfig({
  themeColor: { r: 0.4, g: 0.8, b: 1 },
})

Partial nested updates like themeColor: { r: 0.5 } are not part of the supported API.

In 0.2.0, themeColor replaces the older arcColorR/G/B public API.

API

  • createClickFx({ target, config, listenTarget, pixelRatioCap, autoBindPointer })
  • spawnAtClient(x, y)
  • spawnAtLocal(x, y)
  • updateConfig(partial)
  • resize()
  • dispose()

Options

  • target: required host element for the overlay canvas
  • listenTarget: optional element or window used for pointer listening
  • config: optional partial runtime config
  • pixelRatioCap: optional device-pixel-ratio cap for the renderer
  • autoBindPointer: when true, the runtime adds its own mousedown listener

Lifecycle Notes

  • Use spawnAtClient() when your coordinates come from DOM pointer events
  • Use spawnAtLocal() when you already have coordinates relative to the target container
  • Call resize() after external layout changes if you are not relying on the built-in observer
  • Call dispose() when removing the host element or tearing down the page/app

Packaging

This package ships browser-ready JavaScript and bundled shader assets. Consumers do not need to configure a GLSL loader.

Published artifacts:

  • dist/index.mjs
  • dist/index.cjs
  • dist/index.d.ts

License

MIT. See LICENSE.