@vuu-ui/vuu-filters 0.8.93 → 0.8.94

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.
@@ -2,9 +2,12 @@
2
2
 
3
3
  var vuuUtils = require('@vuu-ui/vuu-utils');
4
4
 
5
+ var __defProp = Object.defineProperty;
5
6
  var __typeError = (msg) => {
6
7
  throw TypeError(msg);
7
8
  };
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
11
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
9
12
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
10
13
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
@@ -114,16 +117,16 @@ class FilterModel extends vuuUtils.EventEmitter {
114
117
  __privateAdd(this, _children, []);
115
118
  __privateAdd(this, _isValid2);
116
119
  __privateAdd(this, _op);
117
- this.onFilterClauseChange = () => {
120
+ __publicField(this, "onFilterClauseChange", () => {
118
121
  this.emit("filter", this.asFilter(false), __privateGet(this, _isValid2));
119
- };
120
- this.onFilterClauseStatusChange = (isValid) => {
122
+ });
123
+ __publicField(this, "onFilterClauseStatusChange", (isValid) => {
121
124
  if (!isValid && __privateGet(this, _isValid2)) {
122
125
  this.setIsValid(false);
123
126
  } else {
124
127
  this.checkValidStatus();
125
128
  }
126
- };
129
+ });
127
130
  if (vuuUtils.isMultiClauseFilter(filter)) {
128
131
  __privateSet(this, _op, filter.op);
129
132
  filter.filters.forEach((f) => this.addFilterClause(f));
@@ -1 +1 @@
1
- {"version":3,"file":"FilterModel.js","sources":["../src/FilterModel.ts"],"sourcesContent":["import {\n Filter,\n FilterClause,\n FilterClauseOp,\n FilterCombinatorOp,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n EventEmitter,\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport type FilterStatusChangeHandler = (isValid: boolean) => void;\nexport type FilterChangeHandler = (\n filter: Partial<Filter>,\n isValid: boolean,\n) => void;\nexport type FilterClauseChangeHandler = (\n filter: Partial<FilterClause>,\n isValid: boolean,\n) => void;\n\nconst hasValues = ({ values }: MultiValueFilterClause) =>\n Array.isArray(values) && values.length > 0;\n\nconst isValidFilterClause = (\n filterClause: Partial<FilterClause>,\n): filterClause is FilterClause => {\n if (filterClause.op === undefined || filterClause.column === undefined) {\n return false;\n } else if (isMultiValueFilter(filterClause)) {\n return hasValues(filterClause);\n } else if (isSingleValueFilter(filterClause)) {\n return filterClause.value !== undefined && filterClause.value !== \"\";\n }\n throw Error(\"isValidFilterClause should never reach this far\");\n};\n\nconst isValidFilter = (filter?: Filter): boolean => {\n if (filter === undefined) {\n return false;\n } else if (isMultiClauseFilter(filter)) {\n return filter.filters.every(isValidFilter);\n } else {\n return isValidFilterClause(filter);\n }\n};\n\nconst isValidFilterModel = (filterModel: FilterModel) => {\n if (filterModel.isMultiClauseFilter) {\n return filterModel.filterClauses.every((f) => f.isValid);\n } else {\n return (\n filterModel.filterClauses.length === 1 &&\n filterModel.filterClauses[0].isValid\n );\n }\n};\n\nexport type FilterClauseModelEvents = {\n filterClause: FilterClauseChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport type FilterModelEvents = {\n // TODO do we need an incomplate filter type\n filter: FilterChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {\n #filterClause: Partial<FilterClause>;\n #isValid: boolean;\n constructor(filterClause: Partial<FilterClause>) {\n super();\n this.#filterClause = filterClause;\n this.#isValid = isValidFilterClause(filterClause);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n get column() {\n return this.#filterClause.column;\n }\n\n set column(column: undefined | string) {\n // TODO set op, value to empty\n this.#filterClause = {\n column,\n };\n\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n get op() {\n return this.#filterClause.op;\n }\n\n setOp(op: undefined | FilterClauseOp) {\n this.#filterClause = {\n ...this.#filterClause,\n op,\n };\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n setValue(\n value:\n | undefined\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[],\n isFinal = true,\n ) {\n if (isSingleValueFilter(this.#filterClause)) {\n this.#filterClause = {\n ...this.#filterClause,\n value,\n } as SingleValueFilterClause;\n } else if (Array.isArray(value)) {\n this.#filterClause = {\n ...this.#filterClause,\n values: value,\n } as MultiValueFilterClause;\n }\n\n const isValid = isValidFilterClause(this.#filterClause);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n if (isFinal) {\n this.emit(\"filterClause\", this.#filterClause, isValid);\n }\n }\n\n asFilter(throwIfInvalid = true): FilterClause {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n return this.#filterClause as FilterClause;\n }\n}\n\nexport class FilterModel extends EventEmitter<FilterModelEvents> {\n #children: FilterClauseModel[] = [];\n #isValid: boolean;\n #op?: FilterCombinatorOp;\n\n constructor(filter?: Filter) {\n super();\n if (isMultiClauseFilter(filter)) {\n this.#op = filter.op;\n filter.filters.forEach((f) => this.addFilterClause(f as FilterClause));\n } else if (filter) {\n this.addFilterClause(filter);\n } else {\n this.addNewFilterClause();\n }\n\n this.#isValid = isValidFilter(filter);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n addNewFilterClause(operator?: FilterCombinatorOp) {\n const count = this.#children.length;\n if (!operator && !this.#op && count === 1) {\n this.#op = \"and\";\n } else if (operator && !this.#op && count === 1) {\n this.#op = operator;\n } else if (operator && this.#op && operator !== this.#op) {\n throw Error(\n \"FilterModel: use setOp to change the Filter combinator operator\",\n );\n }\n\n const filterClauseModel = new FilterClauseModel({});\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n this.setIsValid(false);\n }\n\n addFilterClause(filterClause: Partial<FilterClause> = {}) {\n const filterClauseModel = new FilterClauseModel(filterClause);\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n }\n\n removeFilterClause(filterClause: FilterClauseModel) {\n // We never allow the last clause to be removed\n if (this.isMultiClauseFilter) {\n const doomedFilter = this.filterClauses.indexOf(filterClause);\n if (doomedFilter !== -1) {\n this.filterClauses.splice(doomedFilter, 1);\n // If we're down the the last clause, we are no longer multi-clause\n if (this.filterClauses.length === 1) {\n this.#op = undefined;\n }\n this.checkValidStatus();\n }\n }\n }\n\n checkValidStatus() {\n const nowValid = isValidFilterModel(this);\n\n if (nowValid !== this.#isValid) {\n this.setIsValid(nowValid);\n }\n }\n\n onFilterClauseChange: FilterChangeHandler = () => {\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n };\n\n onFilterClauseStatusChange = (isValid: boolean) => {\n if (!isValid && this.#isValid) {\n this.setIsValid(false);\n } else {\n this.checkValidStatus();\n }\n };\n\n getFilterClause(index: number) {\n return this.#children[index];\n }\n\n get op() {\n return this.#op;\n }\n\n setOp(op: FilterCombinatorOp) {\n this.#op = op;\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n }\n\n get filterClauses() {\n return this.#children;\n }\n\n get isMultiClauseFilter() {\n return this.#op === \"and\" || this.#op === \"or\";\n }\n\n asFilter(throwIfInvalid = true): Filter {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n if (this.#op === \"and\" || this.#op === \"or\") {\n return {\n op: this.#op,\n filters: this.#children.map((f) => f.asFilter(throwIfInvalid)),\n } as MultiClauseFilter;\n } else {\n return this.#children[0].asFilter(throwIfInvalid);\n }\n }\n}\n"],"names":["_isValid","isMultiValueFilter","isSingleValueFilter","isMultiClauseFilter","EventEmitter"],"mappings":"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"}
1
+ {"version":3,"file":"FilterModel.js","sources":["../src/FilterModel.ts"],"sourcesContent":["import {\n Filter,\n FilterClause,\n FilterClauseOp,\n FilterCombinatorOp,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n EventEmitter,\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport type FilterStatusChangeHandler = (isValid: boolean) => void;\nexport type FilterChangeHandler = (\n filter: Partial<Filter>,\n isValid: boolean,\n) => void;\nexport type FilterClauseChangeHandler = (\n filter: Partial<FilterClause>,\n isValid: boolean,\n) => void;\n\nconst hasValues = ({ values }: MultiValueFilterClause) =>\n Array.isArray(values) && values.length > 0;\n\nconst isValidFilterClause = (\n filterClause: Partial<FilterClause>,\n): filterClause is FilterClause => {\n if (filterClause.op === undefined || filterClause.column === undefined) {\n return false;\n } else if (isMultiValueFilter(filterClause)) {\n return hasValues(filterClause);\n } else if (isSingleValueFilter(filterClause)) {\n return filterClause.value !== undefined && filterClause.value !== \"\";\n }\n throw Error(\"isValidFilterClause should never reach this far\");\n};\n\nconst isValidFilter = (filter?: Filter): boolean => {\n if (filter === undefined) {\n return false;\n } else if (isMultiClauseFilter(filter)) {\n return filter.filters.every(isValidFilter);\n } else {\n return isValidFilterClause(filter);\n }\n};\n\nconst isValidFilterModel = (filterModel: FilterModel) => {\n if (filterModel.isMultiClauseFilter) {\n return filterModel.filterClauses.every((f) => f.isValid);\n } else {\n return (\n filterModel.filterClauses.length === 1 &&\n filterModel.filterClauses[0].isValid\n );\n }\n};\n\nexport type FilterClauseModelEvents = {\n filterClause: FilterClauseChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport type FilterModelEvents = {\n // TODO do we need an incomplate filter type\n filter: FilterChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {\n #filterClause: Partial<FilterClause>;\n #isValid: boolean;\n constructor(filterClause: Partial<FilterClause>) {\n super();\n this.#filterClause = filterClause;\n this.#isValid = isValidFilterClause(filterClause);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n get column() {\n return this.#filterClause.column;\n }\n\n set column(column: undefined | string) {\n // TODO set op, value to empty\n this.#filterClause = {\n column,\n };\n\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n get op() {\n return this.#filterClause.op;\n }\n\n setOp(op: undefined | FilterClauseOp) {\n this.#filterClause = {\n ...this.#filterClause,\n op,\n };\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n setValue(\n value:\n | undefined\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[],\n isFinal = true,\n ) {\n if (isSingleValueFilter(this.#filterClause)) {\n this.#filterClause = {\n ...this.#filterClause,\n value,\n } as SingleValueFilterClause;\n } else if (Array.isArray(value)) {\n this.#filterClause = {\n ...this.#filterClause,\n values: value,\n } as MultiValueFilterClause;\n }\n\n const isValid = isValidFilterClause(this.#filterClause);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n if (isFinal) {\n this.emit(\"filterClause\", this.#filterClause, isValid);\n }\n }\n\n asFilter(throwIfInvalid = true): FilterClause {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n return this.#filterClause as FilterClause;\n }\n}\n\nexport class FilterModel extends EventEmitter<FilterModelEvents> {\n #children: FilterClauseModel[] = [];\n #isValid: boolean;\n #op?: FilterCombinatorOp;\n\n constructor(filter?: Filter) {\n super();\n if (isMultiClauseFilter(filter)) {\n this.#op = filter.op;\n filter.filters.forEach((f) => this.addFilterClause(f as FilterClause));\n } else if (filter) {\n this.addFilterClause(filter);\n } else {\n this.addNewFilterClause();\n }\n\n this.#isValid = isValidFilter(filter);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n addNewFilterClause(operator?: FilterCombinatorOp) {\n const count = this.#children.length;\n if (!operator && !this.#op && count === 1) {\n this.#op = \"and\";\n } else if (operator && !this.#op && count === 1) {\n this.#op = operator;\n } else if (operator && this.#op && operator !== this.#op) {\n throw Error(\n \"FilterModel: use setOp to change the Filter combinator operator\",\n );\n }\n\n const filterClauseModel = new FilterClauseModel({});\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n this.setIsValid(false);\n }\n\n addFilterClause(filterClause: Partial<FilterClause> = {}) {\n const filterClauseModel = new FilterClauseModel(filterClause);\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n }\n\n removeFilterClause(filterClause: FilterClauseModel) {\n // We never allow the last clause to be removed\n if (this.isMultiClauseFilter) {\n const doomedFilter = this.filterClauses.indexOf(filterClause);\n if (doomedFilter !== -1) {\n this.filterClauses.splice(doomedFilter, 1);\n // If we're down the the last clause, we are no longer multi-clause\n if (this.filterClauses.length === 1) {\n this.#op = undefined;\n }\n this.checkValidStatus();\n }\n }\n }\n\n checkValidStatus() {\n const nowValid = isValidFilterModel(this);\n\n if (nowValid !== this.#isValid) {\n this.setIsValid(nowValid);\n }\n }\n\n onFilterClauseChange: FilterChangeHandler = () => {\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n };\n\n onFilterClauseStatusChange = (isValid: boolean) => {\n if (!isValid && this.#isValid) {\n this.setIsValid(false);\n } else {\n this.checkValidStatus();\n }\n };\n\n getFilterClause(index: number) {\n return this.#children[index];\n }\n\n get op() {\n return this.#op;\n }\n\n setOp(op: FilterCombinatorOp) {\n this.#op = op;\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n }\n\n get filterClauses() {\n return this.#children;\n }\n\n get isMultiClauseFilter() {\n return this.#op === \"and\" || this.#op === \"or\";\n }\n\n asFilter(throwIfInvalid = true): Filter {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n if (this.#op === \"and\" || this.#op === \"or\") {\n return {\n op: this.#op,\n filters: this.#children.map((f) => f.asFilter(throwIfInvalid)),\n } as MultiClauseFilter;\n } else {\n return this.#children[0].asFilter(throwIfInvalid);\n }\n }\n}\n"],"names":["_isValid","isMultiValueFilter","isSingleValueFilter","isMultiClauseFilter","EventEmitter"],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { EventEmitter, isSingleValueFilter, isMultiClauseFilter, isMultiValueFilter } from '@vuu-ui/vuu-utils';
2
2
 
3
+ var __defProp = Object.defineProperty;
3
4
  var __typeError = (msg) => {
4
5
  throw TypeError(msg);
5
6
  };
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
9
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
7
10
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
8
11
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
@@ -112,16 +115,16 @@ class FilterModel extends EventEmitter {
112
115
  __privateAdd(this, _children, []);
113
116
  __privateAdd(this, _isValid2);
114
117
  __privateAdd(this, _op);
115
- this.onFilterClauseChange = () => {
118
+ __publicField(this, "onFilterClauseChange", () => {
116
119
  this.emit("filter", this.asFilter(false), __privateGet(this, _isValid2));
117
- };
118
- this.onFilterClauseStatusChange = (isValid) => {
120
+ });
121
+ __publicField(this, "onFilterClauseStatusChange", (isValid) => {
119
122
  if (!isValid && __privateGet(this, _isValid2)) {
120
123
  this.setIsValid(false);
121
124
  } else {
122
125
  this.checkValidStatus();
123
126
  }
124
- };
127
+ });
125
128
  if (isMultiClauseFilter(filter)) {
126
129
  __privateSet(this, _op, filter.op);
127
130
  filter.filters.forEach((f) => this.addFilterClause(f));
@@ -1 +1 @@
1
- {"version":3,"file":"FilterModel.js","sources":["../src/FilterModel.ts"],"sourcesContent":["import {\n Filter,\n FilterClause,\n FilterClauseOp,\n FilterCombinatorOp,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n EventEmitter,\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport type FilterStatusChangeHandler = (isValid: boolean) => void;\nexport type FilterChangeHandler = (\n filter: Partial<Filter>,\n isValid: boolean,\n) => void;\nexport type FilterClauseChangeHandler = (\n filter: Partial<FilterClause>,\n isValid: boolean,\n) => void;\n\nconst hasValues = ({ values }: MultiValueFilterClause) =>\n Array.isArray(values) && values.length > 0;\n\nconst isValidFilterClause = (\n filterClause: Partial<FilterClause>,\n): filterClause is FilterClause => {\n if (filterClause.op === undefined || filterClause.column === undefined) {\n return false;\n } else if (isMultiValueFilter(filterClause)) {\n return hasValues(filterClause);\n } else if (isSingleValueFilter(filterClause)) {\n return filterClause.value !== undefined && filterClause.value !== \"\";\n }\n throw Error(\"isValidFilterClause should never reach this far\");\n};\n\nconst isValidFilter = (filter?: Filter): boolean => {\n if (filter === undefined) {\n return false;\n } else if (isMultiClauseFilter(filter)) {\n return filter.filters.every(isValidFilter);\n } else {\n return isValidFilterClause(filter);\n }\n};\n\nconst isValidFilterModel = (filterModel: FilterModel) => {\n if (filterModel.isMultiClauseFilter) {\n return filterModel.filterClauses.every((f) => f.isValid);\n } else {\n return (\n filterModel.filterClauses.length === 1 &&\n filterModel.filterClauses[0].isValid\n );\n }\n};\n\nexport type FilterClauseModelEvents = {\n filterClause: FilterClauseChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport type FilterModelEvents = {\n // TODO do we need an incomplate filter type\n filter: FilterChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {\n #filterClause: Partial<FilterClause>;\n #isValid: boolean;\n constructor(filterClause: Partial<FilterClause>) {\n super();\n this.#filterClause = filterClause;\n this.#isValid = isValidFilterClause(filterClause);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n get column() {\n return this.#filterClause.column;\n }\n\n set column(column: undefined | string) {\n // TODO set op, value to empty\n this.#filterClause = {\n column,\n };\n\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n get op() {\n return this.#filterClause.op;\n }\n\n setOp(op: undefined | FilterClauseOp) {\n this.#filterClause = {\n ...this.#filterClause,\n op,\n };\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n setValue(\n value:\n | undefined\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[],\n isFinal = true,\n ) {\n if (isSingleValueFilter(this.#filterClause)) {\n this.#filterClause = {\n ...this.#filterClause,\n value,\n } as SingleValueFilterClause;\n } else if (Array.isArray(value)) {\n this.#filterClause = {\n ...this.#filterClause,\n values: value,\n } as MultiValueFilterClause;\n }\n\n const isValid = isValidFilterClause(this.#filterClause);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n if (isFinal) {\n this.emit(\"filterClause\", this.#filterClause, isValid);\n }\n }\n\n asFilter(throwIfInvalid = true): FilterClause {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n return this.#filterClause as FilterClause;\n }\n}\n\nexport class FilterModel extends EventEmitter<FilterModelEvents> {\n #children: FilterClauseModel[] = [];\n #isValid: boolean;\n #op?: FilterCombinatorOp;\n\n constructor(filter?: Filter) {\n super();\n if (isMultiClauseFilter(filter)) {\n this.#op = filter.op;\n filter.filters.forEach((f) => this.addFilterClause(f as FilterClause));\n } else if (filter) {\n this.addFilterClause(filter);\n } else {\n this.addNewFilterClause();\n }\n\n this.#isValid = isValidFilter(filter);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n addNewFilterClause(operator?: FilterCombinatorOp) {\n const count = this.#children.length;\n if (!operator && !this.#op && count === 1) {\n this.#op = \"and\";\n } else if (operator && !this.#op && count === 1) {\n this.#op = operator;\n } else if (operator && this.#op && operator !== this.#op) {\n throw Error(\n \"FilterModel: use setOp to change the Filter combinator operator\",\n );\n }\n\n const filterClauseModel = new FilterClauseModel({});\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n this.setIsValid(false);\n }\n\n addFilterClause(filterClause: Partial<FilterClause> = {}) {\n const filterClauseModel = new FilterClauseModel(filterClause);\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n }\n\n removeFilterClause(filterClause: FilterClauseModel) {\n // We never allow the last clause to be removed\n if (this.isMultiClauseFilter) {\n const doomedFilter = this.filterClauses.indexOf(filterClause);\n if (doomedFilter !== -1) {\n this.filterClauses.splice(doomedFilter, 1);\n // If we're down the the last clause, we are no longer multi-clause\n if (this.filterClauses.length === 1) {\n this.#op = undefined;\n }\n this.checkValidStatus();\n }\n }\n }\n\n checkValidStatus() {\n const nowValid = isValidFilterModel(this);\n\n if (nowValid !== this.#isValid) {\n this.setIsValid(nowValid);\n }\n }\n\n onFilterClauseChange: FilterChangeHandler = () => {\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n };\n\n onFilterClauseStatusChange = (isValid: boolean) => {\n if (!isValid && this.#isValid) {\n this.setIsValid(false);\n } else {\n this.checkValidStatus();\n }\n };\n\n getFilterClause(index: number) {\n return this.#children[index];\n }\n\n get op() {\n return this.#op;\n }\n\n setOp(op: FilterCombinatorOp) {\n this.#op = op;\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n }\n\n get filterClauses() {\n return this.#children;\n }\n\n get isMultiClauseFilter() {\n return this.#op === \"and\" || this.#op === \"or\";\n }\n\n asFilter(throwIfInvalid = true): Filter {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n if (this.#op === \"and\" || this.#op === \"or\") {\n return {\n op: this.#op,\n filters: this.#children.map((f) => f.asFilter(throwIfInvalid)),\n } as MultiClauseFilter;\n } else {\n return this.#children[0].asFilter(throwIfInvalid);\n }\n }\n}\n"],"names":["_isValid"],"mappings":"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"}
1
+ {"version":3,"file":"FilterModel.js","sources":["../src/FilterModel.ts"],"sourcesContent":["import {\n Filter,\n FilterClause,\n FilterClauseOp,\n FilterCombinatorOp,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n EventEmitter,\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport type FilterStatusChangeHandler = (isValid: boolean) => void;\nexport type FilterChangeHandler = (\n filter: Partial<Filter>,\n isValid: boolean,\n) => void;\nexport type FilterClauseChangeHandler = (\n filter: Partial<FilterClause>,\n isValid: boolean,\n) => void;\n\nconst hasValues = ({ values }: MultiValueFilterClause) =>\n Array.isArray(values) && values.length > 0;\n\nconst isValidFilterClause = (\n filterClause: Partial<FilterClause>,\n): filterClause is FilterClause => {\n if (filterClause.op === undefined || filterClause.column === undefined) {\n return false;\n } else if (isMultiValueFilter(filterClause)) {\n return hasValues(filterClause);\n } else if (isSingleValueFilter(filterClause)) {\n return filterClause.value !== undefined && filterClause.value !== \"\";\n }\n throw Error(\"isValidFilterClause should never reach this far\");\n};\n\nconst isValidFilter = (filter?: Filter): boolean => {\n if (filter === undefined) {\n return false;\n } else if (isMultiClauseFilter(filter)) {\n return filter.filters.every(isValidFilter);\n } else {\n return isValidFilterClause(filter);\n }\n};\n\nconst isValidFilterModel = (filterModel: FilterModel) => {\n if (filterModel.isMultiClauseFilter) {\n return filterModel.filterClauses.every((f) => f.isValid);\n } else {\n return (\n filterModel.filterClauses.length === 1 &&\n filterModel.filterClauses[0].isValid\n );\n }\n};\n\nexport type FilterClauseModelEvents = {\n filterClause: FilterClauseChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport type FilterModelEvents = {\n // TODO do we need an incomplate filter type\n filter: FilterChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {\n #filterClause: Partial<FilterClause>;\n #isValid: boolean;\n constructor(filterClause: Partial<FilterClause>) {\n super();\n this.#filterClause = filterClause;\n this.#isValid = isValidFilterClause(filterClause);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n get column() {\n return this.#filterClause.column;\n }\n\n set column(column: undefined | string) {\n // TODO set op, value to empty\n this.#filterClause = {\n column,\n };\n\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n get op() {\n return this.#filterClause.op;\n }\n\n setOp(op: undefined | FilterClauseOp) {\n this.#filterClause = {\n ...this.#filterClause,\n op,\n };\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n setValue(\n value:\n | undefined\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[],\n isFinal = true,\n ) {\n if (isSingleValueFilter(this.#filterClause)) {\n this.#filterClause = {\n ...this.#filterClause,\n value,\n } as SingleValueFilterClause;\n } else if (Array.isArray(value)) {\n this.#filterClause = {\n ...this.#filterClause,\n values: value,\n } as MultiValueFilterClause;\n }\n\n const isValid = isValidFilterClause(this.#filterClause);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n if (isFinal) {\n this.emit(\"filterClause\", this.#filterClause, isValid);\n }\n }\n\n asFilter(throwIfInvalid = true): FilterClause {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n return this.#filterClause as FilterClause;\n }\n}\n\nexport class FilterModel extends EventEmitter<FilterModelEvents> {\n #children: FilterClauseModel[] = [];\n #isValid: boolean;\n #op?: FilterCombinatorOp;\n\n constructor(filter?: Filter) {\n super();\n if (isMultiClauseFilter(filter)) {\n this.#op = filter.op;\n filter.filters.forEach((f) => this.addFilterClause(f as FilterClause));\n } else if (filter) {\n this.addFilterClause(filter);\n } else {\n this.addNewFilterClause();\n }\n\n this.#isValid = isValidFilter(filter);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n addNewFilterClause(operator?: FilterCombinatorOp) {\n const count = this.#children.length;\n if (!operator && !this.#op && count === 1) {\n this.#op = \"and\";\n } else if (operator && !this.#op && count === 1) {\n this.#op = operator;\n } else if (operator && this.#op && operator !== this.#op) {\n throw Error(\n \"FilterModel: use setOp to change the Filter combinator operator\",\n );\n }\n\n const filterClauseModel = new FilterClauseModel({});\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n this.setIsValid(false);\n }\n\n addFilterClause(filterClause: Partial<FilterClause> = {}) {\n const filterClauseModel = new FilterClauseModel(filterClause);\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n }\n\n removeFilterClause(filterClause: FilterClauseModel) {\n // We never allow the last clause to be removed\n if (this.isMultiClauseFilter) {\n const doomedFilter = this.filterClauses.indexOf(filterClause);\n if (doomedFilter !== -1) {\n this.filterClauses.splice(doomedFilter, 1);\n // If we're down the the last clause, we are no longer multi-clause\n if (this.filterClauses.length === 1) {\n this.#op = undefined;\n }\n this.checkValidStatus();\n }\n }\n }\n\n checkValidStatus() {\n const nowValid = isValidFilterModel(this);\n\n if (nowValid !== this.#isValid) {\n this.setIsValid(nowValid);\n }\n }\n\n onFilterClauseChange: FilterChangeHandler = () => {\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n };\n\n onFilterClauseStatusChange = (isValid: boolean) => {\n if (!isValid && this.#isValid) {\n this.setIsValid(false);\n } else {\n this.checkValidStatus();\n }\n };\n\n getFilterClause(index: number) {\n return this.#children[index];\n }\n\n get op() {\n return this.#op;\n }\n\n setOp(op: FilterCombinatorOp) {\n this.#op = op;\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n }\n\n get filterClauses() {\n return this.#children;\n }\n\n get isMultiClauseFilter() {\n return this.#op === \"and\" || this.#op === \"or\";\n }\n\n asFilter(throwIfInvalid = true): Filter {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n if (this.#op === \"and\" || this.#op === \"or\") {\n return {\n op: this.#op,\n filters: this.#children.map((f) => f.asFilter(throwIfInvalid)),\n } as MultiClauseFilter;\n } else {\n return this.#children[0].asFilter(throwIfInvalid);\n }\n }\n}\n"],"names":["_isValid"],"mappings":";;;;;;;;;;;;AAAA,IAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAAA,SAAA,EAAA,GAAA,CAAA;AA0BA,MAAM,SAAA,GAAY,CAAC,EAAE,MAAO,EAAA,KAC1B,MAAM,OAAQ,CAAA,MAAM,CAAK,IAAA,MAAA,CAAO,MAAS,GAAA,CAAA,CAAA;AAE3C,MAAM,mBAAA,GAAsB,CAC1B,YACiC,KAAA;AACjC,EAAA,IAAI,YAAa,CAAA,EAAA,KAAO,KAAa,CAAA,IAAA,YAAA,CAAa,WAAW,KAAW,CAAA,EAAA;AACtE,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,kBAAmB,CAAA,YAAY,CAAG,EAAA;AAC3C,IAAA,OAAO,UAAU,YAAY,CAAA,CAAA;AAAA,GAC/B,MAAA,IAAW,mBAAoB,CAAA,YAAY,CAAG,EAAA;AAC5C,IAAA,OAAO,YAAa,CAAA,KAAA,KAAU,KAAa,CAAA,IAAA,YAAA,CAAa,KAAU,KAAA,EAAA,CAAA;AAAA,GACpE;AACA,EAAA,MAAM,MAAM,iDAAiD,CAAA,CAAA;AAC/D,CAAA,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,MAA6B,KAAA;AAClD,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,mBAAoB,CAAA,MAAM,CAAG,EAAA;AACtC,IAAO,OAAA,MAAA,CAAO,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAAA,GACpC,MAAA;AACL,IAAA,OAAO,oBAAoB,MAAM,CAAA,CAAA;AAAA,GACnC;AACF,CAAA,CAAA;AAEA,MAAM,kBAAA,GAAqB,CAAC,WAA6B,KAAA;AACvD,EAAA,IAAI,YAAY,mBAAqB,EAAA;AACnC,IAAA,OAAO,YAAY,aAAc,CAAA,KAAA,CAAM,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA,CAAA;AAAA,GAClD,MAAA;AACL,IAAA,OACE,YAAY,aAAc,CAAA,MAAA,KAAW,KACrC,WAAY,CAAA,aAAA,CAAc,CAAC,CAAE,CAAA,OAAA,CAAA;AAAA,GAEjC;AACF,CAAA,CAAA;AAaO,MAAM,0BAA0B,YAAsC,CAAA;AAAA,EAG3E,YAAY,YAAqC,EAAA;AAC/C,IAAM,KAAA,EAAA,CAAA;AAHR,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAGE,IAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA,YAAA,CAAA,CAAA;AACrB,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,EAAW,oBAAoB,YAAY,CAAA,CAAA,CAAA;AAAA,GAClD;AAAA,EACA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEQ,WAAW,OAAkB,EAAA;AACnC,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,OAAA,CAAA,CAAA;AAChB,IAAK,IAAA,CAAA,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,mBAAK,aAAc,CAAA,CAAA,MAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,IAAI,OAAO,MAA4B,EAAA;AAErC,IAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA;AAAA,MACnB,MAAA;AAAA,KACF,CAAA,CAAA;AAEA,IAAM,MAAA,OAAA,GAAU,mBAAoB,CAAA,YAAA,CAAA,IAAA,EAAK,aAAa,CAAA,CAAA,CAAA;AACtD,IAAA,IAAA,CAAK,IAAK,CAAA,cAAA,EAAgB,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,EAAe,OAAO,CAAA,CAAA;AACrD,IAAI,IAAA,OAAA,KAAY,mBAAK,QAAU,CAAA,EAAA;AAC7B,MAAA,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAAA,EAEA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,mBAAK,aAAc,CAAA,CAAA,EAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,MAAM,EAAgC,EAAA;AACpC,IAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA;AAAA,MACnB,GAAG,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA,MACR,EAAA;AAAA,KACF,CAAA,CAAA;AACA,IAAM,MAAA,OAAA,GAAU,mBAAoB,CAAA,YAAA,CAAA,IAAA,EAAK,aAAa,CAAA,CAAA,CAAA;AACtD,IAAA,IAAA,CAAK,IAAK,CAAA,cAAA,EAAgB,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,EAAe,OAAO,CAAA,CAAA;AACrD,IAAI,IAAA,OAAA,KAAY,mBAAK,QAAU,CAAA,EAAA;AAC7B,MAAA,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAAA,EAEA,QAAA,CACE,KAQA,EAAA,OAAA,GAAU,IACV,EAAA;AACA,IAAI,IAAA,mBAAA,CAAoB,YAAK,CAAA,IAAA,EAAA,aAAA,CAAa,CAAG,EAAA;AAC3C,MAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA;AAAA,QACnB,GAAG,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA,QACR,KAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACS,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AAC/B,MAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA;AAAA,QACnB,GAAG,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA,QACR,MAAQ,EAAA,KAAA;AAAA,OACV,CAAA,CAAA;AAAA,KACF;AAEA,IAAM,MAAA,OAAA,GAAU,mBAAoB,CAAA,YAAA,CAAA,IAAA,EAAK,aAAa,CAAA,CAAA,CAAA;AACtD,IAAI,IAAA,OAAA,KAAY,mBAAK,QAAU,CAAA,EAAA;AAC7B,MAAA,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAAA,KACzB;AACA,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,IAAA,CAAK,IAAK,CAAA,cAAA,EAAgB,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,EAAe,OAAO,CAAA,CAAA;AAAA,KACvD;AAAA,GACF;AAAA,EAEA,QAAA,CAAS,iBAAiB,IAAoB,EAAA;AAC5C,IAAI,IAAA,cAAA,IAAkB,CAAC,YAAA,CAAA,IAAA,EAAK,QAAU,CAAA,EAAA;AACpC,MAAA,MAAM,MAAM,mDAAmD,CAAA,CAAA;AAAA,KACjE;AACA,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GACd;AACF,CAAA;AAvFE,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAwFK,MAAM,oBAAoB,YAAgC,CAAA;AAAA,EAK/D,YAAY,MAAiB,EAAA;AAC3B,IAAM,KAAA,EAAA,CAAA;AALR,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,EAAiC,EAAC,CAAA,CAAA;AAClC,IAAAA,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AAyEA,IAAA,aAAA,CAAA,IAAA,EAAA,sBAAA,EAA4C,MAAM;AAChD,MAAA,IAAA,CAAK,KAAK,QAAU,EAAA,IAAA,CAAK,SAAS,KAAK,CAAA,EAAG,mBAAKA,SAAQ,CAAA,CAAA,CAAA;AAAA,KACzD,CAAA,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,4BAAA,EAA6B,CAAC,OAAqB,KAAA;AACjD,MAAI,IAAA,CAAC,OAAW,IAAA,YAAA,CAAA,IAAA,EAAKA,SAAU,CAAA,EAAA;AAC7B,QAAA,IAAA,CAAK,WAAW,KAAK,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAAA,OACxB;AAAA,KACF,CAAA,CAAA;AA/EE,IAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,MAAA,YAAA,CAAA,IAAA,EAAK,KAAM,MAAO,CAAA,EAAA,CAAA,CAAA;AAClB,MAAA,MAAA,CAAO,QAAQ,OAAQ,CAAA,CAAC,MAAM,IAAK,CAAA,eAAA,CAAgB,CAAiB,CAAC,CAAA,CAAA;AAAA,eAC5D,MAAQ,EAAA;AACjB,MAAA,IAAA,CAAK,gBAAgB,MAAM,CAAA,CAAA;AAAA,KACtB,MAAA;AACL,MAAA,IAAA,CAAK,kBAAmB,EAAA,CAAA;AAAA,KAC1B;AAEA,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,SAAAA,EAAW,cAAc,MAAM,CAAA,CAAA,CAAA;AAAA,GACtC;AAAA,EACA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEQ,WAAW,OAAkB,EAAA;AACnC,IAAA,YAAA,CAAA,IAAA,EAAKA,SAAW,EAAA,OAAA,CAAA,CAAA;AAChB,IAAK,IAAA,CAAA,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,mBAAmB,QAA+B,EAAA;AAChD,IAAM,MAAA,KAAA,GAAQ,mBAAK,SAAU,CAAA,CAAA,MAAA,CAAA;AAC7B,IAAA,IAAI,CAAC,QAAY,IAAA,CAAC,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,IAAO,UAAU,CAAG,EAAA;AACzC,MAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,KAAA,CAAA,CAAA;AAAA,eACF,QAAY,IAAA,CAAC,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,IAAO,UAAU,CAAG,EAAA;AAC/C,MAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,QAAA,CAAA,CAAA;AAAA,eACF,QAAY,IAAA,YAAA,CAAA,IAAA,EAAK,GAAO,CAAA,IAAA,QAAA,KAAa,mBAAK,GAAK,CAAA,EAAA;AACxD,MAAM,MAAA,KAAA;AAAA,QACJ,iEAAA;AAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAA,MAAM,iBAAoB,GAAA,IAAI,iBAAkB,CAAA,EAAE,CAAA,CAAA;AAClD,IAAkB,iBAAA,CAAA,EAAA,CAAG,SAAW,EAAA,IAAA,CAAK,0BAA0B,CAAA,CAAA;AAC/D,IAAkB,iBAAA,CAAA,EAAA,CAAG,cAAgB,EAAA,IAAA,CAAK,oBAAoB,CAAA,CAAA;AAC9D,IAAK,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAU,KAAK,iBAAiB,CAAA,CAAA;AACrC,IAAA,IAAA,CAAK,WAAW,KAAK,CAAA,CAAA;AAAA,GACvB;AAAA,EAEA,eAAA,CAAgB,YAAsC,GAAA,EAAI,EAAA;AACxD,IAAM,MAAA,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,YAAY,CAAA,CAAA;AAC5D,IAAkB,iBAAA,CAAA,EAAA,CAAG,SAAW,EAAA,IAAA,CAAK,0BAA0B,CAAA,CAAA;AAC/D,IAAkB,iBAAA,CAAA,EAAA,CAAG,cAAgB,EAAA,IAAA,CAAK,oBAAoB,CAAA,CAAA;AAC9D,IAAK,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAU,KAAK,iBAAiB,CAAA,CAAA;AAAA,GACvC;AAAA,EAEA,mBAAmB,YAAiC,EAAA;AAElD,IAAA,IAAI,KAAK,mBAAqB,EAAA;AAC5B,MAAA,MAAM,YAAe,GAAA,IAAA,CAAK,aAAc,CAAA,OAAA,CAAQ,YAAY,CAAA,CAAA;AAC5D,MAAA,IAAI,iBAAiB,CAAI,CAAA,EAAA;AACvB,QAAK,IAAA,CAAA,aAAA,CAAc,MAAO,CAAA,YAAA,EAAc,CAAC,CAAA,CAAA;AAEzC,QAAI,IAAA,IAAA,CAAK,aAAc,CAAA,MAAA,KAAW,CAAG,EAAA;AACnC,UAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,SACb;AACA,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAAA,OACxB;AAAA,KACF;AAAA,GACF;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAM,MAAA,QAAA,GAAW,mBAAmB,IAAI,CAAA,CAAA;AAExC,IAAI,IAAA,QAAA,KAAa,mBAAKA,SAAU,CAAA,EAAA;AAC9B,MAAA,IAAA,CAAK,WAAW,QAAQ,CAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAcA,gBAAgB,KAAe,EAAA;AAC7B,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,WAAU,KAAK,CAAA,CAAA;AAAA,GAC7B;AAAA,EAEA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAM,EAAwB,EAAA;AAC5B,IAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,EAAA,CAAA,CAAA;AACX,IAAA,IAAA,CAAK,KAAK,QAAU,EAAA,IAAA,CAAK,SAAS,KAAK,CAAA,EAAG,mBAAKA,SAAQ,CAAA,CAAA,CAAA;AAAA,GACzD;AAAA,EAEA,IAAI,aAAgB,GAAA;AAClB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,mBAAsB,GAAA;AACxB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,KAAQ,KAAS,IAAA,YAAA,CAAA,IAAA,EAAK,GAAQ,CAAA,KAAA,IAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,QAAA,CAAS,iBAAiB,IAAc,EAAA;AACtC,IAAI,IAAA,cAAA,IAAkB,CAAC,YAAA,CAAA,IAAA,EAAKA,SAAU,CAAA,EAAA;AACpC,MAAA,MAAM,MAAM,mDAAmD,CAAA,CAAA;AAAA,KACjE;AACA,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,KAAQ,KAAS,IAAA,YAAA,CAAA,IAAA,EAAK,SAAQ,IAAM,EAAA;AAC3C,MAAO,OAAA;AAAA,QACL,IAAI,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA;AAAA,QACT,OAAA,EAAS,mBAAK,SAAU,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,QAAS,CAAA,cAAc,CAAC,CAAA;AAAA,OAC/D,CAAA;AAAA,KACK,MAAA;AACL,MAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAU,CAAC,CAAA,CAAE,SAAS,cAAc,CAAA,CAAA;AAAA,KAClD;AAAA,GACF;AACF,CAAA;AAzHE,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACAA,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,GAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
- "version": "0.8.93",
2
+ "version": "0.8.94",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "0.8.93",
8
- "@vuu-ui/vuu-protocol-types": "0.8.93",
9
- "@vuu-ui/vuu-table-types": "0.8.93",
10
- "@vuu-ui/vuu-filter-types": "0.8.93",
7
+ "@vuu-ui/vuu-data-types": "0.8.94",
8
+ "@vuu-ui/vuu-protocol-types": "0.8.94",
9
+ "@vuu-ui/vuu-table-types": "0.8.94",
10
+ "@vuu-ui/vuu-filter-types": "0.8.94",
11
11
  "@types/uuid": "^9.0.2"
12
12
  },
13
13
  "dependencies": {
14
- "@vuu-ui/vuu-data-react": "0.8.93",
15
- "@vuu-ui/vuu-filter-parser": "0.8.93",
16
- "@vuu-ui/vuu-popups": "0.8.93",
17
- "@vuu-ui/vuu-ui-controls": "0.8.93",
18
- "@vuu-ui/vuu-table": "0.8.93",
19
- "@vuu-ui/vuu-utils": "0.8.93",
14
+ "@vuu-ui/vuu-data-react": "0.8.94",
15
+ "@vuu-ui/vuu-filter-parser": "0.8.94",
16
+ "@vuu-ui/vuu-popups": "0.8.94",
17
+ "@vuu-ui/vuu-ui-controls": "0.8.94",
18
+ "@vuu-ui/vuu-table": "0.8.94",
19
+ "@vuu-ui/vuu-utils": "0.8.94",
20
20
  "@salt-ds/core": "1.34.0",
21
21
  "@salt-ds/styles": "0.2.1",
22
22
  "@salt-ds/window": "0.1.1",