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

@eps1lon/mui-react-events

v0.1.0

Published

React is a JavaScript library for building user interfaces.

Downloads

7

Readme

react-events

This package is experimental. It is intended for use with the experimental React events API that is not available in open source builds.

Event components do not render a host node. They listen to native browser events dispatched on the host node of their child and transform those events into high-level events for applications.

Focus

The Focus module responds to focus and blur events on the element it wraps. Focus events are dispatched for mouse, pen, touch, and keyboard pointer types.

// Example
const TextField = (props) => (
  <Focus
    onBlur={props.onBlur}
    onFocus={props.onFocus}
  >
    <textarea></textarea>
  </Focus>
);
// Types
type FocusEvent = {
  target: Element,
  type: 'blur' | 'focus' | 'focuschange'
}

disabled: boolean

Disables all Focus events.

onBlur: (e: FocusEvent) => void

Called when the element loses focus.

onFocus: (e: FocusEvent) => void

Called when the element gains focus.

onFocusChange: boolean => void

Called when the element changes hover state (i.e., after onBlur and onFocus).

Hover

The Hover module responds to hover events on the element it wraps. Hover events are only dispatched for mouse pointer types. Hover begins when the pointer enters the element's bounds and ends when the pointer leaves.

// Example
const Link = (props) => (
  const [ hovered, setHovered ] = useState(false);
  return (
    <Hover onHoverChange={setHovered}>
      <a
        {...props}
        href={props.href}
        style={{
          ...props.style,
          textDecoration: hovered ? 'underline': 'none'
        }}
      />
    </Hover>
  );
);
// Types
type HoverEvent = {
  pointerType: 'mouse',
  target: Element,
  type: 'hoverstart' | 'hoverend' | 'hovermove' | 'hoverchange'
}

delayHoverEnd: number

The duration of the delay between when hover ends and when onHoverEnd is called.

delayHoverStart: number

The duration of the delay between when hover starts and when onHoverStart is called.

disabled: boolean

Disables all Hover events.

onHoverChange: boolean => void

Called when the element changes hover state (i.e., after onHoverStart and onHoverEnd).

onHoverEnd: (e: HoverEvent) => void

Called once the element is no longer hovered. It will be cancelled if the pointer leaves the element before the delayHoverStart threshold is exceeded.

onHoverMove: (e: HoverEvent) => void

Called when the pointer moves within the hit bounds of the element. onHoverMove is called immediately and doesn't wait for delayed onHoverStart.

onHoverStart: (e: HoverEvent) => void

Called once the element is hovered. It will not be called if the pointer leaves the element before the delayHoverStart threshold is exceeded. And it will not be called more than once before onHoverEnd is called.

preventDefault: boolean = true

Whether to preventDefault() native events.

Press

The Press module responds to press events on the element it wraps. Press events are dispatched for mouse, pen, touch, and keyboard pointer types. Press events are only dispatched for keyboards when pressing the Enter or Spacebar keys. If neither onPress nor onLongPress are called, this signifies that the press ended outside of the element hit bounds (i.e., the user aborted the press).

// Example
const Button = (props) => (
  const [ pressed, setPressed ] = useState(false);
  return (
    <Press
      onPress={props.onPress}
      onPressChange={setPressed}
      onLongPress={props.onLongPress}
    >
      <div
        {...props}
        role="button"
        tabIndex={0}
        style={
          ...buttonStyles,
          ...(pressed && pressedStyles)
        }}
      />
    </Press>
  );
);
// Types
type PressEvent = {
  pointerType: 'mouse' | 'touch' | 'pen' | 'keyboard',
  target: Element,
  type: 'press' | 'pressstart' | 'pressend' | 'presschange' | 'pressmove' | 'longpress' | 'longpresschange'
}

type PressOffset = {
  top: number,
  right: number,
  bottom: number,
  right: number
};

delayLongPress: number = 500ms

The duration of a press before onLongPress and onLongPressChange are called.

delayPressEnd: number

The duration of the delay between when the press ends and when onPressEnd is called.

delayPressStart: number

The duration of a delay between when the press starts and when onPressStart is called. This delay is cut short (and onPressStart is called) if the press is released before the threshold is exceeded.

disabled: boolean

Disables all Press events.

onLongPress: (e: PressEvent) => void

Called once the element has been pressed for the length of delayLongPress. If the press point moves more than 10px onLongPress is cancelled.

onLongPressChange: boolean => void

Called when the element changes long-press state.

onLongPressShouldCancelPress: () => boolean

Determines whether calling onPress should be cancelled if onLongPress or onLongPressChange have already been called. Default is false.

onPress: (e: PressEvent) => void

Called immediately after a press is released, unless either 1) the press is released outside the hit bounds of the element (accounting for pressRetentionOffset and TouchHitTarget), or 2) the press was a long press, and onLongPress or onLongPressChange props are provided, and onLongPressCancelsPress() is true.

onPressChange: boolean => void

Called when the element changes press state (i.e., after onPressStart and onPressEnd).

onPressEnd: (e: PressEvent) => void

Called once the element is no longer pressed (because it was released, or moved beyond the hit bounds). If the press starts again before the delayPressEnd threshold is exceeded then the delay is reset to prevent onPressEnd being called during a press.

onPressMove: (e: PressEvent) => void

Called when a press moves within the hit bounds of the element. onPressMove is called immediately and doesn't wait for delayed onPressStart. Never called for keyboard-initiated press events.

onPressStart: (e: PressEvent) => void

Called once the element is pressed down. If the press is released before the delayPressStart threshold is exceeded then the delay is cut short and onPressStart is called immediately.

pressRetentionOffset: PressOffset

Defines how far the pointer (while held down) may move outside the bounds of the element before it is deactivated. Once deactivated, the pointer (still held down) can be moved back within the bounds of the element to reactivate it. Ensure you pass in a constant to reduce memory allocations.

preventDefault: boolean = true

Whether to preventDefault() native events. Native behavior is prevented by default. If an anchor is the child of Press, internal and external navigation should be performed in onPress/onLongPress. To rely on native behavior instead, set preventDefault to false, but be aware that native behavior will take place immediately after interaction without respect for delays or long press.