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

segnoJS

v0.9.0

Published

A js library for bookmarking

Downloads

6

Readme

SegnoJS

experimental npm version

SegnoJs is a simple bookmarking jQuery plugin library that lets you keep track of the user's progress on a page. The library allows the user to pick up from where they left off when they return to the page.

This is a beta version of the software.

Dependencies

jQuery

Installation

To install segnoJs, run

npm install SegnoJS

Include segno.min.js in your page as follows

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

The javascript adds invisible bookmarks. To make them visible and styled, add segno_default.min.css to the page as follows.

<link href="./dist/segno_default.min.css" rel="stylesheet" type="text/css">

Copy fonts directory and place it at the same directory level as the css file from above.

Getting started

SegnoJS tracks all DOM elements passed in the selector. For instance, to start tracking, all p tags, initialize the plugin as follows.

$('p').segno();

Customization

SegnoJS takes the following parameters that allow you to customize how it works. For instance, you can change the color of the bookmark by passing in color option as follows during initialization.

$('body').segno({
  scrollAnimationSec: 2
});

Below is the full list of available options

| Property | Default Value | Purpose | |----------------------|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | setOnScroll | true | Boolean flag that determines if bookmarks are set automatically when user scrolls to a valid DOM element. If this is set to false bookmarks can be set manually by clicking on the bookmark symbol. | | scrollDebounceSec | 1 | Value in seconds for how often scroll detection code is called. This has no effect if setOnScroll is false. | | autoScroll | true | Boolean flag that determines if on load the page should automatically scroll to a bookmark if it is set. If set to false, you can still scroll to a bookmark using gotoBookmark method. | | scrollAnimationSec | 1 | Value in seconds for time taken to animate scroll to a bookmark | | scrollOffset | 0 | Number of pixels to offset when scrolling to a bookmark. This is useful if there is a fixed header or navbar. This can be a fixed number or a statement that is evaluated once or a function that is evaluated each time bookmark calculations are run.| | qsp | 'bm' | The query string parameter that is used to share or go to a bookmark. |

Styling

The package comes with a default theme. It can be further customized. If using sass, the following variables are available in css\segno_vars.scss

| variable | default | purpose | options | |------------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------| | $bookmark-color` | #666 | Color of the bookmark symbol | Any valid sass color | | $bookmark-set-symbol | '\e800' | Symbol used for set bookmark | Any unicode or html | |$bookmark-unset-symbol| '\e801' | Symbol used for unset bookmark | Any unicode or html | |$bookmark-font-family | segno | Font for the bookmark symbols. The default is downloaded from [fontello.com](fontello.com) | Any valid font | |$bookmark-font-size | 1em | Font size for the symbols | Any valid font size (px, rem, em, pt, etc.) | |$bookmark-positioning` | 'inline' | Positioning for the bookmark symbol. The default option places the bookmark inline at the end of the element it is tracking. To place it in the margin, use 'margin'. | 'inline' or 'margin' |

For more custom styling, the bookmark can be styled using .segno-bookmark for positioning and .segno-bookmark:before css selectors. Active bookmarks have segno-active class in addition to segno-bookmark class. The elements that are bookmarked have segno-bookmarkable class added for easy styling.

Callbacks

In addition to the properties mentioned above, SegnoJS also lets you specify callback function that will be executed when certain events happen. For instance, to call a function whenever a bookmark is set, add the following to init code.

$('body').segno({
  onBookmarkSet: function() {
    window.console.log('set a bookmark');
  },
  color: 'red'
});

The following are the available callbacks.

| Callback | Default Value | Purpose | |-----------------------|---------------|------------------------------------------------------------------------------------------------------------------------------| | afterInit | null | Allows for any custom actions to be taken after the library is initialized | | onBookmarkSet | null | It is called whenever a bookmark is set. Allows for custom actions such a notification to show that a bookmark has been set. | | onBookmarkUnset | null | It is similar to onBookmarkSet. It is called whenever a bookmark is unset. | | onHasBookmarkAtInit | null | This is called if there is a bookmark already set when the page loads and no bookmark has been provided as a query string parameter. |

Methods

SegnoJS provides some methods through a global variable Segno. For Instance you can check if there is a bookmark set using

Segno.hasBookmark();

Full list of methods are below

| Function | Parameters | Purpose | |-------------------------|-------------------------------|-------------------------------------------------| | hasBookmark | none | Returns true if there is a stored bookmark name | | getBookmark | none | Returns bookmark if there is a stored bookmark. | | setBookmark(bookmark) | CSS selector for the bookmark | Sets the bookmark | | unsetBookmark() | none | Unsets all bookmarks | | gotoBookmark() | none | Goes to the set bookmark |

Other features

SegnoJS supports sharing bookmarks via query string parameter. If the url contains a parameter bm, the page disregards existing bookmarks and scroll the one specified in the URL.

This parameter can be changed at initialization by passing qsp parameter.

How does it work?

Segno stores the user's progress in a story in browser's local storage. If local storage is not available, it falls back to using cookies.

Development

To set up a development environment, clone the repo. Run npm install.

Install httpserver globally using, npm install -g httpserver.

Build and run the project, using npm start from thr command line. This will start the test page on http://localhost:8080

Contributing to the project

This is an active project and we encourage contributions. Please review our guidelines and code of conduct before contributing.

Here are a few ways in which you can contribute

  • Add features or fixes
  • Report issues
  • Improve our documentation

License

Copyright (c) 2015, Vox Media, Inc. All rights reserved.

BSD license

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.