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

tutorjs

v1.3.1

Published

Interactive step-by-step tutorials with elements highlighting for your website, made with SVG

Downloads

4

Readme

TutorJS

Interactive step-by-step tutorials with elements highlighting for your website, made with SVG.

Demo & examples

Browser compatibility

  • IE 9+
  • All other popular browsers

Dependences

  • None

License

You can use Bower or NPM for installation:

npm install tutorjs
yarn add tutorjs
bower install tutorjs

Usage

Include the script in the <head> of your document:

<script type="text/javascript" src="js/tutor.min.js"></script>

Place code in the <body> of your document:

<svg
  id="tutorJS-svg"
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  style="position: fixed; z-index: 100000; width:100%; height: 100%; cursor: default; top: 0; left: 0; display: none"
>
  ...
</svg>

Note: You can change svg styles as you like!

And just start your tutorial:

tutorJS.start(
  [
    {
      element: 'someId',
      caption: 'This is it!',
    },
    {
      element: 'anotherId',
      position: 'top',
    },
  ],
  {
    auto: 4000,
    time: 400,
  }
);

Api

start

The main method that starts your tutorial.

tutorJS.start(elements, options);

Note: You can start the new tutorial not even quitting the previous!

elements

An array of objects or just an object with steps data for your tutorial.

[
  {
    element: 'someId',
    captions: 'My element',
  },
  {
    element: 'anotherId',
    position: 'top',
    onActive: function () {},
  },
];

Type: array of objects / object Required: yes

options

An object with options for this tutorial instance.

{
  auto: 1000,
  onQuit: function(){},
  showHint: false
}

Type: object Required: no

element.element

An element to highlight. Can be the id or DOM object or coordinates object ({top: <>, left: <>, width: <>, height: <>} in px).

element: 'someId'
// or
element: {top: 100, left: 100, width: 50, height: 50}

Type: string / DOM obj / coordianates Required: yes

element.caption

Text that will be displayed on the hint when the element is highlighted

caption: 'This is some super button!';

Type: string Default: null Required: no

element.position

Position of the hint related to the element. Can be left, top, right or bottom.

position: 'right';

Type: string Default: bottom Required: no

element.onActive

Function that would be called when this element would be highlighted.

onActive: function(element, step){ console.log('This is it!', element) }

Type: function Default: null Required: no

options.auto

Automatically switches steps (autoplay). Just pass delay for viewing one step (ms). Pass 0 for no autoplaying.

auto: 1000;

Type: number Default: 0 Required: no

options.onQuit

Function that is called on quitting active tutorial.

onQuit: function(instance){ console.log('Tutor has ended!'); }

Type: function Default: null Required: no

options.bgQuit

Quit this tutorial on the background dark layout click or not.

bgQuit: false;

Type: boolen Default: true Required: no

options.showNext

Show the Next button or not.

showNext: false;

Type: boolen Default: true Required: no

options.showQuit

Show the Quit button or not.

showQuit: false;

Type: boolen Default: true Required: no

options.showCount

Show the pagination or not.

showCount: false;

Type: boolen Default: true Required: no

options.showHint

Show the hint block or not.

showHint: false;

Type: boolen Default: true Required: no

options.time

The average duration of animations and effects in ms (this actually is the factor).

time: 1000;

Type: number Default: 300 Required: no

quit

The method that quits your tutorial. No parametrs.

tutorJS.quit();

next

The method that shows the next step of your tutorial or quits it if no next step is available. No parametrs.

tutorJS.next();

recalc

Recalculates TutorJS elements positions (highlighting and the hint). No parameters.

tutorJS.recalc();

set

Reconfigures current tutorial options and the current element.

tutorJS.set(options, element);

options

An object with options for the current tutorial instance (as in the start method). Required: no

element

An object with the current step data for the current tutorial (as in the start method). Required: no


Getting data

You can get some data of the current tutorial and the current element.

Elements (steps)

var elements = tutorJS.elements;
var stepsN = elements.length;

Current element

var currentStep = tutorJS.activeEl;

Current step number

var stepN = tutorJS.active;

Instance options

var options = tutorJS.options;

TutorJS version

var ver = tutorJS.VERSION;

Utils

You can use some other methods of the TutorJS for your needs.

tutorJS.ID

Returns the DOM object for the element with the passed id.

var el = tutorJS.ID('myId');

tutorJS.EL

Returns the DOM object for the element with the passed jQuery-like selector (only the first found).

var el = tutorJS.EL('.myClass > someTag');

tutorJS.ELS

Returns an array with the DOM objects for the elements with the passed jQuery-like selector.

var els = tutorJS.ELS('.myClass > someTag');

tutorJS.extend

Returns the new object extended by another.

var obj = tutorJS.extend(obj1, obj2);

tutorJS.attr

Adds attributes to the element from the passed object.

var el = tutorJS.attr(tutorJS.EL('input'), {
  required: 'required',
  placeholder: 'Required input!',
});

tutorJS.offset

Returns an offset of the element relative to the window (in px).

var offset = tutorJS.offset(element);
var offTop = offset.top;

tutorJS.width

Returns width of the element (in px).

var elementWidth = tutorJS.width(element);

tutorJS.height

Returns height of the element (in px).

var elementHeight = tutorJS.height(element);

tutorJS.positionTop

Returns the top offset of the element related to the document (in px).

var elementTop = tutorJS.positionTop(element);

tutorJS.scrolledTop

Returns number of the scrolled pixels (from the top of the document).

var scr = tutorJS.scrolledTop();

tutorJS.animateScroll

Scrolls to the passed position with animation (vertically).

tutorJS.animateScroll(position, callback);

tutorJS.isInView

Checks if specified element is fully visible on the page (only vertically).

var isInView = tutorJS.isInView(element);

tutorJS.on

Calls specified callback when an event fired on the element. Supports chaining.

tutorJS.on(element, 'click', callback).on(element2, 'mouseover', callback2);

tutorJS.create

Creates new SVG element tag or node if specified the second argument. Only SVG tags!

var newCircle = tutorJS.create('circle');
var newNode = tutorJS.create('My special text', true);

tutorJS.anim

Animates SVG element via adding animate tag. Just pass the special object with the parameters ({attr: <>, to: <>, dur: <>}). Supports chaining. Only for SVG!

tutorJS
  .anim(element, { attr: 'opacity', to: 1, dur: 300 }, callback1)
  .and({ attr: 'height', to: '200px', dur: 1000 }, callback2)
  .anim(anotherElement, { attr: 'width', to: '100px', dur: 500 }, callback3);