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

@jspsych/plugin-tobii-user-position

v0.2.1

Published

jsPsych plugin for Tobii eye tracker user position guide

Downloads

15

Readme

@jspsych/plugin-tobii-user-position

jsPsych plugin for Tobii eye tracker user position guide. Displays real-time head position feedback to help participants maintain optimal positioning for eye tracking. Useful before calibration to ensure good tracking conditions.

Installation

npm install @jspsych/plugin-tobii-user-position

Compatibility

This plugin requires jsPsych v8.0.0 or later and the @jspsych/extension-tobii extension.

Usage

import TobiiUserPositionPlugin from '@jspsych/plugin-tobii-user-position';

const trial = {
  type: TobiiUserPositionPlugin,
  message: 'Please position yourself so the indicators are green',
  require_good_position: true,
  show_distance_feedback: true,
  show_position_feedback: true,
};

The Tobii extension must be loaded and connected before this plugin runs. See the extension documentation for setup instructions.

Parameters

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | duration | int | null | Duration to show the position guide (ms). Set to null for manual continuation via a button. | | message | string | 'Please position yourself so the indicators are green' | Instructions message displayed to the participant. | | update_interval | int | 100 | How often to poll and update the position display (ms). | | show_distance_feedback | boolean | true | Show distance (Z-axis) feedback text indicating whether the participant is too close, too far, or at the right distance. | | show_position_feedback | boolean | true | Show XY position feedback text indicating whether the participant should adjust left/right/up/down. | | button_text | string | 'Continue' | Text on the continue button (only shown when duration is null). | | require_good_position | boolean | false | When true, the continue button is disabled until the participant is in a good position. Has no effect when duration is set. | | background_color | string | '#f0f0f0' | Background color of the position guide. | | good_color | string | '#28a745' | Color for good position indicators (green). | | fair_color | string | '#ffc107' | Color for fair position indicators (yellow). | | poor_color | string | '#dc3545' | Color for poor position indicators (red). | | button_color | string | '#007bff' | Continue button color. | | button_hover_color | string | '#0056b3' | Continue button hover color. | | font_size | string | '18px' | Font size for feedback text (CSS value). | | position_threshold_good | float | 0.15 | Maximum normalized offset from center (0.5) for the XY position to be rated "good". | | position_threshold_fair | float | 0.25 | Maximum normalized offset from center for the XY position to be rated "fair". Offsets beyond this are rated "poor". | | distance_threshold_good | float | 0.1 | Maximum normalized offset from optimal distance (0.5) for the Z position to be rated "good". | | distance_threshold_fair | float | 0.2 | Maximum normalized offset from optimal distance for the Z position to be rated "fair". Offsets beyond this are rated "poor". |

Position Quality Thresholds

The eye position indicators are color-coded based on how far the participant's eyes are from the center of the tracking box:

| Quality | XY Offset | Z Offset | Color | |---------|-----------|----------|-------| | Good | <= 0.15 | <= 0.1 | Green | | Fair | <= 0.25 | <= 0.2 | Yellow | | Poor | > 0.25 | > 0.2 | Red |

These thresholds can be customized with the position_threshold_* and distance_threshold_* parameters.

Data Generated

In addition to the default data collected by jsPsych plugins, this plugin collects the following data for each trial.

| Name | Type | Description | |------|------|-------------| | average_x | float | Average horizontal eye position during the trial (normalized, 0-1, 0.5 is center). null if no valid samples. | | average_y | float | Average vertical eye position during the trial (normalized, 0-1, 0.5 is center). null if no valid samples. | | average_z | float | Average distance/depth during the trial (normalized, 0-1, 0.5 is optimal). null if no valid samples. | | position_good | boolean | Whether the participant was in a good position at the end of the trial (all axes rated "good"). | | horizontal_status | string | Horizontal position quality at trial end: 'good', 'fair', or 'poor'. | | vertical_status | string | Vertical position quality at trial end: 'good', 'fair', or 'poor'. | | distance_status | string | Distance quality at trial end: 'good', 'fair', or 'poor'. | | rt | int | Response time in ms (duration from trial start to when the participant clicked Continue, or the full duration if timed). |

Examples

Manual Continuation (Recommended Before Calibration)

const trial = {
  type: TobiiUserPositionPlugin,
  message: 'Adjust your position until both eye indicators are green, then click Continue.',
  require_good_position: true,
};

Timed Display

const trial = {
  type: TobiiUserPositionPlugin,
  duration: 10000,
  message: 'Hold still for the position check.',
};

Custom Thresholds

const trial = {
  type: TobiiUserPositionPlugin,
  require_good_position: true,
  position_threshold_good: 0.10,
  position_threshold_fair: 0.20,
  distance_threshold_good: 0.08,
  distance_threshold_fair: 0.15,
};

Position Check Before Each Block

const positionCheck = {
  type: TobiiUserPositionPlugin,
  message: 'Please re-center before the next block.',
  require_good_position: true,
  show_distance_feedback: true,
  show_position_feedback: true,
};

// Insert between experimental blocks
timeline.push(block1);
timeline.push(positionCheck);
timeline.push(block2);
timeline.push(positionCheck);
timeline.push(block3);