webamp/packages/webamp
Jordan Eldredge dd3a7baa8c Derive how windows hidden state is computed
This resolves a bug:

1. Put the Milkdrop window in Desktop mode
2. Put the Milkdrop window in Fullscreen mode
3. Press esc
4. Try to move the Milkdrop window (it won't)

Keeping the "hidden" state up to date was fragile. By computing it we
can avoid edge cases like the one above where we failed to reset the
Milkdrop window's hidden state.
2021-02-20 20:54:58 -08:00
..
assets/skins Move non-base skins into demo directory 2020-07-04 11:21:20 -07:00
config Don't minify non-minified bundle 2020-12-22 18:29:43 -08:00
css Vertical slider (#1048) 2020-12-24 09:08:28 -08:00
demo Update butterchurn and butterchurn-presets betas (#1062) 2021-02-13 19:54:19 -08:00
docs Add note about CORS to examples and docs 2021-01-04 00:20:08 -08:00
js Derive how windows hidden state is computed 2021-02-20 20:54:58 -08:00
presets Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
scripts Move non-base skins into demo directory 2020-07-04 11:21:20 -07:00
.babelrc React 17 (#1030) 2020-11-02 20:40:17 -08:00
.eslintignore Move tweetBot to its own package 2020-05-17 22:21:00 -07:00
.eslintrc React 17 (#1030) 2020-11-02 20:40:17 -08:00
.gitignore Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
.prettierignore Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
CHANGELOG.md Avoid blowing the call stack when parsing larg cursor files 2021-01-21 20:10:35 -08:00
index.d.ts Add close method to public types 2020-11-26 13:36:29 -08:00
jest-puppeteer.config.js Fix skin path in itegration tests 2020-08-28 07:27:34 -07:00
package.json Update butterchurn and butterchurn-presets betas (#1062) 2021-02-13 19:54:19 -08:00
README.md Add new README for the NPM module specifically 2021-01-04 17:14:14 -08:00
static.d.ts Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
tsconfig.json Move skin stuff to their own packages 2020-05-17 22:24:35 -07:00

Webamp NPM Module

Development

I do most development by starting the demo site in dev mode and iterating that way. The following commands will install all dependencies, run an initial development build and then start a local server. Every time you save a file, it will rebuild the bundle and automatically refresh the page.

# First clone the repo, then...
cd webamp
# Change into the NPM module's sub directory
cd packages/webamp
# __Note:__ Please use yarn over npm, since yarn will respect our `yarn.lock` file
yarn install
yarn start

http://localhost:8080/ should automatically open in your browser.

# Run tests and lint checks
yarn test

Building

The NPM module is built separately from the demo site. To build it run:

yarn run build-library

This will write files to ./built.

Testing

yarn test

This will run the tests the linter and the type checker.

To update snapshots run

yarn test -u

Reference

Predecessors

  • Webamp2x An impressive implementation from 2002(!).
  • JsAmp An implementation from 2005 by @twm (via Hacker News).
  • LlamaCloud Comp From 2011 by Lee Martin (via Twitter)
  • Winamp em HTML5 e Javascript In 2010 a developer named Danilo posted one of his HTML5 experiments: "an audio player simulating good old Winamp". You will have to download the zip file.
  • JuicyDrop An HTML5 implementation with less emphasis on being true to the skin, but fully featured visualizations. @cggaurav is keeping it alive on GitHub
  • Spotiamp The folks at Spotify reimplemented Winamp as a frontend for Spotify. Not in a browser, and only runs on Windows. It has since been discontinued.