@sumaris-net/ngx-components 1.23.24 → 1.23.26

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.
@@ -1,5 +1,5 @@
1
1
  import { Pipe } from '@angular/core';
2
- import { isNotNil } from '../functions';
2
+ import { getPropertyByPath, isNotNil } from '../functions';
3
3
  export class NotEmptyArrayPipe {
4
4
  transform(val) {
5
5
  if (val === undefined || val === null) {
@@ -58,10 +58,18 @@ ArrayFirstPipe.decorators = [
58
58
  },] }
59
59
  ];
60
60
  export class ArrayPluckPipe {
61
- transform(val, opts) {
62
- return (opts.omitNil !== true) ?
63
- (val || []).map(value => value && value[opts.property]) :
64
- (val || []).map(value => value && value[opts.property]).filter(isNotNil);
61
+ /**
62
+ *
63
+ * @param values
64
+ * @param opts property to get, or options
65
+ */
66
+ transform(values, opts) {
67
+ if (!opts || !values)
68
+ return values;
69
+ const property = (typeof opts === 'string') || Array.isArray(opts) ? opts : opts.property;
70
+ return (opts['omitNil'] !== true) ?
71
+ values.map(value => getPropertyByPath(value, property)) :
72
+ values.map(value => getPropertyByPath(value, property)).filter(isNotNil);
65
73
  }
66
74
  }
67
75
  ArrayPluckPipe.decorators = [
@@ -89,4 +97,14 @@ ArrayFilterPipe.decorators = [
89
97
  name: 'arrayFilter'
90
98
  },] }
91
99
  ];
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9hcnJheXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBS3RDLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsU0FBUyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDckMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQzs7O1lBVkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxpQkFBaUI7YUFDMUI7O0FBZUQsTUFBTSxPQUFPLGNBQWM7SUFFekIsU0FBUyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7O1lBVkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxjQUFjO2FBQ3JCOztBQWVELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFNBQVMsQ0FBQyxHQUFVLEVBQUUsSUFBbUU7UUFDdkYsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xFLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDaEM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM3QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBbEJGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsZUFBZTthQUN0Qjs7QUFzQkQsTUFBTSxPQUFPLGNBQWM7SUFFekIsU0FBUyxDQUFJLEdBQVE7UUFDbkIsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7OztZQVBGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsWUFBWTthQUNuQjs7QUFXRCxNQUFNLE9BQU8sY0FBYztJQUV6QixTQUFTLENBQUksR0FBUSxFQUFFLElBQTZDO1FBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7OztZQVRGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsWUFBWTthQUNuQjs7QUFhRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFNBQVMsQ0FBSSxHQUFRLEVBQUUsSUFBSTtRQUN6QixPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM1QyxDQUFDOzs7WUFQRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLGVBQWU7YUFDdEI7O0FBWUQsTUFBTSxPQUFPLGVBQWU7SUFFekIsU0FBUyxDQUFJLEdBQVEsRUFBRSxRQUF3QjtRQUM5QyxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OztZQVBGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsYUFBYTthQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzTm90TmlsfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lzTm90RW1wdHlBcnJheSdcbn0pXG5leHBvcnQgY2xhc3MgTm90RW1wdHlBcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybSh2YWw6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICBpZiAodmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWwubGVuZ3RoID4gMDtcbiAgICB9XG59XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnaXNFbXB0eUFycmF5J1xufSlcbmV4cG9ydCBjbGFzcyBFbXB0eUFycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWw6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2YWwubGVuZ3RoID09PSAwO1xuICB9XG59XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnaXNBcnJheUxlbmd0aCdcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlMZW5ndGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbDogYW55W10sIGFyZ3M/OiB7IGdyZWF0ZXJUaGFuPzogbnVtYmVyOyBlcXVhbHM/OiBudW1iZXI7IGxlc3NUaGFuPzogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgICBhcmdzID0gYXJncyB8fCB7fTtcbiAgICBjb25zdCBzaXplID0gKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCkgPyAwIDogdmFsLmxlbmd0aDtcbiAgICBpZiAoaXNOb3ROaWwoYXJncy5sZXNzVGhhbikpIHtcbiAgICAgIHJldHVybiBzaXplIDwgYXJncy5sZXNzVGhhbjtcbiAgICB9XG4gICAgaWYgKGlzTm90TmlsKGFyZ3MuZ3JlYXRlclRoYW4pKSB7XG4gICAgICByZXR1cm4gc2l6ZSA+IGFyZ3MuZ3JlYXRlclRoYW47XG4gICAgfVxuICAgIGlmIChpc05vdE5pbChhcmdzLmVxdWFscykpIHtcbiAgICAgIHJldHVybiBzaXplID09PSBhcmdzLmVxdWFscztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2FycmF5Rmlyc3QnXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rmlyc3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtPFQ+KHZhbDogVFtdKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHZhbCAmJiB2YWwubGVuZ3RoID4gMCA/IHZhbFswXSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheVBsdWNrJ1xufSlcbmV4cG9ydCBjbGFzcyBBcnJheVBsdWNrUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybTxUPih2YWw6IFRbXSwgb3B0czogeyBwcm9wZXJ0eTogc3RyaW5nOyBvbWl0TmlsPzogYm9vbGVhbiB9KTogYW55W10ge1xuICAgIHJldHVybiAob3B0cy5vbWl0TmlsICE9PSB0cnVlKSA/XG4gICAgICAodmFsIHx8IFtdKS5tYXAodmFsdWUgPT4gdmFsdWUgJiYgdmFsdWVbb3B0cy5wcm9wZXJ0eV0pIDpcbiAgICAgICh2YWwgfHwgW10pLm1hcCh2YWx1ZSA9PiB2YWx1ZSAmJiB2YWx1ZVtvcHRzLnByb3BlcnR5XSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheUluY2x1ZGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBBcnJheUluY2x1ZGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybTxUPih2YWw6IFRbXSwgYXJncyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWwgJiYgdmFsLmluY2x1ZGVzKGFyZ3MpIHx8IGZhbHNlO1xuICB9XG59XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnYXJyYXlGaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5RmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICB0cmFuc2Zvcm08VD4odmFsOiBUW10sIGZpbHRlckZuOiAoVCkgPT4gYm9vbGVhbik6IFRbXSB7XG4gICAgcmV0dXJuIHZhbCAmJiB2YWwuZmlsdGVyKGZpbHRlckZuKTtcbiAgfVxufVxuIl19
100
+ export class ArrayJoinPipe {
101
+ transform(val, separator) {
102
+ return val && val.join(separator) || '';
103
+ }
104
+ }
105
+ ArrayJoinPipe.decorators = [
106
+ { type: Pipe, args: [{
107
+ name: 'arrayJoin'
108
+ },] }
109
+ ];
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9hcnJheXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBS3pELE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsU0FBUyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDckMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQzs7O1lBVkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxpQkFBaUI7YUFDMUI7O0FBZUQsTUFBTSxPQUFPLGNBQWM7SUFFekIsU0FBUyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7O1lBVkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxjQUFjO2FBQ3JCOztBQWVELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFNBQVMsQ0FBQyxHQUFVLEVBQUUsSUFBbUU7UUFDdkYsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xFLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDaEM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM3QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBbEJGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsZUFBZTthQUN0Qjs7QUFzQkQsTUFBTSxPQUFPLGNBQWM7SUFFekIsU0FBUyxDQUFJLEdBQVE7UUFDbkIsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7OztZQVBGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsWUFBWTthQUNuQjs7QUFXRCxNQUFNLE9BQU8sY0FBYztJQUV6Qjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFJLE1BQVcsRUFBRSxJQUEwRTtRQUNsRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3RyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDOzs7WUFoQkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxZQUFZO2FBQ25COztBQW9CRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFNBQVMsQ0FBSSxHQUFRLEVBQUUsSUFBSTtRQUN6QixPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM1QyxDQUFDOzs7WUFQRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLGVBQWU7YUFDdEI7O0FBWUQsTUFBTSxPQUFPLGVBQWU7SUFFekIsU0FBUyxDQUFJLEdBQVEsRUFBRSxRQUF3QjtRQUM5QyxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OztZQVBGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsYUFBYTthQUNwQjs7QUFXRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixTQUFTLENBQUksR0FBUSxFQUFFLFNBQWlCO1FBQ3RDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFDLENBQUM7OztZQVBGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsV0FBVzthQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2dldFByb3BlcnR5QnlQYXRoLCBpc05vdE5pbH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdpc05vdEVtcHR5QXJyYXknXG59KVxuZXhwb3J0IGNsYXNzIE5vdEVtcHR5QXJyYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICB0cmFuc2Zvcm0odmFsOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsLmxlbmd0aCA+IDA7XG4gICAgfVxufVxuXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2lzRW1wdHlBcnJheSdcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlBcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0odmFsOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsLmxlbmd0aCA9PT0gMDtcbiAgfVxufVxuXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2lzQXJyYXlMZW5ndGgnXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5TGVuZ3RoUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWw6IGFueVtdLCBhcmdzPzogeyBncmVhdGVyVGhhbj86IG51bWJlcjsgZXF1YWxzPzogbnVtYmVyOyBsZXNzVGhhbj86IG51bWJlciB9KTogYm9vbGVhbiB7XG4gICAgYXJncyA9IGFyZ3MgfHwge307XG4gICAgY29uc3Qgc2l6ZSA9ICh2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwpID8gMCA6IHZhbC5sZW5ndGg7XG4gICAgaWYgKGlzTm90TmlsKGFyZ3MubGVzc1RoYW4pKSB7XG4gICAgICByZXR1cm4gc2l6ZSA8IGFyZ3MubGVzc1RoYW47XG4gICAgfVxuICAgIGlmIChpc05vdE5pbChhcmdzLmdyZWF0ZXJUaGFuKSkge1xuICAgICAgcmV0dXJuIHNpemUgPiBhcmdzLmdyZWF0ZXJUaGFuO1xuICAgIH1cbiAgICBpZiAoaXNOb3ROaWwoYXJncy5lcXVhbHMpKSB7XG4gICAgICByZXR1cm4gc2l6ZSA9PT0gYXJncy5lcXVhbHM7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheUZpcnN0J1xufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZpcnN0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybTxUPih2YWw6IFRbXSk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB2YWwgJiYgdmFsLmxlbmd0aCA+IDAgPyB2YWxbMF0gOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnYXJyYXlQbHVjaydcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlQbHVja1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlc1xuICAgKiBAcGFyYW0gb3B0cyBwcm9wZXJ0eSB0byBnZXQsIG9yIG9wdGlvbnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPih2YWx1ZXM6IFRbXSwgb3B0czogc3RyaW5nIHwgc3RyaW5nW10gfCB7IHByb3BlcnR5OiBzdHJpbmd8c3RyaW5nW107IG9taXROaWw/OiBib29sZWFuIH0pOiBhbnlbXSB7XG4gICAgaWYgKCFvcHRzIHx8ICF2YWx1ZXMpIHJldHVybiB2YWx1ZXM7XG4gICAgY29uc3QgcHJvcGVydHkgPSAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSB8fCBBcnJheS5pc0FycmF5KG9wdHMpID8gb3B0cyBhcyBzdHJpbmd8c3RyaW5nW10gOiBvcHRzLnByb3BlcnR5O1xuICAgIHJldHVybiAob3B0c1snb21pdE5pbCddICE9PSB0cnVlKSA/XG4gICAgICB2YWx1ZXMubWFwKHZhbHVlID0+IGdldFByb3BlcnR5QnlQYXRoKHZhbHVlLCBwcm9wZXJ0eSkpIDpcbiAgICAgIHZhbHVlcy5tYXAodmFsdWUgPT4gZ2V0UHJvcGVydHlCeVBhdGgodmFsdWUsIHByb3BlcnR5KSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheUluY2x1ZGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBBcnJheUluY2x1ZGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybTxUPih2YWw6IFRbXSwgYXJncyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWwgJiYgdmFsLmluY2x1ZGVzKGFyZ3MpIHx8IGZhbHNlO1xuICB9XG59XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnYXJyYXlGaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5RmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICB0cmFuc2Zvcm08VD4odmFsOiBUW10sIGZpbHRlckZuOiAoVCkgPT4gYm9vbGVhbik6IFRbXSB7XG4gICAgcmV0dXJuIHZhbCAmJiB2YWwuZmlsdGVyKGZpbHRlckZuKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheUpvaW4nXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Sm9pblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm08VD4odmFsOiBUW10sIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsICYmIHZhbC5qb2luKHNlcGFyYXRvcikgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
@@ -11,7 +11,7 @@ import { HighlightPipe } from './highlight.pipe';
11
11
  import { FileSizePipe } from './file-size.pipe';
12
12
  import { DurationPipe } from './duration.pipe';
13
13
  import { EvenPipe, MathAbsPipe, OddPipe } from './math.pipes';
14
- import { ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, EmptyArrayPipe, NotEmptyArrayPipe } from './arrays.pipe';
14
+ import { ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, EmptyArrayPipe, NotEmptyArrayPipe } from './arrays.pipe';
15
15
  import { MapGetPipe, MapKeysPipe, MapValuesPipe } from './maps.pipe';
16
16
  import { IsNilOrBlankPipe, IsNotNilOrBlankPipe, StrIncludesPipe, StrLengthPipe, ToStringPipe } from './string.pipes';
17
17
  import { TranslatablePipe, TranslateContextPipe } from './translate-context.pipe';
@@ -50,6 +50,7 @@ SharedPipesModule.decorators = [
50
50
  ArrayPluckPipe,
51
51
  ArrayIncludesPipe,
52
52
  ArrayFilterPipe,
53
+ ArrayJoinPipe,
53
54
  MapGetPipe,
54
55
  MapKeysPipe,
55
56
  MapValuesPipe,
@@ -90,6 +91,7 @@ SharedPipesModule.decorators = [
90
91
  ArrayLengthPipe,
91
92
  ArrayFirstPipe,
92
93
  ArrayPluckPipe,
94
+ ArrayJoinPipe,
93
95
  MapGetPipe,
94
96
  MapKeysPipe,
95
97
  MapValuesPipe,
@@ -112,4 +114,4 @@ SharedPipesModule.decorators = [
112
114
  ]
113
115
  },] }
114
116
  ];
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvcGlwZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ILE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNJLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQTRGckUsTUFBTSxPQUFPLGlCQUFpQjs7O1lBMUY3QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxlQUFlO2lCQUNoQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2Qsb0JBQW9CO29CQUNwQixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxPQUFPO29CQUNQLFFBQVE7b0JBQ1IsaUJBQWlCO29CQUNqQixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxjQUFjO29CQUNkLGlCQUFpQjtvQkFDakIsZUFBZTtvQkFDZixVQUFVO29CQUNWLFdBQVc7b0JBQ1gsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsWUFBWTtvQkFDWixhQUFhO29CQUNiLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2Ysc0JBQXNCO29CQUN0QixXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtvQkFDaEIsa0JBQWtCO2lCQUNuQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2QsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLFlBQVk7b0JBQ1osaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxPQUFPO29CQUNQLFFBQVE7b0JBQ1IsaUJBQWlCO29CQUNqQixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxjQUFjO29CQUNkLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2Ysc0JBQXNCO29CQUN0QixXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtpQkFDakI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0RhdGVGb3JtYXRQaXBlfSBmcm9tICcuL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtEYXRlRGlmZkR1cmF0aW9uUGlwZX0gZnJvbSAnLi9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZSc7XG5pbXBvcnQge0RhdGVGcm9tTm93UGlwZX0gZnJvbSAnLi9kYXRlLWZyb20tbm93LnBpcGUnO1xuaW1wb3J0IHtMYXRpdHVkZUZvcm1hdFBpcGUsIExhdExvbmdGb3JtYXRQaXBlLCBMb25naXR1ZGVGb3JtYXRQaXBlfSBmcm9tICcuL2xhdGxvbmctZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtOdW1iZXJGb3JtYXRQaXBlfSBmcm9tICcuL251bWJlci1mb3JtYXQucGlwZSc7XG5pbXBvcnQge0hpZ2hsaWdodFBpcGV9IGZyb20gJy4vaGlnaGxpZ2h0LnBpcGUnO1xuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4vZmlsZS1zaXplLnBpcGUnO1xuaW1wb3J0IHtEdXJhdGlvblBpcGV9IGZyb20gJy4vZHVyYXRpb24ucGlwZSc7XG5pbXBvcnQge0V2ZW5QaXBlLCBNYXRoQWJzUGlwZSwgT2RkUGlwZX0gZnJvbSAnLi9tYXRoLnBpcGVzJztcbmltcG9ydCB7QXJyYXlGaWx0ZXJQaXBlLCBBcnJheUZpcnN0UGlwZSwgQXJyYXlJbmNsdWRlc1BpcGUsIEFycmF5TGVuZ3RoUGlwZSwgQXJyYXlQbHVja1BpcGUsIEVtcHR5QXJyYXlQaXBlLCBOb3RFbXB0eUFycmF5UGlwZX0gZnJvbSAnLi9hcnJheXMucGlwZSc7XG5pbXBvcnQge01hcEdldFBpcGUsIE1hcEtleXNQaXBlLCBNYXBWYWx1ZXNQaXBlfSBmcm9tICcuL21hcHMucGlwZSc7XG5pbXBvcnQge0lzTmlsT3JCbGFua1BpcGUsIElzTm90TmlsT3JCbGFua1BpcGUsIFN0ckluY2x1ZGVzUGlwZSwgU3RyTGVuZ3RoUGlwZSwgVG9TdHJpbmdQaXBlfSBmcm9tICcuL3N0cmluZy5waXBlcyc7XG5pbXBvcnQge1RyYW5zbGF0YWJsZVBpcGUsIFRyYW5zbGF0ZUNvbnRleHRQaXBlfSBmcm9tICcuL3RyYW5zbGF0ZS1jb250ZXh0LnBpcGUnO1xuaW1wb3J0IHtOZ0luaXREaXJlY3RpdmV9IGZyb20gJy4vbmctaW5pdC5waXBlJztcbmltcG9ydCB7Rm9ybUVycm9yVHJhbnNsYXRlUGlwZSwgRm9ybUdldEFycmF5UGlwZSwgRm9ybUdldENvbnRyb2xQaXBlLCBGb3JtR2V0R3JvdXBQaXBlLCBGb3JtR2V0UGlwZSwgRm9ybUdldFZhbHVlUGlwZX0gZnJvbSAnLi9mb3JtLnBpcGVzJztcbmltcG9ydCB7UHJvcGVydHlGb3JtYXRQaXBlLCBQcm9wZXJ0eUdldFBpcGV9IGZyb20gJy4vcHJvcGVydHkucGlwZXMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBQcm9wZXJ0eUdldFBpcGUsXG4gICAgUHJvcGVydHlGb3JtYXRQaXBlLFxuICAgIERhdGVGb3JtYXRQaXBlLFxuICAgIERhdGVEaWZmRHVyYXRpb25QaXBlLFxuICAgIER1cmF0aW9uUGlwZSxcbiAgICBEYXRlRnJvbU5vd1BpcGUsXG4gICAgTGF0TG9uZ0Zvcm1hdFBpcGUsXG4gICAgTGF0aXR1ZGVGb3JtYXRQaXBlLFxuICAgIExvbmdpdHVkZUZvcm1hdFBpcGUsXG4gICAgSGlnaGxpZ2h0UGlwZSxcbiAgICBOdW1iZXJGb3JtYXRQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBNYXRoQWJzUGlwZSxcbiAgICBPZGRQaXBlLFxuICAgIEV2ZW5QaXBlLFxuICAgIE5vdEVtcHR5QXJyYXlQaXBlLFxuICAgIEVtcHR5QXJyYXlQaXBlLFxuICAgIEFycmF5TGVuZ3RoUGlwZSxcbiAgICBBcnJheUZpcnN0UGlwZSxcbiAgICBBcnJheVBsdWNrUGlwZSxcbiAgICBBcnJheUluY2x1ZGVzUGlwZSxcbiAgICBBcnJheUZpbHRlclBpcGUsXG4gICAgTWFwR2V0UGlwZSxcbiAgICBNYXBLZXlzUGlwZSxcbiAgICBNYXBWYWx1ZXNQaXBlLFxuICAgIElzTmlsT3JCbGFua1BpcGUsXG4gICAgSXNOb3ROaWxPckJsYW5rUGlwZSxcbiAgICBUb1N0cmluZ1BpcGUsXG4gICAgU3RyTGVuZ3RoUGlwZSxcbiAgICBTdHJJbmNsdWRlc1BpcGUsXG4gICAgVHJhbnNsYXRlQ29udGV4dFBpcGUsXG4gICAgVHJhbnNsYXRhYmxlUGlwZSxcbiAgICBOZ0luaXREaXJlY3RpdmUsXG4gICAgRm9ybUVycm9yVHJhbnNsYXRlUGlwZSxcbiAgICBGb3JtR2V0UGlwZSxcbiAgICBGb3JtR2V0Q29udHJvbFBpcGUsXG4gICAgRm9ybUdldEFycmF5UGlwZSxcbiAgICBGb3JtR2V0R3JvdXBQaXBlLFxuICAgIEZvcm1HZXRWYWx1ZVBpcGUsXG4gICAgUHJvcGVydHlGb3JtYXRQaXBlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBQcm9wZXJ0eUdldFBpcGUsXG4gICAgUHJvcGVydHlGb3JtYXRQaXBlLFxuICAgIERhdGVGb3JtYXRQaXBlLFxuICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICBEYXRlRGlmZkR1cmF0aW9uUGlwZSxcbiAgICBEdXJhdGlvblBpcGUsXG4gICAgTGF0TG9uZ0Zvcm1hdFBpcGUsXG4gICAgTGF0aXR1ZGVGb3JtYXRQaXBlLFxuICAgIExvbmdpdHVkZUZvcm1hdFBpcGUsXG4gICAgSGlnaGxpZ2h0UGlwZSxcbiAgICBOdW1iZXJGb3JtYXRQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBNYXRoQWJzUGlwZSxcbiAgICBPZGRQaXBlLFxuICAgIEV2ZW5QaXBlLFxuICAgIE5vdEVtcHR5QXJyYXlQaXBlLFxuICAgIEVtcHR5QXJyYXlQaXBlLFxuICAgIEFycmF5TGVuZ3RoUGlwZSxcbiAgICBBcnJheUZpcnN0UGlwZSxcbiAgICBBcnJheVBsdWNrUGlwZSxcbiAgICBNYXBHZXRQaXBlLFxuICAgIE1hcEtleXNQaXBlLFxuICAgIE1hcFZhbHVlc1BpcGUsXG4gICAgSXNOaWxPckJsYW5rUGlwZSxcbiAgICBJc05vdE5pbE9yQmxhbmtQaXBlLFxuICAgIFRvU3RyaW5nUGlwZSxcbiAgICBTdHJMZW5ndGhQaXBlLFxuICAgIFN0ckluY2x1ZGVzUGlwZSxcbiAgICBBcnJheUluY2x1ZGVzUGlwZSxcbiAgICBBcnJheUZpbHRlclBpcGUsXG4gICAgVHJhbnNsYXRlQ29udGV4dFBpcGUsXG4gICAgVHJhbnNsYXRhYmxlUGlwZSxcbiAgICBOZ0luaXREaXJlY3RpdmUsXG4gICAgRm9ybUVycm9yVHJhbnNsYXRlUGlwZSxcbiAgICBGb3JtR2V0UGlwZSxcbiAgICBGb3JtR2V0Q29udHJvbFBpcGUsXG4gICAgRm9ybUdldEFycmF5UGlwZSxcbiAgICBGb3JtR2V0R3JvdXBQaXBlLFxuICAgIEZvcm1HZXRWYWx1ZVBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRQaXBlc01vZHVsZSB7XG5cbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvcGlwZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BLLE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMzSSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUE4RnJFLE1BQU0sT0FBTyxpQkFBaUI7OztZQTVGN0IsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsZUFBZTtpQkFDaEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsWUFBWTtvQkFDWixlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsa0JBQWtCO29CQUNsQixtQkFBbUI7b0JBQ25CLGFBQWE7b0JBQ2IsZ0JBQWdCO29CQUNoQixZQUFZO29CQUNaLFdBQVc7b0JBQ1gsT0FBTztvQkFDUCxRQUFRO29CQUNSLGlCQUFpQjtvQkFDakIsY0FBYztvQkFDZCxlQUFlO29CQUNmLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixVQUFVO29CQUNWLFdBQVc7b0JBQ1gsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsWUFBWTtvQkFDWixhQUFhO29CQUNiLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2Ysc0JBQXNCO29CQUN0QixXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtvQkFDaEIsa0JBQWtCO2lCQUNuQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2QsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLFlBQVk7b0JBQ1osaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxPQUFPO29CQUNQLFFBQVE7b0JBQ1IsaUJBQWlCO29CQUNqQixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxjQUFjO29CQUNkLGFBQWE7b0JBQ2IsVUFBVTtvQkFDVixXQUFXO29CQUNYLGFBQWE7b0JBQ2IsZ0JBQWdCO29CQUNoQixtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1osYUFBYTtvQkFDYixlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixzQkFBc0I7b0JBQ3RCLFdBQVc7b0JBQ1gsa0JBQWtCO29CQUNsQixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtvQkFDaEIsZ0JBQWdCO2lCQUNqQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7SW9uaWNNb2R1bGV9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7RGF0ZUZvcm1hdFBpcGV9IGZyb20gJy4vZGF0ZS1mb3JtYXQucGlwZSc7XG5pbXBvcnQge0RhdGVEaWZmRHVyYXRpb25QaXBlfSBmcm9tICcuL2RhdGUtZGlmZi1kdXJhdGlvbi5waXBlJztcbmltcG9ydCB7RGF0ZUZyb21Ob3dQaXBlfSBmcm9tICcuL2RhdGUtZnJvbS1ub3cucGlwZSc7XG5pbXBvcnQge0xhdGl0dWRlRm9ybWF0UGlwZSwgTGF0TG9uZ0Zvcm1hdFBpcGUsIExvbmdpdHVkZUZvcm1hdFBpcGV9IGZyb20gJy4vbGF0bG9uZy1mb3JtYXQucGlwZSc7XG5pbXBvcnQge051bWJlckZvcm1hdFBpcGV9IGZyb20gJy4vbnVtYmVyLWZvcm1hdC5waXBlJztcbmltcG9ydCB7SGlnaGxpZ2h0UGlwZX0gZnJvbSAnLi9oaWdobGlnaHQucGlwZSc7XG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi9maWxlLXNpemUucGlwZSc7XG5pbXBvcnQge0R1cmF0aW9uUGlwZX0gZnJvbSAnLi9kdXJhdGlvbi5waXBlJztcbmltcG9ydCB7RXZlblBpcGUsIE1hdGhBYnNQaXBlLCBPZGRQaXBlfSBmcm9tICcuL21hdGgucGlwZXMnO1xuaW1wb3J0IHtBcnJheUZpbHRlclBpcGUsIEFycmF5Rmlyc3RQaXBlLCBBcnJheUluY2x1ZGVzUGlwZSwgQXJyYXlKb2luUGlwZSwgQXJyYXlMZW5ndGhQaXBlLCBBcnJheVBsdWNrUGlwZSwgRW1wdHlBcnJheVBpcGUsIE5vdEVtcHR5QXJyYXlQaXBlfSBmcm9tICcuL2FycmF5cy5waXBlJztcbmltcG9ydCB7TWFwR2V0UGlwZSwgTWFwS2V5c1BpcGUsIE1hcFZhbHVlc1BpcGV9IGZyb20gJy4vbWFwcy5waXBlJztcbmltcG9ydCB7SXNOaWxPckJsYW5rUGlwZSwgSXNOb3ROaWxPckJsYW5rUGlwZSwgU3RySW5jbHVkZXNQaXBlLCBTdHJMZW5ndGhQaXBlLCBUb1N0cmluZ1BpcGV9IGZyb20gJy4vc3RyaW5nLnBpcGVzJztcbmltcG9ydCB7VHJhbnNsYXRhYmxlUGlwZSwgVHJhbnNsYXRlQ29udGV4dFBpcGV9IGZyb20gJy4vdHJhbnNsYXRlLWNvbnRleHQucGlwZSc7XG5pbXBvcnQge05nSW5pdERpcmVjdGl2ZX0gZnJvbSAnLi9uZy1pbml0LnBpcGUnO1xuaW1wb3J0IHtGb3JtRXJyb3JUcmFuc2xhdGVQaXBlLCBGb3JtR2V0QXJyYXlQaXBlLCBGb3JtR2V0Q29udHJvbFBpcGUsIEZvcm1HZXRHcm91cFBpcGUsIEZvcm1HZXRQaXBlLCBGb3JtR2V0VmFsdWVQaXBlfSBmcm9tICcuL2Zvcm0ucGlwZXMnO1xuaW1wb3J0IHtQcm9wZXJ0eUZvcm1hdFBpcGUsIFByb3BlcnR5R2V0UGlwZX0gZnJvbSAnLi9wcm9wZXJ0eS5waXBlcyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFByb3BlcnR5R2V0UGlwZSxcbiAgICBQcm9wZXJ0eUZvcm1hdFBpcGUsXG4gICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgRGF0ZURpZmZEdXJhdGlvblBpcGUsXG4gICAgRHVyYXRpb25QaXBlLFxuICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICBMYXRMb25nRm9ybWF0UGlwZSxcbiAgICBMYXRpdHVkZUZvcm1hdFBpcGUsXG4gICAgTG9uZ2l0dWRlRm9ybWF0UGlwZSxcbiAgICBIaWdobGlnaHRQaXBlLFxuICAgIE51bWJlckZvcm1hdFBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIE1hdGhBYnNQaXBlLFxuICAgIE9kZFBpcGUsXG4gICAgRXZlblBpcGUsXG4gICAgTm90RW1wdHlBcnJheVBpcGUsXG4gICAgRW1wdHlBcnJheVBpcGUsXG4gICAgQXJyYXlMZW5ndGhQaXBlLFxuICAgIEFycmF5Rmlyc3RQaXBlLFxuICAgIEFycmF5UGx1Y2tQaXBlLFxuICAgIEFycmF5SW5jbHVkZXNQaXBlLFxuICAgIEFycmF5RmlsdGVyUGlwZSxcbiAgICBBcnJheUpvaW5QaXBlLFxuICAgIE1hcEdldFBpcGUsXG4gICAgTWFwS2V5c1BpcGUsXG4gICAgTWFwVmFsdWVzUGlwZSxcbiAgICBJc05pbE9yQmxhbmtQaXBlLFxuICAgIElzTm90TmlsT3JCbGFua1BpcGUsXG4gICAgVG9TdHJpbmdQaXBlLFxuICAgIFN0ckxlbmd0aFBpcGUsXG4gICAgU3RySW5jbHVkZXNQaXBlLFxuICAgIFRyYW5zbGF0ZUNvbnRleHRQaXBlLFxuICAgIFRyYW5zbGF0YWJsZVBpcGUsXG4gICAgTmdJbml0RGlyZWN0aXZlLFxuICAgIEZvcm1FcnJvclRyYW5zbGF0ZVBpcGUsXG4gICAgRm9ybUdldFBpcGUsXG4gICAgRm9ybUdldENvbnRyb2xQaXBlLFxuICAgIEZvcm1HZXRBcnJheVBpcGUsXG4gICAgRm9ybUdldEdyb3VwUGlwZSxcbiAgICBGb3JtR2V0VmFsdWVQaXBlLFxuICAgIFByb3BlcnR5Rm9ybWF0UGlwZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUHJvcGVydHlHZXRQaXBlLFxuICAgIFByb3BlcnR5Rm9ybWF0UGlwZSxcbiAgICBEYXRlRm9ybWF0UGlwZSxcbiAgICBEYXRlRnJvbU5vd1BpcGUsXG4gICAgRGF0ZURpZmZEdXJhdGlvblBpcGUsXG4gICAgRHVyYXRpb25QaXBlLFxuICAgIExhdExvbmdGb3JtYXRQaXBlLFxuICAgIExhdGl0dWRlRm9ybWF0UGlwZSxcbiAgICBMb25naXR1ZGVGb3JtYXRQaXBlLFxuICAgIEhpZ2hsaWdodFBpcGUsXG4gICAgTnVtYmVyRm9ybWF0UGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgTWF0aEFic1BpcGUsXG4gICAgT2RkUGlwZSxcbiAgICBFdmVuUGlwZSxcbiAgICBOb3RFbXB0eUFycmF5UGlwZSxcbiAgICBFbXB0eUFycmF5UGlwZSxcbiAgICBBcnJheUxlbmd0aFBpcGUsXG4gICAgQXJyYXlGaXJzdFBpcGUsXG4gICAgQXJyYXlQbHVja1BpcGUsXG4gICAgQXJyYXlKb2luUGlwZSxcbiAgICBNYXBHZXRQaXBlLFxuICAgIE1hcEtleXNQaXBlLFxuICAgIE1hcFZhbHVlc1BpcGUsXG4gICAgSXNOaWxPckJsYW5rUGlwZSxcbiAgICBJc05vdE5pbE9yQmxhbmtQaXBlLFxuICAgIFRvU3RyaW5nUGlwZSxcbiAgICBTdHJMZW5ndGhQaXBlLFxuICAgIFN0ckluY2x1ZGVzUGlwZSxcbiAgICBBcnJheUluY2x1ZGVzUGlwZSxcbiAgICBBcnJheUZpbHRlclBpcGUsXG4gICAgVHJhbnNsYXRlQ29udGV4dFBpcGUsXG4gICAgVHJhbnNsYXRhYmxlUGlwZSxcbiAgICBOZ0luaXREaXJlY3RpdmUsXG4gICAgRm9ybUVycm9yVHJhbnNsYXRlUGlwZSxcbiAgICBGb3JtR2V0UGlwZSxcbiAgICBGb3JtR2V0Q29udHJvbFBpcGUsXG4gICAgRm9ybUdldEFycmF5UGlwZSxcbiAgICBGb3JtR2V0R3JvdXBQaXBlLFxuICAgIEZvcm1HZXRWYWx1ZVBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRQaXBlc01vZHVsZSB7XG5cbn1cbiJdfQ==
@@ -321,6 +321,10 @@ function isNumberRange(value) {
321
321
  return isNotNil(value) && NUMBER_RANGE_REGEXP.test(value);
322
322
  }
323
323
  function getPropertyByPath(obj, path, defaultValue) {
324
+ // Path is an array: convert path to string
325
+ if (Array.isArray(path)) {
326
+ return getPropertyByPath(obj, path.join('.'), defaultValue);
327
+ }
324
328
  if (isNil(obj))
325
329
  return defaultValue;
326
330
  if (isNilOrBlank(path))
@@ -335,7 +339,8 @@ function getPropertyByPath(obj, path, defaultValue) {
335
339
  const key = path.substring(0, i);
336
340
  if (isNil(obj[key]))
337
341
  return defaultValue;
338
- if (obj[key] && typeof obj[key] === 'object') {
342
+ if (typeof obj[key] === 'object') { // Object or Array
343
+ // Recursive call
339
344
  return getPropertyByPath(obj[key], path.substring(i + 1));
340
345
  }
341
346
  throw new Error(`Invalid property path: '${key}' is not an valid object.`);
@@ -347,7 +352,7 @@ function getProperty(obj, key) {
347
352
  }
348
353
  function getPropertyByPathAsString(obj, path) {
349
354
  const res = getPropertyByPath(obj, path);
350
- return res && (typeof res === 'string' ? res : ('' + res));
355
+ return (typeof res === 'string') ? res : ('' + res);
351
356
  }
352
357
  function sleep(ms) {
353
358
  if (ms <= 0)
@@ -2687,10 +2692,18 @@ ArrayFirstPipe.decorators = [
2687
2692
  },] }
2688
2693
  ];
2689
2694
  class ArrayPluckPipe {
2690
- transform(val, opts) {
2691
- return (opts.omitNil !== true) ?
2692
- (val || []).map(value => value && value[opts.property]) :
2693
- (val || []).map(value => value && value[opts.property]).filter(isNotNil);
2695
+ /**
2696
+ *
2697
+ * @param values
2698
+ * @param opts property to get, or options
2699
+ */
2700
+ transform(values, opts) {
2701
+ if (!opts || !values)
2702
+ return values;
2703
+ const property = (typeof opts === 'string') || Array.isArray(opts) ? opts : opts.property;
2704
+ return (opts['omitNil'] !== true) ?
2705
+ values.map(value => getPropertyByPath(value, property)) :
2706
+ values.map(value => getPropertyByPath(value, property)).filter(isNotNil);
2694
2707
  }
2695
2708
  }
2696
2709
  ArrayPluckPipe.decorators = [
@@ -2718,6 +2731,16 @@ ArrayFilterPipe.decorators = [
2718
2731
  name: 'arrayFilter'
2719
2732
  },] }
2720
2733
  ];
2734
+ class ArrayJoinPipe {
2735
+ transform(val, separator) {
2736
+ return val && val.join(separator) || '';
2737
+ }
2738
+ }
2739
+ ArrayJoinPipe.decorators = [
2740
+ { type: Pipe, args: [{
2741
+ name: 'arrayJoin'
2742
+ },] }
2743
+ ];
2721
2744
 
2722
2745
  class MapGetPipe {
2723
2746
  transform(val, args) {
@@ -4455,6 +4478,7 @@ SharedPipesModule.decorators = [
4455
4478
  ArrayPluckPipe,
4456
4479
  ArrayIncludesPipe,
4457
4480
  ArrayFilterPipe,
4481
+ ArrayJoinPipe,
4458
4482
  MapGetPipe,
4459
4483
  MapKeysPipe,
4460
4484
  MapValuesPipe,
@@ -4495,6 +4519,7 @@ SharedPipesModule.decorators = [
4495
4519
  ArrayLengthPipe,
4496
4520
  ArrayFirstPipe,
4497
4521
  ArrayPluckPipe,
4522
+ ArrayJoinPipe,
4498
4523
  MapGetPipe,
4499
4524
  MapKeysPipe,
4500
4525
  MapValuesPipe,
@@ -24554,11 +24579,12 @@ class AppEditor {
24554
24579
  this.translate = translate;
24555
24580
  this._subscription = new Subscription();
24556
24581
  this._enabled = false;
24557
- this._dirty = false;
24558
24582
  this.destroySubject = new Subject();
24559
24583
  this.readySubject = new BehaviorSubject(false);
24584
+ this.dirtySubject = new BehaviorSubject(false);
24560
24585
  this.loadingSubject = new BehaviorSubject(true);
24561
24586
  this.errorSubject = new BehaviorSubject(undefined);
24587
+ this.savingSubject = new BehaviorSubject(false);
24562
24588
  this.debug = false;
24563
24589
  this.submitted = false;
24564
24590
  this.toolbar = null;
@@ -24594,6 +24620,10 @@ class AppEditor {
24594
24620
  set error(error) {
24595
24621
  this.setError(error);
24596
24622
  }
24623
+ get saving() {
24624
+ var _a;
24625
+ return this.savingSubject.value || ((_a = this.editors) === null || _a === void 0 ? void 0 : _a.some(e => e.saving));
24626
+ }
24597
24627
  get tables() {
24598
24628
  return this._children && this._children.filter(c => c instanceof AppTable);
24599
24629
  }
@@ -24604,7 +24634,7 @@ class AppEditor {
24604
24634
  return this._children && this._children.filter(c => c instanceof AppEditor);
24605
24635
  }
24606
24636
  get dirty() {
24607
- return this._dirty || (this._children && this._children.findIndex(c => c.enabled && c.dirty) !== -1) || false;
24637
+ return this.dirtySubject.value || (this._children && this._children.findIndex(c => c.enabled && c.dirty) !== -1) || false;
24608
24638
  }
24609
24639
  /**
24610
24640
  * Is valid (tables and forms)
@@ -24632,7 +24662,7 @@ class AppEditor {
24632
24662
  return this._children;
24633
24663
  }
24634
24664
  get empty() {
24635
- return this._enabled;
24665
+ return !this._enabled;
24636
24666
  }
24637
24667
  ngOnInit() {
24638
24668
  if (this.formButtonsBar) {
@@ -24692,7 +24722,9 @@ class AppEditor {
24692
24722
  var _a;
24693
24723
  this.error = null;
24694
24724
  this.submitted = false;
24695
- this._dirty = false;
24725
+ if (this.dirtySubject.value !== false) {
24726
+ this.dirtySubject.next(false);
24727
+ }
24696
24728
  (_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => c.markAsPristine(opts));
24697
24729
  if (!this.loading && (!opts || opts.emitEvent !== false))
24698
24730
  this.markForCheck();
@@ -24720,9 +24752,11 @@ class AppEditor {
24720
24752
  this.markForCheck();
24721
24753
  }
24722
24754
  markAsDirty(opts) {
24723
- this._dirty = true;
24724
- if (!this.loading && (!opts || opts.emitEvent !== false))
24725
- this.markForCheck();
24755
+ if (!this.dirtySubject.value) {
24756
+ this.dirtySubject.next(true);
24757
+ if (!this.loading && (!opts || opts.emitEvent !== false))
24758
+ this.markForCheck();
24759
+ }
24726
24760
  }
24727
24761
  markAsLoading(opts) {
24728
24762
  if (!this.loadingSubject.value) {
@@ -24761,6 +24795,20 @@ class AppEditor {
24761
24795
  return Promise.resolve();
24762
24796
  return waitForFalse(this.loadingSubject, opts);
24763
24797
  }
24798
+ markAsSaving(opts) {
24799
+ if (this.savingSubject.value !== true) {
24800
+ this.savingSubject.next(true);
24801
+ if (!opts || opts.emitEvent !== false)
24802
+ this.markForCheck();
24803
+ }
24804
+ }
24805
+ markAsSaved(opts) {
24806
+ if (this.savingSubject.value !== false) {
24807
+ this.savingSubject.next(false);
24808
+ if (!opts || opts.emitEvent !== false)
24809
+ this.markForCheck();
24810
+ }
24811
+ }
24764
24812
  cancel(event) {
24765
24813
  return __awaiter(this, void 0, void 0, function* () {
24766
24814
  if (this.isNewData) {
@@ -24779,7 +24827,7 @@ class AppEditor {
24779
24827
  unload(opts) {
24780
24828
  var _a;
24781
24829
  return __awaiter(this, void 0, void 0, function* () {
24782
- console.debug('[tab-page] Unloading data...');
24830
+ console.debug('[editor] Unloading data...');
24783
24831
  this.markAsLoading();
24784
24832
  (_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(f => {
24785
24833
  if (f instanceof AppForm) {
@@ -24788,7 +24836,12 @@ class AppEditor {
24788
24836
  else if (f instanceof AppTable) {
24789
24837
  f.dataSource.disconnect();
24790
24838
  }
24839
+ else if (f instanceof AppEditor) {
24840
+ f.unload(opts);
24841
+ }
24791
24842
  });
24843
+ this.markAsPristine(opts);
24844
+ this.markAsSaved(opts);
24792
24845
  });
24793
24846
  }
24794
24847
  reloadWithConfirmation(confirm) {
@@ -24840,11 +24893,11 @@ class AppEditor {
24840
24893
  }
24841
24894
  });
24842
24895
  }
24843
- logFormErrors() {
24896
+ logFormErrors(prefix) {
24844
24897
  var _a;
24845
24898
  if (this.debug)
24846
- console.debug('[app-tab-editor] Page not valid. Checking where (forms, tables)...');
24847
- (_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => this.logChildrenFormErrors(c));
24899
+ console.debug('[editor] Editor not valid. Checking where (forms, tables)...');
24900
+ (_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => this.logChildrenErrors(c, prefix));
24848
24901
  }
24849
24902
  /* -- protected methods -- */
24850
24903
  scrollToTop(duration) {
@@ -24923,7 +24976,7 @@ class AppEditor {
24923
24976
  yield Toasts.show(this.toastController, this.translate, opts);
24924
24977
  });
24925
24978
  }
24926
- logChildrenFormErrors(c, prefix, path) {
24979
+ logChildrenErrors(c, prefix, path) {
24927
24980
  prefix = prefix || '[app-tab-editor] ';
24928
24981
  // If editor
24929
24982
  if (c instanceof AppEditor) {
@@ -24936,7 +24989,7 @@ class AppEditor {
24936
24989
  // If form provider: get delegate
24937
24990
  else if (c instanceof AppFormProvider) {
24938
24991
  if (!c.empty && !c.valid) {
24939
- c.waitDelegate({ timeout: 1000 }).then(delegate => this.logChildrenFormErrors(delegate, prefix, 'provider'));
24992
+ c.waitDelegate({ timeout: 1000 }).then(delegate => this.logChildrenErrors(delegate, prefix, 'provider'));
24940
24993
  }
24941
24994
  }
24942
24995
  // If table
@@ -24946,20 +24999,34 @@ class AppEditor {
24946
24999
  AppFormUtils.logFormErrors(c.editedRow.validator, prefix, path);
24947
25000
  }
24948
25001
  }
24949
- // If IAppForm
25002
+ // If form
24950
25003
  else if (c instanceof AppForm) {
24951
25004
  if (!c.empty && !c.valid) {
24952
25005
  if (c.pending) {
24953
25006
  const path = c.constructor.name.toLowerCase();
24954
25007
  console.warn(`${prefix} -> ${path}: waiting while pending...`);
24955
25008
  AppFormUtils.waitWhilePending(c, { timeout: 1000 })
24956
- .then(() => this.logChildrenFormErrors(c.form, prefix, path));
25009
+ .then(() => this.logChildrenErrors(c.form, prefix, path));
24957
25010
  }
24958
25011
  else {
24959
25012
  AppFormUtils.logFormErrors(c.form, prefix);
24960
25013
  }
24961
25014
  }
24962
25015
  }
25016
+ // If editor
25017
+ else if (c instanceof AppEditor) {
25018
+ if (!c.empty && !c.valid) {
25019
+ if (c.pending) {
25020
+ const path = c.constructor.name.toLowerCase();
25021
+ console.warn(`${prefix} -> ${path}: waiting while pending...`);
25022
+ AppFormUtils.waitWhilePending(c, { timeout: 1000 })
25023
+ .then(() => c.logFormErrors(prefix));
25024
+ }
25025
+ else {
25026
+ c.logFormErrors(prefix);
25027
+ }
25028
+ }
25029
+ }
24963
25030
  else {
24964
25031
  console.warn(`${prefix} Unknown children sub-form: `, c);
24965
25032
  }
@@ -25175,7 +25242,6 @@ class AppEntityEditor extends AppTabEditor {
25175
25242
  super(injector.get(ActivatedRoute), injector.get(Router), injector.get(AlertController), injector.get(TranslateService), options);
25176
25243
  this.dataType = dataType;
25177
25244
  this.dataService = dataService;
25178
- this.savingSubject = new BehaviorSubject(false);
25179
25245
  this.$title = new Subject();
25180
25246
  this.onUpdateView = new EventEmitter();
25181
25247
  this.environment = injector.get(ENVIRONMENT);
@@ -25217,29 +25283,9 @@ class AppEntityEditor extends AppTabEditor {
25217
25283
  var _a;
25218
25284
  return isNil((_a = this.data) === null || _a === void 0 ? void 0 : _a.id);
25219
25285
  }
25220
- get loading() {
25221
- return this.loadingSubject.value;
25222
- }
25223
- get saving() {
25224
- return this.savingSubject.value;
25225
- }
25226
25286
  get service() {
25227
25287
  return this.dataService;
25228
25288
  }
25229
- markAsSaving(opts) {
25230
- if (this.savingSubject.value !== true) {
25231
- this.savingSubject.next(true);
25232
- if (!opts || opts.emitEvent !== false)
25233
- this.markForCheck();
25234
- }
25235
- }
25236
- markAsSaved(opts) {
25237
- if (this.savingSubject.value !== false) {
25238
- this.savingSubject.next(false);
25239
- if (!opts || opts.emitEvent !== false)
25240
- this.markForCheck();
25241
- }
25242
- }
25243
25289
  ngOnInit() {
25244
25290
  super.ngOnInit();
25245
25291
  // Defaults
@@ -25394,9 +25440,7 @@ class AppEntityEditor extends AppTabEditor {
25394
25440
  this.data = data;
25395
25441
  this.previousDataId = data.id || null;
25396
25442
  yield this.ready();
25397
- const promiseOrVoid = this.setValue(data);
25398
- if (promiseOrVoid)
25399
- yield promiseOrVoid;
25443
+ yield this.setValue(data);
25400
25444
  if (!opts || opts.emitEvent !== false) {
25401
25445
  this.markAsPristine();
25402
25446
  this.markAsUntouched();
@@ -25639,14 +25683,17 @@ class AppEntityEditor extends AppTabEditor {
25639
25683
  yield this.load((_a = this.data) === null || _a === void 0 ? void 0 : _a.id);
25640
25684
  });
25641
25685
  }
25642
- unload() {
25686
+ unload(opts) {
25687
+ const _super = Object.create(null, {
25688
+ unload: { get: () => super.unload }
25689
+ });
25643
25690
  return __awaiter(this, void 0, void 0, function* () {
25691
+ yield _super.unload.call(this, opts);
25644
25692
  this.stopListenRemoteChanges();
25645
25693
  this.form.reset();
25646
25694
  this.registerForms();
25647
- this._dirty = false;
25648
25695
  this.data = null;
25649
- this.savingSubject.next(false);
25696
+ // TODO: find a way to remove current page from the navigation history
25650
25697
  });
25651
25698
  }
25652
25699
  goBack(event) {
@@ -30195,5 +30242,5 @@ JobProgressionTestService.decorators = [
30195
30242
  * Generated bundle index. Do not edit.
30196
30243
  */
30197
30244
 
30198
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, APP_USER_EVENT_SERVICE, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, ImagesUtils, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment$5 as moment, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, tz, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, StartableObservableService as ɵc, isFocusableElement as ɵd, RegisterForm as ɵe, AccountValidatorService as ɵf, RegisterModal as ɵg, UserSettingsValidatorService as ɵh, LocalSettingsValidatorService as ɵi, AppUpdateOfflineModeCard as ɵj, UserEventNotificationList as ɵk, DateTestPage as ɵl, NumpadTestPage as ɵm, MatBadgeIconTestPage as ɵn, ToastTestingModule as ɵo, ToastTestingPage as ɵp };
30245
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, APP_USER_EVENT_SERVICE, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, ImagesUtils, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment$5 as moment, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, tz, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, StartableObservableService as ɵc, isFocusableElement as ɵd, RegisterForm as ɵe, AccountValidatorService as ɵf, RegisterModal as ɵg, UserSettingsValidatorService as ɵh, LocalSettingsValidatorService as ɵi, AppUpdateOfflineModeCard as ɵj, UserEventNotificationList as ɵk, DateTestPage as ɵl, NumpadTestPage as ɵm, MatBadgeIconTestPage as ɵn, ToastTestingModule as ɵo, ToastTestingPage as ɵp };
30199
30246
  //# sourceMappingURL=sumaris-net.ngx-components.js.map