@raystack/apsara 0.56.3 → 0.56.5
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.
- package/dist/components/data-table/utils/filter-operations.cjs +4 -2
- package/dist/components/data-table/utils/filter-operations.cjs.map +1 -1
- package/dist/components/data-table/utils/filter-operations.d.ts.map +1 -1
- package/dist/components/data-table/utils/filter-operations.js +4 -2
- package/dist/components/data-table/utils/filter-operations.js.map +1 -1
- package/dist/components/data-table/utils/index.cjs +17 -2
- package/dist/components/data-table/utils/index.cjs.map +1 -1
- package/dist/components/data-table/utils/index.d.ts.map +1 -1
- package/dist/components/data-table/utils/index.js +17 -2
- package/dist/components/data-table/utils/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +2 -2
|
@@ -112,11 +112,13 @@ function getFilterFn(type, operator) {
|
|
|
112
112
|
}
|
|
113
113
|
const handleStringBasedTypes = (filterType, value, operator) => {
|
|
114
114
|
switch (filterType) {
|
|
115
|
-
case filters.FilterType.date:
|
|
115
|
+
case filters.FilterType.date: {
|
|
116
|
+
const dateValue = dayjs(value);
|
|
116
117
|
return {
|
|
117
118
|
value,
|
|
118
|
-
stringValue:
|
|
119
|
+
stringValue: dateValue.isValid() ? dateValue.toISOString() : ''
|
|
119
120
|
};
|
|
121
|
+
}
|
|
120
122
|
case filters.FilterType.select:
|
|
121
123
|
return {
|
|
122
124
|
stringValue: value === filters.EmptyFilterValue ? '' : value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-operations.cjs","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"sourcesContent":["import type { FilterFn } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\n\nimport {\n DataTableFilterOperatorTypes,\n DateFilterOperatorType,\n EmptyFilterValue,\n FilterOperatorTypes,\n FilterType,\n FilterTypes,\n FilterValue,\n FilterValueType,\n MultiSelectFilterOperatorType,\n NumberFilterOperatorType,\n SelectFilterOperatorType,\n StringFilterOperatorType\n} from '~/types/filters';\nimport { DataTableFilterValues } from '../data-table.types';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\nexport type FilterFunctionsMap = {\n number: Record<NumberFilterOperatorType, FilterFn<unknown>>;\n string: Record<StringFilterOperatorType, FilterFn<unknown>>;\n date: Record<DateFilterOperatorType, FilterFn<unknown>>;\n select: Record<SelectFilterOperatorType, FilterFn<unknown>>;\n multiselect: Record<MultiSelectFilterOperatorType, FilterFn<unknown>>;\n};\n\nexport const filterOperationsMap: FilterFunctionsMap = {\n number: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) === Number(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) !== Number(filterValue.value);\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) < Number(filterValue.value);\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) <= Number(filterValue.value);\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) > Number(filterValue.value);\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) >= Number(filterValue.value);\n }\n },\n string: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() ===\n String(filterValue.value).toLowerCase()\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() !==\n String(filterValue.value).toLowerCase()\n );\n },\n contains: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.includes(filterStr);\n },\n starts_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.startsWith(filterStr);\n },\n ends_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.endsWith(filterStr);\n }\n },\n date: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return !dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isAfter(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrAfter(\n dayjs(filterValue.date),\n 'day'\n );\n }\n },\n select: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) === '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) === String(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) !== '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) !== String(filterValue.value);\n }\n },\n multiselect: {\n in: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n },\n notin: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return !filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n }\n }\n} as const;\n\nexport function getFilterFn<T extends keyof FilterFunctionsMap>(\n type: T,\n operator: FilterOperatorTypes\n) {\n // @ts-expect-error FilterOperatorTypes is union of all possible operators\n return filterOperationsMap[type][operator];\n}\n\nconst handleStringBasedTypes = (\n filterType: FilterTypes,\n value: any,\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes\n): DataTableFilterValues => {\n switch (filterType) {\n case FilterType.date:\n return {\n value,\n stringValue: (value as Date).toISOString()\n };\n case FilterType.select:\n return {\n stringValue: value === EmptyFilterValue ? '' : value,\n value\n };\n case FilterType.multiselect:\n return {\n value,\n stringValue: value\n .map((value: any) =>\n value === EmptyFilterValue ? '' : String(value)\n )\n .join()\n };\n case FilterType.string: {\n // Apply wildcards for ilike operations\n let processedValue = value;\n // Check if we need to apply wildcards (operator could be UI type or already converted to 'ilike')\n if (operator === 'contains') {\n processedValue = `%${value}%`;\n } else if (operator === 'starts_with') {\n processedValue = `${value}%`;\n } else if (operator === 'ends_with') {\n processedValue = `%${value}`;\n } else if (operator === 'ilike') {\n // If already converted to ilike, assume it needs contains-style wildcards\n // unless the value already has wildcards\n if (!value.includes('%')) {\n processedValue = `%${value}%`;\n }\n }\n return {\n stringValue: processedValue,\n value\n };\n }\n default:\n return {\n stringValue: value,\n value\n };\n }\n};\n\nexport const getFilterOperator = ({\n value,\n filterType,\n operator\n}: {\n value: any;\n filterType?: FilterTypes;\n operator: FilterOperatorTypes;\n}): DataTableFilterOperatorTypes => {\n if (value === EmptyFilterValue && filterType === FilterType.select) {\n return 'empty';\n }\n\n // Map string filter operators to ilike for DataTableFilter\n if (\n filterType === FilterType.string &&\n (operator === 'contains' ||\n operator === 'starts_with' ||\n operator === 'ends_with')\n ) {\n return 'ilike';\n }\n\n return operator as DataTableFilterOperatorTypes;\n};\n\nexport const getFilterValue = ({\n value,\n dataType = 'string',\n filterType = FilterType.string,\n operator\n}: {\n value: any;\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes;\n}): DataTableFilterValues => {\n if (dataType === 'boolean') {\n return { boolValue: value, value };\n }\n if (dataType === 'number') {\n return { numberValue: value, value };\n }\n\n // Handle string-based types\n return handleStringBasedTypes(filterType, value, operator);\n};\n\nexport const getDataType = ({\n filterType = FilterType.string,\n dataType = 'string'\n}: {\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n}): FilterValueType => {\n switch (filterType) {\n case FilterType.multiselect:\n case FilterType.select:\n return dataType;\n case FilterType.date:\n return 'string';\n default:\n return filterType;\n }\n};\n"],"names":["EmptyFilterValue","FilterType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-operations.cjs","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"sourcesContent":["import type { FilterFn } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\n\nimport {\n DataTableFilterOperatorTypes,\n DateFilterOperatorType,\n EmptyFilterValue,\n FilterOperatorTypes,\n FilterType,\n FilterTypes,\n FilterValue,\n FilterValueType,\n MultiSelectFilterOperatorType,\n NumberFilterOperatorType,\n SelectFilterOperatorType,\n StringFilterOperatorType\n} from '~/types/filters';\nimport { DataTableFilterValues } from '../data-table.types';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\nexport type FilterFunctionsMap = {\n number: Record<NumberFilterOperatorType, FilterFn<unknown>>;\n string: Record<StringFilterOperatorType, FilterFn<unknown>>;\n date: Record<DateFilterOperatorType, FilterFn<unknown>>;\n select: Record<SelectFilterOperatorType, FilterFn<unknown>>;\n multiselect: Record<MultiSelectFilterOperatorType, FilterFn<unknown>>;\n};\n\nexport const filterOperationsMap: FilterFunctionsMap = {\n number: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) === Number(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) !== Number(filterValue.value);\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) < Number(filterValue.value);\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) <= Number(filterValue.value);\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) > Number(filterValue.value);\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) >= Number(filterValue.value);\n }\n },\n string: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() ===\n String(filterValue.value).toLowerCase()\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() !==\n String(filterValue.value).toLowerCase()\n );\n },\n contains: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.includes(filterStr);\n },\n starts_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.startsWith(filterStr);\n },\n ends_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.endsWith(filterStr);\n }\n },\n date: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return !dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isAfter(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrAfter(\n dayjs(filterValue.date),\n 'day'\n );\n }\n },\n select: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) === '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) === String(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) !== '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) !== String(filterValue.value);\n }\n },\n multiselect: {\n in: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n },\n notin: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return !filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n }\n }\n} as const;\n\nexport function getFilterFn<T extends keyof FilterFunctionsMap>(\n type: T,\n operator: FilterOperatorTypes\n) {\n // @ts-expect-error FilterOperatorTypes is union of all possible operators\n return filterOperationsMap[type][operator];\n}\n\nconst handleStringBasedTypes = (\n filterType: FilterTypes,\n value: any,\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes\n): DataTableFilterValues => {\n switch (filterType) {\n case FilterType.date: {\n const dateValue = dayjs(value);\n return {\n value,\n stringValue: dateValue.isValid() ? dateValue.toISOString() : ''\n };\n }\n case FilterType.select:\n return {\n stringValue: value === EmptyFilterValue ? '' : value,\n value\n };\n case FilterType.multiselect:\n return {\n value,\n stringValue: value\n .map((value: any) =>\n value === EmptyFilterValue ? '' : String(value)\n )\n .join()\n };\n case FilterType.string: {\n // Apply wildcards for ilike operations\n let processedValue = value;\n // Check if we need to apply wildcards (operator could be UI type or already converted to 'ilike')\n if (operator === 'contains') {\n processedValue = `%${value}%`;\n } else if (operator === 'starts_with') {\n processedValue = `${value}%`;\n } else if (operator === 'ends_with') {\n processedValue = `%${value}`;\n } else if (operator === 'ilike') {\n // If already converted to ilike, assume it needs contains-style wildcards\n // unless the value already has wildcards\n if (!value.includes('%')) {\n processedValue = `%${value}%`;\n }\n }\n return {\n stringValue: processedValue,\n value\n };\n }\n default:\n return {\n stringValue: value,\n value\n };\n }\n};\n\nexport const getFilterOperator = ({\n value,\n filterType,\n operator\n}: {\n value: any;\n filterType?: FilterTypes;\n operator: FilterOperatorTypes;\n}): DataTableFilterOperatorTypes => {\n if (value === EmptyFilterValue && filterType === FilterType.select) {\n return 'empty';\n }\n\n // Map string filter operators to ilike for DataTableFilter\n if (\n filterType === FilterType.string &&\n (operator === 'contains' ||\n operator === 'starts_with' ||\n operator === 'ends_with')\n ) {\n return 'ilike';\n }\n\n return operator as DataTableFilterOperatorTypes;\n};\n\nexport const getFilterValue = ({\n value,\n dataType = 'string',\n filterType = FilterType.string,\n operator\n}: {\n value: any;\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes;\n}): DataTableFilterValues => {\n if (dataType === 'boolean') {\n return { boolValue: value, value };\n }\n if (dataType === 'number') {\n return { numberValue: value, value };\n }\n\n // Handle string-based types\n return handleStringBasedTypes(filterType, value, operator);\n};\n\nexport const getDataType = ({\n filterType = FilterType.string,\n dataType = 'string'\n}: {\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n}): FilterValueType => {\n switch (filterType) {\n case FilterType.multiselect:\n case FilterType.select:\n return dataType;\n case FilterType.date:\n return 'string';\n default:\n return filterType;\n }\n};\n"],"names":["EmptyFilterValue","FilterType"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-operations.d.ts","sourceRoot":"","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EAEtB,mBAAmB,EAEnB,WAAW,EAEX,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAwHxB,CAAC;AAEX,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC5D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,mBAAmB,OAI9B;
|
|
1
|
+
{"version":3,"file":"filter-operations.d.ts","sourceRoot":"","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EAEtB,mBAAmB,EAEnB,WAAW,EAEX,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAwHxB,CAAC;AAEX,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC5D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,mBAAmB,OAI9B;AA2DD,eAAO,MAAM,iBAAiB;WAKrB,GAAG;;cAEA,mBAAmB;MAC3B,4BAgBH,CAAC;AAEF,eAAO,MAAM,cAAc;WAMlB,GAAG;;;;MAIR,qBAUH,CAAC;AAEF,eAAO,MAAM,WAAW;;;MAMpB,eAUH,CAAC"}
|
|
@@ -110,11 +110,13 @@ function getFilterFn(type, operator) {
|
|
|
110
110
|
}
|
|
111
111
|
const handleStringBasedTypes = (filterType, value, operator) => {
|
|
112
112
|
switch (filterType) {
|
|
113
|
-
case FilterType.date:
|
|
113
|
+
case FilterType.date: {
|
|
114
|
+
const dateValue = dayjs(value);
|
|
114
115
|
return {
|
|
115
116
|
value,
|
|
116
|
-
stringValue:
|
|
117
|
+
stringValue: dateValue.isValid() ? dateValue.toISOString() : ''
|
|
117
118
|
};
|
|
119
|
+
}
|
|
118
120
|
case FilterType.select:
|
|
119
121
|
return {
|
|
120
122
|
stringValue: value === EmptyFilterValue ? '' : value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-operations.js","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"sourcesContent":["import type { FilterFn } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\n\nimport {\n DataTableFilterOperatorTypes,\n DateFilterOperatorType,\n EmptyFilterValue,\n FilterOperatorTypes,\n FilterType,\n FilterTypes,\n FilterValue,\n FilterValueType,\n MultiSelectFilterOperatorType,\n NumberFilterOperatorType,\n SelectFilterOperatorType,\n StringFilterOperatorType\n} from '~/types/filters';\nimport { DataTableFilterValues } from '../data-table.types';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\nexport type FilterFunctionsMap = {\n number: Record<NumberFilterOperatorType, FilterFn<unknown>>;\n string: Record<StringFilterOperatorType, FilterFn<unknown>>;\n date: Record<DateFilterOperatorType, FilterFn<unknown>>;\n select: Record<SelectFilterOperatorType, FilterFn<unknown>>;\n multiselect: Record<MultiSelectFilterOperatorType, FilterFn<unknown>>;\n};\n\nexport const filterOperationsMap: FilterFunctionsMap = {\n number: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) === Number(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) !== Number(filterValue.value);\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) < Number(filterValue.value);\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) <= Number(filterValue.value);\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) > Number(filterValue.value);\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) >= Number(filterValue.value);\n }\n },\n string: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() ===\n String(filterValue.value).toLowerCase()\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() !==\n String(filterValue.value).toLowerCase()\n );\n },\n contains: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.includes(filterStr);\n },\n starts_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.startsWith(filterStr);\n },\n ends_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.endsWith(filterStr);\n }\n },\n date: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return !dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isAfter(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrAfter(\n dayjs(filterValue.date),\n 'day'\n );\n }\n },\n select: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) === '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) === String(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) !== '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) !== String(filterValue.value);\n }\n },\n multiselect: {\n in: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n },\n notin: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return !filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n }\n }\n} as const;\n\nexport function getFilterFn<T extends keyof FilterFunctionsMap>(\n type: T,\n operator: FilterOperatorTypes\n) {\n // @ts-expect-error FilterOperatorTypes is union of all possible operators\n return filterOperationsMap[type][operator];\n}\n\nconst handleStringBasedTypes = (\n filterType: FilterTypes,\n value: any,\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes\n): DataTableFilterValues => {\n switch (filterType) {\n case FilterType.date:\n return {\n value,\n stringValue: (value as Date).toISOString()\n };\n case FilterType.select:\n return {\n stringValue: value === EmptyFilterValue ? '' : value,\n value\n };\n case FilterType.multiselect:\n return {\n value,\n stringValue: value\n .map((value: any) =>\n value === EmptyFilterValue ? '' : String(value)\n )\n .join()\n };\n case FilterType.string: {\n // Apply wildcards for ilike operations\n let processedValue = value;\n // Check if we need to apply wildcards (operator could be UI type or already converted to 'ilike')\n if (operator === 'contains') {\n processedValue = `%${value}%`;\n } else if (operator === 'starts_with') {\n processedValue = `${value}%`;\n } else if (operator === 'ends_with') {\n processedValue = `%${value}`;\n } else if (operator === 'ilike') {\n // If already converted to ilike, assume it needs contains-style wildcards\n // unless the value already has wildcards\n if (!value.includes('%')) {\n processedValue = `%${value}%`;\n }\n }\n return {\n stringValue: processedValue,\n value\n };\n }\n default:\n return {\n stringValue: value,\n value\n };\n }\n};\n\nexport const getFilterOperator = ({\n value,\n filterType,\n operator\n}: {\n value: any;\n filterType?: FilterTypes;\n operator: FilterOperatorTypes;\n}): DataTableFilterOperatorTypes => {\n if (value === EmptyFilterValue && filterType === FilterType.select) {\n return 'empty';\n }\n\n // Map string filter operators to ilike for DataTableFilter\n if (\n filterType === FilterType.string &&\n (operator === 'contains' ||\n operator === 'starts_with' ||\n operator === 'ends_with')\n ) {\n return 'ilike';\n }\n\n return operator as DataTableFilterOperatorTypes;\n};\n\nexport const getFilterValue = ({\n value,\n dataType = 'string',\n filterType = FilterType.string,\n operator\n}: {\n value: any;\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes;\n}): DataTableFilterValues => {\n if (dataType === 'boolean') {\n return { boolValue: value, value };\n }\n if (dataType === 'number') {\n return { numberValue: value, value };\n }\n\n // Handle string-based types\n return handleStringBasedTypes(filterType, value, operator);\n};\n\nexport const getDataType = ({\n filterType = FilterType.string,\n dataType = 'string'\n}: {\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n}): FilterValueType => {\n switch (filterType) {\n case FilterType.multiselect:\n case FilterType.select:\n return dataType;\n case FilterType.date:\n return 'string';\n default:\n return filterType;\n }\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-operations.js","sources":["../../../../components/data-table/utils/filter-operations.tsx"],"sourcesContent":["import type { FilterFn } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\n\nimport {\n DataTableFilterOperatorTypes,\n DateFilterOperatorType,\n EmptyFilterValue,\n FilterOperatorTypes,\n FilterType,\n FilterTypes,\n FilterValue,\n FilterValueType,\n MultiSelectFilterOperatorType,\n NumberFilterOperatorType,\n SelectFilterOperatorType,\n StringFilterOperatorType\n} from '~/types/filters';\nimport { DataTableFilterValues } from '../data-table.types';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\nexport type FilterFunctionsMap = {\n number: Record<NumberFilterOperatorType, FilterFn<unknown>>;\n string: Record<StringFilterOperatorType, FilterFn<unknown>>;\n date: Record<DateFilterOperatorType, FilterFn<unknown>>;\n select: Record<SelectFilterOperatorType, FilterFn<unknown>>;\n multiselect: Record<MultiSelectFilterOperatorType, FilterFn<unknown>>;\n};\n\nexport const filterOperationsMap: FilterFunctionsMap = {\n number: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) === Number(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) !== Number(filterValue.value);\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) < Number(filterValue.value);\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) <= Number(filterValue.value);\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) > Number(filterValue.value);\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return Number(row.getValue(columnId)) >= Number(filterValue.value);\n }\n },\n string: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() ===\n String(filterValue.value).toLowerCase()\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return (\n String(row.getValue(columnId)).toLowerCase() !==\n String(filterValue.value).toLowerCase()\n );\n },\n contains: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.includes(filterStr);\n },\n starts_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.startsWith(filterStr);\n },\n ends_with: (row, columnId, filterValue: FilterValue, _addMeta) => {\n const columnValue = (row.getValue(columnId) as string).toLowerCase();\n const filterStr = (filterValue.value as string).toLowerCase();\n return columnValue.endsWith(filterStr);\n }\n },\n date: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return !dayjs(row.getValue(columnId)).isSame(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n lte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrBefore(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gt: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isAfter(\n dayjs(filterValue.date),\n 'day'\n );\n },\n gte: (row, columnId, filterValue: FilterValue, _addMeta) => {\n return dayjs(row.getValue(columnId)).isSameOrAfter(\n dayjs(filterValue.date),\n 'day'\n );\n }\n },\n select: {\n eq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) === '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) === String(filterValue.value);\n },\n neq: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (String(filterValue.value) === EmptyFilterValue) {\n return row.getValue(columnId) !== '';\n }\n // Select only supports string values\n return String(row.getValue(columnId)) !== String(filterValue.value);\n }\n },\n multiselect: {\n in: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n },\n notin: (row, columnId, filterValue: FilterValue, _addMeta) => {\n if (!Array.isArray(filterValue.value)) return false;\n\n return !filterValue.value\n .map(value => (value === EmptyFilterValue ? '' : String(value)))\n .includes(String(row.getValue(columnId)));\n }\n }\n} as const;\n\nexport function getFilterFn<T extends keyof FilterFunctionsMap>(\n type: T,\n operator: FilterOperatorTypes\n) {\n // @ts-expect-error FilterOperatorTypes is union of all possible operators\n return filterOperationsMap[type][operator];\n}\n\nconst handleStringBasedTypes = (\n filterType: FilterTypes,\n value: any,\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes\n): DataTableFilterValues => {\n switch (filterType) {\n case FilterType.date: {\n const dateValue = dayjs(value);\n return {\n value,\n stringValue: dateValue.isValid() ? dateValue.toISOString() : ''\n };\n }\n case FilterType.select:\n return {\n stringValue: value === EmptyFilterValue ? '' : value,\n value\n };\n case FilterType.multiselect:\n return {\n value,\n stringValue: value\n .map((value: any) =>\n value === EmptyFilterValue ? '' : String(value)\n )\n .join()\n };\n case FilterType.string: {\n // Apply wildcards for ilike operations\n let processedValue = value;\n // Check if we need to apply wildcards (operator could be UI type or already converted to 'ilike')\n if (operator === 'contains') {\n processedValue = `%${value}%`;\n } else if (operator === 'starts_with') {\n processedValue = `${value}%`;\n } else if (operator === 'ends_with') {\n processedValue = `%${value}`;\n } else if (operator === 'ilike') {\n // If already converted to ilike, assume it needs contains-style wildcards\n // unless the value already has wildcards\n if (!value.includes('%')) {\n processedValue = `%${value}%`;\n }\n }\n return {\n stringValue: processedValue,\n value\n };\n }\n default:\n return {\n stringValue: value,\n value\n };\n }\n};\n\nexport const getFilterOperator = ({\n value,\n filterType,\n operator\n}: {\n value: any;\n filterType?: FilterTypes;\n operator: FilterOperatorTypes;\n}): DataTableFilterOperatorTypes => {\n if (value === EmptyFilterValue && filterType === FilterType.select) {\n return 'empty';\n }\n\n // Map string filter operators to ilike for DataTableFilter\n if (\n filterType === FilterType.string &&\n (operator === 'contains' ||\n operator === 'starts_with' ||\n operator === 'ends_with')\n ) {\n return 'ilike';\n }\n\n return operator as DataTableFilterOperatorTypes;\n};\n\nexport const getFilterValue = ({\n value,\n dataType = 'string',\n filterType = FilterType.string,\n operator\n}: {\n value: any;\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n operator?: FilterOperatorTypes | DataTableFilterOperatorTypes;\n}): DataTableFilterValues => {\n if (dataType === 'boolean') {\n return { boolValue: value, value };\n }\n if (dataType === 'number') {\n return { numberValue: value, value };\n }\n\n // Handle string-based types\n return handleStringBasedTypes(filterType, value, operator);\n};\n\nexport const getDataType = ({\n filterType = FilterType.string,\n dataType = 'string'\n}: {\n dataType?: FilterValueType;\n filterType?: FilterTypes;\n}): FilterValueType => {\n switch (filterType) {\n case FilterType.multiselect:\n case FilterType.select:\n return dataType;\n case FilterType.date:\n return 'string';\n default:\n return filterType;\n }\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var dayjs = require('dayjs');
|
|
3
4
|
var filters = require('../../../types/filters.cjs');
|
|
4
5
|
var dataTable_types = require('../data-table.types.cjs');
|
|
5
6
|
var filterOperations = require('./filter-operations.cjs');
|
|
6
7
|
|
|
7
8
|
function queryToTableState(query) {
|
|
8
9
|
const columnFilters = query.filters
|
|
9
|
-
?.filter(data =>
|
|
10
|
+
?.filter(data => {
|
|
11
|
+
if (data._type === filters.FilterType.date)
|
|
12
|
+
return dayjs(data.value).isValid();
|
|
13
|
+
if (data.value !== '')
|
|
14
|
+
return true;
|
|
15
|
+
return false;
|
|
16
|
+
})
|
|
10
17
|
?.map(data => {
|
|
11
18
|
const valueObject = data._type === filters.FilterType.date
|
|
12
19
|
? { date: data.value }
|
|
@@ -119,7 +126,15 @@ function transformToDataTableQuery(query) {
|
|
|
119
126
|
const { group_by = [], filters: filters$1 = [], sort = [], ...rest } = query;
|
|
120
127
|
const sanitizedGroupBy = group_by?.filter(key => key !== dataTable_types.defaultGroupOption.id);
|
|
121
128
|
const sanitizedFilters = filters$1
|
|
122
|
-
?.filter(data =>
|
|
129
|
+
?.filter(data => {
|
|
130
|
+
if (data._type === filters.FilterType.select)
|
|
131
|
+
return true;
|
|
132
|
+
if (data._type === filters.FilterType.date)
|
|
133
|
+
return dayjs(data.value).isValid();
|
|
134
|
+
if (data.value !== '')
|
|
135
|
+
return true;
|
|
136
|
+
return false;
|
|
137
|
+
})
|
|
123
138
|
?.map(data => ({
|
|
124
139
|
name: data.name,
|
|
125
140
|
operator: filterOperations.getFilterOperator({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../components/data-table/utils/index.tsx"],"sourcesContent":["import { TableState } from '@tanstack/table-core';\n\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport {\n DataTableColumnDef,\n DataTableQuery,\n DataTableSort,\n GroupedData,\n InternalFilter,\n InternalQuery,\n SortOrders,\n defaultGroupOption\n} from '../data-table.types';\nimport {\n getFilterFn,\n getFilterOperator,\n getFilterValue\n} from './filter-operations';\n\nexport function queryToTableState(query: InternalQuery): Partial<TableState> {\n const columnFilters =\n query.filters\n ?.filter(data => data.value !== '')\n ?.map(data => {\n const valueObject =\n data._type === FilterType.date\n ? { date: data.value }\n : { value: data.value };\n return {\n value: valueObject,\n id: data?.name\n };\n }) || [];\n\n const sorting = query.sort?.map(data => ({\n id: data?.name,\n desc: data?.order === SortOrders.DESC\n }));\n return {\n columnFilters: columnFilters,\n sorting: sorting,\n globalFilter: query.search\n };\n}\n\nexport function getColumnsWithFilterFn<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = [],\n filters: InternalFilter[] = []\n): DataTableColumnDef<TData, TValue>[] {\n return columns.map(column => {\n const colFilter = filters?.find(\n filter => filter.name === column.accessorKey\n );\n const filterFn = colFilter?.operator\n ? getFilterFn(column.filterType || FilterType.string, colFilter.operator)\n : undefined;\n\n return {\n ...column,\n filterFn\n };\n });\n}\n\nexport function groupData<TData>(\n data: TData[],\n group_by?: string,\n columns: DataTableColumnDef<TData, any>[] = []\n): GroupedData<TData>[] {\n if (!data) return [];\n if (!group_by || group_by === defaultGroupOption.id)\n return data as GroupedData<TData>[];\n\n const groupMap = new Map<string, TData[]>();\n data.forEach((currentData: TData) => {\n const item = currentData as Record<string, string>;\n const keyValue = item[group_by];\n if (!groupMap.has(keyValue)) {\n groupMap.set(keyValue, []);\n }\n groupMap.get(keyValue)?.push(item as TData);\n });\n\n const columnDef = columns.find(col => col.accessorKey === group_by);\n const showGroupCount = columnDef?.showGroupCount || false;\n const groupLablesMap = columnDef?.groupLabelsMap || {};\n const groupCountMap = columnDef?.groupCountMap || {};\n const groupedData: GroupedData<TData>[] = [];\n\n groupMap.forEach((value, key) => {\n groupedData.push({\n label: groupLablesMap[key] || key,\n group_key: key,\n subRows: value,\n count: groupCountMap[key] ?? value.length,\n showGroupCount\n });\n });\n\n return groupedData;\n}\n\nconst generateFilterMap = (\n filters: InternalFilter[] = []\n): Map<string, any> => {\n return new Map(\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n .map(({ name, operator, value }) => [`${name}-${operator}`, value])\n );\n};\n\nconst generateSortMap = (sort: DataTableSort[] = []): Map<string, string> => {\n return new Map(sort.map(({ name, order }) => [name, order]));\n};\n\nconst isFilterChanged = (\n oldFilters: InternalFilter[] = [],\n newFilters: InternalFilter[] = []\n): boolean => {\n const oldFilterMap = generateFilterMap(oldFilters);\n const newFilterMap = generateFilterMap(newFilters);\n\n if (oldFilterMap.size !== newFilterMap.size) return true;\n\n return [...newFilterMap].some(\n ([key, value]) => oldFilterMap.get(key) !== value\n );\n};\n\nconst isSortChanged = (\n oldSort: DataTableSort[] = [],\n newSort: DataTableSort[] = []\n): boolean => {\n if (oldSort.length !== newSort.length) return true;\n\n const oldSortMap = generateSortMap(oldSort);\n const newSortMap = generateSortMap(newSort);\n\n return [...newSortMap].some(([key, order]) => oldSortMap.get(key) !== order);\n};\n\nconst isGroupChanged = (\n oldGroupBy: string[] = [],\n newGroupBy: string[] = []\n): boolean => {\n if (oldGroupBy.length !== newGroupBy.length) return true;\n\n const oldGroupSet = new Set(oldGroupBy);\n return newGroupBy.some(item => !oldGroupSet.has(item));\n};\n\nconst isSearchChanged = (oldSearch?: string, newSearch?: string): boolean => {\n return oldSearch !== newSearch;\n};\n\nexport const hasQueryChanged = (\n oldQuery: InternalQuery | null,\n newQuery: InternalQuery\n): boolean => {\n if (!oldQuery) return true;\n return (\n isFilterChanged(oldQuery.filters, newQuery.filters) ||\n isSortChanged(oldQuery.sort, newQuery.sort) ||\n isGroupChanged(oldQuery.group_by, newQuery.group_by) ||\n isSearchChanged(oldQuery.search, newQuery.search)\n );\n};\n\nexport function getInitialColumnVisibility<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = []\n): Record<string, boolean> | {} {\n return columns.reduce((acc, col) => {\n return {\n ...acc,\n [col.accessorKey]: col.defaultHidden ? false : true\n };\n }, {});\n}\n\nexport function transformToDataTableQuery(\n query: InternalQuery\n): DataTableQuery {\n const { group_by = [], filters = [], sort = [], ...rest } = query;\n const sanitizedGroupBy = group_by?.filter(\n key => key !== defaultGroupOption.id\n );\n\n const sanitizedFilters =\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n ?.map(data => ({\n name: data.name,\n operator: getFilterOperator({\n operator: data.operator,\n value: data.value,\n filterType: data._type\n }),\n ...getFilterValue({\n value: data.value,\n filterType: data._type,\n dataType: data._dataType,\n operator: data.operator\n })\n })) || [];\n\n return {\n ...rest,\n sort: sort,\n group_by: sanitizedGroupBy,\n filters: sanitizedFilters\n };\n}\n\n// Transform DataTableQuery to InternalQuery\n// This reverses the transformation done by transformToDataTableQuery\nexport function dataTableQueryToInternal(query: DataTableQuery): InternalQuery {\n const { filters, ...rest } = query;\n\n if (!filters) {\n return rest;\n }\n\n // Convert DataTableFilter[] to InternalFilter[]\n const internalFilters: InternalFilter[] = filters.map(filter => {\n const {\n operator,\n value,\n stringValue,\n numberValue,\n boolValue,\n ...filterRest\n } = filter;\n\n // Reverse the operator mapping and wildcard transformation\n let transformedFilter = {\n operator: operator as FilterOperatorTypes,\n value: value,\n ...(stringValue !== undefined && { stringValue }),\n ...(numberValue !== undefined && { numberValue }),\n ...(boolValue !== undefined && { boolValue })\n };\n\n // If operator is 'ilike', determine the original operator based on wildcards\n if (operator === 'ilike' && stringValue) {\n if (stringValue.startsWith('%') && stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'contains',\n value: stringValue.slice(1, -1) // Remove % from both ends\n };\n } else if (stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'starts_with',\n value: stringValue.slice(0, -1) // Remove % from end\n };\n } else if (stringValue.startsWith('%')) {\n transformedFilter = {\n operator: 'ends_with',\n value: stringValue.slice(1) // Remove % from start\n };\n } else {\n // Default to contains if no wildcards (shouldn't happen normally)\n transformedFilter = {\n operator: 'contains',\n value: stringValue\n };\n }\n }\n\n return {\n ...filterRest,\n ...transformedFilter,\n // We don't have type information, so leave it undefined\n // The UI will need to infer or set these based on column definitions\n _type: undefined,\n _dataType: undefined\n } as InternalFilter;\n });\n\n return {\n ...rest,\n filters: internalFilters\n };\n}\n\nexport function getDefaultTableQuery(\n defaultSort: DataTableSort,\n oldQuery: DataTableQuery = {}\n): InternalQuery {\n // Convert DataTableQuery to InternalQuery\n const internalQuery = dataTableQueryToInternal(oldQuery);\n\n return {\n sort: [defaultSort],\n group_by: [defaultGroupOption.id],\n ...internalQuery\n };\n}\n"],"names":["FilterType","SortOrders","filters","getFilterFn","defaultGroupOption","getFilterOperator","getFilterValue"],"mappings":";;;;;;AAmBM,SAAU,iBAAiB,CAAC,KAAoB,EAAA;AACpD,IAAA,MAAM,aAAa,GACjB,KAAK,CAAC,OAAO;UACT,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;AACnC,UAAE,GAAG,CAAC,IAAI,IAAG;QACX,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,KAAKA,kBAAU,CAAC,IAAI;AAC5B,cAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;cACpB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO;AACL,YAAA,KAAK,EAAE,WAAW;YAClB,EAAE,EAAE,IAAI,EAAE,IAAI;SACf,CAAC;KACH,CAAC,IAAI,EAAE,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK;QACvC,EAAE,EAAE,IAAI,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI,EAAE,KAAK,KAAKC,0BAAU,CAAC,IAAI;AACtC,KAAA,CAAC,CAAC,CAAC;IACJ,OAAO;AACL,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,KAAK,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;SAEe,sBAAsB,CACpC,UAA+C,EAAE,EACjDC,YAA4B,EAAE,EAAA;AAE9B,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC1B,QAAA,MAAM,SAAS,GAAGA,SAAO,EAAE,IAAI,CAC7B,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAC7C,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ;AAClC,cAAEC,4BAAW,CAAC,MAAM,CAAC,UAAU,IAAIH,kBAAU,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;cACvE,SAAS,CAAC;QAEd,OAAO;AACL,YAAA,GAAG,MAAM;YACT,QAAQ;SACT,CAAC;AACJ,KAAC,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,SAAS,CACvB,IAAa,EACb,QAAiB,EACjB,UAA4C,EAAE,EAAA;AAE9C,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE,CAAC;AACrB,IAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAKI,kCAAkB,CAAC,EAAE;AACjD,QAAA,OAAO,IAA4B,CAAC;AAEtC,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC5C,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,WAAkB,KAAI;QAClC,MAAM,IAAI,GAAG,WAAqC,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC5B;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC;AAC9C,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;AACpE,IAAA,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,KAAK,CAAC;AAC1D,IAAA,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,EAAE,CAAC;AACvD,IAAA,MAAM,aAAa,GAAG,SAAS,EAAE,aAAa,IAAI,EAAE,CAAC;IACrD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;QAC9B,WAAW,CAAC,IAAI,CAAC;AACf,YAAA,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG;AACjC,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;YACzC,cAAc;AACf,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,iBAAiB,GAAG,CACxBF,SAA4B,GAAA,EAAE,KACV;IACpB,OAAO,IAAI,GAAG,CACZA,SAAO;AACL,UAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAKF,kBAAU,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;SACtE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAwB,GAAA,EAAE,KAAyB;IAC1E,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,UAAA,GAA+B,EAAE,EACjC,UAAA,GAA+B,EAAE,KACtB;AACX,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAEnD,IAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;IAEzD,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,OAAA,GAA2B,EAAE,EAC7B,OAAA,GAA2B,EAAE,KAClB;AACX,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;AAEnD,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,UAAA,GAAuB,EAAE,EACzB,UAAA,GAAuB,EAAE,KACd;AACX,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;AAEzD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,SAAkB,EAAE,SAAkB,KAAa;IAC1E,OAAO,SAAS,KAAK,SAAS,CAAC;AACjC,CAAC,CAAC;MAEW,eAAe,GAAG,CAC7B,QAA8B,EAC9B,QAAuB,KACZ;AACX,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;IAC3B,QACE,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACpD,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACjD;AACJ,EAAE;AAEc,SAAA,0BAA0B,CACxC,OAAA,GAA+C,EAAE,EAAA;IAEjD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;QACjC,OAAO;AACL,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI;SACpD,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAEK,SAAU,yBAAyB,CACvC,KAAoB,EAAA;AAEpB,IAAA,MAAM,EAAE,QAAQ,GAAG,EAAE,WAAEE,SAAO,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AAClE,IAAA,MAAM,gBAAgB,GAAG,QAAQ,EAAE,MAAM,CACvC,GAAG,IAAI,GAAG,KAAKE,kCAAkB,CAAC,EAAE,CACrC,CAAC;IAEF,MAAM,gBAAgB,GACpBF,SAAO;AACL,UAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAKF,kBAAU,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;AACvE,UAAE,GAAG,CAAC,IAAI,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAEK,kCAAiB,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,KAAK;SACvB,CAAC;AACF,QAAA,GAAGC,+BAAc,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH,CAAC,CAAC,IAAI,EAAE,CAAC;IAEd,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,OAAO,EAAE,gBAAgB;KAC1B,CAAC;AACJ,CAAC;AAED;AACA;AACM,SAAU,wBAAwB,CAAC,KAAqB,EAAA;IAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC;KACb;;IAGD,MAAM,eAAe,GAAqB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC7D,QAAA,MAAM,EACJ,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,GAAG,UAAU,EACd,GAAG,MAAM,CAAC;;AAGX,QAAA,IAAI,iBAAiB,GAAG;AACtB,YAAA,QAAQ,EAAE,QAA+B;AACzC,YAAA,KAAK,EAAE,KAAK;YACZ,IAAI,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;SAC9C,CAAC;;AAGF,QAAA,IAAI,QAAQ,KAAK,OAAO,IAAI,WAAW,EAAE;AACvC,YAAA,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5D,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC,CAAC;aACH;AAAM,iBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,aAAa;oBACvB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC,CAAC;aACH;AAAM,iBAAA,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtC,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC5B,CAAC;aACH;iBAAM;;AAEL,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,KAAK,EAAE,WAAW;iBACnB,CAAC;aACH;SACF;QAED,OAAO;AACL,YAAA,GAAG,UAAU;AACb,YAAA,GAAG,iBAAiB;;;AAGpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,SAAS;SACH,CAAC;AACtB,KAAC,CAAC,CAAC;IAEH,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;SAEe,oBAAoB,CAClC,WAA0B,EAC1B,WAA2B,EAAE,EAAA;;AAG7B,IAAA,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,IAAI,EAAE,CAAC,WAAW,CAAC;AACnB,QAAA,QAAQ,EAAE,CAACF,kCAAkB,CAAC,EAAE,CAAC;AACjC,QAAA,GAAG,aAAa;KACjB,CAAC;AACJ;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../components/data-table/utils/index.tsx"],"sourcesContent":["import { TableState } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\n\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport {\n DataTableColumnDef,\n DataTableQuery,\n DataTableSort,\n defaultGroupOption,\n GroupedData,\n InternalFilter,\n InternalQuery,\n SortOrders\n} from '../data-table.types';\nimport {\n getFilterFn,\n getFilterOperator,\n getFilterValue\n} from './filter-operations';\n\nexport function queryToTableState(query: InternalQuery): Partial<TableState> {\n const columnFilters =\n query.filters\n ?.filter(data => {\n if (data._type === FilterType.date) return dayjs(data.value).isValid();\n if (data.value !== '') return true;\n return false;\n })\n ?.map(data => {\n const valueObject =\n data._type === FilterType.date\n ? { date: data.value }\n : { value: data.value };\n return {\n value: valueObject,\n id: data?.name\n };\n }) || [];\n\n const sorting = query.sort?.map(data => ({\n id: data?.name,\n desc: data?.order === SortOrders.DESC\n }));\n return {\n columnFilters: columnFilters,\n sorting: sorting,\n globalFilter: query.search\n };\n}\n\nexport function getColumnsWithFilterFn<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = [],\n filters: InternalFilter[] = []\n): DataTableColumnDef<TData, TValue>[] {\n return columns.map(column => {\n const colFilter = filters?.find(\n filter => filter.name === column.accessorKey\n );\n const filterFn = colFilter?.operator\n ? getFilterFn(column.filterType || FilterType.string, colFilter.operator)\n : undefined;\n\n return {\n ...column,\n filterFn\n };\n });\n}\n\nexport function groupData<TData>(\n data: TData[],\n group_by?: string,\n columns: DataTableColumnDef<TData, any>[] = []\n): GroupedData<TData>[] {\n if (!data) return [];\n if (!group_by || group_by === defaultGroupOption.id)\n return data as GroupedData<TData>[];\n\n const groupMap = new Map<string, TData[]>();\n data.forEach((currentData: TData) => {\n const item = currentData as Record<string, string>;\n const keyValue = item[group_by];\n if (!groupMap.has(keyValue)) {\n groupMap.set(keyValue, []);\n }\n groupMap.get(keyValue)?.push(item as TData);\n });\n\n const columnDef = columns.find(col => col.accessorKey === group_by);\n const showGroupCount = columnDef?.showGroupCount || false;\n const groupLablesMap = columnDef?.groupLabelsMap || {};\n const groupCountMap = columnDef?.groupCountMap || {};\n const groupedData: GroupedData<TData>[] = [];\n\n groupMap.forEach((value, key) => {\n groupedData.push({\n label: groupLablesMap[key] || key,\n group_key: key,\n subRows: value,\n count: groupCountMap[key] ?? value.length,\n showGroupCount\n });\n });\n\n return groupedData;\n}\n\nconst generateFilterMap = (\n filters: InternalFilter[] = []\n): Map<string, any> => {\n return new Map(\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n .map(({ name, operator, value }) => [`${name}-${operator}`, value])\n );\n};\n\nconst generateSortMap = (sort: DataTableSort[] = []): Map<string, string> => {\n return new Map(sort.map(({ name, order }) => [name, order]));\n};\n\nconst isFilterChanged = (\n oldFilters: InternalFilter[] = [],\n newFilters: InternalFilter[] = []\n): boolean => {\n const oldFilterMap = generateFilterMap(oldFilters);\n const newFilterMap = generateFilterMap(newFilters);\n\n if (oldFilterMap.size !== newFilterMap.size) return true;\n\n return [...newFilterMap].some(\n ([key, value]) => oldFilterMap.get(key) !== value\n );\n};\n\nconst isSortChanged = (\n oldSort: DataTableSort[] = [],\n newSort: DataTableSort[] = []\n): boolean => {\n if (oldSort.length !== newSort.length) return true;\n\n const oldSortMap = generateSortMap(oldSort);\n const newSortMap = generateSortMap(newSort);\n\n return [...newSortMap].some(([key, order]) => oldSortMap.get(key) !== order);\n};\n\nconst isGroupChanged = (\n oldGroupBy: string[] = [],\n newGroupBy: string[] = []\n): boolean => {\n if (oldGroupBy.length !== newGroupBy.length) return true;\n\n const oldGroupSet = new Set(oldGroupBy);\n return newGroupBy.some(item => !oldGroupSet.has(item));\n};\n\nconst isSearchChanged = (oldSearch?: string, newSearch?: string): boolean => {\n return oldSearch !== newSearch;\n};\n\nexport const hasQueryChanged = (\n oldQuery: InternalQuery | null,\n newQuery: InternalQuery\n): boolean => {\n if (!oldQuery) return true;\n return (\n isFilterChanged(oldQuery.filters, newQuery.filters) ||\n isSortChanged(oldQuery.sort, newQuery.sort) ||\n isGroupChanged(oldQuery.group_by, newQuery.group_by) ||\n isSearchChanged(oldQuery.search, newQuery.search)\n );\n};\n\nexport function getInitialColumnVisibility<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = []\n): Record<string, boolean> | {} {\n return columns.reduce((acc, col) => {\n return {\n ...acc,\n [col.accessorKey]: col.defaultHidden ? false : true\n };\n }, {});\n}\n\nexport function transformToDataTableQuery(\n query: InternalQuery\n): DataTableQuery {\n const { group_by = [], filters = [], sort = [], ...rest } = query;\n const sanitizedGroupBy = group_by?.filter(\n key => key !== defaultGroupOption.id\n );\n\n const sanitizedFilters =\n filters\n ?.filter(data => {\n if (data._type === FilterType.select) return true;\n if (data._type === FilterType.date) return dayjs(data.value).isValid();\n if (data.value !== '') return true;\n return false;\n })\n ?.map(data => ({\n name: data.name,\n operator: getFilterOperator({\n operator: data.operator,\n value: data.value,\n filterType: data._type\n }),\n ...getFilterValue({\n value: data.value,\n filterType: data._type,\n dataType: data._dataType,\n operator: data.operator\n })\n })) || [];\n\n return {\n ...rest,\n sort: sort,\n group_by: sanitizedGroupBy,\n filters: sanitizedFilters\n };\n}\n\n// Transform DataTableQuery to InternalQuery\n// This reverses the transformation done by transformToDataTableQuery\nexport function dataTableQueryToInternal(query: DataTableQuery): InternalQuery {\n const { filters, ...rest } = query;\n\n if (!filters) {\n return rest;\n }\n\n // Convert DataTableFilter[] to InternalFilter[]\n const internalFilters: InternalFilter[] = filters.map(filter => {\n const {\n operator,\n value,\n stringValue,\n numberValue,\n boolValue,\n ...filterRest\n } = filter;\n\n // Reverse the operator mapping and wildcard transformation\n let transformedFilter = {\n operator: operator as FilterOperatorTypes,\n value: value,\n ...(stringValue !== undefined && { stringValue }),\n ...(numberValue !== undefined && { numberValue }),\n ...(boolValue !== undefined && { boolValue })\n };\n\n // If operator is 'ilike', determine the original operator based on wildcards\n if (operator === 'ilike' && stringValue) {\n if (stringValue.startsWith('%') && stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'contains',\n value: stringValue.slice(1, -1) // Remove % from both ends\n };\n } else if (stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'starts_with',\n value: stringValue.slice(0, -1) // Remove % from end\n };\n } else if (stringValue.startsWith('%')) {\n transformedFilter = {\n operator: 'ends_with',\n value: stringValue.slice(1) // Remove % from start\n };\n } else {\n // Default to contains if no wildcards (shouldn't happen normally)\n transformedFilter = {\n operator: 'contains',\n value: stringValue\n };\n }\n }\n\n return {\n ...filterRest,\n ...transformedFilter,\n // We don't have type information, so leave it undefined\n // The UI will need to infer or set these based on column definitions\n _type: undefined,\n _dataType: undefined\n } as InternalFilter;\n });\n\n return {\n ...rest,\n filters: internalFilters\n };\n}\n\nexport function getDefaultTableQuery(\n defaultSort: DataTableSort,\n oldQuery: DataTableQuery = {}\n): InternalQuery {\n // Convert DataTableQuery to InternalQuery\n const internalQuery = dataTableQueryToInternal(oldQuery);\n\n return {\n sort: [defaultSort],\n group_by: [defaultGroupOption.id],\n ...internalQuery\n };\n}\n"],"names":["FilterType","SortOrders","filters","getFilterFn","defaultGroupOption","getFilterOperator","getFilterValue"],"mappings":";;;;;;;AAoBM,SAAU,iBAAiB,CAAC,KAAoB,EAAA;AACpD,IAAA,MAAM,aAAa,GACjB,KAAK,CAAC,OAAO;AACX,UAAE,MAAM,CAAC,IAAI,IAAG;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,KAAKA,kBAAU,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACvE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AACnC,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AACF,UAAE,GAAG,CAAC,IAAI,IAAG;QACX,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,KAAKA,kBAAU,CAAC,IAAI;AAC5B,cAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;cACpB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO;AACL,YAAA,KAAK,EAAE,WAAW;YAClB,EAAE,EAAE,IAAI,EAAE,IAAI;SACf,CAAC;KACH,CAAC,IAAI,EAAE,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK;QACvC,EAAE,EAAE,IAAI,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI,EAAE,KAAK,KAAKC,0BAAU,CAAC,IAAI;AACtC,KAAA,CAAC,CAAC,CAAC;IACJ,OAAO;AACL,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,KAAK,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;SAEe,sBAAsB,CACpC,UAA+C,EAAE,EACjDC,YAA4B,EAAE,EAAA;AAE9B,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC1B,QAAA,MAAM,SAAS,GAAGA,SAAO,EAAE,IAAI,CAC7B,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAC7C,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ;AAClC,cAAEC,4BAAW,CAAC,MAAM,CAAC,UAAU,IAAIH,kBAAU,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;cACvE,SAAS,CAAC;QAEd,OAAO;AACL,YAAA,GAAG,MAAM;YACT,QAAQ;SACT,CAAC;AACJ,KAAC,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,SAAS,CACvB,IAAa,EACb,QAAiB,EACjB,UAA4C,EAAE,EAAA;AAE9C,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE,CAAC;AACrB,IAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAKI,kCAAkB,CAAC,EAAE;AACjD,QAAA,OAAO,IAA4B,CAAC;AAEtC,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC5C,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,WAAkB,KAAI;QAClC,MAAM,IAAI,GAAG,WAAqC,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC5B;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC;AAC9C,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;AACpE,IAAA,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,KAAK,CAAC;AAC1D,IAAA,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,EAAE,CAAC;AACvD,IAAA,MAAM,aAAa,GAAG,SAAS,EAAE,aAAa,IAAI,EAAE,CAAC;IACrD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;QAC9B,WAAW,CAAC,IAAI,CAAC;AACf,YAAA,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG;AACjC,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;YACzC,cAAc;AACf,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,iBAAiB,GAAG,CACxBF,SAA4B,GAAA,EAAE,KACV;IACpB,OAAO,IAAI,GAAG,CACZA,SAAO;AACL,UAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAKF,kBAAU,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;SACtE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAwB,GAAA,EAAE,KAAyB;IAC1E,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,UAAA,GAA+B,EAAE,EACjC,UAAA,GAA+B,EAAE,KACtB;AACX,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAEnD,IAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;IAEzD,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,OAAA,GAA2B,EAAE,EAC7B,OAAA,GAA2B,EAAE,KAClB;AACX,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;AAEnD,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,UAAA,GAAuB,EAAE,EACzB,UAAA,GAAuB,EAAE,KACd;AACX,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;AAEzD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,SAAkB,EAAE,SAAkB,KAAa;IAC1E,OAAO,SAAS,KAAK,SAAS,CAAC;AACjC,CAAC,CAAC;MAEW,eAAe,GAAG,CAC7B,QAA8B,EAC9B,QAAuB,KACZ;AACX,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;IAC3B,QACE,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACpD,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACjD;AACJ,EAAE;AAEc,SAAA,0BAA0B,CACxC,OAAA,GAA+C,EAAE,EAAA;IAEjD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;QACjC,OAAO;AACL,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI;SACpD,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAEK,SAAU,yBAAyB,CACvC,KAAoB,EAAA;AAEpB,IAAA,MAAM,EAAE,QAAQ,GAAG,EAAE,WAAEE,SAAO,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AAClE,IAAA,MAAM,gBAAgB,GAAG,QAAQ,EAAE,MAAM,CACvC,GAAG,IAAI,GAAG,KAAKE,kCAAkB,CAAC,EAAE,CACrC,CAAC;IAEF,MAAM,gBAAgB,GACpBF,SAAO;AACL,UAAE,MAAM,CAAC,IAAI,IAAG;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,KAAKF,kBAAU,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,KAAK,KAAKA,kBAAU,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACvE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AACnC,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AACF,UAAE,GAAG,CAAC,IAAI,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAEK,kCAAiB,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,KAAK;SACvB,CAAC;AACF,QAAA,GAAGC,+BAAc,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH,CAAC,CAAC,IAAI,EAAE,CAAC;IAEd,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,OAAO,EAAE,gBAAgB;KAC1B,CAAC;AACJ,CAAC;AAED;AACA;AACM,SAAU,wBAAwB,CAAC,KAAqB,EAAA;IAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC;KACb;;IAGD,MAAM,eAAe,GAAqB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC7D,QAAA,MAAM,EACJ,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,GAAG,UAAU,EACd,GAAG,MAAM,CAAC;;AAGX,QAAA,IAAI,iBAAiB,GAAG;AACtB,YAAA,QAAQ,EAAE,QAA+B;AACzC,YAAA,KAAK,EAAE,KAAK;YACZ,IAAI,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;SAC9C,CAAC;;AAGF,QAAA,IAAI,QAAQ,KAAK,OAAO,IAAI,WAAW,EAAE;AACvC,YAAA,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5D,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC,CAAC;aACH;AAAM,iBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,aAAa;oBACvB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC,CAAC;aACH;AAAM,iBAAA,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtC,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC5B,CAAC;aACH;iBAAM;;AAEL,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,KAAK,EAAE,WAAW;iBACnB,CAAC;aACH;SACF;QAED,OAAO;AACL,YAAA,GAAG,UAAU;AACb,YAAA,GAAG,iBAAiB;;;AAGpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,SAAS;SACH,CAAC;AACtB,KAAC,CAAC,CAAC;IAEH,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;SAEe,oBAAoB,CAClC,WAA0B,EAC1B,WAA2B,EAAE,EAAA;;AAG7B,IAAA,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,IAAI,EAAE,CAAC,WAAW,CAAC;AACnB,QAAA,QAAQ,EAAE,CAACF,kCAAkB,CAAC,EAAE,CAAC;AACjC,QAAA,GAAG,aAAa;KACjB,CAAC;AACJ;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/data-table/utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/data-table/utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EAEb,WAAW,EACX,cAAc,EACd,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAO7B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CA4B3E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAClD,OAAO,GAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAO,EACjD,OAAO,GAAE,cAAc,EAAO,GAC7B,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAcrC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAC7B,IAAI,EAAE,KAAK,EAAE,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAO,GAC7C,WAAW,CAAC,KAAK,CAAC,EAAE,CAgCtB;AAwDD,eAAO,MAAM,eAAe,aAChB,aAAa,GAAG,IAAI,YACpB,aAAa,KACtB,OAQF,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EACtD,OAAO,GAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAO,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAO9B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,GACnB,cAAc,CAmChB;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAmE7E;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,aAAa,EAC1B,QAAQ,GAAE,cAAmB,GAC5B,aAAa,CASf"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
1
2
|
import { FilterType } from '../../../types/filters.js';
|
|
2
3
|
import { SortOrders, defaultGroupOption } from '../data-table.types.js';
|
|
3
4
|
import { getFilterFn, getFilterOperator, getFilterValue } from './filter-operations.js';
|
|
4
5
|
|
|
5
6
|
function queryToTableState(query) {
|
|
6
7
|
const columnFilters = query.filters
|
|
7
|
-
?.filter(data =>
|
|
8
|
+
?.filter(data => {
|
|
9
|
+
if (data._type === FilterType.date)
|
|
10
|
+
return dayjs(data.value).isValid();
|
|
11
|
+
if (data.value !== '')
|
|
12
|
+
return true;
|
|
13
|
+
return false;
|
|
14
|
+
})
|
|
8
15
|
?.map(data => {
|
|
9
16
|
const valueObject = data._type === FilterType.date
|
|
10
17
|
? { date: data.value }
|
|
@@ -117,7 +124,15 @@ function transformToDataTableQuery(query) {
|
|
|
117
124
|
const { group_by = [], filters = [], sort = [], ...rest } = query;
|
|
118
125
|
const sanitizedGroupBy = group_by?.filter(key => key !== defaultGroupOption.id);
|
|
119
126
|
const sanitizedFilters = filters
|
|
120
|
-
?.filter(data =>
|
|
127
|
+
?.filter(data => {
|
|
128
|
+
if (data._type === FilterType.select)
|
|
129
|
+
return true;
|
|
130
|
+
if (data._type === FilterType.date)
|
|
131
|
+
return dayjs(data.value).isValid();
|
|
132
|
+
if (data.value !== '')
|
|
133
|
+
return true;
|
|
134
|
+
return false;
|
|
135
|
+
})
|
|
121
136
|
?.map(data => ({
|
|
122
137
|
name: data.name,
|
|
123
138
|
operator: getFilterOperator({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../components/data-table/utils/index.tsx"],"sourcesContent":["import { TableState } from '@tanstack/table-core';\n\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport {\n DataTableColumnDef,\n DataTableQuery,\n DataTableSort,\n GroupedData,\n InternalFilter,\n InternalQuery,\n SortOrders,\n defaultGroupOption\n} from '../data-table.types';\nimport {\n getFilterFn,\n getFilterOperator,\n getFilterValue\n} from './filter-operations';\n\nexport function queryToTableState(query: InternalQuery): Partial<TableState> {\n const columnFilters =\n query.filters\n ?.filter(data => data.value !== '')\n ?.map(data => {\n const valueObject =\n data._type === FilterType.date\n ? { date: data.value }\n : { value: data.value };\n return {\n value: valueObject,\n id: data?.name\n };\n }) || [];\n\n const sorting = query.sort?.map(data => ({\n id: data?.name,\n desc: data?.order === SortOrders.DESC\n }));\n return {\n columnFilters: columnFilters,\n sorting: sorting,\n globalFilter: query.search\n };\n}\n\nexport function getColumnsWithFilterFn<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = [],\n filters: InternalFilter[] = []\n): DataTableColumnDef<TData, TValue>[] {\n return columns.map(column => {\n const colFilter = filters?.find(\n filter => filter.name === column.accessorKey\n );\n const filterFn = colFilter?.operator\n ? getFilterFn(column.filterType || FilterType.string, colFilter.operator)\n : undefined;\n\n return {\n ...column,\n filterFn\n };\n });\n}\n\nexport function groupData<TData>(\n data: TData[],\n group_by?: string,\n columns: DataTableColumnDef<TData, any>[] = []\n): GroupedData<TData>[] {\n if (!data) return [];\n if (!group_by || group_by === defaultGroupOption.id)\n return data as GroupedData<TData>[];\n\n const groupMap = new Map<string, TData[]>();\n data.forEach((currentData: TData) => {\n const item = currentData as Record<string, string>;\n const keyValue = item[group_by];\n if (!groupMap.has(keyValue)) {\n groupMap.set(keyValue, []);\n }\n groupMap.get(keyValue)?.push(item as TData);\n });\n\n const columnDef = columns.find(col => col.accessorKey === group_by);\n const showGroupCount = columnDef?.showGroupCount || false;\n const groupLablesMap = columnDef?.groupLabelsMap || {};\n const groupCountMap = columnDef?.groupCountMap || {};\n const groupedData: GroupedData<TData>[] = [];\n\n groupMap.forEach((value, key) => {\n groupedData.push({\n label: groupLablesMap[key] || key,\n group_key: key,\n subRows: value,\n count: groupCountMap[key] ?? value.length,\n showGroupCount\n });\n });\n\n return groupedData;\n}\n\nconst generateFilterMap = (\n filters: InternalFilter[] = []\n): Map<string, any> => {\n return new Map(\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n .map(({ name, operator, value }) => [`${name}-${operator}`, value])\n );\n};\n\nconst generateSortMap = (sort: DataTableSort[] = []): Map<string, string> => {\n return new Map(sort.map(({ name, order }) => [name, order]));\n};\n\nconst isFilterChanged = (\n oldFilters: InternalFilter[] = [],\n newFilters: InternalFilter[] = []\n): boolean => {\n const oldFilterMap = generateFilterMap(oldFilters);\n const newFilterMap = generateFilterMap(newFilters);\n\n if (oldFilterMap.size !== newFilterMap.size) return true;\n\n return [...newFilterMap].some(\n ([key, value]) => oldFilterMap.get(key) !== value\n );\n};\n\nconst isSortChanged = (\n oldSort: DataTableSort[] = [],\n newSort: DataTableSort[] = []\n): boolean => {\n if (oldSort.length !== newSort.length) return true;\n\n const oldSortMap = generateSortMap(oldSort);\n const newSortMap = generateSortMap(newSort);\n\n return [...newSortMap].some(([key, order]) => oldSortMap.get(key) !== order);\n};\n\nconst isGroupChanged = (\n oldGroupBy: string[] = [],\n newGroupBy: string[] = []\n): boolean => {\n if (oldGroupBy.length !== newGroupBy.length) return true;\n\n const oldGroupSet = new Set(oldGroupBy);\n return newGroupBy.some(item => !oldGroupSet.has(item));\n};\n\nconst isSearchChanged = (oldSearch?: string, newSearch?: string): boolean => {\n return oldSearch !== newSearch;\n};\n\nexport const hasQueryChanged = (\n oldQuery: InternalQuery | null,\n newQuery: InternalQuery\n): boolean => {\n if (!oldQuery) return true;\n return (\n isFilterChanged(oldQuery.filters, newQuery.filters) ||\n isSortChanged(oldQuery.sort, newQuery.sort) ||\n isGroupChanged(oldQuery.group_by, newQuery.group_by) ||\n isSearchChanged(oldQuery.search, newQuery.search)\n );\n};\n\nexport function getInitialColumnVisibility<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = []\n): Record<string, boolean> | {} {\n return columns.reduce((acc, col) => {\n return {\n ...acc,\n [col.accessorKey]: col.defaultHidden ? false : true\n };\n }, {});\n}\n\nexport function transformToDataTableQuery(\n query: InternalQuery\n): DataTableQuery {\n const { group_by = [], filters = [], sort = [], ...rest } = query;\n const sanitizedGroupBy = group_by?.filter(\n key => key !== defaultGroupOption.id\n );\n\n const sanitizedFilters =\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n ?.map(data => ({\n name: data.name,\n operator: getFilterOperator({\n operator: data.operator,\n value: data.value,\n filterType: data._type\n }),\n ...getFilterValue({\n value: data.value,\n filterType: data._type,\n dataType: data._dataType,\n operator: data.operator\n })\n })) || [];\n\n return {\n ...rest,\n sort: sort,\n group_by: sanitizedGroupBy,\n filters: sanitizedFilters\n };\n}\n\n// Transform DataTableQuery to InternalQuery\n// This reverses the transformation done by transformToDataTableQuery\nexport function dataTableQueryToInternal(query: DataTableQuery): InternalQuery {\n const { filters, ...rest } = query;\n\n if (!filters) {\n return rest;\n }\n\n // Convert DataTableFilter[] to InternalFilter[]\n const internalFilters: InternalFilter[] = filters.map(filter => {\n const {\n operator,\n value,\n stringValue,\n numberValue,\n boolValue,\n ...filterRest\n } = filter;\n\n // Reverse the operator mapping and wildcard transformation\n let transformedFilter = {\n operator: operator as FilterOperatorTypes,\n value: value,\n ...(stringValue !== undefined && { stringValue }),\n ...(numberValue !== undefined && { numberValue }),\n ...(boolValue !== undefined && { boolValue })\n };\n\n // If operator is 'ilike', determine the original operator based on wildcards\n if (operator === 'ilike' && stringValue) {\n if (stringValue.startsWith('%') && stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'contains',\n value: stringValue.slice(1, -1) // Remove % from both ends\n };\n } else if (stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'starts_with',\n value: stringValue.slice(0, -1) // Remove % from end\n };\n } else if (stringValue.startsWith('%')) {\n transformedFilter = {\n operator: 'ends_with',\n value: stringValue.slice(1) // Remove % from start\n };\n } else {\n // Default to contains if no wildcards (shouldn't happen normally)\n transformedFilter = {\n operator: 'contains',\n value: stringValue\n };\n }\n }\n\n return {\n ...filterRest,\n ...transformedFilter,\n // We don't have type information, so leave it undefined\n // The UI will need to infer or set these based on column definitions\n _type: undefined,\n _dataType: undefined\n } as InternalFilter;\n });\n\n return {\n ...rest,\n filters: internalFilters\n };\n}\n\nexport function getDefaultTableQuery(\n defaultSort: DataTableSort,\n oldQuery: DataTableQuery = {}\n): InternalQuery {\n // Convert DataTableQuery to InternalQuery\n const internalQuery = dataTableQueryToInternal(oldQuery);\n\n return {\n sort: [defaultSort],\n group_by: [defaultGroupOption.id],\n ...internalQuery\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../components/data-table/utils/index.tsx"],"sourcesContent":["import { TableState } from '@tanstack/table-core';\nimport dayjs from 'dayjs';\n\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport {\n DataTableColumnDef,\n DataTableQuery,\n DataTableSort,\n defaultGroupOption,\n GroupedData,\n InternalFilter,\n InternalQuery,\n SortOrders\n} from '../data-table.types';\nimport {\n getFilterFn,\n getFilterOperator,\n getFilterValue\n} from './filter-operations';\n\nexport function queryToTableState(query: InternalQuery): Partial<TableState> {\n const columnFilters =\n query.filters\n ?.filter(data => {\n if (data._type === FilterType.date) return dayjs(data.value).isValid();\n if (data.value !== '') return true;\n return false;\n })\n ?.map(data => {\n const valueObject =\n data._type === FilterType.date\n ? { date: data.value }\n : { value: data.value };\n return {\n value: valueObject,\n id: data?.name\n };\n }) || [];\n\n const sorting = query.sort?.map(data => ({\n id: data?.name,\n desc: data?.order === SortOrders.DESC\n }));\n return {\n columnFilters: columnFilters,\n sorting: sorting,\n globalFilter: query.search\n };\n}\n\nexport function getColumnsWithFilterFn<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = [],\n filters: InternalFilter[] = []\n): DataTableColumnDef<TData, TValue>[] {\n return columns.map(column => {\n const colFilter = filters?.find(\n filter => filter.name === column.accessorKey\n );\n const filterFn = colFilter?.operator\n ? getFilterFn(column.filterType || FilterType.string, colFilter.operator)\n : undefined;\n\n return {\n ...column,\n filterFn\n };\n });\n}\n\nexport function groupData<TData>(\n data: TData[],\n group_by?: string,\n columns: DataTableColumnDef<TData, any>[] = []\n): GroupedData<TData>[] {\n if (!data) return [];\n if (!group_by || group_by === defaultGroupOption.id)\n return data as GroupedData<TData>[];\n\n const groupMap = new Map<string, TData[]>();\n data.forEach((currentData: TData) => {\n const item = currentData as Record<string, string>;\n const keyValue = item[group_by];\n if (!groupMap.has(keyValue)) {\n groupMap.set(keyValue, []);\n }\n groupMap.get(keyValue)?.push(item as TData);\n });\n\n const columnDef = columns.find(col => col.accessorKey === group_by);\n const showGroupCount = columnDef?.showGroupCount || false;\n const groupLablesMap = columnDef?.groupLabelsMap || {};\n const groupCountMap = columnDef?.groupCountMap || {};\n const groupedData: GroupedData<TData>[] = [];\n\n groupMap.forEach((value, key) => {\n groupedData.push({\n label: groupLablesMap[key] || key,\n group_key: key,\n subRows: value,\n count: groupCountMap[key] ?? value.length,\n showGroupCount\n });\n });\n\n return groupedData;\n}\n\nconst generateFilterMap = (\n filters: InternalFilter[] = []\n): Map<string, any> => {\n return new Map(\n filters\n ?.filter(data => data._type === FilterType.select || data.value !== '')\n .map(({ name, operator, value }) => [`${name}-${operator}`, value])\n );\n};\n\nconst generateSortMap = (sort: DataTableSort[] = []): Map<string, string> => {\n return new Map(sort.map(({ name, order }) => [name, order]));\n};\n\nconst isFilterChanged = (\n oldFilters: InternalFilter[] = [],\n newFilters: InternalFilter[] = []\n): boolean => {\n const oldFilterMap = generateFilterMap(oldFilters);\n const newFilterMap = generateFilterMap(newFilters);\n\n if (oldFilterMap.size !== newFilterMap.size) return true;\n\n return [...newFilterMap].some(\n ([key, value]) => oldFilterMap.get(key) !== value\n );\n};\n\nconst isSortChanged = (\n oldSort: DataTableSort[] = [],\n newSort: DataTableSort[] = []\n): boolean => {\n if (oldSort.length !== newSort.length) return true;\n\n const oldSortMap = generateSortMap(oldSort);\n const newSortMap = generateSortMap(newSort);\n\n return [...newSortMap].some(([key, order]) => oldSortMap.get(key) !== order);\n};\n\nconst isGroupChanged = (\n oldGroupBy: string[] = [],\n newGroupBy: string[] = []\n): boolean => {\n if (oldGroupBy.length !== newGroupBy.length) return true;\n\n const oldGroupSet = new Set(oldGroupBy);\n return newGroupBy.some(item => !oldGroupSet.has(item));\n};\n\nconst isSearchChanged = (oldSearch?: string, newSearch?: string): boolean => {\n return oldSearch !== newSearch;\n};\n\nexport const hasQueryChanged = (\n oldQuery: InternalQuery | null,\n newQuery: InternalQuery\n): boolean => {\n if (!oldQuery) return true;\n return (\n isFilterChanged(oldQuery.filters, newQuery.filters) ||\n isSortChanged(oldQuery.sort, newQuery.sort) ||\n isGroupChanged(oldQuery.group_by, newQuery.group_by) ||\n isSearchChanged(oldQuery.search, newQuery.search)\n );\n};\n\nexport function getInitialColumnVisibility<TData, TValue>(\n columns: DataTableColumnDef<TData, TValue>[] = []\n): Record<string, boolean> | {} {\n return columns.reduce((acc, col) => {\n return {\n ...acc,\n [col.accessorKey]: col.defaultHidden ? false : true\n };\n }, {});\n}\n\nexport function transformToDataTableQuery(\n query: InternalQuery\n): DataTableQuery {\n const { group_by = [], filters = [], sort = [], ...rest } = query;\n const sanitizedGroupBy = group_by?.filter(\n key => key !== defaultGroupOption.id\n );\n\n const sanitizedFilters =\n filters\n ?.filter(data => {\n if (data._type === FilterType.select) return true;\n if (data._type === FilterType.date) return dayjs(data.value).isValid();\n if (data.value !== '') return true;\n return false;\n })\n ?.map(data => ({\n name: data.name,\n operator: getFilterOperator({\n operator: data.operator,\n value: data.value,\n filterType: data._type\n }),\n ...getFilterValue({\n value: data.value,\n filterType: data._type,\n dataType: data._dataType,\n operator: data.operator\n })\n })) || [];\n\n return {\n ...rest,\n sort: sort,\n group_by: sanitizedGroupBy,\n filters: sanitizedFilters\n };\n}\n\n// Transform DataTableQuery to InternalQuery\n// This reverses the transformation done by transformToDataTableQuery\nexport function dataTableQueryToInternal(query: DataTableQuery): InternalQuery {\n const { filters, ...rest } = query;\n\n if (!filters) {\n return rest;\n }\n\n // Convert DataTableFilter[] to InternalFilter[]\n const internalFilters: InternalFilter[] = filters.map(filter => {\n const {\n operator,\n value,\n stringValue,\n numberValue,\n boolValue,\n ...filterRest\n } = filter;\n\n // Reverse the operator mapping and wildcard transformation\n let transformedFilter = {\n operator: operator as FilterOperatorTypes,\n value: value,\n ...(stringValue !== undefined && { stringValue }),\n ...(numberValue !== undefined && { numberValue }),\n ...(boolValue !== undefined && { boolValue })\n };\n\n // If operator is 'ilike', determine the original operator based on wildcards\n if (operator === 'ilike' && stringValue) {\n if (stringValue.startsWith('%') && stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'contains',\n value: stringValue.slice(1, -1) // Remove % from both ends\n };\n } else if (stringValue.endsWith('%')) {\n transformedFilter = {\n operator: 'starts_with',\n value: stringValue.slice(0, -1) // Remove % from end\n };\n } else if (stringValue.startsWith('%')) {\n transformedFilter = {\n operator: 'ends_with',\n value: stringValue.slice(1) // Remove % from start\n };\n } else {\n // Default to contains if no wildcards (shouldn't happen normally)\n transformedFilter = {\n operator: 'contains',\n value: stringValue\n };\n }\n }\n\n return {\n ...filterRest,\n ...transformedFilter,\n // We don't have type information, so leave it undefined\n // The UI will need to infer or set these based on column definitions\n _type: undefined,\n _dataType: undefined\n } as InternalFilter;\n });\n\n return {\n ...rest,\n filters: internalFilters\n };\n}\n\nexport function getDefaultTableQuery(\n defaultSort: DataTableSort,\n oldQuery: DataTableQuery = {}\n): InternalQuery {\n // Convert DataTableQuery to InternalQuery\n const internalQuery = dataTableQueryToInternal(oldQuery);\n\n return {\n sort: [defaultSort],\n group_by: [defaultGroupOption.id],\n ...internalQuery\n };\n}\n"],"names":[],"mappings":"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"}
|