@vuu-ui/vuu-utils 0.13.38 → 0.13.40

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.
@@ -140,8 +140,8 @@ const convertValueToUIFormat = (column, value) => {
140
140
  }
141
141
  };
142
142
  const buildBetweenQueryString = (column, range) => {
143
- const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}` : void 0;
144
- const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}` : void 0;
143
+ const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} > ${convertValueToServerFormat(column, range[0])}` : void 0;
144
+ const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} < ${convertValueToServerFormat(column, range[1])}` : void 0;
145
145
  if (lowerRange === void 0) return lowerRange;
146
146
  if (upperRange === void 0) return lowerRange;
147
147
  return `${lowerRange} and ${upperRange}`;
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","EventEmitter","getTypedValue","isValidTimeString","Time","isDateTimeDataValue","isTimeDataValue","asTimeString","toCalendarDate","parseFilter","f","toColumnDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\n//TODO extend this to support <= and >=\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} > ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} < ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","EventEmitter","getTypedValue","isValidTimeString","Time","isDateTimeDataValue","isTimeDataValue","asTimeString","toCalendarDate","parseFilter","f","toColumnDescriptor"],"mappings":"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"}
@@ -138,8 +138,8 @@ const convertValueToUIFormat = (column, value) => {
138
138
  }
139
139
  };
140
140
  const buildBetweenQueryString = (column, range) => {
141
- const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}` : void 0;
142
- const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}` : void 0;
141
+ const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} > ${convertValueToServerFormat(column, range[0])}` : void 0;
142
+ const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} < ${convertValueToServerFormat(column, range[1])}` : void 0;
143
143
  if (lowerRange === void 0) return lowerRange;
144
144
  if (upperRange === void 0) return lowerRange;
145
145
  return `${lowerRange} and ${upperRange}`;
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","f"],"mappings":";;;;;;;;;;;;;;AAAA,IAAA,QAAA,EAAA,QAAA,EAAAA,WAAAC,SAAA,EAAA,OAAA;AAoCA,MAAM,oBAAA,uBAA2B,GAA+B,CAAA;AAAA,EAC9D,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC,CAAA;AAEM,MAAM,wBAAwB,CAAC,EAAA,KACpC,OAAO,IAAQ,IAAA,oBAAA,CAAqB,IAAI,EAA+B;AAElE,MAAM,gBAAgB,CAAC,CAAA,KAC5B,CAAM,KAAA,KAAA,CAAA,IAAa,EAAE,IAAS,KAAA,KAAA;AAGnB,MAAA,mBAAA,GAAsB,CACjC,CAEA,KAAA,CAAA,KAAM,UACN,oBAAqB,CAAA,GAAA,CAAI,EAAE,EAA+B;AAE/C,MAAA,cAAA,GAAiB,CAC5B,CAEA,KAAA,CAAA,KAAM,WAAc,mBAAoB,CAAA,CAAC,CAAK,IAAA,kBAAA,CAAmB,CAAC,CAAA;AAE7D,MAAM,qBAAqB,CAChC,CAAA,KACgC,CAAM,KAAA,KAAA,CAAA,IAAa,EAAE,EAAO,KAAA;AAEvD,MAAM,UAAa,GAAA,CAAC,CACzB,KAAA,CAAA,CAAE,EAAO,KAAA;AACJ,MAAM,WAAc,GAAA,CAAC,CAC1B,KAAA,CAAA,CAAE,EAAO,KAAA;AACJ,MAAM,UAAa,GAAA,CAAC,CAAsC,KAAA,CAAA,CAAE,EAAO,KAAA;AAEnE,MAAM,gBAAmB,GAAA,CAAC,MAC/B,KAAA,mBAAA,CAAoB,MAAM,CAAA,IAC1B,MAAO,CAAA,MAAA,KAAW,KAClB,CAAA,IAAA,MAAA,CAAO,EAAO,KAAA,KAAA,CAAA,IACd,OAAO,KAAU,KAAA,KAAA;AAEZ,SAAS,oBACd,CACwB,EAAA;AACxB,EAAA,OAAO,MAAM,KAAc,CAAA,KAAA,CAAA,CAAE,EAAO,KAAA,KAAA,IAAS,EAAE,EAAO,KAAA,IAAA,CAAA;AACxD;AAEa,MAAA,oBAAA,GAAuB,CAClC,OACA,EAAA,EAAE,cAEF,KAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AAEtB,EAAA,MAAM,MAAS,GAAA,sBAAA,CAAuB,YAAc,EAAA,MAAA,CAAO,IAAI,CAAA;AAC/D,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH;AAAA,KACF;AAAA,GACF,MAAA,IAAW,OAAO,MAAQ,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,MAAQ,EAAA,KAAA;AAAA,KACV;AAAA,GACK,MAAA;AACL,IAAO,OAAA,MAAA;AAAA;AAEX,CAAC;AAEI,MAAM,gBAAmB,GAAA,CAAC,MAC/B,KAAA,MAAA,CAAO,MAAW,KAAA,KAAA;AAEb,MAAM,yBAAyB,CAAC,OAAA,KACrC,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AACnB,EAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAS,GAAA,GAAA;AAC5B,EAAA,OAAO,SAAS,IAAO,GAAA,GAAA;AACzB,CAAC;AAEU,MAAA,sBAAA,GAAyB,CACpC,MAAA,EACA,UACG,KAAA;AACH,EAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,IAAO,OAAA,uBAAA,CAAwB,QAAQ,UAAU,CAAA;AAAA;AAEnD,EAAI,IAAA,cAAA,CAAe,MAAM,CAAG,EAAA;AAC1B,IAAO,OAAA,MAAA,CAAO,MAAW,KAAA,UAAA,GAAa,MAAS,GAAA,KAAA,CAAA;AAAA;AAEjD,EAAO,OAAA,KAAA,CAAA;AACT;AAEA,MAAM,uBAAA,GAA0B,CAC9B,MAAA,EACA,UACG,KAAA;AACH,EAAM,MAAA,EAAE,OAAS,EAAA,EAAA,EAAO,GAAA,MAAA;AACxB,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAQ,OAAA,CAAA,OAAA,CAAQ,CAACC,OAAW,KAAA;AAC1B,IAAM,MAAA,GAAA,GAAM,sBAAuBA,CAAAA,OAAAA,EAAQ,UAAU,CAAA;AACrD,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA;AAClB,GACD,CAAA;AACD,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,IAAA,OAAO,QAAQ,CAAC,CAAA;AAAA;AAElB,EAAO,OAAA;AAAA,IACL,EAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACX;AACF,CAAA;AAMA,MAAM,kBAAqB,GAAA,CAAC,MAAgB,EAAA,KAAA,KAC1C,OAAO,KAAU,KAAA,QAAA,GACb,CAAG,EAAA,MAAM,cAAc,KAAK,CAAA,CAAA,CAAA,GAC5B,CAAG,EAAA,MAAM,MAAM,KAAK,CAAA,CAAA;AAEnB,MAAM,yBAAyB,YAA2B,CAAA;AAAA,EAA1D,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,sBAAe,GAA8B,EAAA,CAAA;AAC7C,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,sBAAe,GAAgC,EAAA,CAAA;AAAA;AAAA,EAE/C,SAAA,CAAU,QAA0B,KAAwB,EAAA;AAC1D,IAAA,YAAA,CAAA,IAAA,EAAK,QAAS,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,MAAM,CAAA;AACrC,IAAM,MAAA,EAAE,cAAiB,GAAA,QAAA,EAAa,GAAA,MAAA;AACtC,IAAA,MAAM,aAAa,aAAc,CAAA,KAAA,CAAM,QAAS,EAAA,EAAG,gBAAgB,IAAI,CAAA;AAEvE,IAAA,YAAA,CAAA,IAAA,EAAK,QAAS,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,UAAU,CAAA;AAAA;AAE3C,EAEA,aAAa,MAA0B,EAAA;AACrC,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,GAAI,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AAClC,MAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAO,OAAA,IAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,KAAA;AAAA;AACT;AACF,EAEA,IAAI,MAAoB,GAAA;AACtB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA;AACtB,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAO,OAAA,EAAE,QAAQ,EAAG,EAAA;AAAA,KACf,MAAA;AACL,MAAO,OAAA;AAAA,QACL,QAAQ,KAAM,CAAA,IAAA,CAAK,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,SAAS,CAAA,CACvC,GAAI,CAAA,CAAC,SAAS,kBAAmB,CAAA,GAAG,IAAI,CAAC,CAAA,CACzC,KAAK,OAAO;AAAA,OACjB;AAAA;AACF;AAEJ;AAlCE,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;AAmCF,MAAM,0BAAA,GAA6B,CACjC,MAAA,EACA,KAC6B,KAAA;AAC7B,EAAI,IAAA,iBAAA,CAAkB,KAAK,CAAG,EAAA;AAC5B,IAAA,OAAO,IAAK,CAAA,KAAmB,CAC5B,CAAA,MAAA,GACA,OAAQ,EAAA;AAAA,GACb,MAAA,IAAW,mBAAoB,CAAA,MAAM,CAAG,EAAA;AACtC,IAAA,OAAO,IAAI,IAAA,CAAK,KAAe,CAAA,CAAE,OAAQ,EAAA;AAAA;AAE3C,EAAO,OAAA,KAAA;AACT,CAAA;AAEA,MAAM,sBAAA,GAAyB,CAC7B,MAAA,EACA,KACsB,KAAA;AACtB,EAAI,IAAA,eAAA,CAAgB,MAAM,CAAG,EAAA;AAC3B,IAAO,OAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,GAClC,MAAA,IAAW,mBAAoB,CAAA,MAAM,CAAG,EAAA;AACtC,IAAA,OAAO,eAAe,IAAI,IAAA,CAAK,KAAe,CAAC,EAAE,QAAS,EAAA;AAAA,GACrD,MAAA;AACL,IAAO,OAAA,KAAA;AAAA;AAEX,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAAC,MAAA,EAA0B,KAAoB,KAAA;AAC7E,EAAM,MAAA,UAAA,GACJ,MAAM,CAAC,CAAA,KAAM,UAAa,KAAM,CAAA,CAAC,EAAE,MAAS,GAAA,CAAA,GACxC,GAAG,MAAO,CAAA,IAAI,OAAO,0BAA2B,CAAA,MAAA,EAAQ,MAAM,CAAC,CAAC,CAAC,CACjE,CAAA,GAAA,KAAA,CAAA;AAEN,EAAM,MAAA,UAAA,GACJ,MAAM,CAAC,CAAA,KAAM,UAAa,KAAM,CAAA,CAAC,EAAE,MAAS,GAAA,CAAA,GACxC,GAAG,MAAO,CAAA,IAAI,OAAO,0BAA2B,CAAA,MAAA,EAAQ,MAAM,CAAC,CAAC,CAAC,CACjE,CAAA,GAAA,KAAA,CAAA;AAEN,EAAI,IAAA,UAAA,KAAe,QAAkB,OAAA,UAAA;AACrC,EAAI,IAAA,UAAA,KAAe,QAAkB,OAAA,UAAA;AACrC,EAAO,OAAA,CAAA,EAAG,UAAU,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA;AACxC,CAAA;AAGO,MAAM,uBAA0B,GAAA,CACrC,MACA,EAAA,EAAA,EACA,KACG,KAAA;AACH,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,uBAAA,CAAwB,QAAQ,KAAK,CAAA;AAAA;AAE9C,EAAO,OAAA,OAAO,KAAU,KAAA,QAAA,IAAY,CAAC,iBAAA,CAAkB,KAAK,CACxD,GAAA,CAAA,EAAG,MAAO,CAAA,IAAI,CAAI,CAAA,EAAA,EAAE,KAAK,KAAK,CAAA,CAAA,CAAA,GAC9B,CAAG,EAAA,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,EAAE,CAAI,CAAA,EAAA,0BAAA,CAA2B,MAAQ,EAAA,KAAK,CAAC,CAAA,CAAA;AACvE;AAKO,MAAM,0BAA0B,YAAsC,CAAA;AAAA,EAK3E,WAAA,CACE,QAAmB,EAAE,MAAA,EAAQ,IAC7B,EAAA,iBAAA,GAAwC,EACxC,EAAA;AACA,IAAM,KAAA,EAAA;AARR,IAAAF,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,sBAAe,GAA8B,EAAA,CAAA;AAC7C,IAAAC,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,sBAAe,GAAoC,EAAA,CAAA;AACnD,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,sBAAc,GAA+B,EAAA,CAAA;AAO3C,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAA,IAAA,CAAK,sBAAsB,iBAAiB,CAAA;AAAA;AAC9C,EAEQ,sBAAsB,iBAAuC,EAAA;AACnE,IAAkB,iBAAA,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AACxC,MAAA,YAAA,CAAA,IAAA,EAAKD,SAAS,CAAA,CAAA,GAAA,CAAI,UAAW,CAAA,IAAA,EAAM,UAAU,CAAA;AAAA,KAC9C,CAAA;AAAA;AACH,EAEA,SAAA,CACE,MACA,EAAA,EAAA,EACA,KACA,EAAA;AACA,IAAA,IAAI,CAAC,YAAKA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAI,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AACnC,MAAA,YAAA,CAAA,IAAA,EAAKA,SAAS,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,MAAM,CAAA;AAAA;AAGvC,IAAM,MAAA,EAAE,cAAiB,GAAA,QAAA,EAAa,GAAA,MAAA;AACtC,IAAA,MAAM,UAAa,GAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,IAClC,KACC,GAAA,aAAA;AAAA,MACC,MAAM,QAAS,EAAA;AAAA,MACf,cAAA;AAAA,MACA;AAAA,KACF;AAEJ,IAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,UAAU,CAAA;AACxC,IAAKC,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAI,CAAA,MAAA,CAAO,IAAM,EAAA;AAAA,MAC7B,MAAA;AAAA,MACA,EAAA;AAAA,MACA,WAAa,EAAA;AAAA,KACd,CAAA;AACD,IAAK,IAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACnC,EAEA,aAAa,MAA0B,EAAA;AACrC,IAAA,IAAI,YAAKD,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAI,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AAClC,MAAKA,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAKC,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAK,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAC/B,MAAK,IAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA;AACjC,MAAO,OAAA,IAAA;AAAA,KACF,MAAA;AACL,MAAK,IAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA;AACjC,MAAO,OAAA,KAAA;AAAA;AACT;AACF,EAEA,YAAe,GAAA;AACb,IAAA,YAAA,CAAA,IAAA,EAAKD,WAAS,KAAM,EAAA;AACpB,IAAA,YAAA,CAAA,IAAA,EAAKC,WAAS,KAAM,EAAA;AACpB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAQ,KAAM,EAAA;AACnB,IAAK,IAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACnC,EAEA,IAAI,YAA+C,GAAA;AACjD,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AACd,EAEA,IAAI,MAAoB,GAAA;AACtB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,YAAKA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA;AACtB,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAO,OAAA,EAAE,QAAQ,EAAG,EAAA;AAAA,KACf,MAAA;AACL,MAAA,MAAM,MAAS,GAAA,KAAA,CAAM,IAAK,CAAA,YAAA,CAAA,IAAA,EAAKA,SAAS,CAAA,CAAA,OAAA,EAAS,CAAA,CAC9C,GAAI,CAAA,CAAC,CAAC,MAAA,EAAQ,UAAU,CAAM,KAAA;AAC7B,QAAA,MAAM,gBAAmB,GAAA,YAAA,CAAA,IAAA,EAAKD,SAAS,CAAA,CAAA,GAAA,CAAI,MAAM,CAAA;AACjD,QAAI,IAAA,gBAAA;AACF,UAAO,OAAA,uBAAA;AAAA,YACL,gBAAA;AAAA,YACA,UAAW,CAAA,EAAA;AAAA,YACX,UAAW,CAAA;AAAA,WACb;AAAA,OACH,CACA,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,UAAU,KAAS,CAAA,CAAA;AACxC,MAAO,OAAA;AAAA,QACL,QAAQ,MAAO,CAAA,IAAA,CAAK,OAAO,MAAS,GAAA,CAAA,GAAI,UAAU,EAAE;AAAA,OACtD;AAAA;AACF;AACF,EAEA,IAAI,OAAO,KAAkB,EAAA;AAC3B,IAAA,YAAA,CAAA,IAAA,EAAKA,WAAS,KAAM,EAAA;AACpB,IAAA,YAAA,CAAA,IAAA,EAAKC,WAAS,KAAM,EAAA;AACpB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAQ,KAAM,EAAA;AAEnB,IAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,MAAM,MAAA,CAAA,GAAI,WAAY,CAAA,KAAA,CAAM,MAAM,CAAA;AAElC,MAAM,MAAA,UAAA,GAAa,CAACE,EAAc,KAAA;AAChC,QAAA,IAAIA,GAAE,MAAQ,EAAA;AACZ,UAAM,MAAA,uBAAA,GAA0B,kBAAmBA,CAAAA,EAAAA,CAAE,MAAM,CAAA;AAC3D,UAAA,IAAI,CAAC,YAAKH,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAIG,CAAAA,EAAAA,CAAE,MAAM,CAAG,EAAA;AAChC,YAAA,YAAA,CAAA,IAAA,EAAKH,SAAS,CAAA,CAAA,GAAA,CAAIG,EAAE,CAAA,MAAA,EAAQ,uBAAuB,CAAA;AAAA;AAErD,UAAA,MAAM,mBACJ,YAAKH,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAIG,CAAAA,EAAAA,CAAE,MAAM,CAAK,IAAA,uBAAA;AAEjC,UAAA,MAAM,QAAW,GAAA,YAAA,CAAA,IAAA,EAAKF,SAAS,CAAA,CAAA,GAAA,CAAIE,GAAE,MAAM,CAAA;AAC3C,UAAI,IAAA,mBAAA,CAAoBA,EAAC,CAAG,EAAA;AAC1B,YAAA,MAAM,IAAI,QACN,GAAA;AAAA,cACE,QAAS,CAAA,WAAA;AAAA,cACT,sBAAA,CAAuB,gBAAkBA,EAAAA,EAAAA,CAAE,KAAe;AAAA,aAE5D,GAAA,sBAAA;AAAA,cACE,gBAAA;AAAA,cACAA,EAAE,CAAA;AAAA,aACJ;AAEJ,YAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAIA,EAAE,CAAA,MAAA,EAAQ,CAAsB,CAAA;AACjD,YAAKF,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAS,GAAIE,CAAAA,EAAAA,CAAE,MAAQ,EAAA;AAAA,cAC1B,MAAQ,EAAA,gBAAA;AAAA,cACR,IAAIA,EAAE,CAAA,EAAA;AAAA,cACN,WAAa,EAAA;AAAA,aACd,CAAA;AAAA;AACH;AACF,OACF;AAEA,MAAI,IAAA,mBAAA,CAAoB,CAAC,CAAG,EAAA;AAC1B,QAAA,CAAA,CAAE,QAAQ,OAAQ,CAAA,CAACA,EAAM,KAAA,UAAA,CAAWA,EAAC,CAAC,CAAA;AAAA,OACxC,MAAA,IAAW,cAAe,CAAA,CAAC,CAAG,EAAA;AAC5B,QAAA,UAAA,CAAW,CAAC,CAAA;AAAA;AACd;AACF;AAEJ;AA1IEH,SAAA,GAAA,IAAA,OAAA,EAAA;AACAC,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
1
+ {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\n//TODO extend this to support <= and >=\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} > ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} < ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","f"],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
- "version": "0.13.38",
2
+ "version": "0.13.40",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "types": "types/index.d.ts",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "0.13.38",
8
- "@vuu-ui/vuu-table-types": "0.13.38",
9
- "@vuu-ui/vuu-filter-types": "0.13.38",
10
- "@vuu-ui/vuu-protocol-types": "0.13.38"
7
+ "@vuu-ui/vuu-data-types": "0.13.40",
8
+ "@vuu-ui/vuu-table-types": "0.13.40",
9
+ "@vuu-ui/vuu-filter-types": "0.13.40",
10
+ "@vuu-ui/vuu-protocol-types": "0.13.40"
11
11
  },
12
12
  "peerDependencies": {
13
13
  "@internationalized/date": "^3.0.0",
14
- "@vuu-ui/vuu-filter-parser": "0.13.38",
14
+ "@vuu-ui/vuu-filter-parser": "0.13.40",
15
15
  "clsx": "^2.0.0",
16
16
  "react": "^19.1.0",
17
17
  "react-dom": "^19.1.0"