open-index/open-npm huggingface dataset:
npm package: @gridstorm/dom-renderer
Description: GridStorm DOM renderer with virtual scrolling
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/dom-renderer

DOM-based renderer for GridStorm with virtual scrolling, row/cell rendering, and scroll sync.

## Install

```bash
npm install @gridstorm/dom-renderer @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { DomRenderer } from '@gridstorm/dom-renderer';

const engine = createGridEngine({
  columnDefs: [{ field: 'name' }, { field: 'email' }],
  rowData: myData,
  plugins: [],
});

const renderer = new DomRenderer(engine, document.getElementById('grid')!);
renderer.mount();
```

## Features

- Virtual scrolling for 100K+ rows
- Row and cell DOM recycling
- Scroll synchronization between header and body
- Keyboard navigation support
- ARIA grid roles for accessibility

## Documentation

[Full API Reference](https://grid-data-analytics-explorer.vercel.app//api/dom-renderer) | [Virtual Scrolling Guide](https://grid-data-analytics-explorer.vercel.app//docs/virtual-scroll)

## License

MIT
npm package: @gridstorm/i18n
Description: Internationalization support for GridStorm
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/i18n

Internationalization and RTL support for GridStorm.

## Install

```bash
npm install @gridstorm/i18n
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { I18nPlugin, localeDE } from '@gridstorm/i18n';

const engine = createGridEngine({
  columnDefs: columns,
  rowData: data,
  plugins: [I18nPlugin({ locale: localeDE })],
});
```

## Features

- Locale-aware text for built-in UI elements (pagination, filters, menus)
- Right-to-left (RTL) layout support
- Custom locale definitions
- Runtime locale switching

## Documentation

[Internationalization Guide](https://grid-data-analytics-explorer.vercel.app//docs/i18n) | [RTL Support](https://grid-data-analytics-explorer.vercel.app//docs/rtl)

## License

MIT
npm package: @gridstorm/pdf-plugin-intelligence
Description: GridStorm PDF document intelligence plugin — classify, extract, and summarize documents
Latest version: 0.1.3

# @gridstorm/pdf-plugin-intelligence

PDF document classification, data extraction, and summarization.

## Install

```bash
npm install @gridstorm/pdf-plugin-intelligence
```

## Usage

```typescript
import { IntelligencePlugin } from '@gridstorm/pdf-plugin-intelligence';

const pdf = createPDFEngine({ plugins: [IntelligencePlugin()] });
```

## Features

- **Document classification**
- **Key-value extraction**
- **Text summarization**
- **Pattern recognition**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/pdf-plugin-pii
Description: GridStorm PDF PII detection plugin — detect and redact personally identifiable information
Latest version: 0.1.3

# @gridstorm/pdf-plugin-pii

PII detection and redaction for PDFs.

## Install

```bash
npm install @gridstorm/pdf-plugin-pii
```

## Usage

```typescript
import { PIIPlugin } from '@gridstorm/pdf-plugin-pii';

const pdf = createPDFEngine({ plugins: [PIIPlugin()] });
```

## Features

- **Detect SSNs, emails, phones, addresses**
- **Visual redaction overlays**
- **Configurable patterns**
- **Audit trail**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/pdf-theme
Description: CSS custom properties theme for GridStorm PDF viewer
Latest version: 0.1.3

# @gridstorm/pdf-theme

CSS custom properties theme for the GridStorm PDF viewer.

## Install

```bash
npm install @gridstorm/pdf-theme
```

## Usage

```typescript
import '@gridstorm/pdf-theme/dist/index.css';
```

## Features

- **CSS custom properties**
- **Light and dark modes**
- **Customizable via CSS variables**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/plugin-ai
Description: GridStorm AI plugin — natural language queries, anomaly detection, smart suggestions
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-ai

AI-powered grid features: natural language queries, anomaly detection, and smart suggestions.

## Install

```bash
npm install @gridstorm/plugin-ai
```

## Usage

```typescript
import { AIPlugin } from '@gridstorm/plugin-ai';

const grid = createGridEngine({
  plugins: [AIPlugin({ autoDetect: true })],
});
grid.dispatch('ai:query', { text: 'sort by salary descending' });
```

## Features

- **Natural language query parser (no API needed)**
- **Anomaly detection (Z-score + IQR)**
- **Smart data suggestions**
- **Optional LLM adapter for complex queries**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/plugin-clipboard-pro
Description: GridStorm clipboard pro — Excel-compatible copy/paste with range support, type coercion, and validation
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-clipboard-pro

Excel-compatible copy/paste for [GridStorm](https://gridstorm.tekivex.com) — range-aware TSV serialization, smart type coercion, validation integration, formula-aware paste, and undo support.

## Install

```bash
npm install @gridstorm/plugin-clipboard-pro
```

## Quick Start

```ts
import { createGrid } from '@gridstorm/core';
import { clipboardProPlugin } from '@gridstorm/plugin-clipboard-pro';

const grid = createGrid({
  plugins: [clipboardProPlugin()],
  columns: [...],
  data: [...],
});
```

## Features

- **Range copy/paste** — copies the full selected cell range as TSV (tab-separated values)
- **Excel-compatible** — paste directly from Excel or Google Sheets including merged cells and quoted values
- **Smart type coercion** — auto-converts text to number, boolean, date, percentage, and currency
- **Formula-aware paste** — strings starting with `=` dispatch to the formula engine automatically
- **Validation integration** — works with `@gridstorm/plugin-validation` to reject invalid pastes
- **Undo support** — integrates with `@gridstorm/plugin-time-travel` for paste undo
- **Copy with headers** — optionally include column headers in the copied TSV

## Options

```ts
clipboardProPlugin({
  copyWithHeaders: false,   // include column headers on copy
  coerceTypes: true,        // auto-convert pasted strings to native types
  formulaAware: true,       // dispatch '=...' strings to formula engine
})
```

## Commands

| Command | Description |
|---|---|
| `clipboard:copy` | Copy selected range to clipboard |
| `clipboard:paste` | Paste from clipboard into selected cell |
| `clipboard:cut` | Cut selected range |
| `clipboard:copyWithHeaders` | Copy range including column headers |
| `clipboard:pasteSpecial` | Paste with custom coercion options |

## Documentation

Full docs at [gridstorm.tekivex.com](https://gridstorm.tekivex.com/#/docs)

## License

MIT © [GridStorm](https://gridstorm.tekivex.com)
npm package: @gridstorm/plugin-column-pinning
Description: GridStorm column pinning plugin — pin columns to left or right
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-column-pinning

Pin columns to the left or right edge of the grid in GridStorm.

## Install

```bash
npm install @gridstorm/plugin-column-pinning @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { ColumnPinningPlugin } from '@gridstorm/plugin-column-pinning';

const engine = createGridEngine({
  columnDefs: [
    { field: 'id', pinned: 'left' },
    { field: 'name' },
    { field: 'email' },
    { field: 'actions', pinned: 'right' },
  ],
  rowData: myData,
  plugins: [ColumnPinningPlugin()],
});

// Pin a column programmatically
engine.dispatchCommand('columnPinning:pin', { field: 'name', side: 'left' });
```

## Features

- Pin columns to left or right via column definitions
- Programmatic pin/unpin API
- Pinned columns stay fixed while scrolling horizontally
- Visual separator between pinned and scrollable areas

## Documentation

[Column Pinning Guide](https://grid-data-analytics-explorer.vercel.app//docs/column-pinning) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-column-pinning)

## License

MIT
npm package: @gridstorm/plugin-column-reorder
Description: GridStorm column reorder plugin — drag and drop column reordering
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-column-reorder

Drag-and-drop column reordering for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-column-reorder @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { ColumnReorderPlugin } from '@gridstorm/plugin-column-reorder';

const engine = createGridEngine({
  columnDefs: [
    { field: 'name' },
    { field: 'age' },
    { field: 'email' },
  ],
  rowData: myData,
  plugins: [ColumnReorderPlugin()],
});

// Reorder columns programmatically
engine.dispatchCommand('columnReorder:move', { field: 'email', toIndex: 0 });
```

## Features

- Drag column headers to reorder
- Visual drop indicator during drag
- Programmatic reorder API
- Respects pinned column boundaries

## Documentation

[Column Reorder Guide](https://grid-data-analytics-explorer.vercel.app//docs/column-reorder) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-column-reorder)

## License

MIT
npm package: @gridstorm/plugin-column-resize
Description: GridStorm column resize plugin — drag-to-resize with visual indicators
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-column-resize

Drag-to-resize columns with visual indicators for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-column-resize @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { ColumnResizePlugin } from '@gridstorm/plugin-column-resize';

const engine = createGridEngine({
  columnDefs: [
    { field: 'name', resizable: true, minWidth: 100 },
    { field: 'email', resizable: true },
  ],
  rowData: myData,
  plugins: [ColumnResizePlugin()],
});

// Resize a column programmatically
engine.dispatchCommand('columnResize:set', { field: 'name', width: 200 });
```

## Features

- Drag column borders to resize
- Minimum and maximum width constraints
- Auto-size columns to fit content
- Visual resize indicator during drag
- Programmatic resize API

## Documentation

[Column Resize Guide](https://grid-data-analytics-explorer.vercel.app//docs/column-resize) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-column-resize)

## License

MIT
npm package: @gridstorm/plugin-editing
Description: GridStorm editing plugin — cell and full-row editing with built-in editors
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-editing

Cell and full-row editing with built-in editors for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-editing @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { EditingPlugin } from '@gridstorm/plugin-editing';

const engine = createGridEngine({
  columnDefs: [
    { field: 'name', editable: true },
    { field: 'age', editable: true, cellEditor: 'number' },
  ],
  rowData: myData,
  plugins: [EditingPlugin()],
});

// Start editing programmatically
engine.dispatchCommand('editing:startCell', { rowId: '1', field: 'name' });
```

## Features

- Double-click or Enter to start editing
- Built-in text, number, and select editors
- Full-row editing mode
- Value validation and cancel support
- Custom editor components

## Documentation

[Editing Guide](https://grid-data-analytics-explorer.vercel.app//docs/editing) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-editing)

## License

MIT
npm package: @gridstorm/plugin-filtering
Description: GridStorm filtering plugin — column filters, quick filter, compound conditions
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-filtering

Column filters, quick filter, and compound conditions for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-filtering @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { FilteringPlugin } from '@gridstorm/plugin-filtering';

const engine = createGridEngine({
  columnDefs: [
    { field: 'name', filterable: true },
    { field: 'age', filterable: true, type: 'number' },
  ],
  rowData: myData,
  plugins: [FilteringPlugin()],
});

// Apply a filter programmatically
engine.dispatchCommand('filter:set', {
  field: 'age',
  operator: 'greaterThan',
  value: 30,
});
```

## Features

- Text, number, and date column filters
- Quick filter (search across all columns)
- Compound conditions with AND/OR logic
- Custom filter functions
- Programmatic filter API via commands

## Documentation

[Filtering Guide](https://grid-data-analytics-explorer.vercel.app//docs/filtering) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-filtering)

## License

MIT
npm package: @gridstorm/plugin-pagination
Description: GridStorm pagination plugin — client-side page navigation
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-pagination

Client-side page navigation for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-pagination @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { PaginationPlugin } from '@gridstorm/plugin-pagination';

const engine = createGridEngine({
  columnDefs: columns,
  rowData: myData,
  plugins: [PaginationPlugin({ pageSize: 25 })],
});

// Navigate pages
engine.dispatchCommand('pagination:goToPage', { page: 2 });
engine.dispatchCommand('pagination:nextPage', {});
```

## Features

- Configurable page size
- Page navigation commands (next, previous, first, last, go-to)
- Page count and current page state
- Works with sorting and filtering

## Documentation

[Pagination Guide](https://grid-data-analytics-explorer.vercel.app//docs/pagination) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-pagination)

## License

MIT
npm package: @gridstorm/plugin-pdf-export
Description: GridStorm PDF export plugin — export grid data to PDF with formatting
Latest version: 0.1.3

# @gridstorm/plugin-pdf-export

Export grid data to PDF with formatting and layout options.

## Install

```bash
npm install @gridstorm/plugin-pdf-export
```

## Usage

```typescript
import { PDFExportPlugin } from '@gridstorm/plugin-pdf-export';

const grid = createGridEngine({ plugins: [PDFExportPlugin()] });
grid.dispatch('pdfExport:export', { fileName: 'report.pdf' });
```

## Features

- **Full grid export to PDF**
- **Header and footer support**
- **Page size and orientation**
- **Style preservation**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/plugin-row-reorder
Description: GridStorm row reorder plugin — drag and drop row reordering
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-row-reorder

Drag-and-drop row reordering.

## Install

```bash
npm install @gridstorm/plugin-row-reorder
```

## Usage

```typescript
import { RowReorderPlugin } from '@gridstorm/plugin-row-reorder';

const grid = createGridEngine({ plugins: [RowReorderPlugin()] });
```

## Features

- **Drag-and-drop reordering**
- **Visual drag indicators**
- **Index and ID-based move commands**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/plugin-selection
Description: GridStorm selection plugin — row, cell, and range selection
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-selection

Row, cell, and range selection for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-selection @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { SelectionPlugin } from '@gridstorm/plugin-selection';

const engine = createGridEngine({
  columnDefs: columns,
  rowData: myData,
  plugins: [SelectionPlugin({ mode: 'multiRow' })],
});

// Select rows programmatically
engine.dispatchCommand('selection:selectRows', { rowIds: ['1', '3'] });
```

## Features

- Single and multi-row selection
- Cell selection
- Range selection with Shift+click
- Checkbox selection column
- Programmatic selection API

## Documentation

[Selection Guide](https://grid-data-analytics-explorer.vercel.app//docs/selection) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-selection)

## License

MIT
npm package: @gridstorm/plugin-sorting
Description: GridStorm sorting plugin — single and multi-column sorting
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-sorting

Single and multi-column sorting for GridStorm.

## Install

```bash
npm install @gridstorm/plugin-sorting @gridstorm/core
```

## Usage

```typescript
import { createGridEngine } from '@gridstorm/core';
import { SortingPlugin } from '@gridstorm/plugin-sorting';

const engine = createGridEngine({
  columnDefs: [
    { field: 'name', sortable: true },
    { field: 'age', sortable: true, type: 'number' },
  ],
  rowData: myData,
  plugins: [SortingPlugin()],
});

// Sort programmatically
engine.dispatchCommand('sort:set', { field: 'name', direction: 'asc' });
```

## Features

- Click column headers to cycle through asc/desc/none
- Multi-column sort with Shift+click
- Custom comparator functions
- Programmatic sort API via commands

## Documentation

[Sorting Guide](https://grid-data-analytics-explorer.vercel.app//docs/sorting) | [API Reference](https://grid-data-analytics-explorer.vercel.app//api/plugin-sorting)

## License

MIT
npm package: @gridstorm/plugin-sparklines
Description: GridStorm sparklines plugin — inline SVG sparkline cell renderers (line, bar, area, win-loss)
Latest version: 0.1.3

# @gridstorm/plugin-sparklines

Inline SVG sparkline renderers for grid cells.

## Install

```bash
npm install @gridstorm/plugin-sparklines
```

## Usage

```typescript
import { SparklinesPlugin } from '@gridstorm/plugin-sparklines';

const grid = createGridEngine({ plugins: [SparklinesPlugin()] });
```

## Features

- **Line, bar, area, win-loss sparklines**
- **Inline cell rendering**
- **Customizable colors**
- **Pure SVG**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/plugin-streaming
Description: GridStorm streaming plugin — real-time live data updates with change highlighting
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/plugin-streaming

Real-time live data streaming with batched updates and change tracking.

## Install

```bash
npm install @gridstorm/plugin-streaming
```

## Usage

```typescript
import { StreamingPlugin } from '@gridstorm/plugin-streaming';

const grid = createGridEngine({
  plugins: [StreamingPlugin({ batchInterval: 100 })],
});
grid.dispatch('stream:connect', { adapter: myWebSocketAdapter });
```

## Features

- **Batched update processing**
- **Cell change direction tracking**
- **Adapter pattern (WebSocket, SSE, polling)**
- **Pause/resume controls**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/react
Description: GridStorm React adapter
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/react

React 18+ adapter for GridStorm with hooks, error boundaries, and portal-based overlays.

## Install

```bash
npm install @gridstorm/react @gridstorm/core @gridstorm/dom-renderer
```

## Usage

```tsx
import { GridStorm } from '@gridstorm/react';
import { SortingPlugin } from '@gridstorm/plugin-sorting';

const columns = [
  { field: 'name', headerName: 'Name' },
  { field: 'age', headerName: 'Age' },
];

export default function App() {
  return (
    <GridStorm
      rowData={[{ id: 1, name: 'Alice', age: 32 }]}
      columnDefs={columns}
      plugins={[SortingPlugin()]}
      height={400}
    />
  );
}
```

## Features

- `<GridStorm>` component with declarative props
- React hooks for grid state access
- Error boundary for graceful error handling
- Portal-based overlays for editors and menus

## Documentation

[Full API Reference](https://grid-data-analytics-explorer.vercel.app//api/react) | [React Guide](https://grid-data-analytics-explorer.vercel.app//docs/react)

## License

MIT
npm package: @gridstorm/svelte
Description: GridStorm Svelte 5 adapter — reactive data grid component for Svelte
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/svelte

Svelte 5 wrapper component for GridStorm.

## Install

```bash
npm install @gridstorm/svelte
```

## Usage

```typescript
<script>
  import { GridStorm } from '@gridstorm/svelte';
</script>

<GridStorm columnDefs={columns} rowData={data} plugins={plugins} />
```

## Features

- **Svelte 5 runes compatible**
- **Reactive props**
- **Auto-cleanup on destroy**
- **Full TypeScript support**

## Documentation

[Full Documentation](https://grid-data-analytics-explorer.vercel.app/) | [GitHub](https://github.com/007krcs/grid-data)

## License

MIT
npm package: @gridstorm/theme-default
Description: GridStorm default theme with CSS custom properties
Author: GridStorm
Latest version: 0.1.3

# @gridstorm/theme-default

Default theme for GridStorm using CSS custom properties. Includes light, dark, and high-contrast modes with three density levels.

## Install

```bash
npm install @gridstorm/theme-default
```

## Usage

```typescript
// Import the full theme (includes light mode)
import '@gridstorm/theme-default';

// Or import specific variants
import '@gridstorm/theme-default/dark';
import '@gridstorm/theme-default/high-contrast';

// Density modes
import '@gridstorm/theme-default/compact';
import '@gridstorm/theme-default/comfortable';
import '@gridstorm/theme-default/spacious';
```

## Theme Modes

| Import Path | Description |
|-------------|-------------|
| `@gridstorm/theme-default` | Light mode (default) |
| `@gridstorm/theme-default/dark` | Dark mode |
| `@gridstorm/theme-default/high-contrast` | High contrast for accessibility |
| `@gridstorm/theme-default/compact` | Compact row density |
| `@gridstorm/theme-default/comfortable` | Comfortable row density (default) |
| `@gridstorm/theme-default/spacious` | Spacious row density |

## Documentation

[Theming Guide](https://grid-data-analytics-explorer.vercel.app//docs/theming) | [Custom Theme Tutorial](https://grid-data-analytics-explorer.vercel.app//docs/custom-themes)

## License

MIT
npm package: @gridventures/eslint-config-jest
Description: ```sh npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-jest ```
Author: Gridventures GmbH
Latest version: 2.0.0

# @gridventures/eslint-config-jest

```sh
npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-jest
```

## Usage

```js
//.eslintrc.js
module.exports = {
  extends: ['@gridventures/eslint-config-base', '@gridventures/eslint-config-jest'],
};
```
npm package: @gridventures/eslint-config-react
Description: ```sh npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-react ```
Author: Gridventures GmbH
Latest version: 2.0.0

# @gridventures/eslint-config-react

```sh
npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-react
```

## Usage

```js
//.eslintrc.js
module.exports = {
  extends: [
    '@gridventures/eslint-config-base',
    '@gridventures/eslint-config-react',
    // optional
    '@gridventures/eslint-config-react/hooks',
    '@gridventures/eslint-config-react/a11y',
  ],
};
```

### Typescript based

It is required to also install `@gridventures/eslint-config-typescript`:

```sh
npm i -D @gridventures/eslint-config-typescript
```

```js
//.eslintrc.js
module.exports = {
  extends: [
    '@gridventures/eslint-config-base',
    '@gridventures/eslint-config-typescript',
    '@gridventures/eslint-config-react',
    '@gridventures/eslint-config-react/typescript',
    // optional
    '@gridventures/eslint-config-react/hooks',
    '@gridventures/eslint-config-react/a11y',
    // when using Next.js
    '@gridventures/eslint-config-react/nextjs',
  ],
};
```
npm package: @gridventures/eslint-config-solid-js
Description: ```sh npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-solid-js ```
Author: Gridventures GmbH
Latest version: 2.0.0

# @gridventures/eslint-config-solid-js

```sh
npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-solid-js
```

## Usage

```js
//.eslintrc.js
module.exports = {
  extends: [
    '@gridventures/eslint-config-base',
    '@gridventures/eslint-config-solid-js/javascript',
  ],
};
```

### Typescript based

It is required to also install `@gridventures/eslint-config-typescript`:

```sh
npm i -D @gridventures/eslint-config-typescript
```

```js
//.eslintrc.js
module.exports = {
  extends: [
    '@gridventures/eslint-config-base',
    '@gridventures/eslint-config-typescript',
    '@gridventures/eslint-config-solid-js/typescript',
  ],
};
```
npm package: @gridventures/eslint-config-typescript
Description: ```sh npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-typescript ```
Author: Gridventures GmbH
Latest version: 2.0.0

# @gridventures/eslint-config-typescript

```sh
npm i -D @gridventures/eslint-config-base @gridventures/eslint-config-typescript
```

## Usage

```js
//.eslintrc.js
module.exports = {
  parser: '@typescript-eslint/parser',

  // adapt it to your project
  env: {
    browser: true,
    es6: true,
    node: true,
  },

  // adapt it to your project
  parserOptions: {
    project: 'tsconfig.json',
    tsconfigRootDir: __dirname,
    sourceType: 'module',
    ecmaVersion: 'es2022',
    ecmaFeatures: {
      jsx: true,
    },
  },

  extends: ['@gridventures/eslint-config-base', '@gridventures/eslint-config-typescript'],
};
```
npm package: @gridventures/reactive-feathers-state
Description: A reactive and offline-first feathers-client based on @vue/reactivity
Author: Phil Schaffarzyk
Latest version: 0.1.5
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @gridventures/reactive-feathers-state

[![Build Status](https://travis-ci.org/gridventures/reactive-feathers-state.svg?branch=master)](https://travis-ci.org/gridventures/reactive-feathers-state)
[![License](https://badgen.net/github/license/gridventures/reactive-feathers-state)](./LICENSE)
[![Library minified size](https://badgen.net/bundlephobia/min/@gridventures/reactive-feathers-state)](https://bundlephobia.com/result?p=@gridventures/reactive-feathers-state)
[![Library minified + gzipped size](https://badgen.net/bundlephobia/minzip/@gridventures/reactive-feathers-state)](https://bundlephobia.com/result?p=@gridventures/reactive-feathers-state)

## Installation

This library is published in the NPM registry and can be installed using any compatible package manager.

```sh
npm install @gridventures/reactive-feathers-state --save

# For Yarn, use the command below.
yarn add @gridventures/reactive-feathers-state
```

## Documentation

[Documentation generated from source files by Typedoc](./docs/README.md).

## License

Released under [MIT License](./LICENSE).
npm package: @gridworkjs/core
Description: geometry primitives and spatial index protocol
Latest version: 1.1.1

<p align="center">
  <img src="logo.svg" width="120" height="120" alt="@gridworkjs/core">
</p>

<h1 align="center">@gridworkjs/core</h1>

<p align="center">geometry primitives and spatial index protocol</p>

## Install

```
npm install @gridworkjs/core
```

## Usage

Define your game objects, then use bounds utilities to check spatial relationships between them:

```js
import { point, rect, circle, bounds, intersects, contains } from '@gridworkjs/core'

// a player, the room they're in, and an explosion radius
const player = point(10, 20)
const room = rect(0, 0, 100, 100)
const blast = circle(50, 50, 25)

// is the player inside the room?
contains(bounds(room), bounds(player))  // true

// does the explosion overlap the room?
intersects(bounds(room), bounds(blast))  // true

// how far is the player from the explosion's bounding box?
import { distanceToPoint } from '@gridworkjs/core'
distanceToPoint(bounds(blast), 10, 20)  // 15.81
```

Every spatial index in gridwork uses these same primitives and bounds operations under the hood.

## API

### geometry

#### `point(x, y)`

Creates a point geometry.

#### `rect(minX, minY, maxX, maxY)`

Creates a rectangle geometry.

#### `circle(x, y, radius)`

Creates a circle geometry.

#### `isPoint(g)` / `isRect(g)` / `isCircle(g)`

Type checks for geometries.

### bounds

#### `bounds(geometry)`

Computes the axis-aligned bounding box of any geometry. Also accepts plain `{ minX, minY, maxX, maxY }` objects.

#### `intersects(a, b)`

Returns `true` if two bounding boxes overlap or touch.

#### `contains(a, b)`

Returns `true` if bounding box `a` fully contains bounding box `b`.

#### `merge(a, b)`

Returns the smallest bounding box that contains both `a` and `b`.

#### `area(bounds)`

Returns the area of a bounding box.

#### `enlargedArea(a, b)`

Returns the area of the bounding box that would result from merging `a` and `b`.

#### `distanceToPoint(bounds, px, py)`

Returns the minimum Euclidean distance from a bounding box to a point. Returns `0` if the point is inside.

#### `distanceBetween(a, b)`

Returns the minimum Euclidean distance between two bounding boxes. Returns `0` if they overlap.

#### `centerX(bounds)` / `centerY(bounds)`

Returns the center coordinate of a bounding box.

#### `expandBy(bounds, amount)`

Returns a new bounding box expanded by `amount` in all directions. Negative values shrink. Clamped so the result never inverts (shrinking past zero produces a zero-area box at the center).

### protocol

#### `SPATIAL_INDEX`

A `Symbol` used to mark objects as spatial indexes. Every index in the gridwork ecosystem sets `[SPATIAL_INDEX] = true`.

#### `isSpatialIndex(obj)`

Returns `true` if `obj` implements the spatial index protocol: has the `SPATIAL_INDEX` symbol and all required methods (`insert`, `remove`, `search`, `nearest`, `clear`).

## License

MIT
npm package: @gridworkjs/hashgrid
Description: Spatial hash grid for uniform distributions and fast neighbor lookups
Latest version: 1.1.1

<p align="center">
  <img src="logo.svg" width="256" height="256" alt="@gridworkjs/hashgrid">
</p>

<h1 align="center">@gridworkjs/hashgrid</h1>

<p align="center">Spatial hash grid for uniform distributions and fast neighbor lookups</p>

## Install

```
npm install @gridworkjs/hashgrid
```

## Usage

A particle simulation where thousands of uniform-sized particles need fast collision checks every frame:

```js
import { createHashGrid } from '@gridworkjs/hashgrid'
import { point, bounds } from '@gridworkjs/core'

// particles are ~10 units across, so a 20-unit cell size works well
const particles = createHashGrid(p => bounds(p.position), { cellSize: 20 })

particles.insert({ id: 'a', position: point(10, 20), vx: 1, vy: 0 })
particles.insert({ id: 'b', position: point(15, 22), vx: -1, vy: 1 })
const c = { id: 'c', position: point(300, 400), vx: 0, vy: -1 }
particles.insert(c)

// each frame, check for collisions near each particle
const nearby = particles.search({ minX: 5, minY: 15, maxX: 25, maxY: 30 })
// => [particle a, particle b]  - fast O(1) cell lookup

// find the closest neighbor for attraction/repulsion forces
particles.nearest({ x: 10, y: 20 }, 1)
// => [particle b]

// particle leaves the simulation (by reference)
particles.remove(c)
```

## When to Use a Hash Grid

Hash grids are ideal when your data is **uniformly distributed** and items are roughly the same size. They offer O(1) cell lookups, making them excellent for collision detection, particle systems, and game engines.

If your data is clustered or varies widely in size, consider `@gridworkjs/quadtree` or `@gridworkjs/rtree` instead.

## Choosing a Cell Size

The `cellSize` parameter controls the width and height of each grid cell. For best performance:

- Set `cellSize` to roughly the size of your items or the typical query range
- Too small: items span many cells, increasing memory and insert cost
- Too large: cells contain many items, reducing search selectivity

## API

### `createHashGrid(accessor, options)`

Creates a new hash grid. The `accessor` function maps each item to its bounding box (`{ minX, minY, maxX, maxY }`). Use `bounds()` from `@gridworkjs/core` to convert geometries.

The `cellSize` option is required.

Returns a spatial index implementing the gridwork protocol.

### `grid.insert(item)`

Adds an item to the grid. The item is placed into every cell its bounding box overlaps.

### `grid.remove(item)`

Removes an item by identity (`===`). Returns `true` if found and removed.

### `grid.search(query)`

Returns all items whose bounds intersect the query. Accepts bounds objects or geometry objects (point, rect, circle).

### `grid.nearest(point, k?)`

Returns the `k` nearest items to the given point, sorted by distance. Defaults to `k=1`. Accepts `{ x, y }` or a point geometry.

### `grid.clear()`

Removes all items from the grid.

### `grid.size`

Number of items in the grid.

### `grid.bounds`

Bounding box of all items, or `null` if empty.

## License

MIT
npm package: @gridworkjs/kd
Description: KD-tree spatial index for static point sets and nearest-neighbor queries
Latest version: 1.1.2

<p align="center">
  <img src="logo.svg" width="256" height="256" alt="@gridworkjs/kd">
</p>

<h1 align="center">@gridworkjs/kd</h1>

<p align="center">KD-tree spatial index for static point sets and nearest-neighbor queries</p>

## Install

```
npm install @gridworkjs/kd
```

## Usage

```js
import { createKdTree } from '@gridworkjs/kd'
import { point, bounds } from '@gridworkjs/core'

// index a set of restaurants by location
const tree = createKdTree(r => bounds(r.location))

tree.load([
  { name: 'Corner Bistro', location: point(40.738, -74.005) },
  { name: 'Katz Deli', location: point(40.722, -73.987) },
  { name: 'Joe Pizza', location: point(40.730, -73.989) },
  { name: 'Russ & Daughters', location: point(40.722, -73.988) }
])

// find the 2 closest restaurants to your current location
tree.nearest({ x: 40.725, y: -73.990 }, 2)
// => [{ name: 'Joe Pizza', ... }, { name: 'Katz Deli', ... }]

// search a bounding box
tree.search({ minX: 40.720, minY: -73.990, maxX: 40.730, maxY: -73.985 })
// => [{ name: 'Katz Deli', ... }, { name: 'Joe Pizza', ... }, { name: 'Russ & Daughters', ... }]
```

## When to Use a KD-tree

KD-trees excel at nearest-neighbor queries on point data. If you have a static dataset and your primary query is "find the k closest items to this point", a KD-tree will outperform other spatial indexes.

Use `load()` to build the tree from a complete dataset - this produces a balanced tree with optimal query performance. Dynamic `insert()` and `remove()` are supported but may unbalance the tree over time.

If your data changes frequently, consider `@gridworkjs/quadtree` (dynamic, sparse data) or `@gridworkjs/hashgrid` (uniform distributions). If your items are rectangles rather than points, `@gridworkjs/rtree` is a better fit.

## API

### `createKdTree(accessor)`

Creates a new KD-tree. The `accessor` function maps each item to its bounding box (`{ minX, minY, maxX, maxY }`). Use `bounds()` from `@gridworkjs/core` to convert geometries.

Returns a spatial index implementing the gridwork protocol.

### `tree.load(items)`

Builds a balanced tree from an array of items, replacing any existing data. This is the preferred way to populate the tree - it produces optimal structure for queries.

### `tree.insert(item)`

Adds a single item to the tree. For bulk data, prefer `load()`.

### `tree.remove(item)`

Removes an item by identity (`===`). Returns `true` if found and removed.

### `tree.search(query)`

Returns all items whose bounds intersect the query. Accepts bounds objects or geometry objects (point, rect, circle).

### `tree.nearest(point, k?)`

Returns the `k` nearest items to the given point, sorted by distance. Defaults to `k=1`. Accepts `{ x, y }` or a point geometry.

### `tree.clear()`

Removes all items from the tree.

### `tree.size`

Number of items in the tree.

### `tree.bounds`

Bounding box of all items, or `null` if empty.

### `tree.accessor`

The bounds accessor function passed at construction.

## License

MIT
npm package: @gridworld/te-geo-cesium
Description: 北京网格天地股份有限公司基于cesium封装的地学数据可视化及应用开发包
Author: gridworld
Latest version: 1.0.0

# te-geo-cesium

#### 介绍
北京网格天地软件技术股份有限公司基于```cesium```封装的地学数据可视化及应用开发包

#### 更新日志

```
2025-04-18 v1.0.0 增加地质模型、地质模型剖面、地质模型钻孔图元及交互功能类
```


#### 安装教程

```yarn add @gridworld/te-geo-cesium```

#### 使用说明

在导入```te-geo-cesium```前，先导入```Cesium```，并将```Cesium```设置为```window```变量

```js
import * as TeCesium from "te-geo-cesium";

// 构建地质模型的构造参数
let options = {
    id: "1", // 图元id，具有唯一性，必填
    name: "地质模型1", // 图元名称，可选，默认为空
    sid: 200, // 透明地球空间id，必填，相关操作数据会保存在该空间
    mid: "531", // 地质模型id，必填
    url: "https://xxxx/tgmodel/Model_531/Model_531.json", // 地质模型3dtiles链接，必填
    liftUp: 5000, // 初始抬升距离，单位米，可选，默认为0
    scale: 2, // 初始纵向缩放倍数，可选，默认为1
    showWireFrame: false, // 初始是否显示线框，可选，默认为true
    modelLoadedCallback: (model) => {
        console.log(`${data.name} loaded`);
    }, // 当前视角tiles都加载完成后的回调函数（默认传入新创建的地质模型实例），可选，默认为空
    viewer: window.viewer // cesium视图，必填
};

// 构建地质模型实例
window.model = new TeGeoCesium.GeoDrill(options);

// 初始化（异步）
await window.model.init();

// 视角飞到地质模型
window.model.flyTo();

// // 切换显隐
// window.model.show = true;  // 显示
// window.model.show = false; // 隐藏

// // 切换地层显隐
// window.model.setLayerShow("地层1", true); // 显示
// window.model.setLayerShow("地层1", false); // 隐藏

// // 修改地层颜色为红色
// window.model.setLayerColor("地层1", "rgba(255,0,0,1)"); // 显示

// // 切换当前显示的属性
// window.model.curProp = "岩性"; // 显示岩性属性
// window.model.curProp = "地层"; // 显示地层（不显示属性）

// // 抬升
// window.model.liftUp = 100; // 抬升100米

// // 缩放
// window.model.scale = 5; // 纵向缩放5倍

// // 地层爆炸
// window.model.explode = 200; // 爆炸200米

// // 切剖面
// window.model.createSection();

// // 切割模型
// window.model.createModelByClip();

// // 生成虚拟钻孔
// window.model.createVirtualDrill();

// // 销毁地质模型
// window.model.destroy();
```