|
|
(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){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("../model/AbstractModel"); require("../model/UserModel"); require("../view/AbstractView"); require("../view/UserView"); var UserController = /** @class */ (function () { function UserController(model, view) { this._model = model; this._view = view; } Object.defineProperty(UserController.prototype, "model", { /** * Getter model * @return {Model} */ get: function () { return this._model; }, /** * Setter model * @param {Model} value */ set: function (value) { this._model = value; }, enumerable: true, configurable: true }); Object.defineProperty(UserController.prototype, "view", { /** * Getter view * @return {View} */ get: function () { return this._view; }, /** * Setter view * @param {View} value */ set: function (value) { this._view = value; }, enumerable: true, configurable: true }); return UserController; }()); exports.UserController = UserController;
},{"../model/AbstractModel":3,"../model/UserModel":5,"../view/AbstractView":6,"../view/UserView":7}],2:[function(require,module,exports){ (function (global){ "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var UserView_1 = require("./view/UserView"); var UserController_1 = require("./controller/UserController"); var loglevel_1 = __importDefault((typeof window !== "undefined" ? window['log'] : typeof global !== "undefined" ? global['log'] : null)); var ModelFactory_1 = require("./model/ModelFactory"); var ActiveUserViewModel_1 = require("./viewmodel/ActiveUserViewModel"); var ChatMessageViewModel_1 = require("./viewmodel/ChatMessageViewModel"); var handlebars_1 = __importDefault((typeof window !== "undefined" ? window['Handlebars'] : typeof global !== "undefined" ? global['Handlebars'] : null)); loglevel_1.default.setLevel("TRACE"); // let userModel = new UserModel();
var userModel = ModelFactory_1.ModelFactory.createModel("USER"); var userView = new UserView_1.UserView(userModel, 2); userModel.attach(userView); // userView.model
var userController = new UserController_1.UserController(userModel, userView); userModel.someBusinessMethod(5); loglevel_1.default.info("hello"); var chatMessageViewModel = new ChatMessageViewModel_1.ChatMessageViewModel(); var activeUserViewModel = new ActiveUserViewModel_1.ActiveUserViewModel(); activeUserViewModel.userName = "some user"; activeUserViewModel.lastActive = new Date(); activeUserViewModel.online = true; function someFunc(vm) { loglevel_1.default.info(vm); } someFunc(activeUserViewModel); // @ts-ignore: Object is possibly 'null'.
var source = document.getElementById("msg_container_template").innerHTML; var msgContainerTemplate = handlebars_1.default.compile(source);
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./controller/UserController":1,"./model/ModelFactory":4,"./view/UserView":7,"./viewmodel/ActiveUserViewModel":8,"./viewmodel/ChatMessageViewModel":9}],3:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true });
},{}],4:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var UserModel_1 = require("./UserModel"); var ModelFactory = /** @class */ (function () { function ModelFactory() { } ModelFactory.createModel = function (modelName) { switch (modelName) { case "USER": return new UserModel_1.UserModel(); break; default: throw new Error("Invalid model name"); } }; return ModelFactory; }()); exports.ModelFactory = ModelFactory;
},{"./UserModel":5}],5:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var UserModel = /** @class */ (function () { function UserModel() { /** * @type {Observer[]} List of subscribers. In real life, the list of * subscribers can be stored more comprehensively (categorized by event * type, etc.). */ this.observers = []; this.state = 0; } /** * The subscription management methods. */ UserModel.prototype.attach = function (observer) { console.log('Subject: Attached an observer.'); this.observers.push(observer); }; UserModel.prototype.detach = function (observer) { var observerIndex = this.observers.indexOf(observer); this.observers.splice(observerIndex, 1); console.log('Subject: Detached an observer.'); }; /** * Trigger an update in each subscriber. */ UserModel.prototype.notify = function () { console.log('Subject: Notifying observers...'); for (var _i = 0, _a = this.observers; _i < _a.length; _i++) { var observer = _a[_i]; observer.update(this.state); } }; UserModel.prototype.someBusinessMethod = function (num) { this.state = num; this.helperMethod(); console.log("Subject: My state has just changed to: " + this.state); this.notify(); }; UserModel.prototype.helperMethod = function () { }; return UserModel; }()); exports.UserModel = UserModel;
},{}],6:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true });
},{}],7:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var UserView = /** @class */ (function () { function UserView(model, element) { this._model = model; this._element = element; } Object.defineProperty(UserView.prototype, "model", { /** * Getter model * @return {Model} */ get: function () { return this._model; }, /** * Setter model * @param {Model} value */ set: function (value) { this._model = value; }, enumerable: true, configurable: true }); Object.defineProperty(UserView.prototype, "element", { /** * Getter element * @return {any} */ get: function () { return this._element; }, /** * Setter element * @param {any} value */ set: function (value) { this._element = value; }, enumerable: true, configurable: true }); UserView.prototype.update = function (data) { this.element = data; console.log(this.element); }; return UserView; }()); exports.UserView = UserView;
},{}],8:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ActiveUserViewModel = /** @class */ (function () { function ActiveUserViewModel() { } return ActiveUserViewModel; }()); exports.ActiveUserViewModel = ActiveUserViewModel;
},{}],9:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ChatMessageViewModel = /** @class */ (function () { function ChatMessageViewModel() { } return ChatMessageViewModel; }()); exports.ChatMessageViewModel = ChatMessageViewModel;
},{}]},{},[2]) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9saWIvbm9kZV9tb2R1bGVzL3dhdGNoaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvY29udHJvbGxlci9Vc2VyQ29udHJvbGxlci50cyIsInNyYy9tYWluLnRzIiwic3JjL21vZGVsL01vZGVsRmFjdG9yeS50cyIsInNyYy9tb2RlbC9Vc2VyTW9kZWwudHMiLCJzcmMvdmlldy9Vc2VyVmlldy50cyIsInNyYy92aWV3bW9kZWwvQWN0aXZlVXNlclZpZXdNb2RlbC50cyIsInNyYy92aWV3bW9kZWwvQ2hhdE1lc3NhZ2VWaWV3TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztBQ0NBLGtDQUErQjtBQUMvQiw4QkFBMkI7QUFDM0IsZ0NBQTZCO0FBQzdCLDRCQUF5QjtBQUl6QjtJQUtDLHdCQUFZLEtBQVksRUFBRSxJQUFVO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFNRCxzQkFBVyxpQ0FBSztRQUpiOzs7V0FHRzthQUNOO1lBQ0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BCLENBQUM7UUFVRTs7O1dBR0c7YUFDTixVQUFpQixLQUFZO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQWhCQTtJQU1ELHNCQUFXLGdDQUFJO1FBSlo7OztXQUdHO2FBQ047WUFDQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkIsQ0FBQztRQVVFOzs7V0FHRzthQUNOLFVBQWdCLEtBQVc7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BaEJBO0lBa0JGLHFCQUFDO0FBQUQsQ0ExQ0EsQUEwQ0MsSUFBQTtBQTFDWSx3Q0FBYzs7Ozs7Ozs7O0FDSjNC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
|