/* knockback-core-stack.js 1.1.0 Copyright (c) 2011-2016 Kevin Malakoff. License: MIT (http://www.opensource.org/licenses/mit-license.php) Source: https://github.com/kmalakoff/knockback Dependencies: Knockout.js, Backbone.js, and Underscore.js (or LoDash.js). Optional dependencies: Backbone.ModelRef.js and BackboneORM. */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("jquery")); else if(typeof define === 'function' && define.amd) define(["jquery"], factory); else if(typeof exports === 'object') exports["kb"] = factory(require("jquery")); else root["kb"] = factory(root["jQuery"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_9__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(1); __webpack_require__(10); __webpack_require__(14); __webpack_require__(15); __webpack_require__(16); __webpack_require__(2); __webpack_require__(17); __webpack_require__(18); __webpack_require__(20); __webpack_require__(21); __webpack_require__(19); __webpack_require__(22); __webpack_require__(26); module.exports = __webpack_require__(27); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { /* knockback.js 1.1.0 Copyright (c) 2011-2016 Kevin Malakoff. License: MIT (http://www.opensource.org/licenses/mit-license.php) Source: https://github.com/kmalakoff/knockback Dependencies: Knockout.js, Backbone.js, and Underscore.js (or LoDash.js). Optional dependencies: Backbone.ModelRef.js and BackboneORM. */ var COMPARE_ASCENDING, COMPARE_DESCENDING, COMPARE_EQUAL, KEYS_PUBLISH, _, kb, ko, ref, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; ref = kb = __webpack_require__(2), _ = ref._, ko = ref.ko; COMPARE_EQUAL = 0; COMPARE_ASCENDING = -1; COMPARE_DESCENDING = 1; KEYS_PUBLISH = ['destroy', 'shareOptions', 'filters', 'comparator', 'sortAttribute', 'viewModelByModel', 'hasViewModels']; kb.compare = function(value_a, value_b) { if (_.isString(value_a)) { return value_a.localeCompare("" + value_b); } if (_.isString(value_b)) { return value_b.localeCompare("" + value_a); } if (value_a === value_b) { return COMPARE_EQUAL; } else { if (value_a < value_b) { return COMPARE_ASCENDING; } else { return COMPARE_DESCENDING; } } }; kb.CollectionObservable = (function() { CollectionObservable.extend = kb.extend; function CollectionObservable(collection, view_model, options) { this._onCollectionChange = bind(this._onCollectionChange, this); var args; args = Array.prototype.slice.call(_.isArguments(collection) ? collection : arguments); return kb.ignore((function(_this) { return function() { var arg, create_options, i, len, observable; collection = args[0] instanceof kb.Collection ? args.shift() : (_.isArray(args[0]) ? new kb.Collection(args.shift()) : new kb.Collection()); if (_.isFunction(args[0])) { args[0] = { view_model: args[0] }; } options = {}; for (i = 0, len = args.length; i < len; i++) { arg = args[i]; _.extend(options, arg); } observable = kb.utils.wrappedObservable(_this, ko.observableArray([])); observable.__kb_is_co = true; _this.in_edit = 0; _this.__kb || (_this.__kb = {}); options = kb.utils.collapseOptions(options); if (options.auto_compact) { _this.auto_compact = true; } if (options.sort_attribute) { _this._comparator = ko.observable(_this._attributeComparator(options.sort_attribute)); } else { _this._comparator = ko.observable(options.comparator); } if (options.filters) { _this._filters = ko.observableArray(_.isArray(options.filters) ? options.filters : options.filters ? [options.filters] : void 0); } else { _this._filters = ko.observableArray([]); } create_options = _this.create_options = { store: kb.Store.useOptionsOrCreate(options, collection, observable) }; kb.utils.wrappedObject(observable, collection); _this.path = options.path; create_options.factory = kb.utils.wrappedFactory(observable, _this._shareOrCreateFactory(options)); create_options.path = kb.utils.pathJoin(options.path, 'models'); create_options.creator = create_options.factory.creatorForPath(null, create_options.path); if (create_options.creator) { _this.models_only = create_options.creator.models_only; } kb.publishMethods(observable, _this, KEYS_PUBLISH); _this._collection = ko.observable(collection); observable.collection = _this.collection = ko.computed({ read: function() { return _this._collection(); }, write: function(new_collection) { return kb.ignore(function() { var previous_collection; if ((previous_collection = _this._collection()) === new_collection) { return; } kb.utils.wrappedObject(observable, new_collection); if (previous_collection) { previous_collection.unbind('all', _this._onCollectionChange); } if (new_collection) { new_collection.bind('all', _this._onCollectionChange); } return _this._collection(new_collection); }); } }); if (collection) { collection.bind('all', _this._onCollectionChange); } _this._mapper = ko.computed(function() { var comparator, current_collection, filter, filters, j, len1, models, previous_view_models, view_models; comparator = _this._comparator(); filters = _this._filters(); if (filters) { for (j = 0, len1 = filters.length; j < len1; j++) { filter = filters[j]; ko.utils.unwrapObservable(filter); } } current_collection = _this._collection(); if (_this.in_edit) { return; } observable = kb.utils.wrappedObservable(_this); previous_view_models = kb.peek(observable); if (current_collection) { models = current_collection.models; } if (!models || (current_collection.models.length === 0)) { view_models = []; } else { models = _.filter(models, function(model) { return !filters.length || _this._selectModel(model); }); if (comparator) { view_models = _.map(models, function(model) { return _this._createViewModel(model); }).sort(comparator); } else { if (_this.models_only) { view_models = filters.length ? models : models.slice(); } else { view_models = _.map(models, function(model) { return _this._createViewModel(model); }); } } } _this.in_edit++; observable(view_models); _this.in_edit--; }); observable.subscribe(_.bind(_this._onObservableArrayChange, _this)); !kb.statistics || kb.statistics.register('CollectionObservable', _this); return observable; }; })(this)); } CollectionObservable.prototype.destroy = function() { var array, collection, observable; this.__kb_released = true; observable = kb.utils.wrappedObservable(this); collection = kb.peek(this._collection); kb.utils.wrappedObject(observable, null); if (collection) { collection.unbind('all', this._onCollectionChange); array = kb.peek(observable); array.splice(0, array.length); } this.collection.dispose(); this._collection = observable.collection = this.collection = null; this._mapper.dispose(); this._mapper = null; kb.release(this._filters); this._filters = null; this._comparator(null); this._comparator = null; this.create_options = null; observable.collection = null; kb.utils.wrappedDestroy(this); return !kb.statistics || kb.statistics.unregister('CollectionObservable', this); }; CollectionObservable.prototype.shareOptions = function() { var observable; observable = kb.utils.wrappedObservable(this); return { store: kb.utils.wrappedStore(observable), factory: kb.utils.wrappedFactory(observable) }; }; CollectionObservable.prototype.filters = function(filters) { if (filters) { return this._filters(_.isArray(filters) ? filters : [filters]); } else { return this._filters([]); } }; CollectionObservable.prototype.comparator = function(comparator) { return this._comparator(comparator); }; CollectionObservable.prototype.sortAttribute = function(sort_attribute) { return this._comparator(sort_attribute ? this._attributeComparator(sort_attribute) : null); }; CollectionObservable.prototype.viewModelByModel = function(model) { var id_attribute; if (this.models_only) { return null; } id_attribute = model.hasOwnProperty(model.idAttribute) ? model.idAttribute : 'cid'; return _.find(kb.peek(kb.utils.wrappedObservable(this)), function(test) { var ref1; if (test != null ? (ref1 = test.__kb) != null ? ref1.object : void 0 : void 0) { return test.__kb.object[id_attribute] === model[id_attribute]; } else { return false; } }); }; CollectionObservable.prototype.hasViewModels = function() { return !this.models_only; }; CollectionObservable.prototype.compact = function() { return kb.ignore((function(_this) { return function() { var observable; observable = kb.utils.wrappedObservable(_this); if (!kb.utils.wrappedStoreIsOwned(observable)) { return; } kb.utils.wrappedStore(observable).clear(); return _this._collection.notifySubscribers(_this._collection()); }; })(this)); }; CollectionObservable.prototype._shareOrCreateFactory = function(options) { var absolute_models_path, existing_creator, factories, factory; absolute_models_path = kb.utils.pathJoin(options.path, 'models'); factories = options.factories; if ((factory = options.factory)) { if ((existing_creator = factory.creatorForPath(null, absolute_models_path)) && (!factories || (factories['models'] === existing_creator))) { if (!factories) { return factory; } if (factory.hasPathMappings(factories, options.path)) { return factory; } } } factory = new kb.Factory(options.factory); if (factories) { factory.addPathMappings(factories, options.path); } if (!factory.creatorForPath(null, absolute_models_path)) { if (options.hasOwnProperty('models_only')) { if (options.models_only) { factory.addPathMapping(absolute_models_path, { models_only: true }); } else { factory.addPathMapping(absolute_models_path, kb.ViewModel); } } else if (options.view_model) { factory.addPathMapping(absolute_models_path, options.view_model); } else if (options.create) { factory.addPathMapping(absolute_models_path, { create: options.create }); } else { factory.addPathMapping(absolute_models_path, kb.ViewModel); } } return factory; }; CollectionObservable.prototype._onCollectionChange = function(event, arg) { return kb.ignore((function(_this) { return function() { var collection, comparator, observable, view_model; if (_this.in_edit || kb.wasReleased(_this)) { return; } switch (event) { case 'reset': if (_this.auto_compact) { _this.compact(); } else { _this._collection.notifySubscribers(_this._collection()); } break; case 'sort': case 'resort': _this._collection.notifySubscribers(_this._collection()); break; case 'new': case 'add': if (!_this._selectModel(arg)) { return; } observable = kb.utils.wrappedObservable(_this); collection = _this._collection(); if (collection.indexOf(arg) === -1) { return; } if ((view_model = _this.viewModelByModel(arg))) { return; } _this.in_edit++; if ((comparator = _this._comparator())) { observable().push(_this._createViewModel(arg)); observable.sort(comparator); } else { observable.splice(collection.indexOf(arg), 0, _this._createViewModel(arg)); } _this.in_edit--; break; case 'remove': case 'destroy': _this._onModelRemove(arg); break; case 'change': if (!_this._selectModel(arg)) { return _this._onModelRemove(arg); } view_model = _this.models_only ? arg : _this.viewModelByModel(arg); if (!view_model) { return _this._onCollectionChange('add', arg); } if (!(comparator = _this._comparator())) { return; } _this.in_edit++; kb.utils.wrappedObservable(_this).sort(comparator); _this.in_edit--; } }; })(this)); }; CollectionObservable.prototype._onModelRemove = function(model) { var observable, view_model; view_model = this.models_only ? model : this.viewModelByModel(model); if (!view_model) { return; } observable = kb.utils.wrappedObservable(this); this.in_edit++; observable.remove(view_model); return this.in_edit--; }; CollectionObservable.prototype._onObservableArrayChange = function(models_or_view_models) { return kb.ignore((function(_this) { return function() { var collection, current_view_model, has_filters, i, len, model, models, observable, view_model, view_models; if (_this.in_edit) { return; } (_this.models_only && (!models_or_view_models.length || kb.isModel(models_or_view_models[0]))) || (!_this.models_only && (!models_or_view_models.length || (_.isObject(models_or_view_models[0]) && !kb.isModel(models_or_view_models[0])))) || kb._throwUnexpected(_this, 'incorrect type passed'); observable = kb.utils.wrappedObservable(_this); collection = kb.peek(_this._collection); has_filters = kb.peek(_this._filters).length; if (!collection) { return; } view_models = models_or_view_models; if (_this.models_only) { models = _.filter(models_or_view_models, function(model) { return !has_filters || _this._selectModel(model); }); } else { !has_filters || (view_models = []); models = []; for (i = 0, len = models_or_view_models.length; i < len; i++) { view_model = models_or_view_models[i]; model = kb.utils.wrappedObject(view_model); if (has_filters) { if (!_this._selectModel(model)) { continue; } view_models.push(view_model); } if (current_view_model = _this.create_options.store.find(model, _this.create_options.creator)) { (current_view_model.constructor === view_model.constructor) || kb._throwUnexpected(_this, 'replacing different type of view model'); } _this.create_options.store.retain(view_model, model, _this.create_options.creator); models.push(model); } } _this.in_edit++; (models_or_view_models.length === view_models.length) || observable(view_models); _.isEqual(collection.models, models) || collection.reset(models); _this.in_edit--; }; })(this)); }; CollectionObservable.prototype._attributeComparator = function(sort_attribute) { var modelAttributeCompare; modelAttributeCompare = function(model_a, model_b) { var attribute_name; attribute_name = ko.utils.unwrapObservable(sort_attribute); return kb.compare(model_a.get(attribute_name), model_b.get(attribute_name)); }; return (this.models_only ? modelAttributeCompare : function(model_a, model_b) { return modelAttributeCompare(kb.utils.wrappedModel(model_a), kb.utils.wrappedModel(model_b)); }); }; CollectionObservable.prototype._createViewModel = function(model) { if (this.models_only) { return model; } return this.create_options.store.retainOrCreate(model, this.create_options); }; CollectionObservable.prototype._selectModel = function(model) { var filter, filters, i, len, ref1; filters = kb.peek(this._filters); for (i = 0, len = filters.length; i < len; i++) { filter = filters[i]; filter = kb.peek(filter); if (_.isFunction(filter)) { if (!filter(model)) { return false; } } else if (_.isArray(filter)) { if (ref1 = model.id, indexOf.call(filter, ref1) < 0) { return false; } } else { if (model.id !== filter) { return false; } } } return true; }; return CollectionObservable; })(); kb.collectionObservable = function(collection, view_model, options) { return new kb.CollectionObservable(arguments); }; kb.observableCollection = kb.collectionObservable; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) { /* knockback.js 1.1.0 Copyright (c) 2011-2016 Kevin Malakoff. License: MIT (http://www.opensource.org/licenses/mit-license.php) Source: https://github.com/kmalakoff/knockback Dependencies: Knockout.js, Backbone.js, and Underscore.js (or LoDash.js). Optional dependencies: Backbone.ModelRef.js and BackboneORM. */ var Backbone, LIFECYCLE_METHODS, _, kb, ko, window; window = window != null ? window : global; ko = __webpack_require__(3); LIFECYCLE_METHODS = ['release', 'destroy', 'dispose']; module.exports = kb = (function() { var ref; function kb() {} kb.VERSION = '1.1.0'; kb.TYPE_UNKNOWN = 0; kb.TYPE_SIMPLE = 1; kb.TYPE_ARRAY = 2; kb.TYPE_MODEL = 3; kb.TYPE_COLLECTION = 4; kb.wasReleased = function(obj) { return !obj || obj.__kb_released; }; kb.isReleaseable = function(obj, depth) { var i, key, len, method, value; if (depth == null) { depth = 0; } if ((!obj || (obj !== Object(obj))) || obj.__kb_released) { return false; } if (ko.isObservable(obj) || (obj instanceof kb.ViewModel)) { return true; } if ((typeof obj === 'function') || kb.isModel(obj) || kb.isCollection(obj)) { return false; } for (i = 0, len = LIFECYCLE_METHODS.length; i < len; i++) { method = LIFECYCLE_METHODS[i]; if (typeof obj[method] === 'function') { return true; } } if (depth > 0) { return false; } for (key in obj) { value = obj[key]; if ((key !== '__kb') && kb.isReleaseable(value, depth + 1)) { return true; } } return false; }; kb.release = function(obj) { var array, i, index, len, method, value; if (!kb.isReleaseable(obj)) { return; } obj.__kb_released = true; if (_.isArray(obj)) { for (index in obj) { value = obj[index]; if (kb.isReleaseable(value)) { obj[index] = null; kb.release(value); } } return; } if (ko.isObservable(obj) && _.isArray(array = kb.peek(obj))) { if (obj.__kb_is_co || (obj.__kb_is_o && (obj.valueType() === kb.TYPE_COLLECTION))) { return typeof obj.destroy === "function" ? obj.destroy() : void 0; } for (index in array) { value = array[index]; if (kb.isReleaseable(value)) { array[index] = null; kb.release(value); } } if (typeof obj.dispose === 'function') { obj.dispose(); } return; } for (i = 0, len = LIFECYCLE_METHODS.length; i < len; i++) { method = LIFECYCLE_METHODS[i]; if (typeof obj[method] === 'function') { return obj[method].call(obj); } } if (!ko.isObservable(obj)) { return this.releaseKeys(obj); } }; kb.releaseKeys = function(obj) { var key, value; for (key in obj) { value = obj[key]; if (key !== '__kb' && kb.isReleaseable(value)) { obj[key] = null; kb.release(value); } } }; kb.releaseOnNodeRemove = function(view_model, node) { view_model || kb._throwUnexpected(this, 'missing view model'); node || kb._throwUnexpected(this, 'missing node'); return ko.utils.domNodeDisposal.addDisposeCallback(node, function() { return kb.release(view_model); }); }; kb.renderTemplate = function(template, view_model, options) { var document, el, observable; if (options == null) { options = {}; } if (!(document = window != null ? window.document : void 0)) { return typeof console !== "undefined" && console !== null ? console.log('renderTemplate: document is undefined') : void 0; } el = document.createElement('div'); observable = ko.renderTemplate(template, view_model, options, el, 'replaceChildren'); if (el.childNodes.length === 1) { el = el.childNodes[0]; } else if (el.childNodes.length) { ko.storedBindingContextForNode(el, ko.contextFor(el.childNodes[0])); } kb.releaseOnNodeRemove(view_model, el); observable.dispose(); if (view_model.afterRender && !options.afterRender) { view_model.afterRender(el); } return el; }; kb.applyBindings = function(view_model, node) { var child, children, i, len, ref; if (node.length) { ref = [document.createElement('div'), node], node = ref[0], children = ref[1]; for (i = 0, len = children.length; i < len; i++) { child = children[i]; node.appendChild(child); } } ko.applyBindings(view_model, node); kb.releaseOnNodeRemove(view_model, node); return node; }; kb.getValue = function(model, key, args) { var ref; if (!model) { return; } if (_.isFunction(model[key]) && ((ref = kb.orm) != null ? ref.useFunction(model, key) : void 0)) { return model[key](); } if (!args) { return model.get(key); } return model.get.apply(model, _.map([key].concat(args), function(value) { return kb.peek(value); })); }; kb.setValue = function(model, key, value) { var attributes, ref; if (!model) { return; } if (_.isFunction(model[key]) && ((ref = kb.orm) != null ? ref.useFunction(model, key) : void 0)) { return model[key](value); } (attributes = {})[key] = value; return model.set(attributes); }; kb.ignore = ((ref = ko.dependencyDetection) != null ? ref.ignore : void 0) || function(callback, callbackTarget, callbackArgs) { var value; value = null; ko.computed(function() { return value = callback.apply(callbackTarget, callbackArgs || []); }).dispose(); return value; }; kb.extend = __webpack_require__(6); kb._throwMissing = function(instance, message) { throw (_.isString(instance) ? instance : instance.constructor.name) + ": " + message + " is missing"; }; kb._throwUnexpected = function(instance, message) { throw (_.isString(instance) ? instance : instance.constructor.name) + ": " + message + " is unexpected"; }; kb.publishMethods = function(observable, instance, methods) { var fn, i, len; for (i = 0, len = methods.length; i < len; i++) { fn = methods[i]; observable[fn] = kb._.bind(instance[fn], instance); } }; kb.peek = function(obs) { if (!ko.isObservable(obs)) { return obs; } if (obs.peek) { return obs.peek(); } return kb.ignore(function() { return obs(); }); }; kb.isModel = function(obj) { return obj && ((obj instanceof kb.Model) || ((typeof obj.get === 'function') && (typeof obj.bind === 'function'))); }; kb.isCollection = function(obj) { return obj && (obj instanceof kb.Collection); }; return kb; })(); if (window.Parse) { Backbone = kb.Parse = window.Parse; _ = kb._ = window.Parse._; } else { Backbone = kb.Backbone = __webpack_require__(7); _ = kb._ = __webpack_require__(8); } kb.ko = ko; kb.Collection = Backbone.Collection; kb.Model = Backbone.Object || Backbone.Model; kb.Events = Backbone.Events; kb.$ = window.jQuery || window.$; try { kb.$ || (kb.$ = __webpack_require__(9)); } catch (undefined) {} /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {/*! * Knockout JavaScript library v3.4.0 * (c) Steven Sanderson - http://knockoutjs.com/ * License: MIT (http://www.opensource.org/licenses/mit-license.php) */ (function(){ var DEBUG=true; (function(undefined){ // (0, eval)('this') is a robust way of getting a reference to the global object // For details, see http://stackoverflow.com/questions/14119988/return-this-0-evalthis/14120023#14120023 var window = this || (0, eval)('this'), document = window['document'], navigator = window['navigator'], jQueryInstance = window["jQuery"], JSON = window["JSON"]; (function(factory) { // Support three module loading scenarios if ("function" === 'function' && __webpack_require__(5)['amd']) { // [1] AMD anonymous module !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (true) { // [2] CommonJS/Node.js factory(module['exports'] || exports); // module.exports is for Node.js } else { // [3] No module loader (plain