@raybase/datasheet-grid 0.0.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-react-datasheet-grid +21 -0
  3. package/README.md +32 -1
  4. package/dist/adapter.d.ts +34 -0
  5. package/dist/adapter.d.ts.map +1 -0
  6. package/dist/adapter.js +2 -0
  7. package/dist/adapter.js.map +1 -0
  8. package/dist/cells.d.ts +111 -0
  9. package/dist/cells.d.ts.map +1 -0
  10. package/dist/cells.js +800 -0
  11. package/dist/cells.js.map +1 -0
  12. package/dist/colors.d.ts +10 -0
  13. package/dist/colors.d.ts.map +1 -0
  14. package/dist/colors.js +42 -0
  15. package/dist/colors.js.map +1 -0
  16. package/dist/engine.d.ts +3 -0
  17. package/dist/engine.d.ts.map +1 -0
  18. package/dist/engine.js +2 -0
  19. package/dist/engine.js.map +1 -0
  20. package/dist/filter-bar.d.ts +33 -0
  21. package/dist/filter-bar.d.ts.map +1 -0
  22. package/dist/filter-bar.js +304 -0
  23. package/dist/filter-bar.js.map +1 -0
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +6 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/popover.d.ts +22 -0
  29. package/dist/popover.d.ts.map +1 -0
  30. package/dist/popover.js +67 -0
  31. package/dist/popover.js.map +1 -0
  32. package/dist/record-panel.d.ts +20 -0
  33. package/dist/record-panel.d.ts.map +1 -0
  34. package/dist/record-panel.js +193 -0
  35. package/dist/record-panel.js.map +1 -0
  36. package/dist/styles.css +2 -0
  37. package/dist/types.d.ts +28 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +2 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/ui.d.ts +28 -0
  42. package/dist/ui.d.ts.map +1 -0
  43. package/dist/ui.js +108 -0
  44. package/dist/ui.js.map +1 -0
  45. package/dist/utils.d.ts +16 -0
  46. package/dist/utils.d.ts.map +1 -0
  47. package/dist/utils.js +79 -0
  48. package/dist/utils.js.map +1 -0
  49. package/dist/view.d.ts +5 -0
  50. package/dist/view.d.ts.map +1 -0
  51. package/dist/view.js +85 -0
  52. package/dist/view.js.map +1 -0
  53. package/package.json +55 -10
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Row } from "./types.js";
2
+ export declare function isNullValue(value: unknown): value is null | undefined;
3
+ /** Parse a stored date/datetime. SQLite CURRENT_TIMESTAMP ("YYYY-MM-DD HH:MM:SS") is UTC. */
4
+ export declare function parseStoredDate(value: unknown): Date | null;
5
+ export declare function formatDate(value: unknown): string;
6
+ export declare function formatDateTime(value: unknown): string;
7
+ export declare function toIsoDate(date: Date): string;
8
+ /** Loosely parse user-typed dates: ISO first, then native Date parsing. */
9
+ export declare function parseTypedDate(text: string): Date | null;
10
+ export declare function isPrimitiveArray(value: unknown): value is Array<string | number | boolean>;
11
+ /** Decide how a json column should edit: tag chips unless existing values are non-array JSON. */
12
+ export declare function jsonColumnMode(rows: Row[], key: string): "tags" | "json";
13
+ /** Tag suggestions: union of values used by other rows in this column, most frequent first. */
14
+ export declare function collectTagSuggestions(rows: Row[], key: string): string[];
15
+ export declare function defaultRecordTitle(row: Row, fallback?: string): string;
16
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,SAAS,CAErE;AAKD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAO3D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGrD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAI5C;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAE1F;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAOxE;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,SAAe,GAAG,MAAM,CAK5E"}
package/dist/utils.js ADDED
@@ -0,0 +1,79 @@
1
+ export function isNullValue(value) {
2
+ return value === null || value === undefined;
3
+ }
4
+ const dateFormat = new Intl.DateTimeFormat(undefined, { year: "numeric", month: "short", day: "numeric" });
5
+ const timeFormat = new Intl.DateTimeFormat(undefined, { hour: "numeric", minute: "2-digit" });
6
+ /** Parse a stored date/datetime. SQLite CURRENT_TIMESTAMP ("YYYY-MM-DD HH:MM:SS") is UTC. */
7
+ export function parseStoredDate(value) {
8
+ if (typeof value !== "string" || !value)
9
+ return null;
10
+ let text = value.trim();
11
+ if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}/.test(text))
12
+ text = `${text.replace(" ", "T")}Z`;
13
+ if (/^\d{4}-\d{2}-\d{2}$/.test(text))
14
+ text = `${text}T00:00:00`;
15
+ const parsed = new Date(text);
16
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
17
+ }
18
+ export function formatDate(value) {
19
+ const parsed = parseStoredDate(value);
20
+ return parsed ? dateFormat.format(parsed) : typeof value === "string" ? value : "";
21
+ }
22
+ export function formatDateTime(value) {
23
+ const parsed = parseStoredDate(value);
24
+ return parsed ? `${dateFormat.format(parsed)} ${timeFormat.format(parsed)}` : typeof value === "string" ? value : "";
25
+ }
26
+ export function toIsoDate(date) {
27
+ const month = `${date.getMonth() + 1}`.padStart(2, "0");
28
+ const day = `${date.getDate()}`.padStart(2, "0");
29
+ return `${date.getFullYear()}-${month}-${day}`;
30
+ }
31
+ /** Loosely parse user-typed dates: ISO first, then native Date parsing. */
32
+ export function parseTypedDate(text) {
33
+ const trimmed = text.trim();
34
+ if (!trimmed)
35
+ return null;
36
+ const isoMatch = trimmed.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
37
+ if (isoMatch) {
38
+ const candidate = new Date(Number(isoMatch[1]), Number(isoMatch[2]) - 1, Number(isoMatch[3]));
39
+ return Number.isNaN(candidate.getTime()) ? null : candidate;
40
+ }
41
+ const parsed = new Date(trimmed);
42
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
43
+ }
44
+ export function isPrimitiveArray(value) {
45
+ return Array.isArray(value) && value.every((item) => ["string", "number", "boolean"].includes(typeof item));
46
+ }
47
+ /** Decide how a json column should edit: tag chips unless existing values are non-array JSON. */
48
+ export function jsonColumnMode(rows, key) {
49
+ for (const row of rows) {
50
+ const value = row[key];
51
+ if (value === null || value === undefined || value === "")
52
+ continue;
53
+ if (!isPrimitiveArray(value))
54
+ return "json";
55
+ }
56
+ return "tags";
57
+ }
58
+ /** Tag suggestions: union of values used by other rows in this column, most frequent first. */
59
+ export function collectTagSuggestions(rows, key) {
60
+ const counts = new Map();
61
+ for (const row of rows) {
62
+ const value = row[key];
63
+ if (!isPrimitiveArray(value))
64
+ continue;
65
+ for (const item of value) {
66
+ const tag = String(item);
67
+ counts.set(tag, (counts.get(tag) ?? 0) + 1);
68
+ }
69
+ }
70
+ return [...counts.entries()].sort((a, b) => b[1] - a[1]).map(([tag]) => tag);
71
+ }
72
+ export function defaultRecordTitle(row, fallback = "New record") {
73
+ for (const value of Object.values(row)) {
74
+ if (typeof value === "string" && value.trim())
75
+ return value;
76
+ }
77
+ return fallback;
78
+ }
79
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/view.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import type { DatasheetGridViewProps } from "./adapter.js";
3
+ import type { GridRow } from "./types.js";
4
+ export declare function DatasheetGridView<Row extends GridRow = GridRow>({ table, adapter, mode, readOnly, getRowId, onRowsChange, onError }: DatasheetGridViewProps<Row>): React.JSX.Element;
5
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AAI3D,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,OAAO,GAAG,OAAO,EAAE,EAC/D,KAAK,EACL,OAAO,EACP,IAAgB,EAChB,QAAgB,EAChB,QAA8D,EAC9D,YAAY,EACZ,OAAO,EACR,EAAE,sBAAsB,CAAC,GAAG,CAAC,qBAkF7B"}
package/dist/view.js ADDED
@@ -0,0 +1,85 @@
1
+ import React, { useEffect, useMemo, useState } from "react";
2
+ import { DynamicDataSheetGrid } from "./engine.js";
3
+ import { buildGridColumns } from "./cells.js";
4
+ import { collectTagSuggestions, jsonColumnMode } from "./utils.js";
5
+ export function DatasheetGridView({ table, adapter, mode = "batched", readOnly = false, getRowId = (row) => (typeof row.id === "string" ? row.id : ""), onRowsChange, onError }) {
6
+ const [rows, setRows] = useState([]);
7
+ const [references, setReferences] = useState({});
8
+ useEffect(() => {
9
+ let cancelled = false;
10
+ void adapter
11
+ .list({ table: table.name })
12
+ .then((result) => {
13
+ if (!cancelled)
14
+ setRows(result.rows);
15
+ })
16
+ .catch((error) => onError?.(error instanceof Error ? error : new Error(String(error))));
17
+ return () => {
18
+ cancelled = true;
19
+ };
20
+ }, [adapter, onError, table.name]);
21
+ useEffect(() => {
22
+ if (!adapter.references)
23
+ return;
24
+ let cancelled = false;
25
+ const refColumns = Object.entries(table.columns).filter(([, column]) => column.kind === "ref" || column.references);
26
+ void Promise.all(refColumns.map(async ([key]) => [key, await adapter.references?.(table.name, key)]))
27
+ .then((entries) => {
28
+ if (!cancelled)
29
+ setReferences(Object.fromEntries(entries.map(([key, value]) => [key, value ?? []])));
30
+ })
31
+ .catch((error) => onError?.(error instanceof Error ? error : new Error(String(error))));
32
+ return () => {
33
+ cancelled = true;
34
+ };
35
+ }, [adapter, onError, table]);
36
+ const jsonModes = useMemo(() => {
37
+ const modes = {};
38
+ for (const [key, column] of Object.entries(table.columns)) {
39
+ if (column.kind === "json")
40
+ modes[key] = jsonColumnMode(rows, key);
41
+ }
42
+ return modes;
43
+ }, [rows, table.columns]);
44
+ const tagSuggestions = useMemo(() => {
45
+ const suggestions = {};
46
+ for (const [key, mode] of Object.entries(jsonModes)) {
47
+ if (mode === "tags")
48
+ suggestions[key] = collectTagSuggestions(rows, key);
49
+ }
50
+ return suggestions;
51
+ }, [jsonModes, rows]);
52
+ const columns = useMemo(() => buildGridColumns({
53
+ table,
54
+ rows,
55
+ references,
56
+ readOnly,
57
+ jsonModes,
58
+ tagSuggestions
59
+ }), [jsonModes, readOnly, references, rows, table, tagSuggestions]);
60
+ const applyRows = (nextRows) => {
61
+ setRows(nextRows);
62
+ onRowsChange?.(nextRows);
63
+ if (mode !== "immediate" || readOnly)
64
+ return;
65
+ const previous = new Map(rows.map((row) => [getRowId(row), row]));
66
+ for (const row of nextRows) {
67
+ const id = getRowId(row);
68
+ const original = id ? previous.get(id) : undefined;
69
+ if (!id && adapter.create)
70
+ void adapter.create(row).catch((error) => onError?.(error instanceof Error ? error : new Error(String(error))));
71
+ else if (id && original && JSON.stringify(original) !== JSON.stringify(row) && adapter.update) {
72
+ void adapter.update(id, row).catch((error) => onError?.(error instanceof Error ? error : new Error(String(error))));
73
+ }
74
+ }
75
+ const nextIds = new Set(nextRows.map(getRowId).filter(Boolean));
76
+ for (const row of rows) {
77
+ const id = getRowId(row);
78
+ if (id && !nextIds.has(id) && adapter.delete)
79
+ void adapter.delete(id).catch((error) => onError?.(error instanceof Error ? error : new Error(String(error))));
80
+ }
81
+ };
82
+ const Grid = DynamicDataSheetGrid;
83
+ return React.createElement(Grid, { value: rows, onChange: applyRows, columns: columns, lockRows: readOnly });
84
+ }
85
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,61 @@
1
1
  {
2
2
  "name": "@raybase/datasheet-grid",
3
- "version": "0.0.2",
4
- "description": "Reserved for Raybase. Nothing is released under this name yet.",
5
- "license": "UNLICENSED",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/raybasedev/raybase.git"
3
+ "version": "0.1.3",
4
+ "description": "Reusable Raybase datasheet grid primitives, metadata contracts, and CSS.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./engine": {
15
+ "types": "./dist/engine.d.ts",
16
+ "default": "./dist/engine.js"
17
+ },
18
+ "./cells": {
19
+ "types": "./dist/cells.d.ts",
20
+ "default": "./dist/cells.js"
21
+ },
22
+ "./styles.css": "./dist/styles.css"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md",
27
+ "LICENSE-react-datasheet-grid"
28
+ ],
29
+ "sideEffects": [
30
+ "./dist/styles.css"
31
+ ],
32
+ "dependencies": {
33
+ "@raybase/react-datasheet-grid": "^4.11.7"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^18.3.0 || ^19.0.0",
37
+ "react-dom": "^18.3.0 || ^19.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@tailwindcss/cli": "^4.3.0",
41
+ "@types/react": "^18.3.27",
42
+ "@types/react-dom": "^18.3.7",
43
+ "react": "^18.3.1",
44
+ "react-dom": "^18.3.1",
45
+ "tailwindcss": "^4.3.0",
46
+ "typescript": "^5.8.3",
47
+ "vitest": "^4.1.8"
9
48
  },
10
49
  "publishConfig": {
11
50
  "access": "public"
12
51
  },
13
- "files": [
14
- "README.md"
15
- ]
16
- }
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/raybasedev/raybase.git",
55
+ "directory": "packages/datasheet-grid"
56
+ },
57
+ "scripts": {
58
+ "build": "node scripts/clean-dist.mjs && tsc -p tsconfig.json && node scripts/build-css.mjs",
59
+ "check": "tsc -p tsconfig.json --noEmit"
60
+ }
61
+ }