{"_id":"@bobby_shin/player-web","name":"@bobby_shin/player-web","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bobby_shin/player-web","version":"1.0.0","description":"Muabe Web Component and JS SDK wrapper for .miv playback","type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts","dev":"tsup src/index.ts --format esm --dts --watch","typecheck":"tsc --noEmit","test:e2e":"playwright test","test:e2e:build":"bash ../../scripts/build_web_delivery.sh && playwright test","test:e2e:headed":"playwright test --headed","pack:check":"npm pack --dry-run","release:check":"npm run typecheck && npm run build && npm run pack:check","prepublishOnly":"npm run release:check"},"keywords":["muabe","miv","web-component","sdk"],"license":"UNLICENSED","devDependencies":{"@playwright/test":"^1.58.2","tsup":"^8.5.0","typescript":"^5.9.2"},"repository":{"type":"git","url":"git+https://github.com/Muabe-motion/muabe-player.git","directory":"packages/muabe_player_web"},"homepage":"https://github.com/Muabe-motion/muabe-player/tree/main/packages/muabe_player_web#readme","bugs":{"url":"https://github.com/Muabe-motion/muabe-player/issues"},"publishConfig":{"access":"public"},"_id":"@bobby_shin/player-web@1.0.0","gitHead":"c4587dc6aafd7c0d9de91a8eed3b5ae4ea7c8ff1","_nodeVersion":"23.5.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-2EMdHQADMmC9o/Z8UgtJOygOLaoyVU0mT3B5kANiNdcgWubBZKkg6/NkW342BpBcsOeQHwgonb0qZ0g/u7E8LA==","shasum":"f173b1d3539cc07a9fe67ea0ba45ad86374aef9f","tarball":"https://registry.npmjs.org/@bobby_shin/player-web/-/player-web-1.0.0.tgz","fileCount":7,"unpackedSize":63234,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHLXGs/NbA4kcQJ/T4KWjK0kBeJZr1gMibYITzfkhZG1AiEA4Xh1KKFuZl6ug9rHMa3Pega+Cw44vmxek4no8NMVmsE="}]},"_npmUser":{"name":"bobby_shin","email":"gdnfl0117@gmail.com"},"directories":{},"maintainers":[{"name":"bobby_shin","email":"gdnfl0117@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/player-web_1.0.0_1771569345441_0.6968534490886586"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-20T06:35:45.279Z","1.0.0":"2026-02-20T06:35:45.573Z","modified":"2026-02-20T06:35:45.879Z"},"maintainers":[{"name":"bobby_shin","email":"gdnfl0117@gmail.com"}],"description":"Muabe Web Component and JS SDK wrapper for .miv playback","homepage":"https://github.com/Muabe-motion/muabe-player/tree/main/packages/muabe_player_web#readme","keywords":["muabe","miv","web-component","sdk"],"repository":{"type":"git","url":"git+https://github.com/Muabe-motion/muabe-player.git","directory":"packages/muabe_player_web"},"bugs":{"url":"https://github.com/Muabe-motion/muabe-player/issues"},"license":"UNLICENSED","readme":"# @muabe/player-web\n\nWeb Component + JS SDK for Muabe `.miv` playback.\n\n## Status\n\nThis package currently provides:\n- `<muabe-player>` custom element API surface\n- `createMuabePlayer(...)` JS SDK wrapper\n- iframe runtime bridge protocol\n- default runtime endpoint: `/muabe-player-runtime/index.html`\n\nCompanion runtime app:\n- `apps/muabe_player_runtime_web` (Flutter Web)\n- receives bridge commands via `postMessage`\n- renders `.miv` using `MuabePlayerView`\n\n## Runtime URL policy\n\nDefault runtime URL is fixed to:\n- `/muabe-player-runtime/index.html`\n\nYou can override per element:\n\n```html\n<muabe-player runtime-url=\"/custom-runtime/index.html\"></muabe-player>\n```\n\n## Runtime-host stub (debug only)\n\n`public/runtime-host.html` is a development stub page for bridge debugging.\nIt is **not** the production runtime.\n\nProduction runtime should use:\n- `apps/muabe_player_runtime_web` build output\n- served under `/muabe-player-runtime/`\n\n## Quick Usage\n\n```html\n<script type=\"module\">\n  import './player-sdk/index.js';\n</script>\n\n<muabe-player\n  src=\"./sample.miv\"\n  runtime-url=\"/muabe-player-runtime/index.html\"\n  style=\"display:block;width:min(96vw,1280px);aspect-ratio:16/9;\"\n></muabe-player>\n```\n\n## Runtime Build\n\n```bash\ncd /Users/bobby/workspace/muabe/no-code/muabe_player\n./scripts/build_web_delivery.sh\n./scripts/serve_web_delivery.sh\n```\n\n## API\n\n`<muabe-player>` attributes:\n- `src`\n- `autoplay`\n- `initial-page`\n- `runtime-url`\n\nMethods:\n- `load(source)`\n- `play()`\n- `pause()`\n- `stop()`\n- `seek(ms)`\n- `nextPage()`\n- `prevPage()`\n- `goToPage(index)`\n- `setPlaybackRate(rate)`\n- `getState()`\n- `dispose()`\n\nEvents:\n- `ready`\n- `error`\n- `pageChanged`\n- `playbackStateChanged`\n- `interaction`\n- `ended`\n\nEvent payload policy (v1):\n- `playbackStateChanged`: actively emitted by runtime\n- `interaction`: reserved, default runtime path does not emit yet\n- `ended`: reserved, default runtime path does not emit yet\n\n## Breaking Change (v1.0.0)\n\n- Removed volume-related API surface:\n  - Removed `muted` attribute\n  - Removed `setMuted(value)` and `setVolume(value)` methods\n  - Removed `muted` and `volume` fields from `getState()`\n\nIf you need audio policy control, implement it via Graphy role composition at content level.\n\n## Control Policy (Current)\n\n- Runtime actual media control is currently guaranteed for `play()` and `pause()`.\n- `stop()`, `seek(ms)`, and `setPlaybackRate(rate)` remain exposed as API surface, but detailed media semantics are intentionally not fixed yet.\n- Future advanced control should be designed via Graphy role composition, not by re-introducing global volume APIs.\n\n## Web Embed E2E\n\nPlaywright 기반 E2E는 아래 명령으로 실행한다.\n\n```bash\ncd /Users/bobby/workspace/muabe/no-code/muabe_player/packages/muabe_player_web\nnpm run test:e2e\n```\n\n빌드부터 포함해 실행하려면:\n\n```bash\nnpm run test:e2e:build\n```\n\n검증 파일:\n- `e2e/web-embed.spec.ts`\n\n## CDN Usage\n\njsDelivr:\n\n```html\n<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm//player-web@1/dist/index.js\"></script>\n```\n\nunpkg:\n\n```html\n<script type=\"module\" src=\"https://unpkg.com//player-web@1/dist/index.js\"></script>\n```\n\n`runtime-url`는 실제 런타임 정적 호스팅 주소를 지정해야 한다.\n","readmeFilename":"README.md","_rev":"1-88285f8ff3c7241ac264b9b4cea6c61a"}