define(function(require,exports,module){var _=require("thirdparty/lodash");const ExtensionManager=require("extensibility/ExtensionManager"),registry_utils=require("extensibility/registry_utils"),EventDispatcher=require("utils/EventDispatcher"),Strings=require("strings"),PreferencesManager=require("preferences/PreferencesManager");var _searchFields=[["metadata","name"],["metadata","title"],["metadata","description"],["metadata","author","name"],["metadata","keywords"],["owner"]];function ExtensionManagerViewModel(){this._handleStatusChange=this._handleStatusChange.bind(this),ExtensionManager.on("statusChange."+this.source,this._handleStatusChange).on("registryUpdate."+this.source,this._handleStatusChange)}function RegistryViewModel(){ExtensionManagerViewModel.call(this),this.infoMessage=`
\n
${Strings.REGISTRY_SANITY_CHECK_WARNING}
\n
\n \n
\n
`}function InstalledViewModel(){ExtensionManagerViewModel.call(this);var self=this;ExtensionManager.on("registryDownload."+this.source,function(){self._sortFullSet(),self._setInitialFilter()}),this.infoMessage=`
\n
${Strings.EXTENSION_MANAGER_THEMES_INFO}
\n
\n \n
\n
`}function DefaultViewModel(){ExtensionManagerViewModel.call(this)}function ThemesViewModel(){ExtensionManagerViewModel.call(this),this.infoMessage=`
\n
${Strings.EXTENSION_MANAGER_THEMES_INFO}
\n
\n \n \n
\n
`}EventDispatcher.makeEventDispatcher(ExtensionManagerViewModel.prototype),ExtensionManagerViewModel.prototype.SOURCE_REGISTRY="registry",ExtensionManagerViewModel.prototype.SOURCE_THEMES="themes",ExtensionManagerViewModel.prototype.SOURCE_INSTALLED="installed",ExtensionManagerViewModel.prototype.SOURCE_DEFAULT="default",ExtensionManagerViewModel.prototype.extensions=null,ExtensionManagerViewModel.prototype.source=null,ExtensionManagerViewModel.prototype.filterSet=null,ExtensionManagerViewModel.prototype.sortedFullSet=null,ExtensionManagerViewModel.prototype._lastQuery=null,ExtensionManagerViewModel.prototype.infoMessage=null,ExtensionManagerViewModel.prototype.message=null,ExtensionManagerViewModel.prototype.notifyCount=0,ExtensionManagerViewModel.prototype._initializeFromSourcePromise=null,ExtensionManagerViewModel.prototype.dispose=function(){this.trigger("dispose"),ExtensionManager.off("."+this.source)},ExtensionManagerViewModel.prototype._setInitialFilter=function(){this.filterSet=_.clone(this.sortedFullSet),this.trigger("filter")},ExtensionManagerViewModel.prototype._sortFullSet=function(){},ExtensionManagerViewModel.prototype.initialize=function(){var self=this;return this._initializeFromSourcePromise=this._initializeFromSource().always(function(){self._updateMessage()}),this._initializeFromSourcePromise},ExtensionManagerViewModel.prototype._handleStatusChange=function(e,id){this.trigger("change",id)},ExtensionManagerViewModel.prototype.filter=function(query,force){var self=this,initialList;initialList=!force&&this._lastQuery&&0===query.indexOf(this._lastQuery)?this.filterSet:this.sortedFullSet;var keywords=query.toLowerCase().split(/\s+/);function filterForKeyword(extensionList,word){var filteredList=[];return extensionList.forEach(function(id){var entry=self._getEntry(id);entry&&self._entryMatchesQuery(entry,word)&&filteredList.push(id)}),filteredList}var i,currentList=initialList;for(i=0;i