open-index/open-npm huggingface dataset:
npm package: @jothsa/stylelint-config-idiomatic-order
Description: stylelint + idiomatic-css = ❤️
Author: Mario Uher
Latest version: 0.2.0

# stylelint + idiomatic-css = ❤️

This is a fork of the original. I updated it with logical properties (thanks to @JulienW) and other features/qol. I have big plans, but we'll see if I end up implementing them.

It should work, but I forgot to make a dev branch whoops

Order your styles based on [idiomatic-css](https://github.com/necolas/idiomatic-css#declaration-order).

## Installation

```sh
npm install --save-dev @jothsa/stylelint-config-idiomatic-order
```

Or use pnpm

```sh
pnpm add --D @jothsa/stylelint-config-idiomatic-order
```

## Usage

Set your stylelint config to:

```json
{
  "extends": "@jothsa/stylelint-config-idiomatic-order"
}
```

You can easily [extend](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/configure.md#extends) the config to your needs.

## [License](LICENSE)
npm package: @jotiotech/node-red-dynamsoft-capture-vision-wrapper
Description: This repository is in not an official Dynamsoft™ Node-RED node. It relies on Dynamsoft™ own nodejs library and infrastructure to do the heavy lifting. This repo just provides an easy way to interact with it from within node-js environment. There already w
Latest version: 0.0.6

# Node-RED Dynamsoft™  Capture Vision Wrapper

This repository is in not an official Dynamsoft™ Node-RED node. It relies on Dynamsoft™ own nodejs library and infrastructure to do the heavy lifting. This repo just provides an easy way to interact with it from within node-js environment. There already was a similar node to do this [node-red-contrib-barcode](https://flows.nodered.org/node/node-red-contrib-barcode) however the repo is dead and it relied on Windows library, therefore it couldn't be easily deployed on linux servers running Node-RED.
npm package: @jotiotech/node-red-sia-premise-device
Description: Simple node-red library that manages connection to SIA server and helps with creation of packets to send to if from connected devices. It just acts as a middle man that for now takes the SIA body and creates rest of the packet to send to the server and ha
Latest version: 1.0.1

# SIA Device

Simple node-red library that manages connection to SIA server and helps with creation of packets to send to if from connected devices.
It just acts as a middle man that for now takes the SIA body and creates rest of the packet to send to the server and handles the ACK or lack of ACK from it.

For now just basic body is supported (not extended one with things like position and what not) and the user needs to create the body in correct SIA format that will get interpreted by the server.
However in future releases it's planned to have a much more streamline approach where user just sends code, name, id, zone area and what not and node will create the body by itself.

Server is configured in it's special node, on the input to SIA Device node user must input following parameters. Account setting will be provided by your SIA server administrator.

```
payload.account - hex string with account number
payload.accountPrefix - hex string with account prefix
payload.body - SIA payload body, e.g. Nri129^^pi4^FA
```
npm package: @jotmo/openclaw-channel
Description: OpenClaw channel plugin for Jotmo bots
Latest version: 0.1.9

# `@jotmo/openclaw-channel`

Jotmo bot channel plugin for OpenClaw.

## Install

```bash
openclaw plugin install @jotmo/openclaw-channel
```

## Configure

After installation, configure the `jotmo` channel and provide:

- `token`: the bot token copied from Jotmo when the bot is created

The plugin connects to the default Jotmo gateway automatically.

Example:

```yaml
channels:
  jotmo:
    accounts:
      default:
        token: "jbot_xxxxx"
```

## Runtime contract

- Jotmo pushes direct/group route messages over WebSocket.
- The plugin forwards those envelopes to the OpenClaw runtime.
- The plugin normalizes OpenClaw raw reply output into one `reply_group_id` timeline whose non-empty content always means the current full visible snapshot for that group.
- Request completion is reported separately from reply-group finality through `bot.route.complete`.
- Zero-byte outbound attachments are rejected locally and surfaced as explicit failure instead of generic upload validation errors.
- The runtime reply is returned to Jotmo through `bot.message.send`.
- A second login with the same bot token will kick the previous session.
npm package: @jotter/animator
Description: Animator is an animation playback controller. It makes it easy to create and control JavaScript animations.
Author: Mariner
Latest version: 2.0.1

# Animator

[![version](https://img.shields.io/npm/v/@jotter/animator?style=flat-square)](https://www.npmjs.com/package/@jotter/animator)
[![codecov](https://codecov.io/gh/Marinerer/jotter/graph/badge.svg?token=G7QXEHCEXW)](https://codecov.io/gh/Marinerer/jotter)
[![downloads](https://img.shields.io/npm/dm/@jotter/animator?style=flat-square)](https://www.npmjs.com/package/@jotter/animator)
[![size](https://img.shields.io/bundlephobia/minzip/@jotter/animator?style=flat-square)](https://bundlephobia.com/package/@jotter/animator)
[![license](https://img.shields.io/npm/l/@jotter/animator?style=flat-square)](https://github.com/Marinerer/jotter/blob/main/libs/Animator)

[ [English](README.md) | [中文](README.zh_CN.md) ]

一个轻量级的动画控制库，用于管理基于时间的动画进度。

## Features

- ⏯ 播放控制 - 开始、暂停、停止
- 🔄 循环播放 - 支持循环播放
- 🚥 进度控制 - 可设置动画进度
- 🚌 速率控制 - 可调节播放速率
- ⏱ 时间控制 - 支持前进/后退时间
- 🎯 自定义动画 - 精确每一帧动画

## Installation

**npm**

```bash
npm install @jotter/animator
```

**browser**

```
https://cdn.jsdelivr.net/npm/@jotter/animator/dist/index.min.js
```

## Usage

```typescript
import Animator from '@jotter/animator'

// 创建动画实例
const animator = new Animator({
	// 动画持续时间（毫秒）
	duration: 1000,
	// 渲染回调函数，progress 范围 0-1
	render: (progress) => {
		const element = document.querySelector('.animated-element')
		element.style.transform = `translateX(${progress * 100}px)`
	},
})

// 播放动画
animator.play()
// 暂停
animator.pause()
// 跳转到 50%
animator.setProgress(0.5)
// 2倍速率播放
animator.setRate(2)
// 前进 1秒
animator.forward(1000)
// 后退 1秒
animator.backward(1000)
```

## API

```js
new Animator(options: AnimatorOptions)
```

### Options

配置选项：

```typescript
interface AnimatorOptions {
	/** 动画持续时间(ms)，默认 1000 */
	duration?: number

	/** 时序函数，用于控制动画进度曲线，默认为线性 */
	timing?: (t: number) => number

	/** 渲染函数，接收当前进度（0-1）作为参数 */
	render?: (progress: number) => void

	/** 播放速率，默认 1 */
	rate?: number

	/** 是否循环播放，默认 false */
	loop?: boolean
}
```

### Methods

#### 控制方法

- `start(): void`

  - 从头开始播放动画
  - 会重置当前进度为 0

- `play(): void`

  - 播放动画
  - 如果动画已暂停，则从当前进度继续播放
  - 如果动画未初始化，则从头开始播放

- `pause(): void`

  - 暂停动画
  - 保持当前进度

- `stop(): void`

  - 停止动画
  - 重置进度为 0

- `forward(time: number): void`

  - 向前调整指定时间（毫秒）
  - 暂停状态下也会触发渲染

- `backward(time: number): void`
  - 向后调整指定时间（毫秒）
  - 暂停状态下也会触发渲染

#### 属性

- `duration: number`（只读）

  - 获取动画持续时间

- `rate: number`（读写）

  - 获取/设置播放速率
  - `setRate(rate: number): void`

- `loop: boolean`（读写）

  - 获取/设置是否循环播放
  - `setLoop(enable: boolean): void`

- `progress: number`（读写）
  - 获取/设置当前动画进度（0-1）
  - `setProgress(progress: number): void`

## 注意事项

1. 时序函数的输入和输出都应该在 `0-1` 范围内
2. 在组件卸载时记得调用 `stop()` 方法清理动画
3. 播放速率不要设置过大或过小，建议范围 `0.1-10`
4. 暂停状态下调用 `forward/backward` 会触发一次渲染

## License

MIT
npm package: @jotter/idle-task
Description: IdleTask is a task scheduler based on browser idle time, designed for managing and executing priority-based task queues.
Author: Mariner
Latest version: 1.0.0

# @jotter/idle-task

IdleTask 是一个基于浏览器空闲时间的任务调度器，用于管理和执行优先级任务队列。它能够在不阻塞主线程的情况下，高效地处理后台任务。

## Features

- 🚀 基于浏览器空闲时间进行任务调度
- 🚥 支持任务优先级设置
- ⏰ 支持任务延时执行
- ⌛ 支持任务超时控制
- 📊 完整的任务状态管理
- 🎯 事件驱动的任务状态监听
- 💪 跨平台兼容（支持浏览器和 Node.js 环境）

## Installation

```bash
npm install @jotter/idle-task
```

## Usage

```javascript
import IdleTask from '@jotter/idle-task'

// 创建任务调度器实例
const scheduler = new IdleTask()

// 添加任务
const taskId = scheduler.addTask(() => {
	// 任务执行逻辑
	console.log('Task executed!')
})

// 添加高优先级任务
const highPriorityTaskId = scheduler.addTask(() => {
	console.log('High priority task executed!')
}, 'high')

// 监听任务状态
scheduler.on(taskId, 'completed', (result) => {
	console.log('Task completed:', result)
})
```

支持三个优先级等级：

```javascript
const taskId = scheduler.addTask(
	() => {
		// 高优先级任务
	},
	{ priority: 'high' }
)
```

- `high`: 高优先级（3）
- `normal`: 普通优先级（2，默认）
- `low`: 低优先级（1）

## API

```typescript
new IdleTask()
```

### Methods

实例方法

#### `addTask(fn, options)`

添加新任务到队列，并返回任务ID。

- `fn`: `Function` - 要执行的任务函数
- `options`: `Object` - 任务配置选项
  - `priority`: `'low' | 'normal' | 'high'` - 任务优先级
  - `delay`: `Number` - 延迟执行时间（毫秒）
  - `timeout`: `Number` - 任务超时时间（毫秒）

#### `cancelTask(taskId)`

取消指定任务。

- `taskId`: Number - 任务ID

#### `on(taskId, event, callback)`

监听任务状态变化。

- `taskId`: Number - 任务ID
- `event`: String - 事件类型
- `callback`: Function - 回调函数
- 返回: Function - 取消监听的函数

#### `start()`

启动任务调度器（默认启动任务）。

#### `stop()`

停止任务调度器。

#### `clear()`

清空任务队列。

#### `getTaskSize(status?)`

获取任务数量。

- `status`: String - 可选，指定状态的任务数量

#### `getTask(taskId)`

获取任务信息。

- `taskId`: Number - 任务ID

### 任务状态 & 事件

任务状态和包含以下几种：

- `pending`: 等待执行
- `running`: 正在执行
- `completed`: 执行完成
- `failed`: 执行失败
- `cancelled`: 已取消
- `timeout`: 执行超时

## 使用示例

```javascript
const scheduler = new IdleTask()

// 添加一个延迟执行的高优先级任务
const taskId = scheduler.addTask(() => console.log('High priority task executed!'), {
	priority: 'high',
	delay: 2000,
	timeout: 5000,
})

// 监听任务状态
scheduler.on(taskId, 'pending', () => console.log('Task pending'))
scheduler.on(taskId, 'running', () => console.log('Task running'))
scheduler.on(taskId, 'completed', (result) => console.log('Task completed:', result))
scheduler.on(taskId, 'failed', (error) => console.error('Task failed:', error))

// 获取任务信息
console.log(scheduler.getTask(taskId))

// 获取待执行任务数量
console.log(scheduler.getTaskSize('pending'))
```

## 注意事项

1. 任务超时时间必须小于延迟时间（如果设置了延迟）
2. 任务一旦开始执行就不能被暂停
3. 已完成或失败的任务不能重新执行
4. 调度器停止后，队列中的任务将不会继续执行，需要重新启动调度器

## 兼容性

- 优先使用 `requestIdleCallback`
- 降级使用 `requestAnimationFrame`
- 最后降级使用 `setTimeout`

## License

MIT
npm package: @jotter/position
Description: Positioning a DOM element relative to another DOM element.
Author: Mariner
Latest version: 2.0.0

# position

[![version](https://img.shields.io/npm/v/@jotter/position?style=flat-square)](https://www.npmjs.com/package/@jotter/position)
[![codecov](https://codecov.io/gh/Marinerer/jotter/graph/badge.svg?token=G7QXEHCEXW)](https://codecov.io/gh/Marinerer/jotter)
[![downloads](https://img.shields.io/npm/dm/@jotter/position?style=flat-square)](https://www.npmjs.com/package/@jotter/position)
[![size](https://img.shields.io/bundlephobia/minzip/@jotter/position?style=flat-square)](https://bundlephobia.com/package/@jotter/position)
[![languages](https://img.shields.io/github/languages/top/Marinerer/jotter?style=flat-square)](https://github.com/Marinerer/jotter/blob/main/libs/position)
[![license](https://img.shields.io/npm/l/@jotter/position?style=flat-square)](https://github.com/Marinerer/jotter/blob/main/libs/position)

> Positioning a DOM element relative to another DOM element.

`position` 提供了一组简单的方法，轻松的将一个DOM元素相对于另一个DOM元素进行定位操作。

## Install

**npm**

```
npm install @jotter/position
```

**browser**

```
https://cdn.jsdelivr.net/npm/@jotter/position/dist/index.min.js
```

## Usage

[Online Demo](https://codepen.io/mengqing/pen/oNVOZop)

```js
import { position } from '@jotter/position'

position('#nav', '#nav-popup', {
	placement: 'right',
	offsetX: 12,
	marginTop: 20,
	marginBottom: 20,
})
```

## API

```js
position(element, referenceElement, options)

//设置元素水平位置
position.setX(element, referenceElement, options)

// 设置元素垂直位置
position.setY(element, referenceElement, options)
```

### element

定位目标元素,可以是 DOM 对象或者选择器字符串

- `Type`: `string | HTMLElement`

### referenceElement

相对定位的参考元素,可以是 DOM 对象或者选择器字符串

- `Type`: `string | HTMLElement`

### options

配置选项

#### placement

相对参照元素的定位位置

- `Type`: `'auto' | 'top' | 'right' | 'bottom' | 'left'`
- `Default`: `'auto'`

#### offsetX

相对参照元素垂直偏移量

- `Type`: `number`
- `Default`: `0`

水平方向为 `auto` 时，正数表示向右偏移，负数表示向左偏移；否则取绝对值

#### offsetY

定位元素与视窗顶部间距

- `Type`: `number`
- `Default`: `0`

垂直方向为 `auto` 时，正数表示向下偏移，负数表示向上偏移；否则取绝对值

#### position

目标元素的固定位置

- `Type`: `{ top?: number, right?: number, bottom?: number, left?: number }`
- `Default`: `{}`

#### marginTop

定位元素与视窗顶部间距

- `Type`: `number`
- `Default`: `0`

#### marginBottom

定位元素与视窗底部间距

- `Type`: `number`
- `Default`: `0`

#### marginLeft

定位元素与视窗左侧间距

- `Type`: `number`
- `Default`: `0`

#### marginRight

定位元素与视窗右侧间距

- `Type`: `number`
- `Default`: `0`

## License

MIT
npm package: @jottit/jot
Description: A headless ProseMirror editor with markdown storage and an optional bubble menu.
Author: Simon B. Carstensen
Latest version: 0.2.5

# jot

A headless ProseMirror editor that stores markdown. Built for [Jottit](https://jottit.pub) but designed to be reusable by any project.

## Install

```bash
npm install @jottit/jot
```

## Usage

```js
import { Jot } from '@jottit/jot'

const editor = new Jot(document.getElementById('editor'), {
  initialValue: '# Hello\n\nStart writing...',
  onChange: (markdown) => console.log(markdown)
})

editor.getValue()        // returns current content as markdown string
editor.setValue('# Hi')  // sets content from markdown string
editor.destroy()         // removes editor and cleans up
```

### Bubble menu (opt-in)

An optional floating toolbar that appears when the user selects text. Supports bold, italic, links, headings, and blockquotes.

```js
import '@jottit/jot/dist/jot.css'

const editor = new Jot(document.getElementById('editor'), {
  initialValue: '# Hello',
  onChange: (markdown) => console.log(markdown),
  ui: {
    bubbleMenu: true
  }
})
```

## Supported markdown

**Nodes:** paragraphs, headings (h1--h6), blockquotes, code blocks, bullet lists, ordered lists, list items, images, hard breaks

**Marks:** bold, italic, inline code, links

## API

| Method | Description |
|---|---|
| `new Jot(element, options)` | Create an editor instance |
| `editor.getValue()` | Get content as a markdown string |
| `editor.setValue(markdown)` | Set content from a markdown string |
| `editor.destroy()` | Remove the editor and clean up |

### Options

| Option | Type | Description |
|---|---|---|
| `initialValue` | `string` | Initial markdown content (default: `''`) |
| `onChange` | `(markdown: string) => void` | Called whenever the document changes |
| `ui.bubbleMenu` | `boolean` | Show a floating toolbar on text selection |

## Keyboard shortcuts

| Shortcut | Action |
|---|---|
| `Mod-z` | Undo |
| `Mod-y` / `Mod-Shift-z` | Redo |
| `Mod-b` | Toggle bold |
| `Mod-i` | Toggle italic |

## Credits

Built with the assistance of [Claude](https://claude.ai) (Anthropic).

## License

MIT
npm package: @jottocraft/rtsk-remix-dev
Description: Dev tools and CLI for Remix
Latest version: 1.12.0

# Welcome to Remix!

[Remix](https://remix.run) is a web framework that helps you build better websites with React.

To get started, open a new shell and run:

```sh
npx create-remix@latest
```

Then follow the prompts you see in your terminal.

For more information about Remix, [visit remix.run](https://remix.run)!