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

kinesthetics

v0.0.3

Published

A software that creates kinematic presentation slides

Downloads

2

Readme

Kinesthetics

A software that creates kinematic presentation slides. Note that this is still in a very early alpha stage, and so many of the general interface is not yet finalised, nor is it guaranteed to be stable. A rewrite is in (eventual) order, mostly to utilise promises and clean up the code in general.

Background

Kinesthetics is a script that allows one to easily create kinematic presentation slides with state-based (keyframe-based) animation.

Examples

The slides for the seminar I gave is written with this programme, and the source can be found in the examples folder.

Some examples you can play around with in the sandbox are

  1. Integration Graphs
  2. 2 Vibrational Modes of Water
  3. Projectile Motion

Also, below are other examples that were not made using this programme in particular, but are primitives to and illustrative of what this aims to achieve. These slides were coded by hand, whereas Kinesthetics automate much of the repetitive tasks.

  1. Electromagnetic Presentation Slides
  2. Poetry and the Poetical Science
  3. Kristang Collaborative Online Dictionary - Opening Video
  4. The Promiscuous Nature of Graph Theory

"Documentation"

/* ========================= */
/*    Presentation config    */
/* ========================= */

title: Kinesthetics
// Title of the presentation, appears in the browser titlebar

aspect: 16/9
// Aspect ratio of slides, given as width/height

scripts: [/three.js]
// Javascript files to be included.
// If three.js is attached, the three.js plugin for
// kinesthetics will be included automatically.

background: #f0f0f0
// Background colour of slides
// Given in hex colour


/* ========================= */
/*           Slides          */
/* ========================= */


/* ======== nesting ======== */

slide
    slide
// A slide inside a slide.
// Make sure to use 4 spaces (or 1 tab)

slide
    slide
        slide
            slide
                slide
                    slide
    slide
// You can nest multiple levels.
// The root slide contains two slides, where the
// first contains a slide containing a slide...
// while the second is by itself


/* ======== types ======== */

img=slides/ball-0.svg
// An image slide, where the image file is
// relative to the location of the kst file

import=example0.kst
// Link to another kst file, that presentation
// would be concatenated into this kst file
//
// This allows you to break the presentation down
// into tiny parts, then bring them together after

slide#id0.class0.class1
// This assigns the id "id0" and the classes
// "class0", "class1" to the slide. Useful
// particularly to communicate with javascript.


/* ======= options ======= */

slide sweep=top
{
default: {sweep: 0.2}
}
/* ------------------------------------- */
/*  sweep = top | bottom | left | right  */
/* ------------------------------------- */
// Sweep "top" hides the entire slide from the top.
// Setting the value of "sweep" within the state
// reveals that amount, intepretated as a ratio
// of the slide dimension.

import=example.kst offset=1.23
/* ----------------- */
/*  offset = NUMBER  */
/* ----------------- */
// Adds the offset to every state time
// e.g. if "a.kst" has the states 0.1, 0.2, 0.3,
// they will become 1.33, 1.43, 1.53 when
// imported into this file.
//
// Useful for working with presentation parts
// then forcing a certain order when bringing
// them together


/* ======= states ======= */

// In general, each object is of the form
slide
{
0.1: {a: 1, b: 0},
1: {a: 3, T: [1, 2, 3]},
3000: {a: 0}
}
// The numbers 0.1, 1, 3000 are the state
// labels/identifiers. The numbering is up
// to the user: the numbers themselves do
// not matter, except for their relative
// positions. Each distinct number is
// treated as a distinct state (so if the
// entire file only contained the above
// there will be 3 slides/stops excluding
// the default view)

img=slides/ball-1.svg
{
    default, 1: {
        // Transform origin (useful for rotations)
        O: 0,

        // Translate
        T: 0.5,
        T: [0.5],
        T: [0.2, 0.3],

        // Rotate
        R: 1.57,
        R: 90deg,

        // Scale
        S: 0.2,

        // Easing
        ease: linear,

        // Transition duration
        dt: 0.5s,

        // Transition delay
        t0: 0.1s,

        opacity: 0
    },
    0.1: {opacity: 1, T: 0}
}

Usage

Documentation is in process. Meanwhile, .kst files can be either rendered by running node kinesthetics.js examples/talk/talk.kst, which will create the file talk.html in the directory examples/talk.

Alternatively, a basic server is also packaged, and can be started by running node server/server.js (or npm start). The slides can be accessed according to their directory names: so, the same presentation above has the url http://localhost:3000/examples/talk/.

Individual parts of the entire presentation can also be accessed, given that they are in their own directories. For example, the content page by itself would be accessed at http://localhost:3000/examples/talk/content/.

The changes hold immediately after the file updates, so using the server is a quick way to work with kst file. However, the packaged server is not intended to be used in a production environment.

Miscellaneous Tools

The slides themselves, which are all fixed-aspect transparent images, are first made in some other software before being brought here to be animated.

Personally, I use Inkscape to make the SVG images, where each layer forms a moving part of the presentation. After that, the layers are split into individual files using the SVG Deconstruct tool that I wrote for this purpose.

On-screen Helpers

Pressing r during the presentation brings up an on-screen ruler that gives a measurement in proportion to the presentation screen dimensions.

Pressing t brings up the timeline.