🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

posecode-embed

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

posecode-embed

Embed a live 3D Posecode movement anywhere with one <script> tag — the web component.

latest
Source
npmnpm
Version
0.4.2
Version published
Maintainers
1
Created
Source

posecode-embed

Embed a live 3D Posecode movement anywhere with one <script> tag.

posecode-embed ships a framework-free <posecode-player> web component. Drop it into a blog post, docs page, physio program, or an LLM chat UI, and it renders the movement as an animated 3D figure, right where a share link would have gone.

Quick start (CDN, no build step)

<script src="https://unpkg.com/posecode-embed@latest/dist/posecode-embed.js"></script>

<!-- 1. From a share token (what a posecode.org permalink carries) -->
<posecode-player doc="cG9zZWNvZGUgZXhlcmNpc2Ug…"></posecode-player>

<!-- 2. From a URL to a .posecode file -->
<posecode-player src="/movements/squat.posecode"></posecode-player>

<!-- 3. From inline text: reads like the language itself -->
<posecode-player>
posecode exercise "Lateral raise"
  rig humanoid
  pose start = standing
  step "Raise" 1.4s settle:
    shoulders: abduct 90
    elbows: flex 10
  step "Lower" 1.6s drive:
    shoulders: abduct 0
    elbows: flex 0
  repeat 8
</posecode-player>

The script auto-registers the element and boots each player when it scrolls into view. That's it.

Replace @latest with an exact package version in production so a deployment always uses a known parser/render pair. A src URL can be relative or absolute; cross-origin movement files must be served with CORS permission.

With a bundler

npm install posecode-embed
import "posecode-embed"; // auto-registers <posecode-player>

Or register it yourself for controlled timing:

import { definePosecodePlayer } from "posecode-embed";
definePosecodePlayer(); // idempotent

Attributes

AttributeDefaultDescription
docn/aA posecode-share token (highest precedence).
srcn/aURL of a .posecode file to fetch.
(inline text)n/aThe element's text content, used if doc/src are absent.
autoplaytruePlay as soon as the movement loads.
looptrueLoop the timeline.
controlstrueShow the play/pause bar.
autorotatetrueSlowly orbit the camera when idle.
speed1Playback multiplier (0.14).
character(hosted default)Realistic figure: a GLB URL (Mixamo rig), or off for the procedural mannequin. Load failures fall back to the mannequin.
playgroundhttps://posecode.org/playBase URL for the "Edit ↗" link.

Boolean attributes accept false / 0 / no / off to turn them off, so autoplay="false" works as expected.

Behaviour

  • Lazy & cheap. three.js loads only when a player scrolls into view; many embeds on one page stay idle until seen.
  • Accessible. Honors prefers-reduced-motion (no autoplay, no camera orbit) and exposes a labelled play/pause control.
  • Never blank. A bad token, a failed fetch, or an unparseable movement renders a readable message instead of an empty canvas, and fires a posecode:error event.
  • Isolated. Markup and styles live in a shadow root; nothing leaks into or out of the host page.

Events & API

const player = document.querySelector("posecode-player");
player.addEventListener("posecode:ready", (e) => {
  console.log(e.detail.version, e.detail.languageVersion, e.detail.warnings);
  player.viewer.pause();
});
player.addEventListener("posecode:error", (e) => {
  console.warn(e.detail.code, e.detail.error, e.detail.errors);
});

player.toggle();       // play / pause
player.viewer;         // the underlying render Viewer (null until booted)

The host element reflects data-posecode-state="loading|ready|error", plus the package and language versions, for integration tests and monitoring. Existing listeners that only read event.detail.error remain compatible.

CDN users can validate source without creating WebGL:

const result = Posecode.validatePosecode(source);
console.log(Posecode.version, Posecode.languageVersion, result.errors);

For a movement library in CI, run:

npx posecode-parser@latest validate --strict ./movements

AGPL-3.0-only, part of Posecode. A separate commercial license is available for closed-source product use.

Keywords

posecode

FAQs

Package last updated on 28 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts