@tetacom/ng-components 1.0.52 → 1.0.55

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.
@@ -9,13 +9,13 @@ export class TableUtil {
9
9
  return null;
10
10
  }
11
11
  static getData(data, state) {
12
- let result = data;
12
+ let result = [...data];
13
13
  result = TableUtil.filterData(result, state);
14
14
  result = TableUtil.sortData(result, state);
15
15
  return result;
16
16
  }
17
17
  static sortData(data, state) {
18
- let result = data;
18
+ let result = [...data];
19
19
  const func = (sortParam) => {
20
20
  result = TableUtil.sort(result, sortParam);
21
21
  };
@@ -25,7 +25,7 @@ export class TableUtil {
25
25
  return result;
26
26
  }
27
27
  static filterData(data, state) {
28
- let result = data;
28
+ let result = [...data];
29
29
  if (state?.stringFilters?.length) {
30
30
  const stringFilter = (filter) => {
31
31
  result = TableUtil.filterString(result, filter);
@@ -124,4 +124,4 @@ export class TableUtil {
124
124
  return res;
125
125
  }
126
126
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdXRpbC90YWJsZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFJdkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFJM0UsTUFBTSxPQUFPLFNBQVM7SUFDYixNQUFNLENBQUMsZUFBZSxDQUFDLE1BQW1CO1FBQy9DLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUksSUFBUyxFQUFFLEtBQWtCO1FBQzdDLElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFJLElBQVMsRUFBRSxLQUFrQjtRQUM5QyxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMs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QU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtBcnJheVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHtTb3J0UGFyYW19IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9zb3J0LXBhcmFtJztcbmltcG9ydCB7TGlzdEZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2xpc3QtZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQge0xpc3RGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9saXN0LWZpbHRlcic7XG5pbXBvcnQge051bWVyaWNGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9udW1lcmljLWZpbHRlcic7XG5pbXBvcnQge0RhdGVGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9kYXRlLWZpbHRlcic7XG5pbXBvcnQge1N0cmluZ0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL3N0cmluZy1maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7U3RyaW5nRmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc3RyaW5nLWZpbHRlcic7XG5pbXBvcnQge0ZpbHRlclN0YXRlfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlVXRpbCB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0Q29sdW1uTGVhdmVzKGNvbHVtbjogVGFibGVDb2x1bW4pOiBUYWJsZUNvbHVtbltdIHwgbnVsbCB7XG4gICAgaWYgKGNvbHVtbj8uY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIEFycmF5VXRpbC5mbGF0dGVuKGNvbHVtbi5jb2x1bW5zLCAnY29sdW1ucycsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXREYXRhPFQ+KGRhdGE6IFRbXSwgc3RhdGU6IEZpbHRlclN0YXRlKTogVFtdIHtcbiAgICBsZXQgcmVzdWx0OiBUW10gPSBkYXRhO1xuICAgIHJlc3VsdCA9IFRhYmxlVXRpbC5maWx0ZXJEYXRhKHJlc3VsdCwgc3RhdGUpO1xuICAgIHJlc3VsdCA9IFRhYmxlVXRpbC5zb3J0RGF0YShyZXN1bHQsIHN0YXRlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIHNvcnREYXRhPFQ+KGRhdGE6IFRbXSwgc3RhdGU6IEZpbHRlclN0YXRlKTogVFtdIHtcbiAgICBsZXQgcmVzdWx0OiBUW10gPSBkYXRhO1xuICAgIGNvbnN0IGZ1bmMgPSAoc29ydFBhcmFtOiBTb3J0UGFyYW0pID0+IHtcbiAgICAgIHJlc3VsdCA9IFRhYmxlVXRpbC5zb3J0KHJlc3VsdCwgc29ydFBhcmFtKTtcbiAgICB9O1xuICAgIGlmIChzdGF0ZT8uc29ydFBhcmFtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgc3RhdGUuc29ydFBhcmFtcy5mb3JFYWNoKGZ1bmMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIGZpbHRlckRhdGE8VD4oZGF0YTogVFtdLCBzdGF0ZTogRmlsdGVyU3RhdGUpOiBUW10ge1xuICAgIGxldCByZXN1bHQ6IFRbXSA9IGRhdGE7XG4gICAgaWYgKHN0YXRlPy5zdHJpbmdGaWx0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN0cmluZ0ZpbHRlciA9IChmaWx0ZXI6IFN0cmluZ0ZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyU3RyaW5nKHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5zdHJpbmdGaWx0ZXJzLmZvckVhY2goc3RyaW5nRmlsdGVyKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlPy5kYXRlRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBkYXRlRmlsdGVyID0gKGZpbHRlcjogRGF0ZUZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyRGF0ZShyZXN1bHQsIGZpbHRlcik7XG4gICAgICB9O1xuICAgICAgc3RhdGUuZGF0ZUZpbHRlcnMuZm9yRWFjaChkYXRlRmlsdGVyKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlPy5udW1lcmljRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBudW1lcmljRmlsdGVyID0gKGZpbHRlcjogTnVtZXJpY0ZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyTnVtYmVyKHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5udW1lcmljRmlsdGVycy5mb3JFYWNoKG51bWVyaWNGaWx0ZXIpO1xuICAgIH1cbiAgICBpZiAoc3RhdGU/Lmxpc3RGaWx0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpc3RGaWx0ZXIgPSAoZmlsdGVyOiBMaXN0RmlsdGVyKSA9PiB7XG4gICAgICAgIHJlc3VsdCA9IFRhYmxlVXRpbC5maWx0ZXJMaXN0KHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5saXN0RmlsdGVycy5mb3JFYWNoKGxpc3RGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIGZpbHRlclN0cmluZzxUPihkYXRhOiBUW10sIGZpbHRlcjogU3RyaW5nRmlsdGVyKTogVFtdIHtcbiAgICBpZiAoZmlsdGVyLnZhbHVlID09PSBudWxsIHx8IGZpbHRlci52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFN0cmluZ0ZpbHRlclR5cGUuRW5kc1dpdGgpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1bZmlsdGVyLmZpZWxkXT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aChmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSBTdHJpbmdGaWx0ZXJUeXBlLkVxdWFscykge1xuICAgICAgICByZXR1cm4gaXRlbVtmaWx0ZXIuZmllbGRdPy50b0xvd2VyQ2FzZSgpID09PSBmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFN0cmluZ0ZpbHRlclR5cGUuU3RhcnRzV2l0aCkge1xuICAgICAgICByZXR1cm4gaXRlbVtmaWx0ZXIuZmllbGRdPy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtW2ZpbHRlci5maWVsZF0/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCkpID49IDA7XG4gICAgfTtcbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoZmlsdGVyU3RyaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJEYXRlPFQ+KGRhdGE6IFRbXSwgZmlsdGVyOiBEYXRlRmlsdGVyKTogVFtdIHtcbiAgICBjb25zdCBmaWx0ZXJEYXRlID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICByZXR1cm4gKGZpbHRlci52YWx1ZS5sZXNzVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUubGVzc1RoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmxlc3NUaGFuLmdldFRpbWUoKSA+PSBpdGVtW2ZpbHRlci5maWVsZF0uZ2V0VGltZSgpKSAmJlxuICAgICAgICAoZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuID09PSBudWxsIHx8IGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4uZ2V0VGltZSgpIDw9IGl0ZW1bZmlsdGVyLmZpZWxkXS5nZXRUaW1lKCkpO1xuICAgIH07XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZpbHRlckRhdGUpO1xuICB9XG5cbiAgc3RhdGljIGZpbHRlck51bWJlcjxUPihkYXRhOiBUW10sIGZpbHRlcjogTnVtZXJpY0ZpbHRlcik6IFRbXSB7XG4gICAgY29uc3QgZmlsdGVyTnVtYmVyID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICByZXR1cm4gKGZpbHRlci52YWx1ZS5sZXNzVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUubGVzc1RoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmxlc3NUaGFuID49IGl0ZW1bZmlsdGVyLmZpZWxkXSkgJiZcbiAgICAgICAgKGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuIDw9IGl0ZW1bZmlsdGVyLmZpZWxkXSkgJiZcbiAgICAgICAgKGZpbHRlci52YWx1ZS5lcXVhbHNUbyA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUuZXF1YWxzVG8gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmVxdWFsc1RvID09PSBpdGVtW2ZpbHRlci5maWVsZF0pO1xuICAgIH07XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZpbHRlck51bWJlcik7XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyTGlzdDxUPihkYXRhOiBUW10sIGZpbHRlcjogTGlzdEZpbHRlcik6IFRbXSB7XG4gICAgaWYgKGZpbHRlci52YWx1ZSA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIudmFsdWUubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlckxpc3QgPSAocm93OiBUKSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gcm93IGFzIGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gTGlzdEZpbHRlclR5cGUuRXhjbHVkZWQpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZS5pbmRleE9mKGl0ZW1bZmlsdGVyLmZpZWxkXSkgPCAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZS5pbmRleE9mKGl0ZW1bZmlsdGVyLmZpZWxkXSkgPj0gMDtcbiAgICB9O1xuICAgIHJldHVybiBkYXRhLmZpbHRlcihmaWx0ZXJMaXN0KTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0PFQ+KGRhdGE6IFRbXSwgc29ydFBhcmFtOiBTb3J0UGFyYW0pOiBUW10ge1xuICAgIGNvbnN0IHJlcyA9IGRhdGEuc29ydChzb3J0UGFyYW0uYXNjID8gVGFibGVVdGlsLmFzYyhzb3J0UGFyYW0uZmllbGQpIDogVGFibGVVdGlsLmRlc2Moc29ydFBhcmFtLmZpZWxkKSk7XG4gICAgcmV0dXJuIFsuLi5yZXNdO1xuICB9XG5cbiAgc3RhdGljIGRlc2MoZmllbGQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcyA9IChhOiBhbnksIGI6IGFueSkgPT4gYVtmaWVsZF0gPiBiW2ZpZWxkXSA/IC0xIDogMTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgc3RhdGljIGFzYyhmaWVsZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzID0gKGE6IGFueSwgYjogYW55KSA9PiBhW2ZpZWxkXSA8IGJbZmllbGRdID8gLTEgOiAxO1xuICAgIHJldHVybiByZXM7XG4gIH1cbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdXRpbC90YWJsZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFJdkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFJM0UsTUFBTSxPQUFPLFNBQVM7SUFDYixNQUFNLENBQUMsZUFBZSxDQUFDLE1BQW1CO1FBQy9DLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUksSUFBUyxFQUFFLEtBQWtCO1FBQzdDLElBQUksTUFBTSxHQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1QixNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFJLElBQVMsRUFBRSxLQUFrQjtRQUM5QyxJQUFJLE1BQU0sR0FBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxF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QyxHQUFHLENBQUMsS0FBYTtRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtBcnJheVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHtTb3J0UGFyYW19IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9zb3J0LXBhcmFtJztcbmltcG9ydCB7TGlzdEZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2xpc3QtZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQge0xpc3RGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9saXN0LWZpbHRlcic7XG5pbXBvcnQge051bWVyaWNGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9udW1lcmljLWZpbHRlcic7XG5pbXBvcnQge0RhdGVGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9kYXRlLWZpbHRlcic7XG5pbXBvcnQge1N0cmluZ0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL3N0cmluZy1maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7U3RyaW5nRmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc3RyaW5nLWZpbHRlcic7XG5pbXBvcnQge0ZpbHRlclN0YXRlfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlVXRpbCB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0Q29sdW1uTGVhdmVzKGNvbHVtbjogVGFibGVDb2x1bW4pOiBUYWJsZUNvbHVtbltdIHwgbnVsbCB7XG4gICAgaWYgKGNvbHVtbj8uY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIEFycmF5VXRpbC5mbGF0dGVuKGNvbHVtbi5jb2x1bW5zLCAnY29sdW1ucycsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXREYXRhPFQ+KGRhdGE6IFRbXSwgc3RhdGU6IEZpbHRlclN0YXRlKTogVFtdIHtcbiAgICBsZXQgcmVzdWx0OiBUW10gPSBbLi4uZGF0YV07XG4gICAgcmVzdWx0ID0gVGFibGVVdGlsLmZpbHRlckRhdGEocmVzdWx0LCBzdGF0ZSk7XG4gICAgcmVzdWx0ID0gVGFibGVVdGlsLnNvcnREYXRhKHJlc3VsdCwgc3RhdGUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgc29ydERhdGE8VD4oZGF0YTogVFtdLCBzdGF0ZTogRmlsdGVyU3RhdGUpOiBUW10ge1xuICAgIGxldCByZXN1bHQ6IFRbXSA9IFsuLi5kYXRhXTtcbiAgICBjb25zdCBmdW5jID0gKHNvcnRQYXJhbTogU29ydFBhcmFtKSA9PiB7XG4gICAgICByZXN1bHQgPSBUYWJsZVV0aWwuc29ydChyZXN1bHQsIHNvcnRQYXJhbSk7XG4gICAgfTtcbiAgICBpZiAoc3RhdGU/LnNvcnRQYXJhbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN0YXRlLnNvcnRQYXJhbXMuZm9yRWFjaChmdW5jKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJEYXRhPFQ+KGRhdGE6IFRbXSwgc3RhdGU6IEZpbHRlclN0YXRlKTogVFtdIHtcbiAgICBsZXQgcmVzdWx0OiBUW10gPSBbLi4uZGF0YV07XG4gICAgaWYgKHN0YXRlPy5zdHJpbmdGaWx0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN0cmluZ0ZpbHRlciA9IChmaWx0ZXI6IFN0cmluZ0ZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyU3RyaW5nKHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5zdHJpbmdGaWx0ZXJzLmZvckVhY2goc3RyaW5nRmlsdGVyKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlPy5kYXRlRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBkYXRlRmlsdGVyID0gKGZpbHRlcjogRGF0ZUZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyRGF0ZShyZXN1bHQsIGZpbHRlcik7XG4gICAgICB9O1xuICAgICAgc3RhdGUuZGF0ZUZpbHRlcnMuZm9yRWFjaChkYXRlRmlsdGVyKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlPy5udW1lcmljRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBudW1lcmljRmlsdGVyID0gKGZpbHRlcjogTnVtZXJpY0ZpbHRlcikgPT4ge1xuICAgICAgICByZXN1bHQgPSBUYWJsZVV0aWwuZmlsdGVyTnVtYmVyKHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5udW1lcmljRmlsdGVycy5mb3JFYWNoKG51bWVyaWNGaWx0ZXIpO1xuICAgIH1cbiAgICBpZiAoc3RhdGU/Lmxpc3RGaWx0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpc3RGaWx0ZXIgPSAoZmlsdGVyOiBMaXN0RmlsdGVyKSA9PiB7XG4gICAgICAgIHJlc3VsdCA9IFRhYmxlVXRpbC5maWx0ZXJMaXN0KHJlc3VsdCwgZmlsdGVyKTtcbiAgICAgIH07XG4gICAgICBzdGF0ZS5saXN0RmlsdGVycy5mb3JFYWNoKGxpc3RGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIGZpbHRlclN0cmluZzxUPihkYXRhOiBUW10sIGZpbHRlcjogU3RyaW5nRmlsdGVyKTogVFtdIHtcbiAgICBpZiAoZmlsdGVyLnZhbHVlID09PSBudWxsIHx8IGZpbHRlci52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFN0cmluZ0ZpbHRlclR5cGUuRW5kc1dpdGgpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1bZmlsdGVyLmZpZWxkXT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aChmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSBTdHJpbmdGaWx0ZXJUeXBlLkVxdWFscykge1xuICAgICAgICByZXR1cm4gaXRlbVtmaWx0ZXIuZmllbGRdPy50b0xvd2VyQ2FzZSgpID09PSBmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFN0cmluZ0ZpbHRlclR5cGUuU3RhcnRzV2l0aCkge1xuICAgICAgICByZXR1cm4gaXRlbVtmaWx0ZXIuZmllbGRdPy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtW2ZpbHRlci5maWVsZF0/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIudmFsdWU/LnRvTG93ZXJDYXNlKCkpID49IDA7XG4gICAgfTtcbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoZmlsdGVyU3RyaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJEYXRlPFQ+KGRhdGE6IFRbXSwgZmlsdGVyOiBEYXRlRmlsdGVyKTogVFtdIHtcbiAgICBjb25zdCBmaWx0ZXJEYXRlID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICByZXR1cm4gKGZpbHRlci52YWx1ZS5sZXNzVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUubGVzc1RoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmxlc3NUaGFuLmdldFRpbWUoKSA+PSBpdGVtW2ZpbHRlci5maWVsZF0uZ2V0VGltZSgpKSAmJlxuICAgICAgICAoZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuID09PSBudWxsIHx8IGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4uZ2V0VGltZSgpIDw9IGl0ZW1bZmlsdGVyLmZpZWxkXS5nZXRUaW1lKCkpO1xuICAgIH07XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZpbHRlckRhdGUpO1xuICB9XG5cbiAgc3RhdGljIGZpbHRlck51bWJlcjxUPihkYXRhOiBUW10sIGZpbHRlcjogTnVtZXJpY0ZpbHRlcik6IFRbXSB7XG4gICAgY29uc3QgZmlsdGVyTnVtYmVyID0gKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHJvdyBhcyBhbnk7XG4gICAgICByZXR1cm4gKGZpbHRlci52YWx1ZS5sZXNzVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUubGVzc1RoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmxlc3NUaGFuID49IGl0ZW1bZmlsdGVyLmZpZWxkXSkgJiZcbiAgICAgICAgKGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuIDw9IGl0ZW1bZmlsdGVyLmZpZWxkXSkgJiZcbiAgICAgICAgKGZpbHRlci52YWx1ZS5lcXVhbHNUbyA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUuZXF1YWxzVG8gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmlsdGVyLnZhbHVlLmVxdWFsc1RvID09PSBpdGVtW2ZpbHRlci5maWVsZF0pO1xuICAgIH07XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZpbHRlck51bWJlcik7XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyTGlzdDxUPihkYXRhOiBUW10sIGZpbHRlcjogTGlzdEZpbHRlcik6IFRbXSB7XG4gICAgaWYgKGZpbHRlci52YWx1ZSA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIudmFsdWUubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlckxpc3QgPSAocm93OiBUKSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gcm93IGFzIGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gTGlzdEZpbHRlclR5cGUuRXhjbHVkZWQpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZS5pbmRleE9mKGl0ZW1bZmlsdGVyLmZpZWxkXSkgPCAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZS5pbmRleE9mKGl0ZW1bZmlsdGVyLmZpZWxkXSkgPj0gMDtcbiAgICB9O1xuICAgIHJldHVybiBkYXRhLmZpbHRlcihmaWx0ZXJMaXN0KTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0PFQ+KGRhdGE6IFRbXSwgc29ydFBhcmFtOiBTb3J0UGFyYW0pOiBUW10ge1xuICAgIGNvbnN0IHJlcyA9IGRhdGEuc29ydChzb3J0UGFyYW0uYXNjID8gVGFibGVVdGlsLmFzYyhzb3J0UGFyYW0uZmllbGQpIDogVGFibGVVdGlsLmRlc2Moc29ydFBhcmFtLmZpZWxkKSk7XG4gICAgcmV0dXJuIFsuLi5yZXNdO1xuICB9XG5cbiAgc3RhdGljIGRlc2MoZmllbGQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcyA9IChhOiBhbnksIGI6IGFueSkgPT4gYVtmaWVsZF0gPiBiW2ZpZWxkXSA/IC0xIDogMTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgc3RhdGljIGFzYyhmaWVsZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzID0gKGE6IGFueSwgYjogYW55KSA9PiBhW2ZpZWxkXSA8IGJbZmllbGRdID8gLTEgOiAxO1xuICAgIHJldHVybiByZXM7XG4gIH1cbn1cbiJdfQ==
@@ -118,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
118
118
  type: HostListener,
119
119
  args: ['document:contextmenu', ['$event']]
120
120
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssR0FNTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFTOUUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsMkJBQTJCO0lBaUJuQyxZQUVxQixTQUFjLEVBQ2QsV0FBdUIsRUFDdkIsUUFBaUMsRUFDakMsU0FBbUIsRUFDbkIsS0FBYSxFQUNiLElBQXVCLEVBQ2xDLE1BQW9CO1FBRTVCLEtBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBUjdDLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUF5QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBbkJyQixvQkFBZSxHQUEwQixFQUFFLENBQUM7SUFzQnJELENBQUM7SUFwQkQsSUFBSSxlQUFlO1FB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QyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxjQUFjO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2lIQXZIVSxvQkFBb0Isa0JBbUJyQixRQUFRO3FHQW5CUCxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs7MEJBb0JJLE1BQU07MkJBQUMsUUFBUTtrTkFiVCxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBeUJOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3ZDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYWpDLGFBQWE7c0JBRlosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0R5bmFtaWNDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZS9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FycmF5VXRpbH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQge0RvbVV0aWx9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2RvbS11dGlsJztcbmltcG9ydCB7UG9zaXRpb25VdGlsfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9wb3NpdGlvbi11dGlsJztcbmltcG9ydCB7RHluYW1pY0NvbnRlbnRCYXNlRGlyZWN0aXZlfSBmcm9tICcuLi9keW5hbWljLWNvbnRlbnQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDbGlja1NlcnZpY2V9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlL2NsaWNrLnNlcnZpY2UnO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgdGFrZVdoaWxlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0b0Nsb3NlSWdub3JlQ2FzZX0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnRyYWN0L2F1dG8tY2xvc2UtaWdub3JlLWNhc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YUNvbnRleHRNZW51XScsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51RGlyZWN0aXZlXG4gIGV4dGVuZHMgRHluYW1pY0NvbnRlbnRCYXNlRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICAvKipcbiAgICog0KHRgtGA0L7QutCwLCDRiNCw0LHQu9C+0L0g0LjQu9C4INC60L7QvNC/0L7QvdC10L3RgiDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtC10LrRgdGC0L3QvtCz0L4g0LzQtdC90Y5cbiAgICovXG4gIEBJbnB1dCgpIHRldGFDb250ZXh0TWVudTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PjtcbiAgQElucHV0KCkgYXV0b0Nsb3NlSWdub3JlOiBBdXRvQ2xvc2VJZ25vcmVDYXNlW10gPSBbXTtcblxuICBnZXQgX2R5bmFtaWNDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRldGFDb250ZXh0TWVudTtcbiAgfVxuXG4gIHByaXZhdGUgX2V2ZW50UG9pbnQ6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9kb2N1bWVudDogYW55LFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3NlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfem9uZTogTmdab25lLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9jbGljazogQ2xpY2tTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKF9kb2N1bWVudCwgX2VsZW1lbnRSZWYsIF9zZXJ2aWNlLCBfaW5qZWN0b3IsIF96b25lLCBfY2RyKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgc2hvd0NvbnRlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZXRhQ29udGV4dE1lbnUgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVNZW51KGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgJiZcbiAgICAgIERvbVV0aWwuY2xpY2tlZEluc2lkZSh0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgZXZlbnQpXG4gICAgKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3BlbiAmJiB0aGlzLl9jb21wb25lbnRSZWYgJiYgKCFEb21VdGlsLmNsaWNrZWRJbnNpZGUodGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBldmVudCkgfHwgdGhpcy5hdXRvQ2xvc2VJZ25vcmUuaW5kZXhPZignaW5zaWRlJykgPCAwKSkge1xuICAgICAgdGhpcy5kZXN0cm95Q29udGVudFJlZigpO1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgLy8gbWVyZ2UodGhpcy5fY2xpY2suY2xpY2ssIHRoaXMuX2NsaWNrLmNvbnRleHRNZW51KVxuICAgIC8vICAgLnBpcGUoXG4gICAgLy8gICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgLy8gICAgIGZpbHRlcigoKSA9PiB0aGlzLl9vcGVuKSxcbiAgICAvLyAgICAgZmlsdGVyKCgpID0+IHRoaXMuX2NvbXBvbmVudFJlZiAhPSBudWxsKSxcbiAgICAvLyAgICAgZmlsdGVyKFxuICAgIC8vICAgICAgIChldmVudDogTW91c2VFdmVudCkgPT5cbiAgICAvLyAgICAgICAgICFEb21VdGlsLmNsaWNrZWRJbnNpZGUoXG4gICAgLy8gICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LFxuICAgIC8vICAgICAgICAgICBldmVudFxuICAgIC8vICAgICAgICAgKSB8fCB0aGlzLmF1dG9DbG9zZUlnbm9yZS5pbmRleE9mKCdpbnNpZGUnKSA8IDBcbiAgICAvLyAgICAgKSxcbiAgICAvLyAgICAgdGFwKChfKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5kZXN0cm95Q29udGVudFJlZigpO1xuICAgIC8vICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAvLyAgICAgfSlcbiAgICAvLyAgIClcbiAgICAvLyAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0UG9zaXRpb24oKSB7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZiAmJiB0aGlzLl9vcGVuKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IFBvc2l0aW9uVXRpbC5nZXRQb3NpdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIHRvcDogdGhpcy5fZXZlbnRQb2ludC55LFxuICAgICAgICAgIGJvdHRvbTogdGhpcy5fZXZlbnRQb2ludC55LFxuICAgICAgICAgIGxlZnQ6IHRoaXMuX2V2ZW50UG9pbnQueCxcbiAgICAgICAgICByaWdodDogdGhpcy5fZXZlbnRQb2ludC54LFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgdGhpcy5hbGlnbixcbiAgICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduXG4gICAgICApO1xuICAgICAgUG9zaXRpb25VdGlsLnNldEVsZW1lbnRQb3NpdGlvbihcbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHBvc2l0aW9uXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWVudShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRldGFDb250ZXh0TWVudSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2V2ZW50UG9pbnQgPSBldmVudDtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZUNvbnRlbnRSZWYoKTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuY2xhc3NOYW1lID0gW1xuICAgICAgLi4uQXJyYXlVdGlsLmFzQXJyYXkodGhpcy5jbGFzc05hbWUpLFxuICAgICAgJ2NvbnRleHQtbWVudScsXG4gICAgXTtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxufVxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssR0FNTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFPOUUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsMkJBQTJCO0lBaUJuQyxZQUVxQixTQUFjLEVBQ2QsV0FBdUIsRUFDdkIsUUFBaUMsRUFDakMsU0FBbUIsRUFDbkIsS0FBYSxFQUNiLElBQXVCLEVBQ2xDLE1BQW9CO1FBRTVCLEtBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBUjdDLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUF5QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBbkJyQixvQkFBZSxHQUEwQixFQUFFLENBQUM7SUFzQnJELENBQUM7SUFwQkQsSUFBSSxlQUFlO1FB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QyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxjQUFjO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2lIQXZIVSxvQkFBb0Isa0JBbUJyQixRQUFRO3FHQW5CUCxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs7MEJBb0JJLE1BQU07MkJBQUMsUUFBUTtrTkFiVCxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBeUJOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3ZDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYWpDLGFBQWE7c0JBRlosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0R5bmFtaWNDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZS9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FycmF5VXRpbH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQge0RvbVV0aWx9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2RvbS11dGlsJztcbmltcG9ydCB7UG9zaXRpb25VdGlsfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9wb3NpdGlvbi11dGlsJztcbmltcG9ydCB7RHluYW1pY0NvbnRlbnRCYXNlRGlyZWN0aXZlfSBmcm9tICcuLi9keW5hbWljLWNvbnRlbnQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDbGlja1NlcnZpY2V9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlL2NsaWNrLnNlcnZpY2UnO1xuaW1wb3J0IHtBdXRvQ2xvc2VJZ25vcmVDYXNlfSBmcm9tICcuLi8uLi9jb21tb24vY29udHJhY3QvYXV0by1jbG9zZS1pZ25vcmUtY2FzZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhQ29udGV4dE1lbnVdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVEaXJlY3RpdmVcbiAgZXh0ZW5kcyBEeW5hbWljQ29udGVudEJhc2VEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIC8qKlxuICAgKiDQodGC0YDQvtC60LAsINGI0LDQsdC70L7QvSDQuNC70Lgg0LrQvtC80L/QvtC90LXQvdGCINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0LXQutGB0YLQvdC+0LPQviDQvNC10L3RjlxuICAgKi9cbiAgQElucHV0KCkgdGV0YUNvbnRleHRNZW51OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+O1xuICBASW5wdXQoKSBhdXRvQ2xvc2VJZ25vcmU6IEF1dG9DbG9zZUlnbm9yZUNhc2VbXSA9IFtdO1xuXG4gIGdldCBfZHluYW1pY0NvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGV0YUNvbnRleHRNZW51O1xuICB9XG5cbiAgcHJpdmF0ZSBfZXZlbnRQb2ludDoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVClcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2RvY3VtZW50OiBhbnksXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfc2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF96b25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2NsaWNrOiBDbGlja1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoX2RvY3VtZW50LCBfZWxlbWVudFJlZiwgX3NlcnZpY2UsIF9pbmplY3RvciwgX3pvbmUsIF9jZHIpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxuICBzaG93Q29udGVudChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRldGFDb250ZXh0TWVudSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZU1lbnUoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBjbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiAmJlxuICAgICAgRG9tVXRpbC5jbGlja2VkSW5zaWRlKHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuICYmIHRoaXMuX2NvbXBvbmVudFJlZiAmJiAoIURvbVV0aWwuY2xpY2tlZEluc2lkZSh0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcbiAgICAgIGV2ZW50KSB8fCB0aGlzLmF1dG9DbG9zZUlnbm9yZS5pbmRleE9mKCdpbnNpZGUnKSA8IDApKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lDb250ZW50UmVmKCk7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyBtZXJnZSh0aGlzLl9jbGljay5jbGljaywgdGhpcy5fY2xpY2suY29udGV4dE1lbnUpXG4gICAgLy8gICAucGlwZShcbiAgICAvLyAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSxcbiAgICAvLyAgICAgZmlsdGVyKCgpID0+IHRoaXMuX29wZW4pLFxuICAgIC8vICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fY29tcG9uZW50UmVmICE9IG51bGwpLFxuICAgIC8vICAgICBmaWx0ZXIoXG4gICAgLy8gICAgICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PlxuICAgIC8vICAgICAgICAgIURvbVV0aWwuY2xpY2tlZEluc2lkZShcbiAgICAvLyAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgLy8gICAgICAgICAgIGV2ZW50XG4gICAgLy8gICAgICAgICApIHx8IHRoaXMuYXV0b0Nsb3NlSWdub3JlLmluZGV4T2YoJ2luc2lkZScpIDwgMFxuICAgIC8vICAgICApLFxuICAgIC8vICAgICB0YXAoKF8pID0+IHtcbiAgICAvLyAgICAgICB0aGlzLmRlc3Ryb3lDb250ZW50UmVmKCk7XG4gICAgLy8gICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgKVxuICAgIC8vICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmICYmIHRoaXMuX29wZW4pIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gUG9zaXRpb25VdGlsLmdldFBvc2l0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgdG9wOiB0aGlzLl9ldmVudFBvaW50LnksXG4gICAgICAgICAgYm90dG9tOiB0aGlzLl9ldmVudFBvaW50LnksXG4gICAgICAgICAgbGVmdDogdGhpcy5fZXZlbnRQb2ludC54LFxuICAgICAgICAgIHJpZ2h0OiB0aGlzLl9ldmVudFBvaW50LngsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICB0aGlzLmFsaWduLFxuICAgICAgICB0aGlzLnZlcnRpY2FsQWxpZ25cbiAgICAgICk7XG4gICAgICBQb3NpdGlvblV0aWwuc2V0RWxlbWVudFBvc2l0aW9uKFxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNZW51KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGV0YUNvbnRleHRNZW51ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZXZlbnRQb2ludCA9IGV2ZW50O1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlQ29udGVudFJlZigpO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGFzc05hbWUgPSBbXG4gICAgICAuLi5BcnJheVV0aWwuYXNBcnJheSh0aGlzLmNsYXNzTmFtZSksXG4gICAgICAnY29udGV4dC1tZW51JyxcbiAgICBdO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICB9XG59XG4iXX0=
@@ -143,7 +143,7 @@ export class OnlyNumberDirective {
143
143
  value = '0.0';
144
144
  }
145
145
  const valid = new RegExp(regex).test(value.toString());
146
- this._control.control.setValue(valid ? value : this._previousValue ?? 0);
146
+ this._control.control.setValue(valid ? parseFloat(value) : parseFloat(this._previousValue) ?? 0);
147
147
  }
148
148
  }
149
149
  OnlyNumberDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OnlyNumberDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
173
173
  type: HostListener,
174
174
  args: ['keydown', ['$event']]
175
175
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1udW1iZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RpcmVjdGl2ZS9vbmx5LW51bWJlci9vbmx5LW51bWJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFNekUsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFBb0IsV0FBdUIsRUFBVSxRQUFtQjtRQUFwRCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFmL0QsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxHQUFHLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIscUJBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBQzlCLHFCQUFnQixHQUFHLG9CQUFvQixDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsc0JBQXNCLENBQUM7UUFFL0IsZUFBVSxHQUFXLEdBQUcsQ0FBQztJQUcxQyxDQUFDO0lBRW1DLFFBQVEsQ0FBQyxDQUFNO1FBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRWtDLE9BQU8sQ0FBQyxDQUFNO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEs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LENBQUM7WUFDbEIsS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDYjtRQUNELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ2Y7UUFDRCxNQUFNLEtBQUssR0FBWSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7O2dIQXZLVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO3lIQUVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQWM4QixRQUFRO3NCQUEzQyxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPQyxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRSSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhT25seU51bWJlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBPbmx5TnVtYmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgdGV0YU9ubHlOdW1iZXIgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0RlY2ltYWxzID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dTaWduID0gdHJ1ZTtcbiAgQElucHV0KCkgZGVjaW1hbFNlcGFyYXRvciA9ICcuJztcbiAgQElucHV0KCkgY29tbWFTZXBhcmF0b3IgPSAnLCc7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNWYWx1ZSA9ICcnO1xuXG4gIHByaXZhdGUgX2ludGVnZXJVbnNpZ25lZCA9ICdeWzAtOV0qJCc7XG4gIHByaXZhdGUgX2ludGVnZXJTaWduZWQgPSAnXi0/WzAtOV0rJCc7XG4gIHByaXZhdGUgX2RlY2ltYWxVbnNpZ25lZCA9ICdeWzAtOV0rKC5bMC05XSspPyQnO1xuICBwcml2YXRlIF9kZWNpbWFsU2lnbmVkID0gJ14tP1swLTldKyguWzAtOV0rKT8kJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9taW51c1NpZ246IHN0cmluZyA9ICctJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9jb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pIG9uQ2hhbmdlKGU6IGFueSkge1xuICAgIGlmICh0aGlzLnRldGFPbmx5TnVtYmVyID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSkgb25QYXN0ZShlOiBhbnkpIHtcbiAgICBpZiAodGhpcy50ZXRhT25seU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnRldGFPbmx5TnVtYmVyID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID1cbiAgICAgIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5zZWxlY3Rpb25TdGFydCA/PyAwO1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWU6IHN0cmluZyA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICBjb25zdCBjb250cm9sT3JDb21tYW5kID0gZS5jdHJsS2V5ID09PSB0cnVlIHx8IGUubWV0YUtleSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzaWduRXhpc3RzID0gb3JpZ2luYWxWYWx1ZS5pbmNsdWRlcygnLScpO1xuICAgIGNvbnN0IHNlcGFyYXRvckV4aXN0cyA9XG4gICAgICBvcmlnaW5hbFZhbHVlLmluY2x1ZGVzKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgfHxcbiAgICAgIG9yaWdpbmFsVmFsdWUuaW5jbHVkZXModGhpcy5jb21tYVNlcGFyYXRvcik7XG5cbiAgICBjb25zdCBhbGxvd2VkS2V5cyA9IFtcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAnQXJyb3dSaWdodCcsXG4gICAgICAnRGVsZXRlJyxcbiAgICAgICdFc2NhcGUnLFxuICAgICAgJ1RhYicsXG4gICAgICAnSG9tZScsXG4gICAgICAnRW5kJyxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VwYXJhdG9ySXNDbG9zZVRvU2lnbiA9IHNpZ25FeGlzdHMgJiYgY3Vyc29yUG9zaXRpb24gPD0gMTtcbiAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWxzICYmICFzZXBhcmF0b3JJc0Nsb3NlVG9TaWduICYmICFzZXBhcmF0b3JFeGlzdHMpIHtcbiAgICAgIC8vIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcuJykge1xuICAgICAgYWxsb3dlZEtleXMucHVzaCgnLicpO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vIGFsbG93ZWRLZXlzLnB1c2goJywnKTtcbiAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdENoYXJhY3RlcklzU2VwYXJhdG9yID1cbiAgICAgIG9yaWdpbmFsVmFsdWUuY2hhckF0KDApICE9PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hbGxvd1NpZ24gJiZcbiAgICAgICFzaWduRXhpc3RzICYmXG4gICAgICBmaXJzdENoYXJhY3RlcklzU2VwYXJhdG9yICYmXG4gICAgICBjdXJzb3JQb3NpdGlvbiA9PT0gMFxuICAgICkge1xuICAgICAgYWxsb3dlZEtleXMucHVzaCgnLScpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGFsbG93ZWRLZXlzLmluZGV4T2YoZS5rZXkpICE9PSAtMSB8fFxuICAgICAgKGUuY29kZSA9PT0gJ0tleUEnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAoZS5jb2RlID09PSAnS2V5QycgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgIChlLmNvZGUgPT09ICdLZXlWJyAmJiBjb250cm9sT3JDb21tYW5kKSB8fFxuICAgICAgKGUuY29kZSA9PT0gJ0tleVonICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAoZS5jb2RlID09PSAnS2V5WCcgJiYgY29udHJvbE9yQ29tbWFuZClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZSA9IG9yaWdpbmFsVmFsdWU7XG5cbiAgICBjb25zdCBpc051bWJlciA9IG5ldyBSZWdFeHAodGhpcy5faW50ZWdlclVuc2lnbmVkKS50ZXN0KGUua2V5KTtcbiAgICBpZiAoaXNOdW1iZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUua2V5ID09PSAnLCcgJiYgb3JpZ2luYWxWYWx1ZS5pbmRleE9mKCcuJykgPCAwKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9XG4gICAgICAgICAgYCR7b3JpZ2luYWxWYWx1ZS5zbGljZSgwLCBjdXJzb3JQb3NpdGlvbil9LiR7b3JpZ2luYWxWYWx1ZS5zbGljZShjdXJzb3JQb3NpdGlvbil9YDtcbiAgICAgIH1cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZXRhT25seU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcsJywgJy4nKS50cmltKCk7XG4gICAgbGV0IHJlZ2V4OiBzdHJpbmcgPSB0aGlzLl9pbnRlZ2VyVW5zaWduZWQ7XG4gICAgaWYgKCF0aGlzLmFsbG93RGVjaW1hbHMgJiYgIXRoaXMuYWxsb3dTaWduKSB7XG4gICAgICByZWdleCA9IHRoaXMuX2ludGVnZXJVbnNpZ25lZDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFsbG93RGVjaW1hbHMgJiYgdGhpcy5hbGxvd1NpZ24pIHtcbiAgICAgIHJlZ2V4ID0gdGhpcy5faW50ZWdlclNpZ25lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFscyAmJiAhdGhpcy5hbGxvd1NpZ24pIHtcbiAgICAgIHJlZ2V4ID0gdGhpcy5fZGVjaW1hbFVuc2lnbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWxzICYmIHRoaXMuYWxsb3dTaWduKSB7XG4gICAgICByZWdleCA9IHRoaXMuX2RlY2ltYWxTaWduZWQ7XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICB2YWx1ZSA9IDAgKyB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIGlmIChsYXN0Q2hhcmFjdGVyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKyAwO1xuICAgIH1cblxuICAgIGxldCBzaWduZWRWYWx1ZSA9IGZhbHNlO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gdGhpcy5fbWludXNTaWduKSB7XG4gICAgICBzaWduZWRWYWx1ZSA9IHRydWU7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxKTtcbiAgICAgIGZpcnN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICAgIH1cbiAgICBsZXQgc2Vjb25kQ2hhciA9IHZhbHVlLmNoYXJBdCgxKTtcbiAgICB3aGlsZSAoXG4gICAgICBmaXJzdENoYXJhY3RlciA9PT0gJzAnICYmXG4gICAgICBzZWNvbmRDaGFyICE9PSAnJyAmJlxuICAgICAgc2Vjb25kQ2hhciAhPT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEpO1xuICAgICAgZmlyc3RDaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMCk7XG4gICAgICBzZWNvbmRDaGFyID0gdmFsdWUuY2hhckF0KDEpO1xuICAgIH1cbiAgICBpZiAoc2lnbmVkVmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5fbWludXNTaWduICsgdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVQYXJ0cyA9IHZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgY29uc3QgbmF0dXJhbFBhcnQgPSB2YWx1ZVBhcnRzPy5bMF07XG4gICAgbGV0IGRlY2ltYWxQYXJ0ID0gdmFsdWVQYXJ0cz8uWzFdO1xuXG4gICAgaWYgKGRlY2ltYWxQYXJ0ICE9IG51bGwgJiYgL14wKyQvLnRlc3QoZGVjaW1hbFBhcnQpKSB7XG4gICAgICBkZWNpbWFsUGFydCA9ICcwJztcbiAgICAgIHZhbHVlID0gbmF0dXJhbFBhcnQgKyAnLicgKyBkZWNpbWFsUGFydDtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnLTAnKSB7XG4gICAgICB2YWx1ZSA9ICcwJztcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnLTAuMCcpIHtcbiAgICAgIHZhbHVlID0gJzAuMCc7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gbmV3IFJlZ0V4cChyZWdleCkudGVzdCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB0aGlzLl9jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUodmFsaWQgPyB2YWx1ZSA6IHRoaXMuX3ByZXZpb3VzVmFsdWUgPz8gMCk7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1udW1iZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RpcmVjdGl2ZS9vbmx5LW51bWJlci9vbmx5LW51bWJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFNekUsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFBb0IsV0FBdUIsRUFBVSxRQUFtQjtRQUFwRCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFmL0QsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxHQUFHLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIscUJBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBQzlCLHFCQUFnQixHQUFHLG9CQUFvQixDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsc0JBQXNCLENBQUM7UUFFL0IsZUFBVSxHQUFXLEdBQUcsQ0FBQztJQUcxQyxDQUFDO0lBRW1DLFFBQVEsQ0FBQyxDQUFNO1FBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRWtDLE9BQU8sQ0FBQyxDQUFNO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEs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LENBQUM7WUFDbEIsS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDYjtRQUNELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ2Y7UUFDRCxNQUFNLEtBQUssR0FBWSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7O2dIQXZLVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO3lIQUVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQWM4QixRQUFRO3NCQUEzQyxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPQyxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRSSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhT25seU51bWJlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBPbmx5TnVtYmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgdGV0YU9ubHlOdW1iZXIgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0RlY2ltYWxzID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dTaWduID0gdHJ1ZTtcbiAgQElucHV0KCkgZGVjaW1hbFNlcGFyYXRvciA9ICcuJztcbiAgQElucHV0KCkgY29tbWFTZXBhcmF0b3IgPSAnLCc7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNWYWx1ZSA9ICcnO1xuXG4gIHByaXZhdGUgX2ludGVnZXJVbnNpZ25lZCA9ICdeWzAtOV0qJCc7XG4gIHByaXZhdGUgX2ludGVnZXJTaWduZWQgPSAnXi0/WzAtOV0rJCc7XG4gIHByaXZhdGUgX2RlY2ltYWxVbnNpZ25lZCA9ICdeWzAtOV0rKC5bMC05XSspPyQnO1xuICBwcml2YXRlIF9kZWNpbWFsU2lnbmVkID0gJ14tP1swLTldKyguWzAtOV0rKT8kJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9taW51c1NpZ246IHN0cmluZyA9ICctJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9jb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pIG9uQ2hhbmdlKGU6IGFueSkge1xuICAgIGlmICh0aGlzLnRldGFPbmx5TnVtYmVyID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSkgb25QYXN0ZShlOiBhbnkpIHtcbiAgICBpZiAodGhpcy50ZXRhT25seU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnRldGFPbmx5TnVtYmVyID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID1cbiAgICAgIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5zZWxlY3Rpb25TdGFydCA/PyAwO1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWU6IHN0cmluZyA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICBjb25zdCBjb250cm9sT3JDb21tYW5kID0gZS5jdHJsS2V5ID09PSB0cnVlIHx8IGUubWV0YUtleSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzaWduRXhpc3RzID0gb3JpZ2luYWxWYWx1ZS5pbmNsdWRlcygnLScpO1xuICAgIGNvbnN0IHNlcGFyYXRvckV4aXN0cyA9XG4gICAgICBvcmlnaW5hbFZhbHVlLmluY2x1ZGVzKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgfHxcbiAgICAgIG9yaWdpbmFsVmFsdWUuaW5jbHVkZXModGhpcy5jb21tYVNlcGFyYXRvcik7XG5cbiAgICBjb25zdCBhbGxvd2VkS2V5cyA9IFtcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAnQXJyb3dSaWdodCcsXG4gICAgICAnRGVsZXRlJyxcbiAgICAgICdFc2NhcGUnLFxuICAgICAgJ1RhYicsXG4gICAgICAnSG9tZScsXG4gICAgICAnRW5kJyxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VwYXJhdG9ySXNDbG9zZVRvU2lnbiA9IHNpZ25FeGlzdHMgJiYgY3Vyc29yUG9zaXRpb24gPD0gMTtcbiAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWxzICYmICFzZXBhcmF0b3JJc0Nsb3NlVG9TaWduICYmICFzZXBhcmF0b3JFeGlzdHMpIHtcbiAgICAgIC8vIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcuJykge1xuICAgICAgYWxsb3dlZEtleXMucHVzaCgnLicpO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vIGFsbG93ZWRLZXlzLnB1c2goJywnKTtcbiAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdENoYXJhY3RlcklzU2VwYXJhdG9yID1cbiAgICAgIG9yaWdpbmFsVmFsdWUuY2hhckF0KDApICE9PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hbGxvd1NpZ24gJiZcbiAgICAgICFzaWduRXhpc3RzICYmXG4gICAgICBmaXJzdENoYXJhY3RlcklzU2VwYXJhdG9yICYmXG4gICAgICBjdXJzb3JQb3NpdGlvbiA9PT0gMFxuICAgICkge1xuICAgICAgYWxsb3dlZEtleXMucHVzaCgnLScpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGFsbG93ZWRLZXlzLmluZGV4T2YoZS5rZXkpICE9PSAtMSB8fFxuICAgICAgKGUuY29kZSA9PT0gJ0tleUEnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAoZS5jb2RlID09PSAnS2V5QycgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgIChlLmNvZGUgPT09ICdLZXlWJyAmJiBjb250cm9sT3JDb21tYW5kKSB8fFxuICAgICAgKGUuY29kZSA9PT0gJ0tleVonICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAoZS5jb2RlID09PSAnS2V5WCcgJiYgY29udHJvbE9yQ29tbWFuZClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZSA9IG9yaWdpbmFsVmFsdWU7XG5cbiAgICBjb25zdCBpc051bWJlciA9IG5ldyBSZWdFeHAodGhpcy5faW50ZWdlclVuc2lnbmVkKS50ZXN0KGUua2V5KTtcbiAgICBpZiAoaXNOdW1iZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUua2V5ID09PSAnLCcgJiYgb3JpZ2luYWxWYWx1ZS5pbmRleE9mKCcuJykgPCAwKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9XG4gICAgICAgICAgYCR7b3JpZ2luYWxWYWx1ZS5zbGljZSgwLCBjdXJzb3JQb3NpdGlvbil9LiR7b3JpZ2luYWxWYWx1ZS5zbGljZShjdXJzb3JQb3NpdGlvbil9YDtcbiAgICAgIH1cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZXRhT25seU51bWJlciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcsJywgJy4nKS50cmltKCk7XG4gICAgbGV0IHJlZ2V4OiBzdHJpbmcgPSB0aGlzLl9pbnRlZ2VyVW5zaWduZWQ7XG4gICAgaWYgKCF0aGlzLmFsbG93RGVjaW1hbHMgJiYgIXRoaXMuYWxsb3dTaWduKSB7XG4gICAgICByZWdleCA9IHRoaXMuX2ludGVnZXJVbnNpZ25lZDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFsbG93RGVjaW1hbHMgJiYgdGhpcy5hbGxvd1NpZ24pIHtcbiAgICAgIHJlZ2V4ID0gdGhpcy5faW50ZWdlclNpZ25lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFscyAmJiAhdGhpcy5hbGxvd1NpZ24pIHtcbiAgICAgIHJlZ2V4ID0gdGhpcy5fZGVjaW1hbFVuc2lnbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWxzICYmIHRoaXMuYWxsb3dTaWduKSB7XG4gICAgICByZWdleCA9IHRoaXMuX2RlY2ltYWxTaWduZWQ7XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICB2YWx1ZSA9IDAgKyB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIGlmIChsYXN0Q2hhcmFjdGVyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKyAwO1xuICAgIH1cblxuICAgIGxldCBzaWduZWRWYWx1ZSA9IGZhbHNlO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gdGhpcy5fbWludXNTaWduKSB7XG4gICAgICBzaWduZWRWYWx1ZSA9IHRydWU7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxKTtcbiAgICAgIGZpcnN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICAgIH1cbiAgICBsZXQgc2Vjb25kQ2hhciA9IHZhbHVlLmNoYXJBdCgxKTtcbiAgICB3aGlsZSAoXG4gICAgICBmaXJzdENoYXJhY3RlciA9PT0gJzAnICYmXG4gICAgICBzZWNvbmRDaGFyICE9PSAnJyAmJlxuICAgICAgc2Vjb25kQ2hhciAhPT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEpO1xuICAgICAgZmlyc3RDaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMCk7XG4gICAgICBzZWNvbmRDaGFyID0gdmFsdWUuY2hhckF0KDEpO1xuICAgIH1cbiAgICBpZiAoc2lnbmVkVmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5fbWludXNTaWduICsgdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVQYXJ0cyA9IHZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgY29uc3QgbmF0dXJhbFBhcnQgPSB2YWx1ZVBhcnRzPy5bMF07XG4gICAgbGV0IGRlY2ltYWxQYXJ0ID0gdmFsdWVQYXJ0cz8uWzFdO1xuXG4gICAgaWYgKGRlY2ltYWxQYXJ0ICE9IG51bGwgJiYgL14wKyQvLnRlc3QoZGVjaW1hbFBhcnQpKSB7XG4gICAgICBkZWNpbWFsUGFydCA9ICcwJztcbiAgICAgIHZhbHVlID0gbmF0dXJhbFBhcnQgKyAnLicgKyBkZWNpbWFsUGFydDtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnLTAnKSB7XG4gICAgICB2YWx1ZSA9ICcwJztcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnLTAuMCcpIHtcbiAgICAgIHZhbHVlID0gJzAuMCc7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gbmV3IFJlZ0V4cChyZWdleCkudGVzdCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB0aGlzLl9jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUodmFsaWQgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IHBhcnNlRmxvYXQodGhpcy5fcHJldmlvdXNWYWx1ZSkgPz8gMCk7XG4gIH1cbn1cbiJdfQ==
@@ -2864,7 +2864,7 @@ class OnlyNumberDirective {
2864
2864
  value = '0.0';
2865
2865
  }
2866
2866
  const valid = new RegExp(regex).test(value.toString());
2867
- this._control.control.setValue(valid ? value : (_a = this._previousValue) !== null && _a !== void 0 ? _a : 0);
2867
+ this._control.control.setValue(valid ? parseFloat(value) : (_a = parseFloat(this._previousValue)) !== null && _a !== void 0 ? _a : 0);
2868
2868
  }
2869
2869
  }
2870
2870
  OnlyNumberDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OnlyNumberDirective, deps: [{ token: i0.ElementRef }, { token: i3.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
@@ -7656,6 +7656,17 @@ class TableService {
7656
7656
  getRowIndex(row) {
7657
7657
  return this._displayData.value.indexOf(row);
7658
7658
  }
7659
+ getEventCell(event) {
7660
+ return event.composedPath().find((target) => {
7661
+ var _a;
7662
+ return ((_a = target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'teta-cell';
7663
+ });
7664
+ }
7665
+ getEventRow(event) {
7666
+ return event.composedPath().find((target) => {
7667
+ return (target === null || target === void 0 ? void 0 : target.getAttribute) && (target === null || target === void 0 ? void 0 : target.getAttribute('data-row'));
7668
+ });
7669
+ }
7659
7670
  getNextEditableCell(coords) {
7660
7671
  const nextCell = this.getNextCell(coords);
7661
7672
  if (!nextCell) {
@@ -7971,14 +7982,14 @@ class TableUtil {
7971
7982
  return null;
7972
7983
  }
7973
7984
  static getData(data, state) {
7974
- let result = data;
7985
+ let result = [...data];
7975
7986
  result = TableUtil.filterData(result, state);
7976
7987
  result = TableUtil.sortData(result, state);
7977
7988
  return result;
7978
7989
  }
7979
7990
  static sortData(data, state) {
7980
7991
  var _a;
7981
- let result = data;
7992
+ let result = [...data];
7982
7993
  const func = (sortParam) => {
7983
7994
  result = TableUtil.sort(result, sortParam);
7984
7995
  };
@@ -7989,7 +8000,7 @@ class TableUtil {
7989
8000
  }
7990
8001
  static filterData(data, state) {
7991
8002
  var _a, _b, _c, _d;
7992
- let result = data;
8003
+ let result = [...data];
7993
8004
  if ((_a = state === null || state === void 0 ? void 0 : state.stringFilters) === null || _a === void 0 ? void 0 : _a.length) {
7994
8005
  const stringFilter = (filter) => {
7995
8006
  result = TableUtil.filterString(result, filter);
@@ -9365,6 +9376,9 @@ class NumericCellComponent extends CellComponentBase {
9365
9376
  this.svc = svc;
9366
9377
  this.cdr = cdr;
9367
9378
  }
9379
+ applyValue(value) {
9380
+ this.row[this.column.name] = parseFloat(value);
9381
+ }
9368
9382
  setValue() {
9369
9383
  this.valueChanged();
9370
9384
  }
@@ -9390,10 +9404,10 @@ class NumericCellComponent extends CellComponentBase {
9390
9404
  }
9391
9405
  }
9392
9406
  NumericCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: NumericCellComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9393
- NumericCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: NumericCellComponent, selector: "teta-numeric-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event;\"/>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[tetaOnlyNumber]", inputs: ["tetaOnlyNumber", "allowDecimals", "allowSign", "decimalSeparator", "commaSeparator"] }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9407
+ NumericCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: NumericCellComponent, selector: "teta-numeric-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"applyValue($event)\"/>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[tetaOnlyNumber]", inputs: ["tetaOnlyNumber", "allowDecimals", "allowSign", "decimalSeparator", "commaSeparator"] }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9394
9408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: NumericCellComponent, decorators: [{
9395
9409
  type: Component,
9396
- args: [{ selector: 'teta-numeric-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event;\"/>\n" }]
9410
+ args: [{ selector: 'teta-numeric-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"applyValue($event)\"/>\n" }]
9397
9411
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
9398
9412
  type: Input
9399
9413
  }], row: [{
@@ -9760,20 +9774,11 @@ class TableBodyComponent {
9760
9774
  get columns() {
9761
9775
  return this._columns;
9762
9776
  }
9763
- setActiveRow(row) {
9764
- this._svc.setActiveRow(row);
9765
- }
9766
- // getData = (index, count, success) => {
9767
- // const data = [];
9768
- // if (this.data?.length > 0) {
9769
- // const start = Math.max(0, index);
9770
- // const end = Math.min(index + count - 1, this.data.length - 1);
9771
- // for (let i = start; i <= end; i++) {
9772
- // data.push(this.data[i]);
9773
- // }
9774
- // }
9775
- // return success(data);
9776
- // };
9777
+ setActiveRow(row, event) {
9778
+ if (!event.shiftKey && !event.ctrlKey) {
9779
+ this._svc.setActiveRow(row);
9780
+ }
9781
+ }
9777
9782
  ngOnInit() {
9778
9783
  this.locale = this._config.locale;
9779
9784
  combineLatest([this._svc.columns, this._svc.hiddenColumns])
@@ -9875,10 +9880,10 @@ class TableBodyComponent {
9875
9880
  }
9876
9881
  }
9877
9882
  TableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableBodyComponent, deps: [{ token: TableService }, { token: i0.ElementRef }, { token: TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9878
- TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n (contextmenu)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"virtual ? totalFlex : ''\"\n [style.flex-basis.px]=\"virtual ? totalWidth : ''\"\n [style.min-width.px]=\"virtual ? totalWidth : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9883
+ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"virtual ? totalFlex : ''\"\n [style.flex-basis.px]=\"virtual ? totalWidth : ''\"\n [style.min-width.px]=\"virtual ? totalWidth : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9879
9884
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableBodyComponent, decorators: [{
9880
9885
  type: Component,
9881
- args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n (contextmenu)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"virtual ? totalFlex : ''\"\n [style.flex-basis.px]=\"virtual ? totalWidth : ''\"\n [style.min-width.px]=\"virtual ? totalWidth : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n" }]
9886
+ args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"virtual ? totalFlex : ''\"\n [style.flex-basis.px]=\"virtual ? totalWidth : ''\"\n [style.min-width.px]=\"virtual ? totalWidth : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n" }]
9882
9887
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ElementRef }, { type: TetaConfigService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { virtual: [{
9883
9888
  type: Input
9884
9889
  }], activeRow: [{
@@ -10027,9 +10032,11 @@ class TableComponent {
10027
10032
  }
10028
10033
  }
10029
10034
  keydown(event) {
10030
- if (event.ctrlKey && event.code === 'KeyA') {
10031
- event.preventDefault();
10032
- this._svc.selectAll();
10035
+ if (event.ctrlKey) {
10036
+ if (event.code === 'KeyA') {
10037
+ event.preventDefault();
10038
+ this._svc.selectAll();
10039
+ }
10033
10040
  return;
10034
10041
  }
10035
10042
  if (event.key === 'Escape') {
@@ -10065,11 +10072,14 @@ class TableComponent {
10065
10072
  if (coordinates) {
10066
10073
  this.cellKeyDown.emit(Object.assign(Object.assign({}, this._svc.getCellInstance(coordinates)), { event }));
10067
10074
  if (event.key && (event.key.length === 1 || event.key === 'Delete')) {
10068
- this.startEditRowOrCell({
10069
- row: coordinates.row,
10070
- column: coordinates.column,
10071
- event: event
10072
- });
10075
+ const column = this._svc.getColumnByName(coordinates.column);
10076
+ if (column.filterType !== FilterType.number || isFinite(event.key)) {
10077
+ this.startEditRowOrCell({
10078
+ row: coordinates.row,
10079
+ column: coordinates.column,
10080
+ event: event
10081
+ });
10082
+ }
10073
10083
  }
10074
10084
  if (event.key === 'Tab' && this._svc.currentEditCell) {
10075
10085
  event.preventDefault();
@@ -10171,6 +10181,15 @@ class TableComponent {
10171
10181
  this.contextMenuOpen = value;
10172
10182
  this.contextMenuOpenChange.emit(this.contextMenuOpen);
10173
10183
  }
10184
+ setContextMenuRow(event) {
10185
+ const rowElement = this._svc.getEventRow(event);
10186
+ if (rowElement) {
10187
+ const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);
10188
+ if (rowIndex >= 0) {
10189
+ this.contextMenuRow = this._svc.getRowByIndex(rowIndex);
10190
+ }
10191
+ }
10192
+ }
10174
10193
  startEditRowOrCell(coordinates) {
10175
10194
  if (this.editType === EditType.row) {
10176
10195
  this._svc.startEditRow(coordinates);
@@ -10179,17 +10198,6 @@ class TableComponent {
10179
10198
  this._svc.startEditCell(coordinates);
10180
10199
  }
10181
10200
  }
10182
- getEventCell(event) {
10183
- return event.composedPath().find((target) => {
10184
- var _a;
10185
- return ((_a = target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'teta-cell';
10186
- });
10187
- }
10188
- getEventRow(event) {
10189
- return event.composedPath().find((target) => {
10190
- return (target === null || target === void 0 ? void 0 : target.getAttribute) && (target === null || target === void 0 ? void 0 : target.getAttribute('data-row'));
10191
- });
10192
- }
10193
10201
  getCellElement(coordinates) {
10194
10202
  return this._elementRef.nativeElement.querySelector(`teta-cell[data-row="${coordinates.row}"][data-column="${coordinates.column}"]`);
10195
10203
  }
@@ -10203,7 +10211,7 @@ class TableComponent {
10203
10211
  if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {
10204
10212
  return null;
10205
10213
  }
10206
- const cell = this.getEventCell(event);
10214
+ const cell = this._svc.getEventCell(event);
10207
10215
  if (cell) {
10208
10216
  const rowIndex = parseInt(cell.getAttribute('data-row'), 10);
10209
10217
  const columnName = cell.getAttribute('data-column');
@@ -10221,7 +10229,7 @@ class TableComponent {
10221
10229
  if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {
10222
10230
  return null;
10223
10231
  }
10224
- const rowElement = this.getEventRow(event);
10232
+ const rowElement = this._svc.getEventRow(event);
10225
10233
  if (rowElement) {
10226
10234
  const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);
10227
10235
  if (rowIndex >= 0) {
@@ -10232,10 +10240,10 @@ class TableComponent {
10232
10240
  }
10233
10241
  }
10234
10242
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableComponent, deps: [{ token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
10235
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableComponent, selector: "teta-table", inputs: { data: "data", columns: "columns", dict: "dict", filterOptions: "filterOptions", state: "state", cookieName: "cookieName", virtual: "virtual", detailComponent: "detailComponent", activeRow: "activeRow", selectedRows: "selectedRows", selectType: "selectType", aggregate: "aggregate", trackRow: "trackRow", editType: "editType", editEvent: "editEvent", rowEditable: "rowEditable", rowClass: "rowClass", scrollToIndex: "scrollToIndex", showHeadCellMenu: "showHeadCellMenu", contextMenu: "contextMenu", contextMenuOpen: "contextMenuOpen" }, outputs: { contextMenuOpenChange: "contextMenuOpenChange", stateChange: "stateChange", bodyLeft: "bodyLeft", activeRowChange: "activeRowChange", selectedRowsChange: "selectedRowsChange", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", cellFocus: "cellFocus", cellKeyDown: "cellKeyDown", rowLeft: "rowLeft", rowEditStart: "rowEditStart", rowEditEnd: "rowEditEnd", cellEditStart: "cellEditStart", cellEditEnd: "cellEditEnd", valueChange: "valueChange", tableService: "tableService" }, host: { listeners: { "document:click": "handleClickOutsideAnyRow($event)", "focusin": "focusIn($event)", "dblclick": "dblclick($event)", "keydown": "keydown($event)", "mousedown": "mousedown($event)" }, properties: { "class.table": "this.tableClass" } }, providers: [TableService], viewQueries: [{ propertyName: "menu", first: true, predicate: ["contextMenu"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-table-head\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\">\n <teta-table-body\n [tetaContextMenu]=\"contextMenu\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"></teta-table-body>\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:0;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ContextMenuDirective, selector: "[tetaContextMenu]", inputs: ["tetaContextMenu", "autoCloseIgnore"] }, { kind: "component", type: TableHeadComponent, selector: "teta-table-head", inputs: ["selectType", "showHeadCellMenu"] }, { kind: "component", type: TableBodyComponent, selector: "teta-table-body", inputs: ["virtual", "activeRow", "selectedRows", "additionalComponent", "aggregate", "selectType", "rowClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10243
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableComponent, selector: "teta-table", inputs: { data: "data", columns: "columns", dict: "dict", filterOptions: "filterOptions", state: "state", cookieName: "cookieName", virtual: "virtual", detailComponent: "detailComponent", activeRow: "activeRow", selectedRows: "selectedRows", selectType: "selectType", aggregate: "aggregate", trackRow: "trackRow", editType: "editType", editEvent: "editEvent", rowEditable: "rowEditable", rowClass: "rowClass", scrollToIndex: "scrollToIndex", showHeadCellMenu: "showHeadCellMenu", contextMenu: "contextMenu", contextMenuOpen: "contextMenuOpen" }, outputs: { contextMenuOpenChange: "contextMenuOpenChange", stateChange: "stateChange", bodyLeft: "bodyLeft", activeRowChange: "activeRowChange", selectedRowsChange: "selectedRowsChange", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", cellFocus: "cellFocus", cellKeyDown: "cellKeyDown", rowLeft: "rowLeft", rowEditStart: "rowEditStart", rowEditEnd: "rowEditEnd", cellEditStart: "cellEditStart", cellEditEnd: "cellEditEnd", valueChange: "valueChange", tableService: "tableService" }, host: { listeners: { "document:click": "handleClickOutsideAnyRow($event)", "focusin": "focusIn($event)", "dblclick": "dblclick($event)", "keydown": "keydown($event)", "mousedown": "mousedown($event)" }, properties: { "class.table": "this.tableClass" } }, providers: [TableService], viewQueries: [{ propertyName: "menu", first: true, predicate: ["contextMenu"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-table-head\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\">\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n [tetaContextMenu]=\"contextMenu\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"></teta-table-body>\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:0;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ContextMenuDirective, selector: "[tetaContextMenu]", inputs: ["tetaContextMenu", "autoCloseIgnore"] }, { kind: "component", type: TableHeadComponent, selector: "teta-table-head", inputs: ["selectType", "showHeadCellMenu"] }, { kind: "component", type: TableBodyComponent, selector: "teta-table-body", inputs: ["virtual", "activeRow", "selectedRows", "additionalComponent", "aggregate", "selectType", "rowClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10236
10244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableComponent, decorators: [{
10237
10245
  type: Component,
10238
- args: [{ selector: 'teta-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableService], template: "<div class=\"column column_auto\">\n <teta-table-head\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\">\n <teta-table-body\n [tetaContextMenu]=\"contextMenu\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"></teta-table-body>\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:0;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n" }]
10246
+ args: [{ selector: 'teta-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableService], template: "<div class=\"column column_auto\">\n <teta-table-head\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\">\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n [tetaContextMenu]=\"contextMenu\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"></teta-table-body>\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:0;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n" }]
10239
10247
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{
10240
10248
  type: Input
10241
10249
  }], columns: [{