|
|
-{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","prototype","self","this","preloaded_data","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","ordered_services","OrderedList","forEach","service_instance","Conf","component","arguments_array","i","arguments","length","m","apply","undefined","_outlet","init","outlet","mount","ForumLayout","destroy","view","ctrl","_","settings","forum_name","has","obj","key","hasOwnProperty","value","pop","returnValue","items","is_ordered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","indexOf","ordered","splice","index","iterations"],"mappings":"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","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n 'use strict';\n\n window.Misago = function() {\n\n var ns = Misago.prototype;\n var self = this;\n\n // Preloaded data\n this.preloaded_data = {\n // Empty settings\n SETTINGS: {}\n };\n\n // Services\n this._services = [];\n this.addService = function(name, factory, order) {\n this._services.push({\n name: name,\n item: factory,\n after: this.get(order, 'after'),\n before: this.get(order, 'before')\n });\n };\n\n this._initServices = function(services) {\n var ordered_services = new ns.OrderedList(services).order(false);\n ordered_services.forEach(function (item) {\n var service_instance = item.item(self);\n if (service_instance) {\n self[item.name] = service_instance;\n }\n });\n };\n\n // Register core services\n this.addService('Conf', ns.Conf);\n\n // Component factory\n this.component = function() {\n var arguments_array = [];\n for (var i = 0; i < arguments.length; i += 1) {\n arguments_array.push(arguments[i]);\n }\n\n if (arguments_array[arguments_array.length - 1] !== this) {\n arguments_array.push(this);\n }\n\n return m.component.apply(undefined, arguments_array);\n };\n\n // App ini/destory\n this._outlet = null;\n this.init = function(outlet) {\n this._initServices(this._services);\n if (outlet) {\n this._outlet = outlet;\n m.mount(outlet, this.component(ns.ForumLayout));\n }\n };\n\n this.destroy = function() {\n // unmount components if they are mounted\n if (this._outlet) {\n m.mount(this._outlet, null);\n }\n };\n };\n}());\n\n(function (ns) {\n 'use strict';\n\n ns.ForumLayout = {\n view: function(ctrl, _) {\n return m('.container', [\n m('h1', _.settings.forum_name),\n m('hr'),\n m('#route-outlet', 'Current route will be rendered here.'),\n m('hr'),\n m('p', 'Forum footer goes here.')\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (_) {\n 'use strict';\n\n _.Conf = function(_) {\n _.settings = _.get(_.preloaded_data, 'SETTINGS', {});\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.has = function(obj, key) {\n if (obj !== undefined) {\n return obj.hasOwnProperty(key);\n } else {\n return false;\n }\n };\n\n ns.get = function(obj, key, value) {\n if (ns.has(obj, key)) {\n return obj[key];\n } else if (value !== undefined) {\n return value;\n } else {\n return undefined;\n }\n };\n\n ns.pop = function(obj, key, value) {\n var returnValue = ns.get(obj, key, value);\n if (ns.has(obj, key)) {\n delete obj[key];\n }\n return returnValue;\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.OrderedList = function(items) {\n this.is_ordered = false;\n this._items = items || [];\n\n this.add = function(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n after: ns.get(order, 'after'),\n before: ns.get(order, 'before')\n });\n };\n\n this.get = function(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item;\n }\n }\n\n return value;\n };\n\n this.has = function(key) {\n return this.get(key) !== undefined;\n };\n\n this.values = function() {\n var values = [];\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item);\n }\n return values;\n };\n\n this.order = function(values_only) {\n if (!this.is_ordered) {\n this._items = this._order(this._items);\n this.is_ordered = true;\n }\n\n if (values_only || typeof values_only === 'undefined') {\n return this.values();\n } else {\n return this._items;\n }\n };\n\n this._order = function(unordered) {\n // Index of unordered items\n var index = [];\n unordered.forEach(function (item) {\n index.push(item.key);\n });\n\n // Ordered items\n var ordered = [];\n var ordering = [];\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item);\n ordering.push(item.key);\n }\n });\n\n // Second pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1;\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after);\n if (insertAt !== -1) {\n insertAt += 1;\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before);\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item);\n ordering.splice(insertAt, 0, item.key);\n }\n }\n }\n\n var iterations = 200;\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1;\n unordered.forEach(insertItem);\n }\n\n return ordered;\n };\n };\n} (Misago.prototype));\n"],"sourceRoot":"/source/"}
|
|
|
+{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","Object","getPrototypeOf","this","self","preloaded_data","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","ordered_services","OrderedList","forEach","undefined","service_instance","_destroyServices","reverse","destroy","registerCoreServices","Conf","component","arguments_array","i","arguments","length","m","apply","_outlet","init","outlet","mount","ForumLayout","view","ctrl","_","settings","forum_name","prototype","has","obj","key","hasOwnProperty","value","pop","returnValue","items","is_ordered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","indexOf","ordered","splice","index","iterations"],"mappings":"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","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n 'use strict';\n\n window.Misago = function() {\n\n var ns = Object.getPrototypeOf(this);\n var self = this;\n\n // Preloaded data\n this.preloaded_data = {\n // Empty settings\n SETTINGS: {}\n };\n\n // Services\n this._services = [];\n this.addService = function(name, factory, order) {\n this._services.push({\n name: name,\n item: factory,\n after: this.get(order, 'after'),\n before: this.get(order, 'before')\n });\n };\n\n this._initServices = function(services) {\n var ordered_services = new ns.OrderedList(services).order(false);\n ordered_services.forEach(function (item) {\n var factory = null;\n if (item.item.factory !== undefined) {\n factory = item.item.factory;\n } else {\n factory = item.item;\n }\n\n var service_instance = factory(self);\n if (service_instance) {\n self[item.name] = service_instance;\n }\n });\n };\n\n this._destroyServices = function(services) {\n var ordered_services = new ns.OrderedList(services).order();\n ordered_services.reverse();\n ordered_services.forEach(function (item) {\n if (item.destroy !== undefined) {\n item.destroy(self);\n }\n });\n };\n\n this.registerCoreServices = function() {\n this.addService('Conf', ns.Conf);\n };\n\n // Component factory\n this.component = function() {\n var arguments_array = [];\n for (var i = 0; i < arguments.length; i += 1) {\n arguments_array.push(arguments[i]);\n }\n\n if (arguments_array[arguments_array.length - 1] !== this) {\n arguments_array.push(this);\n }\n\n return m.component.apply(undefined, arguments_array);\n };\n\n // App ini/destory\n this._outlet = null;\n this.init = function(outlet) {\n this._initServices(this._services);\n if (outlet) {\n this._outlet = outlet;\n m.mount(outlet, this.component(ns.ForumLayout));\n }\n };\n\n this.destroy = function() {\n // run destructors for services\n this._destroyServices()\n\n // unmount components if they are mounted\n if (this._outlet) {\n m.mount(this._outlet, null);\n }\n };\n };\n}());\n\n(function (ns) {\n 'use strict';\n\n ns.ForumLayout = {\n view: function(ctrl, _) {\n return m('.container', [\n m('h1', _.settings.forum_name),\n m('hr'),\n m('#route-outlet', 'Current route will be rendered here.'),\n m('hr'),\n m('p', 'Forum footer goes here.')\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (_) {\n 'use strict';\n\n _.Conf = function(_) {\n _.settings = _.get(_.preloaded_data, 'SETTINGS', {});\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.has = function(obj, key) {\n if (obj !== undefined) {\n return obj.hasOwnProperty(key);\n } else {\n return false;\n }\n };\n\n ns.get = function(obj, key, value) {\n if (ns.has(obj, key)) {\n return obj[key];\n } else if (value !== undefined) {\n return value;\n } else {\n return undefined;\n }\n };\n\n ns.pop = function(obj, key, value) {\n var returnValue = ns.get(obj, key, value);\n if (ns.has(obj, key)) {\n delete obj[key];\n }\n return returnValue;\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.OrderedList = function(items) {\n this.is_ordered = false;\n this._items = items || [];\n\n this.add = function(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n after: ns.get(order, 'after'),\n before: ns.get(order, 'before')\n });\n };\n\n this.get = function(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item;\n }\n }\n\n return value;\n };\n\n this.has = function(key) {\n return this.get(key) !== undefined;\n };\n\n this.values = function() {\n var values = [];\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item);\n }\n return values;\n };\n\n this.order = function(values_only) {\n if (!this.is_ordered) {\n this._items = this._order(this._items);\n this.is_ordered = true;\n }\n\n if (values_only || typeof values_only === 'undefined') {\n return this.values();\n } else {\n return this._items;\n }\n };\n\n this._order = function(unordered) {\n // Index of unordered items\n var index = [];\n unordered.forEach(function (item) {\n index.push(item.key);\n });\n\n // Ordered items\n var ordered = [];\n var ordering = [];\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item);\n ordering.push(item.key);\n }\n });\n\n // Second pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1;\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after);\n if (insertAt !== -1) {\n insertAt += 1;\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before);\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item);\n ordering.splice(insertAt, 0, item.key);\n }\n }\n }\n\n var iterations = 200;\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1;\n unordered.forEach(insertItem);\n }\n\n return ordered;\n };\n };\n} (Misago.prototype));\n"],"sourceRoot":"/source/"}
|