Pillow scans directories searching for CommonJS packages (package.json files) and makes the packages usable in the browser (i.e. the found packages and modules can be accessed using the require() function). It supports multiple js files per package (and the dot notation in the require function). It also supports non js files (PNG, JPEG, GIF, JSON, CSS, HTML, and MD). Pillow can operate in command line mode (pillowscan mydirectory) or in server mode (pillowserve mydirectory), in which case packages are remade on the fly each time they are loaded through HTTP.
Gravity animates HTML page elements using the laws of physics. It uses the Box2DWeb library to animate given page elements so they move, rotate, and collide. The gravity acceleration and direction are configurable. Given callback functions may be invoked when objects collide. Objects' speed and rotation may be affected when the user drags them using the mouse pointer. Each page element can be made static or animated. Animated page elements may include the respective children elements. The elements' friction and density properties can also be configured.
Whiteboard lets the user draw freehand graphics on a Web page. It can create a canvas object for the whiteboard (if one does not exist) and let the user draw on the canvas area by dragging the mouse around. The color, thickness, line join, and line cap of the drawing pen can be configured. The object can also clear the whiteboard, export the coordinates of the drawn lines, or import previously drawn lines.
SpotlightJS shows a spotlight over a Web page. It can create a transparent canvas on the top of the Web page with a dark area and a light rounded spot area which make the content below it appear as if it highlighted by a spotlight. The spotlight can be animated so it can move at a given speed. Callback functions may be invoked when the user drags the mouse over or clicks in the spotlight or the canvas area, as well when the animation starts and ends.
xLayers animates page elements stacked in different layers. It traverses the list of page elements of a given container element and changes their positioning properties so they appear stacked as layers on top of each other. Some elements may be explicitly excluded from becoming layers. The position and size of each layer can be adjusted by the user with the mouse or animated automatically at a given timing rate.