@tumaet/prompt-ui-components 1.0.6 → 1.0.8

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 (129) hide show
  1. package/dist/components/MultiSelect.js.map +1 -1
  2. package/dist/components/table/PromptTable/PromptTable.js +61 -0
  3. package/dist/components/table/PromptTable/PromptTable.js.map +1 -0
  4. package/dist/components/table/PromptTable/PromptTableTypes.js +2 -0
  5. package/dist/components/table/PromptTable/PromptTableTypes.js.map +1 -0
  6. package/dist/components/table/{actions → PromptTable/actions}/ActionDialog.js +1 -1
  7. package/dist/components/table/PromptTable/actions/ActionDialog.js.map +1 -0
  8. package/dist/components/table/{actions → PromptTable/actions}/ActionsMenu.js +1 -1
  9. package/dist/components/table/PromptTable/actions/ActionsMenu.js.map +1 -0
  10. package/dist/components/table/{actions → PromptTable/actions}/DropdownMenuItemForRowAction.js +1 -1
  11. package/dist/components/table/PromptTable/actions/DropdownMenuItemForRowAction.js.map +1 -0
  12. package/dist/components/table/{columnDefs → PromptTable/columns/columnDefs}/actionColumn.js +1 -1
  13. package/dist/components/table/PromptTable/columns/columnDefs/actionColumn.js.map +1 -0
  14. package/dist/components/table/{columnDefs → PromptTable/columns/columnDefs}/selectColumn.js +1 -1
  15. package/dist/components/table/PromptTable/columns/columnDefs/selectColumn.js.map +1 -0
  16. package/dist/components/table/PromptTable/columns/generateColumns.js.map +1 -0
  17. package/dist/components/table/PromptTable/filters/ActiveTableFiltersBar.js.map +1 -0
  18. package/dist/components/table/{filters → PromptTable/filters}/FilterBadge.js +1 -1
  19. package/dist/components/table/PromptTable/filters/FilterBadge.js.map +1 -0
  20. package/dist/components/table/{filters → PromptTable/filters}/NumericRangeFilterSection.js +1 -1
  21. package/dist/components/table/PromptTable/filters/NumericRangeFilterSection.js.map +1 -0
  22. package/dist/components/table/{filters → PromptTable/filters}/SelectFilterSection.js +1 -1
  23. package/dist/components/table/PromptTable/filters/SelectFilterSection.js.map +1 -0
  24. package/dist/components/table/{filters → PromptTable/filters}/TableFiltersMenu.js +3 -3
  25. package/dist/components/table/PromptTable/filters/TableFiltersMenu.js.map +1 -0
  26. package/dist/components/table/PromptTable/filters/applyFiltersToColumns.js.map +1 -0
  27. package/dist/components/table/PromptTable/filters/filterFns.js.map +1 -0
  28. package/dist/components/table/PromptTable/filters/filterbadgeFns.js.map +1 -0
  29. package/dist/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableActionsButton.js +2 -2
  30. package/dist/components/table/PromptTable/tableBarComponents/TableActionsButton.js.map +1 -0
  31. package/dist/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableColumnVisibilityButton.js +2 -2
  32. package/dist/components/table/PromptTable/tableBarComponents/TableColumnVisibilityButton.js.map +1 -0
  33. package/dist/components/table/PromptTable/tableBarComponents/TableInfoText.js +36 -0
  34. package/dist/components/table/PromptTable/tableBarComponents/TableInfoText.js.map +1 -0
  35. package/dist/components/table/PromptTable/tableBarComponents/TablePagination.js +10 -0
  36. package/dist/components/table/PromptTable/tableBarComponents/TablePagination.js.map +1 -0
  37. package/dist/components/table/PromptTable/tableBarComponents/TableSearch.js +28 -0
  38. package/dist/components/table/PromptTable/tableBarComponents/TableSearch.js.map +1 -0
  39. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/SortableHeader.js +1 -1
  40. package/dist/components/table/PromptTable/tableComponents/SortableHeader.js.map +1 -0
  41. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableCheckbox.js +1 -1
  42. package/dist/components/table/PromptTable/tableComponents/TableCheckbox.js.map +1 -0
  43. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableHeaders.js +1 -1
  44. package/dist/components/table/PromptTable/tableComponents/TableHeaders.js.map +1 -0
  45. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableRows.js +1 -1
  46. package/dist/components/table/PromptTable/tableComponents/TableRows.js.map +1 -0
  47. package/dist/components/table/PromptTable/util/createChangeHandler.js +14 -0
  48. package/dist/components/table/PromptTable/util/createChangeHandler.js.map +1 -0
  49. package/dist/components/table/PromptTableURL/PromptTableURL.js +46 -0
  50. package/dist/components/table/PromptTableURL/PromptTableURL.js.map +1 -0
  51. package/dist/components/table/PromptTableURL/PromptTableURLTypes.js +2 -0
  52. package/dist/components/table/PromptTableURL/PromptTableURLTypes.js.map +1 -0
  53. package/dist/components/table/PromptTableURL/urlParsing/urlParsing.js +120 -0
  54. package/dist/components/table/PromptTableURL/urlParsing/urlParsing.js.map +1 -0
  55. package/dist/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.js +55 -0
  56. package/dist/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.js.map +1 -0
  57. package/dist/components/table/PromptTableURL/urlParsing/useTableUrlState.js +28 -0
  58. package/dist/components/table/PromptTableURL/urlParsing/useTableUrlState.js.map +1 -0
  59. package/dist/components/table/index.js +5 -3
  60. package/dist/components/table/index.js.map +1 -1
  61. package/dist/types/components/table/PromptTable/PromptTable.d.ts +4 -0
  62. package/dist/types/components/table/{TableTypes.d.ts → PromptTable/PromptTableTypes.d.ts} +13 -9
  63. package/dist/types/components/table/{actions → PromptTable/actions}/ActionDialog.d.ts +1 -1
  64. package/dist/types/components/table/{actions → PromptTable/actions}/ActionsMenu.d.ts +1 -1
  65. package/dist/types/components/table/{actions → PromptTable/actions}/DropdownMenuItemForRowAction.d.ts +1 -1
  66. package/dist/types/components/table/{columnDefs → PromptTable/columns/columnDefs}/actionColumn.d.ts +1 -1
  67. package/dist/types/components/table/{filters → PromptTable/filters}/ActiveTableFiltersBar.d.ts +1 -1
  68. package/dist/types/components/table/PromptTable/filters/TableFiltersMenu.d.ts +10 -0
  69. package/dist/types/components/table/{filters → PromptTable/filters}/applyFiltersToColumns.d.ts +1 -1
  70. package/dist/types/components/table/{filters → PromptTable/filters}/filterbadgeFns.d.ts +1 -1
  71. package/dist/types/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableActionsButton.d.ts +1 -1
  72. package/dist/types/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableColumnVisibilityButton.d.ts +1 -1
  73. package/dist/types/components/table/PromptTable/tableBarComponents/TableInfoText.d.ts +9 -0
  74. package/dist/types/components/table/{tableBarComponents/TableInfoText.d.ts → PromptTable/tableBarComponents/TablePagination.d.ts} +2 -2
  75. package/dist/types/components/table/PromptTable/tableBarComponents/TableSearch.d.ts +11 -0
  76. package/dist/types/components/table/PromptTable/util/createChangeHandler.d.ts +2 -0
  77. package/dist/types/components/table/PromptTableURL/PromptTableURL.d.ts +4 -0
  78. package/dist/types/components/table/PromptTableURL/PromptTableURLTypes.d.ts +13 -0
  79. package/dist/types/components/table/PromptTableURL/urlParsing/urlParsing.d.ts +7 -0
  80. package/dist/types/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.d.ts +11 -0
  81. package/dist/types/components/table/PromptTableURL/urlParsing/useTableUrlState.d.ts +18 -0
  82. package/dist/types/components/table/index.d.ts +5 -3
  83. package/package.json +18 -18
  84. package/dist/components/table/PromptTable.js +0 -48
  85. package/dist/components/table/PromptTable.js.map +0 -1
  86. package/dist/components/table/TableTypes.js +0 -2
  87. package/dist/components/table/TableTypes.js.map +0 -1
  88. package/dist/components/table/actions/ActionDialog.js.map +0 -1
  89. package/dist/components/table/actions/ActionsMenu.js.map +0 -1
  90. package/dist/components/table/actions/DropdownMenuItemForRowAction.js.map +0 -1
  91. package/dist/components/table/columnDefs/actionColumn.js.map +0 -1
  92. package/dist/components/table/columnDefs/selectColumn.js.map +0 -1
  93. package/dist/components/table/filters/ActiveTableFiltersBar.js.map +0 -1
  94. package/dist/components/table/filters/FilterBadge.js.map +0 -1
  95. package/dist/components/table/filters/NumericRangeFilterSection.js.map +0 -1
  96. package/dist/components/table/filters/SelectFilterSection.js.map +0 -1
  97. package/dist/components/table/filters/TableFiltersMenu.js.map +0 -1
  98. package/dist/components/table/filters/applyFiltersToColumns.js.map +0 -1
  99. package/dist/components/table/filters/filterFns.js.map +0 -1
  100. package/dist/components/table/filters/filterbadgeFns.js.map +0 -1
  101. package/dist/components/table/generateColumns.js.map +0 -1
  102. package/dist/components/table/tableBarComponents/TableActionsButton.js.map +0 -1
  103. package/dist/components/table/tableBarComponents/TableColumnVisibilityButton.js.map +0 -1
  104. package/dist/components/table/tableBarComponents/TableInfoText.js +0 -6
  105. package/dist/components/table/tableBarComponents/TableInfoText.js.map +0 -1
  106. package/dist/components/table/tableBarComponents/TableSearch.js +0 -7
  107. package/dist/components/table/tableBarComponents/TableSearch.js.map +0 -1
  108. package/dist/components/table/tableComponents/SortableHeader.js.map +0 -1
  109. package/dist/components/table/tableComponents/TableCheckbox.js.map +0 -1
  110. package/dist/components/table/tableComponents/TableHeaders.js.map +0 -1
  111. package/dist/components/table/tableComponents/TableRows.js.map +0 -1
  112. package/dist/types/components/table/PromptTable.d.ts +0 -3
  113. package/dist/types/components/table/filters/TableFiltersMenu.d.ts +0 -8
  114. package/dist/types/components/table/tableBarComponents/TableSearch.d.ts +0 -7
  115. /package/dist/components/table/{generateColumns.js → PromptTable/columns/generateColumns.js} +0 -0
  116. /package/dist/components/table/{filters → PromptTable/filters}/ActiveTableFiltersBar.js +0 -0
  117. /package/dist/components/table/{filters → PromptTable/filters}/applyFiltersToColumns.js +0 -0
  118. /package/dist/components/table/{filters → PromptTable/filters}/filterFns.js +0 -0
  119. /package/dist/components/table/{filters → PromptTable/filters}/filterbadgeFns.js +0 -0
  120. /package/dist/types/components/table/{columnDefs → PromptTable/columns/columnDefs}/selectColumn.d.ts +0 -0
  121. /package/dist/types/components/table/{generateColumns.d.ts → PromptTable/columns/generateColumns.d.ts} +0 -0
  122. /package/dist/types/components/table/{filters → PromptTable/filters}/FilterBadge.d.ts +0 -0
  123. /package/dist/types/components/table/{filters → PromptTable/filters}/NumericRangeFilterSection.d.ts +0 -0
  124. /package/dist/types/components/table/{filters → PromptTable/filters}/SelectFilterSection.d.ts +0 -0
  125. /package/dist/types/components/table/{filters → PromptTable/filters}/filterFns.d.ts +0 -0
  126. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/SortableHeader.d.ts +0 -0
  127. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableCheckbox.d.ts +0 -0
  128. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableHeaders.d.ts +0 -0
  129. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableRows.d.ts +0 -0
@@ -0,0 +1,120 @@
1
+ export function parseSortingFromUrl(search, paramName) {
2
+ const serializedSorting = new URLSearchParams(search).get(paramName);
3
+ if (!serializedSorting)
4
+ return [];
5
+ return serializedSorting
6
+ .split(',')
7
+ .map((segment) => {
8
+ const [encodedId, order = 'asc'] = segment.split(':');
9
+ if (!encodedId)
10
+ return null;
11
+ if (order !== 'asc' && order !== 'desc')
12
+ return null;
13
+ let id;
14
+ try {
15
+ id = decodeURIComponent(encodedId);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ if (!id)
21
+ return null;
22
+ return {
23
+ id,
24
+ desc: order === 'desc',
25
+ };
26
+ })
27
+ .filter((entry) => entry !== null);
28
+ }
29
+ export function serializeSortingForUrl(sorting) {
30
+ if (sorting.length === 0)
31
+ return null;
32
+ return sorting
33
+ .map(({ id, desc }) => `${encodeURIComponent(id)}:${desc ? 'desc' : 'asc'}`)
34
+ .join(',');
35
+ }
36
+ export function parseColumnFiltersFromUrl(search, paramName, tableFilters) {
37
+ const serializedFilters = new URLSearchParams(search).get(paramName);
38
+ if (!serializedFilters)
39
+ return [];
40
+ try {
41
+ const parsed = JSON.parse(serializedFilters);
42
+ if (!Array.isArray(parsed))
43
+ return [];
44
+ return parsed
45
+ .map((filter) => {
46
+ if (!filter || typeof filter !== 'object')
47
+ return null;
48
+ if (!('id' in filter) || typeof filter.id !== 'string')
49
+ return null;
50
+ if (!('value' in filter))
51
+ return null;
52
+ if (!isValidFilterValue(filter.id, filter.value, tableFilters))
53
+ return null;
54
+ return {
55
+ id: filter.id,
56
+ value: filter.value,
57
+ };
58
+ })
59
+ .filter((entry) => entry !== null);
60
+ }
61
+ catch {
62
+ return [];
63
+ }
64
+ }
65
+ export function serializeColumnFiltersForUrl(columnFilters) {
66
+ if (columnFilters.length === 0)
67
+ return null;
68
+ return JSON.stringify(columnFilters);
69
+ }
70
+ export function parseSearchFromUrl(search, paramName) {
71
+ return new URLSearchParams(search).get(paramName);
72
+ }
73
+ function isValidFilterValue(id, value, tableFilters) {
74
+ if (value === null || value === undefined)
75
+ return false;
76
+ const tableFilter = tableFilters?.find((filter) => filter.id === id);
77
+ if (!tableFilter)
78
+ return isJsonCompatibleFilterValue(value);
79
+ if (tableFilter.type === 'select') {
80
+ return Array.isArray(value) && value.every((entry) => typeof entry === 'string');
81
+ }
82
+ if (tableFilter.type === 'numericRange') {
83
+ if (!isPlainObject(value))
84
+ return false;
85
+ const allowedKeys = new Set(['min', 'max', 'noScore']);
86
+ for (const key of Object.keys(value)) {
87
+ if (!allowedKeys.has(key))
88
+ return false;
89
+ }
90
+ const min = value.min;
91
+ const max = value.max;
92
+ const noScore = value.noScore;
93
+ if (min !== undefined && typeof min !== 'string')
94
+ return false;
95
+ if (max !== undefined && typeof max !== 'string')
96
+ return false;
97
+ if (noScore !== undefined && typeof noScore !== 'boolean')
98
+ return false;
99
+ return true;
100
+ }
101
+ return isJsonCompatibleFilterValue(value);
102
+ }
103
+ function isPlainObject(value) {
104
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
105
+ }
106
+ function isJsonCompatibleFilterValue(value) {
107
+ if (value === null || value === undefined)
108
+ return false;
109
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
110
+ return true;
111
+ }
112
+ if (Array.isArray(value)) {
113
+ return value.every((entry) => isJsonCompatibleFilterValue(entry));
114
+ }
115
+ if (isPlainObject(value)) {
116
+ return Object.values(value).every((entry) => isJsonCompatibleFilterValue(entry));
117
+ }
118
+ return false;
119
+ }
120
+ //# sourceMappingURL=urlParsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlParsing.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/urlParsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { useEffect } from 'react';
2
+ import { serializeColumnFiltersForUrl, serializeSortingForUrl } from './urlParsing';
3
+ export function useSyncTableStateToUrl({ sorting, columnFilters, search, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }) {
4
+ useEffect(() => {
5
+ if (typeof window === 'undefined')
6
+ return;
7
+ const url = new URL(window.location.href);
8
+ if (sortingQueryParamEnabled) {
9
+ const serializedSorting = serializeSortingForUrl(sorting);
10
+ if (serializedSorting) {
11
+ url.searchParams.set(sortingQueryParamName, serializedSorting);
12
+ }
13
+ else {
14
+ url.searchParams.delete(sortingQueryParamName);
15
+ }
16
+ }
17
+ else {
18
+ url.searchParams.delete(sortingQueryParamName);
19
+ }
20
+ if (filteringQueryParamEnabled) {
21
+ const serializedFilters = serializeColumnFiltersForUrl(columnFilters);
22
+ if (serializedFilters) {
23
+ url.searchParams.set(filteringQueryParamName, serializedFilters);
24
+ }
25
+ else {
26
+ url.searchParams.delete(filteringQueryParamName);
27
+ }
28
+ if (search.length > 0) {
29
+ url.searchParams.set(globalSearchQueryParamName, search);
30
+ }
31
+ else {
32
+ url.searchParams.delete(globalSearchQueryParamName);
33
+ }
34
+ }
35
+ else {
36
+ url.searchParams.delete(filteringQueryParamName);
37
+ url.searchParams.delete(globalSearchQueryParamName);
38
+ }
39
+ const nextUrl = `${url.pathname}${url.search}${url.hash}`;
40
+ const currentUrl = `${window.location.pathname}${window.location.search}${window.location.hash}`;
41
+ if (nextUrl !== currentUrl) {
42
+ window.history.replaceState(window.history.state, '', nextUrl);
43
+ }
44
+ }, [
45
+ sorting,
46
+ columnFilters,
47
+ search,
48
+ sortingQueryParamEnabled,
49
+ sortingQueryParamName,
50
+ filteringQueryParamEnabled,
51
+ filteringQueryParamName,
52
+ globalSearchQueryParamName,
53
+ ]);
54
+ }
55
+ //# sourceMappingURL=useSyncTableStateToUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSyncTableStateToUrl.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAEnF,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,MAAM,EACN,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAU3B;IACC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEzC,IAAI,wBAAwB,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;YACzD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAA;YAChE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,0BAA0B,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAA;YACrE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;YAClD,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;YAChD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QACzD,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEhG,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,EAAE;QACD,OAAO;QACP,aAAa;QACb,MAAM;QACN,wBAAwB;QACxB,qBAAqB;QACrB,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { useState } from 'react';
2
+ import { parseColumnFiltersFromUrl, parseSearchFromUrl, parseSortingFromUrl } from './urlParsing';
3
+ export function useTableUrlState({ initialState, filters, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }) {
4
+ const [sorting, setSorting] = useState(() => {
5
+ if (!sortingQueryParamEnabled || typeof window === 'undefined') {
6
+ return initialState?.sorting ?? [];
7
+ }
8
+ const urlSorting = parseSortingFromUrl(window.location.search, sortingQueryParamName);
9
+ return urlSorting.length > 0 ? urlSorting : (initialState?.sorting ?? []);
10
+ });
11
+ const [search, setSearch] = useState(() => {
12
+ const initialSearchValue = typeof initialState?.globalFilter === 'string' ? initialState.globalFilter : '';
13
+ if (!filteringQueryParamEnabled || typeof window === 'undefined') {
14
+ return initialSearchValue;
15
+ }
16
+ return (parseSearchFromUrl(window.location.search, globalSearchQueryParamName) ?? initialSearchValue);
17
+ });
18
+ const [columnFilters, setColumnFilters] = useState(() => {
19
+ const initialColumnFilters = initialState?.columnFilters ?? [];
20
+ if (!filteringQueryParamEnabled || typeof window === 'undefined') {
21
+ return initialColumnFilters;
22
+ }
23
+ const urlFilters = parseColumnFiltersFromUrl(window.location.search, filteringQueryParamName, filters);
24
+ return urlFilters.length > 0 ? urlFilters : initialColumnFilters;
25
+ });
26
+ return { sorting, setSorting, search, setSearch, columnFilters, setColumnFilters };
27
+ }
28
+ //# sourceMappingURL=useTableUrlState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableUrlState.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/useTableUrlState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEjG,MAAM,UAAU,gBAAgB,CAAC,EAC/B,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAS3B;IACC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,GAAG,EAAE;QACxD,IAAI,CAAC,wBAAwB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/D,OAAO,YAAY,EAAE,OAAO,IAAI,EAAE,CAAA;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;QACrF,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,GAAG,EAAE;QAChD,MAAM,kBAAkB,GACtB,OAAO,YAAY,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;QAEjF,IAAI,CAAC,0BAA0B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC,IAAI,kBAAkB,CAC7F,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqB,GAAG,EAAE;QAC1E,MAAM,oBAAoB,GAAG,YAAY,EAAE,aAAa,IAAI,EAAE,CAAA;QAE9D,IAAI,CAAC,0BAA0B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,oBAAoB,CAAA;QAC7B,CAAC;QAED,MAAM,UAAU,GAAG,yBAAyB,CAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,EACtB,uBAAuB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAA;AACpF,CAAC"}
@@ -1,4 +1,6 @@
1
- export * from './tableComponents/SortableHeader';
2
- export * from './PromptTable';
3
- export * from './TableTypes';
1
+ export * from './PromptTable/PromptTable';
2
+ export * from './PromptTable/PromptTableTypes';
3
+ export * from './PromptTable/tableComponents/SortableHeader';
4
+ export * from './PromptTableURL/PromptTableURL';
5
+ export * from './PromptTableURL/PromptTableURLTypes';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8CAA8C,CAAA;AAC5D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { WithId } from './PromptTableTypes';
3
+ import { TableProps } from './PromptTableTypes';
4
+ export declare function PromptTable<T extends WithId>({ data, actions, columns, filters, onRowClick, initialState, onSortingChange, onSearchChange, onColumnFiltersChange, pageSize: initialPageSize, }: TableProps<T>): ReactElement;
@@ -1,4 +1,16 @@
1
- import { Column, ColumnDef, InitialTableState, Table } from '@tanstack/react-table';
1
+ import { Column, Table, ColumnDef, ColumnFiltersState, InitialTableState, SortingState } from '@tanstack/react-table';
2
+ export interface TableProps<T extends WithId> {
3
+ data: T[];
4
+ actions?: RowAction<T>[];
5
+ columns?: ColumnDef<T>[];
6
+ filters?: TableFilter[];
7
+ onRowClick?: (rowData: T) => void;
8
+ initialState?: InitialTableState;
9
+ onSortingChange?: (sorting: SortingState) => void;
10
+ onSearchChange?: (search: string) => void;
11
+ onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void;
12
+ pageSize?: number;
13
+ }
2
14
  export interface WithId {
3
15
  id: string;
4
16
  }
@@ -37,12 +49,4 @@ export type TableFilter = (TableFilterBase & {
37
49
  table: Table<any>;
38
50
  }) => React.ReactNode;
39
51
  });
40
- export interface TableProps<Type extends WithId> {
41
- data: Type[];
42
- actions?: RowAction<Type>[];
43
- columns?: ColumnDef<Type>[];
44
- filters?: TableFilter[];
45
- onRowClick?: (rowData: Type) => void;
46
- initialState?: InitialTableState;
47
- }
48
52
  export {};
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface ActionDialogProps<T extends WithId> {
4
4
  action: RowAction<T>;
5
5
  selectedRows: T[];
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface ActionsMenuProps<Type extends WithId> {
4
4
  selectedRows: Type[];
5
5
  triggerComponent: React.ReactNode;
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface DropdownMenuItemForRowActionProps<Type extends WithId> {
4
4
  action: RowAction<Type>;
5
5
  rows: Type[];
@@ -1,5 +1,5 @@
1
1
  import { ColumnDef } from '@tanstack/react-table';
2
- import { RowAction } from '../TableTypes';
2
+ import { RowAction } from '../../PromptTableTypes';
3
3
  export declare const actionColumn: <T extends {
4
4
  id: string;
5
5
  }>(actions: RowAction<T>[]) => ColumnDef<T>;
@@ -1,4 +1,4 @@
1
- import { TableFilter } from '../TableTypes';
1
+ import { TableFilter } from '../PromptTableTypes';
2
2
  import { Table } from '@tanstack/react-table';
3
3
  interface ActiveTableFiltersBarProps {
4
4
  table: Table<any>;
@@ -0,0 +1,10 @@
1
+ import { Table } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableFiltersMenuProps {
5
+ table: Table<any>;
6
+ filters: TableFilter[];
7
+ trigger?: ReactNode;
8
+ }
9
+ export declare function TableFiltersMenu({ table, filters, trigger }: TableFiltersMenuProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -1,3 +1,3 @@
1
1
  import { ColumnDef } from '@tanstack/react-table';
2
- import { TableFilter } from '../TableTypes';
2
+ import { TableFilter } from '../PromptTableTypes';
3
3
  export declare function addFiltersToColumns<T>(columns: ColumnDef<T>[], filters?: TableFilter[]): ColumnDef<T>[];
@@ -1,4 +1,4 @@
1
- import { TableFilter } from '../TableTypes';
1
+ import { TableFilter } from '../PromptTableTypes';
2
2
  export declare function displaySelectActiveFilterBadgeValue(filtervalue: unknown): string;
3
3
  export declare function displayMinMaxActiveFilterBadgeValue(filtervalue: unknown): string;
4
4
  export declare function tableFilterTypeDisplayFunction(tableFilter: TableFilter): (filtervalue: unknown) => string;
@@ -1,6 +1,6 @@
1
1
  import { Table as ReactTable } from '@tanstack/react-table';
2
2
  import { ReactElement } from 'react';
3
- import { RowAction, WithId } from '../TableTypes';
3
+ import { RowAction, WithId } from '../PromptTableTypes';
4
4
  interface TableActionsButtonProps<TData extends WithId> {
5
5
  actions: RowAction<TData>[];
6
6
  table: ReactTable<TData>;
@@ -1,5 +1,5 @@
1
1
  import { Table } from '@tanstack/react-table';
2
- import { WithId } from '../TableTypes';
2
+ import { WithId } from '../PromptTableTypes';
3
3
  interface TableColumnVisibilityButtonProps<Type> {
4
4
  table: Table<Type>;
5
5
  }
@@ -0,0 +1,9 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableInfoTextProps<TData> {
5
+ table: ReactTable<TData>;
6
+ filters?: TableFilter[];
7
+ }
8
+ export declare function TableInfoText<TData>({ table, filters, }: TableInfoTextProps<TData>): ReactElement;
9
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { Table as ReactTable } from '@tanstack/react-table';
2
2
  import { ReactElement } from 'react';
3
- interface TableInfoTextProps<TData> {
3
+ interface TablePaginationProps<TData> {
4
4
  table: ReactTable<TData>;
5
5
  }
6
- export declare function TableInfoText<TData>({ table }: TableInfoTextProps<TData>): ReactElement;
6
+ export declare function TablePagination<TData>({ table }: TablePaginationProps<TData>): ReactElement;
7
7
  export {};
@@ -0,0 +1,11 @@
1
+ import { ReactElement } from 'react';
2
+ import { Table as ReactTable } from '@tanstack/react-table';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableSearchProps {
5
+ value: string;
6
+ onChange: (value: string) => void;
7
+ table?: ReactTable<any>;
8
+ filters?: TableFilter[];
9
+ }
10
+ export declare function TableSearch({ value, onChange, table, filters }: TableSearchProps): ReactElement;
11
+ export {};
@@ -0,0 +1,2 @@
1
+ import { OnChangeFn } from '@tanstack/react-table';
2
+ export declare function createChangeHandler<T>(setState: React.Dispatch<React.SetStateAction<T>>, externalOnChange?: (value: T) => void): OnChangeFn<T>;
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { WithId } from '../PromptTable/PromptTableTypes';
3
+ import { PromptTableURLProps } from './PromptTableURLTypes';
4
+ export declare function PromptTableURL<T extends WithId>({ sortingQueryParam, filteringQueryParam, onSortingChange, onSearchChange, onColumnFiltersChange, ...tableProps }: PromptTableURLProps<T>): ReactElement;
@@ -0,0 +1,13 @@
1
+ import { TableProps } from '../PromptTable/PromptTableTypes';
2
+ import { WithId } from '../PromptTable/PromptTableTypes';
3
+ export interface UrlParamConfig {
4
+ enabled?: boolean;
5
+ paramName?: string;
6
+ }
7
+ export interface FilteringUrlParamConfig extends UrlParamConfig {
8
+ globalSearchParamName?: string;
9
+ }
10
+ export interface PromptTableURLProps<T extends WithId> extends TableProps<T> {
11
+ sortingQueryParam?: UrlParamConfig;
12
+ filteringQueryParam?: FilteringUrlParamConfig;
13
+ }
@@ -0,0 +1,7 @@
1
+ import { ColumnFiltersState, SortingState } from '@tanstack/react-table';
2
+ import { TableFilter } from '../../PromptTable/PromptTableTypes';
3
+ export declare function parseSortingFromUrl(search: string, paramName: string): SortingState;
4
+ export declare function serializeSortingForUrl(sorting: SortingState): string | null;
5
+ export declare function parseColumnFiltersFromUrl(search: string, paramName: string, tableFilters?: TableFilter[]): ColumnFiltersState;
6
+ export declare function serializeColumnFiltersForUrl(columnFilters: ColumnFiltersState): string | null;
7
+ export declare function parseSearchFromUrl(search: string, paramName: string): string | null;
@@ -0,0 +1,11 @@
1
+ import { ColumnFiltersState, SortingState } from '@tanstack/react-table';
2
+ export declare function useSyncTableStateToUrl({ sorting, columnFilters, search, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }: {
3
+ sorting: SortingState;
4
+ columnFilters: ColumnFiltersState;
5
+ search: string;
6
+ sortingQueryParamEnabled: boolean;
7
+ sortingQueryParamName: string;
8
+ filteringQueryParamEnabled: boolean;
9
+ filteringQueryParamName: string;
10
+ globalSearchQueryParamName: string;
11
+ }): void;
@@ -0,0 +1,18 @@
1
+ import { ColumnFiltersState, InitialTableState, SortingState } from '@tanstack/react-table';
2
+ import { TableFilter } from '../../PromptTable/PromptTableTypes';
3
+ export declare function useTableUrlState({ initialState, filters, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }: {
4
+ initialState?: InitialTableState;
5
+ filters?: TableFilter[];
6
+ sortingQueryParamEnabled: boolean;
7
+ sortingQueryParamName: string;
8
+ filteringQueryParamEnabled: boolean;
9
+ filteringQueryParamName: string;
10
+ globalSearchQueryParamName: string;
11
+ }): {
12
+ sorting: SortingState;
13
+ setSorting: import("react").Dispatch<import("react").SetStateAction<SortingState>>;
14
+ search: string;
15
+ setSearch: import("react").Dispatch<import("react").SetStateAction<string>>;
16
+ columnFilters: ColumnFiltersState;
17
+ setColumnFilters: import("react").Dispatch<import("react").SetStateAction<ColumnFiltersState>>;
18
+ };
@@ -1,3 +1,5 @@
1
- export * from './tableComponents/SortableHeader';
2
- export * from './PromptTable';
3
- export * from './TableTypes';
1
+ export * from './PromptTable/PromptTable';
2
+ export * from './PromptTable/PromptTableTypes';
3
+ export * from './PromptTable/tableComponents/SortableHeader';
4
+ export * from './PromptTableURL/PromptTableURL';
5
+ export * from './PromptTableURL/PromptTableURLTypes';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tumaet/prompt-ui-components",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ls1intum/prompt-lib.git"
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "packageManager": "yarn@4.12.0",
30
30
  "dependencies": {
31
- "@hookform/resolvers": "^3.9.1",
31
+ "@hookform/resolvers": "^3.10.0",
32
32
  "@radix-ui/react-accordion": "^1.2.12",
33
33
  "@radix-ui/react-alert-dialog": "^1.1.15",
34
34
  "@radix-ui/react-avatar": "^1.1.11",
@@ -66,40 +66,40 @@
66
66
  "@tiptap/pm": "^2.27.2",
67
67
  "@tiptap/react": "^2.27.2",
68
68
  "@tiptap/starter-kit": "^2.27.2",
69
- "class-variance-authority": "^0.7.0",
69
+ "class-variance-authority": "^0.7.1",
70
70
  "clsx": "^2.1.1",
71
71
  "cmdk": "1.1.1",
72
72
  "date-fns": "^4.1.0",
73
73
  "highlight.js": "^11.11.1",
74
74
  "lowlight": "^3.3.0",
75
- "lucide-react": "^0.563.0",
75
+ "lucide-react": "^0.576.0",
76
76
  "postcss": "^8.5.6",
77
77
  "postcss-preset-env": "^10.6.1",
78
- "react": "^19.2.3",
78
+ "react": "^19.2.4",
79
79
  "react-day-picker": "8.10.1",
80
- "react-dom": "^19.2.3",
81
- "react-hook-form": "^7.71.1",
82
- "react-medium-image-zoom": "^5.4.0",
83
- "react-router-dom": "^7.13.0",
80
+ "react-dom": "^19.2.4",
81
+ "react-hook-form": "^7.71.2",
82
+ "react-medium-image-zoom": "^5.4.1",
83
+ "react-router-dom": "^7.13.1",
84
84
  "recharts": "^3.7.0",
85
85
  "sonner": "^2.0.7",
86
- "tailwind-merge": "^2.5.4",
86
+ "tailwind-merge": "^2.6.1",
87
87
  "tsc-alias": "^1.8.16",
88
- "typescript": "^5.7.3"
88
+ "typescript": "^5.9.3"
89
89
  },
90
90
  "devDependencies": {
91
- "@eslint/compat": "^1.2.5",
92
- "@types/react": "^19.2.9",
93
- "@typescript-eslint/eslint-plugin": "^8.20.0",
94
- "@typescript-eslint/parser": "^8.20.0",
95
- "eslint": "^9.18.0",
91
+ "@eslint/compat": "^1.4.1",
92
+ "@types/react": "^19.2.14",
93
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
94
+ "@typescript-eslint/parser": "^8.56.1",
95
+ "eslint": "^9.39.3",
96
96
  "eslint-plugin-prettier": "^5.5.5",
97
97
  "eslint-plugin-react": "^7.37.5",
98
- "eslint-plugin-react-hooks": "^5.1.0",
98
+ "eslint-plugin-react-hooks": "^5.2.0",
99
99
  "postcss-cli": "^10.1.0",
100
100
  "prettier": "^3.8.1"
101
101
  },
102
102
  "resolutions": {
103
- "tar": "^7.5.4"
103
+ "tar": "^7.5.8"
104
104
  }
105
105
  }
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { getCoreRowModel, getFilteredRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table';
3
- import { useState } from 'react';
4
- import { Table } from '../ui';
5
- import { checkboxColumn } from './columnDefs/selectColumn';
6
- import { actionColumn } from './columnDefs/actionColumn';
7
- import { TableSearch } from './tableBarComponents/TableSearch';
8
- import { TableActionsButton } from './tableBarComponents/TableActionsButton';
9
- import { TableInfoText } from './tableBarComponents/TableInfoText';
10
- import { TableHeaders } from './tableComponents/TableHeaders';
11
- import { TableRows } from './tableComponents/TableRows';
12
- import { TableColumnVisibilityButton } from './tableBarComponents/TableColumnVisibilityButton';
13
- import { generateColumns } from './generateColumns';
14
- import { TableFiltersMenu } from './filters/TableFiltersMenu';
15
- import { ActiveTableFiltersBar } from './filters/ActiveTableFiltersBar';
16
- import { addFiltersToColumns } from './filters/applyFiltersToColumns';
17
- export function PromptTable({ data, actions, columns, filters, onRowClick, initialState, }) {
18
- const [sorting, setSorting] = useState(initialState?.sorting ?? []);
19
- const [search, setSearch] = useState('');
20
- const [rowSelection, setRowSelection] = useState({});
21
- const baseColumns = columns ?? generateColumns(data);
22
- const columnsWithFilterFns = addFiltersToColumns(baseColumns, filters);
23
- const cols = [
24
- checkboxColumn(),
25
- ...columnsWithFilterFns,
26
- ...(actions ? [actionColumn(actions)] : []),
27
- ];
28
- const table = useReactTable({
29
- data: data,
30
- columns: cols,
31
- state: {
32
- sorting,
33
- globalFilter: search,
34
- rowSelection,
35
- },
36
- initialState,
37
- onSortingChange: setSorting,
38
- onGlobalFilterChange: setSearch,
39
- onRowSelectionChange: setRowSelection,
40
- enableRowSelection: true,
41
- getRowId: (row) => row.id,
42
- getCoreRowModel: getCoreRowModel(),
43
- getFilteredRowModel: getFilteredRowModel(),
44
- getSortedRowModel: getSortedRowModel(),
45
- });
46
- return (_jsxs("div", { className: 'flex flex-col gap-3 w-full', children: [_jsxs("div", { className: 'flex items-center justify-between gap-3 flex-wrap', children: [_jsx(TableSearch, { value: search, onChange: (e) => setSearch(e.target.value) }), filters && _jsx(TableFiltersMenu, { table: table, filters: filters }), _jsx(TableColumnVisibilityButton, { table: table }), actions && _jsx(TableActionsButton, { table: table, actions: actions })] }), _jsx(ActiveTableFiltersBar, { table: table, filters: filters }), _jsx(TableInfoText, { table: table }), _jsx("div", { className: 'rounded-md border overflow-x-auto w-full', children: _jsxs(Table, { className: 'table-auto w-full relative', children: [_jsx(TableHeaders, { table: table }), _jsx(TableRows, { table: table, onRowClick: onRowClick })] }) })] }));
47
- }
48
- //# sourceMappingURL=PromptTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromptTable.js","sourceRoot":"","sources":["../../../src/components/table/PromptTable.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TableTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableTypes.js","sourceRoot":"","sources":["../../../src/components/table/TableTypes.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionDialog.js","sourceRoot":"","sources":["../../../../src/components/table/actions/ActionDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAWxB,MAAM,UAAU,YAAY,CAAmB,EAC7C,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,GACY;IACrB,MAAM,WAAW,GACf,OAAO,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,UAAU;QAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,QAAC,YAAY,EAAE,OAAO,YAChC,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAe,EAClD,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EAEf,MAAC,YAAY,eACX,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,uBAEjC,EACT,KAAC,MAAM,IACL,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,EAC7C,OAAO,EAAE,KAAK,IAAI,EAAE;gCAClB,MAAM,SAAS,EAAE,CAAA;4BACnB,CAAC,YAEA,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,GACnC,IACI,IACD,GACT,CACV,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionsMenu.js","sourceRoot":"","sources":["../../../../src/components/table/actions/ActionsMenu.tsx"],"names":[],"mappings":"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"}