open-index/open-npm huggingface dataset:
npm package: @heka-health/heka-react-native
Description: Heka Health React Native Plugin
Author: heka
Latest version: 0.3.1

# heka-react-native

heka health plugin for react native

## Installation

#### npm

```sh
npm install --save @heka-health/heka-react-native react-native-app-auth
```

#### yarn

```sh
yarn add @heka-health/heka-react-native react-native-app-auth
```

## Setup

<!-- Please refer to the platform specific setup for `react-native-app-auth`
- [iOS](https://github.com/FormidableLabs/react-native-app-auth#ios-setup)
- [Android](https://github.com/FormidableLabs/react-native-app-auth#android-setup)
 -->

#### Google Fit

> Note: Google fit is only supported on Android devices for now.

##### 1. Google Client Id

To enable Google Fit, you need to provide the Google Client ID generated for your app. The Client ID can be set using the edit app option in the Heka dashboard or when creating a new app.

To get the Google Client ID, follow this guide at Get an OAuth 2.0 Client ID | Google Fit. It will be of the format `YOUR_CLIENT_ID.apps.googleusercontent.com`

##### 2. Redirect URI

Redirect URI needs to be set up so that the application is opened successfully post Google Auth. Make the following couple of changes to `android/app/src/main/AndroidManifest.xml` file.

In application tag, add the following:

```xml
...
  <application
    ...
    ...
    # Add the line below
    xmlns:tools="http://schemas.android.com/tools"
  >
    ....
  </application>
...
```

Now add the whole activity inside the application. Make sure this activity is not nested inside another activity.

```xml
  <activity
      android:name="net.openid.appauth.RedirectUriReceiverActivity"
      android:exported="true"
      tools:node="replace">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
          android:scheme="com.googleusercontent.apps.<YOUR_GOOGLE_CLIENT_ID>"
        />
      </intent-filter>
  </activity>
```

There are other simpler ways to set up app redirect URLs, however, this method is recommended to support multiple redirect URLs for various platforms like Fitbit, Strava etc.

## Usage

```typescript
import { HekaComponent } from '@heka-health/heka-react-native';

const appKey = 'YOUR_API_KEY';
const userUUID = 'YOUR_USER_UUID';

<HekaComponent appKey={appKey} userUUID={userUUID} />;
```

The `userUuid` is a unique user identifier that you use across your app. We don't store any user personal information of your users and will link their health data to this uuid.
npm package: @hekaiyu/element
Description: Vue3 components library
Author: KaiYu He
Latest version: 1.2.1

# h-element

### 安装

```bash
npm install @hekaiyu/element --save
```

### 使用方法

**全局使用**

在 main.ts (使用ts开发) 或者 main.js，写入以下代码

```js
// 引入所有组件
import HElement from '@hekaiyu/element'
// 引入样式
import '@hekaiyu/element/dist/index.css'

import App from './App.vue'
// 全局使用
createApp(App).use(HElement).mount('#app')
```

页面上使用组件

```vue
<template>
  <h-button>我是 HButton</h-button>
  <h-button plain>Plain h-button</h-button>
  <h-button round>Round h-button</h-button>
  <h-button circle>VK</h-button>
  <h-button disabled>Disabled h-button</h-button><br /><br />
  <h-button type="primary">Primary</h-button>
  <h-button type="success">Success</h-button>
  <h-button type="info">Info</h-button>
  <h-button type="warning">Warning</h-button>
  <h-button type="danger">Danger</h-button><br /><br />
  <h-button type="primary" plain>Primary</h-button>
  <h-button type="success" plain>Success</h-button>
  <h-button type="info" plain>Info</h-button>
  <h-button type="warning" plain>Warning</h-button>
  <h-button type="danger" plain>Danger</h-button><br /><br />
  <h-button size="large">Large</h-button>
  <h-button size="small">Small</h-button><br /><br />
  <h-button size="large" loading>Loading</h-button>
  <h-button size="large" icon="arrow-up">Icon</h-button><br /><br />
</template>
```

**单个导入**

H-Element 提供了基于 ES Module 的开箱即用的 Tree Shaking 功能。

在 main.ts (使用ts开发) 或者 main.js，写入以下代码

```js
// 引入样式
import '@hekaiyu/element/dist/index.css'
```

```vue
<template>
  <Button>我是 HButton</Button>
</template>
<script>
  import { Button } from '@hekaiyu/element'
  export default {
    components: { Button },
  }
</script>
```
npm package: @hekaya/cli
Description: Command-line tool for Hekaya screenplay markup
Author: Cairo Indie Filmmakers Club
Latest version: 1.5.0

# @hekaya/cli

Command-line tool for [Hekaya](https://github.com/michaelkmalak/hekaya) screenplay markup. Parse, render, export, validate, and convert Arabic screenplays.

## Install

```bash
npm install -g @hekaya/cli
```

## Commands

### Parse to JSON

```bash
hekaya parse script.hekaya
hekaya parse script.hekaya -o script.json
hekaya parse script.hekaya --no-pretty
```

### Render to HTML

```bash
hekaya render script.hekaya
hekaya render script.hekaya -o script.html
```

### Export to PDF

```bash
hekaya export script.hekaya -o script.pdf
hekaya export script.hekaya --no-title-page
hekaya export script.hekaya --meta              # include sections/synopses
hekaya export script.hekaya --include-notes      # include [[notes]] in PDF
```

### Validate

```bash
hekaya validate script.hekaya
# Checks: title page, scene headings, orphaned dialogue, empty body
```

### Convert between formats

```bash
hekaya convert script.hekaya -o script.fountain
hekaya convert script.fountain -o script.hekaya
```

## Example

```bash
# Write a screenplay
cat > film.hekaya << 'EOF'
العنوان: آخر أيام الصيف
سيناريو: سمير عبدالحميد

داخلي - قهوة بلدي - نهار

سمير قاعد لوحده في ركن القهوة.

@سمير
(بهدوء)
قهوة سادة، لو سمحت.
EOF

# Export to PDF
hekaya export film.hekaya -o film.pdf
```

## License

MIT
npm package: @hekaya/parser
Description: Arabic-first screenplay markup parser implementing the Hekaya specification
Author: Cairo Indie Filmmakers Club
Latest version: 1.5.0

# @hekaya/parser

Arabic-first screenplay markup parser implementing the [Hekaya](https://github.com/michaelkmalak/hekaya) specification. Extends Fountain for RTL languages.

## Install

```bash
npm install @hekaya/parser
```

## Usage

```typescript
import { Hekaya } from '@hekaya/parser';

const script = Hekaya.parse(`العنوان: آخر أيام الصيف
سيناريو: سمير عبدالحميد

داخلي - قهوة بلدي - نهار

سمير قاعد لوحده في ركن القهوة.

@سمير
(بهدوء)
قهوة سادة، لو سمحت.

- قطع -

خارجي - شارع وسط البلد - ليل`);

console.log(script.direction); // 'rtl'
console.log(script.tokens.length); // 10
console.log(script.characters); // ['سمير']
```

### Parse options

```typescript
const script = Hekaya.parse(input, {
  defaultDirection: 'rtl', // 'rtl' | 'ltr' | 'auto' (default: 'auto')
  enableCharacterRegistry: true, // auto-detect character names (default: true)
  includeNotes: false, // keep [[notes]] as tokens (default: false)
});
```

### Serialize back to text

```typescript
import { serialize } from '@hekaya/parser';

const text = serialize(script);
// Produces valid Hekaya/Fountain plain text from parsed tokens
```

### Character Registry

The parser auto-detects character names after they're introduced with `@`:

```typescript
const script = Hekaya.parse(`
@سمير
أهلاً يا نادية.

سمير
أنا رايح القهوة.
`);

// Both lines are detected as character elements
// because @سمير registered the name on first use
console.log(script.characters); // ['سمير']
```

### Bidirectional text utilities

```typescript
import { detectDirection, containsArabic } from '@hekaya/parser';

detectDirection('سمير'); // 'rtl'
detectDirection('Hello'); // 'ltr'
containsArabic('سمير says'); // true
```

## Token types

`scene_heading`, `action`, `character`, `dialogue`, `parenthetical`, `transition`, `centered`, `page_break`, `section`, `synopsis`, `note_inline`, `boneyard`, `lyrics`, `blank`

## License

MIT
npm package: @hekaya/pdf
Description: PDF generator for Hekaya screenplays with Arabic/RTL support
Author: Cairo Indie Filmmakers Club
Latest version: 1.5.0

# @hekaya/pdf

PDF generator for [Hekaya](https://github.com/michaelkmalak/hekaya) screenplays with Arabic/RTL support. Produces industry-standard screenplay PDFs on A4 paper.

## Install

```bash
npm install @hekaya/pdf
```

## Usage

```typescript
import { Hekaya } from '@hekaya/parser';
import { generatePdf } from '@hekaya/pdf';
import { writeFileSync } from 'node:fs';

const script = Hekaya.parse(`العنوان: آخر أيام الصيف
سيناريو: سمير عبدالحميد

داخلي - قهوة بلدي - نهار

سمير قاعد لوحده في ركن القهوة.

@سمير
(بهدوء)
قهوة سادة، لو سمحت.

- قطع -`);

const pdf = await generatePdf(script);
writeFileSync('screenplay.pdf', pdf);
```

### Options

```typescript
const pdf = await generatePdf(script, {
  includeTitlePage: true, // include title page (default: true)
  includeMetaElements: false, // include sections/synopses (default: false)
  includeNotes: false, // include [[notes]] in output (default: false)
  fontsDir: '/path/to/fonts', // custom fonts directory (optional)
});
```

### Including notes in working drafts

```typescript
const script = Hekaya.parse(input, { includeNotes: true });
const pdf = await generatePdf(script, { includeNotes: true });
// Notes render in italic gray text: [note content]
```

## Features

- A4 page size with standard screenplay margins
- RTL-aware layout (binding margin on right for Arabic)
- Arabic fonts: Cascadia Mono (bundled)
- English fonts: Courier (bundled)
- Title page with centered title, author, metadata
- Scene heading 3-column layout (type - location - time of day)
- Dual dialogue columns
- Inline formatting (bold, italic, underline)
- Page numbers (Arabic-Indic numerals for RTL)

## License

MIT
npm package: @hekaya/renderer
Description: HTML renderer for Hekaya screenplay markup with RTL support
Author: Cairo Indie Filmmakers Club
Latest version: 1.5.0

# @hekaya/renderer

HTML renderer for [Hekaya](https://github.com/michaelkmalak/hekaya) screenplay markup with full RTL support.

## Install

```bash
npm install @hekaya/renderer
```

## Usage

```typescript
import { Hekaya } from '@hekaya/parser';
import { render } from '@hekaya/renderer';

const script = Hekaya.parse(`العنوان: آخر أيام الصيف
سيناريو: سمير عبدالحميد

داخلي - قهوة بلدي - نهار

@سمير
(بهدوء)
قهوة سادة، لو سمحت.`);

const html = render(script);
// Returns a complete HTML document with RTL-aware CSS
```

### Options

```typescript
const html = render(script, {
  includeMetaElements: true, // include sections/synopses (default: false)
});
```

### Standalone stylesheet

```typescript
import { getStylesheet } from '@hekaya/renderer';

const css = getStylesheet();
// Returns the screenplay CSS as a string
```

## Output

Generates a standalone HTML document with:

- RTL/LTR direction based on script content
- Screenplay-formatted elements (scene headings, dialogue, transitions, etc.)
- Inline formatting (bold, italic, underline)
- Title page rendering
- Dual dialogue columns

## License

MIT
npm package: @hekeh/easy-audio-player-react
Description: A simple audio player
Latest version: 1.0.5

# "Easy Audio Player"

[English](https://www.github.com/HEKEH/easy-audio-player/blob/master/README.md) | [中文](https://www.github.com/HEKEH/easy-audio-player/blob/master/README.zh-cn.md)

## 介绍

Easy Audio Player 是一个简单的音频播放器，支持 Vue 3 和 React。

![视图](https://raw.githubusercontent.com/HEKEH/easy-audio-player/master/img/demo.png)

## 安装

### Vue 3

```bash
# 使用 npm
npm install @hekeh/easy-audio-player-vue

# 使用 yarn
yarn add @hekeh/easy-audio-player-vue

# 使用 pnpm
pnpm add @hekeh/easy-audio-player-vue
```

### React

```bash
# Using npm
npm install @hekeh/easy-audio-player-react

# Using yarn
yarn add @hekeh/easy-audio-player-react

# Using pnpm
pnpm add @hekeh/easy-audio-player-react
```

## 参数

| 参数    | 说明     | 类型                 | 必填 | 默认值            |
| ------- | -------- | -------------------- | ---- | ----------------- |
| url     | 音频链接 | `string`             | 是   | -                 |
| options | 配置项   | `AudioPlayerOptions` | 否   | 参照options配置项 |

### options 配置项

| 参数               | 说明                         | 类型      | 默认值 |
| ------------------ | ---------------------------- | --------- | ------ |
| stopOthersOnPlay   | 播放时是否停止其他音频播放器 | `boolean` | `true` |
| showDownloadButton | 是否显示下载按钮             | `boolean` | `true` |
npm package: @hekeh/easy-audio-player-vue
Description: A simple audio player
Latest version: 1.0.7

# "Easy Audio Player"

[English](https://www.github.com/HEKEH/easy-audio-player/blob/master/README.md) | [中文](https://www.github.com/HEKEH/easy-audio-player/blob/master/README.zh-cn.md)

## 介绍

Easy Audio Player 是一个简单的音频播放器，支持 Vue 3 和 React。

![视图](https://raw.githubusercontent.com/HEKEH/easy-audio-player/master/img/demo.png)

## 安装

### Vue 3

```bash
# 使用 npm
npm install @hekeh/easy-audio-player-vue

# 使用 yarn
yarn add @hekeh/easy-audio-player-vue

# 使用 pnpm
pnpm add @hekeh/easy-audio-player-vue
```

### React

```bash
# Using npm
npm install @hekeh/easy-audio-player-react

# Using yarn
yarn add @hekeh/easy-audio-player-react

# Using pnpm
pnpm add @hekeh/easy-audio-player-react
```

## 参数

| 参数    | 说明     | 类型                 | 必填 | 默认值            |
| ------- | -------- | -------------------- | ---- | ----------------- |
| url     | 音频链接 | `string`             | 是   | -                 |
| options | 配置项   | `AudioPlayerOptions` | 否   | 参照options配置项 |

### options 配置项

| 参数               | 说明                         | 类型      | 默认值 |
| ------------------ | ---------------------------- | --------- | ------ |
| stopOthersOnPlay   | 播放时是否停止其他音频播放器 | `boolean` | `true` |
| showDownloadButton | 是否显示下载按钮             | `boolean` | `true` |
npm package: @hekeh/el-popover
Description: A popover component extracted from element-plus
Latest version: 1.0.3

# "El Popover" 一个基于 Element Plus 的 Popover 组件

[English](https://www.github.com/HEKEH/el-popover/blob/master/README.md) | [中文](https://www.github.com/HEKEH/el-popover/blob/master/README.zh-cn.md)

## 介绍

"El Popover" 是一个基于 Element Plus 的轻量级 Vue3 Popover 组件库。它提供了与 Element Plus 完全一致的 Popover 和 Tooltip 功能，但无需引入完整的 Element Plus 库。同时，这也可以作为 Element Plus Popover 组件的学习资料。

## 特点

- 🎯 轻量级：仅包含 Popover 组件核心功能
- 💪 功能完整：与 Element Plus Popover 组件功能一致
- 🔗 零学习成本：API 与 Element Plus 完全相同
- 🚀 更小的体积：不需要引入完整的 Element Plus

## 安装

```bash
# 使用 npm
npm install @hekeh/el-popover

# 使用 yarn
yarn add @hekeh/el-popover

# 使用 pnpm
pnpm add @hekeh/el-popover
```

## 使用方法

### Popover

```typescript
import { Popover } from '@hekeh/el-popover';
```

本组件的 API 与 Element Plus 的 Popover 组件完全一致。你可以参考 [Element Plus 的 Popover 文档](https://element-plus.org/zh-CN/component/popover.html) 获取完整用法。

### Tooltip

```typescript
import { Tooltip } from '@hekeh/el-popover';
```

本组件的 API 与 Element Plus 的 Tooltip 组件完全一致。你可以参考 [Element Plus 的 Tooltip 文档](https://element-plus.org/zh-CN/component/tooltip.html) 获取完整用法。

## 许可证

MIT
npm package: @hekerman/bmp
Description: Default hekerman bmp encoder/decoder.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/bmp</h1>
  <p>Default Jimp bmp encoder/decoder.</p>
</div>
npm package: @hekerman/cli
Description: jimp on the cli
Latest version: 0.16.1

<div align="center">
  <a href="https://intuit.github.io/Ignite/">
    <img width="200" height="200"
      src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  </a>
  <h1>@jimp/cli</h1>
  <p>jimp on the cli</p>
</div>

Jimp on the CLI.

## Usage

Run with `--help` to get help information. Further help by running `--help <command>`. The two main functions are `read` and `create`.

```sh
jimp <command>

Commands:
  jimp read [img]              Read and image into jimp. (PNG, JPEG, TIFF, BMP, or GIF)
  jimp create                  Create a new image
  jimp distance [img1] [img2]  Calculates the hamming distance of two images based on their
                               perceptual hash
  jimp diff [img1] [img2]      Diffs two images
  jimp rgbaToInt               A static helper method that converts RGBA values to a single
                               integer value. args: r, g, b, a (0 - 255)
  jimp intToRGBA               A static helper method that converts RGBA values to a single
                               integer value. args: num (eg 0xFF0000FF)
  jimp cssColorToHex           Converts a css color (Hex, 8-digit (RGBA) Hex, RGB, RGBA, HSL,
                               HSLA, HSV, HSVA, Named) to a hex number
  jimp limit255                Limits a number to between 0 or 255. args: num
  jimp compareHashes           Calculates the hamming distance of two images based on their
                               perceptual hash. args: hash1, hash2
  jimp colorDiff               Compute color difference. args: color1, color2 ({r:val, g:val,
                               b:val, a:val})
  jimp measureText             Measure how wide printing a string will be. args: text
  jimp measureTextHeight       Measure how tall printing a string will be. args: text, width

Jimp Configuration:
  --plugins, -p   Jimp plugins to load.                                                  [array]
  --types, -t     Jimp types to load.                                                    [array]
  --loadFont, -f  Path of font to load and be used in text operations                   [string]

Options:
  --help         Show help                                                             [boolean]
  --version      Show version number                                                   [boolean]
  --verbose, -v  enable more logging                                                   [boolean]

Examples:
  jimp read path/to/image.png --output output.jpg  Convert images from one type to another. See
                                                   more under jimp read --help
```
npm package: @hekerman/core
Description: Jimp core
Author: Oliver Moran
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/core</h1>
</div>

The main Jimp class. This class can be extended with types and bitmap manipulation functions. Out of the box it does not support any image type.

## Available Methods

### Jimp

The Jimp class constructor.

### addConstants

Add constant or static methods to the Jimp constructor.

```js
addConstants({
  MIME_SPECIAL: 'image/special'
});
```

### addJimpMethods

Add a bitmap manipulation method to Jimp constructor. These method should return this so that the function can be chain-able.

```js
addJimpMethods({
  cropCrazy: function() {
    // Your custom image manipulation method

    return this;
  }
})

const image = await Jimp.read(...);

image.resize(10, Jimp.AUTO),
  .cropCrazy();

await image.writeAsync('test.png');
```

### addType

Add a image mime type to Jimp constructor. First argument is a mime type and the second is an array of file extension for that type.

```js
addType('image/special', ['spec', 'special']);
```
npm package: @hekerman/gif
Description: Default hekerman gif encoder/decoder.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/gif</h1>
  <p>Default Jimp gif decoder.</p>
</div>

NOTE: Encoder currently unavailable.
npm package: @hekerman/jpeg
Description: Default hekerman jpeg encoder/decoder.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/jpeg</h1>
  <p>Default Jimp jpeg encoder/decoder.</p>
</div>

## Available Methods

### Jimp.quality

Sets the quality of the image when saving as JPEG format (default is 100)
npm package: @hekerman/plugin-blit
Description: Blit an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-blit</h1>
  <p>Blit an image.</p>
</div>

> Blit - a data operation commonly used in computer graphics in which several bitmaps are combined into one using a boolean function.

## Usage

Blits a source image on to this image

- @param {Jimp} src image to blit
- @param {number} x the x position to blit the image
- @param {number} y the y position to blit the image
- @param {number} srcx (optional) the x position from which to crop the source image
- @param {number} srcy (optional) the y position from which to crop the source image
- @param {number} srcw (optional) the width to which to crop the source image
- @param {number} srch (optional) the height to which to crop the source image
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');
  const parrot = await jimp.read('test/party-parrot.png');

  image.blit(parrot, x, y);
}

main();
```
npm package: @hekerman/plugin-blur
Description: blur an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-blur</h1>
  <p>Blur an image.</p>
</div>

A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker

## Usage

- @param {number} r the pixel radius of the blur
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.blur(5);
}

main();
```
npm package: @hekerman/plugin-circle
Description: Creates a circle out of an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-circle</h1>
  <p>Creates a circle out of an image.</p>
</div>

## Usage

- @param {function(Error, Jimp)} options (optional) radius, x, y
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.circle();
  // or
  image.circle({ radius: 50, x: 25, y: 25 });
}

main();
```
npm package: @hekerman/plugin-contain
Description: contain an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-contain</h1>
  <p>Contain an image within a height and width.</p>
</div>

Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed.

## Usage

- @param {number} w the width to resize the image to
- @param {number} h the height to resize the image to
- @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.contain(150, 100);
}

main();
```

### Align modes

The following constants can be passed to `image.contain`:

```js
Jimp.HORIZONTAL_ALIGN_LEFT;
Jimp.HORIZONTAL_ALIGN_CENTER;
Jimp.HORIZONTAL_ALIGN_RIGHT;

Jimp.VERTICAL_ALIGN_TOP;
Jimp.VERTICAL_ALIGN_MIDDLE;
Jimp.VERTICAL_ALIGN_BOTTOM;
```

For example:

```js
image.contain(250, 250, Jimp.HORIZONTAL_ALIGN_LEFT | Jimp.VERTICAL_ALIGN_TOP);
image.contain(
  250,
  250,
  Jimp.HORIZONTAL_ALIGN_RIGHT | Jimp.VERTICAL_ALIGN_BOTTOM
);
```

Default align mode for `image.contain` is:

```js
Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE;
```
npm package: @hekerman/plugin-cover
Description: cover an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-cover</h1>
</div>

Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped.

## Usage

- @param {number} w the width to resize the image to
- @param {number} h the height to resize the image to
- @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.cover(150, 100);
}

main();
```

### Align modes

The following constants can be passed to `image.cover`:

```js
Jimp.HORIZONTAL_ALIGN_LEFT;
Jimp.HORIZONTAL_ALIGN_CENTER;
Jimp.HORIZONTAL_ALIGN_RIGHT;

Jimp.VERTICAL_ALIGN_TOP;
Jimp.VERTICAL_ALIGN_MIDDLE;
Jimp.VERTICAL_ALIGN_BOTTOM;
```

For example:

```js
image.cover(250, 250, Jimp.HORIZONTAL_ALIGN_LEFT | Jimp.VERTICAL_ALIGN_TOP);
image.cover(250, 250, Jimp.HORIZONTAL_ALIGN_RIGHT | Jimp.VERTICAL_ALIGN_BOTTOM);
```

Default align mode for `image.cover` is:

```js
Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE;
```
npm package: @hekerman/plugin-crop
Description: crop an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-crop</h1>
  <p>Crop an image.</p>
</div>

## Crop

Crops the image at a given point to a give size

- @param {number} x the x coordinate to crop form
- @param {number} y the y coordinate to crop form
- @param w the width of the crop region
- @param h the height of the crop region
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.crop(150, 150);
}

main();
```

## AutoCrop

AutoCrop same color borders from this image

- @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
- @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)

or

- @param {object} options object
  - tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
  - cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)
  - cropSymmetric (optional): flag to force cropping top be symmetric. north and south / east and west are cropped by the same value
  - leaveBorder (optional): integer of how many pixels of the background color to leave around the image

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.autocrop();
  image.autocrop({ cropOnlyFrames: false, cropSymmetric: true });
}

main();
```
npm package: @hekerman/plugin-displace
Description: displace an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-displace</h1>
  <p>Displace an image.</p>
</div>

Displaces the image based on the provided displacement map

## Usage

- @param {object} map the source Jimp instance
- @param {number} offset the maximum displacement value
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  // Make me better!
  image.displace(map, 10);
}

main();
```
npm package: @hekerman/plugin-dither
Description: Dither an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-dither</h1>
  <p>Apply a dither effect to an image.</p>
</div>

> Dither - is an intentionally applied form of noise used to randomize quantization error, preventing large-scale patterns such as color banding in images. Dither is routinely used in processing of both digital audio and video data, and is often one of the last stages of mastering audio to a CD.

## Usage

Apply a ordered dithering effect

- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.dither565();
}

main();
```
npm package: @hekerman/plugin-fisheye
Description: Apply a fisheye effect to an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-fisheye</h1>
  <p>Apply a fisheye effect to an image</p>
</div>

## Usage

- @param {function(Error, Jimp)} options (optional) radius
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.fisheye();
  // or
  image.fisheye({ r: 1.6 });
}

main();
```

Produces nice images with [@jimp/plugin-circle](../plugin-circle).
npm package: @hekerman/plugin-flip
Description: flip an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-flip</h1>
  <p>flip an image.</p>
</div>

Flip the image horizontally or vertically. Defaults to horizontal.

Also aliased as `mirror`

## Usage

- @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally
- @param {boolean} vertical a Boolean, if true the image will be flipped vertically
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.flip();
  image.mirror();
  image.flip(false, true);
}

main();
```
npm package: @hekerman/plugin-gaussian
Description: gaussian blur an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-gaussian</h1>
  <p>Gaussian blur an image.</p>
</div>

Applies a true Gaussian blur to the image (warning: this is VERY slow)

## Usage

- @param {number} r the pixel radius of the blur
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.gaussian(15);
}

main();
```
npm package: @hekerman/plugin-invert
Description: invert an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-invert</h1>
  <p>Invert an image's colors.</p>
</div>

Invert an image's colors.

## Usage

- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.invert();
}

main();
```
npm package: @hekerman/plugin-mask
Description: mask an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-mask</h1>
  <p>mask an image with another image.</p>
</div>

Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent.

## Usage

- @param {Jimp} src the source Jimp instance
- @param {number} x the horizontal position to blit the image
- @param {number} y the vertical position to blit the image
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');
  const mask = await jimp.read('test/mask.png');

  image.mask(mask);
}
```
npm package: @hekerman/plugin-normalize
Description: normalize an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-normalize</h1>
  <p>Normalize an image's colors.</p>
</div>

Normalizes an images color by computing a histogram.

## Usage

- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.normalize();
}

main();
```
npm package: @hekerman/plugin-resize
Description: Resize an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-resize</h1>
  <p>Resize an image.</p>
</div>

Resizes the image to a set width and height using a 2-pass bilinear algorithm/

## Usage

- @param {number} w the width to resize the image to (or Jimp.AUTO)
- @param {number} h the height to resize the image to (or Jimp.AUTO)
- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
	// Read the image.
	const image = await jimp.read('test/image.png');

	// Resize the image to width 150 and auto height.
	await image.resize(150, jimp.AUTO);

	// Save and overwrite the image
	await image.writeAsync('test/image.png');
}

main();
```

## Auto

`Jimp.AUTO` can be passes to either the height or width and jimp will scale the image accordingly. `Jimp.AUTO` cannot be both height and width.

```js
// resize the height to 250 and scale the width accordingly
image.resize(Jimp.AUTO, 250);
// resize the width to 250 and scale the height accordingly
image.resize(250, Jimp.AUTO);
```

### Resize modes

The default resizing algorithm uses a bilinear method.

Optionally, the following constants can be passed to choose a particular resizing algorithm:

```js
Jimp.RESIZE_NEAREST_NEIGHBOR;
Jimp.RESIZE_BILINEAR;
Jimp.RESIZE_BICUBIC;
Jimp.RESIZE_HERMITE;
Jimp.RESIZE_BEZIER;
```

```js
image.resize(250, 250, Jimp.RESIZE_BEZIER);
```
npm package: @hekerman/plugin-rotate
Description: Rotate an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-rotate</h1>
  <p>Rotate an image.</p>
</div>

Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately.

## Usage

- @param {number} deg the number of degrees to rotate the image by
- @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.rotate(90);
}

main();
```
npm package: @hekerman/plugin-scale
Description: scale an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-scale</h1>
  <p>Scale an image.</p>
</div>

## scale

Uniformly scales the image by a factor.

- @param {number} f the factor to scale the image by
- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.scale(2);
  image.scale(2, jimp.RESIZE_BEZIER);
}

main();
```

## scaleToFit

Scale the image to the largest size that fits inside the rectangle that has the given width and height.

- @param {number} w the width to resize the image to
- @param {number} h the height to resize the image to
- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.scaleToFit(100, 100);
}

main();
```
npm package: @hekerman/plugin-shadow
Description: Creates a shadow on an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-shadow</h1>
  <p>Creates a shadow on an image.</p>
</div>

## Usage

- @param {function(Error, Jimp)} options (optional)
  - opacity - opacity of the shadow between 0 and 1
  - size,- of the shadow
  - blur - how blurry the shadow is
  - x - x position of shadow
  - y - y position of shadow
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.shadow();
  // or
  image.shadow({ opacity: 0.8, size: 1.2, blur: 10, x: -75, y: -75 });
}

main();
```
npm package: @hekerman/plugin-threshold
Description: Lightens an image.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugin-threshold</h1>
  <p>Lightens an image.</p>
</div>

This is useful as a simplified method for processing scanned drawings, signatures, etc

## Usage

- @param {number} options object
  - max: A number auto limited between 0 - 255
  - replace: (optional) A number auto limited between 0 - 255 (default 255)
  - autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true)
- @param {function(Error, Jimp)} cb (optional) a callback for when complete

```js
import jimp from 'jimp';

async function main() {
  const image = await jimp.read('test/image.png');

  image.threshold({ max: 150 });
  // or
  image.threshold({ max: 200, replace: 200, autoGreyscale: false });
}

main();
```
npm package: @hekerman/plugins
Description: Default hekerman plugin.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/plugins</h1>
  <p>Default Jimp plugins.</p>
</div>

## Included Plugins

- [blit](../plugin-blit)
- [blur](../plugin-blur)
- [color](../plugin-color)
- [contain](../plugin-contain)
- [cover](../plugin-cover)
- [displace](../plugin-displace)
- [dither](../plugin-dither)
- [flip](../plugin-flip)
- [gaussian](../plugin-gaussian)
- [invert](../plugin-invert)
- [mask](../plugin-mask)
- [normalize](../plugin-normalize)
- [print](../plugin-print)
- [resize](../plugin-resize)
- [rotate](../plugin-rotate)
- [scale](../plugin-scale)
npm package: @hekerman/png
Description: Default hekerman png encoder/decoder.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/png</h1>
  <p>Default Jimp png encoder/decoder.</p>
</div>

## Available Methods

### Jimp.deflateLevel

Sets the deflate level used when saving as PNG format (default is 9)

### Jimp.deflateStrategy

Sets the deflate strategy used when saving as PNG format (default is 3)

### Jimp.filterType

Sets the filter type used when saving as PNG format (default is automatic filters)

### Jimp.colorType

Sets the color type used when saving as PNG format (one of 0, 2, 4, 6)

### Filter Types

```js
Jimp.PNG_FILTER_AUTO;
Jimp.PNG_FILTER_NONE;
Jimp.PNG_FILTER_SUB;
Jimp.PNG_FILTER_UP;
Jimp.PNG_FILTER_AVERAGE;
Jimp.PNG_FILTER_PATH;
```
npm package: @hekerman/test-utils
Description: Test utils for hekerman extensions.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/utils</h1>
  <p>Utils for jimp extensions.</p>
</div>

## Available Methods

### isNodePattern

Determines if function was passed an node callback.

```js
if (isNodePattern(cb)) {
  cb.call(this, null, this);
}
```

### throwError

Either throws the error or calls the callback with the error.

```js
if (/* check for error */) {
  return throwError.call(this, 'someError', cb);
}
```

### scan

Scans through a region of the bitmap, calling a function for each pixel.

```js
function removeRed(image) {
  return scan(image, 0, 0, image.bitmap.width, image.bitmap.height, function(
    x,
    y,
    index
  ) {
    const red = this.bitmap.data[index + 0];
    const green = this.bitmap.data[index + 1];
    const blue = this.bitmap.data[index + 2];
    const alpha = this.bitmap.data[index + 3];

    this.bitmap.data[index + 0] = 0;
    this.bitmap.data[index + 1] = green;
    this.bitmap.data[index + 2] = blue;
    this.bitmap.data[index + 3] = alpha;
  });
}
```
npm package: @hekerman/tiff
Description: Default hekerman tiff encoder/decoder.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/tiff</h1>
  <p>Default Jimp tiff encoder/decoder.</p>
</div>
npm package: @hekerman/types
Description: Default hekerman encoder/decoders.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/types</h1>
  <p>Default Jimp types.</p>
</div>

## Supported Image Types

- [bmp](../type-bmp)
- [gif](../type-gif)
- [jpeg](../type-jpeg)
- [png](../type-png)
- [tiff](../type-tiff)
npm package: @hekerman/utils
Description: Utils for hekerman extensions.
Latest version: 0.16.1

<div align="center">
  <img width="200" height="200"
    src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-11/256/crayon.png">
  <h1>@jimp/utils</h1>
  <p>Utils for jimp extensions.</p>
</div>

## Available Methods

### isNodePattern

Determines if function was passed an node callback.

```js
if (isNodePattern(cb)) {
  cb.call(this, null, this);
}
```

### throwError

Either throws the error or calls the callback with the error.

```js
if (/* check for error */) {
  return throwError.call(this, 'someError', cb);
}
```

### scan

Scans through a region of the bitmap, calling a function for each pixel.

```js
function removeRed(image) {
  return scan(image, 0, 0, image.bitmap.width, image.bitmap.height, function(
    x,
    y,
    index
  ) {
    const red = this.bitmap.data[index + 0];
    const green = this.bitmap.data[index + 1];
    const blue = this.bitmap.data[index + 2];
    const alpha = this.bitmap.data[index + 3];

    this.bitmap.data[index + 0] = 0;
    this.bitmap.data[index + 1] = green;
    this.bitmap.data[index + 2] = blue;
    this.bitmap.data[index + 3] = alpha;
  });
}
```

### scanIterator

It's possible to make an iterator scan with a `for ... of`, if you want to `break` the scan before it reaches the end, but note, that this iterator has a huge performance implication:

```js
for (const { x, y, idx, image } of scanIterator(
  image,
  0,
  0,
  image.bitmap.width,
  image.bitmap.height
)) {
}
```
npm package: @hekimadigitalagency/flowsliders
Description: A lightweight slider and carousel library for Webflow using GSAP and JS with attribute-based setup
Author: Bulumko Papu
Latest version: 1.0.8

# FlowSliders

A lightweight, modular JavaScript slider and carousel library for Webflow — powered by GSAP. Built and maintained by [Hekima Digital Agency](https://hekimadigitalagency.com).

## 🚀 Installation

Paste this script tag into your Webflow project (before the `</body>` tag):

```html
<script async type="module"
  src="https://cdn.jsdelivr.net/npm/@hekimadigitalagency/flowsliders">
</script>
```

Add the attribute to your slider wrapper:

```html
<div data-slider="slider001">
  <!-- Your Webflow slider structure -->
</div>
```

## 🎯 Features

- GSAP-powered animations
- Attribute-based integration
- No jQuery
- Works perfectly with Webflow
- Extendable and version-controlled

## 📦 Available Sliders

| Slider ID | Description |
|-----------|-------------|
| slider001 | Basic Slide Carousel |
| slider002 | Coming soon |

More sliders coming soon. Stay tuned!

## 📄 License

MIT

© Hekima Digital Agency
npm package: @heko-lab/eslint-config
Description: A minimalistic shareable ESLint configuration
Author: Andréa Maugars
Latest version: 1.0.5

# @heko-lab/eslint-config

A minimalistic shareable ESLint configuration for modern JavaScript projects. It is meant to be used internally at Heko Lab and may break in the future without notice.

## Installation

```bash
npx install-peerdeps --dev @heko-lab/eslint-config
```

## Usage

Create an `eslint.config.js` file in your project root:

```javascript
import config from "@heko-lab/eslint-config";

export default config;
```

Or extend it with your own rules:

```javascript
import baseConfig from "@heko-lab/eslint-config";

export default [
  ...baseConfig,
  {
    rules: {
      // Your custom rules here
      "no-console": "off",
    },
  },
];
```

## Publishing new versions

```sh
npm version patch  # or minor, major
git push --follow-tags
```

## License

MIT
npm package: @hektodaleky/bandpaycomponents
Description: My Component Library template
Author: Ernesto Freyre
Latest version: 1.0.6

# my-components

This is a template repo. just clone it, export it and rename to set your own component library module name.

## Usage

To install dependencies
``` 
$ yarn install
```

To build
```
$ yarn build 
```

To run tests
```
$ yarn test
```

To run Storybook
``` 
$ yarn storybook
```
npm package: @hektormisplon/numbers
Description: This is a repository containing my personal packages.  At this time the repository is merely meant for getting familiar with publishing my own packages.  Currently, it consists of a small `numbers` *library*.
Author: hektor.misplon@pm.me
Latest version: 1.0.1

# Personal packages

This is a repository containing my personal packages.  At this time the
repository is merely meant for getting familiar with publishing my own
packages.  Currently, it consists of a small `numbers` *library*.

## `@hektormisplon/numbers`

Library consisting of utilities for working with numbers.

Installation:

`npm i @hektormisplon/numbers`