# @table-merge/core

> 极佳、极简、通用的表格合并方案，已提供多个 UI 框架开箱即用。

Latest version **1.0.2** (published 2022-10-09) · ISC license · 0 weekly downloads

## Install

```sh
npm install @table-merge/core
pnpm add @table-merge/core
yarn add @table-merge/core
bun add @table-merge/core
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2022-10-09 |
| First published | 2022-09-13 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 12.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 23 |
| Author | 岳晓亮 |
| Maintainers | yuexiaoliang1993 |
| Keywords | table-merge |

## Links

- npm: https://www.npmjs.com/package/@table-merge/core
- Repository: https://github.com/yuexiaoliang/table-merge
- Issues: https://github.com/yuexiaoliang/table-merge/issues
- npm.io page: https://npm.io/package/@table-merge/core

## Alternatives

- [@lexical/table](https://npm.io/package/@lexical/table.md) — 3.0M weekly downloads
- [mantine-datatable](https://npm.io/package/mantine-datatable.md) — 98.2K weekly downloads
- [react-native-collapsible-tab-view](https://npm.io/package/react-native-collapsible-tab-view.md) — 70.6K weekly downloads
- [@handsontable/vue3](https://npm.io/package/@handsontable/vue3.md) — 16.1K weekly downloads
- [vuewordcloud](https://npm.io/package/vuewordcloud.md) — 7.2K weekly downloads

## Recent versions

- 1.0.2 (latest) — 2022-10-09
- 1.0.1 — 2022-10-07
- 1.0.0 — 2022-10-04
- 0.1.2 — 2022-10-04
- 0.1.0 — 2022-10-03
- 0.0.1-alpha.3 — 2022-09-13
- 0.0.1-alpha.2 — 2022-09-13
- 0.0.1-alpha.1 — 2022-09-13
- 0.0.1-alpha.0 — 2022-09-13
- 0.0.0 — 2022-09-13

## README

# @table-merge/core

## API

### createTableMerge

根据表格数据创建包含 `rowspan` 以及 `colspan` 的虚拟表格。

**Type:**

```ts
function createTableMerge(data: TableData, options?: TableMergeOptions): CreateTableResult;
```

### getTableMerged

根据虚拟表格获取可用的 `rowspan` 以及 `colspan` 数据。

**Type:**

```ts
function getTableMerged(table: CreateTableResult): number[][][] | null;
function getTableMerged(table: CreateTableResult, spanType: SpanTypes): number[][] | null;
```

## Example

如下是 [@table-merge/element-plus](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-plus) 的实现：

```ts
import { createTableMerge, getTableMerged } from '@table-merge/core';
import type { TableMergeOptions, TableMergeSpanTypes } from '@table-merge/core';

interface SpanMethodProps {
  rowIndex: number;
  columnIndex: number;
}

export interface TableMergeElementPlusOptions extends TableMergeOptions {
  spanType?: TableMergeSpanTypes;
}

export default (data: any[], options?: TableMergeElementPlusOptions) => {
  const { spanType = 'rowSpan', keys, range } = options || {};

  const table = createTableMerge(data, { keys, range });
  const merged = getTableMerged(table);
  if (!merged) return;

  return ({ rowIndex, columnIndex }: SpanMethodProps) => {
    const cell = merged[rowIndex][columnIndex];

    const result = {
      rowspan: spanType === 'rowSpan' ? cell[0] : 1,
      colspan: spanType === 'colSpan' ? cell[1] : 1
    };
    return result;
  };
};
```

## License

MIT

---
_Source: https://npm.io/package/@table-merge/core · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
