open-index/open-npm huggingface dataset:
npm package: @lumel/table
Description: a web-based(canvas) javascript table
Author: myliang
Latest version: 0.0.17

<p align="center">
  <a href="https://github.com/wolf-table/table">
    <img src="https://raw.githubusercontent.com/wolf-table/table/main/logo.svg" height="80px" width="450px"/>
  </a>
</p>
<p align="center">
  <img src="https://img.shields.io/github/actions/workflow/status/wolf-table/table/npm-publish-github-packages.yml" alt="GitHub Workflow Status">
  <a href="https://www.npmjs.org/package/@wolf-table/table"><img src="https://img.shields.io/npm/v/@wolf-table/table.svg" alt="npm package"></a>
  <img src="https://img.shields.io/github/downloads/wolf-table/table/total" alt="GitHub all releases">
  <img src="https://img.shields.io/github/license/wolf-table/table" alt="GitHub">
  <img src="https://img.shields.io/github/languages/code-size/wolf-table/table" alt=" code size in bytes">
</p>

## wolf-table
> A web-based(canvas) JavaScript Table

## Demo
<a href="https://stackblitz.com/edit/wolf-table-prnhfa?file=index.ts">Open in Stackblitz</a>
<a href="https://wolf-table-prnhfa.stackblitz.io">Preview in browser</a>

## NPM
npm install
```shell
npm install @wolf-table/table@0.0.1
```
## Usage
```javascript
import '@wolf-table/table/dist/table.min.css';
import Table from "@wolf-table/table";

const t = Table.create(
  '#table',
  () => 1400,
  () => 600,
  {
    scrollable: true,
    resizable: true,
    selectable: true,
    editable: true,
    copyable: true,
  }
)
  .freeze('D5')
  .merge('F10:G11')
  .merge('I10:K11')
  .addBorder('E8:L12', 'all', 'medium', '#21ba45')
  .formulaParser((v) => `${v}-formula`)
  .data({
    styles: [
      { bold: true, strikethrough: true, color: '#21ba45', italic: true, align: 'center', fontSize: 12 },
    ],
    cells: [
      [0, 0, 'abc'],
      [1, 1, 100],
      [2, 6, { value: 'formua', style: 0 }],
      [9, 5, { value: '', formula: '=sum(A1:A10)' }],
    ],
  })
  .render();

// add style
const si = t.addStyle({
  bold: true,
  italic: true,
  underline: true,
  color: '#1b1c1d',
});
// set cell
t.cell(2, 2, { value: 'set-value', style: si }).render();

// get cell
console.log('cell[2,2]:', t.cell(2, 2));
```

## Development

```shell
git clone https://github.com/wolf-table/table.git
cd table
npm install
npm run dev
```

Open your browser and visit http://127.0.0.1:8080.

## Browser Support

Modern browsers(chrome, firefox, Safari).

## LICENSE

MIT

Copyright (c) 2022-present, myliang
npm package: @lumelabs/eslint-config-react
Description: Opinionated ESLint configuration for TypeScript + React projects, based on ESLint 8.
Author: Egor Arkhipov
Latest version: 0.1.2

# @lumelabs/eslint-config-react

> ⚠️ **Experimental / Internal Use Only**
>
> This configuration is primarily intended for personal and internal use.
> It may change, break, or be restructured at any time without notice.
>
> **Do not rely on this package for production or public projects unless you are prepared to maintain your own fork.**
>
> **Issues and feature requests may be closed without response.**

Opinionated ESLint configuration for **TypeScript + React** projects.

This preset is designed for modern setups using TypeScript, React, Vite/Webpack, and Prettier.
It prioritizes practical correctness over strict ideology and avoids rules that tend to create noise
or force unnatural code patterns.

---

## Features

- ESLint **8.x** only (fully bundled, no peer dependency juggling)
- TypeScript-first (no JS-only compromises)
- React + React Hooks + JSX a11y included
- Prettier-compatible
- Sensible defaults based on real-world usage, not theory
- No legacy or deprecated ESLint patterns

---

## Installation

```bash
npm install --save-dev @lumelabs/eslint-config-react
npm package: @lumelabs/react-di
Description: Non-reactive dependency injection library for React built on top of tsyringe with immutable module scopes.
Author: Egor Arkhipov
Latest version: 0.1.0

# @lumelabs/react-di

> ⚠️ **Experimental / Internal Use Only**
>
> This configuration is primarily intended for personal and internal use.
> It may change, break, or be restructured at any time without notice.
>
> **Do not rely on this package for production or public projects unless you are prepared to maintain your own fork.**
>
> **Issues and feature requests may be closed without response.**

Lightweight non-reactive DI for React on top of `tsyringe`.

## Principles

- DI is composition/lifecycle transport, not a reactive state layer.
- Reactivity belongs to MobX/Effector/RxJS/etc.
- Container scopes map to React subtree boundaries.
- Module instances are immutable after mount. To rebuild module, remount provider (`key`).

## Core API

- `ModuleProvider`: universal module provider (`root`/`attach`/`factory`/`scoped`) with `providers[]` + `onModuleInit`.
- `useModule`: low-level immutable module resolution.
- `useModuleContainer`: managed lifecycle wrapper around `useModule`.
- `useResolve`, `useTryResolve`: resolve hooks.

## Root mode

```
<ModuleProvider root providers={[...]} onModuleInit={(c) => { ... }}>
  <App />
</ModuleProvider>
```

- `root: true` creates factory via `tsyringe.container.createChildContainer()`.
- `root` cannot be combined with `factory` or `container`.

## Provider definition

- `Provider` can be a class constructor (default singleton).
- Or explicit definition:

```
{
  provide: Token,
  provider: ServiceClass | { useClass } | { useToken } | { useValue } | { useFactory },
  scope?: "singleton" | "transient" | "containerScoped" | "resolutionScoped"
}
```

- Default `scope` is `"singleton"`.
- For `useFactory`, only `"transient"` is allowed directly (for singleton-like factory behavior use tsyringe caching
  helpers).

## Notes

- `providers` are applied inside `useModule` while creating an owned container.
- In attach mode, `providers`/`onModuleInit` are disallowed.
- `useTryResolve` returns `undefined` only for unregistered token errors and rethrows other resolution errors.
- `IResolver.tryResolve` is recursive (walks parent chain).
- `IResolver.resolveScoped` / `tryResolveScoped` are current-scope only.