@convo-lang/convo-lang
Version:
A Conversational Language
37 lines • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConvoRoom = void 0;
const common_1 = require("@iyio/common");
const rxjs_1 = require("rxjs");
/**
* A ConvoRoom contains 1 or more conversations and allows conversations to interact with each
* other
*/
class ConvoRoom {
_state = new rxjs_1.BehaviorSubject({
conversations: [],
lookup: {}
});
get stateSubject() { return this._state; }
get state() { return this._state.value; }
addConversation(convo) {
this._state.next(createState([...this._state.value.conversations, convo]));
}
removeConversation(convo) {
this._state.next(createState((0, common_1.aryDuplicateRemoveItem)(this._state.value.conversations, convo)));
}
}
exports.ConvoRoom = ConvoRoom;
const createState = (conversations) => {
const lookup = {};
for (const c of conversations) {
if (lookup[c.name] === undefined) {
lookup[c.name] = c;
}
}
return {
conversations,
lookup,
};
};
//# sourceMappingURL=ConvoRoom.js.map