@vuu-ui/vuu-filter-parser 0.13.116 → 0.13.117

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.
@@ -111,7 +111,11 @@ const testDataRowInclude = (filter) => {
111
111
  return (row) => filter.values.indexOf(row[filter.column]) !== -1;
112
112
  };
113
113
  const testEQ = (columnMap, filter) => {
114
- return (row) => row[columnMap[filter.column]] === filter.value;
114
+ if (vuuUtils.isScaledDecimalFilterClause(filter)) {
115
+ return (row) => row[columnMap[filter.column]] === filter.value.asLong;
116
+ } else {
117
+ return (row) => row[columnMap[filter.column]] === filter.value;
118
+ }
115
119
  };
116
120
  const testDataRowEQ = (filter) => {
117
121
  return (row) => row[filter.column] === filter.value;
@@ -1 +1 @@
1
- {"version":3,"file":"filter-evaluation-utils.js","sources":["../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n Filter,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap, isFilter } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\nimport { VuuDataRow } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataRow } from \"@vuu-ui/vuu-table-types\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst dataRowFilterPredicateMap = new Map<string, DataRowFilterPredicate>();\nconst filterReject = () => false;\n\nexport type FilterPredicate = (row: DataSourceRow | VuuDataRow) => boolean;\nexport type DataRowFilterPredicate = (row: DataRow) => boolean;\n\nexport function getFilterPredicate(\n columnMap: ColumnMap,\n filterQuery: string,\n): FilterPredicate;\nexport function getFilterPredicate(filterQuery: string): DataRowFilterPredicate;\nexport function getFilterPredicate(\n columnMapOrFilter: ColumnMap | string,\n filterQuery?: string,\n): FilterPredicate | DataRowFilterPredicate {\n if (typeof columnMapOrFilter === \"string\") {\n let predicate = dataRowFilterPredicateMap.get(columnMapOrFilter);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(columnMapOrFilter);\n predicate = filterPredicate(filter);\n dataRowFilterPredicateMap.set(columnMapOrFilter, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else if (filterQuery) {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMapOrFilter, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else {\n throw Error(`[getFilterPredicate] invalid params`);\n }\n}\n\n/**\n * Generates a filterPredicate that can be used to test a row against a filter\n * Two row formats supported:\n * - DataRow, used by Tables, when evaluatingn a Menu filter.\n * - DataSourceRow, used by local data source, like ArrayDataSOurce\n */\n\n// prettier-ignore\nexport function filterPredicate(columnMap: ColumnMap,filter: Filter): FilterPredicate;\nexport function filterPredicate(filter: Filter): DataRowFilterPredicate;\nexport function filterPredicate(\n columnMapOrFilter: ColumnMap | Filter,\n filter?: Filter,\n): FilterPredicate | DataRowFilterPredicate {\n if (isFilter(columnMapOrFilter)) {\n switch (columnMapOrFilter.op) {\n case \"in\":\n return testDataRowInclude(columnMapOrFilter);\n case \"=\":\n return testDataRowEQ(columnMapOrFilter);\n case \">\":\n return testDataRowGT(columnMapOrFilter);\n case \">=\":\n return testDataRowGE(columnMapOrFilter);\n case \"<\":\n return testDataRowLT(columnMapOrFilter);\n case \"<=\":\n return testDataRowLE(columnMapOrFilter);\n case \"ends\":\n return testDataRowEW(columnMapOrFilter);\n case \"starts\":\n return testDataRowSW(columnMapOrFilter);\n case \"contains\":\n return testDataRowContains(columnMapOrFilter);\n case \"and\":\n return testDataRowAND(columnMapOrFilter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testDataRowOR(columnMapOrFilter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${columnMapOrFilter.op}`);\n return () => true;\n }\n } else if (filter) {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMapOrFilter, filter);\n case \"=\":\n return testEQ(columnMapOrFilter, filter);\n case \">\":\n return testGT(columnMapOrFilter, filter);\n case \">=\":\n return testGE(columnMapOrFilter, filter);\n case \"<\":\n return testLT(columnMapOrFilter, filter);\n case \"<=\":\n return testLE(columnMapOrFilter, filter);\n case \"ends\":\n return testEW(columnMapOrFilter, filter);\n case \"starts\":\n return testSW(columnMapOrFilter, filter);\n case \"contains\":\n return testContains(columnMapOrFilter, filter);\n case \"and\":\n return testAND(columnMapOrFilter, filter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testOR(columnMapOrFilter, filter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n } else {\n throw Error(`[filterPredicate] invalid params`);\n }\n}\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause,\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testDataRowInclude = (\n filter: MultiValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[filter.column]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testDataRowEQ = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\n\nconst testDataRowGT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] > filter.value;\n};\n\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testDataRowGE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\n\nconst testDataRowLT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] < filter.value;\n};\n\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testDataRowLE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowEW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowSW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testContains = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowContains = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"and\">,\n): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nconst testDataRowAND = (\n filter: MultiClauseFilter<\"and\">,\n): DataRowFilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"or\">,\n): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n\nfunction testDataRowOR(\n filter: MultiClauseFilter<\"or\">,\n): DataRowFilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],"names":["parseFilter","isFilter"],"mappings":"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"}
1
+ {"version":3,"file":"filter-evaluation-utils.js","sources":["../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n Filter,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnMap,\n isFilter,\n isScaledDecimalFilterClause,\n ScaledDecimal,\n} from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\nimport { VuuDataRow } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataRow } from \"@vuu-ui/vuu-table-types\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst dataRowFilterPredicateMap = new Map<string, DataRowFilterPredicate>();\nconst filterReject = () => false;\n\nexport type FilterPredicate = (row: DataSourceRow | VuuDataRow) => boolean;\nexport type DataRowFilterPredicate = (row: DataRow) => boolean;\n\nexport function getFilterPredicate(\n columnMap: ColumnMap,\n filterQuery: string,\n): FilterPredicate;\nexport function getFilterPredicate(filterQuery: string): DataRowFilterPredicate;\nexport function getFilterPredicate(\n columnMapOrFilter: ColumnMap | string,\n filterQuery?: string,\n): FilterPredicate | DataRowFilterPredicate {\n if (typeof columnMapOrFilter === \"string\") {\n let predicate = dataRowFilterPredicateMap.get(columnMapOrFilter);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(columnMapOrFilter);\n predicate = filterPredicate(filter);\n dataRowFilterPredicateMap.set(columnMapOrFilter, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else if (filterQuery) {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMapOrFilter, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else {\n throw Error(`[getFilterPredicate] invalid params`);\n }\n}\n\n/**\n * Generates a filterPredicate that can be used to test a row against a filter\n * Two row formats supported:\n * - DataRow, used by Tables, when evaluatingn a Menu filter.\n * - DataSourceRow, used by local data source, like ArrayDataSOurce\n */\n\n// prettier-ignore\nexport function filterPredicate(columnMap: ColumnMap,filter: Filter): FilterPredicate;\nexport function filterPredicate(filter: Filter): DataRowFilterPredicate;\nexport function filterPredicate(\n columnMapOrFilter: ColumnMap | Filter,\n filter?: Filter,\n): FilterPredicate | DataRowFilterPredicate {\n if (isFilter(columnMapOrFilter)) {\n switch (columnMapOrFilter.op) {\n case \"in\":\n return testDataRowInclude(columnMapOrFilter);\n case \"=\":\n return testDataRowEQ(columnMapOrFilter);\n case \">\":\n return testDataRowGT(columnMapOrFilter);\n case \">=\":\n return testDataRowGE(columnMapOrFilter);\n case \"<\":\n return testDataRowLT(columnMapOrFilter);\n case \"<=\":\n return testDataRowLE(columnMapOrFilter);\n case \"ends\":\n return testDataRowEW(columnMapOrFilter);\n case \"starts\":\n return testDataRowSW(columnMapOrFilter);\n case \"contains\":\n return testDataRowContains(columnMapOrFilter);\n case \"and\":\n return testDataRowAND(columnMapOrFilter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testDataRowOR(columnMapOrFilter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${columnMapOrFilter.op}`);\n return () => true;\n }\n } else if (filter) {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMapOrFilter, filter);\n case \"=\":\n return testEQ(columnMapOrFilter, filter);\n case \">\":\n return testGT(columnMapOrFilter, filter);\n case \">=\":\n return testGE(columnMapOrFilter, filter);\n case \"<\":\n return testLT(columnMapOrFilter, filter);\n case \"<=\":\n return testLE(columnMapOrFilter, filter);\n case \"ends\":\n return testEW(columnMapOrFilter, filter);\n case \"starts\":\n return testSW(columnMapOrFilter, filter);\n case \"contains\":\n return testContains(columnMapOrFilter, filter);\n case \"and\":\n return testAND(columnMapOrFilter, filter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testOR(columnMapOrFilter, filter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n } else {\n throw Error(`[filterPredicate] invalid params`);\n }\n}\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause,\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testDataRowInclude = (\n filter: MultiValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[filter.column]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n if (isScaledDecimalFilterClause(filter)) {\n return (row) => row[columnMap[filter.column]] === filter.value.asLong;\n } else {\n return (row) => row[columnMap[filter.column]] === filter.value;\n }\n};\n\nconst testDataRowEQ = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\n\nconst testDataRowGT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] > filter.value;\n};\n\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testDataRowGE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\n\nconst testDataRowLT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] < filter.value;\n};\n\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testDataRowLE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowEW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowSW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testContains = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowContains = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"and\">,\n): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nconst testDataRowAND = (\n filter: MultiClauseFilter<\"and\">,\n): DataRowFilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"or\">,\n): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n\nfunction testDataRowOR(\n filter: MultiClauseFilter<\"or\">,\n): DataRowFilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],"names":["parseFilter","isFilter","isScaledDecimalFilterClause"],"mappings":"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"}
@@ -11,7 +11,7 @@ const parser = lr.LRParser.deserialize({
11
11
  maxTerm: 40,
12
12
  skippedNodes: [0],
13
13
  repeatNodeCount: 1,
14
- tokenData: ";q~RpXY#VYZ#V]^#Vpq#Vqr#hrs#sxy$kyz$p|}$u!O!P$z!Q![%Y!^!_%e!_!`%j!`!a%o!c!}%t!}#O&]#P#Q&b#R#S%t#T#U&g#U#V%t#V#W(}#W#X%t#X#Y-x#Y#Z0^#Z#]%t#]#^3^#^#c%t#c#d4f#d#g%t#g#h5n#h#i9]#i#o%t~#[Sp~XY#VYZ#V]^#Vpq#V~#kP!_!`#n~#sOU~~#vWOX#sZ]#s^r#srs$`s#O#s#P;'S#s;'S;=`$e<%lO#s~$eO]~~$hP;=`<%l#s~$pOw~~$uOx~~$zOd~~$}P!Q![%Q~%VP[~!Q![%Q~%_Q[~!O!P$z!Q![%Y~%jOW~~%oOT~~%tOV~P%yUtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t~&bOb~~&gOe~R&lYtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c'[#c#g%t#g#h(d#h#o%tR'aWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X'y#X#o%tR(QUgQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR(kUkQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR)SWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#c%t#c#d)l#d#o%tR)qWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c*Z#c#o%tR*`WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i*x#i#o%tR*}VtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U+d#U#o%tR+iWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#]%t#]#^,R#^#o%tR,WWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c,p#c#o%tR,uWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h-_#h#o%tR-fUZQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR-}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c.g#c#o%tR.lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X/U#X#o%tR/ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h/s#h#o%tR/zUYQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR0cVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U0x#U#o%tR0}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#`%t#`#a1g#a#o%tR1lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h2U#h#o%tR2ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y2s#Y#o%tR2zU_QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR3cWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c3{#c#o%tR4SUaQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR4kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g5T#g#o%tR5[UiQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR5sWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i6]#i#o%tR6bVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U6w#U#o%tR6|WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g7f#g#o%tR7kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i8T#i#o%tR8YWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h8r#h#o%tR8yUXQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR9bWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g9z#g#o%tR:PWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#i%t#i#j:i#j#o%tR:nWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y;W#Y#o%tR;_U^QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t",
14
+ tokenData: ";}~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`%v!`!a%{!c!}&Q!}#O&i#P#Q&n#R#S&Q#T#U&s#U#V&Q#V#W)Z#W#X&Q#X#Y.U#Y#Z0j#Z#]&Q#]#^3j#^#c&Q#c#d4r#d#g&Q#g#h5z#h#i9i#i#o&Q~#_Sp~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO]~~$kP;=`<%l#v~$sOw~~$xOx~~$}Od~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP[~!Q![%^~%kQ[~!O!P%W!Q![%f~%vOW~~%{OT~~&QOV~P&VUtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q~&nOb~~&sOe~R&xYtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c'h#c#g&Q#g#h(p#h#o&QR'mWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X(V#X#o&QR(^UgQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR(wUkQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR)`WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#c&Q#c#d)x#d#o&QR)}WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c*g#c#o&QR*lWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i+U#i#o&QR+ZVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U+p#U#o&QR+uWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#]&Q#]#^,_#^#o&QR,dWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c,|#c#o&QR-RWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h-k#h#o&QR-rUZQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR.ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c.s#c#o&QR.xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X/b#X#o&QR/gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h0P#h#o&QR0WUYQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR0oVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U1U#U#o&QR1ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#`&Q#`#a1s#a#o&QR1xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h2b#h#o&QR2gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y3P#Y#o&QR3WU_QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR3oWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c4X#c#o&QR4`UaQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR4wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g5a#g#o&QR5hUiQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR6PWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i6i#i#o&QR6nVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U7T#U#o&QR7YWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g7r#g#o&QR7wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i8a#i#o&QR8fWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h9O#h#o&QR9VUXQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR9nWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g:W#g#o&QR:]WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#i&Q#i#j:u#j#o&QR:zWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y;d#Y#o&QR;kU^QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q",
15
15
  tokenizers: [0, 1],
16
16
  topRules: { "Filter": [0, 1] },
17
17
  tokenPrec: 0
@@ -1 +1 @@
1
- {"version":3,"file":"filter-parser.js","sources":["../../../../packages/vuu-filter-parser/src/generated/filter-parser.js"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DP'#DPOyQQO'#C}OOQO'#DS'#DSOVQPO'#CvOOQO'#DO'#DOQOQPOOOOQO'#C`'#C`O!XQQO,58xO!gQPO,59WOVQPO,59^OVQPO,59`O!lQPO,59iO!qQQO,59bOOQO'#DR'#DROOQO1G.d1G.dO!XQQO1G.rO!|QQO1G.xOOQO1G.z1G.zOOQO'#Cx'#CxOOQO1G/T1G/TOOQO1G.|1G.|O#_QPO'#CoO#gQPO7+$^O!XQQO'#CyO#lQPO,59ZOOQO<<Gx<<GxOOQO,59e,59eOOQO-E6w-E6w\",\n stateData: \"#t~OpOS~OtPOwUO~OTXOUXOVXOWXOXXOYXOZXOaZO~Og[Oi]Ok^OnqX~O[`O]`O^`O_`O~ObbO~OteO~Og[Oi]OxgO~Oi]Ogfikfinfixfi~OdjOecX~OelO~OdjOeca~O\",\n goto: \"#ZwPPx!O!UPPPPPPPPPPPxPP!XPP![P![P!bP!h!kPPP!q!t!bP#Q!bXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 40,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \";q~RpXY#VYZ#V]^#Vpq#Vqr#hrs#sxy$kyz$p|}$u!O!P$z!Q![%Y!^!_%e!_!`%j!`!a%o!c!}%t!}#O&]#P#Q&b#R#S%t#T#U&g#U#V%t#V#W(}#W#X%t#X#Y-x#Y#Z0^#Z#]%t#]#^3^#^#c%t#c#d4f#d#g%t#g#h5n#h#i9]#i#o%t~#[Sp~XY#VYZ#V]^#Vpq#V~#kP!_!`#n~#sOU~~#vWOX#sZ]#s^r#srs$`s#O#s#P;'S#s;'S;=`$e<%lO#s~$eO]~~$hP;=`<%l#s~$pOw~~$uOx~~$zOd~~$}P!Q![%Q~%VP[~!Q![%Q~%_Q[~!O!P$z!Q![%Y~%jOW~~%oOT~~%tOV~P%yUtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t~&bOb~~&gOe~R&lYtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c'[#c#g%t#g#h(d#h#o%tR'aWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X'y#X#o%tR(QUgQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR(kUkQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR)SWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#c%t#c#d)l#d#o%tR)qWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c*Z#c#o%tR*`WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i*x#i#o%tR*}VtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U+d#U#o%tR+iWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#]%t#]#^,R#^#o%tR,WWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c,p#c#o%tR,uWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h-_#h#o%tR-fUZQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR-}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c.g#c#o%tR.lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X/U#X#o%tR/ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h/s#h#o%tR/zUYQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR0cVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U0x#U#o%tR0}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#`%t#`#a1g#a#o%tR1lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h2U#h#o%tR2ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y2s#Y#o%tR2zU_QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR3cWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c3{#c#o%tR4SUaQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR4kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g5T#g#o%tR5[UiQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR5sWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i6]#i#o%tR6bVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U6w#U#o%tR6|WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g7f#g#o%tR7kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i8T#i#o%tR8YWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h8r#h#o%tR8yUXQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR9bWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g9z#g#o%tR:PWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#i%t#i#j:i#j#o%tR:nWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y;W#Y#o%tR;_U^QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n"],"names":["LRParser"],"mappings":";;;;AAEa,MAAA,MAAA,GAASA,YAAS,WAAY,CAAA;AAAA,EACzC,OAAS,EAAA,EAAA;AAAA,EACT,MAAQ,EAAA,yUAAA;AAAA,EACR,SAAW,EAAA,oIAAA;AAAA,EACX,IAAM,EAAA,wHAAA;AAAA,EACN,SAAW,EAAA,4OAAA;AAAA,EACX,OAAS,EAAA,EAAA;AAAA,EACT,YAAA,EAAc,CAAC,CAAC,CAAA;AAAA,EAChB,eAAiB,EAAA,CAAA;AAAA,EACjB,SAAW,EAAA,2nEAAA;AAAA,EACX,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACjB,UAAU,EAAC,QAAA,EAAS,CAAC,CAAA,EAAE,CAAC,CAAC,EAAA;AAAA,EACzB,SAAW,EAAA;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"filter-parser.js","sources":["../../../../packages/vuu-filter-parser/src/generated/filter-parser.js"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DP'#DPOyQQO'#C}OOQO'#DS'#DSOVQPO'#CvOOQO'#DO'#DOQOQPOOOOQO'#C`'#C`O!XQQO,58xO!gQPO,59WOVQPO,59^OVQPO,59`O!lQPO,59iO!qQQO,59bOOQO'#DR'#DROOQO1G.d1G.dO!XQQO1G.rO!|QQO1G.xOOQO1G.z1G.zOOQO'#Cx'#CxOOQO1G/T1G/TOOQO1G.|1G.|O#_QPO'#CoO#gQPO7+$^O!XQQO'#CyO#lQPO,59ZOOQO<<Gx<<GxOOQO,59e,59eOOQO-E6w-E6w\",\n stateData: \"#t~OpOS~OtPOwUO~OTXOUXOVXOWXOXXOYXOZXOaZO~Og[Oi]Ok^OnqX~O[`O]`O^`O_`O~ObbO~OteO~Og[Oi]OxgO~Oi]Ogfikfinfixfi~OdjOecX~OelO~OdjOeca~O\",\n goto: \"#ZwPPx!O!UPPPPPPPPPPPxPP!XPP![P![P!bP!h!kPPP!q!t!bP#Q!bXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 40,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \";}~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`%v!`!a%{!c!}&Q!}#O&i#P#Q&n#R#S&Q#T#U&s#U#V&Q#V#W)Z#W#X&Q#X#Y.U#Y#Z0j#Z#]&Q#]#^3j#^#c&Q#c#d4r#d#g&Q#g#h5z#h#i9i#i#o&Q~#_Sp~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO]~~$kP;=`<%l#v~$sOw~~$xOx~~$}Od~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP[~!Q![%^~%kQ[~!O!P%W!Q![%f~%vOW~~%{OT~~&QOV~P&VUtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q~&nOb~~&sOe~R&xYtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c'h#c#g&Q#g#h(p#h#o&QR'mWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X(V#X#o&QR(^UgQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR(wUkQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR)`WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#c&Q#c#d)x#d#o&QR)}WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c*g#c#o&QR*lWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i+U#i#o&QR+ZVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U+p#U#o&QR+uWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#]&Q#]#^,_#^#o&QR,dWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c,|#c#o&QR-RWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h-k#h#o&QR-rUZQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR.ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c.s#c#o&QR.xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X/b#X#o&QR/gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h0P#h#o&QR0WUYQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR0oVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U1U#U#o&QR1ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#`&Q#`#a1s#a#o&QR1xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h2b#h#o&QR2gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y3P#Y#o&QR3WU_QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR3oWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c4X#c#o&QR4`UaQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR4wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g5a#g#o&QR5hUiQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR6PWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i6i#i#o&QR6nVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U7T#U#o&QR7YWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g7r#g#o&QR7wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i8a#i#o&QR8fWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h9O#h#o&QR9VUXQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR9nWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g:W#g#o&QR:]WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#i&Q#i#j:u#j#o&QR:zWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y;d#Y#o&QR;kU^QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n"],"names":["LRParser"],"mappings":";;;;AAEa,MAAA,MAAA,GAASA,YAAS,WAAY,CAAA;AAAA,EACzC,OAAS,EAAA,EAAA;AAAA,EACT,MAAQ,EAAA,yUAAA;AAAA,EACR,SAAW,EAAA,oIAAA;AAAA,EACX,IAAM,EAAA,wHAAA;AAAA,EACN,SAAW,EAAA,4OAAA;AAAA,EACX,OAAS,EAAA,EAAA;AAAA,EACT,YAAA,EAAc,CAAC,CAAC,CAAA;AAAA,EAChB,eAAiB,EAAA,CAAA;AAAA,EACjB,SAAW,EAAA,gpEAAA;AAAA,EACX,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACjB,UAAU,EAAC,QAAA,EAAS,CAAC,CAAA,EAAE,CAAC,CAAC,EAAA;AAAA,EACzB,SAAW,EAAA;AACb,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { isFilter } from '@vuu-ui/vuu-utils';
1
+ import { isFilter, isScaledDecimalFilterClause } from '@vuu-ui/vuu-utils';
2
2
  import { parseFilter } from './FilterParser.js';
3
3
 
4
4
  const filterPredicateMap = /* @__PURE__ */ new Map();
@@ -109,7 +109,11 @@ const testDataRowInclude = (filter) => {
109
109
  return (row) => filter.values.indexOf(row[filter.column]) !== -1;
110
110
  };
111
111
  const testEQ = (columnMap, filter) => {
112
- return (row) => row[columnMap[filter.column]] === filter.value;
112
+ if (isScaledDecimalFilterClause(filter)) {
113
+ return (row) => row[columnMap[filter.column]] === filter.value.asLong;
114
+ } else {
115
+ return (row) => row[columnMap[filter.column]] === filter.value;
116
+ }
113
117
  };
114
118
  const testDataRowEQ = (filter) => {
115
119
  return (row) => row[filter.column] === filter.value;
@@ -1 +1 @@
1
- {"version":3,"file":"filter-evaluation-utils.js","sources":["../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n Filter,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap, isFilter } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\nimport { VuuDataRow } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataRow } from \"@vuu-ui/vuu-table-types\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst dataRowFilterPredicateMap = new Map<string, DataRowFilterPredicate>();\nconst filterReject = () => false;\n\nexport type FilterPredicate = (row: DataSourceRow | VuuDataRow) => boolean;\nexport type DataRowFilterPredicate = (row: DataRow) => boolean;\n\nexport function getFilterPredicate(\n columnMap: ColumnMap,\n filterQuery: string,\n): FilterPredicate;\nexport function getFilterPredicate(filterQuery: string): DataRowFilterPredicate;\nexport function getFilterPredicate(\n columnMapOrFilter: ColumnMap | string,\n filterQuery?: string,\n): FilterPredicate | DataRowFilterPredicate {\n if (typeof columnMapOrFilter === \"string\") {\n let predicate = dataRowFilterPredicateMap.get(columnMapOrFilter);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(columnMapOrFilter);\n predicate = filterPredicate(filter);\n dataRowFilterPredicateMap.set(columnMapOrFilter, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else if (filterQuery) {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMapOrFilter, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else {\n throw Error(`[getFilterPredicate] invalid params`);\n }\n}\n\n/**\n * Generates a filterPredicate that can be used to test a row against a filter\n * Two row formats supported:\n * - DataRow, used by Tables, when evaluatingn a Menu filter.\n * - DataSourceRow, used by local data source, like ArrayDataSOurce\n */\n\n// prettier-ignore\nexport function filterPredicate(columnMap: ColumnMap,filter: Filter): FilterPredicate;\nexport function filterPredicate(filter: Filter): DataRowFilterPredicate;\nexport function filterPredicate(\n columnMapOrFilter: ColumnMap | Filter,\n filter?: Filter,\n): FilterPredicate | DataRowFilterPredicate {\n if (isFilter(columnMapOrFilter)) {\n switch (columnMapOrFilter.op) {\n case \"in\":\n return testDataRowInclude(columnMapOrFilter);\n case \"=\":\n return testDataRowEQ(columnMapOrFilter);\n case \">\":\n return testDataRowGT(columnMapOrFilter);\n case \">=\":\n return testDataRowGE(columnMapOrFilter);\n case \"<\":\n return testDataRowLT(columnMapOrFilter);\n case \"<=\":\n return testDataRowLE(columnMapOrFilter);\n case \"ends\":\n return testDataRowEW(columnMapOrFilter);\n case \"starts\":\n return testDataRowSW(columnMapOrFilter);\n case \"contains\":\n return testDataRowContains(columnMapOrFilter);\n case \"and\":\n return testDataRowAND(columnMapOrFilter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testDataRowOR(columnMapOrFilter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${columnMapOrFilter.op}`);\n return () => true;\n }\n } else if (filter) {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMapOrFilter, filter);\n case \"=\":\n return testEQ(columnMapOrFilter, filter);\n case \">\":\n return testGT(columnMapOrFilter, filter);\n case \">=\":\n return testGE(columnMapOrFilter, filter);\n case \"<\":\n return testLT(columnMapOrFilter, filter);\n case \"<=\":\n return testLE(columnMapOrFilter, filter);\n case \"ends\":\n return testEW(columnMapOrFilter, filter);\n case \"starts\":\n return testSW(columnMapOrFilter, filter);\n case \"contains\":\n return testContains(columnMapOrFilter, filter);\n case \"and\":\n return testAND(columnMapOrFilter, filter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testOR(columnMapOrFilter, filter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n } else {\n throw Error(`[filterPredicate] invalid params`);\n }\n}\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause,\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testDataRowInclude = (\n filter: MultiValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[filter.column]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testDataRowEQ = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\n\nconst testDataRowGT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] > filter.value;\n};\n\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testDataRowGE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\n\nconst testDataRowLT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] < filter.value;\n};\n\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testDataRowLE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowEW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowSW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testContains = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowContains = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"and\">,\n): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nconst testDataRowAND = (\n filter: MultiClauseFilter<\"and\">,\n): DataRowFilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"or\">,\n): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n\nfunction testDataRowOR(\n filter: MultiClauseFilter<\"or\">,\n): DataRowFilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],"names":[],"mappings":";;;AAYA,MAAM,kBAAA,uBAAyB,GAA6B,EAAA;AAC5D,MAAM,yBAAA,uBAAgC,GAAoC,EAAA;AAC1E,MAAM,eAAe,MAAM,KAAA;AAUX,SAAA,kBAAA,CACd,mBACA,WAC0C,EAAA;AAC1C,EAAI,IAAA,OAAO,sBAAsB,QAAU,EAAA;AACzC,IAAI,IAAA,SAAA,GAAY,yBAA0B,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAC/D,IAAA,IAAI,SAAW,EAAA;AACb,MAAO,OAAA,SAAA;AAAA;AAGT,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,GAAS,YAAY,iBAAiB,CAAA;AAC5C,MAAA,SAAA,GAAY,gBAAgB,MAAM,CAAA;AAClC,MAA0B,yBAAA,CAAA,GAAA,CAAI,mBAAmB,SAAS,CAAA;AAC1D,MAAO,OAAA,SAAA;AAAA,aACA,GAAK,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,oDAAoD,WAAW,CAAA,CAAA;AAAA,OACjE;AACA,MAAO,OAAA,YAAA;AAAA;AACT,aACS,WAAa,EAAA;AACtB,IAAI,IAAA,SAAA,GAAY,kBAAmB,CAAA,GAAA,CAAI,WAAW,CAAA;AAClD,IAAA,IAAI,SAAW,EAAA;AACb,MAAO,OAAA,SAAA;AAAA;AAGT,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,GAAS,YAAY,WAAW,CAAA;AACtC,MAAY,SAAA,GAAA,eAAA,CAAgB,mBAAmB,MAAM,CAAA;AACrD,MAAmB,kBAAA,CAAA,GAAA,CAAI,aAAa,SAAS,CAAA;AAC7C,MAAO,OAAA,SAAA;AAAA,aACA,GAAK,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,oDAAoD,WAAW,CAAA,CAAA;AAAA,OACjE;AACA,MAAO,OAAA,YAAA;AAAA;AACT,GACK,MAAA;AACL,IAAA,MAAM,MAAM,CAAqC,mCAAA,CAAA,CAAA;AAAA;AAErD;AAYgB,SAAA,eAAA,CACd,mBACA,MAC0C,EAAA;AAC1C,EAAI,IAAA,QAAA,CAAS,iBAAiB,CAAG,EAAA;AAC/B,IAAA,QAAQ,kBAAkB,EAAI;AAAA,MAC5B,KAAK,IAAA;AACH,QAAA,OAAO,mBAAmB,iBAAiB,CAAA;AAAA,MAC7C,KAAK,GAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,GAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,IAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,GAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,IAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,MAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,QAAA;AACH,QAAA,OAAO,cAAc,iBAAiB,CAAA;AAAA,MACxC,KAAK,UAAA;AACH,QAAA,OAAO,oBAAoB,iBAAiB,CAAA;AAAA,MAC9C,KAAK,KAAA;AACH,QAAA,OAAO,eAAe,iBAA6C,CAAA;AAAA,MACrE,KAAK,IAAA;AACH,QAAA,OAAO,cAAc,iBAA4C,CAAA;AAAA,MACnE;AACE,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,yBAAA,EAA4B,iBAAkB,CAAA,EAAE,CAAE,CAAA,CAAA;AAC9D,QAAA,OAAO,MAAM,IAAA;AAAA;AACjB,aACS,MAAQ,EAAA;AAEjB,IAAA,QAAQ,OAAO,EAAI;AAAA,MACjB,KAAK,IAAA;AACH,QAAO,OAAA,WAAA,CAAY,mBAAmB,MAAM,CAAA;AAAA,MAC9C,KAAK,GAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,GAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,IAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,GAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,IAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,MAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,QAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAM,CAAA;AAAA,MACzC,KAAK,UAAA;AACH,QAAO,OAAA,YAAA,CAAa,mBAAmB,MAAM,CAAA;AAAA,MAC/C,KAAK,KAAA;AACH,QAAO,OAAA,OAAA,CAAQ,mBAAmB,MAAkC,CAAA;AAAA,MACtE,KAAK,IAAA;AACH,QAAO,OAAA,MAAA,CAAO,mBAAmB,MAAiC,CAAA;AAAA,MACpE;AACE,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,yBAAA,EAA4B,MAAO,CAAA,EAAE,CAAE,CAAA,CAAA;AACnD,QAAA,OAAO,MAAM,IAAA;AAAA;AACjB,GACK,MAAA;AACL,IAAA,MAAM,MAAM,CAAkC,gCAAA,CAAA,CAAA;AAAA;AAElD;AAEA,MAAM,WAAA,GAAc,CAClB,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,GACL,KAAA,MAAA,CAAO,MAAqB,CAAA,OAAA,CAAQ,GAAI,CAAA,SAAA,CAAU,MAAO,CAAA,MAAM,CAAC,CAAC,CAAM,KAAA,CAAA,CAAA;AAC5E,CAAA;AAEA,MAAM,kBAAA,GAAqB,CACzB,MAC2B,KAAA;AAC3B,EAAO,OAAA,CAAC,QACL,MAAO,CAAA,MAAA,CAAqB,QAAQ,GAAI,CAAA,MAAA,CAAO,MAAM,CAAC,CAAM,KAAA,CAAA,CAAA;AACjE,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,QAAQ,GAAI,CAAA,SAAA,CAAU,OAAO,MAAM,CAAC,MAAM,MAAO,CAAA,KAAA;AAC3D,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,OAAO,CAAC,GAAQ,KAAA,GAAA,CAAI,MAAO,CAAA,MAAM,MAAM,MAAO,CAAA,KAAA;AAChD,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,QAAQ,GAAI,CAAA,SAAA,CAAU,OAAO,MAAM,CAAC,IAAI,MAAO,CAAA,KAAA;AACzD,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,OAAO,CAAC,GAAQ,KAAA,GAAA,CAAI,MAAO,CAAA,MAAM,IAAI,MAAO,CAAA,KAAA;AAC9C,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,QAAQ,GAAI,CAAA,SAAA,CAAU,OAAO,MAAM,CAAC,KAAK,MAAO,CAAA,KAAA;AAC1D,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,OAAO,CAAC,GAAQ,KAAA,GAAA,CAAI,MAAO,CAAA,MAAM,KAAK,MAAO,CAAA,KAAA;AAC/C,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,QAAQ,GAAI,CAAA,SAAA,CAAU,OAAO,MAAM,CAAC,IAAI,MAAO,CAAA,KAAA;AACzD,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,OAAO,CAAC,GAAQ,KAAA,GAAA,CAAI,MAAO,CAAA,MAAM,IAAI,MAAO,CAAA,KAAA;AAC9C,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAO,OAAA,CAAC,QAAQ,GAAI,CAAA,SAAA,CAAU,OAAO,MAAM,CAAC,KAAK,MAAO,CAAA,KAAA;AAC1D,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,OAAO,CAAC,GAAQ,KAAA,GAAA,CAAI,MAAO,CAAA,MAAM,KAAK,MAAO,CAAA,KAAA;AAC/C,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAA,MAAM,QAAW,GAAA,GAAA,CAAI,SAAU,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA;AAC7C,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,QAAS,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GAClE;AACF,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAM,MAAA,QAAA,GAAW,GAAI,CAAA,MAAA,CAAO,MAAM,CAAA;AAClC,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,QAAS,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GAClE;AACF,CAAA;AAEA,MAAM,MAAA,GAAS,CACb,SAAA,EACA,MACoB,KAAA;AACpB,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAA,MAAM,QAAW,GAAA,GAAA,CAAI,SAAU,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA;AAC7C,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,UAAW,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GACpE;AACF,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAC2B,KAAA;AAC3B,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAM,MAAA,QAAA,GAAW,GAAI,CAAA,MAAA,CAAO,MAAM,CAAA;AAClC,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,UAAW,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GACpE;AACF,CAAA;AAEA,MAAM,YAAA,GAAe,CACnB,SAAA,EACA,MACoB,KAAA;AACpB,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAA,MAAM,QAAW,GAAA,GAAA,CAAI,SAAU,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA;AAC7C,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,QAAS,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GAClE;AACF,CAAA;AAEA,MAAM,mBAAA,GAAsB,CAC1B,MAC2B,KAAA;AAC3B,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA;AAC3B,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,EAAA,OAAO,CAAC,GAAQ,KAAA;AACd,IAAM,MAAA,QAAA,GAAW,GAAI,CAAA,MAAA,CAAO,MAAM,CAAA;AAClC,IAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,MAAA,MAAM,MAAM,8CAA8C,CAAA;AAAA;AAE5D,IAAA,OAAO,SAAS,WAAY,EAAA,CAAE,QAAS,CAAA,WAAA,CAAY,aAAa,CAAA;AAAA,GAClE;AACF,CAAA;AAEA,MAAM,OAAA,GAAU,CACd,SAAA,EACA,MACoB,KAAA;AACpB,EAAM,MAAA,OAAA,GAAU,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAO,KAAA,eAAA,CAAgB,SAAW,EAAA,EAAE,CAAC,CAAA;AACzE,EAAO,OAAA,CAAC,QAAQ,OAAQ,CAAA,KAAA,CAAM,CAAC,EAAO,KAAA,EAAA,CAAG,GAAG,CAAC,CAAA;AAC/C,CAAA;AAEA,MAAM,cAAA,GAAiB,CACrB,MAC2B,KAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAO,KAAA,eAAA,CAAgB,EAAE,CAAC,CAAA;AAC9D,EAAO,OAAA,CAAC,QAAQ,OAAQ,CAAA,KAAA,CAAM,CAAC,EAAO,KAAA,EAAA,CAAG,GAAG,CAAC,CAAA;AAC/C,CAAA;AAEA,SAAS,MAAA,CACP,WACA,MACiB,EAAA;AACjB,EAAM,MAAA,OAAA,GAAU,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAO,KAAA,eAAA,CAAgB,SAAW,EAAA,EAAE,CAAC,CAAA;AACzE,EAAO,OAAA,CAAC,QAAQ,OAAQ,CAAA,IAAA,CAAK,CAAC,EAAO,KAAA,EAAA,CAAG,GAAG,CAAC,CAAA;AAC9C;AAEA,SAAS,cACP,MACwB,EAAA;AACxB,EAAM,MAAA,OAAA,GAAU,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAO,KAAA,eAAA,CAAgB,EAAE,CAAC,CAAA;AAC9D,EAAO,OAAA,CAAC,QAAQ,OAAQ,CAAA,IAAA,CAAK,CAAC,EAAO,KAAA,EAAA,CAAG,GAAG,CAAC,CAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"filter-evaluation-utils.js","sources":["../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n Filter,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnMap,\n isFilter,\n isScaledDecimalFilterClause,\n ScaledDecimal,\n} from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\nimport { VuuDataRow } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataRow } from \"@vuu-ui/vuu-table-types\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst dataRowFilterPredicateMap = new Map<string, DataRowFilterPredicate>();\nconst filterReject = () => false;\n\nexport type FilterPredicate = (row: DataSourceRow | VuuDataRow) => boolean;\nexport type DataRowFilterPredicate = (row: DataRow) => boolean;\n\nexport function getFilterPredicate(\n columnMap: ColumnMap,\n filterQuery: string,\n): FilterPredicate;\nexport function getFilterPredicate(filterQuery: string): DataRowFilterPredicate;\nexport function getFilterPredicate(\n columnMapOrFilter: ColumnMap | string,\n filterQuery?: string,\n): FilterPredicate | DataRowFilterPredicate {\n if (typeof columnMapOrFilter === \"string\") {\n let predicate = dataRowFilterPredicateMap.get(columnMapOrFilter);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(columnMapOrFilter);\n predicate = filterPredicate(filter);\n dataRowFilterPredicateMap.set(columnMapOrFilter, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else if (filterQuery) {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMapOrFilter, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`,\n );\n return filterReject;\n }\n } else {\n throw Error(`[getFilterPredicate] invalid params`);\n }\n}\n\n/**\n * Generates a filterPredicate that can be used to test a row against a filter\n * Two row formats supported:\n * - DataRow, used by Tables, when evaluatingn a Menu filter.\n * - DataSourceRow, used by local data source, like ArrayDataSOurce\n */\n\n// prettier-ignore\nexport function filterPredicate(columnMap: ColumnMap,filter: Filter): FilterPredicate;\nexport function filterPredicate(filter: Filter): DataRowFilterPredicate;\nexport function filterPredicate(\n columnMapOrFilter: ColumnMap | Filter,\n filter?: Filter,\n): FilterPredicate | DataRowFilterPredicate {\n if (isFilter(columnMapOrFilter)) {\n switch (columnMapOrFilter.op) {\n case \"in\":\n return testDataRowInclude(columnMapOrFilter);\n case \"=\":\n return testDataRowEQ(columnMapOrFilter);\n case \">\":\n return testDataRowGT(columnMapOrFilter);\n case \">=\":\n return testDataRowGE(columnMapOrFilter);\n case \"<\":\n return testDataRowLT(columnMapOrFilter);\n case \"<=\":\n return testDataRowLE(columnMapOrFilter);\n case \"ends\":\n return testDataRowEW(columnMapOrFilter);\n case \"starts\":\n return testDataRowSW(columnMapOrFilter);\n case \"contains\":\n return testDataRowContains(columnMapOrFilter);\n case \"and\":\n return testDataRowAND(columnMapOrFilter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testDataRowOR(columnMapOrFilter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${columnMapOrFilter.op}`);\n return () => true;\n }\n } else if (filter) {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMapOrFilter, filter);\n case \"=\":\n return testEQ(columnMapOrFilter, filter);\n case \">\":\n return testGT(columnMapOrFilter, filter);\n case \">=\":\n return testGE(columnMapOrFilter, filter);\n case \"<\":\n return testLT(columnMapOrFilter, filter);\n case \"<=\":\n return testLE(columnMapOrFilter, filter);\n case \"ends\":\n return testEW(columnMapOrFilter, filter);\n case \"starts\":\n return testSW(columnMapOrFilter, filter);\n case \"contains\":\n return testContains(columnMapOrFilter, filter);\n case \"and\":\n return testAND(columnMapOrFilter, filter as MultiClauseFilter<\"and\">);\n case \"or\":\n return testOR(columnMapOrFilter, filter as MultiClauseFilter<\"or\">);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n } else {\n throw Error(`[filterPredicate] invalid params`);\n }\n}\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause,\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testDataRowInclude = (\n filter: MultiValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[filter.column]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n if (isScaledDecimalFilterClause(filter)) {\n return (row) => row[columnMap[filter.column]] === filter.value.asLong;\n } else {\n return (row) => row[columnMap[filter.column]] === filter.value;\n }\n};\n\nconst testDataRowEQ = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\n\nconst testDataRowGT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] > filter.value;\n};\n\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testDataRowGE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\n\nconst testDataRowLT = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] < filter.value;\n};\n\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testDataRowLE = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n return (row) => row[filter.column] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowEW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowSW = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testContains = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause,\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testDataRowContains = (\n filter: SingleValueFilterClause,\n): DataRowFilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[filter.column];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().includes(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"and\">,\n): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nconst testDataRowAND = (\n filter: MultiClauseFilter<\"and\">,\n): DataRowFilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(\n columnMap: ColumnMap,\n filter: MultiClauseFilter<\"or\">,\n): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n\nfunction testDataRowOR(\n filter: MultiClauseFilter<\"or\">,\n): DataRowFilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ const parser = LRParser.deserialize({
9
9
  maxTerm: 40,
10
10
  skippedNodes: [0],
11
11
  repeatNodeCount: 1,
12
- tokenData: ";q~RpXY#VYZ#V]^#Vpq#Vqr#hrs#sxy$kyz$p|}$u!O!P$z!Q![%Y!^!_%e!_!`%j!`!a%o!c!}%t!}#O&]#P#Q&b#R#S%t#T#U&g#U#V%t#V#W(}#W#X%t#X#Y-x#Y#Z0^#Z#]%t#]#^3^#^#c%t#c#d4f#d#g%t#g#h5n#h#i9]#i#o%t~#[Sp~XY#VYZ#V]^#Vpq#V~#kP!_!`#n~#sOU~~#vWOX#sZ]#s^r#srs$`s#O#s#P;'S#s;'S;=`$e<%lO#s~$eO]~~$hP;=`<%l#s~$pOw~~$uOx~~$zOd~~$}P!Q![%Q~%VP[~!Q![%Q~%_Q[~!O!P$z!Q![%Y~%jOW~~%oOT~~%tOV~P%yUtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t~&bOb~~&gOe~R&lYtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c'[#c#g%t#g#h(d#h#o%tR'aWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X'y#X#o%tR(QUgQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR(kUkQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR)SWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#c%t#c#d)l#d#o%tR)qWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c*Z#c#o%tR*`WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i*x#i#o%tR*}VtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U+d#U#o%tR+iWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#]%t#]#^,R#^#o%tR,WWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c,p#c#o%tR,uWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h-_#h#o%tR-fUZQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR-}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c.g#c#o%tR.lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X/U#X#o%tR/ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h/s#h#o%tR/zUYQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR0cVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U0x#U#o%tR0}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#`%t#`#a1g#a#o%tR1lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h2U#h#o%tR2ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y2s#Y#o%tR2zU_QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR3cWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c3{#c#o%tR4SUaQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR4kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g5T#g#o%tR5[UiQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR5sWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i6]#i#o%tR6bVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U6w#U#o%tR6|WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g7f#g#o%tR7kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i8T#i#o%tR8YWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h8r#h#o%tR8yUXQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR9bWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g9z#g#o%tR:PWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#i%t#i#j:i#j#o%tR:nWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y;W#Y#o%tR;_U^QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t",
12
+ tokenData: ";}~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`%v!`!a%{!c!}&Q!}#O&i#P#Q&n#R#S&Q#T#U&s#U#V&Q#V#W)Z#W#X&Q#X#Y.U#Y#Z0j#Z#]&Q#]#^3j#^#c&Q#c#d4r#d#g&Q#g#h5z#h#i9i#i#o&Q~#_Sp~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO]~~$kP;=`<%l#v~$sOw~~$xOx~~$}Od~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP[~!Q![%^~%kQ[~!O!P%W!Q![%f~%vOW~~%{OT~~&QOV~P&VUtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q~&nOb~~&sOe~R&xYtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c'h#c#g&Q#g#h(p#h#o&QR'mWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X(V#X#o&QR(^UgQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR(wUkQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR)`WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#c&Q#c#d)x#d#o&QR)}WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c*g#c#o&QR*lWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i+U#i#o&QR+ZVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U+p#U#o&QR+uWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#]&Q#]#^,_#^#o&QR,dWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c,|#c#o&QR-RWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h-k#h#o&QR-rUZQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR.ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c.s#c#o&QR.xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X/b#X#o&QR/gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h0P#h#o&QR0WUYQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR0oVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U1U#U#o&QR1ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#`&Q#`#a1s#a#o&QR1xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h2b#h#o&QR2gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y3P#Y#o&QR3WU_QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR3oWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c4X#c#o&QR4`UaQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR4wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g5a#g#o&QR5hUiQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR6PWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i6i#i#o&QR6nVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U7T#U#o&QR7YWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g7r#g#o&QR7wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i8a#i#o&QR8fWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h9O#h#o&QR9VUXQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR9nWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g:W#g#o&QR:]WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#i&Q#i#j:u#j#o&QR:zWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y;d#Y#o&QR;kU^QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q",
13
13
  tokenizers: [0, 1],
14
14
  topRules: { "Filter": [0, 1] },
15
15
  tokenPrec: 0
@@ -1 +1 @@
1
- {"version":3,"file":"filter-parser.js","sources":["../../../../packages/vuu-filter-parser/src/generated/filter-parser.js"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DP'#DPOyQQO'#C}OOQO'#DS'#DSOVQPO'#CvOOQO'#DO'#DOQOQPOOOOQO'#C`'#C`O!XQQO,58xO!gQPO,59WOVQPO,59^OVQPO,59`O!lQPO,59iO!qQQO,59bOOQO'#DR'#DROOQO1G.d1G.dO!XQQO1G.rO!|QQO1G.xOOQO1G.z1G.zOOQO'#Cx'#CxOOQO1G/T1G/TOOQO1G.|1G.|O#_QPO'#CoO#gQPO7+$^O!XQQO'#CyO#lQPO,59ZOOQO<<Gx<<GxOOQO,59e,59eOOQO-E6w-E6w\",\n stateData: \"#t~OpOS~OtPOwUO~OTXOUXOVXOWXOXXOYXOZXOaZO~Og[Oi]Ok^OnqX~O[`O]`O^`O_`O~ObbO~OteO~Og[Oi]OxgO~Oi]Ogfikfinfixfi~OdjOecX~OelO~OdjOeca~O\",\n goto: \"#ZwPPx!O!UPPPPPPPPPPPxPP!XPP![P![P!bP!h!kPPP!q!t!bP#Q!bXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 40,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \";q~RpXY#VYZ#V]^#Vpq#Vqr#hrs#sxy$kyz$p|}$u!O!P$z!Q![%Y!^!_%e!_!`%j!`!a%o!c!}%t!}#O&]#P#Q&b#R#S%t#T#U&g#U#V%t#V#W(}#W#X%t#X#Y-x#Y#Z0^#Z#]%t#]#^3^#^#c%t#c#d4f#d#g%t#g#h5n#h#i9]#i#o%t~#[Sp~XY#VYZ#V]^#Vpq#V~#kP!_!`#n~#sOU~~#vWOX#sZ]#s^r#srs$`s#O#s#P;'S#s;'S;=`$e<%lO#s~$eO]~~$hP;=`<%l#s~$pOw~~$uOx~~$zOd~~$}P!Q![%Q~%VP[~!Q![%Q~%_Q[~!O!P$z!Q![%Y~%jOW~~%oOT~~%tOV~P%yUtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t~&bOb~~&gOe~R&lYtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c'[#c#g%t#g#h(d#h#o%tR'aWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X'y#X#o%tR(QUgQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR(kUkQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR)SWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#c%t#c#d)l#d#o%tR)qWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c*Z#c#o%tR*`WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i*x#i#o%tR*}VtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U+d#U#o%tR+iWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#]%t#]#^,R#^#o%tR,WWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c,p#c#o%tR,uWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h-_#h#o%tR-fUZQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR-}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c.g#c#o%tR.lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#W%t#W#X/U#X#o%tR/ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h/s#h#o%tR/zUYQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR0cVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U0x#U#o%tR0}WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#`%t#`#a1g#a#o%tR1lWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h2U#h#o%tR2ZWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y2s#Y#o%tR2zU_QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR3cWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#b%t#b#c3{#c#o%tR4SUaQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR4kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g5T#g#o%tR5[UiQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR5sWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i6]#i#o%tR6bVtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#U6w#U#o%tR6|WtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g7f#g#o%tR7kWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#h%t#h#i8T#i#o%tR8YWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#g%t#g#h8r#h#o%tR8yUXQtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%tR9bWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#f%t#f#g9z#g#o%tR:PWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#i%t#i#j:i#j#o%tR:nWtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#X%t#X#Y;W#Y#o%tR;_U^QtP}!O%t!O!P%t!Q![%t!c!}%t#R#S%t#T#o%t\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n"],"names":[],"mappings":";;AAEa,MAAA,MAAA,GAAS,SAAS,WAAY,CAAA;AAAA,EACzC,OAAS,EAAA,EAAA;AAAA,EACT,MAAQ,EAAA,yUAAA;AAAA,EACR,SAAW,EAAA,oIAAA;AAAA,EACX,IAAM,EAAA,wHAAA;AAAA,EACN,SAAW,EAAA,4OAAA;AAAA,EACX,OAAS,EAAA,EAAA;AAAA,EACT,YAAA,EAAc,CAAC,CAAC,CAAA;AAAA,EAChB,eAAiB,EAAA,CAAA;AAAA,EACjB,SAAW,EAAA,2nEAAA;AAAA,EACX,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACjB,UAAU,EAAC,QAAA,EAAS,CAAC,CAAA,EAAE,CAAC,CAAC,EAAA;AAAA,EACzB,SAAW,EAAA;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"filter-parser.js","sources":["../../../../packages/vuu-filter-parser/src/generated/filter-parser.js"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DP'#DPOyQQO'#C}OOQO'#DS'#DSOVQPO'#CvOOQO'#DO'#DOQOQPOOOOQO'#C`'#C`O!XQQO,58xO!gQPO,59WOVQPO,59^OVQPO,59`O!lQPO,59iO!qQQO,59bOOQO'#DR'#DROOQO1G.d1G.dO!XQQO1G.rO!|QQO1G.xOOQO1G.z1G.zOOQO'#Cx'#CxOOQO1G/T1G/TOOQO1G.|1G.|O#_QPO'#CoO#gQPO7+$^O!XQQO'#CyO#lQPO,59ZOOQO<<Gx<<GxOOQO,59e,59eOOQO-E6w-E6w\",\n stateData: \"#t~OpOS~OtPOwUO~OTXOUXOVXOWXOXXOYXOZXOaZO~Og[Oi]Ok^OnqX~O[`O]`O^`O_`O~ObbO~OteO~Og[Oi]OxgO~Oi]Ogfikfinfixfi~OdjOecX~OelO~OdjOeca~O\",\n goto: \"#ZwPPx!O!UPPPPPPPPPPPxPP!XPP![P![P!bP!h!kPPP!q!t!bP#Q!bXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 40,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \";}~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`%v!`!a%{!c!}&Q!}#O&i#P#Q&n#R#S&Q#T#U&s#U#V&Q#V#W)Z#W#X&Q#X#Y.U#Y#Z0j#Z#]&Q#]#^3j#^#c&Q#c#d4r#d#g&Q#g#h5z#h#i9i#i#o&Q~#_Sp~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO]~~$kP;=`<%l#v~$sOw~~$xOx~~$}Od~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP[~!Q![%^~%kQ[~!O!P%W!Q![%f~%vOW~~%{OT~~&QOV~P&VUtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q~&nOb~~&sOe~R&xYtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c'h#c#g&Q#g#h(p#h#o&QR'mWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X(V#X#o&QR(^UgQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR(wUkQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR)`WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#c&Q#c#d)x#d#o&QR)}WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c*g#c#o&QR*lWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i+U#i#o&QR+ZVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U+p#U#o&QR+uWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#]&Q#]#^,_#^#o&QR,dWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c,|#c#o&QR-RWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h-k#h#o&QR-rUZQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR.ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c.s#c#o&QR.xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X/b#X#o&QR/gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h0P#h#o&QR0WUYQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR0oVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U1U#U#o&QR1ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#`&Q#`#a1s#a#o&QR1xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h2b#h#o&QR2gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y3P#Y#o&QR3WU_QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR3oWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c4X#c#o&QR4`UaQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR4wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g5a#g#o&QR5hUiQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR6PWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i6i#i#o&QR6nVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U7T#U#o&QR7YWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g7r#g#o&QR7wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i8a#i#o&QR8fWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h9O#h#o&QR9VUXQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR9nWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g:W#g#o&QR:]WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#i&Q#i#j:u#j#o&QR:zWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y;d#Y#o&QR;kU^QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n"],"names":[],"mappings":";;AAEa,MAAA,MAAA,GAAS,SAAS,WAAY,CAAA;AAAA,EACzC,OAAS,EAAA,EAAA;AAAA,EACT,MAAQ,EAAA,yUAAA;AAAA,EACR,SAAW,EAAA,oIAAA;AAAA,EACX,IAAM,EAAA,wHAAA;AAAA,EACN,SAAW,EAAA,4OAAA;AAAA,EACX,OAAS,EAAA,EAAA;AAAA,EACT,YAAA,EAAc,CAAC,CAAC,CAAA;AAAA,EAChB,eAAiB,EAAA,CAAA;AAAA,EACjB,SAAW,EAAA,gpEAAA;AAAA,EACX,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACjB,UAAU,EAAC,QAAA,EAAS,CAAC,CAAA,EAAE,CAAC,CAAC,EAAA;AAAA,EACzB,SAAW,EAAA;AACb,CAAC;;;;"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
- "version": "0.13.116",
2
+ "version": "0.13.117",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "0.13.116",
8
- "@vuu-ui/vuu-filter-types": "0.13.116",
9
- "@vuu-ui/vuu-table-types": "0.13.116"
7
+ "@vuu-ui/vuu-data-types": "0.13.117",
8
+ "@vuu-ui/vuu-filter-types": "0.13.117",
9
+ "@vuu-ui/vuu-table-types": "0.13.117"
10
10
  },
11
11
  "dependencies": {
12
12
  "@lezer/common": "^1.0.2",
13
13
  "@lezer/lr": "1.4.2",
14
- "@vuu-ui/vuu-utils": "0.13.116"
14
+ "@vuu-ui/vuu-utils": "0.13.117"
15
15
  },
16
16
  "files": [
17
17
  "README.md",