A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
21 KiB

  1. (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
  2. "use strict";
  3. Object.defineProperty(exports, "__esModule", { value: true });
  4. require("../model/AbstractModel");
  5. require("../model/UserModel");
  6. require("../view/AbstractView");
  7. require("../view/UserView");
  8. var UserController = /** @class */ (function () {
  9. function UserController(model, view) {
  10. this._model = model;
  11. this._view = view;
  12. }
  13. Object.defineProperty(UserController.prototype, "model", {
  14. /**
  15. * Getter model
  16. * @return {Model}
  17. */
  18. get: function () {
  19. return this._model;
  20. },
  21. /**
  22. * Setter model
  23. * @param {Model} value
  24. */
  25. set: function (value) {
  26. this._model = value;
  27. },
  28. enumerable: true,
  29. configurable: true
  30. });
  31. Object.defineProperty(UserController.prototype, "view", {
  32. /**
  33. * Getter view
  34. * @return {View}
  35. */
  36. get: function () {
  37. return this._view;
  38. },
  39. /**
  40. * Setter view
  41. * @param {View} value
  42. */
  43. set: function (value) {
  44. this._view = value;
  45. },
  46. enumerable: true,
  47. configurable: true
  48. });
  49. return UserController;
  50. }());
  51. exports.UserController = UserController;
  52. },{"../model/AbstractModel":3,"../model/UserModel":5,"../view/AbstractView":6,"../view/UserView":7}],2:[function(require,module,exports){
  53. (function (global){
  54. "use strict";
  55. var __importDefault = (this && this.__importDefault) || function (mod) {
  56. return (mod && mod.__esModule) ? mod : { "default": mod };
  57. };
  58. Object.defineProperty(exports, "__esModule", { value: true });
  59. var UserView_1 = require("./view/UserView");
  60. var UserController_1 = require("./controller/UserController");
  61. var loglevel_1 = __importDefault((typeof window !== "undefined" ? window['log'] : typeof global !== "undefined" ? global['log'] : null));
  62. var ModelFactory_1 = require("./model/ModelFactory");
  63. var ActiveUserViewModel_1 = require("./viewmodel/ActiveUserViewModel");
  64. var ChatMessageViewModel_1 = require("./viewmodel/ChatMessageViewModel");
  65. var handlebars_1 = __importDefault((typeof window !== "undefined" ? window['Handlebars'] : typeof global !== "undefined" ? global['Handlebars'] : null));
  66. loglevel_1.default.setLevel("TRACE");
  67. // let userModel = new UserModel();
  68. var userModel = ModelFactory_1.ModelFactory.createModel("USER");
  69. var userView = new UserView_1.UserView(userModel, 2);
  70. userModel.attach(userView);
  71. // userView.model
  72. var userController = new UserController_1.UserController(userModel, userView);
  73. userModel.someBusinessMethod(5);
  74. loglevel_1.default.info("hello");
  75. var chatMessageViewModel = new ChatMessageViewModel_1.ChatMessageViewModel();
  76. var activeUserViewModel = new ActiveUserViewModel_1.ActiveUserViewModel();
  77. activeUserViewModel.userName = "some user";
  78. activeUserViewModel.lastActive = new Date();
  79. activeUserViewModel.online = true;
  80. function someFunc(vm) {
  81. loglevel_1.default.info(vm);
  82. }
  83. someFunc(activeUserViewModel);
  84. // @ts-ignore: Object is possibly 'null'.
  85. var source = document.getElementById("msg_container_template").innerHTML;
  86. var msgContainerTemplate = handlebars_1.default.compile(source);
  87. }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  88. },{"./controller/UserController":1,"./model/ModelFactory":4,"./view/UserView":7,"./viewmodel/ActiveUserViewModel":8,"./viewmodel/ChatMessageViewModel":9}],3:[function(require,module,exports){
  89. "use strict";
  90. Object.defineProperty(exports, "__esModule", { value: true });
  91. },{}],4:[function(require,module,exports){
  92. "use strict";
  93. Object.defineProperty(exports, "__esModule", { value: true });
  94. var UserModel_1 = require("./UserModel");
  95. var ModelFactory = /** @class */ (function () {
  96. function ModelFactory() {
  97. }
  98. ModelFactory.createModel = function (modelName) {
  99. switch (modelName) {
  100. case "USER":
  101. return new UserModel_1.UserModel();
  102. break;
  103. default: throw new Error("Invalid model name");
  104. }
  105. };
  106. return ModelFactory;
  107. }());
  108. exports.ModelFactory = ModelFactory;
  109. },{"./UserModel":5}],5:[function(require,module,exports){
  110. "use strict";
  111. Object.defineProperty(exports, "__esModule", { value: true });
  112. var UserModel = /** @class */ (function () {
  113. function UserModel() {
  114. /**
  115. * @type {Observer[]} List of subscribers. In real life, the list of
  116. * subscribers can be stored more comprehensively (categorized by event
  117. * type, etc.).
  118. */
  119. this.observers = [];
  120. this.state = 0;
  121. }
  122. /**
  123. * The subscription management methods.
  124. */
  125. UserModel.prototype.attach = function (observer) {
  126. console.log('Subject: Attached an observer.');
  127. this.observers.push(observer);
  128. };
  129. UserModel.prototype.detach = function (observer) {
  130. var observerIndex = this.observers.indexOf(observer);
  131. this.observers.splice(observerIndex, 1);
  132. console.log('Subject: Detached an observer.');
  133. };
  134. /**
  135. * Trigger an update in each subscriber.
  136. */
  137. UserModel.prototype.notify = function () {
  138. console.log('Subject: Notifying observers...');
  139. for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
  140. var observer = _a[_i];
  141. observer.update(this.state);
  142. }
  143. };
  144. UserModel.prototype.someBusinessMethod = function (num) {
  145. this.state = num;
  146. this.helperMethod();
  147. console.log("Subject: My state has just changed to: " + this.state);
  148. this.notify();
  149. };
  150. UserModel.prototype.helperMethod = function () { };
  151. return UserModel;
  152. }());
  153. exports.UserModel = UserModel;
  154. },{}],6:[function(require,module,exports){
  155. "use strict";
  156. Object.defineProperty(exports, "__esModule", { value: true });
  157. },{}],7:[function(require,module,exports){
  158. "use strict";
  159. Object.defineProperty(exports, "__esModule", { value: true });
  160. var UserView = /** @class */ (function () {
  161. function UserView(model, element) {
  162. this._model = model;
  163. this._element = element;
  164. }
  165. Object.defineProperty(UserView.prototype, "model", {
  166. /**
  167. * Getter model
  168. * @return {Model}
  169. */
  170. get: function () {
  171. return this._model;
  172. },
  173. /**
  174. * Setter model
  175. * @param {Model} value
  176. */
  177. set: function (value) {
  178. this._model = value;
  179. },
  180. enumerable: true,
  181. configurable: true
  182. });
  183. Object.defineProperty(UserView.prototype, "element", {
  184. /**
  185. * Getter element
  186. * @return {any}
  187. */
  188. get: function () {
  189. return this._element;
  190. },
  191. /**
  192. * Setter element
  193. * @param {any} value
  194. */
  195. set: function (value) {
  196. this._element = value;
  197. },
  198. enumerable: true,
  199. configurable: true
  200. });
  201. UserView.prototype.update = function (data) {
  202. this.element = data;
  203. console.log(this.element);
  204. };
  205. return UserView;
  206. }());
  207. exports.UserView = UserView;
  208. },{}],8:[function(require,module,exports){
  209. "use strict";
  210. Object.defineProperty(exports, "__esModule", { value: true });
  211. var ActiveUserViewModel = /** @class */ (function () {
  212. function ActiveUserViewModel() {
  213. }
  214. return ActiveUserViewModel;
  215. }());
  216. exports.ActiveUserViewModel = ActiveUserViewModel;
  217. },{}],9:[function(require,module,exports){
  218. "use strict";
  219. Object.defineProperty(exports, "__esModule", { value: true });
  220. var ChatMessageViewModel = /** @class */ (function () {
  221. function ChatMessageViewModel() {
  222. }
  223. return ChatMessageViewModel;
  224. }());
  225. exports.ChatMessageViewModel = ChatMessageViewModel;
  226. },{}]},{},[2])
  227. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9saWIvbm9kZV9tb2R1bGVzL3dhdGNoaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvY29udHJvbGxlci9Vc2VyQ29udHJvbGxlci50cyIsInNyYy9tYWluLnRzIiwic3JjL21vZGVsL01vZGVsRmFjdG9yeS50cyIsInNyYy9tb2RlbC9Vc2VyTW9kZWwudHMiLCJzcmMvdmlldy9Vc2VyVmlldy50cyIsInNyYy92aWV3bW9kZWwvQWN0aXZlVXNlclZpZXdNb2RlbC50cyIsInNyYy92aWV3bW9kZWwvQ2hhdE1lc3NhZ2VWaWV3TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztBQ0NBLGtDQUErQjtBQUMvQiw4QkFBMkI7QUFDM0IsZ0NBQTZCO0FBQzdCLDRCQUF5QjtBQUl6QjtJQUtDLHdCQUFZLEtBQVksRUFBRSxJQUFVO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFNRCxzQkFBVyxpQ0FBSztRQUpiOzs7V0FHRzthQUNOO1lBQ0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BCLENBQUM7UUFVRTs7O1dBR0c7YUFDTixVQUFpQixLQUFZO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQWhCQTtJQU1ELHNCQUFXLGdDQUFJO1FBSlo7OztXQUdHO2FBQ047WUFDQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkIsQ0FBQztRQVVFOzs7V0FHRzthQUNOLFVBQWdCLEtBQVc7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BaEJBO0lBa0JGLHFCQUFDO0FBQUQsQ0ExQ0EsQUEwQ0MsSUFBQTtBQTFDWSx3Q0FBYzs7Ozs7Ozs7O0FDSjNC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