UNPKG

1.75 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.FieldsStore = exports.FieldEvent = void 0;
4const assert_1 = require("./assert");
5const EventEmitter_1 = require("./EventEmitter");
6const Field_1 = require("./Field");
7var FieldEvent;
8(function (FieldEvent) {
9 FieldEvent["Added"] = "FIELD_ADDED";
10 FieldEvent["Removed"] = "FIELD_REMOVED";
11})(FieldEvent = exports.FieldEvent || (exports.FieldEvent = {}));
12class FieldsStore extends EventEmitter_1.EventEmitter {
13 constructor() {
14 super(...arguments);
15 this.fields = new Array();
16 }
17 getField(fieldName) {
18 const fields = this.fields.filter(_field => _field.name === fieldName);
19 return fields.length === 1 ? fields[0] : undefined;
20 }
21 addField(fieldName) {
22 const fields = this.fields.filter(_field => _field.name === fieldName);
23 (0, assert_1.assert)(fields.length === 0 || fields.length === 1, `Cannot have more than 1 field matching '${fieldName}'`);
24 if (fields.length === 0) {
25 const newField = new Field_1.Field(fieldName);
26 this.fields.push(newField);
27 this.emitSync(FieldEvent.Added, newField);
28 }
29 else {
30 }
31 }
32 removeField(fieldName) {
33 const fields = this.fields.filter(_field => _field.name === fieldName);
34 const index = this.fields.indexOf(fields[0]);
35 if (index > -1) {
36 this.fields.splice(index, 1);
37 this.emitSync(FieldEvent.Removed, fieldName);
38 }
39 }
40 isValid() {
41 return this.fields.every(field => field.isValid());
42 }
43 hasFeedbacks() {
44 return this.fields.some(field => field.hasFeedbacks());
45 }
46}
47exports.FieldsStore = FieldsStore;