open-index/open-npm huggingface dataset:
npm package: @kandleconsultinggroup/agent-seo
Description: SEO blog writing agent for Kandle
Author: Kandle Consulting Group
Latest version: 0.1.1

# @kandle/agent-seo

SEO blog writing agent for Kandle.

## Installation

```bash
npm install @kandle/agent-seo @kandle/core
```

## Usage

```javascript
const { Kandle } = require("@kandle/core");
const seoAgent = require("@kandle/agent-seo");

const kandle = new Kandle({
  agents: [seoAgent],
  storage: /* your storage */,
});

const task = await kandle.createTask("seo", {
  topic: "How AI is Transforming Business",
});

const { artifacts } = await kandle.runTask(task);
```

## Configuration

Task input options:

- `topic` - Blog post topic (optional, has default)
- `keywords` - SEO keywords array (optional)
- `tone` - Writing tone (optional)
- `audience` - Target audience (optional)
- `length` - Target word count (optional)

## License

MIT
npm package: @kandleconsultinggroup/agent-social
Description: Social media content agent for Kandle
Author: Kandle Consulting Group
Latest version: 0.1.2

# @kandle/agent-social

Social media content agent for Kandle.

## Installation

```bash
npm install @kandle/agent-social @kandle/core
```

## Usage

### Blog Promotion Posts

```javascript
const task = await kandle.createTask("social", {
  blogArtifact: approvedBlog,
  platforms: ["linkedin", "twitter"],
});
```

### Standalone Posts

```javascript
const task = await kandle.createTask("social", {
  topic: "The future of remote work",
  platforms: ["linkedin"],
  tone: "inspirational",
  audience: "business leaders",
});
```

## Configuration

Task input options:

- `blogArtifact` - Blog to promote (for promotion mode)
- `topic` - Topic for standalone post (for standalone mode)
- `platforms` - Array of platforms (default: ["linkedin"])
- `tone` - Post tone (default: "professional and friendly")
- `audience` - Target audience (default: "business professionals")

## License

MIT
npm package: @kandleconsultinggroup/core
Description: Core orchestration framework for Kandle AI agents
Author: Kandle Consulting Group
Latest version: 0.1.4

# @kandle/core

Core orchestration framework for Kandle AI agents.

## Installation

```bash
npm install @kandle/core
```

## Features

- Task orchestration and lifecycle management
- Event-driven architecture
- MongoDB and in-memory storage adapters
- Scheduler for automated tasks
- Agent registry system
- Admin queries for dashboard integration

## Usage

```javascript
const { Kandle, MongoAdapter } = require("@kandle/core");

const kandle = new Kandle({
  storage: new MongoAdapter({
    uri: process.env.MONGODB_URI || process.env.MONGO_URI_PROD,
    dbName: "mydb",
  }),
  agents: [
    /* your agents */
  ],
  config: {
    scheduler: {
      seo: { every: "daily" },
    },
  },
});

kandle.start(); // Start scheduler
```

## API

- `createTask(agentType, input)` - Create a new task
- `runTask(task)` - Execute a task
- `approveArtifact(artifact)` - Approve generated content
- `start()` - Start the scheduler

## License

MIT
npm package: @kandy-io/link-config-emea
Description: Kandy.js EMEA Configuration
Author: Jean-Yves Boudreau
Latest version: 2.0.0

# @kandy-io/link-config-emea

This package contains standard configuration for the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk) to connect to the Kandy platform in the EMEA region.

## Installation

via npm:

```bash
$ npm install @kandy-io/link-config-emea
```

via yarn:

```bash
$ yarn add @kandy-io/link-config-emea
```

## Usage

You can use the package simply by importing it and providing the configuration to the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk).

```javascript
import { config } from '@kandy-io/link-config-emea'
import { create } from '@kandy-io/link-sdk'

const client = create(config)

// Use the SDK.
```

The configuration object can also be used as a base for your own custom configuration.

```javascript
import { config as defaultConfig } from '@kandy-io/link-config-emea'
import { create } from '@kandy-io/link-sdk'

const config = {
  ...defaultConfig,
  logs: {
    logLevel: 'debug'
  }
}

const client = create(config)

// Use the SDK.
```

## See Also

- [Kandy.js SDK Tutorial](https://kandy-io.github.io/kandy-link-js-sdk/tutorials/?config=emea#/Configurations)
- [Kandy.js SDK Documentation](https://kandy-io.github.io/kandy-link-js-sdk/docs/)
npm package: @kandy-io/link-config-uae
Description: Kandy.js UAE Configuration
Author: Jean-Yves Boudreau
Latest version: 2.0.0

# @kandy-io/link-config-uae

This package contains standard configuration for the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk) to connect to the Kandy platform in the UEA region.

## Installation

via npm:

```bash
$ npm install @kandy-io/link-config-uae
```

via yarn:

```bash
$ yarn add @kandy-io/link-config-uae
```

## Usage

You can use the package simply by importing it and providing the configuration to the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk).

```javascript
import { config } from '@kandy-io/link-config-uae'
import { create } from '@kandy-io/link-sdk'

const client = create(config)

// Use the SDK.
```

The configuration object can also be used as a base for your own custom configuration.

```javascript
import { config as defaultConfig } from '@kandy-io/link-config-uae'
import { create } from '@kandy-io/link-sdk'

const config = {
  ...defaultConfig,
  logs: {
    logLevel: 'debug'
  }
}

const client = create(config)

// Use the SDK.
```

## See Also

- [Kandy.js SDK Tutorial](https://kandy-io.github.io/kandy-link-js-sdk/tutorials/?config=uae#/Configurations)
- [Kandy.js SDK Documentation](https://kandy-io.github.io/kandy-link-js-sdk/docs/)
npm package: @kandy-io/link-config-us
Description: Kandy.js US Configuration
Author: Jean-Yves Boudreau
Latest version: 2.0.0

# @kandy-io/link-config-us

This package contains standard configuration for the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk) to connect to the Kandy platform in the US region.

## Installation

via npm:

```bash
$ npm install @kandy-io/link-config-us
```

via yarn:

```bash
$ yarn add @kandy-io/link-config-us
```

## Usage

You can use the package simply by importing it and providing the configuration to the [Kandy Link JS SDK](https://github.com/Kandy-IO/kandy-link-js-sdk).

```javascript
import { config } from '@kandy-io/link-config-us'
import { create } from '@kandy-io/link-sdk'

const client = create(config)

// Use the SDK.
```

The configuration object can also be used as a base for your own custom configuration.

```javascript
import { config as defaultConfig } from '@kandy-io/link-config-us'
import { create } from '@kandy-io/link-sdk'

const config = {
  ...defaultConfig,
  logs: {
    logLevel: 'debug'
  }
}

const client = create(config)

// Use the SDK.
```

## See Also

- [Kandy.js SDK Tutorial](https://kandy-io.github.io/kandy-link-js-sdk/tutorials/?config=us#/Configurations)
- [Kandy.js SDK Documentation](https://kandy-io.github.io/kandy-link-js-sdk/docs/)
npm package: @kandyswap/uikit
Description: Set of UI components for kandyswap projects
Latest version: 0.1.14

# 🍬 Kandy UIkit

[![Version](https://img.shields.io/npm/v/@kandyswap/uikit)](https://www.npmjs.com/package/@kandyswap/uikit) [![Size](https://img.shields.io/bundlephobia/min/@kandyswap/uikit)](https://www.npmjs.com/package/@kandyswap/uikit)

Kandy UIkit is a set of React components and hooks used to build pages on Kandy's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @kandyswap/uikit`

## Setup

### Theme

Before using Kandy UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@kandyswap/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@kandyswap/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://kandyswap.github.io/kandy-uikit/)
npm package: @kane-cli/react-native-bad-module
Description: test
Author: light
Latest version: 0.1.0

# react-native-bad-module

test

## Installation

```sh
npm install react-native-bad-module
```

## Usage

```js
import { multiply } from 'react-native-bad-module';

// ...

const result = await multiply(3, 7);
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT

---

Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
npm package: @kanesong/wj
Description: WenJing Agent-Native CLI — 文镜平台 AI 生成、CRM 管理和素材授权的命令行工具，支持 Claude Code、OpenClaw 等 AI Agent 直接调用
Latest version: 0.1.0

# wj — WenJing CLI

文镜平台 Agent-Native 命令行工具。支持 AI 视频/图片/音频/文本生成、CRM 管理、素材授权，专为 Claude Code、OpenClaw 等 AI Agent 调用设计。

## 安装

```bash
npm install -g @wenjing/cli
# 或临时使用
npx @wenjing/cli --version
```

## 快速开始

```bash
# 登录
wj login --username 13800138000 --password xxx

# 查看当前用户（算力余额）
wj whoami

# 生成视频（等待完成）
wj video.create --model kling-omni --prompt "一只猫咪在草地上奔跑" --wait

# 查询任务
wj video.query --id <taskId> --poll

# 调用任意 API（逃生舱）
wj api GET /api/auth/getUserInfo?userId=xxx
wj api --service crm POST /api/crm/report/userCount

# 查看命令参数
wj schema video.create --model kling-omni
```

## 三层命令体系

| 层 | 示例 | 适合 |
|---|------|------|
| **Shortcuts** | `wj generate video --model kling-omni` | 人类 + AI Agent |
| **Resource.Method** | `wj video.create --model kling-omni` | AI Agent |
| **Raw API** | `wj api POST /api/video/kling-omni/create` | 逃生舱 |

## 可用模型（视频）

| 模型 | 说明 |
|------|------|
| `kling-omni` | 可灵 V3-Omni，多镜头/参考图，5~7算力/秒 |
| `seedance15` | 豆包 1.5，支持音频生成 |
| `seedance` | 豆包，文字叠加能力强 |
| `skyreels-v4` | SkyReels V4，1080p 输出，10算力/秒 |
| `wan2.6` | 阿里 Wan2.6，自然场景优秀 |

`wj schema video.create` 查看完整模型列表。

## 安装 AI Agent Skills

```bash
# 安装到当前项目（自动检测已安装的 Agent）
wj skills add

# 安装到全局（推荐）
wj skills add --global

# 跳过确认
wj skills add --global --yes
```

支持: Claude Code (`~/.claude/skills/`)、Cursor (`~/.cursor/skills/`)、OpenClaw (`~/.openclaw/skills/`)

## 环境变量

| 变量 | 说明 | 默认值 |
|------|------|--------|
| `WJ_PORTAL_URL` | Portal 服务地址 | http://localhost:8088 |
| `WJ_CRM_URL` | CRM 服务地址 | http://localhost:8080 |
| `WJ_ASSET_URL` | Asset 服务地址 | http://localhost:3001 |
| `WJ_USERNAME` | 默认账号（可替代 --username） | — |
| `WJ_PASSWORD` | 默认密码（可替代 --password） | — |

## 安全说明

- JWT token 存储在 OS keychain，AI Agent 无法获取原始 token
- 危险操作（删除/部署）需要 `--confirm` 标志
- 所有调用记录到 `~/.wenjing/audit.log`

## 开发

```bash
git clone ...
cd wenjing-cli
npm install
npm run dev -- --help          # 直接用 ts-node 运行
npm run build                  # 编译到 dist/
```

## Phase 路线图

- [x] Phase 1: 基座（认证 + 视频域 + Raw API + Skills 安装器）
- [ ] Phase 2: 图片生成（10+ 模型）
- [ ] Phase 3: 音频 + 文本
- [ ] Phase 4: CRM 管理
- [ ] Phase 5: 组织 + 支付
- [ ] Phase 6: 素材授权
- [ ] Phase 7: 部署 + npm 发布
npm package: @kanety/insert-text
Description: Insert text to input or editable element
Author: Yoshikazu Kaneta
Latest version: 1.1.0

# insert-text

Insert text to input or contenteditable element.

## Installation

Install from npm:

    $ npm install @kanety/insert-text --save

## Usage

Insert text to `textarea`:

```html
<textarea>sample text</textarea>
```

```javascript
import InsertText from '@kanety/insert-text';
InsertText.run('textarea', 'YOUR TEXT');
```

Insert text to `contenteditable` element:

```html
<div contenteditable="true">sample text</div>
```

```javascript
import InsertText from '@kanety/insert-text';
InsertText.run('div[contenteditable]', 'YOUR TEXT');
```

Text is inserted at caret position by default.

### Options

Insert text at first position:

```javascript
InsertText.run('textarea', 'YOUR TEXT', 'first');
```

Insert text at last position:

```javascript
InsertText.run('textarea', 'YOUR TEXT', 'last');
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-insert-text
Description: Insert text to input or editable element
Author: Yoshikazu Kaneta
Latest version: 0.2.0

# jquery-insert-text

Insert text to input or editable element.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-insert-text --save

## Usage

Insert text at caret position of `<textarea>` or `contenteditable` elements:

```html
<textarea>sample text</textarea>
<div contenteditable="true">sample text</div>
```

```javascript
$('textarea').insertText('YOUR TEXT');
$('div[contenteditable]').insertText('YOUR TEXT');
```

### Options

Insert text at first position:

```javascript
$('textarea').insertText('YOUR TEXT', 'first');
```

Insert text at last position:

```javascript
$('textarea').insertText('YOUR TEXT', 'last');
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-pick-text
Description: Select and copy text from html element
Author: Yoshikazu Kaneta
Latest version: 0.1.0

# jquery-pick-text

Select and copy text from html element.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-pick-text --save

## Usage

```html
<div id="target">sample text</div>
```

```javascript
$('#target').pickText();
```

### Options

Select only:

```javascript
$('#target').pickText({ copy: false });
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-dialog
Description: A jquery plugin for simple dialog
Author: Yoshikazu Kaneta
Latest version: 0.1.2

# jquery-simple-dialog

A jquery plugin for simple dialog.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-dialog --save

## Usage

Build html as follows:

```html
<div id="content">
  <div id="drag">Dialog Title</div>
  <div>content</div>
  <div>content</div>
  <hr>
  <div>
    <button type="button" id="ok">OK</button>
    <button type="button" id="cancel">Cancel</button>
  </div>
</div>
<button type="button" id="open">Open</button>
```

Then run:

```javascript
$('#content').simpleDialog({
  opener: '#open',
  closer: '#ok,#cancel'
});
```

### Options

Draggable dialog:

```javascript
$('#content').simpleDialog({
  dragger: '#drag'
});
```

Modal dialog:

```javascript
$('#content').simpleDialog({
  modal: true
});
```

Focus elements when dialog is opened:

```javascript
$('#content').simpleDialog({
  focus: '#ok'
});
```

### Callbacks

Run callbacks when a dialog is opened or closed:

```javascript
$('#content').simpleDialog({
  ...
}).on('dialog:open', function(e, $handler) {
  console.log("opened by " + $handler.attr('id'));
}).on('dialog:close', function(e, $handler) {
  console.log("closed by " + $handler.attr('id'));
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-iframe-view
Description: A jquery plugin for simple iframe viewer
Author: Yoshikazu Kaneta
Latest version: 0.1.0

# jquery-simple-iframe-view

A jquery plugin for simple iframe viewer.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-iframe-view --save

## Usage

Build html as follows:

```html
<div id="index">
  <p><a href="iframe1.html">iframe1.html</a></p>
  <p><a href="iframe2.html">iframe2.html</a></p>
  <p><a href="iframe3.html">iframe3.html</a></p>
</div>
<div id="iframes"></div>
```

Then run:

```javascript
$('#index').simpleIframeView({
  container: '#iframes'
});
```

### Options

URL selector options:

```javascript
$('#index').simpleIframeView({
  urlSelector: 'a',
  urlAttribute: 'href',
  container: '#iframes'
});
```

Iframe options:

```javascript
$('#index').simpleIframeView({
  container: '#iframes'
  template: '<iframe scrolling="no">',
  marginHeight: 0,
  maxCache: 100,
  autoResize: true
});
```

### Callbacks

```javascript
$('#iframes').simpleIframeView({
  ...
}).on('iframe:show', function(e, $iframe) {
  ...
}).on('iframe:hide', function(e, $iframe) {
  ...
}).on('iframe:loaded', function(e, $iframe) {
  ...
}).on('iframe:resized', function(e, $iframe) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-iscroll
Description: A jquery plugin for infinite scroll
Author: Yoshikazu Kaneta
Latest version: 0.2.0

# jquery-simple-iscroll

A jquery plugin for infinite scroll.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-iscroll --save

## Usage

Build html as follows:

```html
<div id="container" style="width: 200px; height: 200px; overflow-y: scroll;">
  <table id="table">
    <thead>
      <tr>
        <th>header</th>
        <th>header</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>page1</td>
        <td>page1</td>
      </tr>
    </tbody>
  </table>
  <div id="paging" style="display: none;">
    <a class="prev">prev</a>
    <a href="index.1.html">index.1.html</a>
    <a href="index.2.html">index.2.html</a>
    <a href="index.3.html">index.3.html</a>
    <a href="index.2.html" class="next">next</a>
  </div>
</div>
```

Then run:

```javascript
$('#container').simpleIscroll({
  content: '#table tbody',
  paging: '#paging',
  next: 'a.next'
});
```

### Options

Show loading contents:

```javascript
$('#container').simpleIscroll({
  ...
  loading: '.loading'
});
```

Set margin height to start loading before reaching at the bottom:

```javascript
$('#container').simpleIscroll({
  ...
  margin: 10
});
```

### Callbacks

```javascript
$('#container').simpleIscroll({
  ...
}).on('load:start', function(e, href) {
  ...
}).on('load:end', function(e, href) {
  ...
}).on('load:success', function(e, $content, $paging) {
  ...
}).on('load:failure', function(e, nextHref, xhr, status, error) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-lightbox
Description: A jquery plugin for simple lightbox
Author: Yoshikazu Kaneta
Latest version: 0.2.0

# jquery-simple-lightbox

A jquery plugin for simple lightbox.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-lightbox --save

## Usage

Build file input field:

```html
<div id="gal">
  <a href="img1.png" rel="lightbox" title="img1.png"><img src="img1_thumb.png"></a>
  <a href="img2.png" rel="lightbox" title="img2.png"><img src="img2_thumb.png"></a>
  <a href="img3.png" rel="lightbox" title="img3.png"><img src="img3_thumb.png"></a>
</div>
```

Then run:

```javascript
$('#gal').simpleLightbox();
```

### Options

Change link selector:

```javascript
$('#gal').simpleLightbox({
  links: 'a[rel="lightbox"]'
});
```

Change lightbox owner:

```javascript
$('#gal').simpleLightbox({
  owner: 'body'
});
```

Change image extensions:

```javascript
$('#gal').simpleLightbox({
  imageExt: /^(jpg|jpeg|png|gif|bmp|webp)$/
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-link-form
Description: A jquery plugin for form submittion through link
Author: Yoshikazu Kaneta
Latest version: 0.1.0

# jquery-simple-link-form

A jquery plugin for form submittion through link.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-link-form --save

## Usage

Build html as follows:

```html
<div id="link">
  <a href="index1.html">link1</a>
  <a href="index2.html">link2</a>
  <a href="index3.html">link3</a>
</div>
<form id="form" method="get">
  <input type="text" name="text">
  <input type="submit" style="display: none;">
</form>
```

Then run:

```javascript
$('#link').simpleLinkForm({
  form: '#form'
});
```

### Options

Set selectors and confirmation:

```javascript
$('#link').simpleLinkForm({
  ...
  link: 'a[href]',
  submit: 'input:submit',
  confirm: 'Are you sure?'
});
```

Set options per link:

```html
<!-- set form -->
<a href="index.html" data-form-name="FORM_NAME">link1</a>

<!-- set submitter -->
<a href="index.html" data-form-submit="BUTTON_NAME">link1</a>

<!-- set confirmation -->
<a href="index.html" data-form-confirm="Are you sure?">link1</a>
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-menu
Description: A jquery plugin for simple menu
Author: Yoshikazu Kaneta
Latest version: 0.4.1

# jquery-simple-menu

A jquery plugin for simple menu.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-menu --save

## Basic usage

Build html as follows:

```html
<ul id="menu">
  <li>
    <a href="#">Menu</a>
    <ul style="width: 120px;">
      <li><a href="#">Menu1</a></li>
      <li><a href="#">Menu2</a></li>
      <li><a href="#">Menu3</a></li>
    </ul>
  </li>
</ul>
```

Then run:

```javascript
$('#menu').simpleMenu();
```

### Options

Open menu by mouse hovering:

```javascript
$('#menu').simpleMenu({
  autoOpen: true
});
```

Keep menu opened after clicking menu items:

```javascript
$('#menu').simpleMenu({
  autoOpen: true,
  keepOpen: true
});
```

Change to vertical align:

```javascript
$('#menu').simpleMenu({
  align: 'vertical'
});
```

### Checkable menu

```javascript
$('#menu').simpleMenu({
  checkable: '.checkable-submenu'
}).on('menu:checked', function(e, $li) {
  ...
}).on('menu:unchecked', function(e, $li) {
  ...
})
```

### Context menu

```html
<div id="container"></div>
<ul id="menu">
  <li>
    <a href="#">Menu</a>
    <ul style="width: 120px;">
      <li><a href="#">Menu1</a></li>
      <li><a href="#">Menu2</a></li>
      <li><a href="#">Menu3</a></li>
    </ul>
  </li>
</ul>
```

```javascript
$('#menu').simpleMenu({
  context: '#container',
  align: 'vertical'
});
```

## Other example

Use button tag instead of a tag:

```html
<ul id="menu">
  <li>
    <button>Menu</button>
    <ul style="width: 120px;">
      <li><a href="#">Menu1</a></li>
      <li><a href="#">Menu2</a></li>
      <li><a href="#">Menu3</a></li>
    </ul>
  </li>
</ul>
```

```javascript
$('#menu').simpleMenu();
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-modal
Description: A jquery plugin for simple modal
Author: Yoshikazu Kaneta
Latest version: 0.2.0

# jquery-simple-modal

A jquery plugin for simple modal.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-modal --save

## Usage

Build html as follows:

```html
<div id="content">
  <div>content</div>
  <div>content</div>
  <hr>
  <div>
    <button type="button" id="ok">OK</button>
    <button type="button" id="cancel">Cancel</button>
  </div>
</div>
<button type="button" id="open">Open</button>
```

Then run:

```javascript
$('#content').simpleModal({
  opener: '#open',
  closer: '#ok,#cancel'
});
```

### Options

Focus elements when modal is opened:

```javascript
$('#content').simpleModal({
  focus: '#ok'
});
```

Set modal owner element:

```javascript
$('#content').simpleModal({
  owner: '#element'
});
```

Disable modal closing for specific events:

```javascript
$('#content').simpleModal({
  closeByEsc: false,         // ESC key
  closeByModalClick: false   // click modal background
});
```

### Callbacks

Run callbacks when a modal is opened or closed:

```javascript
$('#content').simpleModal({
  ...
}).on('modal:open', function(e, $handler) {
  console.log("opened by " + $handler.attr('id'));
}).on('modal:close', function(e, $handler) {
  console.log("closed by " + $handler.attr('id'));
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-multi-select
Description: A jquery plugin for multiple select
Author: Yoshikazu Kaneta
Latest version: 0.1.0

# jquery-simple-multi-select

A jquery plugin for multiple select.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-multi-select --save

## Usage

Build two select elements as follows:

```html
<div id="select">
  <div>
    <select id="src" multiple>
      <option value="option1">option1</option>
      <option value="option2">option2</option>
      <option value="option3">option3</option>
      <option value="option4">option4</option>
      <option value="option5" disabled>option5</option>
    </select>
  </div>
  <div>
    <div><button type="button" id="adder"></button></div>
    <div><button type="button" id="remover"></button></div>
  </div>
  <div>
    <select id="dst" multiple></select>
  </div>
</div>
```

Then run:

```javascript
$('#select').simpleMultiSelect({
  source: '#src',
  destination: '#dst',
  adder: '#adder',
  remover: '#remover'
});
```

### Options

Set max number of addable options:

```javascript
$('#select').simpleMultiSelect({
  ...
  maxOptions: 2
});
```

Enable sorting when options moved:

```javascript
$('#select').simpleMultiSelect({
  ...
  sortOptions: true
});
```

### Callbacks

```javascript
$('#select').simpleMultiSelect({
  ...
}).on('option:added', function(e, $option) {
  ...
}).on('option:removed', function(e, $option) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-resize
Description: A jquery plugin for simple resizable element
Author: Yoshikazu Kaneta
Latest version: 0.3.0

# jquery-simple-resize

A jquery plugin for simple resizable element.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-resize --save

## Usage

Build html as follows:

```html
<div id="resize">
  <div>text</div>
</div>
```

Then run:

```javascript
$('#resize').simpleReize({
  bottomRight: true
});
```

### Options

Build resize handler automatically in the resizable element:

```javascript
$('#resize').simpleReize({
  top: true,
  bottom: true,
  left: true,
  right: true,
  topLeft: true
  topRight: true
  bottomLeft: true
  bottomRight: true
});
```

Specify selector out of the resizable element:

```html
<div id="resize">
  <div>text</div>
</div>
<div id="resize_bottom"></div>
```

```javascript
$('#resize').simpleReize({
  bottom: '#resize_bottom'
});
```

Store current width and height in the web storage:

```javascript
$('#resize').simpleReize({
  store: 'session',  // or 'local'
  storeKey: 'YOUR_KEY'
});
```

### Callbacks

```javascript
$('#resize').simpleResize({
  ...
}).on('resize:start', function(e, $handler) {
  ...
}).on('resize:move', function(e, $handler) {
  ...
}).on('resize:end', function(e, $handler) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-select-table
Description: A jquery plugin for table with selectable rows and checkboxes
Author: Yoshikazu Kaneta
Latest version: 0.2.0

# jquery-simple-select-table

A jquery plugin for table with selectable rows and checkboxes.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-select-table --save

## Usage

Build html as follows:

```html
<table>
  <tr>
    <th><input type="checkbox"></th>
    <th>header</th>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>1</td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>2</td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>3</td>
  </tr>
</table>
```

Then run:

```javascript
$('table').simpleSelectTable();
```

### Options

Selector options:

```javascript
$('table').simpleSelectTable({
  headCheckbox: 'th :checkbox',
  dataCheckbox: 'td :checkbox',
  rowSelector: 'td'
});
```

Feature options:

```javascript
$('table').simpleSelectTable({
  useShiftClick: true,
  useCtrlClick: true,
  useUpDownKey: true
});
```

### Callbacks

```javascript
$('table').simpleSelectTable({
  ...
}).on('row:selected', function(e, $row) {
  ...
}).on('row:unselected', function(e, $row) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-selstore
Description: A jquery plugin for multiple selection that stores selected items in storage
Author: Yoshikazu Kaneta
Latest version: 0.3.0

# jquery-simple-selstore

A jquery plugin for multiple selection that stores selected items in storage.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-selstore --save

## Usage

Build html as follows:

```html
<div id="selector">
  <div><label><input type="checkbox" value="1">title1</label></div>
  <div><label><input type="checkbox" value="2">title2</label></div>
</div>
<div id="listview"></div>
```

Then run:

```javascript
$('#listview').simpleSelstore('#selector');
```

### Options

Store selected elements in the web storage:

```javascript
$('#listview').simpleSelstore('#selector', {
  store: 'session',  // or 'local'
  storeKey: 'YOUR_STORE_KEY'
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-toggle
Description: A jquery plugin for simple togglable panels
Author: Yoshikazu Kaneta
Latest version: 0.1.1

# jquery-simple-toggle

A jquery plugin for simple togglable panels.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-toggle --save

## Usage

Build html as follows:

```html
<div id="menu">
  <a href="#menu1">menu1</a>
  <a href="#menu2">menu2</a>
  <a href="#menu3">menu3</a>
</div>
<div id="panel">
  <div name="menu1">panel1</div>
  <div name="menu2">panel2</div>
  <div name="menu3">panel3</div>
</div>
```

Then run:

```javascript
$('#menu').simpleToggle({
  panelContainer: '#panel'
});
```

### Options

Change selector for menus and paneles:

```javascript
$('#menu').simpleToggle({
  ...
  menu: '[href]',
  menuAttr: 'href'
  panel: '[name]',
  panelAttr: 'name'
});
```

Store current panel in the web storage:

```javascript
$('#menu').simpleToggle({
  ...
  store: 'session',
  storeKey: 'YOUR_STORAGE_KEY'
});
```

### Callbacks

```javascript
$('#menu').simpleToggle({
  ...
}).on('panel:show', function(e, $panel) {
  ...
}).on('panel:hide', function(e, $panel) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-tree
Description: A jquery plugin for simple tree ui
Author: Yoshikazu Kaneta
Latest version: 0.4.0

# jquery-simple-tree

A jquery plugin for simple tree ui.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-tree --save

## Usage

Build tree using list elements as follows:

```html
<ul id="tree">
  <li data-node-id="1">
    <span>text of 1</span>
    <ul>
      <li data-node-id="1.1">
        <span>text of 1.1</span>
        <ul>
          <li data-node-id="1.1.1">
            <span>text of 1.1.1</span>
          </li>
          <li data-node-id="1.1.2">
            <span>text of 1.1.2</span>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
```

Then run:

```javascript
$('#tree').simpleTree();
```

### Options

Specify opened nodes:

```javascript
$('#tree').simpleTree({
  opened: [1, 1.1]
});
```

Save node state to `sessionStorage` or `localStorage`:

```javascript
$('#tree').simpleTree({
  store: 'session', // or 'local'
  storeKey: 'YOUR_KEY'
});
```

### Callbacks

Run callbacks when a node is opened or closed:

```javascript
$('#tree').simpleTree({
  ...
}).on('node:open', function(e, $node) {
  ...
}).on('node:close', function(e, $node) {
  ...
});
```

### Functions

Manipulate nodes from your script:

```javascript
var tree = $('#tree').data('simple-tree');  // get SimpleTree instance
tree.openByID(1);
tree.closeByID(1);
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-tree-table
Description: A jquery plugin that attaches tree-like behaviour to table
Author: Yoshikazu Kaneta
Latest version: 0.5.1

# jquery-simple-tree-table

A jquery plugin that attaches tree-like behaviour to table.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-tree-table --save

## Usage

Add `data-node-id` and `data-node-pid` in your table:

```html
<table>
  <tr data-node-id="1">
    <td>1</td>
    <td>text of 1</td>
  </tr>
  <tr data-node-id="1.1" data-node-pid="1">
    <td>1.1</td>
    <td>text of 1.1</td>
  </tr>
  <tr data-node-id="1.1.1" data-node-pid="1.1">
    <td>1.1.1</td>
    <td>text of 1.1.1</td>
  </tr>
  <tr data-node-id="1.1.2" data-node-pid="1.1">
    <td>1.1.2</td>
    <td>text of 1.1.2</td>
  </tr>
</table>
```

Then run:

```javascript
$('table').simpleTreeTable();
```

### Options

Specify opened nodes:

```javascript
$('table').simpleTreeTable({
  opened: [1]
});
```

Add expand / collapse button:

```javascript
$('table').simpleTreeTable({
  expander: '#expander',
  collapser: '#collapser',
});
```

Customize icon position:

```javascript
$('table').simpleTreeTable({
  iconPosition: 'td:last-child'
});
```

Store node states in sessionStorage or localStorage:

```javascript
$('table').simpleTreeTable({
  store: 'session', // or 'local'
  storeKey: 'KEY'
});
```

### Callbacks

Run Callbacks when a node is opened or closed:

```javascript
$('table').simpleTreeTable({
  ...
}).on('node:open', function(e, $node) {
  ...
}).on('node:close', function(e, $node) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-simple-upload
Description: A jquery plugin for ajax file upload
Author: Yoshikazu Kaneta
Latest version: 0.4.0

# jquery-simple-upload

A jquery plugin for ajax file upload.

## Dependencies

* jquery

## Installation

Install from npm:

    $ npm install @kanety/jquery-simple-upload --save

## Usage

Build file input field:

```html
<input type="file" name="file" multiple="true" id="input">
```

Then run:

```javascript
$('#input').simpleUpload({
  url: 'YOUR_BACKEND_URL',
  method: 'post'
});
```

### Options

Add drop zone and progress message:

```html
<div id="drop_zone"></div>
<div id="progress"></div>
```

```javascript
$('#input').simpleUpload({
  ...
  dropZone: '#drop_zone',
  progress: '#progress'
});
```

Set additional ajax options:

```javascript
$('#input').simpleUpload({
  ...
  ajax: {
    headers: {
      'HEADER_KEY': 'HEADER_VALUE'
    },
    dataType: 'application/json',
    timeout: 0,
    async: true
  }
});
```

Set additional query parameters:

```javascript
$('#input').simpleUpload({
  // set object
  params: {
    'KEY': 'VALUE'
  },
  // or set callback
  params: function() {
    return { 'KEY': 'VALUE' };
  },
});
```

### Validations

```javascript
$('#input').simpleUpload({
  ...
  maxFileNum: 4,
  maxFileSize: 10 * 1024 * 1024, // Bytes
  allowedFileName: /\.txt$/,
  allowedMimeType: /^text\//
}).on('upload:over', function(e, files) {
  ...
}).on('upload:invalid', function(e, files) {
  // files[i].reason contains the rejected reason
  ...
});
```

### Callbacks

```javascript
$('#input').simpleUpload({
  ...
}).on('upload:before', function(e, files) {
  ...
}).on('upload:after', function(e, files) {
  ...
}).on('upload:start', function(e, file, i) {
  ...
}).on('upload:progress', function(e, file, i, loaded, total) {
  ...
}).on('upload:end', function(e, file, i) {
  ...
}).on('upload:done', function(e, file, i) {
  ...
}).on('upload:fail', function(e, file, i) {
  ...
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-ui-durationslider
Description: Bind text field and jquery-ui slider for duration input
Author: Yoshikazu Kaneta
Latest version: 0.4.1

# jquery-ui-durationslider

Bind text field and jquery-ui slider for duration input.

## Dependencies

* jquery-ui

## Installation

Install from npm:

    $ npm install @kanety/jquery-ui-durationslider --save

## Usage

Make a text field and `div` elements for sliders:

```html
<input id="text" type="text" value="10:08" style="width: 5em;" />
<div id="hour" style="width: 150px;"></div>
<div id="minute" style="width: 150px;"></div>
```

Then:

```javascript
$('#text').durationslider({
  h: { elem: '#hour' },
  m: { elem: '#minute' }
});
```

If you want a slider for seconds:

```javascript
$('#text').durationslider({
  h: { elem: '#hour' },
  m: { elem: '#minute' },
  s: { elem: '#second' }
});
```

Customize max value and step value:

```javascript
$('#text').durationslider({
  h: { elem: '#hour', max: 48 },
  m: { elem: '#minute', step: 5 }
});
```

Customize duration format:

```javascript
$('#text').durationslider({
  format: 'd [DAYS] hh.mm'
});
```

* d: days
* h: hours
* m: minutes
* s: seconds
* []: raw text

Enable mousewheel support (only modern browsers):

```javascript
$('#text').durationslider({
  mousewheel: true
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/jquery-ui-durationspinner
Description: Time duration spinner using jquery-ui.
Author: Yoshikazu Kaneta
Latest version: 0.1.0

# jquery-ui-durationspinner

Time duration spinner using jquery-ui.

## Dependencies

Include following libraries before use.

* jquery-ui-dist
* moment
* moment-duration-format

## Installation

Install from npm:

    $ npm install @kanety/jquery-ui-durationspinner --save

## Usage

Create a spinner:

```javascript
$('input.spinner').durationspinner();
```

Change time format to `hh:mm:ss`:

```javascript
$('input.spinner').durationspinner({ format: 'hh:mm:ss', step: 1, page: 60 });
```

You can use `dhms` for the format.

* d: days
* h: hours
* m: minutes
* s: seconds

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/js-store
Description: A simple web storage wrapper saving json data
Author: Yoshikazu Kaneta
Latest version: 0.1.2

# js-store

A simple web storage wrapper saving json data.

## Installation

Install from npm:

    $ npm install @kanety/js-store --save

## Usage

```javascript
import JsStore from '@kanety/js-store'

let store = new JsStore({
  type: 'session',  // or 'local'
  key: 'YOUR_STORAGE_KEY'
});

// set
store.set({ key: 'value' });

// get
let data = store.get();

// remove
store.remove();
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/pick-text
Description: Select and copy text from html element
Author: Yoshikazu Kaneta
Latest version: 1.1.0

# pick-text

Select and copy text from html element.

## Installation

Install from npm:

    $ npm install @kanety/pick-text --save

## Usage

```html
<div id="target">sample text</div>
```

```javascript
import PickText from '@kanety/pick-text';
PickText.run('#target');
```

### Options

Disable copy:

```javascript
PickText.run('#target', { copy: false });
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/stimulus-accordion
Description: A stimulus controller for simple accordion menu
Author: Yoshikazu Kaneta
Latest version: 1.3.0

# stimulus-accordion

A stimulus controller for simple accordion menu.

## Dependencies

* @hotwired/stimulus 3.0+

## Installation

Install from npm:

    $ npm install @kanety/stimulus-accordion --save

## Usage

Register controller:

```javascript
import { Application } from '@hotwired/stimulus';
import AccordionController from '@kanety/stimulus-accordion';

const application = Application.start();
application.register('accordion', AccordionController);
```

Import css:

```css
@import '@kanety/stimulus-accordion';
```

Build html as follows:

```html
<div class="st-accordion" data-controller="accordion">
  <div><a href="#content1" class="st-accordion__icon" data-action="accordion#toggle">Content 1</a></div>
  <div class="st-accordion__content" data-accordion-id="content1">
    <p>content 1</p>
  </div>
  <div><a href="#content2" class="st-accordion__icon" data-action="accordion#toggle">Content 2</a></div>
  <div class="st-accordion__content" data-accordion-id="content2">
    <p>content 2</p>
  </div>
</div>
```

### Options

#### store-key

Save opened state to `sessionStorage`:

```html
<div data-controller="accordion"
     data-accordion-store-key-value="YOUR_KEY">
</div>
```

#### store target

Save opened state to `input` element:

```html
<div data-controller="accordion">
  <input type="hidden" data-accordion-target="store">
</div>
```

#### opened-text, closed-text

You can change header text of accordion when opened or closed:

```html
<div data-controller="accordion">
  <div><a href="#content1"
          data-action="accordion#toggle"
          data-accordion-opened-text-param="Opened Content 1"
          data-accordion-closed-text-param="Closed Content 1">Content 1</a></div>
</div>
```

### Callbacks

Run callbacks when a content is opened or closed:

```javascript
let element = document.querySelector('[data-controller="accordion"]');
element.addEventListener('accordion:opened', (e) => {
  // e.detail.toggler: clicked element
  // e.detail.content: opened content
  console.log('opened: ' + e.detail.content.getAttribute('data-accordion-id'));
});
element.addEventListener('accordion:closed', (e) => {
  // e.detail.toggler: clicked element
  // e.detail.content: closed content
  console.log('closed: ' + e.detail.content.getAttribute('data-accordion-id'));
});
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/stimulus-checklist
Description: A stimulus controller for checkbox list which responds to ctrl and shift click
Author: Yoshikazu Kaneta
Latest version: 1.0.0

# stimulus-checklist

A stimulus controller for checkbox list which responds to ctrl and shift click.

## Dependencies

* @hotwired/stimulus 3.0

## Installation

Install from npm:

    $ npm install @kanety/stimulus-checklist --save

## Usage

Register controller:

```javascript
import { Application } from '@hotwired/stimulus';
import ChecklistController from '@kanety/stimulus-checklist';

const application = Application.start();
application.register('checklist', ChecklistController);
```

Import css:

```css
@import '@kanety/stimulus-checklist';
```

Build html as follows:

```html
<ul data-controller="checklist">
  <li>
    <input type="checkbox">
    <span>text 1</span>
  </li>
  <li>
    <input type="checkbox">
    <span>text 2</span>
  </li>
</ul>
```

### Options

#### filter

Filter checkboxes by css selector:

```html
<ul data-controller="checklist"
    data-checklist-filter-value="input.first">
  <li>
    <input type="checkbox" class="first">
    <span>text 1</span>
    <input type="checkbox">
  </li>
</ul>
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
npm package: @kanety/stimulus-contextmenu
Description: A stimulus controller for simple contextmenu
Author: Yoshikazu Kaneta
Latest version: 1.1.0

# stimulus-contextmenu

A stimulus controller for simple contextmenu.

## Dependencies

* @hotwired/stimulus 3.0+

## Installation

Install from npm:

    $ npm install @kanety/stimulus-contextmenu --save

## Usage

Register controller:

```javascript
import { Application } from '@hotwired/stimulus';
import ContextmenuController from '@kanety/stimulus-contextmenu';

const application = Application.start();
application.register('contextmenu', ContextmenuController);
```

Import css:

```css
@import '@kanety/stimulus-contextmenu';
```

Build html as follows:

```html
<div data-controller="contextmenu">
  <p>content</p>
  <p>content</p>
  <ul class="st-contextmenu" data-contextmenu-target="menu">
    <li><a href="#">Menu1-1</a></li>
    <li><a href="#">Menu1-2</a></li>
  </ul>
</div>
```

You can specify context area bound to menu:

```html
<div data-controller="contextmenu">
  <div data-contextmenu-target="context">
    <p>content</p>
    <p>content</p>
  </div>
  <ul class="st-contextmenu" data-contextmenu-target="menu">
    <li><a href="#">Menu1-1</a></li>
    <li><a href="#">Menu1-2</a></li>
  </ul>
</div>
```

You can also use [@kanety/stimulus-menu](https://github.com/kanety/stimulus-menu) as menu:

```html
<div data-controller="contextmenu">
  <p>content</p>
  <p>content</p>
  <div class="st-contextmenu" data-contextmenu-target="menu">
    <ul class="st-menu st-menu--vertical" data-controller="menu">
      <li>
        <span class="st-menu__icon"><a href="#">Menu1</a></span>
        <ul class="st-menu--vertical">
          <li><a href="#">Menu1-1</a></li>
          <li><a href="#">Menu1-2</a></li>
        </ul>
      </li>
      <li>
        <span class="st-menu__icon"><a href="#">Menu2</a></span>
        <ul class="st-menu--vertical">
          <li><a href="#">Menu2-1</a></li>
          <li><a href="#">Menu2-2</a></li>
        </ul>
      </li>
    </ul>
  </div>
</div>
```

## License

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).