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

presumedevice-js

v0.1.1

Published

It's true, you can't detect touch or mouse devices. But you can make assumptions.

Downloads

1

Readme

presumedevice.js

It's true, you can't detect touch or mouse devices. But you can make assumptions.

About

This is a tiny* JavaScript utility that tries to presume whatever the user is interacting with a touch and/or a mouse device.

By now, we all know that we can't (still) truly detect touch devices. Why make assumptions, then? As designers, most of us love to fine tune little details of our work, this utility can help us with those non-critical but equally-important UI improvements.

*: ~480B when compressed and gzipped.

Quick Demo

https://pinoceniccola.github.io/presumedevice.js/

Usage

Install & require via npm:

npm i presumedevice-js
...
require('presumedevice-js');

Or include the script the old-fashioned way:

<script> src="https://unpkg.com/presumedevice-js/presumedevice.min.js"></script</>

The utility does two simple things:

  1. Adds two CSS classes to the HTML element:
  • presume-touch OR presume-no-touch AND
  • presume-mouse OR presume-no-mouse
  1. Fires a Custom Event that you can listen with:
window.addEventListener('onPresumeDevice', function(e){
    console.log(e.detail); // -> {presumeTouch : bool, presumeMouse: bool}
});

Use responsibly + Caveats

You should always design with both touch and mouse in mind. Also, always remember that Touch != Mobile Device, there are many different scenarios and the user can have both touch and a mouse.

Please, also consider that:

  • You can't always presume everything on runtime, since this library waits for the very first user action. This means probabily a few milliseconds (mouse devices) or as long as users first touch their screens.
  • Users with both mouse and touch capabilities (think laptops with touch screens) can switch anytime between mouse or touch. This library makes assumptions only on the very first action taken by the user.
  • According this table, some third-party browsers for Android fire mouse events before touch events and this could lead to wrong assumptions and side effects.