{"version":3,"file":"24.0076a7f1.js","mappings":"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","sources":["webpack://mucklet-client/./node_modules/modapp-base-component/es/Context.js","webpack://mucklet-client/./node_modules/modapp-base-component/es/Html.js","webpack://mucklet-client/./node_modules/modapp-base-component/es/Input.js","webpack://mucklet-client/./node_modules/modapp-base-component/es/Textarea.js","webpack://mucklet-client/./node_modules/modapp-base-component/es/Transition.js","webpack://mucklet-client/./node_modules/modapp-resource/es/Collection.js","webpack://mucklet-client/./node_modules/modapp-resource/es/CollectionWrapper.js","webpack://mucklet-client/./node_modules/modapp-resource/es/CollectionToModel.js","webpack://mucklet-client/./node_modules/modapp-resource/es/ModifyModel.js","webpack://mucklet-client/./node_modules/modapp-resource/es/ModelToCollection.js","webpack://mucklet-client/./node_modules/modapp-resource/es/ModelWrapper.js","webpack://mucklet-client/./node_modules/modapp-utils/elem.js","webpack://mucklet-client/./node_modules/core-js/internals/array-for-each.js","webpack://mucklet-client/./node_modules/core-js/modules/es.array.map.js","webpack://mucklet-client/./node_modules/core-js/modules/es.string.iterator.js","webpack://mucklet-client/./node_modules/core-js/modules/web.dom-collections.for-each.js"],"sourcesContent":["function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * A component wrapper that creates a context on render, which can be properly\n * disposed on unrender.\n */\nvar Context = /*#__PURE__*/function () {\n  /**\n   * Creates an instance of Context\n   * @param {function} ctxCreate Context create callback that should return the context object: function(this) -> ctx\n   * @param {function} ctxDispose Context dispose callback that gets the context object to dispose: function(ctx, this)\n   * @param {function} componentFactory Component factory callback that gets the context object and returns a component: function(ctx, this)\n   */\n  function Context(ctxCreate, ctxDispose, componentFactory) {\n    _classCallCheck(this, Context);\n    this._create = ctxCreate;\n    this._dispose = ctxDispose;\n    this._factory = componentFactory;\n    this._ctx = null;\n    this._component = null;\n    this._rendered = false;\n  }\n\n  /**\n   * Gets the current context.\n   * @returns {?object} Current context or null if the Context isn't rendered.\n   */\n  _createClass(Context, [{\n    key: \"getContext\",\n    value: function getContext() {\n      return this._ctx;\n    }\n\n    /**\n     * Gets the currently rendered component.\n     * @returns {?Component} Current component or null if the component isn't rendered.\n     */\n  }, {\n    key: \"getComponent\",\n    value: function getComponent() {\n      return this._component;\n    }\n  }, {\n    key: \"render\",\n    value: function render(el) {\n      this._ctx = this._create && this._create(this) || null;\n      this._component = this._factory && this._factory(this._ctx, this) || null;\n      this._rendered = true;\n      if (!this._component) {\n        return null;\n      }\n      return this._component.render(el);\n    }\n  }, {\n    key: \"unrender\",\n    value: function unrender() {\n      if (this._rendered) {\n        this._rendered = false;\n        if (this._component) {\n          this._component.unrender();\n        }\n        this._component = null;\n        if (this._dispose) {\n          this._dispose(this._ctx, this);\n        }\n        this._ctx = null;\n      }\n    }\n  }]);\n  return Context;\n}();\nexport default Context;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport { anim } from 'modapp-utils';\nimport RootElem from './RootElem';\nimport { translate, onLocaleUpdate, offLocaleUpdate } from './utils/l10n';\n\n/**\n * A html component\n */\nvar Html = /*#__PURE__*/function (_RootElem) {\n  _inherits(Html, _RootElem);\n  var _super = _createSuper(Html);\n  /**\n   * Creates an instance of Html\n   * @param {string|LocaleString} html HTML string\n   * @param {object} [opt] Optional parameters.\n   * @param {string} [opt.tagName] Tag name (eg. 'span') for the element. Defaults to 'div'.\n   * @param {string} [opt.className] Class name\n   * @param {object} [opt.attributes] Key/value attributes object\n   * @param {object} [opt.events] Key/value events object, where the key is the event name, and value is the callback.\n   */\n  function Html(html, opt) {\n    var _this;\n    _classCallCheck(this, Html);\n    opt = Object.assign({\n      tagName: 'div'\n    }, opt);\n    _this = _super.call(this, opt.tagName, opt);\n    _this.html = html || \"\";\n    _this.animId = null;\n    _this.rendered = null;\n\n    // Bind callbacks\n    _this._handleChange = _this._handleChange.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  /**\n   * Sets the html\n   * @param {string} html HTML string\n   * @returns {this}\n   */\n  _createClass(Html, [{\n    key: \"setHtml\",\n    value: function setHtml(html) {\n      html = html || \"\";\n      if (this.html !== html) {\n        var tmp = this.html;\n        this.html = html;\n        if (_get(_getPrototypeOf(Html.prototype), \"getElement\", this).call(this)) {\n          offLocaleUpdate(tmp);\n          this._handleChange();\n          onLocaleUpdate(this.html);\n        }\n      }\n      return this;\n    }\n  }, {\n    key: \"render\",\n    value: function render(el) {\n      var nodeEl = _get(_getPrototypeOf(Html.prototype), \"render\", this).call(this, el);\n      this.rendered = translate(this.html);\n      nodeEl.innerHTML = this.rendered;\n      onLocaleUpdate(this.html, this._handleChange);\n      return nodeEl;\n    }\n  }, {\n    key: \"unrender\",\n    value: function unrender() {\n      offLocaleUpdate(this.html, this._handleChange);\n      anim.stop(this.animId);\n      _get(_getPrototypeOf(Html.prototype), \"unrender\", this).call(this);\n      this.rendered = null;\n    }\n  }, {\n    key: \"_handleChange\",\n    value: function _handleChange() {\n      var _this2 = this;\n      var el = _get(_getPrototypeOf(Html.prototype), \"getElement\", this).call(this);\n      if (!el) {\n        return;\n      }\n      anim.stop(this.animId);\n      var next = translate(this.html);\n      if (this.rendered === next) {\n        this.animId = anim.fade(el, 1);\n        return;\n      }\n      this.animId = anim.fade(el, 0, {\n        callback: function callback() {\n          var el = _get(_getPrototypeOf(Html.prototype), \"getElement\", _this2).call(_this2);\n          if (!el) {\n            return;\n          }\n          _this2.rendered = next;\n          el.innerHTML = next;\n          _this2.animId = anim.fade(el, 1);\n        }\n      });\n    }\n  }]);\n  return Html;\n}(RootElem);\nexport default Html;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport RootElem from './RootElem';\n\n/**\n * A input component\n */\nvar Input = /*#__PURE__*/function (_RootElem) {\n  _inherits(Input, _RootElem);\n  var _super = _createSuper(Input);\n  /**\n   * Creates an instance of Input\n   * @param {string} value Initial value.\n   * @param {object} [opt] Optional parameters.\n   * @param {string} [opt.className] Class name\n   * @param {object} [opt.attributes] Key/value attributes object\n   * @param {object} [opt.events] Key/value events object, where the key is the event name, and value is the callback.\n   */\n  function Input(value, opt) {\n    _classCallCheck(this, Input);\n    opt = Object.assign({\n      attributes: null,\n      properties: null\n    }, opt);\n    opt.attributes = Object.assign({\n      type: 'text'\n    }, opt.attributes, {\n      value: value\n    });\n    opt.properties = Object.assign({}, opt.properties, {\n      value: value\n    });\n    return _super.call(this, 'input', opt);\n  }\n\n  /**\n      * Gets the value\n   * @returns {string}\n     */\n  _createClass(Input, [{\n    key: \"getValue\",\n    value: function getValue() {\n      return this.getProperty('value');\n    }\n\n    /**\n     * Sets the value\n     * @param {string} value Value\n     * @returns {this}\n     */\n  }, {\n    key: \"setValue\",\n    value: function setValue(value) {\n      this.setProperty('value', value);\n      return this;\n    }\n  }]);\n  return Input;\n}(RootElem);\nexport default Input;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport RootElem from './RootElem';\n\n/**\n * A textarea component\n */\nvar Textarea = /*#__PURE__*/function (_RootElem) {\n  _inherits(Textarea, _RootElem);\n  var _super = _createSuper(Textarea);\n  /**\n   * Creates an instance of Textarea\n   * @param {string} value Initial value.\n   * @param {object} [opt] Optional parameters.\n   * @param {string} [opt.className] Class name\n   * @param {object} [opt.attributes] Key/value attributes object\n   * @param {object} [opt.events] Key/value events object, where the key is the event name, and value is the callback.\n   */\n  function Textarea(value, opt) {\n    var _this;\n    _classCallCheck(this, Textarea);\n    _this = _super.call(this, 'textarea', opt);\n    _this.value = value || \"\";\n    _this.rendered = null;\n    return _this;\n  }\n\n  /**\n   * Gets the value\n   * @returns {string}\n   */\n  _createClass(Textarea, [{\n    key: \"getValue\",\n    value: function getValue() {\n      var el = _get(_getPrototypeOf(Textarea.prototype), \"getElement\", this).call(this);\n      return el ? el.value : this.value;\n    }\n\n    /**\n     * Sets the value\n     * @param {string} value Value\n     * @returns {this}\n     */\n  }, {\n    key: \"setValue\",\n    value: function setValue(value) {\n      value = value || \"\";\n      var el = _get(_getPrototypeOf(Textarea.prototype), \"getElement\", this).call(this);\n      if (el) {\n        el.value = value;\n      } else {\n        this.value = value;\n      }\n      return this;\n    }\n  }, {\n    key: \"render\",\n    value: function render(el) {\n      var nodeEl = _get(_getPrototypeOf(Textarea.prototype), \"render\", this).call(this, el);\n      nodeEl.value = this.value;\n      return nodeEl;\n    }\n  }, {\n    key: \"unrender\",\n    value: function unrender() {\n      var el = _get(_getPrototypeOf(Textarea.prototype), \"getElement\", this).call(this);\n      if (el) {\n        _get(_getPrototypeOf(Textarea.prototype), \"unrender\", this).call(this);\n        this.value = el.value;\n        this.rendered = null;\n      }\n    }\n  }]);\n  return Textarea;\n}(RootElem);\nexport default Textarea;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { anim, elem } from 'modapp-utils';\n\n/**\n * A component used for doing transition between one component to another.\n * @module component/Transition\n */\nvar Transition = /*#__PURE__*/function () {\n  /**\n   * Creates a Transition\n   * @constructor\n   * @alias module:component/Transition\n   * @param {object} [opt] Optional parameters\n   * @param {string} [opt.className] Classname.\n   * @param {number} [opt.distance] Swipe distance in pixels. Defaults to 64.\n   * @param {number} [opt.duration] Swipe duration in milliseconds. Defaults to 150.\n   * @param {string} [opt.mode] Transition container mode. Defaults to 'flex'.\n   */\n  function Transition() {\n    var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _classCallCheck(this, Transition);\n    this.opt = Object.assign({\n      mode: 'flex'\n    }, opt);\n    this.div = null;\n    this.animId = null;\n    this.current = null;\n    this.rendered = null;\n    this.contDiv = null;\n  }\n  _createClass(Transition, [{\n    key: \"id\",\n    get: function get() {\n      return this.current ? this.current.id : undefined;\n    }\n  }, {\n    key: \"render\",\n    value: function render(el) {\n      if (this.div) throw \"Component already rendered\";\n      this.div = elem.create('div', {\n        className: this.opt.className,\n        attributes: {\n          style: 'position: relative; overflow: hidden;' + (this.opt.mode == 'flex' ? ' flex: 1 1 0px;' : '')\n        }\n      });\n      elem.append(el, this.div);\n      this._renderComponent();\n      return this.div;\n    }\n  }, {\n    key: \"unrender\",\n    value: function unrender() {\n      if (!this.div) return;\n      anim.stop(this.animId);\n      this.animId = null;\n      this._unrenderComponent();\n      elem.remove(this.div);\n      this.div = null;\n    }\n\n    /**\n     * Get the current component\n     * @returns {object}\n     */\n  }, {\n    key: \"getComponent\",\n    value: function getComponent() {\n      return this.current;\n    }\n\n    /**\n     * Fade to a new component\n     * @param {object} component The component to fade to\n     * @returns {this}\n     */\n  }, {\n    key: \"fade\",\n    value: function fade(component) {\n      this._setComponent(component, 0);\n      return this;\n    }\n\n    /**\n     * Slide left to a new component\n     * @param {object} component The component to slide to\n     * @returns {this}\n     */\n  }, {\n    key: \"slideLeft\",\n    value: function slideLeft(component) {\n      this._setComponent(component, -1);\n      return this;\n    }\n\n    /**\n     * Slide right to a new component\n     * @param {object} component The component to slide to\n     * @returns {this}\n     */\n  }, {\n    key: \"slideRight\",\n    value: function slideRight(component) {\n      this._setComponent(component, 1);\n      return this;\n    }\n\n    /**\n     * Set a new component\n     * @param {object} component The component to use\n     * @returns {this}\n     */\n  }, {\n    key: \"set\",\n    value: function set(component) {\n      component = component || null;\n\n      // Is the component already current?\n      if (this._isEqual(this.current, component)) return this;\n      this.current = component;\n      if (!this.div) return this;\n      this.animId = anim.stop(this.animId);\n\n      // Is the component already rendered?\n      if (this._isEqual(this.rendered, component)) {\n        this.contDiv.style.opacity = '';\n        this.contDiv.style.left = '';\n      } else {\n        // Unrender previously rendered component\n        this._unrenderComponent();\n        // Render the current component\n        this._renderComponent();\n      }\n      return this;\n    }\n  }, {\n    key: \"_setComponent\",\n    value: function _setComponent(component, direction) {\n      var _this = this;\n      component = component || null;\n\n      // Is the component already current?\n      if (this._isEqual(this.current, component)) return;\n      this.current = component;\n      if (!this.div) return;\n      this.animId = anim.stop(this.animId);\n\n      // Check if the rendered page matches the one we want\n      if (this._isEqual(this.rendered, this.current)) {\n        // Swipe it back in from current state\n        this.animId = anim.swipeIn(this.contDiv, direction, {\n          reset: false,\n          callback: function callback() {\n            return _this.animId = null;\n          },\n          duration: this.opt.duration,\n          distance: this.opt.distance\n        });\n        return;\n      }\n\n      // No rendered component. We can just render the new one.\n      if (!this.rendered) {\n        this._renderComponent(direction);\n        return;\n      }\n\n      // Unrender the currently rendered tab\n      this.animId = anim.swipeOut(this.contDiv, direction, {\n        reset: false,\n        callback: function callback() {\n          _this._unrenderComponent();\n          _this._renderComponent(direction);\n        },\n        duration: this.opt.duration,\n        distance: this.opt.distance\n      });\n    }\n  }, {\n    key: \"_isEqual\",\n    value: function _isEqual(componentA, componentB) {\n      if (componentA === componentB) return true;\n      if (!componentA || !componentB) return false;\n      if (!componentA.hasOwnProperty('id') || !componentB.hasOwnProperty('id')) return false;\n      return componentA.id === componentB.id;\n    }\n  }, {\n    key: \"_unrenderComponent\",\n    value: function _unrenderComponent() {\n      if (!this.rendered) return;\n      if (this.rendered.unrender) {\n        this.rendered.unrender();\n      }\n      this.contDiv = null;\n      this.rendered = null;\n      elem.empty(this.div);\n    }\n  }, {\n    key: \"_renderComponent\",\n    value: function _renderComponent(direction) {\n      var _this2 = this;\n      if (!this.current) return;\n\n      // Create container div in which content will be rendered\n      var div = elem.append(this.div, elem.create('div', {\n        attributes: {\n          style: 'width: 100%; height: 100%; position: relative; overflow: auto;'\n        }\n      }));\n      this.current.render(div);\n      this.rendered = this.current;\n      this.contDiv = div;\n      if (typeof direction == 'number') {\n        this.animId = anim.swipeIn(this.contDiv, direction, {\n          callback: function callback() {\n            return _this2.animId = null;\n          },\n          duration: this.opt.duration,\n          distance: this.opt.distance\n        });\n      }\n    }\n  }]);\n  return Transition;\n}();\nexport default Transition;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport SortedMap from './SortedMap';\nimport eventBus from 'modapp-eventbus';\nimport { obj } from 'modapp-utils';\n\n/**\n * Collection is a generic data collection.\n * @implements {module:modapp~Collection}\n */\nvar Collection = /*#__PURE__*/function (_Symbol$iterator) {\n  /**\n   * Creates a Collection instance\n   * @param {object} [opt] Optional settings.\n   * @param {Array.<object>} [opt.data] Collection data array.\n   * @param {function} [opt.compare] Compare function for sort order. Defaults to insert order.\n   * @param {function} [opt.modelFactory] Model factory function. Defaults to using added objects as is.\n   * @param {function} [opt.idAttribute] Id attribute callback function. Defaults to returning the object.id property.\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'collection'.\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   */\n  function Collection(opt) {\n    _classCallCheck(this, Collection);\n    opt = obj.copy(opt, {\n      compare: {\n        type: '?function'\n      },\n      modelFactory: {\n        type: '?function'\n      },\n      idAttribute: {\n        type: '?function',\n        \"default\": function _default(m) {\n          return m.id;\n        }\n      },\n      data: {\n        type: '?object'\n      },\n      namespace: {\n        type: 'string',\n        \"default\": 'collection'\n      },\n      eventBus: {\n        type: 'object',\n        \"default\": eventBus\n      }\n    });\n    this._modelFactory = opt.modelFactory;\n    this._idAttribute = opt.idAttribute;\n    this._namespace = opt.namespace;\n    this._eventBus = opt.eventBus;\n    this._map = opt.idAttribute ? new SortedMap(opt.compare) : [];\n\n    // Populate map with initial data\n    if (opt.data) {\n      var _iterator = _createForOfIteratorHelper(opt.data),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var item = _step.value;\n          this._addItem(item, false);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n  }\n\n  /**\n   * Attach an event handler function for one or more instance events.\n   * Available events are 'add', 'remove', and 'move'.\n   * @param {?string} events One or more space-separated events. Null means any event.\n   * @param {EventBus~eventCallback} [handler] A function to execute when the event is emitted.\n   * @returns {this}\n   */\n  _createClass(Collection, [{\n    key: \"on\",\n    value: function on(events, handler) {\n      this._eventBus.on(this, events, handler, this._namespace);\n      return this;\n    }\n\n    /**\n    * Remove an instance event handler.\n    * Available events are 'add', 'remove', and 'move'.\n    * @param {?string} events One or more space-separated events. Null means any event.\n    * @param {EventBus~eventCallback} [handler] An option handler function. The handler will only be remove if it is the same handler.\n    * @returns {this}\n    */\n  }, {\n    key: \"off\",\n    value: function off(events, handler) {\n      this._eventBus.off(this, events, handler, this._namespace);\n      return this;\n    }\n\n    /**\n     * Add an item to the collection.\n     * @param {*} item Item to add\n     * @param {idx} [idx] Index value of where to insert the item. Ignored if the collection has a compare function.\n     * @returns {number} Index value of where the item was inserted in the list\n     */\n  }, {\n    key: \"add\",\n    value: function add(item, idx) {\n      return this._addItem(item, true, idx);\n    }\n\n    /**\n     * Remove an item from the collection.\n     * @param {string} id Id of the item.\n     * @returns {number} Order index of the item before removal. -1 if the item id doesn't exist\n     */\n  }, {\n    key: \"remove\",\n    value: function remove(id) {\n      if (!this._idAttribute) {\n        throw new Error(\"No id attribute set.\");\n      }\n      var item = this.get(id);\n      if (!item) return -1;\n      var idx = this._map.remove(id);\n\n      // Emit event if an item was removed\n      if (idx >= 0) {\n        this._eventBus.emit(this, this._namespace + '.remove', {\n          item: item,\n          idx: idx\n        });\n      }\n      return idx;\n    }\n\n    /**\n     * Remove an item at a given index.\n     * @param {*} idx Index value of the item to remove.\n     * @returns {*} Removed item.\n     */\n  }, {\n    key: \"removeAtIndex\",\n    value: function removeAtIndex(idx) {\n      if (idx < 0 || idx >= this._map.length) {\n        throw new Error(\"Index out of bounds.\");\n      }\n      var item = this._map[idx];\n      if (this._idAttribute) {\n        this._map.remove(this._idAttribute(item));\n      } else {\n        this._map.splice(idx, 1);\n      }\n      this._eventBus.emit(this, this._namespace + '.remove', {\n        item: item,\n        idx: idx\n      });\n      return item;\n    }\n\n    /**\n     * Get an item from the collection by id\n     * @param {string} id Id of the item\n     * @returns {*} Stored item. Undefined if key doesn't exist\n     */\n  }, {\n    key: \"get\",\n    value: function get(id) {\n      if (!this._idAttribute) {\n        throw new Error(\"No id attribute set.\");\n      }\n      return this._map.get(id);\n    }\n\n    /**\n     * Move an item within the collection.\n     * Invalid if the collection has a compare function.\n     * @param {string} id Id of the item\n     * @param {*} idx Index to move the item to\n     * returns {number} Order index of the item before moving. -1 if the item id doesn't exist.\n     */\n  }, {\n    key: \"move\",\n    value: function move(id, idx) {\n      if (this.compare) throw \"Cannot use move in list with compare\";\n      throw \"Not implemented\";\n    }\n\n    /**\n     * Retrieves the order index of an item.\n     * @param {string|object} item Item or id of the item\n     * @returns {number} Order index of the item. -1 if the item id doesn't exist.\n     */\n  }, {\n    key: \"indexOf\",\n    value: function indexOf(item) {\n      if (typeof item === 'string') {\n        item = this._map.get(item);\n        if (!item) {\n          return -1;\n        }\n      }\n      return this._map.indexOf(item);\n    }\n  }, {\n    key: \"atIndex\",\n    value: function atIndex(idx) {\n      return this._map[idx];\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this._map.length;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return this._map.slice();\n    }\n  }, {\n    key: \"_addItem\",\n    value: function _addItem(item, emit, idx) {\n      if (this._modelFactory) {\n        item = this._modelFactory(item);\n      }\n      if (this._idAttribute) {\n        idx = this._map.add(this._idAttribute(item), item, idx);\n      } else {\n        if (typeof idx != 'number') {\n          idx = this._map.length;\n        } else if (idx < 0 || idx > this._map.length) {\n          throw new Error(\"Index out of bounds.\");\n        }\n        this._map.splice(idx, 0, item);\n      }\n      if (emit) {\n        this._eventBus.emit(this, this._namespace + '.add', {\n          item: item,\n          idx: idx\n        });\n      }\n      return idx;\n    }\n  }, {\n    key: _Symbol$iterator,\n    value: function value() {\n      var i = 0,\n        a = this._map,\n        l = a.length;\n      return {\n        next: function next() {\n          return {\n            value: a[i++],\n            done: i > l\n          };\n        }\n      };\n    }\n  }]);\n  return Collection;\n}(Symbol.iterator);\nexport default Collection;\nexport function sortOrderCompare(a, b) {\n  return a.sortOrder - b.sortOrder;\n}\n;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport eventBus from 'modapp-eventbus';\nimport { array, obj } from 'modapp-utils';\nimport { toArray, patchDiff } from './utils';\n\n/**\n * A wrapper for a {@link module:modapp~Collection}, exposing the underlaying\n * data but can provide a different sort order, mapping of items, filtering of\n * items, or slicing of the collection. It will transparently propagate emitted\n * add and remove events.\n * @implements {module:modapp~Collection}\n */\nvar CollectionWrapper = /*#__PURE__*/function (_Symbol$iterator) {\n  /**\n   * Creates an CollectionWrapper instance.\n   * @param {object} collection Collection object to wrap.\n   * @param {object} [opt] Optional parameters.\n   * @param {function} [opt.map] Model map callback. If not provided, item objects will be stored as is.\n   * @param {function} [opt.filter] Model filter callback. Parameter is a item of the underlying collection.\n   * @param {number} [opt.begin] Zero-based index at which to begin extraction, similar to Array.slice.\n   * @param {?number} [opt.end] Zero-based index before which to end extraction, similar to Array.slice. Null extracts until the end of the collection.\n   * @param {function} [opt.compare] Sort compare function.\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'collectionWrapper'.\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   * @param {?number} [opt.autoDispose] Milliseconds until dispose is called after the number of listeners reaches zero. Default is never.\n   */\n  function CollectionWrapper(collection) {\n    var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, CollectionWrapper);\n    this._collection = collection || null;\n    obj.update(this, opt, {\n      map: {\n        type: '?function',\n        property: '_map'\n      },\n      filter: {\n        type: '?function',\n        property: '_filter'\n      },\n      begin: {\n        type: 'number',\n        \"default\": 0,\n        property: '_begin'\n      },\n      end: {\n        type: '?number',\n        property: '_end'\n      },\n      compare: {\n        type: '?function',\n        property: '_compare'\n      },\n      namespace: {\n        type: 'string',\n        \"default\": 'collectionWrapper',\n        property: '_namespace'\n      },\n      eventBus: {\n        type: 'object',\n        \"default\": eventBus,\n        property: '_eventBus'\n      },\n      autoDispose: {\n        type: '?number',\n        property: '_autoDispose'\n      }\n    });\n    if (this._map) {\n      this._weakMap = new WeakMap();\n    }\n\n    // Bind callbacks\n    this._onAdd = this._onAdd.bind(this);\n    this._onRemove = this._onRemove.bind(this);\n    this._listen = !!(this._filter || this._map || this._compare);\n    if (this._listen) {\n      this._onChange = this._onChange.bind(this);\n    }\n    this._onCount = 0;\n    this._timeout = null;\n    this._disposed = false;\n    this._initList();\n    this._setEventListeners(true);\n    this._checkAutoDispose(0);\n  }\n  _createClass(CollectionWrapper, [{\n    key: \"_initList\",\n    value: function _initList() {\n      var _this = this;\n      this._list = [];\n      this._len = 0;\n      if (!this._collection) {\n        return;\n      }\n      var getModel = this._map ? function (item) {\n        var m = _this._map(item, _this._collection);\n        _this._weakMap.set(item, m);\n        return m;\n      } : function (item) {\n        return item;\n      };\n      var add = this._filter ? function (item, m) {\n        var c = _this._wrapModel(m, item);\n        if (c.f) _this._len++;\n        _this._list.push(c);\n      } : function (item, m) {\n        _this._list.push(_this._wrapModel(m, item));\n        _this._len++;\n      };\n      var _iterator = _createForOfIteratorHelper(this._collection),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var item = _step.value;\n          var m = getModel(item);\n          if (this._listen && item.on) {\n            item.on('change', this._onChange);\n          }\n          add(item, m);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      if (this._compare) {\n        this._list.sort(function (a, b) {\n          return _this._compare(a.m, b.m);\n        });\n      }\n    }\n\n    /**\n     * Length of the collection.\n     */\n  }, {\n    key: \"length\",\n    get: function get() {\n      var s = this._beginIdx();\n      var e = this._endIdx();\n      return s > e ? 0 : e - s;\n    }\n\n    /**\n     * Returns the wrapped collection.\n     * @returns {object}\n     */\n  }, {\n    key: \"getCollection\",\n    value: function getCollection() {\n      return this.collection;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this._array().map(function (m) {\n        return m.toJSON ? m.toJSON() : m;\n      });\n    }\n\n    /**\n     * Returns an array of the collection items.\n     * @returns {Array.<*>} An array of items.\n     */\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return this._array();\n    }\n\n    /**\n     * Creates an array filled with all array elements that pass a test.\n     *\n     * Short hand for CollectionWrapper.toArray().filter(filter).\n     * @param {function} filter Filter predicate function.\n     * @returns {Array} A new array with the elements that pass the test.\n     */\n  }, {\n    key: \"filter\",\n    value: function filter(_filter) {\n      return this._array().filter(_filter);\n    }\n\n    /**\n     * Creates a new array populated with the results of calling a provided\n     * function on every element in the calling array.\n     *\n     * Short hand for CollectionWrapper.toArray().map(callback)\n     * @param {function} callback Function that is called for every item of the collection.\n     * @returns {Array} A new array with each element being the result of the callback function.\n     */\n  }, {\n    key: \"map\",\n    value: function map(callback) {\n      return this._array().map(callback);\n    }\n  }, {\n    key: \"setCollection\",\n    value: function setCollection(collection) {\n      var _this2 = this;\n      collection = collection || null;\n      if (this._collection === collection) {\n        return;\n      }\n      var oldList = toArray(this._collection);\n      var newList = toArray(collection);\n      this._setEventListeners(false);\n      this._collection = collection || null;\n      this._setEventListeners(true);\n      patchDiff(oldList, newList, function (item, n, idx) {\n        return _this2._onAdd({\n          item: item,\n          idx: idx\n        });\n      }, function (item, m, idx) {\n        return _this2._onRemove({\n          item: item,\n          idx: idx\n        });\n      });\n    }\n\n    /**\n     * Attach an event handler function for one or more session events.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} handler A function to execute when the event is emitted.\n     */\n  }, {\n    key: \"on\",\n    value: function on(events, handler) {\n      this._checkAutoDispose(1);\n      this._eventBus.on(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Remove an event handler.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} [handler] An option handler function. The handler will only be remove if it is the same handler.\n     */\n  }, {\n    key: \"off\",\n    value: function off(events, handler) {\n      this._checkAutoDispose(-1);\n      this._eventBus.off(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Returns the item at a given index, or undefined if the index is out of bounds.\n     * @param {number} idx Zero-based index.\n     * @returns {*} Item located at the given index.\n     */\n  }, {\n    key: \"atIndex\",\n    value: function atIndex(idx) {\n      var s = this._beginIdx();\n      var e = this._endIdx();\n      // Check out of bounds\n      if (idx < 0 || idx >= e - s) return undefined;\n\n      // Set idx to the filtered internal index\n      idx += s;\n      if (this._filter) {\n        // Find the idx:th item\n        var _iterator2 = _createForOfIteratorHelper(this._list),\n          _step2;\n        try {\n          for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n            var c = _step2.value;\n            if (c.f) {\n              if (!idx) {\n                return c.m;\n              }\n              idx--;\n            }\n          }\n        } catch (err) {\n          _iterator2.e(err);\n        } finally {\n          _iterator2.f();\n        }\n      }\n      return this._list[idx].m;\n    }\n\n    /**\n     * Returns a zero-based index value of an item in the collection.\n     * @param {*} item Collection item.\n     * @returns {number} Zero-based index of the item, or -1 if the item is not found.\n     */\n  }, {\n    key: \"indexOf\",\n    value: function indexOf(item) {\n      var s = this._beginIdx();\n      var e = this._endIdx();\n      if (e > s) {\n        if (this._filter) {\n          var i = 0;\n          var _iterator3 = _createForOfIteratorHelper(this._list),\n            _step3;\n          try {\n            for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n              var c = _step3.value;\n              if (c.f) {\n                if (c.m === item) {\n                  return i >= s ? i - s : -1;\n                }\n                i++;\n                if (i >= e) break;\n              } else {\n                if (c.m === item) {\n                  return -1;\n                }\n              }\n            }\n          } catch (err) {\n            _iterator3.e(err);\n          } finally {\n            _iterator3.f();\n          }\n        } else {\n          for (var _i = s; _i < e; _i++) {\n            if (this._list[_i].m === item) {\n              return _i - s;\n            }\n          }\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Refreshes the collection in case sorting, filtering, or mapping has been\n     * affected by changes.\n     */\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      if (this._collection) {\n        var _iterator4 = _createForOfIteratorHelper(this._collection),\n          _step4;\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var item = _step4.value;\n            this._onChange(null, item);\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      }\n    }\n  }, {\n    key: \"_indexOf\",\n    value: function _indexOf(item) {\n      if (this._filter) {\n        return this._fIndexOf(item);\n      }\n      for (var i = 0; i < this._list.length; i++) {\n        var c = this._list[i];\n        if (c.m === item) {\n          return {\n            cont: c,\n            idx: i,\n            fidx: i\n          };\n        }\n      }\n      return {\n        cont: null,\n        idx: -1,\n        fidx: -1\n      };\n    }\n  }, {\n    key: \"_fIndexOf\",\n    value: function _fIndexOf(item) {\n      var fi = 0;\n      for (var i = 0; i < this._list.length; i++) {\n        var c = this._list[i];\n        if (c.m === item) {\n          return {\n            cont: c,\n            idx: i,\n            fidx: fi\n          };\n        }\n        if (c.f) fi++;\n      }\n      return {\n        cont: null,\n        idx: -1,\n        fidx: -1\n      };\n    }\n  }, {\n    key: \"_atFIndex\",\n    value: function _atFIndex(fidx) {\n      if (this._filter) {\n        // Find the fidx:th item\n        var _iterator5 = _createForOfIteratorHelper(this._list),\n          _step5;\n        try {\n          for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n            var c = _step5.value;\n            if (c.f) {\n              if (!fidx) {\n                return c.m;\n              }\n              fidx--;\n            }\n          }\n        } catch (err) {\n          _iterator5.e(err);\n        } finally {\n          _iterator5.f();\n        }\n      }\n      return this._list[fidx].m;\n    }\n\n    // Returns the begin index based of the filtered internal list.\n    // Optionally with the length to calculate from.\n  }, {\n    key: \"_beginIdx\",\n    value: function _beginIdx(l) {\n      if (l === undefined) l = this._len;\n      var o = this._begin;\n      return o < 0 ? Math.max(0, l + o) : Math.min(l, o);\n    }\n\n    // Returns the end index based of the filtered internal list.\n    // Optionally with the length to calculate from.\n  }, {\n    key: \"_endIdx\",\n    value: function _endIdx(l) {\n      if (l === undefined) l = this._len;\n      var o = this._end;\n      if (o === null) return l;\n      return o < 0 ? Math.max(0, l + o) : Math.min(l, o);\n    }\n  }, {\n    key: \"_array\",\n    value: function _array() {\n      var arr = this._filter ? this._list.filter(function (c) {\n        return c.f;\n      }) : this._list;\n      var s = this._beginIdx();\n      var e = this._endIdx();\n      if (s == 0 && e == this._len) {\n        return arr.map(function (c) {\n          return c.m;\n        });\n      }\n      return arr.slice(s, e).map(function (c) {\n        return c.m;\n      });\n    }\n  }, {\n    key: \"_wrapModel\",\n    value: function _wrapModel(m, item) {\n      return this._filter ? {\n        m: m,\n        f: this._filter(item),\n        i: item\n      } : {\n        m: m,\n        i: item\n      };\n    }\n  }, {\n    key: \"_setEventListeners\",\n    value: function _setEventListeners(on) {\n      var c = this._collection;\n      if (!c || typeof c.on !== 'function') {\n        return;\n      }\n      var cb = on ? 'on' : 'off';\n      c[cb]('add', this._onAdd);\n      c[cb]('remove', this._onRemove);\n    }\n  }, {\n    key: \"_binarySearch\",\n    value: function _binarySearch(m) {\n      var _this3 = this;\n      return array.binarySearch(this._list, {\n        m: m\n      }, function (a, b) {\n        return _this3._compare(a.m, b.m);\n      });\n    }\n  }, {\n    key: \"_onChange\",\n    value: function _onChange(_, item) {\n      var m = this._weakMap ? this._weakMap.get(item) : item;\n\n      // Get current idx of the item.\n      var _this$_indexOf = this._indexOf(m),\n        cont = _this$_indexOf.cont,\n        idx = _this$_indexOf.idx,\n        fidx = _this$_indexOf.fidx;\n      if (!cont) {\n        return;\n      }\n\n      // Get filtered and new filter value\n      var f = true;\n      var nf = true;\n      if (this._filter) {\n        f = cont.f;\n        nf = this._filter(item);\n        cont.f = nf;\n      }\n\n      // Get new mapped item\n      var nm = m;\n      if (this._map) {\n        nm = this._map(item, this._collection);\n        if (m !== nm) {\n          cont.m = nm;\n          this._weakMap.set(item, nm);\n        }\n      }\n\n      // Check if item moved\n      var nfidx = fidx;\n      var moved = this._compare && !((idx === 0 || this._compare(this._list[idx - 1].m, nm) < 0) && (idx === this._list.length - 1 || this._compare(nm, this._list[idx + 1].m) < 0));\n      if (moved) {\n        // Remove from last position\n        this._list.splice(idx, 1);\n        idx = this._binarySearch(nm);\n        if (idx < 0) {\n          // If idx < 0, the value contains the bitwise compliment of where the\n          // item would fit.\n          idx = ~idx;\n        }\n        // Insert in new position\n        this._list.splice(idx, 0, cont);\n        nfidx = this._filter ? nf ? this._fIndexOf(m).fidx : fidx : idx;\n      }\n\n      // Early exit if visibility, mapped value, and index is unchanged.\n      if (f === nf && m === nm && fidx === nfidx) {\n        return;\n      }\n\n      // Remove unless it was previously hidden\n      if (f) {\n        this._len--;\n        this._trySendRemove(m, fidx);\n      }\n\n      // Add unless it is now hidden\n      if (nf) {\n        this._len++;\n        this._trySendAdd(nm, nfidx);\n      }\n    }\n  }, {\n    key: \"_trySendAdd\",\n    value: function _trySendAdd(m, i) {\n      var l = this._len;\n      var cur_s = this._beginIdx(l);\n      var pre_s = this._beginIdx(l - 1);\n      var cur_e = this._endIdx(l);\n      var pre_e = this._endIdx(l - 1);\n\n      // Quick escape\n      if (pre_s >= pre_e && cur_s >= cur_e) {\n        return;\n      }\n      if (cur_s > pre_s) {\n        if (i >= cur_s) {\n          this._sendRemove(this._atFIndex(pre_s), 0);\n        }\n      } else {\n        if (i < cur_s) {\n          this._sendAdd(this._atFIndex(cur_s), 0);\n        }\n      }\n      if (i >= cur_s && i < cur_e) {\n        this._sendAdd(m, i - cur_s);\n      }\n      if (cur_e > pre_e) {\n        if (i >= cur_e) {\n          this._sendAdd(this._atFIndex(cur_e - 1), cur_e - cur_s - 1);\n        }\n      } else {\n        if (i < cur_e) {\n          this._sendRemove(this._atFIndex(cur_e), cur_e - cur_s);\n        }\n      }\n    }\n  }, {\n    key: \"_trySendRemove\",\n    value: function _trySendRemove(m, i) {\n      var l = this._len;\n      var cur_s = this._beginIdx(l);\n      var pre_s = this._beginIdx(l + 1);\n      var cur_e = this._endIdx(l);\n      var pre_e = this._endIdx(l + 1);\n\n      // Quick escape\n      if (pre_s >= pre_e && cur_s >= cur_e) {\n        return;\n      }\n      if (cur_e < pre_e) {\n        if (i >= pre_e) {\n          this._sendRemove(this._atFIndex(pre_e - 1), pre_e - pre_s - 1);\n        }\n      } else {\n        if (i < pre_e) {\n          this._sendAdd(this._atFIndex(pre_e - 1), pre_e - pre_s);\n        }\n      }\n      if (i >= pre_s && i < pre_e) {\n        this._sendRemove(m, i - pre_s);\n      }\n      if (cur_s < pre_s) {\n        if (i > cur_s) {\n          this._sendAdd(this._atFIndex(cur_s), 0);\n        }\n      } else {\n        if (i < cur_s) {\n          this._sendRemove(this._atFIndex(cur_s - 1), 0);\n        }\n      }\n    }\n  }, {\n    key: \"_sendAdd\",\n    value: function _sendAdd(item, idx) {\n      this._eventBus.emit(this, this._namespace + '.add', {\n        item: item,\n        idx: idx\n      });\n    }\n  }, {\n    key: \"_sendRemove\",\n    value: function _sendRemove(item, idx) {\n      this._eventBus.emit(this, this._namespace + '.remove', {\n        item: item,\n        idx: idx\n      });\n    }\n  }, {\n    key: \"_onAdd\",\n    value: function _onAdd(e) {\n      if (this._disposed) {\n        return;\n      }\n      var m = this._map ? this._map(e.item, this._collection) : e.item;\n      var idx = this._compare ? this._binarySearch(m) : e.idx;\n      if (this._weakMap) {\n        this._weakMap.set(e.item, m);\n      }\n      if (idx < 0) {\n        // If idx < 0, the value contains the bitwise compliment of where the\n        // item would fit.\n        idx = ~idx;\n      }\n      var cont = this._wrapModel(m, e.item);\n      this._list.splice(idx, 0, cont);\n      if (this._listen && e.item.on) {\n        e.item.on('change', this._onChange);\n      }\n      if (this._filter) {\n        if (!cont.f) {\n          return;\n        }\n        idx = this._fIndexOf(m).fidx;\n      }\n      this._len++;\n      this._trySendAdd(m, idx);\n    }\n  }, {\n    key: \"_onRemove\",\n    value: function _onRemove(e) {\n      if (this._disposed) {\n        return;\n      }\n      var m = this._weakMap && this._compare ? this._weakMap.get(e.item) : e.item;\n      var idx = this._compare ? this._binarySearch(m) : e.idx;\n      var cont = this._list[idx];\n      if (this._weakMap) {\n        this._weakMap[\"delete\"](e.item);\n      }\n      var fidx = idx;\n      if (this._listen && e.item.on) {\n        e.item.off('change', this._onChange);\n      }\n      if (this._filter) {\n        // Quick exit if a filtered item was removed.\n        if (!cont.f) {\n          return this._list.splice(idx, 1);\n        }\n        var r = this._fIndexOf(m);\n        if (!r.cont) {\n          return;\n        }\n        fidx = r.fidx;\n      }\n      this._list.splice(idx, 1);\n      this._len--;\n      this._trySendRemove(m, fidx);\n    }\n  }, {\n    key: \"_checkAutoDispose\",\n    value: function _checkAutoDispose(dt) {\n      var _this4 = this;\n      var ms = this._autoDispose;\n      if (ms === null) {\n        return;\n      }\n      this._onCount += dt;\n      if (this._onCount > 0) {\n        if (this._timeout) {\n          clearTimeout(this._timeout);\n          this._timeout = null;\n        }\n      } else {\n        this._timeout = setTimeout(function () {\n          return _this4.dispose();\n        }, ms);\n      }\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (this._disposed) {\n        return;\n      }\n      if (this._listen) {\n        var _iterator6 = _createForOfIteratorHelper(this._list),\n          _step6;\n        try {\n          for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n            var cont = _step6.value;\n            var item = cont.i;\n            if (item && item.on) {\n              item.off('change', this._onChange);\n            }\n          }\n        } catch (err) {\n          _iterator6.e(err);\n        } finally {\n          _iterator6.f();\n        }\n      }\n      this._setEventListeners(false);\n      delete this._collection;\n      delete this._weakMap;\n      this.disposed = false;\n    }\n  }, {\n    key: _Symbol$iterator,\n    value: function value() {\n      var i = 0;\n      var a;\n      var arr = this._list;\n      var done = {\n        done: true\n      };\n      var s = this._beginIdx();\n      var e = this._endIdx();\n      var si = 0;\n      if (e <= s) {\n        return {\n          next: function next() {\n            return done;\n          }\n        };\n      }\n      if (this._filter) {\n        return {\n          next: function next() {\n            while (si < e) {\n              a = arr[i];\n              i++;\n              if (a.f) {\n                si++;\n                if (si > s) {\n                  return {\n                    value: a.m,\n                    done: false\n                  };\n                }\n              }\n            }\n            return done;\n          }\n        };\n      }\n      i = s;\n      return {\n        next: function next() {\n          return i < e ? {\n            value: arr[i++].m,\n            done: false\n          } : done;\n        }\n      };\n    }\n  }]);\n  return CollectionWrapper;\n}(Symbol.iterator);\nexport default CollectionWrapper;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport eventBus from 'modapp-eventbus';\nimport { obj } from 'modapp-utils';\n\n/**\n * Model key callback\n * @callback CollectionToModel~modelKeyCallback\n * @param {*} item Collection item\n * @returns {string} Model key for the item. Must be unique for all items in the collection, and should be based on immutable values.\n */\n\n/**\n * A wrapper for a {@link module:modapp~Collection} that exposes an object that implements the {@link module:modapp~Model}\n * interface. It will transparently propagate emitted add and remove events and turn them to change events.\n * @implements {module:modapp~Model}\n */\nvar CollectionToModel = /*#__PURE__*/function () {\n  /**\n   * Creates an CollectionToModel instance.\n   * @param {object} collection Collection object to wrap.\n   * @param {CollectionToModel~modelKeyCallback} keyCallback Model key callback function.\n   * @param {object} [opt] Optional parameters.\n   * @param {function} [opt.map] Model value map callback. If not provided, model values will be the same as collection items: func(item) -> value\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'collectionToModel'.\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   */\n  function CollectionToModel(collection, keyCallback) {\n    var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    _classCallCheck(this, CollectionToModel);\n    this._collection = null;\n    this._props = {};\n    this._keyCallback = keyCallback;\n    obj.update(this, opt, {\n      map: {\n        type: 'function',\n        \"default\": function _default(v) {\n          return v;\n        },\n        property: '_map'\n      },\n      namespace: {\n        type: 'string',\n        \"default\": 'collectionToModel',\n        property: '_namespace'\n      },\n      eventBus: {\n        type: 'object',\n        \"default\": eventBus,\n        property: '_eventBus'\n      }\n    });\n\n    // Bind callbacks\n    this._onAdd = this._onAddRemove.bind(this, true);\n    this._onRemove = this._onAddRemove.bind(this, false);\n    this.setCollection(collection, true);\n  }\n\n  /**\n   * Model properties.\n   * @returns {object} Anonymous object with all model properties.\n   */\n  _createClass(CollectionToModel, [{\n    key: \"props\",\n    get: function get() {\n      return this._props;\n    }\n\n    /**\n     * Set wrapped collection.\n     * @param {Collection|Array?} collection Collection to wrap.\n     * @param {boolean} noEvents If true, no events should be emitted.\n     * @returns {this}\n     */\n  }, {\n    key: \"setCollection\",\n    value: function setCollection(collection, noEvents) {\n      collection = collection || null;\n      if (this._collection === collection) {\n        return;\n      }\n      this._setEventListeners(false);\n      this._collection = collection;\n\n      // Init props\n      var o = {};\n      var _iterator = _createForOfIteratorHelper(this._collection),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var v = _step.value;\n          var _k2 = this._keyCallback(v);\n          o[_k2] = this._map(v);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      var change = {};\n      for (var k in o) {\n        var mv = o[k];\n        if (mv !== this._props[k]) {\n          change[k] = this._props[k];\n          this._props[k] = mv;\n          if (this._promote(k)) {\n            this[k] = mv;\n          }\n        }\n      }\n      for (var _k in this._props) {\n        if (!o.hasOwnProperty(_k)) {\n          change[_k] = this._props[_k];\n          delete this._props[_k];\n          if (this._promote(_k)) {\n            delete this[_k];\n          }\n        }\n      }\n      this._setEventListeners(true);\n      if (!noEvents) {\n        this._eventBus.emit(this, this._namespace + '.change', change);\n      }\n      return this;\n    }\n\n    /**\n     * Get wrapped collection\n     * @returns {Collection?} Collection\n     */\n  }, {\n    key: \"getCollection\",\n    value: function getCollection() {\n      return this._collection;\n    }\n\n    /**\n     * Attach an event handler function for one or more session events.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} handler A function to execute when the event is emitted.\n     */\n  }, {\n    key: \"on\",\n    value: function on(events, handler) {\n      this._eventBus.on(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Remove an event handler.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} [handler] An option handler function. The handler will only be remove if it is the same handler.\n     */\n  }, {\n    key: \"off\",\n    value: function off(events, handler) {\n      this._eventBus.off(this, events, handler, this._namespace);\n    }\n  }, {\n    key: \"_setEventListeners\",\n    value: function _setEventListeners(on) {\n      if (!this._collection || !this._collection.on) {\n        return;\n      }\n      if (on) {\n        this._collection.on('add', this._onAdd);\n        this._collection.on('remove', this._onRemove);\n      } else {\n        this._collection.off('add', this._onAdd);\n        this._collection.off('remove', this._onRemove);\n      }\n    }\n  }, {\n    key: \"_onAddRemove\",\n    value: function _onAddRemove(isAdd, e) {\n      if (!this._collection) {\n        return;\n      }\n      var v = e.item;\n      var k = this._keyCallback(v);\n      var ov = this._props[k];\n      var mv = this._map(v);\n      if (isAdd) {\n        this._props[k] = mv;\n        if (this._promote(k)) {\n          this[k] = mv;\n        }\n      } else {\n        delete this._props[k];\n        if (this._promote(k)) {\n          delete this[k];\n        }\n      }\n      this._eventBus.emit(this, this._namespace + '.change', _defineProperty({}, k, ov));\n    }\n  }, {\n    key: \"_promote\",\n    value: function _promote(key) {\n      return (this.hasOwnProperty(key) || typeof this[key] == 'undefined') && key[0] !== '_';\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var o = Object.assign({}, this._props);\n      for (var k in o) {\n        var v = o[k];\n        if (_typeof(v) === 'object' && v !== null && v.toJSON) {\n          o[k] = v.toJSON();\n        }\n      }\n      return o;\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this._collection) {\n        return;\n      }\n      this._setEventListeners(false);\n      delete this._props;\n      delete this._collection;\n    }\n  }]);\n  return CollectionToModel;\n}();\nexport default CollectionToModel;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport eventBus from 'modapp-eventbus';\nimport { obj } from 'modapp-utils';\nfunction hasProps(m) {\n  return m && m.props && _typeof(m.props) == 'object' ? m.props : null;\n}\nfunction getProps(m) {\n  if (!m) {\n    return null;\n  }\n  var props = hasProps(m);\n  if (props) {\n    return props;\n  }\n  var o = {};\n  for (var _k in m) {\n    if (_k && m.hasOwnProperty(_k) && _k[0] !== '_') {\n      o[_k] = m[_k];\n    }\n  }\n  return o;\n}\n\n/**\n * ModifyModel wraps another object or a {@link module:modapp~Model}, and sets\n * its own properties to the match.\n *\n * Any property modification that will cause a difference between the models\n * will set the additional property \"isModified\" to be true.\n *\n * It also listens to changed in the underlying model. If a non-modified\n * property is changed, the ModifyModel will update its own property.\n *\n * Because ModifyModel listens to the underlying model, it needs to be disposed\n * when not used anymore.\n * @implements {module:modapp~Model}\n */\nvar ModifyModel = /*#__PURE__*/function () {\n  /**\n   * Creates a ModifyModel instance\n   * @param {object|Model} model Model object to wrap.\n   * @param {object} [opt] Optional parameters.\n   * @param {object} [opt.definition] Object definition. If not provided, any value will be allowed.\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'modifyModel'.\n   * @param {object} [opt.isModifiedProperty] Property used to flag if model is modified. Defaults to 'isModified'.\n   * @param {object} [opt.props] Properties to set initially.\n   * @param {function} [opt.onChange] Callback called whenever the underlying model has changed. function(this, change)\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   * @param {boolean} [opt.modifiedOnNew] [opt.modifiedOnNew] Flag telling if model is considered modified on new properties not existing on the wrapped model. Defaults to false.\n   */\n  function ModifyModel(model) {\n    var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, ModifyModel);\n    this._model = model;\n    this._modification = {};\n    this._eventBus = opt.eventBus || eventBus;\n    this._namespace = opt.namespace || 'modifyModel';\n    this._definition = opt.definition || null;\n    this._modProp = opt.hasOwnProperty('isModifiedProperty') ? opt.isModifiedProperty : 'isModified';\n    this._modifiedOnNew = !!opt.modifiedOnNew;\n    this._onChange = opt.onChange || null;\n    this._props = {};\n    this._setIsModified(this._update(getProps(model)));\n    if (opt.props) {\n      this._setIsModified(this._update(opt.props));\n    }\n    this._onCount = 0;\n    this._timeout = null;\n\n    // Bind callbacks\n    this._onModelChange = this._onModelChange.bind(this);\n    this._setEventListener(true);\n  }\n\n  /**\n   * Attach an event handler function for one or more session events.\n   * @param {?string} events One or more space-separated events. Null means any event.\n   * @param {Event~eventCallback} handler A function to execute when the event is emitted.\n   */\n  _createClass(ModifyModel, [{\n    key: \"on\",\n    value: function on(events, handler) {\n      this._eventBus.on(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Remove an event handler.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} [handler] An option handler function. The handler will only be remove if it is the same handler.\n     */\n  }, {\n    key: \"off\",\n    value: function off(events, handler) {\n      this._eventBus.off(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Sets model properties\n     * If any property where changed, this will trigger a change event.\n     * @param {object} props Properties to set\n     * @returns {Promise} Promise to the setting of the properties.\n     */\n  }, {\n    key: \"set\",\n    value: function set(props) {\n      var changed = props ? this._update(props) : null;\n      changed = this._setIsModified(changed);\n      if (changed) {\n        this._eventBus.emit(this, this._namespace + '.change', changed);\n      }\n      return Promise.resolve(changed);\n    }\n  }, {\n    key: \"props\",\n    get: function get() {\n      return this._props;\n    }\n\n    /**\n     * Resets a single or all model properties to the underlying model, clearing\n     * any modifications. If any property where changed or is missing, this will\n     * trigger a change event.\n     * @param {string} [prop] Optional property to reset. Defaults to resetting all properties.\n     * @returns {Promise} Promise to the setting of the properties.\n     */\n  }, {\n    key: \"reset\",\n    value: function reset(prop) {\n      var o = {};\n      var m = hasProps(this._model) || this._model;\n      if (prop) {\n        if (this._modification.hasOwnProperty(prop)) {\n          o[prop] = m[prop];\n        }\n      } else {\n        for (var _k2 in this._modification) {\n          o[_k2] = m[_k2];\n        }\n      }\n      return this.set(o);\n    }\n\n    /**\n     * Get the modifications in ModifyModel in comparison to the underlying model object.\n     * @returns {?object} Key/value object with modified properties and their new value. Null if there are no modifications.\n     */\n  }, {\n    key: \"getModifications\",\n    value: function getModifications() {\n      return Object.keys(this._modification).length ? Object.assign({}, this._modification) : null;\n    }\n  }, {\n    key: \"getModel\",\n    value: function getModel() {\n      return this._model;\n    }\n  }, {\n    key: \"_setIsModified\",\n    value: function _setIsModified(changed) {\n      if (changed) {\n        var v;\n        var m = hasProps(this._model) || this._model;\n        for (var _k3 in changed) {\n          v = m[_k3];\n          if (this._props[_k3] === v || !this._modifiedOnNew && typeof v == 'undefined') {\n            delete this._modification[_k3];\n          } else {\n            this._modification[_k3] = this._props[_k3];\n          }\n        }\n      }\n\n      // Do we have any modifications\n      if (this._modProp) {\n        var newIsModified = Object.keys(this._modification).length > 0;\n        if (newIsModified !== this._props[this._modProp]) {\n          changed = changed || {};\n          changed[this._modProp] = !newIsModified;\n          this._props[this._modProp] = newIsModified;\n          this[this._modProp] = newIsModified;\n        }\n      }\n      return changed;\n    }\n  }, {\n    key: \"_setEventListener\",\n    value: function _setEventListener(on) {\n      if (this._model && this._model.on) {\n        this._model[on ? 'on' : 'off']('change', this._onModelChange);\n      }\n    }\n  }, {\n    key: \"_onModelChange\",\n    value: function _onModelChange(changed) {\n      if (!this._model) return;\n      var m = hasProps(this._model) || this._model;\n      var props;\n      for (var _k4 in changed) {\n        // If the value isn't modified\n        if (!this._modification.hasOwnProperty(_k4)) {\n          props = props || {};\n          props[_k4] = m[_k4];\n        } else {\n          if (this._props[_k4] === m[_k4]) {\n            delete this._modification[_k4];\n          }\n        }\n      }\n      this.set(props);\n      if (this._onChange) {\n        this._onChange(this, changed);\n      }\n    }\n\n    /**\n     * Updates the properties.\n     * @param {object} props Properties to update.\n     * @returns {?object} Key/value object with the change properties and old values, or null if there were no changes.\n     * @private\n     */\n  }, {\n    key: \"_update\",\n    value: function _update(props) {\n      if (!props) {\n        return null;\n      }\n      var changed = null;\n      var v, promote;\n      var p = this._props;\n      if (this._definition) {\n        changed = obj.update(p, props, this._definition);\n        for (var key in changed) {\n          if ((this.hasOwnProperty(key) || !this[key]) && key[0] !== '_') {\n            v = p[key];\n            if (v === undefined) {\n              delete this[key];\n            } else {\n              this[key] = v;\n            }\n          }\n        }\n      } else {\n        for (var _key in props) {\n          v = props[_key];\n          promote = (this.hasOwnProperty(_key) || !this[_key]) && _key[0] !== '_';\n          if (p[_key] !== v) {\n            changed = changed || {};\n            changed[_key] = p[_key];\n            if (v === undefined) {\n              delete p[_key];\n              if (promote) delete this[_key];\n            } else {\n              p[_key] = v;\n              if (promote) this[_key] = v;\n            }\n          }\n        }\n      }\n      return changed;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      if (this._definition) {\n        return obj.copy(this._props, this._definition);\n      }\n      var props = {};\n      var p = this.props;\n      var v;\n      for (var key in p) {\n        v = p[k];\n        props[key] = v && _typeof(v) == 'object' && typeof v.toJSON == 'function' ? v.toJSON() : v;\n      }\n      return props;\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this._setEventListener(false);\n      this._model = null;\n    }\n  }]);\n  return ModifyModel;\n}();\nexport default ModifyModel;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport eventBus from 'modapp-eventbus';\nimport { array } from 'modapp-utils';\nimport { getProps, patchDiff } from './utils';\nfunction compare(a, b) {\n  return a.key.localeCompare(b.key);\n}\n\n/**\n * ModelToCollection turns a model into a collection.\n */\nvar ModelToCollection = /*#__PURE__*/function (_Symbol$iterator) {\n  /**\n   * Creates a ModelToCollection instance.\n   * @param {object|Model} model Model\n   * @param {object} [opt] Optional parameters.\n   * @param {function} [opt.compare] Compare function with receives two objects { key, value }. Defaults to: (a, b) => a.key.localeCompare(b.key)\n   * @param {function} [opt.filter] Filter function filtering which key/values to show: function(key, value) -> boolean\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'modelToCollection'.\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   */\n  function ModelToCollection(model, opt) {\n    _classCallCheck(this, ModelToCollection);\n    opt = opt || {};\n    this._compare = opt.compare || compare;\n    this._namespace = opt.namespace || 'modelToCollection';\n    this._eventBus = opt.eventBus || eventBus;\n    this._filter = opt.filter || null;\n\n    // Bind callbacks\n    this._onChange = this._onChange.bind(this);\n\n    // Init list\n    this._list = [];\n    this._props = {};\n    if (this._filter) {\n      this._filtered = {};\n    }\n    this.setModel(model, false);\n  }\n  _createClass(ModelToCollection, [{\n    key: \"length\",\n    get: function get() {\n      return this._list.length;\n    }\n\n    /**\n     * Get wrapped model.\n     * @returns {object|Model} Model\n     */\n  }, {\n    key: \"getModel\",\n    value: function getModel() {\n      return this._model;\n    }\n\n    /**\n     * Attach an event handler function for one or more session events.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} handler A function to execute when the event is emitted.\n     */\n  }, {\n    key: \"on\",\n    value: function on(events, handler) {\n      this._eventBus.on(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Remove an event handler.\n     * @param {?string} events One or more space-separated events. Null means any event.\n     * @param {Event~eventCallback} [handler] An option handler function. The handler will only be remove if it is the same handler.\n     */\n  }, {\n    key: \"off\",\n    value: function off(events, handler) {\n      this._eventBus.off(this, events, handler, this._namespace);\n    }\n\n    /**\n     * Retrieves the order index of an item.\n     * @param {*} item Collection item.\n     * @returns {number} Order index of the item. -1 if the item id doesn't exist.\n     */\n  }, {\n    key: \"indexOf\",\n    value: function indexOf(item) {\n      for (var i = 0; i < this._list.length; i++) {\n        if (this._list[i].value === item) {\n          return i;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Returns the item at a given index.\n     * @param {number} idx Index position\n     * @returns {*} Item or undefined if idx is out of bounds.\n     */\n  }, {\n    key: \"atIndex\",\n    value: function atIndex(idx) {\n      return idx < 0 || idx >= this._list.length ? undefined : this._list[idx];\n    }\n\n    /**\n     * Returns the collection as an array.\n     * @returns {Array} Array of items.\n     */\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return this._list.map(function (o) {\n        return o.value;\n      });\n    }\n\n    /**\n     * Sets the wrapped model.\n     * @param {?object} model Model or object to set.\n     * @param {boolean} noEvents Flag telling if no collection events should be triggered during set.\n     * @returns {this}\n     */\n  }, {\n    key: \"setModel\",\n    value: function setModel(model, noEvents) {\n      model = model || null;\n      if (model === this._model) return this;\n      for (var k in this._props) {\n        this._unlistenItem(this._props[k]);\n      }\n      this._listen(false);\n      this._model = model;\n      this._listen(true);\n      var oldList = this._list;\n      this._list = [];\n      this._props = {};\n      if (this._filter) {\n        this._filtered = {};\n      }\n      if (this._model) {\n        // Iterate over props object if available, otherwise the model itself.\n        var p = getProps(this._model);\n        for (var _k in p) {\n          var v = p[_k];\n          var o = {\n            key: _k,\n            value: v\n          };\n          if (!this._filter || this._filter(_k, v)) {\n            this._list.push(o);\n          } else {\n            this._filtered[_k] = o;\n          }\n          this._listenItem(o);\n        }\n        this._list.sort(this._compare);\n      }\n      if (!noEvents) {\n        this._sendSyncEvents(oldList, this._list);\n      }\n      return this;\n    }\n  }, {\n    key: \"_sendSyncEvents\",\n    value: function _sendSyncEvents(oldList, newList) {\n      var _this = this;\n      patchDiff(oldList, newList, function (o, n, idx) {\n        return _this._eventBus.emit(_this, _this._namespace + '.add', {\n          item: o.value,\n          idx: idx\n        });\n      }, function (o, m, idx) {\n        return _this._eventBus.emit(_this, _this._namespace + '.remove', {\n          item: o.value,\n          idx: idx\n        });\n      });\n    }\n\n    /**\n     * Refresh scans through all items to ensure filtering and sorting is\n     * correct.\n     * @param {string} [key] Optional key of a single item to refresh.\n     */\n  }, {\n    key: \"refresh\",\n    value: function refresh(key) {\n      if (!this._model) return;\n\n      // Start by sorting list, in case the compare is altered.\n      var oldList = this._list.slice();\n      this._list.sort(this._compare);\n      if (key) {\n        var o = this._props[key];\n        if (o) {\n          this._onItemChange(o);\n        }\n      } else {\n        for (var k in this._props) {\n          this._onItemChange(this._props[k]);\n        }\n      }\n      this._sendSyncEvents(oldList, this._list);\n    }\n  }, {\n    key: \"_listen\",\n    value: function _listen(on) {\n      var cb = on ? 'on' : 'off';\n      if (this._model && this._model[cb]) {\n        this._model[cb]('change', this._onChange);\n      }\n    }\n  }, {\n    key: \"_listenItem\",\n    value: function _listenItem(o) {\n      var _this2 = this;\n      this._props[o.key] = o;\n      var m = o.value;\n      if (_typeof(m) === 'object' && m !== null && typeof m.on == 'function') {\n        o.cb = function (m, change) {\n          if (_this2._props[o.key] != o) {\n            return;\n          }\n          var oldList = _this2._list.slice();\n          _this2._list.sort(_this2._compare);\n          _this2._onItemChange(o);\n          _this2._sendSyncEvents(oldList, _this2._list);\n        };\n        m.on('change', o.cb);\n      }\n    }\n  }, {\n    key: \"_unlistenItem\",\n    value: function _unlistenItem(o) {\n      if (o.cb) {\n        o.value.off('change', o.cb);\n        o.cb = null;\n      }\n    }\n  }, {\n    key: \"_onChange\",\n    value: function _onChange(change, m) {\n      if (m !== this._model) return;\n      var oldList = this._list.slice();\n      this._list.sort(this._compare);\n      var p = getProps(m);\n      for (var k in change) {\n        var nv = p[k];\n        var o = this._props[k];\n        var ov = o ? o.value : undefined;\n        if (ov === nv) continue;\n\n        // Old value undefined means a value was added\n        if (typeof ov == 'undefined') {\n          this._addItem(k, nv);\n        } else if (typeof nv == 'undefined') {\n          this._removeItem(k);\n        } else {\n          this._removeItem(k);\n          this._addItem(k, nv);\n        }\n      }\n      this._sendSyncEvents(oldList, this._list);\n    }\n  }, {\n    key: \"_onItemChange\",\n    value: function _onItemChange(o) {\n      var k = o.key;\n      var v = o.value;\n      var show = !this._filter || this._filter(k, v);\n      // Check if it is filtered\n      var f = this._filtered && this._filtered[k];\n      if (f) {\n        if (show) {\n          delete this._filtered[k];\n          this._list.splice(this._insertIdx(o), 0, o);\n        }\n      } else {\n        if (!show) {\n          var idx = this._indexOfItem(o.key, v);\n          if (idx < 0) {\n            console.error(\"Item not in list: \", k, v);\n            return;\n          }\n          this._list.splice(idx, 1);\n          this._filtered[k] = o;\n        }\n      }\n    }\n  }, {\n    key: \"_addItem\",\n    value: function _addItem(k, item) {\n      var o = {\n        key: k,\n        value: item\n      };\n      this._listenItem(o);\n      if (!this._filter || this._filter(k, item)) {\n        this._list.splice(this._insertIdx(o), 0, o);\n      } else {\n        this._filtered[k] = o;\n      }\n    }\n  }, {\n    key: \"_removeItem\",\n    value: function _removeItem(k) {\n      var o = this._props[k];\n      if (!o) {\n        console.error(\"Item key not found: \", k);\n        return;\n      }\n      delete this._props[k];\n      this._unlistenItem(o);\n\n      // Handle hidden item\n      if (this._filtered && this._filtered[k]) {\n        delete this._filtered[k];\n        return;\n      }\n      // Handle visible item\n      var idx = this._indexOfItem(k, o.value);\n      if (idx < 0) {\n        console.error(\"Item not in list: \", k, o.value);\n        return;\n      }\n      this._list.splice(idx, 1);\n    }\n  }, {\n    key: \"_insertIdx\",\n    value: function _insertIdx(o) {\n      var idx = array.binarySearch(this._list, o, this._compare);\n      return idx < 0 ? ~idx : idx; // Use the bitwise complement to get insert index.\n    }\n  }, {\n    key: \"_indexOfItem\",\n    value: function _indexOfItem(k, item) {\n      var idx = array.binarySearch(this._list, {\n        key: k,\n        value: item\n      }, this._compare);\n      // Verify we found it\n      if (idx >= 0 && this._list[idx].key === k) {\n        return idx;\n      }\n\n      // Binary search failed. Let's scan it instead.\n      return this._indexOfKey(k);\n    }\n  }, {\n    key: \"_indexOfKey\",\n    value: function _indexOfKey(k) {\n      for (var i = this._list.length - 1; i >= 0; i--) {\n        if (this._list[i].key === k) return i;\n      }\n      return -1;\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this.setModel(null, true);\n    }\n  }, {\n    key: _Symbol$iterator,\n    value: function value() {\n      var i = 0;\n      var a = this._list;\n      var l = a.length;\n      return {\n        next: function next() {\n          return i >= l ? {\n            done: true\n          } : {\n            value: a[i++].value,\n            done: false\n          };\n        }\n      };\n    }\n  }]);\n  return ModelToCollection;\n}(Symbol.iterator);\nexport default ModelToCollection;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport eventBus from 'modapp-eventbus';\nimport Model from './Model';\nimport { getProps } from './utils';\n\n/**\n * A wrapper for a {@link module:modapp~Model}, exposing the underlaying data\n * but can provide mapping of items, or filtering of items. It will\n * transparently propagate emitted change events.\n * @implements {module:modapp~Model}\n */\nvar ModelWrapper = /*#__PURE__*/function (_Model) {\n  _inherits(ModelWrapper, _Model);\n  var _super = _createSuper(ModelWrapper);\n  /**\n   * Creates an ModelWrapper instance.\n   * @param {object?} model Model object to wrap.\n   * @param {object} [opt] Optional parameters.\n   * @param {function} [opt.map] Model map callback. If not provided, item objects will be stored as is.\n   * @param {function} [opt.keyMap] Key map callback. If not provided, original key will be used.\n   * @param {function} [opt.filter] Model filter callback. Parameter is a item of the underlying model.\n   * @param {function} [opt.dispose] Dispose callback called when a mapped item removed.\n   * @param {string} [opt.namespace] Event bus namespace. Defaults to 'modelWrapper'.\n   * @param {module:modapp~EventBus} [opt.eventBus] Event bus.\n   */\n  function ModelWrapper(model) {\n    var _this;\n    var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, ModelWrapper);\n    _this = _super.call(this, Object.assign({\n      namespace: 'modelWrapper',\n      eventBus: eventBus\n    }));\n    _this._map = opt.map || null;\n    _this._keyMap = opt.keyMap || null;\n    _this._filter = opt.filter || null;\n    _this._dispose = opt.dispose || null;\n\n    // Bind callbacks\n    _this._onChange = _this._onChange.bind(_assertThisInitialized(_this));\n    if (_this._filter || _this._map || _this._keyMap) {\n      _this._items = {};\n    }\n    _this.setModel(model, true);\n    return _this;\n  }\n\n  /**\n   * Model properties.\n   * @returns {object} Anonymous object with all model properties.\n   */\n  _createClass(ModelWrapper, [{\n    key: \"props\",\n    get: function get() {\n      return this._props;\n    }\n\n    /**\n     * Sets model properties on the underlying model.\n     * @param {object} props Properties to set\n     * @returns {Promise} Promise to the setting of the properties.\n     */\n  }, {\n    key: \"set\",\n    value: function set(props) {\n      if (!this._model || typeof this._model.set != 'function') {\n        throw new Error(\"No set method on underlying model.\");\n      }\n      return this._model.set(props);\n    }\n\n    /**\n     * Get wrapped model.\n     * @returns {object|Model} Model\n     */\n  }, {\n    key: \"getModel\",\n    value: function getModel() {\n      return this._model;\n    }\n\n    /**\n     * Sets the wrapped model.\n     * @param {?object} model Model or object to set.\n     * @param {boolean} noEvents Flag telling if no model change event should be triggered during set.\n     * @returns {Promise} Promise to the setting of the model.\n     */\n  }, {\n    key: \"setModel\",\n    value: function setModel(model, noEvents) {\n      model = model || null;\n      if (model === this._model) return Promise.resolve({});\n      var om = this._model;\n      this._removeItems();\n      this._listen(false);\n      this._model = model || null;\n      this._listen(true);\n      var p = getProps(this._model);\n      var o = {};\n      if (p) {\n        for (var k in p) {\n          var v = p[k];\n          this._prep(o, k, v);\n        }\n      }\n      return Promise.resolve(_get(_getPrototypeOf(ModelWrapper.prototype), \"_update\", this).call(this, o, !noEvents, !!om));\n    }\n\n    /**\n     * Refreshes the model, or a single property of the model.\n     * @param {string} [key] Optional key to refresh. All keys are refreshed if omitted.\n     */\n  }, {\n    key: \"refresh\",\n    value: function refresh(key) {\n      if (!this._model) return;\n      var p = getProps(this._model);\n      var o = {};\n      if (key) {\n        if (!p.hasOwnProperty(key)) {\n          return;\n        }\n        this._prep(o, key, p[key]);\n      } else {\n        for (var k in p) {\n          var v = p[k];\n          this._prep(o, k, v);\n        }\n        for (var _k in this._props) {\n          if (!p.hasOwnProperty(_k)) {\n            this._prep(o, _k);\n          }\n        }\n      }\n      _get(_getPrototypeOf(ModelWrapper.prototype), \"set\", this).call(this, o);\n    }\n  }, {\n    key: \"_listen\",\n    value: function _listen(on) {\n      var cb = on ? 'on' : 'off';\n      if (this._model && this._model[cb]) {\n        this._model[cb]('change', this._onChange);\n      }\n    }\n  }, {\n    key: \"_prep\",\n    value: function _prep(o, k, v) {\n      var isDefined = typeof v !== 'undefined';\n      var mk = this._keyMap ? isDefined && this._keyMap(k, v) : k;\n      if (typeof mk != 'string') {\n        mk = null;\n      }\n      var mv = v;\n      var c = this._items && this._items[k];\n      if (isDefined && mk && (!this._filter || this._filter(k, v))) {\n        if (this._map) {\n          // If we map to a disposable value, we do not create a new map\n          // value, but assume the disposable value will update itself.\n          mv = this._dispose && c && c.value === v ? c.mvalue : this._map(k, v);\n        }\n        o[mk] = mv;\n      } else {\n        // Ensure we don't overwrite a new value\n        if (mk !== null && !o.hasOwnProperty(mk)) {\n          o[mk] = undefined;\n        }\n      }\n      c = this._upsertItem(c, k, v, mk, mv);\n      if (c) {\n        // Check if value existed, but with a different mapped key\n        if (c.mkey !== mk) {\n          if (!o.hasOwnProperty(c.mkey)) {\n            o[c.mkey] = undefined;\n          }\n          c.mkey = mk;\n        }\n      }\n      return o;\n    }\n  }, {\n    key: \"_upsertItem\",\n    value: function _upsertItem(c, k, v, mk, mv) {\n      var _this2 = this;\n      if (!this._items) return;\n\n      // Check if item already exists.\n      if (c) {\n        if (c.value === v) {\n          return c;\n        }\n        // Unlisten to old value\n        this._removeItem(c.key);\n      }\n      if (typeof v == 'undefined') {\n        return c;\n      }\n      c = {\n        key: k,\n        value: v,\n        mkey: mk,\n        mvalue: mv\n      };\n      // Listen to model values\n      if (_typeof(v) === 'object' && v !== null && typeof v.on == 'function') {\n        c.cb = function () {\n          // Ensure the model still has this property\n          var p = getProps(_this2._model);\n          var k = c.key;\n          if (p && p.hasOwnProperty(k)) {\n            _this2._onItemChange(c);\n          }\n        };\n        v.on('change', c.cb);\n      }\n      this._items[k] = c;\n      return c;\n    }\n  }, {\n    key: \"_removeItem\",\n    value: function _removeItem(k) {\n      // Unlisten to old value\n      var c = this._items[k];\n      if (c) {\n        if (c.cb) {\n          c.value.off('change', c.cb);\n        }\n        if (this._dispose) {\n          this._dispose(k, c.mvalue);\n        }\n        delete this._items[k];\n      }\n    }\n  }, {\n    key: \"_onChange\",\n    value: function _onChange(change, m) {\n      if (m !== this._model) return;\n      var p = getProps(m);\n      var o = {};\n      for (var k in change) {\n        var v = p[k];\n        this._prep(o, k, v);\n      }\n      _get(_getPrototypeOf(ModelWrapper.prototype), \"set\", this).call(this, o);\n    }\n  }, {\n    key: \"_onItemChange\",\n    value: function _onItemChange(c) {\n      var p = getProps(this._model);\n      // Ensure the item is still the same\n      if (!p || p[c.key] !== c.value) return;\n      _get(_getPrototypeOf(ModelWrapper.prototype), \"set\", this).call(this, this._prep({}, c.key, c.value));\n    }\n  }, {\n    key: \"_removeItems\",\n    value: function _removeItems() {\n      if (this._items) {\n        for (var k in this._items) {\n          this._removeItem(k);\n        }\n      }\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this._removeItems();\n      this._listen(false);\n      this._model = null;\n    }\n  }]);\n  return ModelWrapper;\n}(Model);\nexport default ModelWrapper;","/**\n * A module with HTMLElement helper functions\n */\n\n/**\n * Creates a new document element\n * @param {string} tagName Name of the tag. Eg. 'div'.\n * @param {object=} opt Options\n * @param {string} [opt.className] Class name or space separated class names.\n * @param {Object.<string, string>} [opt.attributes] Attributes object where key is the attribute name and value is the attribute value.\n * @param {Object.<string, function>} [opt.events] Events object where key is the event name and value is the event callback.\n * @param {Array.<HTMLElement>} [opt.children] Array of child elements to append.\n * @param {string} [opt.text] Text content. Ignored if children is set.\n * @returns {HTMLElement} Created document element.\n */\nexport var create = function create(tagName, opt) {\n  var el = document.createElement(tagName);\n  if (opt) {\n    var o = opt.attributes;\n    if (o) {\n      for (var key in o) {\n        if (o.hasOwnProperty(key)) {\n          el.setAttribute(key, o[key]);\n        }\n      }\n    }\n    o = opt.className;\n    if (o) {\n      el.className = o;\n    }\n    o = opt.events;\n    if (o) {\n      for (var _key in o) {\n        if (o.hasOwnProperty(_key)) {\n          el.addEventListener(_key, o[_key]);\n        }\n      }\n    }\n    o = opt.children;\n    if (o) {\n      for (var i = 0; i < o.length; i++) {\n        el.appendChild(o[i]);\n      }\n    } else if (opt.text) {\n      el.textContent = opt.text;\n    }\n  }\n  return el;\n};\n\n/**\n * Appends a child to a parent element\n * @param {?HTMLElement} parent Parent element. If null or undefined, nothing will be performed.\n * @param {?HTMLElement} child Child element. If null or undefined, nothing will be performed.\n * @returns {?HTMLElement} The appended child.\n */\nexport var append = function append(parent, child) {\n  if (!parent || !child) {\n    return child || null;\n  }\n  return parent.appendChild(child);\n};\n\n/**\n * Removes an element from the parent element\n * @param {?HTMLElement} child Child element. If null or undefined, nothing will be performed.\n * @param {object=} opt Options\n * @param {Object.<string, function>} [opt.events] Events object previously used when creating the element. By calling removeEventListener, memory leaks can be prevented on older browsers.\n * @returns {?HTMLElement} Child element.\n */\nexport var remove = function remove(child, opt) {\n  if (!child) {\n    return null;\n  }\n  if (opt) {\n    var o = opt.events;\n    if (o) {\n      for (var key in o) {\n        if (o.hasOwnProperty(key)) {\n          el.removeEventListener(key, o[key]);\n        }\n      }\n    }\n  }\n  if (!child.parentNode) {\n    return child;\n  }\n  return child.parentNode.removeChild(child);\n};\n\n/**\n * Empties an element of all child nodes.\n * @param {?HTMLElement} element Element\n * @returns {?HTMLElement} ELement.\n */\nexport var empty = function empty(element) {\n  if (!element) {\n    return element || null;\n  }\n  while (element.firstChild) {\n    element.removeChild(element.firstChild);\n  }\n  return element;\n};","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","input","prim","toPrimitive","undefined","res","call","hint","TypeError","String","_toPrimitive","Context","ctxCreate","ctxDispose","componentFactory","instance","Constructor","_classCallCheck","this","_create","_dispose","_factory","_ctx","_component","_rendered","protoProps","value","el","render","unrender","_get","Reflect","get","bind","property","receiver","base","object","hasOwnProperty","_getPrototypeOf","_superPropBase","desc","getOwnPropertyDescriptor","arguments","apply","_setPrototypeOf","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","getPrototypeOf","_RootElem","subClass","superClass","create","_inherits","Html","Derived","hasNativeReflectConstruct","_super","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","result","Super","NewTarget","_possibleConstructorReturn","html","opt","_this","assign","tagName","animId","rendered","_handleChange","tmp","nodeEl","innerHTML","_this2","next","callback","RootElem","Input","attributes","properties","type","getProperty","setProperty","Textarea","Transition","mode","div","current","contDiv","id","className","style","_renderComponent","_unrenderComponent","component","_setComponent","_isEqual","opacity","left","direction","reset","duration","distance","componentA","componentB","_arrayLikeToArray","arr","len","arr2","Array","Collection","compare","modelFactory","idAttribute","m","data","namespace","eventBus","_modelFactory","_idAttribute","_namespace","_eventBus","_map","SortedMap","_step","_iterator","allowArrayLike","it","isArray","minLen","n","toString","slice","name","from","test","_unsupportedIterableToArray","F","s","done","_e","f","err","normalCompletion","didErr","step","_e2","_createForOfIteratorHelper","item","_addItem","events","handler","on","off","idx","Error","remove","emit","splice","indexOf","add","a","l","sortOrderCompare","b","sortOrder","CollectionWrapper","collection","_collection","map","filter","begin","end","autoDispose","_weakMap","WeakMap","_onAdd","_onRemove","_listen","_filter","_compare","_onChange","_onCount","_timeout","_disposed","_initList","_setEventListeners","_checkAutoDispose","_list","_len","getModel","set","c","_wrapModel","push","sort","_beginIdx","_endIdx","_array","toJSON","oldList","newList","_step2","_iterator2","_step3","_iterator3","_i","_step4","_iterator4","_fIndexOf","cont","fidx","fi","_step5","_iterator5","_begin","Math","max","min","_end","cb","_this3","_","_this$_indexOf","_indexOf","nf","nm","nfidx","_binarySearch","_trySendRemove","_trySendAdd","cur_s","pre_s","cur_e","pre_e","_sendRemove","_atFIndex","_sendAdd","r","dt","_this4","ms","_autoDispose","clearTimeout","setTimeout","dispose","_step6","_iterator6","disposed","si","arg","CollectionToModel","keyCallback","_props","_keyCallback","v","_onAddRemove","setCollection","noEvents","change","k","mv","_promote","_k","isAdd","obj","ov","hasProps","ModifyModel","model","_model","_modification","_definition","definition","_modProp","isModifiedProperty","_modifiedOnNew","modifiedOnNew","onChange","_setIsModified","_update","getProps","_onModelChange","_setEventListener","changed","Promise","resolve","prop","_k2","keys","_k3","newIsModified","_k4","promote","_key","localeCompare","ModelToCollection","_filtered","setModel","_unlistenItem","_listenItem","_sendSyncEvents","_onItemChange","nv","_removeItem","show","_insertIdx","_indexOfItem","console","error","_indexOfKey","ModelWrapper","_Model","_keyMap","keyMap","_items","om","_removeItems","_prep","isDefined","mk","mvalue","_upsertItem","mkey","Model","document","createElement","setAttribute","addEventListener","children","appendChild","text","textContent","append","parent","child","removeEventListener","parentNode","removeChild","empty","element","firstChild","$forEach","STRICT_METHOD","arrayMethodIsStrict","module","exports","forEach","callbackfn","$","$map","proto","forced","arrayMethodHasSpeciesSupport","charAt","InternalStateModule","defineIterator","createIterResultObject","STRING_ITERATOR","setInternalState","getInternalState","getterFor","iterated","string","index","point","state","global","DOMIterables","DOMTokenListPrototype","createNonEnumerableProperty","handlePrototype","CollectionPrototype","COLLECTION_NAME"],"sourceRoot":""}