Skip to content

Repository files navigation

Data Shape Kit

Free MIT-licensed tools for spreadsheet text, Markdown tables, local file checks, form validation, table selection, calendar arithmetic, workday schedules, chart gaps, line sampling, JSONL imports and PDF contents. Choose a module for your application or try the browser playground. Each tool has its own setup; JavaScript modules do not require Python.

Start with three free components for spreadsheet paste, remote field checks and JSONL imports, each with a fixed download and a short runnable example.

Choose a tool

What you need Start here Setup
Parse or copy spreadsheet text while preserving quoted line breaks, empty cells and leading zeros Clipboard Table Copyable JavaScript module; browser or Node.js
Turn a copied spreadsheet selection into comma-separated CSV Browser playground No installation; copy or download CSV
Convert CSV or tab-separated text into Markdown tables Markdown Table Versioned GitHub package; Node.js 20+ for installation
Add a table generator to a React application React component and DevKit adapter React 18+; Tailwind CSS 4 or your own styles
Keep decimal commas when pasting into Streamlit Decimal paste example Python helper plus an optional Streamlit app
Read the current plain-text paste event in a Glide grid Glide paste adapter Copyable adapter; your application owns validation and writes
Copy a selected rectangle of editor table cells as CSV ProseMirror selection example Tiptap / ProseMirror; optional React copy control
Preserve merged cells when table paste fails while creating its selection Merged-cell paste patch Exact-version ProseMirror 1.8.5 patch; Tiptap 3.31.3 regression fixture
Handle an external CRLF terminator while retaining intentional blank rows C# row-boundary example Copyable helper and checks; Radzen integration notes
Keep CSV codes as text while measurements and counts stay numeric Pandas code columns Python; a two-pass pandas helper with an explicit count-field exception
Import literal identifiers without losing zeros or strings such as NA Identifier Column Python; standard-library CSV and optional XLSX/QR examples
Debounce remote validation while keeping form input and submission current Remote field check Copyable JavaScript core; React / React Hook Form example and offline demo
Correct an existing text tag without deleting it Editable text tags Copyable React-Select component; stable IDs, save/cancel and conflicting-update checks
Highlight a phrase across PDF text fragments and explicit line endings PDF fragment highlights Copyable module and React-PDF component; repeated and overlapping literal matches
Acknowledge a saved dynamic form without losing focus or edits made during the request Saved field array Copyable React Hook Form component; local slow-save and failure example
Show Ant Design local-rule errors immediately while debouncing remote validation Ant Design rule example Copyable rule bridge and React form with cancellation and immediate submit
Keep unrelated fields quiet inside a reactive form group Isolated form fields Copyable typed React memo boundary; TanStack Form comparison with live validation
Keep TanStack Form pending indicators accurate when async field checks overlap Validation state patch Exact-version 1.33.5 patch; runnable ESM and CommonJS regression fixture
Refresh a pending-operation list when its selected category changes Mutation view Copyable TypeScript React component; React Query 5.102.8 regression example
Add calendar days, weeks, months or years in a chosen time zone with explicit DST handling Calendar shift Copyable TypeScript function; Temporal polyfill and Day.js integration checks
Add, subtract or count working dates with custom weekdays and supplied holidays Work calendar Dependency-free TypeScript core; date-fns integration checks
Generate linked PDF contents with verified page numbers, including multi-page contents PDF contents Node/TypeScript utility and React component; react-pdf integration checks
Reduce line-chart points while retaining missing intervals and original records Line sampling Dependency-free TypeScript core; React / Recharts component and SVG checks
Close a chart tooltip for a details dialog and restore hover at a different point Dismissible tooltip Copyable React hook; Recharts Scatter example and keyboard-accessible data table
Draw dashed connections across missing categories or time samples without inventing measurements Chart gaps Dependency-free TypeScript adapter; ECharts 6.1.0 SVG checks
Keep PapaParse Worker results correct in tested Vite 8 production builds Vite Worker configuration and checks Copyable minifier configuration; runnable browser comparison
Select and rename CSV columns while preserving original value alignment CSV Column Map Dependency-free JavaScript core; PapaParse 5.7.0 string adapter and tests
Select all eligible query results across server-paginated pages, with exclusions Cross-page selection Dependency-free selection module; TanStack Table 9 example with a local read-only server
Process UTF-8 CSV records sequentially with asynchronous callbacks and cancellation Streaming CSV Node.js 20+; csv-parse integration with strict decoding and header checks
Keep blank numeric fields distinct from zero, with typed form inputs and submissions Number Input Copyable Zod 4 schemas; React Hook Form example and type checks
Replace declared CSV missing markers in selected columns while preserving identifiers and notes Missing Tokens Copyable Python module; standard library only
Separate malformed JSONL lines while retaining original bytes and rejection locations JSONL partition Python standard library; optional Polars eager/lazy integration
Clean, profile, compare or check local files Python command-line guide Python 3.11+

Try spreadsheet paste without installing a tool

  1. Open the free browser playground.
  2. Choose TSV (tabs) or CSV (commas), then Load example or paste your table text.
  3. Choose CSV, JSON or Markdown table, then copy or download the complete result. CSV includes every input row; its heading option affects only the preview.

For offline use, download the browser playground v0.4.0 ZIP, extract it and open index.html in a modern browser. If automatic copying is unavailable, copy the selected output manually. Use CSV download when you need to retain the serialized line endings.

The page processes text locally with no uploads or external runtime assets. The clipboard guide explains preview limits and includes a separate source-and-tests download. The community examples show why splitting on every newline loses multiline cells.

Generate a Markdown table

Install the fixed GitHub release with Node.js 20 or newer:

npm install https://raw.githubusercontent.com/tevinch/data-shape-kit/markdown-table-v0.1.1/downloads/tevinch-markdown-table-0.1.1.tgz

In an ES module:

import { buildMarkdownTable } from '@tevinch/markdown-table';

const result = buildMarkdownTable('ID,Note\n001,"a|b"', {
  delimiter: ',',
  firstRowHeaders: true,
});
console.log(result.markdown);
| ID | Note |
| --- | --- |
| 001 | a\|b |

The core has no runtime dependencies. Use delimiter: '\t' for spreadsheet text. The package is distributed through GitHub; installation by package name alone is not available. See the full API, TypeScript setup and optional React entry.

Python file tools

The Python CLI supports CSV cleanup, profiling, dictionaries, exact-key comparison, and static checks for supported catalog, feed, calendar and web files. The command-line guide contains installation steps, command examples, tests, data handling and the scope of each check.

For help applying the tools to an eligible file, see the separate optional service scopes.

Share a reproducible example

Report a component problem or ask an integration question. Include the component and version, a small invented input, expected output, actual output and relevant runtime versions. Public issues should not contain real datasets, credentials, private URLs or personal information.

Data handling and limits

The conversion modules make no network requests or storage calls; the surrounding application controls what happens to their output. Clipboard parsers preserve the text they receive, but cannot recover precision or zeros already lost in the source application. They do not read XLSX files or evaluate formulas. Markdown is a presentation format, so rendered whitespace can differ from the original text.

The Glide adapter requires the host application to validate a whole paste before writing. Full Glide runtime integration and Windows Excel round-trip behavior have not been tested. Follow each tool's guide for its limits and verification scope.

License

MIT. Use, modify and share the code, retaining the license notice. If a component saves you time, its guide includes a small optional coffee note. Feedback and useful examples are appreciated too.

About

Free tools for spreadsheet text, Markdown tables, and local file checks.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages