@lapis-notes/csv 0.0.0-stage → 0.2.1

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 (105) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE.md +4 -0
  3. package/README.md +19 -2
  4. package/dist/app.css +210 -0
  5. package/dist/csv-settings.d.ts +13 -0
  6. package/dist/csv-settings.js +28 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.js +7 -0
  9. package/dist/lib/CsvSheet.svelte +58 -0
  10. package/dist/lib/CsvSheet.svelte.d.ts +11 -0
  11. package/dist/lib/CsvTable.svelte +58 -0
  12. package/dist/lib/CsvTable.svelte.d.ts +11 -0
  13. package/dist/lib/codemirror/csv-language-extensions.d.ts +3 -0
  14. package/dist/lib/codemirror/csv-language-extensions.js +11 -0
  15. package/dist/lib/codemirror/csv-language.d.ts +3 -0
  16. package/dist/lib/codemirror/csv-language.js +24 -0
  17. package/dist/lib/codemirror/csv-rainbow-theme.d.ts +3 -0
  18. package/dist/lib/codemirror/csv-rainbow-theme.js +15 -0
  19. package/dist/lib/codemirror/csv-source-extensions.d.ts +7 -0
  20. package/dist/lib/codemirror/csv-source-extensions.js +9 -0
  21. package/dist/lib/codemirror/csv.parser.d.ts +2 -0
  22. package/dist/lib/codemirror/csv.parser.js +16 -0
  23. package/dist/lib/codemirror/csv.parser.terms.d.ts +1 -0
  24. package/dist/lib/codemirror/csv.parser.terms.js +2 -0
  25. package/dist/lib/codemirror/syntax.grammar +36 -0
  26. package/dist/lib/components/csv-cell.svelte +137 -0
  27. package/dist/lib/components/csv-cell.svelte.d.ts +11 -0
  28. package/dist/lib/components/csv-data-table-column-head.svelte +76 -0
  29. package/dist/lib/components/csv-data-table-column-head.svelte.d.ts +17 -0
  30. package/dist/lib/components/csv-data-table-column-header.svelte +159 -0
  31. package/dist/lib/components/csv-data-table-column-header.svelte.d.ts +23 -0
  32. package/dist/lib/components/csv-data-table-data-cell.svelte +72 -0
  33. package/dist/lib/components/csv-data-table-data-cell.svelte.d.ts +18 -0
  34. package/dist/lib/components/csv-data-table-drag-overlay.svelte +119 -0
  35. package/dist/lib/components/csv-data-table-drag-overlay.svelte.d.ts +13 -0
  36. package/dist/lib/components/csv-data-table-row-actions.svelte +47 -0
  37. package/dist/lib/components/csv-data-table-row-actions.svelte.d.ts +8 -0
  38. package/dist/lib/components/csv-data-table-row-grip-cell.svelte +102 -0
  39. package/dist/lib/components/csv-data-table-row-grip-cell.svelte.d.ts +19 -0
  40. package/dist/lib/components/csv-data-table-row.svelte +38 -0
  41. package/dist/lib/components/csv-data-table-row.svelte.d.ts +11 -0
  42. package/dist/lib/components/csv-data-table.svelte +903 -0
  43. package/dist/lib/components/csv-data-table.svelte.d.ts +21 -0
  44. package/dist/lib/components/csv-find.svelte +382 -0
  45. package/dist/lib/components/csv-find.svelte.d.ts +24 -0
  46. package/dist/lib/components/csv-row-virtualizer.svelte.d.ts +9 -0
  47. package/dist/lib/components/csv-row-virtualizer.svelte.js +59 -0
  48. package/dist/lib/components/csv-source-view.svelte +127 -0
  49. package/dist/lib/components/csv-source-view.svelte.d.ts +10 -0
  50. package/dist/lib/components/csv-status-bar.svelte +101 -0
  51. package/dist/lib/components/csv-status-bar.svelte.d.ts +14 -0
  52. package/dist/lib/components/csv-table-dnd.d.ts +9 -0
  53. package/dist/lib/components/csv-table-dnd.js +12 -0
  54. package/dist/lib/components/csv-table-drag-measure.d.ts +7 -0
  55. package/dist/lib/components/csv-table-drag-measure.js +38 -0
  56. package/dist/lib/components/csv-table-selection.d.ts +28 -0
  57. package/dist/lib/components/csv-table-selection.js +178 -0
  58. package/dist/lib/components/csv-table-view.svelte +265 -0
  59. package/dist/lib/components/csv-table-view.svelte.d.ts +16 -0
  60. package/dist/lib/csv-plugin.d.ts +9 -0
  61. package/dist/lib/csv-plugin.js +107 -0
  62. package/dist/lib/csv-view-settings.d.ts +43 -0
  63. package/dist/lib/csv-view-settings.js +86 -0
  64. package/dist/lib/ids.d.ts +8 -0
  65. package/dist/lib/ids.js +19 -0
  66. package/dist/lib/model/csv-column-sort.d.ts +16 -0
  67. package/dist/lib/model/csv-column-sort.js +81 -0
  68. package/dist/lib/model/csv-grid.d.ts +31 -0
  69. package/dist/lib/model/csv-grid.js +161 -0
  70. package/dist/lib/model/csv-search.d.ts +38 -0
  71. package/dist/lib/model/csv-search.js +101 -0
  72. package/dist/lib/model/csv-table-model.d.ts +10 -0
  73. package/dist/lib/model/csv-table-model.js +18 -0
  74. package/dist/lib/model/parse-csv.d.ts +10 -0
  75. package/dist/lib/model/parse-csv.js +13 -0
  76. package/dist/lib/model/serialize-csv.d.ts +5 -0
  77. package/dist/lib/model/serialize-csv.js +10 -0
  78. package/dist/lib/sheet/csv-sheet-toolbar.svelte +244 -0
  79. package/dist/lib/sheet/csv-sheet-toolbar.svelte.d.ts +20 -0
  80. package/dist/lib/sheet/csv-sheet-view.svelte +444 -0
  81. package/dist/lib/sheet/csv-sheet-view.svelte.d.ts +18 -0
  82. package/dist/lib/sheet/csv-sheet.svelte +1121 -0
  83. package/dist/lib/sheet/csv-sheet.svelte.d.ts +37 -0
  84. package/dist/lib/sheet/sheet-glyph.svelte +57 -0
  85. package/dist/lib/sheet/sheet-glyph.svelte.d.ts +7 -0
  86. package/dist/lib/sheet/sheet-history.d.ts +14 -0
  87. package/dist/lib/sheet/sheet-history.js +33 -0
  88. package/dist/lib/sheet/sheet-layout.d.ts +121 -0
  89. package/dist/lib/sheet/sheet-layout.js +336 -0
  90. package/dist/lib/sheet/sheet-paint.d.ts +45 -0
  91. package/dist/lib/sheet/sheet-paint.js +274 -0
  92. package/dist/lib/sheet/sheet-theme.d.ts +2 -0
  93. package/dist/lib/sheet/sheet-theme.js +26 -0
  94. package/dist/lib/views/csv-view-mode.d.ts +3 -0
  95. package/dist/lib/views/csv-view-mode.js +6 -0
  96. package/dist/lib/views/csv-view.d.ts +24 -0
  97. package/dist/lib/views/csv-view.js +125 -0
  98. package/dist/styles/csv-find.css +313 -0
  99. package/dist/styles/csv-table.css +882 -0
  100. package/dist/styles.css +37 -0
  101. package/manifest.json +45 -0
  102. package/package.json +86 -3
  103. package/registry-content/overview.md +3 -0
  104. package/registry.json +322 -0
  105. package/styles.css +1 -0
@@ -0,0 +1,47 @@
1
+ <script lang="ts">
2
+ import BetweenVerticalEndIcon from "@lucide/svelte/icons/between-vertical-end";
3
+ import BetweenVerticalStartIcon from "@lucide/svelte/icons/between-vertical-start";
4
+ import EllipsisIcon from "@lucide/svelte/icons/ellipsis";
5
+ import Trash2Icon from "@lucide/svelte/icons/trash-2";
6
+ import { Button } from "@lapismd/design-core/shadcn/button";
7
+ import * as DropdownMenu from "@lapismd/design-core/shadcn/dropdown-menu";
8
+
9
+ type Props = {
10
+ onInsertAbove?: () => void;
11
+ onInsertBelow?: () => void;
12
+ onDelete?: () => void;
13
+ };
14
+
15
+ let { onInsertAbove, onInsertBelow, onDelete }: Props = $props();
16
+ </script>
17
+
18
+ <DropdownMenu.Root>
19
+ <DropdownMenu.Trigger>
20
+ {#snippet child({ props }: { props: Record<string, unknown> })}
21
+ <Button
22
+ {...props}
23
+ class="csv-data-table__row-actions"
24
+ size="icon"
25
+ variant="ghost"
26
+ aria-label="Row actions"
27
+ >
28
+ <EllipsisIcon />
29
+ </Button>
30
+ {/snippet}
31
+ </DropdownMenu.Trigger>
32
+ <DropdownMenu.Content align="end" class="csv-data-table__menu">
33
+ <DropdownMenu.Item onclick={() => onInsertAbove?.()}>
34
+ <BetweenVerticalStartIcon class="csv-data-table__header-icon" />
35
+ Insert row above
36
+ </DropdownMenu.Item>
37
+ <DropdownMenu.Item onclick={() => onInsertBelow?.()}>
38
+ <BetweenVerticalEndIcon class="csv-data-table__header-icon" />
39
+ Insert row below
40
+ </DropdownMenu.Item>
41
+ <DropdownMenu.Separator />
42
+ <DropdownMenu.Item onclick={() => onDelete?.()}>
43
+ <Trash2Icon class="csv-data-table__header-icon" />
44
+ Delete row
45
+ </DropdownMenu.Item>
46
+ </DropdownMenu.Content>
47
+ </DropdownMenu.Root>
@@ -0,0 +1,8 @@
1
+ type Props = {
2
+ onInsertAbove?: () => void;
3
+ onInsertBelow?: () => void;
4
+ onDelete?: () => void;
5
+ };
6
+ declare const CsvDataTableRowActions: import("svelte").Component<Props, {}, "">;
7
+ type CsvDataTableRowActions = ReturnType<typeof CsvDataTableRowActions>;
8
+ export default CsvDataTableRowActions;
@@ -0,0 +1,102 @@
1
+ <script lang="ts">
2
+ import { createDraggable, createDroppable } from "@dnd-kit/svelte";
3
+ import GripVertical from "@lucide/svelte/icons/grip-vertical";
4
+ import * as Table from "@lapismd/design-core/shadcn/table";
5
+ import { Button } from "@lapismd/design-core/shadcn/button";
6
+ import { cn } from "@lapis-notes/ui";
7
+ import type { Snippet } from "svelte";
8
+ import type { CsvTableDragSource } from "./csv-table-dnd";
9
+ import { dropIndicatorClasses } from "./csv-table-dnd";
10
+
11
+ type Props = {
12
+ rowIndex: number;
13
+ colIndex: number;
14
+ class?: string;
15
+ dragSource: CsvTableDragSource | null;
16
+ dragOverIndex: number | null;
17
+ selectedClass?: string;
18
+ isColDragSource?: boolean;
19
+ onSelectRow?: () => void;
20
+ onmousedown?: (event: MouseEvent) => void;
21
+ onmouseenter?: (event: MouseEvent) => void;
22
+ oncontextmenu?: (event: MouseEvent) => void;
23
+ children: Snippet;
24
+ };
25
+
26
+ let {
27
+ rowIndex,
28
+ colIndex,
29
+ class: className,
30
+ dragSource,
31
+ dragOverIndex,
32
+ selectedClass,
33
+ isColDragSource = false,
34
+ onSelectRow,
35
+ onmousedown,
36
+ onmouseenter,
37
+ oncontextmenu,
38
+ children,
39
+ }: Props = $props();
40
+
41
+ let cellRef = $state<HTMLElement | null>(null);
42
+
43
+ const rowDraggable = createDraggable({
44
+ get id() {
45
+ return `csv-row:${rowIndex}`;
46
+ },
47
+ type: "csv-table-row",
48
+ get data() {
49
+ return { type: "csv-table-row" as const, index: rowIndex };
50
+ },
51
+ });
52
+
53
+ const rowDroppable = createDroppable({
54
+ get id() {
55
+ return `csv-row-drop:${rowIndex}:grip`;
56
+ },
57
+ accept: "csv-table-row",
58
+ get data() {
59
+ return { type: "csv-table-row" as const, index: rowIndex };
60
+ },
61
+ });
62
+
63
+ $effect(() => {
64
+ if (!cellRef) {
65
+ return;
66
+ }
67
+ const cleanupDraggable = rowDraggable.attach(cellRef);
68
+ const cleanupDroppable = rowDroppable.attach(cellRef);
69
+ return () => {
70
+ cleanupDraggable();
71
+ cleanupDroppable();
72
+ };
73
+ });
74
+ </script>
75
+
76
+ <Table.Cell
77
+ bind:ref={cellRef}
78
+ data-csv-col-index={colIndex}
79
+ {onmousedown}
80
+ {onmouseenter}
81
+ {oncontextmenu}
82
+ class={cn(
83
+ "csv-data-table__cell",
84
+ className,
85
+ selectedClass,
86
+ dropIndicatorClasses(dragSource, dragOverIndex, rowIndex, colIndex),
87
+ isColDragSource && "is-drag-source is-col-drag-source",
88
+ )}
89
+ >
90
+ <Button
91
+ variant="ghost"
92
+ size="xs"
93
+ data-grab-handle=""
94
+ class="csv-data-table__row-grip"
95
+ aria-label="Drag row"
96
+ onclick={() => onSelectRow?.()}
97
+ {@attach rowDraggable.attachHandle}
98
+ >
99
+ <GripVertical />
100
+ </Button>
101
+ {@render children()}
102
+ </Table.Cell>
@@ -0,0 +1,19 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { CsvTableDragSource } from "./csv-table-dnd";
3
+ type Props = {
4
+ rowIndex: number;
5
+ colIndex: number;
6
+ class?: string;
7
+ dragSource: CsvTableDragSource | null;
8
+ dragOverIndex: number | null;
9
+ selectedClass?: string;
10
+ isColDragSource?: boolean;
11
+ onSelectRow?: () => void;
12
+ onmousedown?: (event: MouseEvent) => void;
13
+ onmouseenter?: (event: MouseEvent) => void;
14
+ oncontextmenu?: (event: MouseEvent) => void;
15
+ children: Snippet;
16
+ };
17
+ declare const CsvDataTableRowGripCell: import("svelte").Component<Props, {}, "">;
18
+ type CsvDataTableRowGripCell = ReturnType<typeof CsvDataTableRowGripCell>;
19
+ export default CsvDataTableRowGripCell;
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import * as Table from "@lapismd/design-core/shadcn/table";
3
+ import { cn } from "@lapis-notes/ui";
4
+ import type { Snippet } from "svelte";
5
+
6
+ type Props = {
7
+ rowIndex: number;
8
+ virtualIndex: number;
9
+ class?: string;
10
+ isRowDragSource?: boolean;
11
+ children: Snippet;
12
+ };
13
+
14
+ let {
15
+ rowIndex,
16
+ virtualIndex,
17
+ class: className,
18
+ isRowDragSource = false,
19
+ children,
20
+ }: Props = $props();
21
+
22
+ let hovered = $state(false);
23
+ </script>
24
+
25
+ <Table.Row
26
+ data-index={virtualIndex}
27
+ data-csv-row-index={rowIndex}
28
+ data-csv-hover={hovered ? "true" : undefined}
29
+ class={cn(className, isRowDragSource && "is-drag-source is-row-drag-source")}
30
+ onpointerenter={() => {
31
+ hovered = true;
32
+ }}
33
+ onpointerleave={() => {
34
+ hovered = false;
35
+ }}
36
+ >
37
+ {@render children()}
38
+ </Table.Row>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from "svelte";
2
+ type Props = {
3
+ rowIndex: number;
4
+ virtualIndex: number;
5
+ class?: string;
6
+ isRowDragSource?: boolean;
7
+ children: Snippet;
8
+ };
9
+ declare const CsvDataTableRow: import("svelte").Component<Props, {}, "">;
10
+ type CsvDataTableRow = ReturnType<typeof CsvDataTableRow>;
11
+ export default CsvDataTableRow;