MCPcopy Index your code
hub / github.com/alienkitty/space.js

github.com/alienkitty/space.js @v1.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.2.0 ↗ · + Follow
1,052 symbols 2,529 edges 141 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Space.js

NPM Package NPM Downloads DeepScan Discord

This library is part of two sibling libraries, Space.js for UI, Panel components, Tween, Web Audio, loaders, utilities, and Alien.js for 3D utilities, materials, shaders and physics.

<img src="https://github.com/alienkitty/space.js/raw/main/space.js.png" alt="Space.js">

Usage

Space.js is divided into two entry points depending on your use case.

The main entry point without any dependencies is for the UI components, loaders and utilities.

npm i @alienkitty/space.js

Math classes:

import { Color, Vector2 } from '@alienkitty/space.js';

UI and Panel components:

import { Panel, PanelItem, UI } from '@alienkitty/space.js';

Tween animation engine:

import { ticker, tween } from '@alienkitty/space.js';

ticker.start();

const data = {
    radius: 0
};

tween(data, { radius: 24, spring: 1.2, damping: 0.4 }, 1000, 'easeOutElastic', null, () => {
    console.log(data.radius);
});

Web Audio engine:

import { BufferLoader, WebAudio } from '@alienkitty/space.js';

const bufferLoader = new BufferLoader();
await bufferLoader.loadAllAsync(['assets/sounds/gong.mp3']);
WebAudio.init({ sampleRate: 48000 });
WebAudio.load(bufferLoader.files);

const gong = WebAudio.get('gong');
gong.gain.set(0.5);

document.addEventListener('pointerdown', () => {
    gong.play();
});

Audio stream support:

import { WebAudio } from '@alienkitty/space.js';

WebAudio.init({ sampleRate: 48000 });

// Shoutcast streams append a semicolon (;) to the URL
WebAudio.load({ protonradio: 'https://shoutcast.protonradio.com/;' });

const protonradio = WebAudio.get('protonradio');
protonradio.gain.set(1);

document.addEventListener('pointerdown', () => {
    protonradio.play();
});

And the @alienkitty/space.js/three entry point for three.js UI components, loaders and utilities.

npm i three @alienkitty/space.js
import { EnvironmentTextureLoader } from '@alienkitty/space.js/three';

// ...
const environmentLoader = new EnvironmentTextureLoader(renderer);
environmentLoader.load('assets/textures/env/jewelry_black_contrast.jpg', texture => {
    scene.environment = texture;
});

Examples

ui

logo (interface)
ui (hud)
components (ui)
progress (canvas)
progress (svg)
progress indeterminate (svg)
close (svg)
tween (svg)
magnetic (component, svg)
details
info (details)
fps
fps panel
panel (standalone)
ufo (2d scene, smooth scroll with skew effect)

3d

materials
materials instancing (debug)
materials instancing (custom, debug)
lights

audio

gong
stream
rhythm

thread

canvas (noise)

Getting started

Clone this repository and run the examples:

git clone https://github.com/alienkitty/space.js
cd space.js
npx servez

ESLint

npm i -D eslint eslint-plugin-html
npx eslint src
npx eslint examples/about/src
npx eslint examples/three/*.html
npx eslint examples/*.html

Roadmap

v1.0

v1.1

  • [x] Three.js material UI
  • [x] Three.js light UI
  • [x] Three.js UI keyboard support

v1.2

  • [x] Three.js UI multiple select
  • [x] Export About example UI components

v1.3

  • [ ] Change camera perspective
  • [ ] Material texture thumbnails
  • [ ] Material texture drag and drop

v1.4

  • [ ] Move objects
  • [ ] GLTF drag and drop
  • [ ] Load/save scene

v1.5

  • [ ] MIDI support

v1.6

  • [ ] WebXR version

v1.7

  • [ ] OGL version
  • [ ] Documentation

Resources

See also

Core symbols most depended-on inside this repo

css
called by 205
src/utils/Interface.js
tween
called by 80
src/utils/Interface.js
push
called by 61
src/utils/Cluster.js
add
called by 57
src/three/ui/Point3D.js
clearTween
called by 56
src/utils/Interface.js
add
called by 56
src/panels/Panel.js
add
called by 52
src/utils/Router.js
getKeyByValue
called by 49
src/utils/Utils.js

Shape

Method 745
Class 254
Function 53

Languages

TypeScript100%

Modules by API surface

src/three/ui/Point3D.js43 symbols
src/math/Vector2.js35 symbols
src/tween/Easing.js34 symbols
src/utils/Utils.js28 symbols
src/math/Color.js28 symbols
src/utils/Interface.js20 symbols
src/ui/Point.js20 symbols
src/audio/WebAudio.js20 symbols
src/panels/ColorPicker.js17 symbols
src/loaders/Loader.js17 symbols
src/ui/UI.js16 symbols
src/ui/DetailsButton.js16 symbols

For agents

$ claude mcp add space.js \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact