{"_id":"@ctd1500/vue-videojs-player","_rev":"4-15273c8a18de077b32ffc5570d0b67e0","name":"@ctd1500/vue-videojs-player","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.1":{"name":"@ctd1500/vue-videojs-player","version":"0.1.1","_id":"@ctd1500/vue-videojs-player@0.1.1","maintainers":[{"name":"ctd1500","email":"ctd1500@gmail.com"}],"dist":{"shasum":"40302415f9af8e1c1d83d7b22b87b8fca5b080e5","tarball":"https://registry.npmjs.org/@ctd1500/vue-videojs-player/-/vue-videojs-player-0.1.1.tgz","fileCount":7,"integrity":"sha512-czQ+qe0TYYoy4KYCXZ9RrePjqetxpHscmxaubShsB7O22C7hXRAX6rN4ePV7d0QKCB9XESb5ReCkoXHWxgSqNQ==","signatures":[{"sig":"MEUCIQDWlNIYgpcoX+tYyEvoIBHxW7fxx9v6fZ3a0d9rxc1wyQIgdsTQqA2BBxo0JX3emUcZsAo1i/LWnGcAf29rGp9yi90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180505},"main":"./dist/videojs-player.cjs","type":"module","types":"./dist/videojs-player.d.ts","module":"./dist/videojs-player.js","exports":{".":{"types":"./dist/videojs-player.d.ts","import":"./dist/videojs-player.js","require":"./dist/videojs-player.cjs"},"./dist/*":"./dist/*","./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","lint":"eslint .","test":"vitest run --coverage","build":"vite build","format":"prettier --write \"{src,dev,test,player}/**/*.{ts,vue}\"","rebirth":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"ctd1500","email":"ctd1500@gmail.com"},"description":"Video.js player component for Vue 3.","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.40","sass":"^1.101.0","vite":"^8.2.0","jsdom":"^30.0.1","tslib":"^2.8.1","eslint":"^10.8.0","vitest":"^4.1.10","globals":"^17.9.0","vue-tsc":"^3.3.9","prettier":"^3.9.6","video.js":"^8.23.9","@eslint/js":"^10.0.1","typescript":"^6.0.3","@vue/test-utils":"^2.4.11","vite-plugin-dts":"^5.0.3","eslint-plugin-vue":"^10.10.0","@vitejs/plugin-vue":"^6.0.8","@vitest/coverage-v8":"^4.1.10","@microsoft/api-extractor":"^7.58.12","@vue/eslint-config-prettier":"^10.2.0","@vue/eslint-config-typescript":"^14.9.0"},"peerDependencies":{"vue":"^3","video.js":"^8"},"_npmOperationalInternal":{"tmp":"tmp/vue-videojs-player_0.1.1_1785929286929_0.9411839502697998","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@ctd1500/vue-videojs-player@0.2.0","dist":{"shasum":"e3892db69001f6de60472872869ceb3cbc5db886","tarball":"https://registry.npmjs.org/@ctd1500/vue-videojs-player/-/vue-videojs-player-0.2.0.tgz","integrity":"sha512-xcFolBspcze9PqYOcoNFxLfxIRlCN9CZtskPjwn05iLObwtLvr/Le7vNb6LmvaSHKCIGXGW9QipULorjWf7dNg==","fileCount":7,"unpackedSize":180880,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCDRXvvRQdYo7NBbDEp5zWaJQBwFbAmTkbK0J7usjjJigIgAnVjIxpyqjpgzC/HXN3L1s4Ihix8XiyE0V056/oc59Q="}]},"main":"./dist/videojs-player.cjs","name":"@ctd1500/vue-videojs-player","type":"module","types":"./dist/videojs-player.d.ts","module":"./dist/videojs-player.js","exports":{".":{"types":"./dist/videojs-player.d.ts","import":"./dist/videojs-player.js","require":"./dist/videojs-player.cjs"},"./dist/*":"./dist/*","./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","lint":"eslint .","test":"vitest run --coverage","build":"vite build","format":"prettier --write \"{src,dev,test,player}/**/*.{ts,vue}\"","rebirth":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","typecheck":"vue-tsc --noEmit"},"version":"0.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2ccaf0b3-46b8-4647-9819-7513fa46bb19"},"approver":{"name":"ctd1500","email":"ctd1500@gmail.com"}},"description":"Video.js player component for Vue 3.","directories":{},"maintainers":[{"name":"ctd1500","email":"ctd1500@gmail.com"}],"_nodeVersion":"24.18.0","devDependencies":{"vue":"^3.5.40","sass":"^1.101.0","vite":"^8.2.0","jsdom":"^30.0.1","tslib":"^2.8.1","eslint":"^10.8.0","vitest":"^4.1.10","globals":"^17.9.0","vue-tsc":"^3.3.9","prettier":"^3.9.6","video.js":"^8.23.9","@eslint/js":"^10.0.1","typescript":"^6.0.3","@vue/test-utils":"^2.4.11","vite-plugin-dts":"^5.0.3","eslint-plugin-vue":"^10.10.0","@vitejs/plugin-vue":"^6.0.8","@vitest/coverage-v8":"^4.1.10","@microsoft/api-extractor":"^7.58.12","@vue/eslint-config-prettier":"^10.2.0","@vue/eslint-config-typescript":"^14.9.0"},"peerDependencies":{"vue":"^3","video.js":"^8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-videojs-player_0.2.0_1785930228720_0.3413162363793778"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T11:28:06.759Z","modified":"2026-08-05T11:43:48.944Z","0.1.0":"2026-08-05T11:02:20.865Z","0.1.1":"2026-08-05T11:28:07.088Z","0.2.0":"2026-08-05T11:43:48.799Z"},"description":"Video.js player component for Vue 3.","maintainers":[{"name":"ctd1500","email":"ctd1500@gmail.com"}],"readme":"# @ctd1500/vue-videojs-player\n\n[Video.js 8](https://github.com/videojs/video.js) player component for Vue 3.\n\nThis is a fork of [surmon-china/videojs-player](https://github.com/surmon-china/videojs-player).\n\n### About this fork\n\n- React support has been removed, this package is Vue 3 only\n- Upgraded from Video.js 7 to Video.js 8\n\n### Component Documentation\n\n- [Usage](#usage)\n- [Component Props](#component-props)\n- [Component Events](#component-events)\n- [Two-way Binding](#two-way-binding)\n- [Player State](#player-state)\n\n### Video.js Documentation\n\n- [Video.js Guides](https://videojs.com/guides)\n- [Video.js API Documentation](https://docs.videojs.com/)\n- [Video.js Options Reference](https://videojs.com/guides/options/)\n- [Video.js Plugins and Skins](https://videojs.com/plugins/)\n\n---\n\n### Usage\n\n#### Install\n\n```bash\npnpm add video.js @ctd1500/vue-videojs-player\n```\n\nVideo.js's default styles are not bundled with the component, so import them yourself once, e.g. in your app's entry point:\n\n```javascript\nimport 'video.js/dist/video-js.css'\n```\n\n#### Global component\n\n```javascript\nimport { createApp } from 'vue'\nimport VueVideoPlayer from '@ctd1500/vue-videojs-player'\n\nconst app = createApp()\n\napp.use(VueVideoPlayer)\n```\n\n#### Local component\n\nThe component registers under both `<video-player>` and `<vue-video-player>`.\n\n```vue\n<template>\n  <video-player\n    src=\"/your-path/video.mp4\"\n    poster=\"/your-path/poster.jpg\"\n    :loop=\"true\"\n    :volume=\"0.6\"\n    ...\n    @mounted=\"...\"\n    @ready=\"...\"\n    @play=\"...\"\n    @pause=\"...\"\n    @ended=\"...\"\n    @seeking=\"...\"\n    ...\n  />\n</template>\n\n<script>\n  import { defineComponent } from 'vue'\n  import { VideoPlayer } from '@ctd1500/vue-videojs-player'\n\n  export default defineComponent({\n    components: {\n      VideoPlayer\n    }\n  })\n</script>\n```\n\n#### Custom player controls\n\n```vue\n<template>\n  <video-player :children=\"[]\" ...>\n    <template v-slot=\"{ video, player, state }\">\n      <div class=\"player-controls\">\n        <button @click=\"state.playing ? player.pause() : player.play()\">\n          {{ state.playing ? 'Pause' : 'Play' }}\n        </button>\n        <button @click=\"player.muted(!state.muted)\">\n          {{ state.muted ? 'UnMute' : 'Mute' }}\n        </button>\n        <!-- more custom controls elements ... -->\n      </div>\n    </template>\n  </video-player>\n</template>\n```\n\n### Component Props\n\nAll parameters are optional and Video.js determines the default value of each prop.\n\n`\"responsive\"` means that if the prop value you pass in the component changes,\nVideo.js will automatically respond to the corresponding update,\ne.g. a change in `volume` will cause the player to change the volume.\n\n| Prop Name                 | Video.js API Doc & Description                                                                          | Type                   | Responsive |\n| :------------------------ | :------------------------------------------------------------------------------------------------------ | :--------------------- | :--------- |\n| id                        | [options.id](https://videojs.com/guides/options/#id)                                                    | `String`               |            |\n| src                       | [options.src](https://videojs.com/guides/options/#src)                                                  | `String`               | ✓          |\n| sources                   | [options.sources](https://videojs.com/guides/options/#sources)                                          | `Array`                | ✓          |\n| width                     | [options.width](https://videojs.com/guides/options/#width)                                              | `Number`               | ✓          |\n| height                    | [options.height](https://videojs.com/guides/options/#height)                                            | `Number`               | ✓          |\n| preload                   | [options.preload](https://videojs.com/guides/options/#preload)                                          | `String`               | ✓          |\n| loop                      | [options.loop](https://videojs.com/guides/options/#loop)                                                | `Boolean`              | ✓          |\n| muted                     | [options.muted](https://videojs.com/guides/options/#muted)                                              | `Boolean`              | ✓          |\n| poster                    | [options.poster](https://videojs.com/guides/options/#poster)                                            | `String`               | ✓          |\n| controls                  | [options.controls](https://videojs.com/guides/options/#controls)                                        | `Boolean`              | ✓          |\n| autoplay                  | [options.autoplay](https://videojs.com/guides/options/#autoplay)                                        | `Boolean \\| String`    | ✓          |\n| playsInline / playsinline | [options.playsInline](https://docs.videojs.com/player#playsinline)                                      | `Boolean`              | ✓          |\n| crossOrigin / crossorigin | [options.crossOrigin](https://docs.videojs.com/player#crossorigin)                                      | `String`               | ✓          |\n| volume                    | A number, between 0 and 1, control the volume of the player.                                            | `Number`               | ✓          |\n| playbackRate              | Control the playback rate of the player.                                                                | `Number`               | ✓          |\n| playbackRates             | [options.playbackRates](https://videojs.com/guides/options/#playbackrates)                              | `Array<Number>`        | ✓          |\n| fluid                     | [options.fluid](https://videojs.com/guides/options/#fluid)                                              | `Boolean`              | ✓          |\n| fill                      | [options.fill](https://videojs.com/guides/options/#fill)                                                | `Boolean`              | ✓          |\n| language                  | [options.language](https://videojs.com/guides/options/#language)                                        | `String`               | ✓          |\n| languages                 | [options.languages](https://videojs.com/guides/options/#languages)                                      | `Object`               |            |\n| tracks                    | [options.tracks](https://videojs.com/guides/text-tracks/)                                               | `Array`                | ✓          |\n| textTrackSettings         | [options.textTrackSettings](https://docs.videojs.com/texttracksettings)                                 | `Object`               | ✓          |\n| responsive                | [options.responsive](https://videojs.com/guides/options/#responsive)                                    | `Boolean`              | ✓          |\n| breakpoints               | [options.breakpoints](https://videojs.com/guides/options/#breakpoints)                                  | `Object`               | ✓          |\n| fullscreen                | [options.fullscreen](https://videojs.com/guides/options/#fullscreen)                                    | `FullscreenOptions`    |            |\n| aspectRatio               | [options.aspectRatio](https://videojs.com/guides/options/#aspectratio)                                  | `String`               | ✓          |\n| liveui                    | [options.liveui](https://videojs.com/guides/options/#liveui)                                            | `Boolean`              |            |\n| liveTracker               | [options.liveTracker](https://videojs.com/guides/options/#livetrackertrackingthreshold)                 | `Object`               |            |\n| disablePictureInPicture   | [options.disablePictureInPicture](https://docs.videojs.com/html5#disablePictureInPicture)               | `Boolean`              | ✓          |\n| notSupportedMessage       | [options.notSupportedMessage](https://videojs.com/guides/options/#notsupportedmessage)                  | `String`               | ✓          |\n| normalizeAutoplay         | [options.normalizeAutoplay](https://videojs.com/guides/options/#normalizeautoplay)                      | `Boolean`              | ✓          |\n| audioPosterMode           | [options.audioPosterMode](https://videojs.com/guides/options/#audiopostermode)                          | `Boolean`              | ✓          |\n| audioOnlyMode             | [options.audioOnlyMode](https://videojs.com/guides/options/#audioonlymode)                              | `Boolean`              | ✓          |\n| noUITitleAttributes       | [options.noUITitleAttributes](https://videojs.com/guides/options/#nouititleattributes)                  | `Boolean`              |            |\n| preferFullWindow          | [options.preferFullWindow](https://videojs.com/guides/options/#preferfullwindow)                        | `Boolean`              |            |\n| suppressNotSupportedError | [options.suppressNotSupportedError](https://videojs.com/guides/options/#suppressnotsupportederror)      | `Boolean`              |            |\n| techCanOverridePoster     | [options.techCanOverridePoster](https://videojs.com/guides/options/#techcanoverrideposter)              | `Boolean`              |            |\n| reportTouchActivity       | [options.reportTouchActivity](https://videojs.com/guides/options/#reporttouchactivity)                  | `Boolean`              |            |\n| techOrder                 | [options.techOrder](https://videojs.com/guides/options/#techorder)                                      | `Array`                |            |\n| inactivityTimeout         | [options.inactivityTimeout](https://videojs.com/guides/options/#inactivitytimeout)                      | `Number`               |            |\n| userActions               | [options.userActions](https://videojs.com/guides/options/#useractions)                                  | `Object`               |            |\n| controlBar                | [options.controlBar](https://videojs.com/guides/options/#controlbarremainingtimedisplaydisplaynegative) | `Object`               | ✓          |\n| restoreEl                 | [options.restoreEl](https://videojs.com/guides/options/#restoreel)                                      | `Boolean \\| Element`   |            |\n| vtt.js                    | [options['vtt.js']](https://videojs.com/guides/options/#vttjs)                                          | `String`               |            |\n| children                  | [options.children](https://videojs.com/guides/options/#children)                                        | `Array \\| Object`      |            |\n| html5                     | [options.html5](https://videojs.com/guides/options/#html5)                                              | `Object`               |            |\n| plugins                   | [options.plugins](https://videojs.com/guides/options/#plugins)                                          | `Object`               |            |\n| options                   | A fallback scheme, if you need to use options that don't exist in props, pass them to `options`.        | `VideoJsPlayerOptions` |            |\n\n### Component Events\n\nEvents emitted by Video.js, the argument type is always [`EventTarget`](https://docs.videojs.com/eventtarget).\n\n| Video.js Event                                                                             | Vue                      |\n| :----------------------------------------------------------------------------------------- | :----------------------- |\n| [event.loadstart](https://docs.videojs.com/player#event:loadstart)                         | `@loadstart`             |\n| [event.suspend](https://docs.videojs.com/player#event:suspend)                             | `@suspend`               |\n| [event.abort](https://docs.videojs.com/player#event:abort)                                 | `@abort`                 |\n| [event.error](https://docs.videojs.com/player#event:error)                                 | `@error`                 |\n| [event.emptied](https://docs.videojs.com/player#event:emptied)                             | `@emptied`               |\n| [event.stalled](https://docs.videojs.com/player#event:stalled)                             | `@stalled`               |\n| [event.loadedmetadata](https://docs.videojs.com/player#event:loadedmetadata)               | `@loadedmetadata`        |\n| [event.loadeddata](https://docs.videojs.com/player#event:loadeddata)                       | `@loadeddata`            |\n| [event.canplay](https://docs.videojs.com/player#event:canplay)                             | `@canplay`               |\n| [event.canplaythrough](https://docs.videojs.com/player#event:canplaythrough)               | `@canplaythrough`        |\n| [event.playing](https://docs.videojs.com/player#event:playing)                             | `@playing`               |\n| [event.waiting](https://docs.videojs.com/player#event:waiting)                             | `@waiting`               |\n| [event.seeking](https://docs.videojs.com/player#event:seeking)                             | `@seeking`               |\n| [event.seeked](https://docs.videojs.com/player#event:seeked)                               | `@seeked`                |\n| [event.ended](https://docs.videojs.com/player#event:ended)                                 | `@ended`                 |\n| [event.durationchange](https://docs.videojs.com/player#event:durationchange)               | `@durationchange`        |\n| [event.timeupdate](https://docs.videojs.com/player#event:timeupdate)                       | `@timeupdate`            |\n| [event.progress](https://docs.videojs.com/player#event:progress)                           | `@progress`              |\n| [event.play](https://docs.videojs.com/player#event:play)                                   | `@play`                  |\n| [event.pause](https://docs.videojs.com/player#event:pause)                                 | `@pause`                 |\n| [event.ratechange](https://docs.videojs.com/player#event:ratechange)                       | `@ratechange`            |\n| [event.resize](https://docs.videojs.com/player#event:resize)                               | `@resize`                |\n| [event.volumechange](https://docs.videojs.com/player#event:volumechange)                   | `@volumechange`          |\n| [event.posterchange](https://docs.videojs.com/player#event:posterchange)                   | `@posterchange`          |\n| [event.languagechange](https://docs.videojs.com/player#event:languagechange)               | `@languagechange`        |\n| [event.fullscreenchange](https://docs.videojs.com/player#event:fullscreenchange)           | `@fullscreenchange`      |\n| [event.playbackrateschange](https://docs.videojs.com/player#event:playbackrateschange)     | `@playbackrateschange`   |\n| [event.controlsdisabled](https://docs.videojs.com/player#event:controlsdisabled)           | `@controlsdisabled`      |\n| [event.controlsenabled](https://docs.videojs.com/player#event:controlsenabled)             | `@controlsenabled`       |\n| [event.enterFullWindow](https://docs.videojs.com/player#event:enterFullWindow)             | `@enterFullWindow`       |\n| [event.exitFullWindow](https://docs.videojs.com/player#event:exitFullWindow)               | `@exitFullWindow`        |\n| [event.enterpictureinpicture](https://docs.videojs.com/player#event:enterpictureinpicture) | `@enterpictureinpicture` |\n| [event.leavepictureinpicture](https://docs.videojs.com/player#event:leavepictureinpicture) | `@leavepictureinpicture` |\n| [event.sourceset](https://docs.videojs.com/player#event:sourceset)                         | `@sourceset`             |\n| [event.texttrackchange](https://docs.videojs.com/player#event:texttrackchange)             | `@texttrackchange`       |\n| [event.textdata](https://docs.videojs.com/player#event:textdata)                           | `@textdata`              |\n| [event.useractive](https://docs.videojs.com/player#event:useractive)                       | `@useractive`            |\n| [event.userinactive](https://docs.videojs.com/player#event:userinactive)                   | `@userinactive`          |\n| [event.usingcustomcontrols](https://docs.videojs.com/player#event:usingcustomcontrols)     | `@usingcustomcontrols`   |\n| [event.usingnativecontrols](https://docs.videojs.com/player#event:usingnativecontrols)     | `@usingnativecontrols`   |\n| [event.dispose](https://docs.videojs.com/player#event:dispose)                             | `@dispose`               |\n| [event.beforepluginsetup](https://docs.videojs.com/player#event:beforepluginsetup)         | `@beforepluginsetup`     |\n| [event.pluginsetup](https://docs.videojs.com/player#event:pluginsetup)                     | `@pluginsetup`           |\n| [event.componentresize](https://docs.videojs.com/player#event:componentresize)             | `@componentresize`       |\n| [event.playerresize](https://docs.videojs.com/player#event:playerresize)                   | `@playerresize`          |\n| [event.tap](https://docs.videojs.com/player#event:tap)                                     | `@tap`                   |\n| [event.ready](https://docs.videojs.com/player#event:ready)                                 | `@ready`                 |\n\nThe events emitted by the component itself.\n\n| Component Event | Description                                                                                                               | Vue          |\n| :-------------- | :------------------------------------------------------------------------------------------------------------------------ | :----------- |\n| mounted         | Fires when player component mounted. <br> `({ video: HTMLVideoElement, player: VideoJsPlayer, state: VideoPlayerState })` | `@mounted`   |\n| unmounted       | Fires when player component unmounted.                                                                                    | `@unmounted` |\n\n### Two-way Binding\n\nThe component emits an `update:<prop>` event whenever Video.js changes the underlying value for a subset of responsive props, so those props support `v-model`:\n\n`width`, `height`, `muted`, `poster`, `controls`, `language`, `volume`, `playbackRate`, `playbackRates`\n\n```vue\n<template>\n  <video-player v-model:volume=\"volume\" v-model:muted=\"muted\" ... />\n</template>\n```\n\n### Player State\n\nThe component maintains a fully responsive state object internally with the player so that you can consume the player state out-of-the-box outside the player,\nyou can get this object via the `mounted` event.\n\n| Key                  | Description                                                    | Value type                                                                         |\n| :------------------- | :------------------------------------------------------------- | :--------------------------------------------------------------------------------- |\n| src                  | The URL of the currently playing video.                        | `String`                                                                           |\n| currentSrc           | ditto                                                          | `String`                                                                           |\n| currentSource        | The currently playing video source object.                     | [`videojs.Tech.SourceObject`](https://docs.videojs.com/tech#~SourceObject)         |\n| width                | Player's width.                                                | `Number`                                                                           |\n| height               | Player's height.                                               | `Number`                                                                           |\n| currentWidth         | ditto                                                          | `Number`                                                                           |\n| currentHeight        | ditto                                                          | `Number`                                                                           |\n| videoWidth           | Video element's width.                                         | `Number`                                                                           |\n| videoHeight          | Video element's height.                                        | `Number`                                                                           |\n| controls             | Whether player controls are enabled or not.                    | `Boolean`                                                                          |\n| volume               | Player's volume.                                               | `Number`                                                                           |\n| muted                | Is the player muted.                                           | `Boolean`                                                                          |\n| poster               | Player poster image URL.                                       | `String`                                                                           |\n| playing              | Is it playing now.                                             | `Boolean`                                                                          |\n| waiting              | Is it waiting now.                                             | `Boolean`                                                                          |\n| seeking              | A seek operation began.                                        | `Boolean`                                                                          |\n| paused               | Playback has been paused.                                      | `Boolean`                                                                          |\n| ended                | Playback has stopped because the end of the media was reached. | `Boolean`                                                                          |\n| currentTime          | -                                                              | `Number`                                                                           |\n| duration             | -                                                              | `Number`                                                                           |\n| playbackRate         | -                                                              | `Number`                                                                           |\n| playbackRates        | -                                                              | `Array<Number>`                                                                    |\n| isFullscreen         | -                                                              | `Boolean`                                                                          |\n| isInPictureInPicture | Whether it is picture-in-picture mode.                         | `Boolean`                                                                          |\n| isLive               | Is the currently playing live video.                           | `Boolean`                                                                          |\n| language             | Video.js current language.                                     | `String`                                                                           |\n| userActive           | -                                                              | `Boolean`                                                                          |\n| readyState           | -                                                              | [`videojs.ReadyState`](https://docs.videojs.com/player#readyState)                 |\n| networkState         | -                                                              | [`videojs.NetworkState`](https://docs.videojs.com/player#networkState)             |\n| error                | A Custom MediaError of Video.js.                               | [`MediaError \\| Null`](https://docs.videojs.com/mediaerror)                        |\n| buffered             | An object that contains ranges of time.                        | [`videojs.TimeRange`](https://docs.videojs.com/module-time-ranges.html#~TimeRange) |\n| bufferedPercent      | -                                                              | `Number`                                                                           |\n| played               | -                                                              | `TimeRanges`                                                                       |\n| seekable             | -                                                              | `TimeRanges`                                                                       |\n| textTracks           | -                                                              | [`videojs.TextTrackList`](https://docs.videojs.com/texttracklist)                  |\n| audioTracks          | -                                                              | [`videojs.AudioTrackList`](https://docs.videojs.com/audiotracklist)                |\n| videoTracks          | -                                                              | `videojs.VidioTrackList`                                                           |\n\n### Video.js extension\n\n```javascript\nimport videojs from 'video.js'\n\n// Video.js plugin\nconst Plugin = videojs.getPlugin('plugin')\nclass ExamplePlugin extends Plugin {\n  // do something...\n}\n\nvideojs.registerPlugin('examplePlugin', ExamplePlugin)\n\n// more Video.js operation...\n```\n\n### Development\n\nProject layout:\n\n```\nplayer/   framework-agnostic Video.js glue (props, events, state, player factory)\nsrc/      Vue component built on top of player/\ndev/      Vite playground app for manual testing\ntest/     Vitest tests\n```\n\n```bash\npnpm install\n\npnpm dev\n\npnpm build\npnpm lint\npnpm typecheck\npnpm test\npnpm rebirth\n```\n","readmeFilename":""}