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

stereo-convergence

v0.5.2

Published

simple js stereo viewer

Downloads

5

Readme

Stereo Convergence example

Stereo Convergence

npm GitHub license David

2D javascript stereoscopic viewer.

Installation

npm

npm install --save stereo-convergence

Usage

Convergence requires a container element with two child elements for each eye, each with some sort of unique identifier.

Basic

<div data-stereo-player data-stereo-min="-0.8" data-stereo-max="1.6" data-stereo-clip="true">
	<img data-stereo-eye="left" src="../../image-left" />
	<img data-stereo-eye="right" src="../../image-right" />
</div>

...

<link href="../path/to/stereo-convergence/stereo-convergence.min.css" rel="stylesheet">
<script src="../path/to/stereo-convergence/stereo-convergence.min.js"></script>

<script>
	// select StereoConvergence containers
	var playerEl = document.querySelector('[data-stereo-player]')

	// store instance in variable for further manipulation
	var stereoPlayer = new StereoConvergence({player: playerEl})

	// initialize instance
	stereoPlayer.init()

</script>

But this may be an oversimplified example. If you have more than one player, you need to initialize for each element. You may also want to manage configuration in javascript. To do this, pass an options object:

Advanced

<script>
let globalOptions = {
	left: '.stereo-convergence__eye--left',
	right: '.stereo-convergence__eye--right',
	clip: false
}

let playerEls = document.querySelectorAll('.stereo-convergence')
let instances = []

// NodeList → Array & loop through items
[...playerEls].map((el, i) => {

	let localOptions = {
		// you can hypothetically fetch options dynamically
		player: el,
		min: data.players[i].min,
		max: data.players[i].max
	}

	// A. use the spread operator (...) to dump the two options objects into one object argument for StereoConvergence
	// B. store each instance in an array for further manipulation
	instances[i] = new StereoConvergence({...localOptions, ...globalOptions})
	instances[i].init()
})
</script>

Properties

player

Object: DOM element | Required

Valueless attribute denotes container element to base image positioning from.

left

right

String: CSS selector

left Default: '[data-stereo-eye="left"]'

right Default: '[data-stereo-eye="right"]'

Two properties, left and right, denote a selector to query via querySelector within the player. There should only be two eyes.

left: '[data-stereo-eye="left"]'
right: '[data-stereo-eye="right"]'

min

Number: Float

Default: -1

Property adjusts the minimum divergence as a percentage of the image width.

max

Number: Float

Default: 1

Property adjusts the maximum divergence as a percentage of the image width.

clip

Boolean

Default: true

Extends the images by the maximum distance the images can shift from center during interaction (ie, the largest absolute value between min and max), removing gaps from the edges of the stereo-player during interaction.