eyedropper-polyfill
Version:
EyeDropper API Polyfill
119 lines (85 loc) • 3.2 kB
Markdown
`eyedropper-polyfill` provides a polyfill implementation for the [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper), allowing you to capture colors from any part of a webpage.
This package was inspired by the EyeDropper API and the need for a consistent color selection mechanism across various browsers where the EyeDropper API is not [natively supported](https://caniuse.com/mdn-api_eyedropper).
<img src="https://raw.githubusercontent.com/iam-medvedev/eyedropper-polyfill/refs/heads/main/demo/preview.gif" width="500" />
[](https://iam-medvedev.github.io/eyedropper-polyfill/)
- [`eyedropper-polyfill`](
- [Table of Contents](
- [Features](
- [Installation](
- [Usage](
- [Opening the EyeDropper](
- [Aborting](
- [Limitations](
- [Contributing](
- [License](
- Provides a polyfilled implementation of the EyeDropper API for capturing colors from web pages.
- Supports selection of colors from different parts of the webpage.
- Offers a magnifier for precise color selection.
- Handles asynchronous operations and signal abortions.
```bash
yarn add eyedropper-polyfill
```
or
```bash
bun add eyedropper-polyfill
```
or
```bash
npm install eyedropper-polyfill
```
or
```typescript
import 'https://esm.sh/eyedropper-polyfill@latest';
```
Import the `EyeDropperPolyfill` from the package:
```typescript
import 'eyedropper-polyfill';
```
It will create EyeDropper support via `window.EyeDropper`.
```typescript
const eyeDropper = new window.EyeDropper();
eyeDropper
.open()
.then((colorSelectionResult) => {
// Use the selected color information
console.log('Selected color:', colorSelectionResult.sRGBHex);
})
.catch((error) => {
console.error('Error:', error);
});
```
```typescript
const eyeDropper = new window.EyeDropper();
const abortController = new window.AbortController();
const signal = abortController.signal;
// Set up an event listener to abort the operation after a certain time
setTimeout(() => {
abortController.abort();
}, 5000); // Abort after 5 seconds
eyeDropper
.open({ signal })
.then((colorSelectionResult) => {
// Use the selected color information
console.log('Selected color:', colorSelectionResult.sRGBHex);
})
.catch((error) => {
if (error.name === 'AbortError') {
console.log('Operation was aborted.');
} else {
console.error('Error:', error);
}
});
```
Since this package is based on [html2canvas-pro](https://yorickshan.github.io/html2canvas-pro/), you can look at their [limitations](https://html2canvas.hertzen.com/documentation.html#limitations).
Contributions are welcome! If you find any issues or have suggestions, please open an issue on the [GitHub repository](https://github.com/iam-medvedev/eyedropper-polyfill).
This package is distributed under the [MIT License](https://opensource.org/licenses/MIT).