@playkit-js/manual-hotspots
v3.3.2
Published
[](https://github.com/kaltura-ps/playkit-js-manual-hotspots/actions/workflows/run_canary_full_flow.yaml) [![code style: prettier
Keywords
Readme
PlayKit JS Manual Hotspots - plugin for the [PlayKit JS Player]
PlayKit JS Manual Hotspots allows you to add interactive clickable overlays to your video player at specific times. Hotspots can be configured entirely at runtime via JavaScript config, with support for multiple click actions.
PlayKit JS hotspots is written in ECMAScript6, statically analysed using Typescript and transpiled in ECMAScript5 using Babel.
Features
- Runtime configuration - Pass hotspots via plugin config, no metadata required
- Flexible positioning - Use presets (
top-left,center, etc.) or custom coordinates - Multiple click actions:
jumpToTime- Seek to a specific video timeopenUrl/openUrlInNewTab- Navigate to URLsscrollToAnchor- Scroll page to any CSS selectorpostMessage- Send messages to parent window
- Customizable styling - Full control over colors, fonts, and borders
- Auto-pause behavior - Configurable per action type
Getting Started
Prerequisites
The plugin requires Kaltura Player to be loaded first.
Installing
First, clone and run yarn to install dependencies:
git clone https://github.com/kaltura-ps/playkit-js-manual-hotspots.git
cd playkit-js-manual-hotspots
yarn installBuilding
Then, build the player
yarn run buildEmbed the library in your test page
Finally, add the bundle as a script tag in your page, and initialize the player
<script type="text/javascript" src="/PATH/TO/FILE/kaltura-player.js"></script>
<!--Kaltura player-->
<script type="text/javascript" src="/PATH/TO/FILE/playkit-manual-hotspots.js"></script>
<!--PlayKit hotspots plugin-->
<div id="player-placeholder" style="height:360px; width:640px">
<script type="text/javascript">
var playerContainer = document.querySelector("#player-placeholder");
var config = {
...
targetId: 'player-placeholder',
plugins: {
"playkit-js-manual-hotspots": { ... },
}
...
};
var player = KalturaPlayer.setup(config);
player.loadMedia(...);
</script>
</div>Documentation
- Configuration Guide - Full configuration reference with examples
And coding style tests
We use ESLint recommended set with some additions for enforcing [Flow] types and other rules.
See ESLint config for full configuration.
We also use .editorconfig to maintain consistent coding styles and settings, please make sure you comply with the styling.
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
License
This project is licensed under the AGPL-3.0 License - see the LICENSE.md file for details
Commands
Run dev server: yarn dev;
Bump version: yarn release;
Quick Start
const config = {
targetId: 'player-placeholder',
plugins: {
uiManagers: {},
'playkit-js-manual-hotspots': {
hotspots: [
// Minimal hotspot - just time and label
{
startTime: 5000,
label: 'Click me!'
},
// With position and click action
{
startTime: 10000,
endTime: 20000,
label: 'Skip Intro →',
layout: {
position: 'bottom-right',
size: 'm'
},
onClick: {
type: 'jumpToTime',
jumpToTime: 30000
}
},
// Scroll to page element
{
startTime: 15000,
label: '↓ Learn More',
onClick: {
type: 'scrollToAnchor',
selector: '#features-section',
scrollBehavior: 'smooth',
offsetY: 64
}
},
// Send message to parent window
{
startTime: 20000,
label: 'Add to Cart',
onClick: {
type: 'postMessage',
message: { action: 'add-to-cart', productId: 'ABC-123' },
pauseVideo: true
}
}
]
}
}
};
const player = KalturaPlayer.setup(config);See Configuration Guide for all options.
Dev env
Node version: up to 14+
If nvm installed: nvm use change version of current terminal to required.
ARM Architecture support
Install dependencies with npm install --target_arch=x64 set target arch for running it through Rosetta (requires Rosetta installation).
