export class Pattern { constructor(id, isRegex, value, label) { this.id = id; this.isRegex = isRegex; this.value = value; this.label = label; } get regex() { return new RegExp(this.isRegex ? this.value : `^${this.value}$`); } get isEmpty() { return this.label === null; } static emptyPattern = () => new Pattern(0, true, '', null); static anyPattern = () => new Pattern('any', true, '.*', 'Any'); static revive = obj => new Pattern(obj.id, obj.isRegex, obj.value, obj.label); } export class PatternEntry { constructor(name, idx, calPattern, eventPattern) { this.name = name; this.idx = idx; this.cal = calPattern; this.event = eventPattern; } static defaultPatternEntry = (idx) => new PatternEntry('', idx, Pattern.emptyPattern(), Pattern.anyPattern()); static revive = obj => new PatternEntry( obj.name, obj.idx, Pattern.revive(obj.cal), Pattern.revive(obj.event)); }