HEX
Server: Apache
System: Linux webd003.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: slyfwmm (169339)
PHP: 8.1.34
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/slyfwmm/laretediclo/wp-content/plugins/pods/ui/js/marionette/backbone.marionette.js.map
{"version":3,"file":"backbone.marionette.js","sources":["src/utils/proxy.js","src/utils/extend.js","src/utils/deprecate.js","src/common/is-node-attached.js","src/common/merge-options.js","src/common/get-option.js","src/common/normalize-methods.js","src/common/trigger-method.js","src/common/monitor-view-events.js","src/error.js","src/common/bind-events.js","src/common/bind-requests.js","src/utils/set-options.js","src/mixins/common.js","src/mixins/radio.js","src/object.js","src/mixins/dom.js","src/template-cache.js","src/utils/invoke.js","src/mixins/behaviors.js","src/mixins/delegate-entity-events.js","src/utils/get-unique-event-name.js","src/config/features.js","src/mixins/triggers.js","src/mixins/ui.js","src/mixins/view.js","src/utils/destroy-backbone-view.js","src/region.js","src/common/build-region.js","src/mixins/regions.js","src/config/renderer.js","src/view.js","src/utils/emulate-collection.js","src/child-view-container.js","src/collection-view.js","src/next-child-view-container.js","src/next-collection-view.js","src/composite-view.js","src/behavior.js","src/application.js","src/app-router.js","src/config/behaviors-lookup.js","src/backbone.marionette.js"],"sourcesContent":["//Internal utility for creating context style global utils\nconst proxy = function(method) {\n  return function(context, ...args) {\n    return method.apply(context, args);\n  };\n};\n\nexport default proxy;\n","// Marionette.extend\n// -----------------\n\nimport Backbone from 'backbone';\n\n// Borrow the Backbone `extend` method so we can use it as needed\nconst extend = Backbone.Model.extend;\n\nexport default extend;\n","/* global console */\n\nimport _ from 'underscore';\n\nimport Marionette from '../backbone.marionette';\n\nconst deprecate = function(message, test) {\n  if (_.isObject(message)) {\n    message = (\n      message.prev + ' is going to be removed in the future. ' +\n      'Please use ' + message.next + ' instead.' +\n      (message.url ? ' See: ' + message.url : '')\n    );\n  }\n\n  if (!Marionette.DEV_MODE) {\n    return;\n  }\n\n  if ((test === undefined || !test) && !deprecate._cache[message]) {\n    deprecate._warn('Deprecation warning: ' + message);\n    deprecate._cache[message] = true;\n  }\n};\n\ndeprecate._console = typeof console !== 'undefined' ? console : {};\ndeprecate._warn = function() {\n  const warn = deprecate._console.warn || deprecate._console.log || _.noop;\n  return warn.apply(deprecate._console, arguments);\n};\ndeprecate._cache = {};\n\nexport default deprecate;\n","// Marionette.isNodeAttached\n// -------------------------\n\n// Determine if `el` is a child of the document\nconst isNodeAttached = function(el) {\n  return document.documentElement.contains(el && el.parentNode);\n};\n\nexport default isNodeAttached;\n","import _ from 'underscore';\n\n// Merge `keys` from `options` onto `this`\nconst mergeOptions = function(options, keys) {\n  if (!options) { return; }\n\n  _.each(keys, (key) => {\n    const option = options[key];\n    if (option !== undefined) {\n      this[key] = option;\n    }\n  });\n};\n\nexport default mergeOptions;\n","// Marionette.getOption\n// --------------------\n\n// Retrieve an object, function or other value from the\n// object or its `options`, with `options` taking precedence.\nconst getOption = function(optionName) {\n  if (!optionName) { return; }\n  if (this.options && (this.options[optionName] !== undefined)) {\n    return this.options[optionName];\n  } else {\n    return this[optionName];\n  }\n};\n\nexport default getOption;\n","import _ from 'underscore';\n\n// Marionette.normalizeMethods\n// ----------------------\n\n// Pass in a mapping of events => functions or function names\n// and return a mapping of events => functions\nconst normalizeMethods = function(hash) {\n  return _.reduce(hash, (normalizedHash, method, name) => {\n    if (!_.isFunction(method)) {\n      method = this[method];\n    }\n    if (method) {\n      normalizedHash[name] = method;\n    }\n    return normalizedHash;\n  }, {});\n};\n\nexport default normalizeMethods;\n","// Trigger Method\n// --------------\n\nimport _ from 'underscore';\nimport getOption from './get-option';\n\n// split the event name on the \":\"\nconst splitter = /(^|:)(\\w)/gi;\n\n// take the event section (\"section1:section2:section3\")\n// and turn it in to uppercase name onSection1Section2Section3\nfunction getEventName(match, prefix, eventName) {\n  return eventName.toUpperCase();\n}\n\nconst getOnMethodName = _.memoize(function(event) {\n  return 'on' + event.replace(splitter, getEventName);\n});\n\n// Trigger an event and/or a corresponding method name. Examples:\n//\n// `this.triggerMethod(\"foo\")` will trigger the \"foo\" event and\n// call the \"onFoo\" method.\n//\n// `this.triggerMethod(\"foo:bar\")` will trigger the \"foo:bar\" event and\n// call the \"onFooBar\" method.\nexport function triggerMethod(event, ...args) {\n  // get the method name from the event name\n  const methodName = getOnMethodName(event);\n  const method = getOption.call(this, methodName);\n  let result;\n\n  // call the onMethodName if it exists\n  if (_.isFunction(method)) {\n    // pass all args, except the event name\n    result = method.apply(this, args);\n  }\n\n  // trigger the event\n  this.trigger.apply(this, arguments);\n\n  return result;\n}\n\n// triggerMethodOn invokes triggerMethod on a specific context\n//\n// e.g. `Marionette.triggerMethodOn(view, 'show')`\n// will trigger a \"show\" event or invoke onShow the view.\nexport function triggerMethodOn(context, ...args) {\n  if (_.isFunction(context.triggerMethod)) {\n    return context.triggerMethod.apply(context, args);\n  }\n\n  return triggerMethod.apply(context, args);\n}\n","// DOM Refresh\n// -----------\n\nimport _ from 'underscore';\nimport { triggerMethodOn } from './trigger-method';\n\n// Trigger method on children unless a pure Backbone.View\nfunction triggerMethodChildren(view, event, shouldTrigger) {\n  if (!view._getImmediateChildren) { return; }\n  _.each(view._getImmediateChildren(), child => {\n    if (!shouldTrigger(child)) { return; }\n    triggerMethodOn(child, event, child);\n  });\n}\n\nfunction shouldTriggerAttach(view) {\n  return !view._isAttached;\n}\n\nfunction shouldAttach(view) {\n  if (!shouldTriggerAttach(view)) { return false; }\n  view._isAttached = true;\n  return true;\n}\n\nfunction shouldTriggerDetach(view) {\n  return view._isAttached;\n}\n\nfunction shouldDetach(view) {\n  if (!shouldTriggerDetach(view)) { return false; }\n  view._isAttached = false;\n  return true;\n}\n\nfunction triggerDOMRefresh(view) {\n  if (view._isAttached && view._isRendered) {\n    triggerMethodOn(view, 'dom:refresh', view);\n  }\n}\n\nfunction triggerDOMRemove(view) {\n  if (view._isAttached && view._isRendered) {\n    triggerMethodOn(view, 'dom:remove', view);\n  }\n}\n\nfunction handleBeforeAttach() {\n  triggerMethodChildren(this, 'before:attach', shouldTriggerAttach);\n}\n\nfunction handleAttach() {\n  triggerMethodChildren(this, 'attach', shouldAttach);\n  triggerDOMRefresh(this);\n}\n\nfunction handleBeforeDetach() {\n  triggerMethodChildren(this, 'before:detach', shouldTriggerDetach);\n  triggerDOMRemove(this);\n}\n\nfunction handleDetach() {\n  triggerMethodChildren(this, 'detach', shouldDetach);\n}\n\nfunction handleBeforeRender() {\n  triggerDOMRemove(this);\n}\n\nfunction handleRender() {\n  triggerDOMRefresh(this);\n}\n\n// Monitor a view's state, propagating attach/detach events to children and firing dom:refresh\n// whenever a rendered view is attached or an attached view is rendered.\nfunction monitorViewEvents(view) {\n  if (view._areViewEventsMonitored) { return; }\n\n  view._areViewEventsMonitored = true;\n\n  view.on({\n    'before:attach': handleBeforeAttach,\n    'attach': handleAttach,\n    'before:detach': handleBeforeDetach,\n    'detach': handleDetach,\n    'before:render': handleBeforeRender,\n    'render': handleRender\n  });\n}\n\nexport default monitorViewEvents;\n","// Error\n// -----\n\nimport _ from 'underscore';\nimport extend from './utils/extend';\nimport {version} from '../package.json';\n\nconst errorProps = ['description', 'fileName', 'lineNumber', 'name', 'message', 'number'];\n\nconst MarionetteError = extend.call(Error, {\n  urlRoot: `http://marionettejs.com/docs/v${version}/`,\n\n  constructor(message, options) {\n    if (_.isObject(message)) {\n      options = message;\n      message = options.message;\n    } else if (!options) {\n      options = {};\n    }\n\n    const error = Error.call(this, message);\n    _.extend(this, _.pick(error, errorProps), _.pick(options, errorProps));\n\n    this.captureStackTrace();\n\n    if (options.url) {\n      this.url = this.urlRoot + options.url;\n    }\n  },\n\n  captureStackTrace() {\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, MarionetteError);\n    }\n  },\n\n  toString() {\n    return this.name + ': ' + this.message + (this.url ? ' See: ' + this.url : '');\n  }\n});\n\nMarionetteError.extend = extend;\n\nexport default MarionetteError;\n","// Bind Entity Events & Unbind Entity Events\n// -----------------------------------------\n//\n// These methods are used to bind/unbind a backbone \"entity\" (e.g. collection/model)\n// to methods on a target object.\n//\n// The first parameter, `target`, must have the Backbone.Events module mixed in.\n//\n// The second parameter is the `entity` (Backbone.Model, Backbone.Collection or\n// any object that has Backbone.Events mixed in) to bind the events from.\n//\n// The third parameter is a hash of { \"event:name\": \"eventHandler\" }\n// configuration. Multiple handlers can be separated by a space. A\n// function can be supplied instead of a string handler name.\n\nimport _ from 'underscore';\nimport MarionetteError from '../error';\n\n// Bind/unbind the event to handlers specified as a string of\n// handler names on the target object\nfunction bindFromStrings(target, entity, evt, methods, actionName) {\n  const methodNames = methods.split(/\\s+/);\n\n  _.each(methodNames, function(methodName) {\n    const method = target[methodName];\n    if (!method) {\n      throw new MarionetteError(`Method \"${methodName}\" was configured as an event handler, but does not exist.`);\n    }\n\n    target[actionName](entity, evt, method);\n  });\n}\n\n// generic looping function\nfunction iterateEvents(target, entity, bindings, actionName) {\n  if (!entity || !bindings) { return; }\n\n  // type-check bindings\n  if (!_.isObject(bindings)) {\n    throw new MarionetteError({\n      message: 'Bindings must be an object.',\n      url: 'marionette.functions.html#marionettebindevents'\n    });\n  }\n\n  // iterate the bindings and bind/unbind them\n  _.each(bindings, function(method, evt) {\n\n    // allow for a list of method names as a string\n    if (_.isString(method)) {\n      bindFromStrings(target, entity, evt, method, actionName);\n      return;\n    }\n\n    target[actionName](entity, evt, method);\n  });\n}\n\nfunction bindEvents(entity, bindings) {\n  iterateEvents(this, entity, bindings, 'listenTo');\n  return this;\n}\n\nfunction unbindEvents(entity, bindings) {\n  iterateEvents(this, entity, bindings, 'stopListening');\n  return this;\n}\n\n// Export Public API\nexport {\n  bindEvents,\n  unbindEvents\n};\n","// Bind/Unbind Radio Requests\n// -----------------------------------------\n//\n// These methods are used to bind/unbind a backbone.radio request\n// to methods on a target object.\n//\n// The first parameter, `target`, will set the context of the reply method\n//\n// The second parameter is the `Radio.channel` to bind the reply to.\n//\n// The third parameter is a hash of { \"request:name\": \"replyHandler\" }\n// configuration. A function can be supplied instead of a string handler name.\n\nimport _ from 'underscore';\nimport normalizeMethods from './normalize-methods';\nimport MarionetteError from '../error';\n\nfunction iterateReplies(target, channel, bindings, actionName) {\n  if (!channel || !bindings) { return; }\n\n  // type-check bindings\n  if (!_.isObject(bindings)) {\n    throw new MarionetteError({\n      message: 'Bindings must be an object.',\n      url: 'marionette.functions.html#marionettebindrequests'\n    });\n  }\n\n  const normalizedRadioRequests = normalizeMethods.call(target, bindings);\n\n  channel[actionName](normalizedRadioRequests, target);\n}\n\nfunction bindRequests(channel, bindings) {\n  iterateReplies(this, channel, bindings, 'reply');\n  return this;\n}\n\nfunction unbindRequests(channel, bindings) {\n  iterateReplies(this, channel, bindings, 'stopReplying');\n  return this;\n}\n\nexport {\n  bindRequests,\n  unbindRequests\n};\n","import _ from 'underscore';\n\n// Internal utility for setting options consistently across Mn\nconst setOptions = function(...args) {\n  this.options = _.extend({}, _.result(this, 'options'), ...args);\n};\n\nexport default setOptions;\n","import _setOptions from '../utils/set-options';\nimport getOption from '../common/get-option';\nimport mergeOptions from '../common/merge-options';\nimport normalizeMethods from '../common/normalize-methods';\nimport {\n  bindEvents,\n  unbindEvents\n} from '../common/bind-events';\n\nexport default {\n\n  // Imports the \"normalizeMethods\" to transform hashes of\n  // events=>function references/names to a hash of events=>function references\n  normalizeMethods: normalizeMethods,\n\n  _setOptions: _setOptions,\n\n  // A handy way to merge passed-in options onto the instance\n  mergeOptions: mergeOptions,\n\n  // Enable getting options from this or this.options by name.\n  getOption: getOption,\n\n  // Enable binding view's events from another entity.\n  bindEvents: bindEvents,\n\n  // Enable unbinding view's events from another entity.\n  unbindEvents: unbindEvents\n};\n","import _ from 'underscore';\nimport Radio from 'backbone.radio';\n\nimport {\n  bindRequests,\n  unbindRequests\n} from '../common/bind-requests';\n\nimport {\n  bindEvents,\n  unbindEvents\n} from '../common/bind-events';\n\nimport MarionetteError from '../error';\n\n// MixinOptions\n// - channelName\n// - radioEvents\n// - radioRequests\n\nexport default {\n\n  _initRadio() {\n    const channelName = _.result(this, 'channelName');\n\n    if (!channelName) {\n      return;\n    }\n\n    /* istanbul ignore next */\n    if (!Radio) {\n      throw new MarionetteError({\n        name: 'BackboneRadioMissing',\n        message: 'The dependency \"backbone.radio\" is missing.'\n      });\n    }\n\n    const channel = this._channel = Radio.channel(channelName);\n\n    const radioEvents = _.result(this, 'radioEvents');\n    this.bindEvents(channel, radioEvents);\n\n    const radioRequests = _.result(this, 'radioRequests');\n    this.bindRequests(channel, radioRequests);\n\n    this.on('destroy', this._destroyRadio);\n  },\n\n  _destroyRadio() {\n    this._channel.stopReplying(null, null, this);\n  },\n\n  getChannel() {\n    return this._channel;\n  },\n\n  // Proxy `bindEvents`\n  bindEvents: bindEvents,\n\n  // Proxy `unbindEvents`\n  unbindEvents: unbindEvents,\n\n  // Proxy `bindRequests`\n  bindRequests: bindRequests,\n\n  // Proxy `unbindRequests`\n  unbindRequests: unbindRequests\n\n};\n","// Object\n// ------\n\nimport _ from 'underscore';\nimport Backbone from 'backbone';\nimport extend from './utils/extend';\nimport { triggerMethod } from './common/trigger-method';\nimport CommonMixin from './mixins/common';\nimport RadioMixin from './mixins/radio';\n\nconst ClassOptions = [\n  'channelName',\n  'radioEvents',\n  'radioRequests'\n];\n\n// A Base Class that other Classes should descend from.\n// Object borrows many conventions and utilities from Backbone.\nconst MarionetteObject = function(options) {\n  this._setOptions(options);\n  this.mergeOptions(options, ClassOptions);\n  this.cid = _.uniqueId(this.cidPrefix);\n  this._initRadio();\n  this.initialize.apply(this, arguments);\n};\n\nMarionetteObject.extend = extend;\n\n// Object Methods\n// --------------\n\n// Ensure it can trigger events with Backbone.Events\n_.extend(MarionetteObject.prototype, Backbone.Events, CommonMixin, RadioMixin, {\n  cidPrefix: 'mno',\n\n  // for parity with Marionette.AbstractView lifecyle\n  _isDestroyed: false,\n\n  isDestroyed() {\n    return this._isDestroyed;\n  },\n\n  //this is a noop method intended to be overridden by classes that extend from this base\n  initialize() {},\n\n  destroy(...args) {\n    if (this._isDestroyed) { return this; }\n\n    this.triggerMethod('before:destroy', this, ...args);\n\n    this._isDestroyed = true;\n    this.triggerMethod('destroy', this, ...args);\n    this.stopListening();\n\n    return this;\n  },\n\n  triggerMethod: triggerMethod\n});\n\nexport default MarionetteObject;\n","// DomMixin\n//  ---------\n\nimport Backbone from 'backbone';\n\nexport default {\n  createBuffer() {\n    return document.createDocumentFragment();\n  },\n\n  appendChildren(el, children) {\n    Backbone.$(el).append(children);\n  },\n\n  beforeEl(el, sibling) {\n    Backbone.$(el).before(sibling);\n  },\n\n  replaceEl(newEl, oldEl) {\n    if (newEl === oldEl) {\n      return;\n    }\n\n    const parent = oldEl.parentNode;\n\n    if (!parent) {\n      return;\n    }\n\n    parent.replaceChild(newEl, oldEl);\n  },\n\n  detachContents(el) {\n    Backbone.$(el).contents().detach();\n  },\n\n  setInnerContent(el, html) {\n    Backbone.$(el).html(html);\n  },\n\n  detachEl(el) {\n    Backbone.$(el).detach();\n  },\n\n  removeEl(el) {\n    Backbone.$(el).remove();\n  },\n\n  findEls(selector, context) {\n    return Backbone.$(selector, context);\n  }\n};\n","// Template Cache\n// --------------\n\nimport _ from 'underscore';\nimport DomMixin from './mixins/dom';\nimport MarionetteError from './error';\n\n// Manage templates stored in `<script>` blocks,\n// caching them for faster access.\nconst TemplateCache = function(templateId) {\n  this.templateId = templateId;\n};\n\n// TemplateCache object-level methods. Manage the template\n// caches from these method calls instead of creating\n// your own TemplateCache instances\n_.extend(TemplateCache, {\n  templateCaches: {},\n\n  // Get the specified template by id. Either\n  // retrieves the cached version, or loads it\n  // from the DOM.\n  get(templateId, options) {\n    let cachedTemplate = this.templateCaches[templateId];\n\n    if (!cachedTemplate) {\n      cachedTemplate = new TemplateCache(templateId);\n      this.templateCaches[templateId] = cachedTemplate;\n    }\n\n    return cachedTemplate.load(options);\n  },\n\n  // Clear templates from the cache. If no arguments\n  // are specified, clears all templates:\n  // `clear()`\n  //\n  // If arguments are specified, clears each of the\n  // specified templates from the cache:\n  // `clear(\"#t1\", \"#t2\", \"...\")`\n  clear(...args) {\n    let i;\n    const length = args.length;\n\n    if (length > 0) {\n      for (i = 0; i < length; i++) {\n        delete this.templateCaches[args[i]];\n      }\n    } else {\n      this.templateCaches = {};\n    }\n  }\n});\n\n// TemplateCache instance methods, allowing each\n// template cache object to manage its own state\n// and know whether or not it has been loaded\n_.extend(TemplateCache.prototype, DomMixin, {\n\n  // Internal method to load the template\n  load(options) {\n    // Guard clause to prevent loading this template more than once\n    if (this.compiledTemplate) {\n      return this.compiledTemplate;\n    }\n\n    // Load the template and compile it\n    const template = this.loadTemplate(this.templateId, options);\n    this.compiledTemplate = this.compileTemplate(template, options);\n\n    return this.compiledTemplate;\n  },\n\n  // Load a template from the DOM, by default. Override\n  // this method to provide your own template retrieval\n  // For asynchronous loading with AMD/RequireJS, consider\n  // using a template-loader plugin as described here:\n  // https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs\n  loadTemplate(templateId, options) {\n    const $template = this.findEls(templateId);\n\n    if (!$template.length) {\n      throw new MarionetteError({\n        name: 'NoTemplateError',\n        message: `Could not find template: \"${templateId}\"`\n      });\n    }\n    return $template.html();\n  },\n\n  // Pre-compile the template before caching it. Override\n  // this method if you do not need to pre-compile a template\n  // (JST / RequireJS for example) or if you want to change\n  // the template engine used (Handebars, etc).\n  compileTemplate(rawTemplate, options) {\n    return _.template(rawTemplate, options);\n  }\n});\n\nexport default TemplateCache;\n","// Implementation of the invoke method (http://underscorejs.org/#invoke) with support for\n// lodash v3, v4, and underscore.js\nimport _ from 'underscore';\n\nexport default _.invokeMap || _.invoke;\n","import _ from 'underscore';\nimport _invoke from '../utils/invoke';\nimport { triggerMethod } from '../common/trigger-method';\nimport Marionette from '../backbone.marionette';\n\n// MixinOptions\n// - behaviors\n\n// Takes care of getting the behavior class\n// given options and a key.\n// If a user passes in options.behaviorClass\n// default to using that.\n// If a user passes in a Behavior Class directly, use that\n// Otherwise delegate the lookup to the users `behaviorsLookup` implementation.\nfunction getBehaviorClass(options, key) {\n  if (options.behaviorClass) {\n    return options.behaviorClass;\n    //treat functions as a Behavior constructor\n  } else if (_.isFunction(options)) {\n    return options;\n  }\n\n  // behaviorsLookup can be either a flat object or a method\n  if (_.isFunction(Marionette.Behaviors.behaviorsLookup)) {\n    return Marionette.Behaviors.behaviorsLookup(options, key)[key];\n  }\n\n  return Marionette.Behaviors.behaviorsLookup[key];\n}\n\n// Iterate over the behaviors object, for each behavior\n// instantiate it and get its grouped behaviors.\n// This accepts a list of behaviors in either an object or array form\nfunction parseBehaviors(view, behaviors) {\n  return _.chain(behaviors).map(function(options, key) {\n    const BehaviorClass = getBehaviorClass(options, key);\n    //if we're passed a class directly instead of an object\n    const _options = options === BehaviorClass ? {} : options;\n    const behavior = new BehaviorClass(_options, view);\n    const nestedBehaviors = parseBehaviors(view, _.result(behavior, 'behaviors'));\n\n    return [behavior].concat(nestedBehaviors);\n  }).flatten().value();\n}\n\nexport default {\n  _initBehaviors() {\n    this._behaviors = this._getBehaviors();\n  },\n\n  _getBehaviors() {\n    const behaviors = _.result(this, 'behaviors');\n\n    // Behaviors defined on a view can be a flat object literal\n    // or it can be a function that returns an object.\n    return _.isObject(behaviors) ? parseBehaviors(this, behaviors) : {};\n  },\n\n  _getBehaviorTriggers() {\n    const triggers = _invoke(this._behaviors, 'getTriggers');\n    return _.reduce(triggers, function(memo, _triggers) {\n      return _.extend(memo, _triggers);\n    }, {});\n  },\n\n  _getBehaviorEvents() {\n    const events = _invoke(this._behaviors, 'getEvents');\n    return _.reduce(events, function(memo, _events) {\n      return _.extend(memo, _events);\n    }, {});\n  },\n\n  // proxy behavior $el to the view's $el.\n  _proxyBehaviorViewProperties() {\n    _invoke(this._behaviors, 'proxyViewProperties');\n  },\n\n  // delegate modelEvents and collectionEvents\n  _delegateBehaviorEntityEvents() {\n    _invoke(this._behaviors, 'delegateEntityEvents');\n  },\n\n  // undelegate modelEvents and collectionEvents\n  _undelegateBehaviorEntityEvents() {\n    _invoke(this._behaviors, 'undelegateEntityEvents');\n  },\n\n  _destroyBehaviors(...args) {\n    // Call destroy on each behavior after\n    // destroying the view.\n    // This unbinds event listeners\n    // that behaviors have registered for.\n    _invoke(this._behaviors, 'destroy', ...args);\n  },\n\n  // Remove a behavior\n  _removeBehavior(behavior) {\n    // Don't worry about the clean up if the view is destroyed\n    if (this._isDestroyed) { return; }\n    this._behaviors = _.without(this._behaviors, behavior);\n  },\n\n  _bindBehaviorUIElements() {\n    _invoke(this._behaviors, 'bindUIElements');\n  },\n\n  _unbindBehaviorUIElements() {\n    _invoke(this._behaviors, 'unbindUIElements');\n  },\n\n  _triggerEventOnBehaviors() {\n    const behaviors = this._behaviors;\n    // Use good ol' for as this is a very hot function\n    for (let i = 0, length = behaviors && behaviors.length; i < length; i++) {\n      triggerMethod.apply(behaviors[i], arguments);\n    }\n  }\n};\n","import _ from 'underscore';\n\nimport {\n  bindEvents,\n  unbindEvents\n} from '../common/bind-events';\n\n// MixinOptions\n// - collectionEvents\n// - modelEvents\n\nexport default {\n  // Handle `modelEvents`, and `collectionEvents` configuration\n  _delegateEntityEvents(model, collection) {\n    this._undelegateEntityEvents(model, collection);\n\n    const modelEvents = _.result(this, 'modelEvents');\n    bindEvents.call(this, model, modelEvents);\n\n    const collectionEvents = _.result(this, 'collectionEvents');\n    bindEvents.call(this, collection, collectionEvents);\n  },\n\n  _undelegateEntityEvents(model, collection) {\n    const modelEvents = _.result(this, 'modelEvents');\n    unbindEvents.call(this, model, modelEvents);\n\n    const collectionEvents = _.result(this, 'collectionEvents');\n    unbindEvents.call(this, collection, collectionEvents);\n  }\n};\n","import _ from 'underscore';\n\n// Borrow event splitter from Backbone\nconst delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\nfunction uniqueName(eventName, selector) {\n  return [eventName + _.uniqueId('.evt'), selector].join(' ');\n}\n\n// Set event name to be namespaced using a unique index\n// to generate a non colliding event namespace\n// http://api.jquery.com/event.namespace/\nconst getUniqueEventName = function(eventName) {\n  const match = eventName.match(delegateEventSplitter);\n  return uniqueName(match[1], match[2]);\n};\n\nexport default getUniqueEventName;\n","// Add Feature flags here\n// e.g. 'class' => false\nconst FEATURES = {\n  childViewEventPrefix: true,\n  triggersStopPropagation: true,\n  triggersPreventDefault: true\n};\n\nfunction isEnabled(name) {\n  return !!FEATURES[name];\n}\n\nfunction setEnabled(name, state) {\n  return FEATURES[name] = state;\n}\n\nexport {\n  FEATURES,\n  setEnabled,\n  isEnabled\n};\n","import _ from 'underscore';\nimport getUniqueEventName from '../utils/get-unique-event-name';\nimport { isEnabled } from '../config/features';\n\n// Internal method to create an event handler for a given `triggerDef` like\n// 'click:foo'\nfunction buildViewTrigger(view, triggerDef) {\n  if (_.isString(triggerDef)) {\n    triggerDef = {event: triggerDef};\n  }\n\n  const eventName = triggerDef.event;\n\n  let shouldPreventDefault = !!triggerDef.preventDefault;\n\n  if (isEnabled('triggersPreventDefault')) {\n    shouldPreventDefault = triggerDef.preventDefault !== false;\n  }\n\n  let shouldStopPropagation = !!triggerDef.stopPropagation;\n\n  if (isEnabled('triggersStopPropagation')) {\n    shouldStopPropagation = triggerDef.stopPropagation !== false;\n  }\n\n  return function(event) {\n    if (shouldPreventDefault) {\n      event.preventDefault();\n    }\n\n    if (shouldStopPropagation) {\n      event.stopPropagation();\n    }\n\n    view.triggerMethod(eventName, view, event);\n  };\n}\n\nexport default {\n\n  // Configure `triggers` to forward DOM events to view\n  // events. `triggers: {\"click .foo\": \"do:foo\"}`\n  _getViewTriggers(view, triggers) {\n    // Configure the triggers, prevent default\n    // action and stop propagation of DOM events\n    return _.reduce(triggers, (events, value, key) => {\n      key = getUniqueEventName(key);\n      events[key] = buildViewTrigger(view, value);\n      return events;\n    }, {});\n  }\n\n};\n","import _ from 'underscore';\n// allows for the use of the @ui. syntax within\n// a given key for triggers and events\n// swaps the @ui with the associated selector.\n// Returns a new, non-mutated, parsed events hash.\nconst normalizeUIKeys = function(hash, ui) {\n  return _.reduce(hash, (memo, val, key) => {\n    const normalizedKey = normalizeUIString(key, ui);\n    memo[normalizedKey] = val;\n    return memo;\n  }, {});\n};\n\n// utility method for parsing @ui. syntax strings\n// into associated selector\nconst normalizeUIString = function(uiString, ui) {\n  return uiString.replace(/@ui\\.[a-zA-Z-_$0-9]*/g, (r) => {\n    return ui[r.slice(4)];\n  });\n};\n\n// allows for the use of the @ui. syntax within\n// a given value for regions\n// swaps the @ui with the associated selector\nconst normalizeUIValues = function(hash, ui, properties) {\n  _.each(hash, (val, key) => {\n    if (_.isString(val)) {\n      hash[key] = normalizeUIString(val, ui);\n    } else if (_.isObject(val) && _.isArray(properties)) {\n      _.extend(val, normalizeUIValues(_.pick(val, properties), ui));\n      /* Value is an object, and we got an array of embedded property names to normalize. */\n      _.each(properties, (property) => {\n        const propertyVal = val[property];\n        if (_.isString(propertyVal)) {\n          val[property] = normalizeUIString(propertyVal, ui);\n        }\n      });\n    }\n  });\n  return hash;\n};\n\nexport default {\n\n  // normalize the keys of passed hash with the views `ui` selectors.\n  // `{\"@ui.foo\": \"bar\"}`\n  normalizeUIKeys(hash) {\n    const uiBindings = this._getUIBindings();\n    return normalizeUIKeys(hash, uiBindings);\n  },\n\n  // normalize the passed string with the views `ui` selectors.\n  // `\"@ui.bar\"`\n  normalizeUIString(uiString) {\n    const uiBindings = this._getUIBindings();\n    return normalizeUIString(uiString, uiBindings);\n  },\n\n  // normalize the values of passed hash with the views `ui` selectors.\n  // `{foo: \"@ui.bar\"}`\n  normalizeUIValues(hash, properties) {\n    const uiBindings = this._getUIBindings();\n    return normalizeUIValues(hash, uiBindings, properties);\n  },\n\n  _getUIBindings() {\n    const uiBindings = _.result(this, '_uiBindings');\n    const ui = _.result(this, 'ui');\n    return uiBindings || ui;\n  },\n\n  // This method binds the elements specified in the \"ui\" hash inside the view's code with\n  // the associated jQuery selectors.\n  _bindUIElements() {\n    if (!this.ui) { return; }\n\n    // store the ui hash in _uiBindings so they can be reset later\n    // and so re-rendering the view will be able to find the bindings\n    if (!this._uiBindings) {\n      this._uiBindings = this.ui;\n    }\n\n    // get the bindings result, as a function or otherwise\n    const bindings = _.result(this, '_uiBindings');\n\n    // empty the ui so we don't have anything to start with\n    this._ui = {};\n\n    // bind each of the selectors\n    _.each(bindings, (selector, key) => {\n      this._ui[key] = this.$(selector);\n    });\n\n    this.ui = this._ui;\n  },\n\n  _unbindUIElements() {\n    if (!this.ui || !this._uiBindings) { return; }\n\n    // delete all of the existing ui bindings\n    _.each(this.ui, ($el, name) => {\n      delete this.ui[name];\n    });\n\n    // reset the ui element to the original bindings configuration\n    this.ui = this._uiBindings;\n    delete this._uiBindings;\n    delete this._ui;\n  },\n\n  _getUI(name) {\n    return this._ui[name];\n  }\n};\n","// ViewMixin\n//  ---------\n\nimport Backbone from 'backbone';\nimport _ from 'underscore';\nimport { triggerMethod } from '../common/trigger-method';\nimport BehaviorsMixin from './behaviors';\nimport CommonMixin from './common';\nimport DelegateEntityEventsMixin from './delegate-entity-events';\nimport DomMixin from './dom';\nimport TriggersMixin from './triggers';\nimport UIMixin from './ui';\nimport { isEnabled } from '../config/features';\n\n// MixinOptions\n// - behaviors\n// - childViewEventPrefix\n// - childViewEvents\n// - childViewTriggers\n// - collectionEvents\n// - modelEvents\n// - triggers\n// - ui\n\n\nconst ViewMixin = {\n  supportsRenderLifecycle: true,\n  supportsDestroyLifecycle: true,\n\n  _isDestroyed: false,\n\n  isDestroyed() {\n    return !!this._isDestroyed;\n  },\n\n  _isRendered: false,\n\n  isRendered() {\n    return !!this._isRendered;\n  },\n\n  _isAttached: false,\n\n  isAttached() {\n    return !!this._isAttached;\n  },\n\n  // Overriding Backbone.View's `delegateEvents` to handle\n  // `events` and `triggers`\n  delegateEvents(eventsArg) {\n\n    this._proxyBehaviorViewProperties();\n    this._buildEventProxies();\n\n    const viewEvents = this._getEvents(eventsArg);\n\n    if (typeof eventsArg === 'undefined') {\n      this.events = viewEvents;\n    }\n\n    const combinedEvents = _.extend({},\n      this._getBehaviorEvents(),\n      viewEvents,\n      this._getBehaviorTriggers(),\n      this.getTriggers()\n    );\n\n    Backbone.View.prototype.delegateEvents.call(this, combinedEvents);\n\n    return this;\n  },\n\n  _getEvents(eventsArg) {\n    const events = eventsArg || this.events;\n\n    if (_.isFunction(events)) {\n      return this.normalizeUIKeys(events.call(this));\n    }\n\n    return this.normalizeUIKeys(events);\n  },\n\n  // Configure `triggers` to forward DOM events to view\n  // events. `triggers: {\"click .foo\": \"do:foo\"}`\n  getTriggers() {\n    if (!this.triggers) { return; }\n\n    // Allow `triggers` to be configured as a function\n    const triggers = this.normalizeUIKeys(_.result(this, 'triggers'));\n\n    // Configure the triggers, prevent default\n    // action and stop propagation of DOM events\n    return this._getViewTriggers(this, triggers);\n  },\n\n  // Handle `modelEvents`, and `collectionEvents` configuration\n  delegateEntityEvents() {\n    this._delegateEntityEvents(this.model, this.collection);\n\n    // bind each behaviors model and collection events\n    this._delegateBehaviorEntityEvents();\n\n    return this;\n  },\n\n  // Handle unbinding `modelEvents`, and `collectionEvents` configuration\n  undelegateEntityEvents() {\n    this._undelegateEntityEvents(this.model, this.collection);\n\n    // unbind each behaviors model and collection events\n    this._undelegateBehaviorEntityEvents();\n\n    return this;\n  },\n\n  // Handle destroying the view and its children.\n  destroy(...args) {\n    if (this._isDestroyed) { return this; }\n    const shouldTriggerDetach = !!this._isAttached;\n\n    this.triggerMethod('before:destroy', this, ...args);\n    if (shouldTriggerDetach) {\n      this.triggerMethod('before:detach', this);\n    }\n\n    // unbind UI elements\n    this.unbindUIElements();\n\n    // remove the view from the DOM\n    this.removeEl(this.el);\n\n    if (shouldTriggerDetach) {\n      this._isAttached = false;\n      this.triggerMethod('detach', this);\n    }\n\n    // remove children after the remove to prevent extra paints\n    this._removeChildren();\n\n    this._isDestroyed = true;\n    this._isRendered = false;\n\n    // Destroy behaviors after _isDestroyed flag\n    this._destroyBehaviors(...args);\n\n    this.triggerMethod('destroy', this, ...args);\n\n    this.stopListening();\n\n    return this;\n  },\n\n  bindUIElements() {\n    this._bindUIElements();\n    this._bindBehaviorUIElements();\n\n    return this;\n  },\n\n  // This method unbinds the elements specified in the \"ui\" hash\n  unbindUIElements() {\n    this._unbindUIElements();\n    this._unbindBehaviorUIElements();\n\n    return this;\n  },\n\n  getUI(name) {\n    return this._getUI(name);\n  },\n\n  // used as the prefix for child view events\n  // that are forwarded through the layoutview\n  childViewEventPrefix() {\n    return isEnabled('childViewEventPrefix') ? 'childview' : false;\n  },\n\n  // import the `triggerMethod` to trigger events with corresponding\n  // methods if the method exists\n  triggerMethod() {\n    const ret = triggerMethod.apply(this, arguments);\n\n    this._triggerEventOnBehaviors.apply(this, arguments);\n\n    return ret;\n  },\n\n  // Cache `childViewEvents` and `childViewTriggers`\n  _buildEventProxies() {\n    this._childViewEvents = _.result(this, 'childViewEvents');\n    this._childViewTriggers = _.result(this, 'childViewTriggers');\n  },\n\n  _proxyChildViewEvents(view) {\n    this.listenTo(view, 'all', this._childViewEventHandler);\n  },\n\n  _childViewEventHandler(eventName, ...args) {\n    const childViewEvents = this.normalizeMethods(this._childViewEvents);\n\n    // call collectionView childViewEvent if defined\n    if (typeof childViewEvents !== 'undefined' && _.isFunction(childViewEvents[eventName])) {\n      childViewEvents[eventName].apply(this, args);\n    }\n\n    // use the parent view's proxyEvent handlers\n    const childViewTriggers = this._childViewTriggers;\n\n    // Call the event with the proxy name on the parent layout\n    if (childViewTriggers && _.isString(childViewTriggers[eventName])) {\n      this.triggerMethod(childViewTriggers[eventName], ...args);\n    }\n\n    const prefix = _.result(this, 'childViewEventPrefix');\n\n    if (prefix !== false) {\n      const childEventName = prefix + ':' + eventName;\n\n      this.triggerMethod(childEventName, ...args);\n    }\n  }\n};\n\n_.extend(ViewMixin, DomMixin, BehaviorsMixin, CommonMixin, DelegateEntityEventsMixin, TriggersMixin, UIMixin);\n\nexport default ViewMixin;\n","import { triggerMethodOn } from '../common/trigger-method';\n\nexport default function destroyBackboneView(view) {\n  if (!view.supportsDestroyLifecycle) {\n    triggerMethodOn(view, 'before:destroy', view);\n  }\n\n  const shouldTriggerDetach = !!view._isAttached;\n\n  if (shouldTriggerDetach) {\n    triggerMethodOn(view, 'before:detach', view);\n  }\n\n  view.remove();\n\n  if (shouldTriggerDetach) {\n    view._isAttached = false;\n    triggerMethodOn(view, 'detach', view);\n  }\n\n  view._isDestroyed = true;\n\n  if (!view.supportsDestroyLifecycle) {\n    triggerMethodOn(view, 'destroy', view);\n  }\n}\n","// Region\n// ------\n\nimport _ from 'underscore';\nimport Backbone from 'backbone';\nimport deprecate from './utils/deprecate';\nimport destroyBackboneView from './utils/destroy-backbone-view';\nimport monitorViewEvents from './common/monitor-view-events';\nimport isNodeAttached from './common/is-node-attached';\nimport { triggerMethodOn } from './common/trigger-method';\nimport DomMixin from './mixins/dom';\nimport MarionetteObject from './object';\nimport MarionetteError from './error';\nimport View from './view';\n\nconst ClassOptions = [\n  'allowMissingEl',\n  'parentEl',\n  'replaceElement'\n];\n\nconst Region = MarionetteObject.extend({\n  cidPrefix: 'mnr',\n  replaceElement: false,\n  _isReplaced: false,\n  _isSwappingView: false,\n\n  constructor(options) {\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    // getOption necessary because options.el may be passed as undefined\n    this._initEl = this.el = this.getOption('el');\n\n    // Handle when this.el is passed in as a $ wrapped element.\n    this.el = this.el instanceof Backbone.$ ? this.el[0] : this.el;\n\n    if (!this.el) {\n      throw new MarionetteError({\n        name: 'NoElError',\n        message: 'An \"el\" must be specified for a region.'\n      });\n    }\n\n    this.$el = this.getEl(this.el);\n    MarionetteObject.call(this, options);\n  },\n\n  // Displays a backbone view instance inside of the region. Handles calling the `render`\n  // method for you. Reads content directly from the `el` attribute. The `preventDestroy`\n  // option can be used to prevent a view from the old view being destroyed on show.\n  show(view, options) {\n    if (!this._ensureElement(options)) {\n      return;\n    }\n\n    view = this._getView(view, options);\n\n    if (view === this.currentView) { return this; }\n\n    this._isSwappingView = !!this.currentView;\n\n    this.triggerMethod('before:show', this, view, options);\n\n    // Assume an attached view is already in the region for pre-existing DOM\n    if (!view._isAttached) {\n      this.empty(options);\n    }\n\n    this._setupChildView(view);\n\n    this._renderView(view);\n\n    this._attachView(view, options);\n\n    this.currentView = view;\n\n    this.triggerMethod('show', this, view, options);\n\n    this._isSwappingView = false;\n\n    return this;\n  },\n\n  _setupChildView(view) {\n    monitorViewEvents(view);\n\n    this._proxyChildViewEvents(view);\n\n    // We need to listen for if a view is destroyed in a way other than through the region.\n    // If this happens we need to remove the reference to the currentView since once a view\n    // has been destroyed we can not reuse it.\n    view.on('destroy', this._empty, this);\n  },\n\n  _proxyChildViewEvents(view) {\n    const parentView = this._parentView;\n\n    if (!parentView) { return; }\n\n    parentView._proxyChildViewEvents(view);\n  },\n\n  _renderView(view) {\n    if (view._isRendered) {\n      return;\n    }\n\n    if (!view.supportsRenderLifecycle) {\n      triggerMethodOn(view, 'before:render', view);\n    }\n\n    view.render();\n\n    if (!view.supportsRenderLifecycle) {\n      view._isRendered = true;\n      triggerMethodOn(view, 'render', view);\n    }\n  },\n\n  _attachView(view, options = {}) {\n    const shouldTriggerAttach = !view._isAttached && isNodeAttached(this.el);\n    const shouldReplaceEl = typeof options.replaceElement === 'undefined' ? !!_.result(this, 'replaceElement') : !!options.replaceElement;\n\n    if (shouldTriggerAttach) {\n      triggerMethodOn(view, 'before:attach', view);\n    }\n\n    if (shouldReplaceEl) {\n      this._replaceEl(view);\n    } else {\n      this.attachHtml(view);\n    }\n\n    if (shouldTriggerAttach) {\n      view._isAttached = true;\n      triggerMethodOn(view, 'attach', view);\n    }\n  },\n\n  _ensureElement(options = {}) {\n    if (!_.isObject(this.el)) {\n      this.$el = this.getEl(this.el);\n      this.el = this.$el[0];\n    }\n\n    if (!this.$el || this.$el.length === 0) {\n      const allowMissingEl = typeof options.allowMissingEl === 'undefined' ? !!_.result(this, 'allowMissingEl') : !!options.allowMissingEl;\n\n      if (allowMissingEl) {\n        return false;\n      } else {\n        throw new MarionetteError(`An \"el\" must exist in DOM for this region ${this.cid}`);\n      }\n    }\n    return true;\n  },\n\n  _getView(view) {\n    if (!view) {\n      throw new MarionetteError({\n        name: 'ViewNotValid',\n        message: 'The view passed is undefined and therefore invalid. You must pass a view instance to show.'\n      });\n    }\n\n    if (view._isDestroyed) {\n      throw new MarionetteError({\n        name: 'ViewDestroyedError',\n        message: `View (cid: \"${view.cid}\") has already been destroyed and cannot be used.`\n      });\n    }\n\n    if (view instanceof Backbone.View) {\n      return view;\n    }\n\n    const viewOptions = this._getViewOptions(view);\n\n    return new View(viewOptions);\n  },\n\n  // This allows for a template or a static string to be\n  // used as a template\n  _getViewOptions(viewOptions) {\n    if (_.isFunction(viewOptions)) {\n      return { template: viewOptions };\n    }\n\n    if (_.isObject(viewOptions)) {\n      return viewOptions;\n    }\n\n    const template = function() { return viewOptions; };\n\n    return { template };\n  },\n\n  // Override this method to change how the region finds the DOM element that it manages. Return\n  // a jQuery selector object scoped to a provided parent el or the document if none exists.\n  getEl(el) {\n    return this.findEls(el, _.result(this, 'parentEl'));\n  },\n\n  _replaceEl(view) {\n    // always restore the el to ensure the regions el is present before replacing\n    this._restoreEl();\n\n    view.on('before:destroy', this._restoreEl, this);\n\n    this.replaceEl(view.el, this.el);\n\n    this._isReplaced = true;\n  },\n\n  // Restore the region's element in the DOM.\n  _restoreEl() {\n    // There is nothing to replace\n    if (!this._isReplaced) {\n      return;\n    }\n\n    const view = this.currentView;\n\n    if (!view) {\n      return;\n    }\n\n    this._detachView(view);\n\n    this._isReplaced = false;\n  },\n\n  // Check to see if the region's el was replaced.\n  isReplaced() {\n    return !!this._isReplaced;\n  },\n\n  // Check to see if a view is being swapped by another\n  isSwappingView() {\n    return !!this._isSwappingView;\n  },\n\n  // Override this method to change how the new view is appended to the `$el` that the\n  // region is managing\n  attachHtml(view) {\n    this.appendChildren(this.el, view.el);\n  },\n\n  // Destroy the current view, if there is one. If there is no current view, it does\n  // nothing and returns immediately.\n  empty(options = { allowMissingEl: true }) {\n    const view = this.currentView;\n\n    // If there is no view in the region we should only detach current html\n    if (!view) {\n      if (this._ensureElement(options)) {\n        this.detachHtml();\n      }\n      return this;\n    }\n\n    const shouldDestroy = !options.preventDestroy;\n\n    if (!shouldDestroy) {\n      deprecate('The preventDestroy option is deprecated. Use Region#detachView');\n    }\n\n    this._empty(view, shouldDestroy);\n    return this;\n  },\n\n  _empty(view, shouldDestroy) {\n    view.off('destroy', this._empty, this);\n    this.triggerMethod('before:empty', this, view);\n\n    this._restoreEl();\n\n    delete this.currentView;\n\n    if (!view._isDestroyed) {\n      if (shouldDestroy) {\n        this.removeView(view);\n      } else {\n        this._detachView(view);\n      }\n      this._stopChildViewEvents(view);\n    }\n\n    this.triggerMethod('empty', this, view);\n  },\n\n  _stopChildViewEvents(view) {\n    const parentView = this._parentView;\n\n    if (!parentView) { return; }\n\n    this._parentView.stopListening(view);\n  },\n\n  destroyView(view) {\n    if (view._isDestroyed) {\n      return view;\n    }\n\n    if (view.destroy) {\n      view.destroy();\n    } else {\n      destroyBackboneView(view);\n    }\n    return view;\n  },\n\n  removeView(view) {\n    this.destroyView(view);\n  },\n\n  // Empties the Region without destroying the view\n  // Returns the detached view\n  detachView() {\n    const view = this.currentView;\n\n    if (!view) {\n      return;\n    }\n\n    this._empty(view);\n\n    return view;\n  },\n\n  _detachView(view) {\n    const shouldTriggerDetach = !!view._isAttached;\n    const shouldRestoreEl = this._isReplaced;\n    if (shouldTriggerDetach) {\n      triggerMethodOn(view, 'before:detach', view);\n    }\n\n    if (shouldRestoreEl) {\n      this.replaceEl(this.el, view.el);\n    } else {\n      this.detachHtml();\n    }\n\n    if (shouldTriggerDetach) {\n      view._isAttached = false;\n      triggerMethodOn(view, 'detach', view);\n    }\n  },\n\n  // Override this method to change how the region detaches current content\n  detachHtml() {\n    this.detachContents(this.el);\n  },\n\n  // Checks whether a view is currently present within the region. Returns `true` if there is\n  // and `false` if no view is present.\n  hasView() {\n    return !!this.currentView;\n  },\n\n  // Reset the region by destroying any existing view and clearing out the cached `$el`.\n  // The next time a view is shown via this region, the region will re-query the DOM for\n  // the region's `el`.\n  reset(options) {\n    this.empty(options);\n\n    if (this.$el) {\n      this.el = this._initEl;\n    }\n\n    delete this.$el;\n    return this;\n  },\n\n  destroy(options) {\n    if (this._isDestroyed) { return this; }\n\n    this.reset(options);\n\n    if (this._name) {\n      this._parentView._removeReferences(this._name);\n    }\n    delete this._parentView;\n    delete this._name;\n\n    return MarionetteObject.prototype.destroy.apply(this, arguments);\n  }\n});\n\n_.extend(Region.prototype, DomMixin);\n\nexport default Region;\n","import _ from 'underscore';\nimport deprecate from '../utils/deprecate';\nimport MarionetteError from '../error';\nimport Region from '../region';\n\n// return the region instance from the definition\nexport default function(definition, defaults) {\n  if (definition instanceof Region) {\n    return definition;\n  }\n\n  return buildRegionFromDefinition(definition, defaults);\n}\n\nfunction buildRegionFromDefinition(definition, defaults) {\n  const opts = _.extend({}, defaults);\n\n  if (_.isString(definition)) {\n    _.extend(opts, { el: definition });\n\n    return buildRegionFromObject(opts);\n  }\n\n  if (_.isFunction(definition)) {\n    _.extend(opts, { regionClass: definition });\n\n    return buildRegionFromObject(opts);\n  }\n\n  if (_.isObject(definition)) {\n    if (definition.selector) {\n      deprecate('The selector option on a Region definition object is deprecated. Use el to pass a selector string');\n    }\n\n    _.extend(opts, { el: definition.selector }, definition);\n\n    return buildRegionFromObject(opts);\n  }\n\n  throw new MarionetteError({\n    message: 'Improper region configuration type.',\n    url: 'marionette.region.html#region-configuration-types'\n  });\n}\n\nfunction buildRegionFromObject(definition) {\n  const RegionClass = definition.regionClass\n\n  const options = _.omit(definition, 'regionClass');\n\n  return new RegionClass(options);\n}\n","import _ from 'underscore';\nimport _invoke from '../utils/invoke';\nimport buildRegion from '../common/build-region';\nimport Region from '../region';\n\n// MixinOptions\n// - regions\n// - regionClass\n\nexport default {\n  regionClass: Region,\n\n  // Internal method to initialize the regions that have been defined in a\n  // `regions` attribute on this View.\n  _initRegions() {\n\n    // init regions hash\n    this.regions = this.regions || {};\n    this._regions = {};\n\n    this.addRegions(_.result(this, 'regions'));\n  },\n\n  // Internal method to re-initialize all of the regions by updating\n  // the `el` that they point to\n  _reInitRegions() {\n    _invoke(this._regions, 'reset');\n  },\n\n  // Add a single region, by name, to the View\n  addRegion(name, definition) {\n    const regions = {};\n    regions[name] = definition;\n    return this.addRegions(regions)[name];\n  },\n\n  // Add multiple regions as a {name: definition, name2: def2} object literal\n  addRegions(regions) {\n    // If there's nothing to add, stop here.\n    if (_.isEmpty(regions)) {\n      return;\n    }\n\n    // Normalize region selectors hash to allow\n    // a user to use the @ui. syntax.\n    regions = this.normalizeUIValues(regions, ['selector', 'el']);\n\n    // Add the regions definitions to the regions property\n    this.regions = _.extend({}, this.regions, regions);\n\n    return this._addRegions(regions);\n  },\n\n  // internal method to build and add regions\n  _addRegions(regionDefinitions) {\n    const defaults = {\n      regionClass: this.regionClass,\n      parentEl: _.partial(_.result, this, 'el')\n    };\n\n    return _.reduce(regionDefinitions, (regions, definition, name) => {\n      regions[name] = buildRegion(definition, defaults);\n      this._addRegion(regions[name], name);\n      return regions;\n    }, {});\n  },\n\n  _addRegion(region, name) {\n    this.triggerMethod('before:add:region', this, name, region);\n\n    region._parentView = this;\n    region._name = name;\n\n    this._regions[name] = region;\n\n    this.triggerMethod('add:region', this, name, region);\n  },\n\n  // Remove a single region from the View, by name\n  removeRegion(name) {\n    const region = this._regions[name];\n\n    this._removeRegion(region, name);\n\n    return region;\n  },\n\n  // Remove all regions from the View\n  removeRegions() {\n    const regions = this._getRegions();\n\n    _.each(this._regions, _.bind(this._removeRegion, this));\n\n    return regions;\n  },\n\n  _removeRegion(region, name) {\n    this.triggerMethod('before:remove:region', this, name, region);\n\n    region.destroy();\n\n    this.triggerMethod('remove:region', this, name, region);\n  },\n\n  // Called in a region's destroy\n  _removeReferences(name) {\n    delete this.regions[name];\n    delete this._regions[name];\n  },\n\n  // Empty all regions in the region manager, but\n  // leave them attached\n  emptyRegions() {\n    const regions = this.getRegions();\n    _invoke(regions, 'empty');\n    return regions;\n  },\n\n  // Checks to see if view contains region\n  // Accepts the region name\n  // hasRegion('main')\n  hasRegion(name) {\n    return !!this.getRegion(name);\n  },\n\n  // Provides access to regions\n  // Accepts the region name\n  // getRegion('main')\n  getRegion(name) {\n    if (!this._isRendered) {\n      this.render();\n    }\n    return this._regions[name];\n  },\n\n  // Get all regions\n  _getRegions() {\n    return _.clone(this._regions);\n  },\n\n  getRegions() {\n    if (!this._isRendered) {\n      this.render();\n    }\n    return this._getRegions();\n  },\n\n  showChildView(name, view, ...args) {\n    const region = this.getRegion(name);\n    return region.show(view, ...args);\n  },\n\n  detachChildView(name) {\n    return this.getRegion(name).detachView();\n  },\n\n  getChildView(name) {\n    return this.getRegion(name).currentView;\n  }\n\n};\n","// Renderer\n// --------\n\nimport _ from 'underscore';\nimport MarionetteError from '../error';\nimport TemplateCache from '../template-cache';\n\n// Render a template with data by passing in the template\n// selector and the data to render.\nconst Renderer = {\n\n  // Render a template with data. The `template` parameter is\n  // passed to the `TemplateCache` object to retrieve the\n  // template function. Override this method to provide your own\n  // custom rendering and template handling for all of Marionette.\n  render(template, data) {\n    if (!template) {\n      throw new MarionetteError({\n        name: 'TemplateNotFoundError',\n        message: 'Cannot render the template since its false, null or undefined.'\n      });\n    }\n\n    const templateFunc = _.isFunction(template) ? template : TemplateCache.get(template);\n\n    return templateFunc(data);\n  }\n};\n\nexport default Renderer;\n","// View\n// ---------\n\nimport _ from 'underscore';\nimport Backbone from 'backbone';\nimport deprecate from './utils/deprecate';\nimport isNodeAttached from './common/is-node-attached';\nimport monitorViewEvents from './common/monitor-view-events';\nimport ViewMixin from './mixins/view';\nimport RegionsMixin from './mixins/regions';\nimport Renderer from './config/renderer';\n\nconst ClassOptions = [\n  'behaviors',\n  'childViewEventPrefix',\n  'childViewEvents',\n  'childViewTriggers',\n  'collectionEvents',\n  'events',\n  'modelEvents',\n  'regionClass',\n  'regions',\n  'template',\n  'templateContext',\n  'triggers',\n  'ui'\n];\n\n// The standard view. Includes view events, automatic rendering\n// of Underscore templates, nested views, and more.\nconst View = Backbone.View.extend({\n\n  constructor(options) {\n    this.render = _.bind(this.render, this);\n\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    monitorViewEvents(this);\n\n    this._initBehaviors();\n    this._initRegions();\n\n    const args = Array.prototype.slice.call(arguments);\n    args[0] = this.options;\n    Backbone.View.prototype.constructor.apply(this, args);\n\n    this.delegateEntityEvents();\n\n    this._triggerEventOnBehaviors('initialize', this);\n  },\n\n  // Serialize the view's model *or* collection, if\n  // it exists, for the template\n  serializeData() {\n    if (!this.model && !this.collection) {\n      return {};\n    }\n\n    // If we have a model, we serialize that\n    if (this.model) {\n      return this.serializeModel();\n    }\n\n    // Otherwise, we serialize the collection,\n    // making it available under the `items` property\n    return {\n      items: this.serializeCollection()\n    };\n  },\n\n  // Prepares the special `model` property of a view\n  // for being displayed in the template. By default\n  // we simply clone the attributes. Override this if\n  // you need a custom transformation for your view's model\n  serializeModel() {\n    if (!this.model) { return {}; }\n    return _.clone(this.model.attributes);\n  },\n\n  // Serialize a collection by cloning each of\n  // its model's attributes\n  serializeCollection() {\n    if (!this.collection) { return {}; }\n    return this.collection.map(function(model) { return _.clone(model.attributes); });\n  },\n\n  // Overriding Backbone.View's `setElement` to handle\n  // if an el was previously defined. If so, the view might be\n  // rendered or attached on setElement.\n  setElement() {\n    const hasEl = !!this.el;\n\n    Backbone.View.prototype.setElement.apply(this, arguments);\n\n    if (hasEl) {\n      this._isRendered = !!this.$el.length;\n      this._isAttached = isNodeAttached(this.el);\n    }\n\n    if (this._isRendered) {\n      this.bindUIElements();\n    }\n\n    return this;\n  },\n\n  // Render the view, defaulting to underscore.js templates.\n  // You can override this in your view definition to provide\n  // a very specific rendering for your view. In general, though,\n  // you should override the `Marionette.Renderer` object to\n  // change how Marionette renders views.\n  // Subsequent renders after the first will re-render all nested\n  // views.\n  render() {\n    if (this._isDestroyed) { return this; }\n\n    this.triggerMethod('before:render', this);\n\n    // If this is not the first render call, then we need to\n    // re-initialize the `el` for each region\n    if (this._isRendered) {\n      this._reInitRegions();\n    }\n\n    this._renderTemplate();\n    this.bindUIElements();\n\n    this._isRendered = true;\n    this.triggerMethod('render', this);\n\n    return this;\n  },\n\n  // Internal method to render the template with the serialized data\n  // and template context via the `Marionette.Renderer` object.\n  _renderTemplate() {\n    const template = this.getTemplate();\n\n    // Allow template-less views\n    if (template === false) {\n      deprecate('template:false is deprecated.  Use _.noop.');\n      return;\n    }\n\n    // Add in entity data and template context\n    const data = this.mixinTemplateContext(this.serializeData());\n\n    // Render and add to el\n    const html = this._renderHtml(template, data);\n    this.attachElContent(html);\n  },\n\n  // Renders the data into the template\n  _renderHtml(template, data) {\n    return Renderer.render(template, data, this);\n  },\n\n  // Get the template for this view\n  // instance. You can set a `template` attribute in the view\n  // definition or pass a `template: \"whatever\"` parameter in\n  // to the constructor options.\n  getTemplate() {\n    return this.template;\n  },\n\n  // Mix in template context methods. Looks for a\n  // `templateContext` attribute, which can either be an\n  // object literal, or a function that returns an object\n  // literal. All methods and attributes from this object\n  // are copies to the object passed in.\n  mixinTemplateContext(target = {}) {\n    const templateContext = _.result(this, 'templateContext');\n    return _.extend(target, templateContext);\n  },\n\n  // Attaches the content of a given view.\n  // This method can be overridden to optimize rendering,\n  // or to render in a non standard way.\n  //\n  // For example, using `innerHTML` instead of `$el.html`\n  //\n  // ```js\n  // attachElContent(html) {\n  //   this.el.innerHTML = html;\n  //   return this;\n  // }\n  // ```\n  attachElContent(html) {\n    this.setInnerContent(this.el, html);\n\n    return this;\n  },\n\n  // called by ViewMixin destroy\n  _removeChildren() {\n    this.removeRegions();\n  },\n\n  _getImmediateChildren() {\n    return _.chain(this._getRegions())\n      .map('currentView')\n      .compact()\n      .value();\n  }\n}, {\n  // Sets the renderer for the Marionette.View class\n  setRenderer(renderer) {\n    this.prototype._renderHtml = renderer;\n  }\n});\n\n_.extend(View.prototype, ViewMixin, RegionsMixin);\n\nexport default View;\n","// Mix in methods from Underscore, for iteration, and other\n// collection related features.\n// Borrowing this code from Backbone.Collection:\n// https://github.com/jashkenas/backbone/blob/1.1.2/backbone.js#L962\n\nimport _ from 'underscore';\n\nconst methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',\n                'select', 'reject', 'every', 'all', 'some', 'any', 'include',\n                'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',\n                'last', 'without', 'isEmpty', 'pluck', 'reduce', 'partition'];\n\nconst emulateCollection = function(object, listProperty) {\n  _.each(methods, function(method) {\n    object[method] = function() {\n      const list = _.values(_.result(this, listProperty));\n      const args = [list].concat(_.toArray(arguments));\n      return _[method].apply(_, args);\n    };\n  });\n};\n\nexport default emulateCollection;\n","import _ from 'underscore';\nimport emulateCollection from './utils/emulate-collection';\n\n// Provide a container to store, retrieve and\n// shut down child views.\nconst Container = function(views) {\n  this._views = {};\n  this._indexByModel = {};\n  this._indexByCustom = {};\n  this._updateLength();\n\n  _.each(views, _.bind(this.add, this));\n};\n\nemulateCollection(Container.prototype, '_views');\n\n// Container Methods\n// -----------------\n\n_.extend(Container.prototype, {\n\n  // Add a view to this container. Stores the view\n  // by `cid` and makes it searchable by the model\n  // cid (and model itself). Optionally specify\n  // a custom key to store an retrieve the view.\n  add(view, customIndex) {\n    return this._add(view, customIndex)._updateLength();\n  },\n\n  // To be used when avoiding call _updateLength\n  // When you are done adding all your new views\n  // call _updateLength\n  _add(view, customIndex) {\n    const viewCid = view.cid;\n\n    // store the view\n    this._views[viewCid] = view;\n\n    // index it by model\n    if (view.model) {\n      this._indexByModel[view.model.cid] = viewCid;\n    }\n\n    // index by custom\n    if (customIndex) {\n      this._indexByCustom[customIndex] = viewCid;\n    }\n\n    return this;\n  },\n\n  // Find a view by the model that was attached to\n  // it. Uses the model's `cid` to find it.\n  findByModel(model) {\n    return this.findByModelCid(model.cid);\n  },\n\n  // Find a view by the `cid` of the model that was attached to\n  // it. Uses the model's `cid` to find the view `cid` and\n  // retrieve the view using it.\n  findByModelCid(modelCid) {\n    const viewCid = this._indexByModel[modelCid];\n    return this.findByCid(viewCid);\n  },\n\n  // Find a view by a custom indexer.\n  findByCustom(index) {\n    const viewCid = this._indexByCustom[index];\n    return this.findByCid(viewCid);\n  },\n\n  // Find by index. This is not guaranteed to be a\n  // stable index.\n  findByIndex(index) {\n    return _.values(this._views)[index];\n  },\n\n  // retrieve a view by its `cid` directly\n  findByCid(cid) {\n    return this._views[cid];\n  },\n\n  // Remove a view\n  remove(view) {\n    return this._remove(view)._updateLength();\n  },\n\n  // To be used when avoiding call _updateLength\n  // When you are done adding all your new views\n  // call _updateLength\n  _remove(view) {\n    const viewCid = view.cid;\n\n    // delete model index\n    if (view.model) {\n      delete this._indexByModel[view.model.cid];\n    }\n\n    // delete custom index\n    _.some(this._indexByCustom, _.bind(function(cid, key) {\n      if (cid === viewCid) {\n        delete this._indexByCustom[key];\n        return true;\n      }\n    }, this));\n\n    // remove the view from the container\n    delete this._views[viewCid];\n\n    return this;\n  },\n\n  // Update the `.length` attribute on this container\n  _updateLength() {\n    this.length = _.size(this._views);\n\n    return this;\n  }\n});\n\nexport default Container;\n","// Collection View\n// ---------------\n\nimport _ from 'underscore';\nimport Backbone from 'backbone';\nimport destroyBackboneView from './utils/destroy-backbone-view';\nimport isNodeAttached from './common/is-node-attached';\nimport monitorViewEvents from './common/monitor-view-events';\nimport { triggerMethodOn } from './common/trigger-method';\nimport ChildViewContainer from './child-view-container';\nimport MarionetteError from './error';\nimport ViewMixin from './mixins/view';\n\nconst ClassOptions = [\n  'behaviors',\n  'childView',\n  'childViewEventPrefix',\n  'childViewEvents',\n  'childViewOptions',\n  'childViewTriggers',\n  'collectionEvents',\n  'events',\n  'filter',\n  'emptyView',\n  'emptyViewOptions',\n  'modelEvents',\n  'reorderOnSort',\n  'sort',\n  'triggers',\n  'ui',\n  'viewComparator'\n];\n\n// A view that iterates over a Backbone.Collection\n// and renders an individual child view for each model.\nconst CollectionView = Backbone.View.extend({\n\n  // flag for maintaining the sorted order of the collection\n  sort: true,\n\n  // constructor\n  // option to pass `{sort: false}` to prevent the `CollectionView` from\n  // maintaining the sorted order of the collection.\n  // This will fallback onto appending childView's to the end.\n  //\n  // option to pass `{viewComparator: compFunction()}` to allow the `CollectionView`\n  // to use a custom sort order for the collection.\n  constructor(options) {\n    this.render = _.bind(this.render, this);\n\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    monitorViewEvents(this);\n\n    this._initBehaviors();\n    this.once('render', this._initialEvents);\n    this._initChildViewStorage();\n    this._bufferedChildren = [];\n\n    const args = Array.prototype.slice.call(arguments);\n    args[0] = this.options;\n    Backbone.View.prototype.constructor.apply(this, args);\n\n    this.delegateEntityEvents();\n\n    this._triggerEventOnBehaviors('initialize', this);\n  },\n\n  // Instead of inserting elements one by one into the page, it's much more performant to insert\n  // elements into a document fragment and then insert that document fragment into the page\n  _startBuffering() {\n    this._isBuffering = true;\n  },\n\n  _endBuffering() {\n    const shouldTriggerAttach = !!this._isAttached;\n    const triggerOnChildren = shouldTriggerAttach ? this._getImmediateChildren() : [];\n\n    this._isBuffering = false;\n\n    _.each(triggerOnChildren, child => {\n      triggerMethodOn(child, 'before:attach', child);\n    });\n\n    this.attachBuffer(this, this._createBuffer());\n\n    _.each(triggerOnChildren, child => {\n      child._isAttached = true;\n      triggerMethodOn(child, 'attach', child);\n    });\n\n    this._bufferedChildren = [];\n  },\n\n  _getImmediateChildren() {\n    return _.values(this.children._views);\n  },\n\n  // Configured the initial events that the collection view binds to.\n  _initialEvents() {\n    if (this.collection) {\n      this.listenTo(this.collection, 'add', this._onCollectionAdd);\n      this.listenTo(this.collection, 'update', this._onCollectionUpdate);\n      this.listenTo(this.collection, 'reset', this.render);\n\n      if (this.sort) {\n        this.listenTo(this.collection, 'sort', this._sortViews);\n      }\n    }\n  },\n\n  // Handle a child added to the collection\n  _onCollectionAdd(child, collection, opts) {\n    // `index` is present when adding with `at` since BB 1.2; indexOf fallback for < 1.2\n    let index = opts.at !== undefined && (opts.index || collection.indexOf(child));\n\n    // When filtered or when there is no initial index, calculate index.\n    if (this.filter || index === false) {\n      index = _.indexOf(this._filteredSortedModels(index), child);\n    }\n\n    if (this._shouldAddChild(child, index)) {\n      this._destroyEmptyView();\n      this._addChild(child, index)\n    }\n  },\n\n  // Handle collection update model removals\n  _onCollectionUpdate(collection, options) {\n    const changes = options.changes;\n    this._removeChildModels(changes.removed);\n  },\n\n  // Remove the child views and destroy them.\n  // This function also updates the indices of later views\n  // in the collection in order to keep the children in sync with the collection.\n  // \"models\" is an array of models and the corresponding views\n  // will be removed and destroyed from the CollectionView\n  _removeChildModels(models) {\n    // Used to determine where to update the remaining\n    // sibling view indices after these views are removed.\n    const removedViews = this._getRemovedViews(models);\n\n    if (!removedViews.length) {\n      return;\n    }\n\n    this.children._updateLength();\n\n    // decrement the index of views after this one\n    this._updateIndices(removedViews, false);\n\n    if (this.isEmpty()) {\n      this._showEmptyView();\n    }\n  },\n\n  // Returns the views that will be used for re-indexing\n  // through CollectionView#_updateIndices.\n  _getRemovedViews(models) {\n\n    // Returning a view means something was removed.\n    return _.reduce(models, (removingViews, model) => {\n      const view = model && this.children.findByModel(model);\n\n      if (!view || view._isDestroyed) {\n        return removingViews;\n      }\n\n      this._removeChildView(view);\n\n      removingViews.push(view);\n\n      return removingViews;\n    }, []);\n  },\n\n  _removeChildView(view) {\n    this.triggerMethod('before:remove:child', this, view);\n\n    this.children._remove(view);\n    if (view.destroy) {\n      view.destroy();\n    } else {\n      destroyBackboneView(view);\n    }\n\n    this.stopListening(view);\n    this.triggerMethod('remove:child', this, view);\n  },\n\n  // Overriding Backbone.View's `setElement` to handle\n  // if an el was previously defined. If so, the view might be\n  // attached on setElement.\n  setElement() {\n    const hasEl = !!this.el;\n\n    Backbone.View.prototype.setElement.apply(this, arguments);\n\n    if (hasEl) {\n      this._isAttached = isNodeAttached(this.el);\n    }\n\n    return this;\n  },\n\n  // Render children views. Override this method to provide your own implementation of a\n  // render function for the collection view.\n  render() {\n    if (this._isDestroyed) { return this; }\n    this.triggerMethod('before:render', this);\n    this._renderChildren();\n    this._isRendered = true;\n    this.triggerMethod('render', this);\n    return this;\n  },\n\n  // An efficient rendering used for filtering. Instead of modifying the whole DOM for the\n  // collection view, we are only adding or removing the related childrenViews.\n  setFilter(filter, {preventRender} = {}) {\n    const canBeRendered = this._isRendered && !this._isDestroyed;\n    const filterChanged = this.filter !== filter;\n    const shouldRender = canBeRendered && filterChanged && !preventRender;\n\n    if (shouldRender) {\n      const previousModels = this._filteredSortedModels();\n      this.filter = filter;\n      const models = this._filteredSortedModels();\n      this._applyModelDeltas(models, previousModels);\n    } else {\n      this.filter = filter;\n    }\n\n    return this;\n  },\n\n  // `removeFilter` is actually an alias for removing filters.\n  removeFilter(options) {\n    return this.setFilter(null, options);\n  },\n\n  // Calculate and apply difference by cid between `models` and `previousModels`.\n  _applyModelDeltas(models, previousModels) {\n    const currentIds = {};\n    _.each(models, (model, index) => {\n      const addedChildNotExists = !this.children.findByModel(model);\n      if (addedChildNotExists) {\n        this._onCollectionAdd(model, this.collection, {at: index});\n      }\n      currentIds[model.cid] = true;\n    });\n\n    const removeModels = _.filter(previousModels, (prevModel) => {\n      return !currentIds[prevModel.cid] && this.children.findByModel(prevModel);\n    });\n\n    this._removeChildModels(removeModels);\n  },\n\n  // Reorder DOM after sorting. When your element's rendering do not use their index,\n  // you can pass reorderOnSort: true to only reorder the DOM after a sort instead of\n  // rendering all the collectionView.\n  reorder() {\n    const children = this.children;\n    const models = this._filteredSortedModels();\n\n    if (!models.length && this._showingEmptyView) { return this; }\n\n    const anyModelsAdded = _.some(models, function(model) {\n      return !children.findByModel(model);\n    });\n\n    // If there are any new models added due to filtering we need to add child views,\n    // so render as normal.\n    if (anyModelsAdded) {\n      this.render();\n    } else {\n\n      const filteredOutModels = [];\n\n      // Get the DOM nodes in the same order as the models and\n      // find the model that were children before but aren't in this new order.\n      const elsToReorder = children.reduce(function(viewEls, view) {\n        const index = _.indexOf(models, view.model);\n\n        if (index === -1) {\n          filteredOutModels.push(view.model);\n          return viewEls;\n        }\n\n        view._index = index;\n\n        viewEls[index] = view.el;\n\n        return viewEls;\n      }, new Array(models.length));\n\n      this.triggerMethod('before:reorder', this);\n\n      // Since append moves elements that are already in the DOM, appending the elements\n      // will effectively reorder them.\n      this._appendReorderedChildren(elsToReorder);\n\n      // remove any views that have been filtered out\n      this._removeChildModels(filteredOutModels);\n\n      this.triggerMethod('reorder', this);\n    }\n    return this;\n  },\n\n  // Render view after sorting. Override this method to change how the view renders\n  // after a `sort` on the collection.\n  resortView() {\n    if (this.reorderOnSort) {\n      this.reorder();\n    } else {\n      this._renderChildren();\n    }\n    return this;\n  },\n\n  // Internal method. This checks for any changes in the order of the collection.\n  // If the index of any view doesn't match, it will render.\n  _sortViews() {\n    const models = this._filteredSortedModels();\n\n    // check for any changes in sort order of views\n    const orderChanged = _.find(models, (item, index) => {\n      const view = this.children.findByModel(item);\n      return !view || view._index !== index;\n    });\n\n    if (orderChanged) {\n      this.resortView();\n    }\n  },\n\n  // Internal reference to what index a `emptyView` is.\n  _emptyViewIndex: -1,\n\n  // Internal method. Separated so that CompositeView can append to the childViewContainer\n  // if necessary\n  _appendReorderedChildren(children) {\n    this.appendChildren(this.el, children);\n  },\n\n  // Internal method. Separated so that CompositeView can have more control over events\n  // being triggered, around the rendering process\n  _renderChildren() {\n    if (this._isRendered) {\n      this._destroyEmptyView();\n      this._destroyChildren();\n    }\n\n    const models = this._filteredSortedModels();\n    if (this.isEmpty({processedModels: models})) {\n      this._showEmptyView();\n    } else {\n      this.triggerMethod('before:render:children', this);\n      this._startBuffering();\n      this._showCollection(models);\n      this._endBuffering();\n      this.triggerMethod('render:children', this);\n    }\n  },\n\n  _createView(model, index) {\n    const ChildView = this._getChildView(model);\n    const childViewOptions = this._getChildViewOptions(model, index);\n    const view = this.buildChildView(model, ChildView, childViewOptions);\n    return view;\n  },\n\n  _setupChildView(view, index) {\n    monitorViewEvents(view);\n\n    // set up the child view event forwarding\n    this._proxyChildViewEvents(view);\n\n    if (this.sort) {\n      view._index = index;\n    }\n  },\n\n  // Internal method to loop through collection and show each child view.\n  _showCollection(models) {\n    _.each(models, _.bind(this._addChild, this));\n    this.children._updateLength();\n  },\n\n  // Allow the collection to be sorted by a custom view comparator\n  _filteredSortedModels(addedAt) {\n    if (!this.collection || !this.collection.length) { return []; }\n\n    const viewComparator = this.getViewComparator();\n    let models = this.collection.models;\n    addedAt = Math.min(Math.max(addedAt, 0), models.length - 1);\n\n    if (viewComparator) {\n      let addedModel;\n      // Preserve `at` location, even for a sorted view\n      if (addedAt) {\n        addedModel = models[addedAt];\n        models = models.slice(0, addedAt).concat(models.slice(addedAt + 1));\n      }\n      models = this._sortModelsBy(models, viewComparator);\n      if (addedModel) {\n        models.splice(addedAt, 0, addedModel);\n      }\n    }\n\n    // Filter after sorting in case the filter uses the index\n    models = this._filterModels(models);\n\n    return models;\n  },\n\n  getViewComparator() {\n    return this.viewComparator;\n  },\n\n  // Filter an array of models, if a filter exists\n  _filterModels(models) {\n    if (this.filter) {\n      models = _.filter(models, (model, index) => {\n        return this._shouldAddChild(model, index);\n      });\n    }\n    return models;\n  },\n\n  _sortModelsBy(models, comparator) {\n    if (typeof comparator === 'string') {\n      return _.sortBy(models, (model) => {\n        return model.get(comparator);\n      });\n    } else if (comparator.length === 1) {\n      return _.sortBy(models, _.bind(comparator, this));\n    } else {\n      return _.clone(models).sort(_.bind(comparator, this));\n    }\n  },\n\n  // Internal method to show an empty view in place of a collection of child views,\n  // when the collection is empty\n  _showEmptyView() {\n    const EmptyView = this._getEmptyView();\n\n    if (EmptyView && !this._showingEmptyView) {\n      this._showingEmptyView = true;\n\n      const model = new Backbone.Model();\n      let emptyViewOptions =\n        this.emptyViewOptions || this.childViewOptions;\n      if (_.isFunction(emptyViewOptions)) {\n        emptyViewOptions = emptyViewOptions.call(this, model, this._emptyViewIndex);\n      }\n\n      const view = this.buildChildView(model, EmptyView, emptyViewOptions);\n\n      this.triggerMethod('before:render:empty', this, view);\n      this.addChildView(view, 0);\n      this.triggerMethod('render:empty', this, view);\n    }\n  },\n\n  // Internal method to destroy an existing emptyView instance if one exists. Called when\n  // a collection view has been rendered empty, and then a child is added to the collection.\n  _destroyEmptyView() {\n    if (this._showingEmptyView) {\n      this.triggerMethod('before:remove:empty', this);\n\n      this._destroyChildren();\n      delete this._showingEmptyView;\n\n      this.triggerMethod('remove:empty', this);\n    }\n  },\n\n  // Retrieve the empty view class\n  _getEmptyView() {\n    const emptyView = this.emptyView;\n\n    if (!emptyView) { return; }\n\n    return this._getView(emptyView);\n  },\n\n  // Retrieve the `childView` class\n  // The `childView` property can be either a view class or a function that\n  // returns a view class. If it is a function, it will receive the model that\n  // will be passed to the view instance (created from the returned view class)\n  _getChildView(child) {\n    let childView = this.childView;\n\n    if (!childView) {\n      throw new MarionetteError({\n        name: 'NoChildViewError',\n        message: 'A \"childView\" must be specified'\n      });\n    }\n\n    childView = this._getView(childView, child);\n\n    if (!childView) {\n      throw new MarionetteError({\n        name: 'InvalidChildViewError',\n        message: '\"childView\" must be a view class or a function that returns a view class'\n      });\n    }\n\n    return childView;\n  },\n\n  // First check if the `view` is a view class (the common case)\n  // Then check if it's a function (which we assume that returns a view class)\n  _getView(view, child) {\n    if (view.prototype instanceof Backbone.View || view === Backbone.View) {\n      return view;\n    } else if (_.isFunction(view)) {\n      return view.call(this, child);\n    }\n  },\n\n  // Internal method for building and adding a child view\n  _addChild(child, index) {\n    const view = this._createView(child, index);\n    this.addChildView(view, index);\n\n    return view;\n  },\n\n  _getChildViewOptions(child, index) {\n    if (_.isFunction(this.childViewOptions)) {\n      return this.childViewOptions(child, index);\n    }\n\n    return this.childViewOptions;\n  },\n\n  // Render the child's view and add it to the HTML for the collection view at a given index.\n  // This will also update the indices of later views in the collection in order to keep the\n  // children in sync with the collection.\n  addChildView(view, index) {\n    this.triggerMethod('before:add:child', this, view);\n    this._setupChildView(view, index);\n\n    // Store the child view itself so we can properly remove and/or destroy it later\n    if (this._isBuffering) {\n      // Add to children, but don't update children's length.\n      this.children._add(view);\n    } else {\n      // increment indices of views after this one\n      this._updateIndices(view, true);\n      this.children.add(view);\n    }\n\n    this._renderView(view);\n\n    this._attachView(view, index);\n\n    this.triggerMethod('add:child', this, view);\n\n    return view;\n  },\n\n  // Internal method. This decrements or increments the indices of views after the added/removed\n  // view to keep in sync with the collection.\n  _updateIndices(views, increment) {\n    if (!this.sort) {\n      return;\n    }\n\n    if (!increment) {\n      _.each(_.sortBy(this.children._views, '_index'), (view, index) => {\n        view._index = index;\n      });\n\n      return;\n    }\n\n    const view = _.isArray(views) ? _.max(views, '_index') : views;\n\n    if (_.isObject(view)) {\n      // update the indexes of views after this one\n      this.children.each((laterView) => {\n        if (laterView._index >= view._index) {\n          laterView._index += 1;\n        }\n      });\n    }\n  },\n\n  _renderView(view) {\n    if (view._isRendered) {\n      return;\n    }\n\n    if (!view.supportsRenderLifecycle) {\n      triggerMethodOn(view, 'before:render', view);\n    }\n\n    view.render();\n\n    if (!view.supportsRenderLifecycle) {\n      view._isRendered = true;\n      triggerMethodOn(view, 'render', view);\n    }\n  },\n\n  _attachView(view, index) {\n    // Only trigger attach if already attached and not buffering,\n    // otherwise _endBuffering() or Region#show() handles this.\n    const shouldTriggerAttach = !view._isAttached && !this._isBuffering && this._isAttached;\n\n    if (shouldTriggerAttach) {\n      triggerMethodOn(view, 'before:attach', view);\n    }\n\n    this.attachHtml(this, view, index);\n\n    if (shouldTriggerAttach) {\n      view._isAttached = true;\n      triggerMethodOn(view, 'attach', view);\n    }\n  },\n\n  // Build a `childView` for a model in the collection.\n  buildChildView(child, ChildViewClass, childViewOptions) {\n    const options = _.extend({model: child}, childViewOptions);\n    return new ChildViewClass(options);\n  },\n\n  // Remove the child view and destroy it. This function also updates the indices of later views\n  // in the collection in order to keep the children in sync with the collection.\n  removeChildView(view) {\n    if (!view || view._isDestroyed) {\n      return view;\n    }\n\n    this._removeChildView(view);\n    this.children._updateLength();\n    // decrement the index of views after this one\n    this._updateIndices(view, false);\n    return view;\n  },\n\n  // check if the collection is empty or optionally whether an array of pre-processed models is empty\n  isEmpty(options) {\n    let models;\n    if (_.result(options, 'processedModels')) {\n      models = options.processedModels;\n    } else {\n      models = this.collection ? this.collection.models : [];\n      models = this._filterModels(models);\n    }\n    return models.length === 0;\n  },\n\n  // You might need to override this if you've overridden attachHtml\n  attachBuffer(collectionView, buffer) {\n    this.appendChildren(collectionView.el, buffer);\n  },\n\n  // Create a fragment buffer from the currently buffered children\n  _createBuffer() {\n    const elBuffer = this.createBuffer();\n    _.each(this._bufferedChildren, (b) => {\n      this.appendChildren(elBuffer, b.el);\n    });\n    return elBuffer;\n  },\n\n  // Append the HTML to the collection's `el`. Override this method to do something other\n  // than `.append`.\n  attachHtml(collectionView, childView, index) {\n    if (collectionView._isBuffering) {\n      // buffering happens on reset events and initial renders\n      // in order to reduce the number of inserts into the\n      // document, which are expensive.\n      collectionView._bufferedChildren.splice(index, 0, childView);\n    } else {\n      // If we've already rendered the main collection, append\n      // the new child into the correct order if we need to. Otherwise\n      // append to the end.\n      if (!collectionView._insertBefore(childView, index)) {\n        collectionView._insertAfter(childView);\n      }\n    }\n  },\n\n  // Internal method. Check whether we need to insert the view into the correct position.\n  _insertBefore(childView, index) {\n    let currentView;\n    const findPosition = this.sort && (index < this.children.length - 1);\n    if (findPosition) {\n      // Find the view after this one\n      currentView = this.children.find((view) => {\n        return view._index === index + 1;\n      });\n    }\n\n    if (currentView) {\n      this.beforeEl(currentView.el, childView.el);\n      return true;\n    }\n\n    return false;\n  },\n\n  // Internal method. Append a view to the end of the $el\n  _insertAfter(childView) {\n    this.appendChildren(this.el, childView.el);\n  },\n\n  // Internal method to set up the `children` object for storing all of the child views\n  _initChildViewStorage() {\n    this.children = new ChildViewContainer();\n  },\n\n  // called by ViewMixin destroy\n  _removeChildren() {\n    this._destroyChildren();\n  },\n\n  // Destroy the child views that this collection view is holding on to, if any\n  _destroyChildren(options) {\n    if (!this.children.length) {\n      return;\n    }\n\n    this.triggerMethod('before:destroy:children', this);\n    this.children.each(_.bind(this._removeChildView, this));\n    this.children._updateLength();\n    this.triggerMethod('destroy:children', this);\n  },\n\n  // Return true if the given child should be shown. Return false otherwise.\n  // The filter will be passed (child, index, collection), where\n  //  'child' is the given model\n  //  'index' is the index of that model in the collection\n  //  'collection' is the collection referenced by this CollectionView\n  _shouldAddChild(child, index) {\n    const filter = this.filter;\n    return !_.isFunction(filter) || filter.call(this, child, index, this.collection);\n  }\n});\n\n_.extend(CollectionView.prototype, ViewMixin);\n\nexport default CollectionView;\n","import _ from 'underscore';\nimport emulateCollection from './utils/emulate-collection';\n\n// Provide a container to store, retrieve and\n// shut down child views.\nconst Container = function() {\n  this._init();\n};\n\nemulateCollection(Container.prototype, '_views');\n\nfunction stringComparator(comparator, view) {\n  return view.model && view.model.get(comparator);\n}\n\n// Container Methods\n// -----------------\n\n_.extend(Container.prototype, {\n\n  // Initializes an empty container\n  _init() {\n    this._views = [];\n    this._viewsByCid = {};\n    this._indexByModel = {};\n    this._updateLength();\n  },\n\n  // Add a view to this container. Stores the view\n  // by `cid` and makes it searchable by the model\n  // cid (and model itself). Additionally it stores\n  // the view by index in the _views array\n  _add(view, index = this._views.length) {\n    const viewCid = view.cid;\n\n    // store the view\n    this._viewsByCid[viewCid] = view;\n\n    // index it by model\n    if (view.model) {\n      this._indexByModel[view.model.cid] = viewCid;\n    }\n\n    // add to end by default\n    this._views.splice(index, 0, view);\n\n    this._updateLength();\n  },\n\n  // Sort (mutate) and return the array of the child views.\n  _sort(comparator) {\n    if (typeof comparator === 'string') {\n      comparator = _.partial(stringComparator, comparator);\n      return this._sortBy(comparator);\n    }\n\n    if (comparator.length === 1) {\n      return this._sortBy(comparator);\n    }\n\n    return this._views.sort(comparator);\n  },\n\n  // Makes `_.sortBy` mutate the array to match `this._views.sort`\n  _sortBy(comparator) {\n    const sortedViews = _.sortBy(this._views, comparator);\n\n    this._set(sortedViews);\n\n    return sortedViews;\n  },\n\n  // Replace array contents without overwriting the reference.\n  _set(views) {\n    this._views.length = 0;\n\n    this._views.push.apply(this._views, views.slice(0));\n\n    this._updateLength();\n  },\n\n  // Find a view by the model that was attached to it.\n  // Uses the model's `cid` to find it.\n  findByModel(model) {\n    return this.findByModelCid(model.cid);\n  },\n\n  // Find a view by the `cid` of the model that was attached to it.\n  // Uses the model's `cid` to find the view `cid` and\n  // retrieve the view using it.\n  findByModelCid(modelCid) {\n    const viewCid = this._indexByModel[modelCid];\n    return this.findByCid(viewCid);\n  },\n\n  // Find a view by index.\n  findByIndex(index) {\n    return this._views[index];\n  },\n\n  // Find the index of a view instance\n  findIndexByView(view) {\n    return this._views.indexOf(view);\n  },\n\n  // Retrieve a view by its `cid` directly\n  findByCid(cid) {\n    return this._viewsByCid[cid];\n  },\n\n  // Remove a view and clean up index references.\n  _remove(view) {\n    if (!this._viewsByCid[view.cid]) {\n      return;\n    }\n\n    // delete model index\n    if (view.model) {\n      delete this._indexByModel[view.model.cid];\n    }\n\n    // remove the view from the container\n    delete this._viewsByCid[view.cid];\n\n    const index = this.findIndexByView(view);\n    this._views.splice(index, 1);\n\n    this._updateLength();\n  },\n\n  // Update the `.length` attribute on this container\n  _updateLength() {\n    this.length = this._views.length;\n  }\n});\n\nexport default Container;\n","// Next Collection View\n// ---------------\n\nimport _ from 'underscore';\nimport Backbone from 'backbone';\nimport destroyBackboneView from './utils/destroy-backbone-view';\nimport isNodeAttached from './common/is-node-attached';\nimport monitorViewEvents from './common/monitor-view-events';\nimport { triggerMethodOn } from './common/trigger-method';\nimport ChildViewContainer from './next-child-view-container';\nimport MarionetteError from './error';\nimport Region from './region';\nimport ViewMixin from './mixins/view';\n\nconst ClassOptions = [\n  'behaviors',\n  'childView',\n  'childViewEventPrefix',\n  'childViewEvents',\n  'childViewOptions',\n  'childViewTriggers',\n  'collectionEvents',\n  'emptyView',\n  'emptyViewOptions',\n  'events',\n  'modelEvents',\n  'sortWithCollection',\n  'triggers',\n  'ui',\n  'viewComparator',\n  'viewFilter'\n];\n\n// A view that iterates over a Backbone.Collection\n// and renders an individual child view for each model.\nconst CollectionView = Backbone.View.extend({\n  // flag for maintaining the sorted order of the collection\n  sortWithCollection: true,\n\n  // constructor\n  constructor(options) {\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    monitorViewEvents(this);\n\n    this.once('render', this._initialEvents);\n\n    // This children container isn't really used by a render, but it provides\n    // the ability to check `this.children.length` prior to rendering\n    // It also allows for cases where only addChildView is used\n    this._initChildViewStorage();\n    this._initBehaviors();\n\n    const args = Array.prototype.slice.call(arguments);\n    args[0] = this.options;\n    Backbone.View.prototype.constructor.apply(this, args);\n\n    this._initEmptyRegion();\n\n    this.delegateEntityEvents();\n\n    this._triggerEventOnBehaviors('initialize', this);\n  },\n\n  // Internal method to set up the `children` object for storing all of the child views\n  _initChildViewStorage() {\n    this.children = new ChildViewContainer();\n  },\n\n  // Create an region to show the emptyView\n  _initEmptyRegion() {\n    this.emptyRegion = new Region({ el: this.el })\n\n    this.emptyRegion._parentView = this;\n  },\n\n  // Configured the initial events that the collection view binds to.\n  _initialEvents() {\n    this.listenTo(this.collection, {\n      'sort': this._onCollectionSort,\n      'reset': this._onCollectionReset,\n      'update': this._onCollectionUpdate\n    });\n  },\n\n  // Internal method. This checks for any changes in the order of the collection.\n  // If the index of any view doesn't match, it will re-sort.\n  _onCollectionSort() {\n    if (!this.sortWithCollection) {\n      return;\n    }\n\n    // If the data is changing we will handle the sort later\n    if (this.collection.length !== this.children.length) {\n      return;\n    }\n\n    // Additional check if the data is changing\n    const hasAddedModel = this.collection.some(model => {\n      return !this.children.findByModel(model);\n    });\n\n    if (hasAddedModel) {\n      return;\n    }\n\n    // If the only thing happening here is sorting, sort.\n    this.sort();\n  },\n\n  _onCollectionReset() {\n    this.render();\n  },\n\n  // Handle collection update model additions and  removals\n  _onCollectionUpdate(collection, options) {\n    const changes = options.changes;\n\n    // Remove first since it'll be a shorter array lookup.\n    const removedViews = this._removeChildModels(changes.removed);\n\n    this._addChildModels(changes.added);\n\n    this._detachChildren(removedViews);\n\n    this._showChildren();\n\n    // Destroy removed child views after all of the render is complete\n    this._removeChildViews(removedViews);\n  },\n\n  _removeChildModels(models) {\n    return _.map(models, _.bind(this._removeChildModel, this));\n  },\n\n  _removeChildModel(model) {\n    const view = this.children.findByModel(model);\n\n    this._removeChild(view);\n\n    return view;\n  },\n\n  _removeChild(view) {\n    this.triggerMethod('before:remove:child', this, view);\n\n    this.children._remove(view);\n\n    this.triggerMethod('remove:child', this, view);\n  },\n\n  // Added views are returned for consistency with _removeChildModels\n  _addChildModels(models) {\n    return _.map(models, _.bind(this._addChildModel, this));\n  },\n\n  _addChildModel(model) {\n    const view = this._createChildView(model);\n\n    this._addChild(view);\n\n    return view;\n  },\n\n  _createChildView(model) {\n    const ChildView = this._getChildView(model);\n    const childViewOptions = this._getChildViewOptions(model);\n    const view = this.buildChildView(model, ChildView, childViewOptions);\n\n    return view;\n  },\n\n  _addChild(view, index) {\n    this.triggerMethod('before:add:child', this, view);\n\n    this._setupChildView(view);\n    this.children._add(view, index);\n\n    this.triggerMethod('add:child', this, view);\n  },\n\n  // Retrieve the `childView` class\n  // The `childView` property can be either a view class or a function that\n  // returns a view class. If it is a function, it will receive the model that\n  // will be passed to the view instance (created from the returned view class)\n  _getChildView(child) {\n    let childView = this.childView;\n\n    if (!childView) {\n      throw new MarionetteError({\n        name: 'NoChildViewError',\n        message: 'A \"childView\" must be specified'\n      });\n    }\n\n    childView = this._getView(childView, child);\n\n    if (!childView) {\n      throw new MarionetteError({\n        name: 'InvalidChildViewError',\n        message: '\"childView\" must be a view class or a function that returns a view class'\n      });\n    }\n\n    return childView;\n  },\n\n  // First check if the `view` is a view class (the common case)\n  // Then check if it's a function (which we assume that returns a view class)\n  _getView(view, child) {\n    if (view.prototype instanceof Backbone.View || view === Backbone.View) {\n      return view;\n    } else if (_.isFunction(view)) {\n      return view.call(this, child);\n    }\n  },\n\n  _getChildViewOptions(child) {\n    if (_.isFunction(this.childViewOptions)) {\n      return this.childViewOptions(child);\n    }\n\n    return this.childViewOptions;\n  },\n\n  // Build a `childView` for a model in the collection.\n  // Override to customize the build\n  buildChildView(child, ChildViewClass, childViewOptions) {\n    const options = _.extend({model: child}, childViewOptions);\n    return new ChildViewClass(options);\n  },\n\n  _setupChildView(view) {\n    monitorViewEvents(view);\n\n    // We need to listen for if a view is destroyed in a way other\n    // than through the CollectionView.\n    // If this happens we need to remove the reference to the view\n    // since once a view has been destroyed we can not reuse it.\n    view.on('destroy', this.removeChildView, this);\n\n    // set up the child view event forwarding\n    this._proxyChildViewEvents(view);\n  },\n\n  // used by ViewMixin's `_childViewEventHandler`\n  _getImmediateChildren() {\n    return this.children._views;\n  },\n\n  // Overriding Backbone.View's `setElement` to handle\n  // if an el was previously defined. If so, the view might be\n  // attached on setElement.\n  setElement() {\n    const hasEl = !!this.el;\n\n    Backbone.View.prototype.setElement.apply(this, arguments);\n\n    if (hasEl) {\n      this._isAttached = isNodeAttached(this.el);\n    }\n\n    return this;\n  },\n\n  // Render children views.\n  render() {\n    if (this._isDestroyed) { return this; }\n    this.triggerMethod('before:render', this);\n\n    this._destroyChildren();\n\n    // After all children have been destroyed re-init the container\n    this.children._init();\n\n    if (this.collection) {\n      this._addChildModels(this.collection.models);\n    }\n\n    this._showChildren();\n\n    this._isRendered = true;\n\n    this.triggerMethod('render', this);\n    return this;\n  },\n\n  // Sorts the children then filters and renders the results.\n  sort() {\n    if (this._isDestroyed) { return this; }\n\n    if (!this.children.length) { return this; }\n\n    this._showChildren();\n\n    return this;\n  },\n\n  _showChildren() {\n    if (this.isEmpty()) {\n      this._showEmptyView();\n      return;\n    }\n\n    this._sortChildren();\n\n    this.filter();\n  },\n\n  // Returns true if the collectionView is considered empty.\n  // This is called twice during a render. Once to check the data,\n  // and again when views are filtered. Override this function to\n  // customize what empty means.\n  isEmpty(allViewsFiltered) {\n    return allViewsFiltered || !this.children.length;\n  },\n\n  _showEmptyView() {\n    const EmptyView = this._getEmptyView();\n\n    if (!EmptyView) {\n      return;\n    }\n\n    const options = this._getEmptyViewOptions();\n\n    this.emptyRegion.show(new EmptyView(options));\n  },\n\n  // Retrieve the empty view class\n  _getEmptyView() {\n    const emptyView = this.emptyView;\n\n    if (!emptyView) { return; }\n\n    return this._getView(emptyView);\n  },\n\n  // Remove the emptyView\n  _destroyEmptyView() {\n\n    // Only empty if a view is show so the region\n    // doesn't detach any other unrelated HTML\n    if (this.emptyRegion.hasView()) {\n      this.emptyRegion.empty();\n    }\n  },\n\n  //\n  _getEmptyViewOptions() {\n    const emptyViewOptions = this.emptyViewOptions || this.childViewOptions;\n\n    if (_.isFunction(emptyViewOptions)) {\n      return emptyViewOptions.call(this);\n    }\n\n    return emptyViewOptions;\n  },\n\n  // Sorts views by viewComparator and sets the children to the new order\n  _sortChildren() {\n    this.triggerMethod('before:sort', this);\n\n    let viewComparator = this.getComparator();\n\n    if (_.isFunction(viewComparator)) {\n      // Must use native bind to preserve length\n      viewComparator = viewComparator.bind(this);\n    }\n\n    this.children._sort(viewComparator);\n\n    this.triggerMethod('sort', this);\n  },\n\n  // Sets the view's `viewComparator` and applies the sort if the view is ready.\n  // To prevent the render pass `{ preventRender: true }` as the 2nd argument.\n  setComparator(comparator, {preventRender} = {}) {\n    const comparatorChanged = this.viewComparator !== comparator;\n    const shouldSort = comparatorChanged && !preventRender;\n\n    this.viewComparator = comparator;\n\n    if (shouldSort) {\n      this.sort();\n    }\n\n    return this;\n  },\n\n  // Clears the `viewComparator` and follows the same rules for rendering as `setComparator`.\n  removeComparator(options) {\n    return this.setComparator(null, options);\n  },\n\n  // If viewComparator is overriden it will be returned here.\n  // Additionally override this function to provide custom\n  // viewComparator logic\n  getComparator() {\n    return this.viewComparator || this._viewComparator;\n  },\n\n  // Default internal view comparator that order the views by\n  // the order of the collection\n  _viewComparator(view) {\n    if (!this.collection) { return; }\n    return this.collection.indexOf(view.model);\n  },\n\n  // This method re-filters the children views and re-renders the results\n  filter() {\n    if (this._isDestroyed) { return this; }\n\n    if (!this.children.length) { return this; }\n\n    const filteredViews = this._filterChildren();\n\n    this._renderChildren(filteredViews);\n\n    return this;\n  },\n\n  _filterChildren() {\n    const viewFilter = this._getFilter();\n\n    if (!viewFilter) {\n      return this.children._views;\n    }\n\n    this.triggerMethod('before:filter', this);\n\n    const filteredViews = this.children.partition(_.bind(viewFilter, this));\n\n    this._detachChildren(filteredViews[1]);\n\n    this.triggerMethod('filter', this);\n\n    return filteredViews[0];\n  },\n\n  // This method returns a function for the viewFilter\n  _getFilter() {\n    const viewFilter = this.getFilter();\n\n    if (!viewFilter) { return false; }\n\n    if (_.isFunction(viewFilter)) {\n      return viewFilter;\n    }\n\n    // Support filter predicates `{ fooFlag: true }`\n    if (_.isObject(viewFilter)) {\n      const matcher = _.matches(viewFilter);\n      return function(view) {\n        return matcher(view.model && view.model.attributes);\n      };\n    }\n\n    // Filter by model attribute\n    if (_.isString(viewFilter)) {\n      return function(view) {\n        return view.model && view.model.get(viewFilter);\n      };\n    }\n\n    throw new MarionetteError({\n      name: 'InvalidViewFilterError',\n      message: '\"viewFilter\" must be a function, predicate object literal, a string indicating a model attribute, or falsy'\n    });\n  },\n\n  // Override this function to provide custom\n  // viewFilter logic\n  getFilter() {\n    return this.viewFilter;\n  },\n\n  // Sets the view's `viewFilter` and applies the filter if the view is ready.\n  // To prevent the render pass `{ preventRender: true }` as the 2nd argument.\n  setFilter(filter, {preventRender} = {}) {\n    const filterChanged = this.viewFilter !== filter;\n    const shouldRender = filterChanged && !preventRender;\n\n    this.viewFilter = filter;\n\n    if (shouldRender) {\n      this.filter();\n    }\n\n    return this;\n  },\n\n  // Clears the `viewFilter` and follows the same rules for rendering as `setFilter`.\n  removeFilter(options) {\n    return this.setFilter(null, options);\n  },\n\n  _detachChildren(detachingViews) {\n    _.each(detachingViews, _.bind(this._detachChildView, this));\n  },\n\n  _detachChildView(view) {\n    const shouldTriggerDetach = !!view._isAttached;\n    if (shouldTriggerDetach) {\n      triggerMethodOn(view, 'before:detach', view);\n    }\n\n    this.detachHtml(view);\n\n    if (shouldTriggerDetach) {\n      view._isAttached = false;\n      triggerMethodOn(view, 'detach', view);\n    }\n  },\n\n  // Override this method to change how the collectionView detaches a child view\n  detachHtml(view) {\n    this.detachEl(view.el);\n  },\n\n  _renderChildren(views) {\n    if (this.isEmpty(!views.length)) {\n      this._showEmptyView();\n      return;\n    }\n\n    this._destroyEmptyView();\n\n    this.triggerMethod('before:render:children', this, views);\n\n    const els = this._getBuffer(views);\n\n    this._attachChildren(els, views);\n\n    this.triggerMethod('render:children', this, views);\n  },\n\n  _attachChildren(els, views) {\n    const shouldTriggerAttach = !!this._isAttached;\n\n    views = shouldTriggerAttach ? views : [];\n\n    _.each(views, view => {\n      if (view._isAttached) { return; }\n      triggerMethodOn(view, 'before:attach', view);\n    });\n\n    this.attachHtml(this, els);\n\n    _.each(views, view => {\n      if (view._isAttached) { return; }\n      view._isAttached = true;\n      triggerMethodOn(view, 'attach', view);\n    });\n  },\n\n  // Renders each view in children and creates a fragment buffer from them\n  _getBuffer(views) {\n    const elBuffer = this.createBuffer();\n\n    _.each(views, view => {\n      this._renderChildView(view);\n      this.appendChildren(elBuffer, view.el);\n    });\n\n    return elBuffer;\n  },\n\n  _renderChildView(view) {\n    if (view._isRendered) {\n      return;\n    }\n\n    if (!view.supportsRenderLifecycle) {\n      triggerMethodOn(view, 'before:render', view);\n    }\n\n    view.render();\n\n    if (!view.supportsRenderLifecycle) {\n      view._isRendered = true;\n      triggerMethodOn(view, 'render', view);\n    }\n  },\n\n  // Override this method to do something other than `.append`.\n  // You can attach any HTML at this point including the els.\n  attachHtml(collectionView, els) {\n    this.appendChildren(collectionView.el, els);\n  },\n\n  // Render the child's view and add it to the HTML for the collection view at a given index, based on the current sort\n  addChildView(view, index) {\n    if (!view || view._isDestroyed) {\n      return view;\n    }\n\n    this._addChild(view, index);\n    this._showChildren();\n\n    return view;\n  },\n\n  // Detach a view from the children.  Best used when adding a\n  // childView from `addChildView`\n  detachChildView(view) {\n    this.removeChildView(view, { shouldDetach: true });\n\n    return view;\n  },\n\n  // Remove the child view and destroy it.  Best used when adding a\n  // childView from `addChildView`\n  // The options argument is for internal use only\n  removeChildView(view, options) {\n    if (!view) {\n      return view;\n    }\n\n    this._removeChildView(view, options);\n\n    this._removeChild(view);\n\n    if (this.isEmpty()) {\n      this._showEmptyView();\n    }\n\n    return view;\n  },\n\n  _removeChildViews(views) {\n    _.each(views, _.bind(this._removeChildView, this));\n  },\n\n  _removeChildView(view, {shouldDetach} = {}) {\n    view.off('destroy', this.removeChildView, this);\n\n    if (shouldDetach) {\n      this._detachChildView(view);\n    } else {\n      this._destroyChildView(view);\n    }\n\n    this.stopListening(view);\n  },\n\n  _destroyChildView(view) {\n    if (view._isDestroyed) {\n      return;\n    }\n\n    if (view.destroy) {\n      view.destroy();\n    } else {\n      destroyBackboneView(view);\n    }\n  },\n\n  // called by ViewMixin destroy\n  _removeChildren() {\n    this._destroyChildren();\n    this.emptyRegion.destroy();\n  },\n\n  // Destroy the child views that this collection view is holding on to, if any\n  _destroyChildren() {\n    if (!this.children || !this.children.length) {\n      return;\n    }\n\n    this.triggerMethod('before:destroy:children', this);\n    this.children.each(_.bind(this._removeChildView, this));\n    this.triggerMethod('destroy:children', this);\n  }\n});\n\n_.extend(CollectionView.prototype, ViewMixin);\n\nexport default CollectionView;\n","// Composite View\n// --------------\n\nimport _ from 'underscore';\nimport deprecate from './utils/deprecate';\nimport MarionetteError from './error';\nimport CollectionView from './collection-view';\nimport View from './view';\n\nconst ClassOptions = [\n  'childViewContainer',\n  'template',\n  'templateContext'\n];\n\n// Used for rendering a branch-leaf, hierarchical structure.\n// Extends directly from CollectionView\n// @deprecated\nconst CompositeView = CollectionView.extend({\n\n  // Setting up the inheritance chain which allows changes to\n  // Marionette.CollectionView.prototype.constructor which allows overriding\n  // option to pass '{sort: false}' to prevent the CompositeView from\n  // maintaining the sorted order of the collection.\n  // This will fallback onto appending childView's to the end.\n  constructor(options) {\n    deprecate('CompositeView is deprecated. Convert to View at your earliest convenience');\n\n    this.mergeOptions(options, ClassOptions);\n\n    CollectionView.prototype.constructor.apply(this, arguments);\n  },\n\n  // Configured the initial events that the composite view\n  // binds to. Override this method to prevent the initial\n  // events, or to add your own initial events.\n  _initialEvents() {\n\n    // Bind only after composite view is rendered to avoid adding child views\n    // to nonexistent childViewContainer\n\n    if (this.collection) {\n      this.listenTo(this.collection, 'add', this._onCollectionAdd);\n      this.listenTo(this.collection, 'update', this._onCollectionUpdate);\n      this.listenTo(this.collection, 'reset', this.renderChildren);\n\n      if (this.sort) {\n        this.listenTo(this.collection, 'sort', this._sortViews);\n      }\n    }\n  },\n\n  // Retrieve the `childView` to be used when rendering each of\n  // the items in the collection. The default is to return\n  // `this.childView` or Marionette.CompositeView if no `childView`\n  // has been defined. As happens in CollectionView, `childView` can\n  // be a function (which should return a view class).\n  _getChildView(child) {\n    let childView = this.childView;\n\n    // for CompositeView, if `childView` is not specified, we'll get the same\n    // composite view class rendered for each child in the collection\n    // then check if the `childView` is a view class (the common case)\n    // finally check if it's a function (which we assume that returns a view class)\n    if (!childView) {\n      return this.constructor;\n    }\n\n    childView = this._getView(childView, child);\n\n    if (!childView) {\n      throw new MarionetteError({\n        name: 'InvalidChildViewError',\n        message: '\"childView\" must be a view class or a function that returns a view class'\n      });\n    }\n\n    return childView;\n  },\n\n  // Return the serialized model\n  serializeData() {\n    return this.serializeModel();\n  },\n\n  // Renders the model and the collection.\n  render() {\n    if (this._isDestroyed) { return this; }\n    this._isRendering = true;\n    this.resetChildViewContainer();\n\n    this.triggerMethod('before:render', this);\n\n    this._renderTemplate();\n    this.bindUIElements();\n    this.renderChildren();\n\n    this._isRendering = false;\n    this._isRendered = true;\n    this.triggerMethod('render', this);\n    return this;\n  },\n\n  renderChildren() {\n    if (this._isRendered || this._isRendering) {\n      CollectionView.prototype._renderChildren.call(this);\n    }\n  },\n\n  // You might need to override this if you've overridden attachHtml\n  attachBuffer(compositeView, buffer) {\n    const $container = this.getChildViewContainer(compositeView);\n    this.appendChildren($container, buffer);\n  },\n\n  // Internal method. Append a view to the end of the $el.\n  // Overidden from CollectionView to ensure view is appended to\n  // childViewContainer\n  _insertAfter(childView) {\n    const $container = this.getChildViewContainer(this, childView);\n    this.appendChildren($container, childView.el);\n  },\n\n  // Internal method. Append reordered childView'.\n  // Overidden from CollectionView to ensure reordered views\n  // are appended to childViewContainer\n  _appendReorderedChildren(children) {\n    const $container = this.getChildViewContainer(this);\n    this.appendChildren($container, children);\n  },\n\n  // Internal method to ensure an `$childViewContainer` exists, for the\n  // `attachHtml` method to use.\n  getChildViewContainer(containerView, childView) {\n    if (!!containerView.$childViewContainer) {\n      return containerView.$childViewContainer;\n    }\n\n    let container;\n    const childViewContainer = containerView.childViewContainer;\n    if (childViewContainer) {\n\n      const selector = _.result(containerView, 'childViewContainer');\n\n      if (selector.charAt(0) === '@' && containerView.ui) {\n        container = containerView.ui[selector.substr(4)];\n      } else {\n        container = this.findEls(selector, containerView.$el);\n      }\n\n      if (container.length <= 0) {\n        throw new MarionetteError({\n          name: 'ChildViewContainerMissingError',\n          message: `The specified \"childViewContainer\" was not found: ${containerView.childViewContainer}`\n        });\n      }\n\n    } else {\n      container = containerView.$el;\n    }\n\n    containerView.$childViewContainer = container;\n    return container;\n  },\n\n  // Internal method to reset the `$childViewContainer` on render\n  resetChildViewContainer() {\n    if (this.$childViewContainer) {\n      this.$childViewContainer = undefined;\n    }\n  }\n});\n\n// To prevent duplication but allow the best View organization\n// Certain View methods are mixed directly into the deprecated CompositeView\nconst MixinFromView = _.pick(View.prototype, 'serializeModel', 'getTemplate', '_renderTemplate', '_renderHtml', 'mixinTemplateContext', 'attachElContent');\n_.extend(CompositeView.prototype, MixinFromView);\n\nexport default CompositeView;\n","// Behavior\n// --------\n\n// A Behavior is an isolated set of DOM /\n// user interactions that can be mixed into any View.\n// Behaviors allow you to blackbox View specific interactions\n// into portable logical chunks, keeping your views simple and your code DRY.\n\nimport _ from 'underscore';\nimport deprecate from './utils/deprecate';\nimport getUniqueEventName from './utils/get-unique-event-name';\nimport MarionetteObject from './object';\nimport DelegateEntityEventsMixin from './mixins/delegate-entity-events';\nimport TriggersMixin from './mixins/triggers';\nimport UIMixin from './mixins/ui';\n\nconst ClassOptions = [\n  'collectionEvents',\n  'events',\n  'modelEvents',\n  'triggers',\n  'ui'\n];\n\nconst Behavior = MarionetteObject.extend({\n  cidPrefix: 'mnb',\n\n  constructor(options, view) {\n    // Setup reference to the view.\n    // this comes in handle when a behavior\n    // wants to directly talk up the chain\n    // to the view.\n    this.view = view;\n\n    if (this.defaults) {\n      deprecate('Behavior defaults are deprecated. For similar functionality set options on the Behavior class.');\n    }\n\n    this.defaults = _.clone(_.result(this, 'defaults', {}));\n\n    this._setOptions(this.defaults, options);\n    this.mergeOptions(this.options, ClassOptions);\n\n    // Construct an internal UI hash using\n    // the behaviors UI hash and then the view UI hash.\n    // This allows the user to use UI hash elements\n    // defined in the parent view as well as those\n    // defined in the given behavior.\n    // This order will help the reuse and share of a behavior\n    // between multiple views, while letting a view override a\n    // selector under an UI key.\n    this.ui = _.extend({}, _.result(this, 'ui'), _.result(view, 'ui'));\n\n    MarionetteObject.apply(this, arguments);\n  },\n\n  // proxy behavior $ method to the view\n  // this is useful for doing jquery DOM lookups\n  // scoped to behaviors view.\n  $() {\n    return this.view.$.apply(this.view, arguments);\n  },\n\n  // Stops the behavior from listening to events.\n  // Overrides Object#destroy to prevent additional events from being triggered.\n  destroy() {\n    this.stopListening();\n\n    this.view._removeBehavior(this);\n\n    return this;\n  },\n\n  proxyViewProperties() {\n    this.$el = this.view.$el;\n    this.el = this.view.el;\n\n    return this;\n  },\n\n  bindUIElements() {\n    this._bindUIElements();\n\n    return this;\n  },\n\n  unbindUIElements() {\n    this._unbindUIElements();\n\n    return this;\n  },\n\n  getUI(name) {\n    return this._getUI(name);\n  },\n\n  // Handle `modelEvents`, and `collectionEvents` configuration\n  delegateEntityEvents() {\n    this._delegateEntityEvents(this.view.model, this.view.collection);\n\n    return this;\n  },\n\n  undelegateEntityEvents() {\n    this._undelegateEntityEvents(this.view.model, this.view.collection);\n\n    return this;\n  },\n\n  getEvents() {\n    // Normalize behavior events hash to allow\n    // a user to use the @ui. syntax.\n    const behaviorEvents = this.normalizeUIKeys(_.result(this, 'events'));\n\n    // binds the handler to the behavior and builds a unique eventName\n    return _.reduce(behaviorEvents, (events, behaviorHandler, key) => {\n      if (!_.isFunction(behaviorHandler)) {\n        behaviorHandler = this[behaviorHandler];\n      }\n      if (!behaviorHandler) { return; }\n      key = getUniqueEventName(key);\n      events[key] = _.bind(behaviorHandler, this);\n      return events;\n    }, {});\n  },\n\n  // Internal method to build all trigger handlers for a given behavior\n  getTriggers() {\n    if (!this.triggers) { return; }\n\n    // Normalize behavior triggers hash to allow\n    // a user to use the @ui. syntax.\n    const behaviorTriggers = this.normalizeUIKeys(_.result(this, 'triggers'));\n\n    return this._getViewTriggers(this.view, behaviorTriggers);\n  }\n\n});\n\n_.extend(Behavior.prototype, DelegateEntityEventsMixin, TriggersMixin, UIMixin);\n\nexport default Behavior;\n","// Application\n// -----------\nimport buildRegion from './common/build-region';\nimport MarionetteObject from './object';\nimport Region from './region';\n\nconst ClassOptions = [\n  'region',\n  'regionClass'\n];\n\n// A container for a Marionette application.\nconst Application = MarionetteObject.extend({\n  cidPrefix: 'mna',\n\n  constructor(options) {\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    this._initRegion();\n\n    MarionetteObject.prototype.constructor.apply(this, arguments);\n  },\n\n  regionClass: Region,\n\n  _initRegion() {\n    const region = this.region;\n\n    if (!region) { return; }\n\n    const defaults = {\n      regionClass: this.regionClass\n    };\n\n    this._region = buildRegion(region, defaults);\n  },\n\n  getRegion() {\n    return this._region;\n  },\n\n  showView(view, ...args) {\n    const region = this.getRegion();\n    return region.show(view, ...args);\n  },\n\n  getView() {\n    return this.getRegion().currentView;\n  },\n\n  // kick off all of the application's processes.\n  start(options) {\n    this.triggerMethod('before:start', this, options);\n    this.triggerMethod('start', this, options);\n    return this;\n  }\n\n});\n\nexport default Application;\n","// App Router\n// ----------\n\n// Reduce the boilerplate code of handling route events\n// and then calling a single method on another object,\n// called a controller.\n// Have your routers configured to call the method on\n// your controller, directly.\n//\n// Configure an AppRouter with `appRoutes`.\n//\n// App routers can only take one `controller` object.\n// It is recommended that you divide your controller\n// objects in to smaller pieces of related functionality\n// and have multiple routers / controllers, instead of\n// just one giant router and controller.\n//\n// You can also add standard routes to an AppRouter.\n\nimport Backbone from 'backbone';\nimport _ from 'underscore';\nimport { triggerMethod } from './common/trigger-method';\nimport MarionetteError from './error';\nimport CommonMixin from './mixins/common';\n\nconst ClassOptions = [\n  'appRoutes',\n  'controller'\n];\n\nconst AppRouter = Backbone.Router.extend({\n\n  constructor(options) {\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    Backbone.Router.apply(this, arguments);\n\n    const appRoutes = this.appRoutes;\n    const controller = this._getController();\n    this.processAppRoutes(controller, appRoutes);\n    this.on('route', this._processOnRoute, this);\n  },\n\n  // Similar to route method on a Backbone Router but\n  // method is called on the controller\n  appRoute(route, methodName) {\n    const controller = this._getController();\n    this._addAppRoute(controller, route, methodName);\n    return this;\n  },\n\n  // process the route event and trigger the onRoute\n  // method call, if it exists\n  _processOnRoute(routeName, routeArgs) {\n    // make sure an onRoute before trying to call it\n    if (_.isFunction(this.onRoute)) {\n      // find the path that matches the current route\n      const routePath = _.invert(this.appRoutes)[routeName];\n      this.onRoute(routeName, routePath, routeArgs);\n    }\n  },\n\n  // Internal method to process the `appRoutes` for the\n  // router, and turn them in to routes that trigger the\n  // specified method on the specified `controller`.\n  processAppRoutes(controller, appRoutes) {\n    if (!appRoutes) { return this; }\n\n    const routeNames = _.keys(appRoutes).reverse(); // Backbone requires reverted order of routes\n\n    _.each(routeNames, route => {\n      this._addAppRoute(controller, route, appRoutes[route]);\n    });\n\n    return this;\n  },\n\n  _getController() {\n    return this.controller;\n  },\n\n  _addAppRoute(controller, route, methodName) {\n    const method = controller[methodName];\n\n    if (!method) {\n      throw new MarionetteError(`Method \"${methodName}\" was not found on the controller`);\n    }\n\n    this.route(route, methodName, _.bind(method, controller));\n  },\n\n  triggerMethod: triggerMethod\n});\n\n_.extend(AppRouter.prototype, CommonMixin);\n\nexport default AppRouter;\n","import MarionetteError from '../error';\n\n// Placeholder method to be extended by the user.\n// The method should define the object that stores the behaviors.\n// i.e.\n//\n// ```js\n// Marionette.Behaviors.behaviorsLookup: function() {\n//   return App.Behaviors\n// }\n// ```\nexport default function behaviorsLookup() {\n  throw new MarionetteError({\n    message: 'You must define where your behaviors are stored.',\n    url: 'marionette.behaviors.md#behaviorslookup'\n  });\n}\n","import Backbone from 'backbone';\nimport {version} from '../package.json';\n\nimport proxy from './utils/proxy';\nimport extend from './utils/extend';\nimport deprecate from './utils/deprecate';\n\nimport isNodeAttached from './common/is-node-attached';\nimport mergeOptions from './common/merge-options';\nimport getOption from './common/get-option';\nimport normalizeMethods from './common/normalize-methods';\nimport monitorViewEvents from './common/monitor-view-events';\n\nimport {\n  bindEvents,\n  unbindEvents\n} from './common/bind-events';\n\nimport {\n  bindRequests,\n  unbindRequests\n} from './common/bind-requests';\n\nimport {\n  triggerMethod,\n  triggerMethodOn\n} from './common/trigger-method';\n\n\nimport MarionetteObject from './object';\nimport TemplateCache from './template-cache';\nimport View from './view';\nimport CollectionView from './collection-view';\nimport NextCollectionView from './next-collection-view';\nimport CompositeView from './composite-view';\nimport Behavior from './behavior';\nimport Region from './region';\nimport Application from './application';\nimport AppRouter from './app-router';\nimport MarionetteError from './error';\n\nimport behaviorsLookup from './config/behaviors-lookup';\nimport Renderer from './config/renderer';\n\nimport {\n  FEATURES,\n  isEnabled,\n  setEnabled\n} from './config/features';\n\nconst previousMarionette = Backbone.Marionette;\nconst Marionette = Backbone.Marionette = {};\n\n// This allows you to run multiple instances of Marionette on the same\n// webapp. After loading the new version, call `noConflict()` to\n// get a reference to it. At the same time the old version will be\n// returned to Backbone.Marionette.\nMarionette.noConflict = function() {\n  Backbone.Marionette = previousMarionette;\n  return this;\n};\n\n// Utilities\nMarionette.bindEvents = proxy(bindEvents);\nMarionette.unbindEvents = proxy(unbindEvents);\nMarionette.bindRequests = proxy(bindRequests);\nMarionette.unbindRequests = proxy(unbindRequests);\nMarionette.mergeOptions = proxy(mergeOptions);\nMarionette.getOption = proxy(getOption);\nMarionette.normalizeMethods = proxy(normalizeMethods);\nMarionette.extend = extend;\nMarionette.isNodeAttached = isNodeAttached;\nMarionette.deprecate = deprecate;\nMarionette.triggerMethod = proxy(triggerMethod);\nMarionette.triggerMethodOn = triggerMethodOn;\nMarionette.isEnabled = isEnabled;\nMarionette.setEnabled = setEnabled;\nMarionette.monitorViewEvents = monitorViewEvents;\n\nMarionette.Behaviors = {};\nMarionette.Behaviors.behaviorsLookup = behaviorsLookup;\n\n// Classes\nMarionette.Application = Application;\nMarionette.AppRouter = AppRouter;\nMarionette.Renderer = Renderer;\nMarionette.TemplateCache = TemplateCache;\nMarionette.View = View;\nMarionette.CollectionView = CollectionView;\nMarionette.NextCollectionView = NextCollectionView;\nMarionette.CompositeView = CompositeView;\nMarionette.Behavior = Behavior;\nMarionette.Region = Region;\nMarionette.Error = MarionetteError;\nMarionette.Object = MarionetteObject;\n\n// Configuration\nMarionette.DEV_MODE = false;\nMarionette.FEATURES = FEATURES;\nMarionette.VERSION = version;\n\nexport default Marionette;\n"],"names":["proxy","method","context","args","apply","extend","Backbone","Model","deprecate","message","test","_","isObject","prev","next","url","Marionette","DEV_MODE","undefined","_cache","_warn","_console","console","warn","log","noop","arguments","isNodeAttached","el","document","documentElement","contains","parentNode","mergeOptions","options","keys","each","key","option","getOption","optionName","normalizeMethods","hash","reduce","normalizedHash","name","isFunction","splitter","getEventName","match","prefix","eventName","toUpperCase","getOnMethodName","memoize","event","replace","triggerMethod","methodName","call","result","trigger","triggerMethodOn","triggerMethodChildren","view","shouldTrigger","_getImmediateChildren","child","shouldTriggerAttach","_isAttached","shouldAttach","shouldTriggerDetach","shouldDetach","triggerDOMRefresh","_isRendered","triggerDOMRemove","handleBeforeAttach","handleAttach","handleBeforeDetach","handleDetach","handleBeforeRender","handleRender","monitorViewEvents","_areViewEventsMonitored","on","errorProps","MarionetteError","Error","version","error","pick","captureStackTrace","urlRoot","bindFromStrings","target","entity","evt","methods","actionName","methodNames","split","iterateEvents","bindings","isString","bindEvents","unbindEvents","iterateReplies","channel","normalizedRadioRequests","bindRequests","unbindRequests","setOptions","_setOptions","channelName","Radio","_channel","radioEvents","radioRequests","_destroyRadio","stopReplying","ClassOptions","MarionetteObject","cid","uniqueId","cidPrefix","_initRadio","initialize","prototype","Events","CommonMixin","RadioMixin","_isDestroyed","stopListening","createDocumentFragment","children","$","append","sibling","before","newEl","oldEl","parent","replaceChild","contents","detach","html","remove","selector","TemplateCache","templateId","cachedTemplate","templateCaches","load","i","length","DomMixin","compiledTemplate","template","loadTemplate","compileTemplate","$template","findEls","rawTemplate","invokeMap","invoke","getBehaviorClass","behaviorClass","Behaviors","behaviorsLookup","parseBehaviors","behaviors","chain","map","BehaviorClass","_options","behavior","nestedBehaviors","concat","flatten","value","_behaviors","_getBehaviors","triggers","_invoke","memo","_triggers","events","_events","without","model","collection","_undelegateEntityEvents","modelEvents","collectionEvents","delegateEventSplitter","uniqueName","join","getUniqueEventName","FEATURES","isEnabled","setEnabled","state","buildViewTrigger","triggerDef","shouldPreventDefault","preventDefault","shouldStopPropagation","stopPropagation","normalizeUIKeys","ui","val","normalizedKey","normalizeUIString","uiString","r","slice","normalizeUIValues","properties","isArray","property","propertyVal","uiBindings","_getUIBindings","_uiBindings","_ui","$el","ViewMixin","eventsArg","_proxyBehaviorViewProperties","_buildEventProxies","viewEvents","_getEvents","combinedEvents","_getBehaviorEvents","_getBehaviorTriggers","getTriggers","View","delegateEvents","_getViewTriggers","_delegateEntityEvents","_delegateBehaviorEntityEvents","_undelegateBehaviorEntityEvents","unbindUIElements","removeEl","_removeChildren","_destroyBehaviors","_bindUIElements","_bindBehaviorUIElements","_unbindUIElements","_unbindBehaviorUIElements","_getUI","ret","_triggerEventOnBehaviors","_childViewEvents","_childViewTriggers","listenTo","_childViewEventHandler","childViewEvents","childViewTriggers","childEventName","BehaviorsMixin","DelegateEntityEventsMixin","TriggersMixin","UIMixin","destroyBackboneView","supportsDestroyLifecycle","Region","_initEl","getEl","_ensureElement","_getView","currentView","_isSwappingView","empty","_setupChildView","_renderView","_attachView","_proxyChildViewEvents","_empty","parentView","_parentView","supportsRenderLifecycle","render","shouldReplaceEl","replaceElement","_replaceEl","attachHtml","allowMissingEl","viewOptions","_getViewOptions","_restoreEl","replaceEl","_isReplaced","_detachView","appendChildren","detachHtml","shouldDestroy","preventDestroy","off","removeView","_stopChildViewEvents","destroy","destroyView","shouldRestoreEl","detachContents","reset","_name","_removeReferences","definition","defaults","buildRegionFromDefinition","opts","buildRegionFromObject","regionClass","RegionClass","omit","regions","_regions","addRegions","isEmpty","_addRegions","regionDefinitions","partial","buildRegion","_addRegion","region","_removeRegion","_getRegions","bind","getRegions","getRegion","clone","show","detachView","Renderer","data","templateFunc","get","_initBehaviors","_initRegions","Array","constructor","delegateEntityEvents","serializeModel","serializeCollection","attributes","hasEl","setElement","bindUIElements","_reInitRegions","_renderTemplate","getTemplate","mixinTemplateContext","serializeData","_renderHtml","attachElContent","templateContext","setInnerContent","removeRegions","compact","renderer","RegionsMixin","emulateCollection","object","listProperty","list","values","toArray","Container","views","_views","_indexByModel","_indexByCustom","_updateLength","add","customIndex","_add","viewCid","findByModelCid","modelCid","findByCid","index","_remove","some","size","CollectionView","once","_initialEvents","_initChildViewStorage","_bufferedChildren","_isBuffering","triggerOnChildren","attachBuffer","_createBuffer","_onCollectionAdd","_onCollectionUpdate","sort","_sortViews","at","indexOf","filter","_filteredSortedModels","_shouldAddChild","_destroyEmptyView","_addChild","changes","_removeChildModels","removed","models","removedViews","_getRemovedViews","_updateIndices","_showEmptyView","removingViews","findByModel","_removeChildView","push","_renderChildren","preventRender","canBeRendered","filterChanged","shouldRender","previousModels","_applyModelDeltas","setFilter","currentIds","addedChildNotExists","removeModels","prevModel","_showingEmptyView","anyModelsAdded","filteredOutModels","elsToReorder","viewEls","_index","_appendReorderedChildren","reorderOnSort","reorder","orderChanged","find","item","resortView","_destroyChildren","processedModels","_startBuffering","_showCollection","_endBuffering","ChildView","_getChildView","childViewOptions","_getChildViewOptions","buildChildView","addedAt","viewComparator","getViewComparator","Math","min","max","addedModel","_sortModelsBy","splice","_filterModels","comparator","sortBy","EmptyView","_getEmptyView","emptyViewOptions","_emptyViewIndex","addChildView","emptyView","childView","_createView","increment","laterView","ChildViewClass","collectionView","buffer","elBuffer","createBuffer","b","_insertBefore","_insertAfter","findPosition","beforeEl","ChildViewContainer","_init","stringComparator","_viewsByCid","_sortBy","sortedViews","_set","findIndexByView","_initEmptyRegion","emptyRegion","_onCollectionSort","_onCollectionReset","sortWithCollection","hasAddedModel","_addChildModels","added","_detachChildren","_showChildren","_removeChildViews","_removeChildModel","_removeChild","_addChildModel","_createChildView","removeChildView","_sortChildren","allViewsFiltered","_getEmptyViewOptions","hasView","getComparator","_sort","comparatorChanged","shouldSort","setComparator","_viewComparator","filteredViews","_filterChildren","viewFilter","_getFilter","partition","getFilter","matcher","matches","detachingViews","_detachChildView","detachEl","els","_getBuffer","_attachChildren","_renderChildView","_destroyChildView","CompositeView","renderChildren","_isRendering","resetChildViewContainer","compositeView","$container","getChildViewContainer","containerView","$childViewContainer","container","childViewContainer","charAt","substr","MixinFromView","Behavior","_removeBehavior","behaviorEvents","behaviorHandler","behaviorTriggers","Application","_initRegion","_region","AppRouter","Router","appRoutes","controller","_getController","processAppRoutes","_processOnRoute","route","_addAppRoute","routeName","routeArgs","onRoute","routePath","invert","routeNames","reverse","previousMarionette","noConflict","NextCollectionView","Object","VERSION"],"mappings":"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"}