@humanspeak/svelte-headless-table 5.0.0

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 (88) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +122 -0
  3. package/dist/bodyCells.d.ts +53 -0
  4. package/dist/bodyCells.js +90 -0
  5. package/dist/bodyRows.d.ts +82 -0
  6. package/dist/bodyRows.js +256 -0
  7. package/dist/columns.d.ts +76 -0
  8. package/dist/columns.js +96 -0
  9. package/dist/constants.d.ts +1 -0
  10. package/dist/constants.js +1 -0
  11. package/dist/createTable.d.ts +17 -0
  12. package/dist/createTable.js +36 -0
  13. package/dist/createViewModel.d.ts +38 -0
  14. package/dist/createViewModel.js +230 -0
  15. package/dist/headerCells.d.ts +80 -0
  16. package/dist/headerCells.js +147 -0
  17. package/dist/headerRows.d.ts +35 -0
  18. package/dist/headerRows.js +185 -0
  19. package/dist/index.d.ts +11 -0
  20. package/dist/index.js +12 -0
  21. package/dist/plugins/addColumnFilters.d.ts +39 -0
  22. package/dist/plugins/addColumnFilters.js +117 -0
  23. package/dist/plugins/addColumnOrder.d.ts +10 -0
  24. package/dist/plugins/addColumnOrder.js +24 -0
  25. package/dist/plugins/addDataExport.d.ts +21 -0
  26. package/dist/plugins/addDataExport.js +68 -0
  27. package/dist/plugins/addExpandedRows.d.ts +17 -0
  28. package/dist/plugins/addExpandedRows.js +51 -0
  29. package/dist/plugins/addFlatten.d.ts +19 -0
  30. package/dist/plugins/addFlatten.js +38 -0
  31. package/dist/plugins/addGridLayout.d.ts +2 -0
  32. package/dist/plugins/addGridLayout.js +73 -0
  33. package/dist/plugins/addGroupBy.d.ts +40 -0
  34. package/dist/plugins/addGroupBy.js +192 -0
  35. package/dist/plugins/addHiddenColumns.d.ts +9 -0
  36. package/dist/plugins/addHiddenColumns.js +17 -0
  37. package/dist/plugins/addPagination.d.ts +39 -0
  38. package/dist/plugins/addPagination.js +84 -0
  39. package/dist/plugins/addResizedColumns.d.ts +41 -0
  40. package/dist/plugins/addResizedColumns.js +252 -0
  41. package/dist/plugins/addSelectedRows.d.ts +29 -0
  42. package/dist/plugins/addSelectedRows.js +190 -0
  43. package/dist/plugins/addSortBy.d.ts +46 -0
  44. package/dist/plugins/addSortBy.js +176 -0
  45. package/dist/plugins/addSubRows.d.ts +9 -0
  46. package/dist/plugins/addSubRows.js +28 -0
  47. package/dist/plugins/addTableFilter.d.ts +28 -0
  48. package/dist/plugins/addTableFilter.js +95 -0
  49. package/dist/plugins/index.d.ts +15 -0
  50. package/dist/plugins/index.js +16 -0
  51. package/dist/plugins/package.json +5 -0
  52. package/dist/tableComponent.d.ts +19 -0
  53. package/dist/tableComponent.js +35 -0
  54. package/dist/types/Action.d.ts +5 -0
  55. package/dist/types/Action.js +1 -0
  56. package/dist/types/Entries.d.ts +3 -0
  57. package/dist/types/Entries.js +1 -0
  58. package/dist/types/KeyPath.d.ts +6 -0
  59. package/dist/types/KeyPath.js +1 -0
  60. package/dist/types/Label.d.ts +8 -0
  61. package/dist/types/Label.js +1 -0
  62. package/dist/types/Matrix.d.ts +1 -0
  63. package/dist/types/Matrix.js +1 -0
  64. package/dist/types/TablePlugin.d.ts +88 -0
  65. package/dist/types/TablePlugin.js +1 -0
  66. package/dist/utils/array.d.ts +2 -0
  67. package/dist/utils/array.js +9 -0
  68. package/dist/utils/attributes.d.ts +2 -0
  69. package/dist/utils/attributes.js +23 -0
  70. package/dist/utils/clone.d.ts +13 -0
  71. package/dist/utils/clone.js +18 -0
  72. package/dist/utils/compare.d.ts +2 -0
  73. package/dist/utils/compare.js +17 -0
  74. package/dist/utils/counter.d.ts +1 -0
  75. package/dist/utils/counter.js +7 -0
  76. package/dist/utils/css.d.ts +1 -0
  77. package/dist/utils/css.js +5 -0
  78. package/dist/utils/event.d.ts +1 -0
  79. package/dist/utils/event.js +5 -0
  80. package/dist/utils/filter.d.ts +4 -0
  81. package/dist/utils/filter.js +4 -0
  82. package/dist/utils/math.d.ts +2 -0
  83. package/dist/utils/math.js +2 -0
  84. package/dist/utils/matrix.d.ts +3 -0
  85. package/dist/utils/matrix.js +23 -0
  86. package/dist/utils/store.d.ts +37 -0
  87. package/dist/utils/store.js +123 -0
  88. package/package.json +98 -0
@@ -0,0 +1,123 @@
1
+ import { readable, writable } from 'svelte/store';
2
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
+ export const isReadable = (value) => {
4
+ return value?.subscribe instanceof Function;
5
+ };
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ export const isWritable = (store) => {
8
+ return store?.update instanceof Function && store.set instanceof Function;
9
+ };
10
+ export const Undefined = readable(undefined);
11
+ export const UndefinedAs = () => Undefined;
12
+ export const arraySetStore = (initial = [], { isEqual = (a, b) => a === b } = {}) => {
13
+ const { subscribe, update, set } = writable(initial);
14
+ const toggle = (item, { clearOthers = false } = {}) => {
15
+ update(($arraySet) => {
16
+ const index = $arraySet.findIndex(($item) => isEqual($item, item));
17
+ if (index === -1) {
18
+ if (clearOthers) {
19
+ return [item];
20
+ }
21
+ return [...$arraySet, item];
22
+ }
23
+ if (clearOthers) {
24
+ return [];
25
+ }
26
+ return [...$arraySet.slice(0, index), ...$arraySet.slice(index + 1)];
27
+ });
28
+ };
29
+ const add = (item) => {
30
+ update(($arraySet) => {
31
+ const index = $arraySet.findIndex(($item) => isEqual($item, item));
32
+ if (index === -1) {
33
+ return [...$arraySet, item];
34
+ }
35
+ return $arraySet;
36
+ });
37
+ };
38
+ const remove = (item) => {
39
+ update(($arraySet) => {
40
+ const index = $arraySet.findIndex(($item) => isEqual($item, item));
41
+ if (index === -1) {
42
+ return $arraySet;
43
+ }
44
+ return [...$arraySet.slice(0, index), ...$arraySet.slice(index + 1)];
45
+ });
46
+ };
47
+ const clear = () => {
48
+ set([]);
49
+ };
50
+ return {
51
+ subscribe,
52
+ update,
53
+ set,
54
+ toggle,
55
+ add,
56
+ remove,
57
+ clear
58
+ };
59
+ };
60
+ export const recordSetStore = (initial = {}) => {
61
+ const withFalseRemoved = (record) => {
62
+ return Object.fromEntries(Object.entries(record).filter(([, v]) => v));
63
+ };
64
+ const { subscribe, update, set } = writable(withFalseRemoved(initial));
65
+ const updateAndRemoveFalse = (fn) => {
66
+ update(($recordSet) => {
67
+ const newRecordSet = fn($recordSet);
68
+ return withFalseRemoved(newRecordSet);
69
+ });
70
+ };
71
+ const toggle = (item) => {
72
+ update(($recordSet) => {
73
+ if ($recordSet[item] === true) {
74
+ delete $recordSet[item];
75
+ return $recordSet;
76
+ }
77
+ return {
78
+ ...$recordSet,
79
+ [item]: true
80
+ };
81
+ });
82
+ };
83
+ const add = (item) => {
84
+ update(($recordSet) => ({
85
+ ...$recordSet,
86
+ [item]: true
87
+ }));
88
+ };
89
+ const addAll = (items) => {
90
+ update(($recordSet) => ({
91
+ ...$recordSet,
92
+ ...Object.fromEntries(items.map((item) => [item, true]))
93
+ }));
94
+ };
95
+ const remove = (item) => {
96
+ update(($recordSet) => {
97
+ delete $recordSet[item];
98
+ return $recordSet;
99
+ });
100
+ };
101
+ const removeAll = (items) => {
102
+ update(($recordSet) => {
103
+ for (const item of items) {
104
+ delete $recordSet[item];
105
+ }
106
+ return $recordSet;
107
+ });
108
+ };
109
+ const clear = () => {
110
+ set({});
111
+ };
112
+ return {
113
+ subscribe,
114
+ update: updateAndRemoveFalse,
115
+ set: (newValue) => updateAndRemoveFalse(() => newValue),
116
+ toggle,
117
+ add,
118
+ addAll,
119
+ remove,
120
+ removeAll,
121
+ clear
122
+ };
123
+ };
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "@humanspeak/svelte-headless-table",
3
+ "version": "5.0.0",
4
+ "description": "Unopinionated and extensible data tables for Svelte",
5
+ "keywords": [
6
+ "svelte",
7
+ "table",
8
+ "datagrid",
9
+ "datatable",
10
+ "headless",
11
+ "plugin",
12
+ "sorting",
13
+ "filtering",
14
+ "ordering",
15
+ "hiding",
16
+ "grouping",
17
+ "selecting",
18
+ "expanding",
19
+ "resizing"
20
+ ],
21
+ "homepage": "https://github.com/humanspeak/svelte-headless-table#readme",
22
+ "bugs": {
23
+ "url": "https://github.com/humanspeak/svelte-headless-table/issues"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+ssh://git@github.com/humanspeak/svelte-headless-table.git"
28
+ },
29
+ "license": "MIT",
30
+ "author": "Humanspeak, Inc.",
31
+ "type": "module",
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "svelte": "./dist/index.js",
36
+ "default": "./dist/index.js"
37
+ },
38
+ "./plugins": {
39
+ "types": "./dist/plugins/index.d.ts",
40
+ "svelte": "./dist/plugins/index.js",
41
+ "default": "./dist/plugins/index.js"
42
+ }
43
+ },
44
+ "svelte": "./dist/index.js",
45
+ "types": "./dist/index.d.ts",
46
+ "files": [
47
+ "dist",
48
+ "!dist/**/*.test.*",
49
+ "!dist/**/*.spec.*"
50
+ ],
51
+ "scripts": {
52
+ "build": "vite build && npm run package",
53
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
54
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
55
+ "dev": "vite dev",
56
+ "format": "prettier --write .",
57
+ "lint": "prettier --check . && eslint .",
58
+ "lint:fix": "npm run format && eslint . --fix",
59
+ "package": "svelte-kit sync && svelte-package && publint",
60
+ "prepublishOnly": "npm run package",
61
+ "preview": "vite preview",
62
+ "test": "vitest run --coverage",
63
+ "test:only": "vitest run",
64
+ "test:watch": "vitest"
65
+ },
66
+ "dependencies": {
67
+ "@humanspeak/svelte-keyed": "^4.0.0",
68
+ "@humanspeak/svelte-render": "^5.0.0",
69
+ "@humanspeak/svelte-subscribe": "^4.0.0"
70
+ },
71
+ "devDependencies": {
72
+ "@sveltejs/adapter-auto": "^3.0.0",
73
+ "@sveltejs/kit": "^2.0.0",
74
+ "@sveltejs/package": "^2.0.0",
75
+ "@sveltejs/vite-plugin-svelte": "^3.0.0",
76
+ "@testing-library/jest-dom": "^6.1.6",
77
+ "@testing-library/svelte": "^4.0.5",
78
+ "@types/eslint": "8.56.0",
79
+ "@types/faker": "^5.5.9",
80
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
81
+ "@typescript-eslint/parser": "^6.0.0",
82
+ "@vitest/coverage-v8": "^1.1.1",
83
+ "eslint": "^8.56.0",
84
+ "eslint-config-prettier": "^9.1.0",
85
+ "eslint-plugin-svelte": "^2.35.1",
86
+ "faker": "^5.5.3",
87
+ "prettier": "^3.1.1",
88
+ "prettier-plugin-svelte": "^3.1.2",
89
+ "publint": "^0.1.9",
90
+ "svelte": "^4.2.7",
91
+ "svelte-check": "^3.6.0",
92
+ "tslib": "^2.4.1",
93
+ "type-fest": "^4.9.0",
94
+ "typescript": "^5.0.0",
95
+ "vite": "^5.0.3",
96
+ "vitest": "^1.0.0"
97
+ }
98
+ }