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

@bocoup/phoenix-fyre

v1.1.3

Published

## Table of contents

Downloads

37

Readme

Standalone Scratch Player Documentation

Table of contents

Getting this Demo Running

How to download and run this demo.

  1. Visit https://registry.npmjs.org/@bocoup/phoenix-fyre/-/phoenix-fyre-1.1.3.tgz in your browser and a download will start. Unzip this demo project, and move the contents of the "package" sub-directory that it creates into a location of your choosing, i.e. your home directory. Or, on the command line, this looks like:
$ wget https://registry.npmjs.org/@bocoup/phoenix-fyre/-/phoenix-fyre-1.1.3.tgz
$ mkdir ~/my-project-name
$ tar -xf phoenix-fyre-1.1.3.tgz -C ~/my-project-name --strip=1
  1. Check that the demo is working with a local server, using npx for example (requires node and npm to work):
$ cd ~/my-project-name
$ npx http-server

Open a browser to http://localhost:8080/example.index.html

Adding Your Own Scratch Project

How to add a new local scratch project with flat uncompressed files to this demo project.

  1. Follow the demo project "phoenix-fyre" download instructions in the previous "Getting this Demo Running" section.

  2. Choose the scratch project you would like to load. You can download it from the scratch editor on scratch.mit.edu, or ask the person who made the project to send it to you.

  3. Unzip the scratch .sb3 file and move the files into a sub-directory of this demo project's assets folder. You can do this manually by changing the downloaded scratch sb3 file extension to a .zip file extension, unzipping it and then dragging and dropping the files into this project. Or if you prefer to use the command line you can do something like:

$ unzip "Scratch Project.sb3" -d "~/my-project-name/assets/project-name"
  1. Duplicate example.index.html to index.html and update the <canvas> tag data-source attribute to match the name of your unziped sb3 file assets, for example: <canvas data-source="assets/project-name/project.json"></canvas>. If you are using the data-path attribute, you will also have to update that.

  2. Check that this demo is still working working with a local server, using npx for example (requires node and npm to work):

$ cd ~/my-project-name
$ npx http-server

Open a browser to http://localhost:8080/index.html

Production Release Guidelines

How to integrate this player and your own scratch project with another website.

  1. You can either start with the project you downloaded in the last section (~/my-project-name/assets/project-name), or download and unzip a new scratch project.

  2. Compress the scratch project assets as much as you can. We have a set of png compression recommendations in our authoring guidelines for fast scratch projects, available at https://docs.google.com/document/d/1Mriw6cCxWhNvn1wqrqSm411GboXdsuobqnWgGJ80MOE. We recommended that you compress pngs using the "save for web method" in Photoshop, for example. If you are working with assets from an uncompressed and un-optimized sb3, you can also use pngquant on the command-line to batch compress files.

  3. Copy my-project-name into the third-party code section of your production project.

  4. Copy the relevant parts of the index.html file into the target location in your production project, including references to the CSS and JS files at the correct path (E.G my-project-name/base.css, my-project-name/player.css and my-project-name/main.min.js). Copy the HTML snippet <div class="stage-container"> containing a <canvas id="scratch-stage"> and any other relevant player controls. You should also include the meta tags apple-mobile-web-app-capable and viewport as written in the example HTML in order for the embed to work properly on mobile.

  5. Update the <canvas> element's data-source attribute to match the name of your unziped sb3 file assets, for example: data-source="assets/project-name/project.json". If you are using the data-path attribute, you will also have to update that.

The ultimate location of the embedded player assets and the scratch project assets should be on the same origin. The player CSS and JavaScript should be on in the same directory as the HTML file which your <canvas> tag is in. Your <canvas> tag should reference a data-source path to a project.json that is in the same directory as the scratch project assets it came with in the .sb3 file you started with.

  1. Check that the relative paths work correctly. Start a server in your project directory and visit it in your browser using your development environment.

General Reference

The player supports three ways of loading a project: locally from flat files (the fastest and recommended), locally/remotely from a bundled .sb3, or remotely from a scratch project id on the scratch servers (not recommended in production).

The player is embedded as a <canvas> element with an id of scratch-stage. If no project is specified, then the the player looks for a scratch project .json in assets/playground/project.json. You can override this behavior with the following html attributes and url parameters.

data-source

You can change the data source to a project.json or zipped .sb3 file of your choosing, or a .sb3 file:

<canvas data-source="path/to/my-project/project.json">

The above example will load a project.json and which will look for Scratch project assets in the same directory as the json file.

<canvas data-source="path/to/my-project.sb3">

The above example will load a my-project.sb3 and unzip it in the browser. This is a bit slower to load, but faster to develop with, so we only recommned this approach for development.

Fully qualified scratch project URLs also work, so you can do something like the following and expect it to load the corresponding scratch project, so long as that project is live and public:

<canvas data-source="https://projects.scratch.mit.edu/319681786"></canvas>

data-path

The data-path attribute changes the base path for the project, so you can do something that looks more like this:

<canvas data-source="my-project.sb" data-path="path/to/">

Query Params

If you're looking to quickly iterate on the embedded player with different scratch projects you can leave the data-source and data-path attributes unset and set them in the url of the page with links like: http://localhost:8080?source=path/to/my-project.sb3 or http://localhost:8080?source=my-project.sb3&?path=path/to

You can even use fully qualified scratch project URLs in the params, like ?source=https://projects.scratch.mit.edu/319681786 for example.

Package Contents

Player contents

This project comes with the following files:

├── assets
│   ├── playground
│   │   ├── 83a9787d4cb6f3b7632b4ddfebf74367.wav
│   │   ├── 83c36d806dc92327b9e7049a565c6bff.wav
│   │   ├── b7853f557e4426412e64bb3da6531a99.svg
│   │   ├── cd21514d0531fdffb22204e0ec5ed84a.svg
│   │   ├── e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg
│   │   ├── project.json
│   ├── down.svg
│   ├── left.svg
│   ├── playground.sb3
│   ├── right.svg
│   └── up.svg
├── base.css
├── example.index.html
├── extension-worker.js
├── extension-worker.js.map
├── main.min.js
└── player.css

assets

This directory holds images for the virtual key's styling and a default project.

example.index.html

This HTML file contains demo code for using the standalone player. Almost all of the contents of this file are required for production use.

extension-worker.js, extension-worker.js.map

These files are used for running scratch extensions in web workers.

main.min.js

This is a minified version of all of the JavaScript we need to run the the standalone player itself.

CSS Files

The player is designed to have two sets of styling instructions. base.css contains a small amount of styling for the player to maintain Scratch's aspect ratio of 4/3 and also styling for the virtual keys UI. player.css is suggested styling for the UI around the player. player.css can be optional, if it conflicts with other styles needed for the page.

base.css

Minimal styling to maintain the correct aspect ratio for the Scratch player and also style the virtual keys.

player.css

Suggested styling for the UI around the player. If you are using this in addition to base.css, make sure it is linked to in the page second for intended styling.