{"version":3,"sources":["/CoveoForSitecore/webpack/universalModuleDefinition","/CoveoForSitecore/CoveoForSitecore.min.js","/CoveoForSitecore/webpack/bootstrap 427b43b64c3a2d109c3b","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreJQuery/CoveoForSitecore.JQuery.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/CoveoForSitecore.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/PluginOptions.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/CoveoForSitecoreBase.ts","/CoveoForSitecore/./~/underscore/underscore.js","/CoveoForSitecore/external \"Coveo\"","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Logger.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Sorts/DefaultSortHandler.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/ExpressionsHelper.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/SearchExpressionsHelper.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/FilterExpressionHelper.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/ExpressionHelperUtilities.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/SearchEndpointHelper.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/OmniboxResultList/OmniboxResultListHandler.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Utilities.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Tabs/TabsBinding.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Searchbox.ts","/CoveoForSitecore/./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/OmniboxResultList/OmniboxResultList.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_6__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","CoveoForSitecore","Coveo","initCoveoForSitecore","element","action","options","initializeSearch","initializeSearchbox","console","error","initializeJQuery","jQueryInstance","$","initializeCoveoForSitecorePlugin","fn","coveoForSitecore","jQuery","searchComponent","tabsBinding","applyBindings","_isExistingPlugin","plugin","CoveoForSitecoreBase_1","defaults","initialize","Searchbox_1","PluginOptions_1","TabsBinding_1","SearchEndpointHelper_1","OmniboxResultList","componentsOptions","SearchEndpointHelper","PluginOptions","analyticsCustomMetadata","analyticsEndpointUri","boostExpressions","clientLanguageFieldName","clientLanguageName","componentRefreshCallback","defaultSortType","defaultSortField","defaultSortCriteriaNoSpace","defaultSortCriteriaLowercase","enableClientSideLogging","externalCollections","externalSources","externalSourcesFromCurrentTab","externalCollectionsFromCurrentTab","filterExpression","filterResultOnLatestVersion","filterResultsOnCurrentCulture","indexSourceName","isEditingInPageEditor","isInitialized","isPreviewingInPageEditor","isPreviewingInPageEditorWithSimulatedDevice","keepOmniboxSuggestionsProvidersDefaultOrdering","latestVersionFieldName","omniboxDataRowIndexCounter","pageFullPath","pageName","restEndpointUri","resultListInfiniteScrollContainer","window","searchboxPlaceholderText","searchRedirectionUrl","sendToSitecoreAnalytics","sitecoreItemId","sitecoreItemUri","siteName","__esModule","_","Logger_1","DefaultSortHandler_1","ExpressionsHelper_1","OmniboxResultListHandler_1","Utilities_1","CoveoForSitecoreBase","defaultOptions","isInPageEditorCssClass","isEditingInPageEditorCssClass","isPreviewingInPageEditorCssClass","isPreviewingInPageEditorWithSimulatedDeviceCssClass","domElement","$$","extend","logger","expressionsHelper","omniboxResultListHandler","endpointCaller","EndpointCaller","defaultSortHandler","prototype","_this","log","initializeSearchOptions","addPageEditorCssClasses","addResultListHeaderCssClasses","on","InitializationEvents","afterInitialization","HashUtils","getValue","location","hash","state","mergedOptions","Utils","extendDeep","Facet","SearchInterface","init","doPostInitializationActions","forEach","findAll","setAttribute","initializeEndpoint","Logger","enable","QueryEvents","buildingQuery","e","args","addSortCriteriaToQuery","queryBuilder","registerSearchEvents","onbeforeunload","Defer","flush","AnalyticsEvents","searchEvent","postAnalytics","searchEvents","documentViewEvent","customEvent","eventAction","eventType","eventData","concat","data","postData","JSON","stringify","sendPostRequest","appendTrailingSlash","isInPageEditor","addClass","elements","getDomElementsMatchingSelector","filter","hasClass","getFilterExpressions","getFilterExpression","optionsWithTabContent","getOptionsWithTabExternalContent","tab","advancedExpression","add","getSearchExpression","constantExpression","changeAnalyticsCustomData","language","originLevel1","originLevel3","metaObject","deferredQuerySuccess","queryError","configureOmnibox","OmniboxEvents","populateOmnibox","generatePopulateOmniboxFunction","currentTabId","filterExpressionOptions","hasOwnProperty","tabOptions","queryController","get","populateOmniboxObject","populateOmniboxResultList","querySelector","map","document","querySelectorAll","url","callOptions","errorsAsSuccess","method","queryString","requestData","responseType","requestDataType","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","ObjProto","prop","has","contains","push","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extendOwn","assign","pick","oiteratee","omit","String","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","argument","chain","instance","_chain","mixin","valueOf","toJSON","undefined","message","DefaultSortHandler","defaultSortOptions","fieldSortType","sortCriteria","sortField","SearchExpressionsHelper_1","FilterExpressionHelper_1","ExpressionHelperUtilities_1","ExpressionsHelper","filterExpressionHelper","searchExpressionHelper","expressionHelperUtilities","expression","getContextFilterExpressions","appendExternalContentToExpression","expressions","getSourcesAndCollectionsExpression","getSearchFilterExpression","getSearchBoostExpression","SearchExpressionHelper","utilities","collectionsOptions","sourcesOptions","externalContentFromCurrentTab","newExpression","sourcesExpression","getSourcesExpression","getAllExternalCollections","externalCollectionsExpression","getExternalCollectionsExpression","getExternalSourcesExpression","sourcesExpressionOptions","sources","isDefined","externalCollectionsOptions","externalContentFromCurrentTabOptions","FilterExpressionHelper","filterExpressions","filterExpressionsWithExternalContent","clientLanguageFilterExpression","latestVersionFilterExpression","hasExternalContentSpecified","getAllExternalSources","externalSourcesOptions","ExpressionHelperUtilities","fieldName","fieldValue","fieldValues","SearchEndpoint","endpoints","restUri","queryStringArguments","OmniboxResultListHandler","getOmniboxDataRowIndex","onOmniboxRowClicked","href","clickUri","buildOmniboxContent","resultTemplateId","templateElement","getElementById","UnderscoreTemplate","resultContainer","getResultContainer","headerTitle","content","append","el","oneRowOfContent","instantiateToElement","rowElement","createQueryBuilder","queryExpression","numberOfResults","query","build","promise","executeSearchQuery","then","response","totalCount","elementToReturn","objectToReturn","zIndex","omniboxDataRowIndex","rows","deferred","search","captionText","getIcon","getCaption","iconResultList","caption","textContent","Utilities","charAt","TabsBinding","bindings","getElementBinding","elementId","binding","elementFound","elementBinding","initBinding","itemId","tabNot","applyBinding","addExcludeFromTabTag","excludeItemsIdsInTab","elementIds","tabId","__extends","d","__","Searchbox","_super","searchBoxPluginOptions","defaultSearchBoxPluginOptions","searchBoxOptions","initSearchbox","Component","ID","ComponentOptions","initComponentOptions","initializeOmniboxDataRowIndex","onRootElement","bindEnterToSearchButton","queryBoxes","queryBox","button","queryBoxElements","addEventListener","event","keyCode","click","omniboxResultList","getElementsByClassName","searchInterface","originalOptionsObject","children","buildStringOption","buildNumberOption","defaultValue","Initialization","registerAutoCreateComponent"],"mappings":"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","file":"CoveoForSitecore.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"Coveo\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"Coveo\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CoveoForSitecore\"] = factory(require(\"Coveo\"));\n\telse\n\t\troot[\"CoveoForSitecore\"] = factory(root[\"Coveo\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"Coveo\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"Coveo\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CoveoForSitecore\"] = factory(require(\"Coveo\"));\n\telse\n\t\troot[\"CoveoForSitecore\"] = factory(root[\"Coveo\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1);\n\tmodule.exports = __webpack_require__(2);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\t/// \r\n\tvar CoveoForSitecore = __webpack_require__(2);\r\n\tCoveo.initCoveoForSitecore = function (element, action, options) {\r\n\t if (action === \"init\") {\r\n\t CoveoForSitecore.initializeSearch(element, options);\r\n\t }\r\n\t else if (action === \"initSearchbox\") {\r\n\t CoveoForSitecore.initializeSearchbox(element, options);\r\n\t }\r\n\t else {\r\n\t console.error(\"The action '\" + action + \"' is not part of the coveoForSitecore plugin. Ignoring action.\");\r\n\t }\r\n\t};\r\n\tCoveo.initializeJQuery = function (jQueryInstance) {\r\n\t Coveo.$ = jQueryInstance;\r\n\t Coveo.initializeCoveoForSitecorePlugin();\r\n\t};\r\n\tCoveo.initializeCoveoForSitecorePlugin = function () {\r\n\t if (typeof (Coveo.$) !== \"undefined\" && typeof (Coveo.$.fn) != \"undefined\") {\r\n\t Coveo.$.fn.coveoForSitecore = function (action, options) {\r\n\t Coveo.initCoveoForSitecore(this[0], action, options);\r\n\t return this;\r\n\t };\r\n\t }\r\n\t};\r\n\t(function (jQueryInstance) {\r\n\t if (typeof (jQueryInstance) !== \"undefined\") {\r\n\t Coveo.initializeJQuery(jQueryInstance);\r\n\t }\r\n\t})(typeof (Coveo) !== \"undefined\" && typeof (Coveo.$) !== \"undefined\" ? Coveo.$ : jQuery);\r\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar PluginOptions_1 = __webpack_require__(3);\r\n\tvar CoveoForSitecoreBase_1 = __webpack_require__(4);\r\n\tvar TabsBinding_1 = __webpack_require__(16);\r\n\tvar Searchbox_1 = __webpack_require__(17);\r\n\tvar SearchEndpointHelper_1 = __webpack_require__(13);\r\n\texports.OmniboxResultList = __webpack_require__(18);\r\n\texports.componentsOptions = new PluginOptions_1[\"default\"]();\r\n\texports.tabsBinding = new TabsBinding_1[\"default\"]();\r\n\texports.SearchEndpointHelper = SearchEndpointHelper_1[\"default\"];\r\n\texports.defaults = new PluginOptions_1[\"default\"]();\r\n\tfunction initializeSearch(searchComponent, options) {\r\n\t exports.tabsBinding.applyBindings();\r\n\t if (!_isExistingPlugin(searchComponent)) {\r\n\t exports.plugin = new CoveoForSitecoreBase_1[\"default\"](searchComponent, options, exports.defaults);\r\n\t exports.plugin.initialize();\r\n\t }\r\n\t}\r\n\texports.initializeSearch = initializeSearch;\r\n\tfunction initializeSearchbox(searchComponent, options) {\r\n\t exports.plugin = new Searchbox_1[\"default\"](searchComponent, options, exports.defaults);\r\n\t exports.plugin.initialize();\r\n\t}\r\n\texports.initializeSearchbox = initializeSearchbox;\r\n\tfunction _isExistingPlugin(searchComponent) {\r\n\t return exports.plugin && exports.plugin.element && exports.plugin.element.id === searchComponent.id;\r\n\t}\r\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar PluginOptions = (function () {\r\n\t function PluginOptions() {\r\n\t this.analyticsCustomMetadata = {};\r\n\t this.analyticsEndpointUri = \"/coveo/rest/v6/analytics/\";\r\n\t this.boostExpressions = \"\";\r\n\t this.clientLanguageFieldName = \"\";\r\n\t this.clientLanguageName = \"\";\r\n\t this.componentRefreshCallback = null;\r\n\t this.defaultSortType = \"Relevancy\";\r\n\t this.defaultSortField = \"\";\r\n\t this.defaultSortCriteriaNoSpace = \"Relevancy\";\r\n\t this.defaultSortCriteriaLowercase = \"relevancy\";\r\n\t this.enableClientSideLogging = false;\r\n\t this.externalCollections = [];\r\n\t this.externalSources = [];\r\n\t this.externalSourcesFromCurrentTab = [];\r\n\t this.externalCollectionsFromCurrentTab = [];\r\n\t this.filterExpression = \"\";\r\n\t this.filterResultOnLatestVersion = true;\r\n\t this.filterResultsOnCurrentCulture = false;\r\n\t this.indexSourceName = \"\";\r\n\t this.isEditingInPageEditor = false;\r\n\t this.isInitialized = false;\r\n\t this.isPreviewingInPageEditor = false;\r\n\t this.isPreviewingInPageEditorWithSimulatedDevice = false;\r\n\t this.keepOmniboxSuggestionsProvidersDefaultOrdering = true;\r\n\t this.latestVersionFieldName = \"\";\r\n\t this.omniboxDataRowIndexCounter = 0;\r\n\t this.pageFullPath = \"\";\r\n\t this.pageName = \"\";\r\n\t this.restEndpointUri = \"/coveo/rest/\";\r\n\t this.resultListInfiniteScrollContainer = window;\r\n\t this.searchboxPlaceholderText = \"\";\r\n\t this.searchRedirectionUrl = \"\";\r\n\t this.sendToSitecoreAnalytics = false;\r\n\t this.sitecoreItemId = \"\";\r\n\t this.sitecoreItemUri = \"\";\r\n\t this.siteName = \"\";\r\n\t }\r\n\t return PluginOptions;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = PluginOptions;\r\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\t/// \r\n\tvar _ = __webpack_require__(5);\r\n\tvar Coveo = __webpack_require__(6);\r\n\tvar Logger_1 = __webpack_require__(7);\r\n\tvar DefaultSortHandler_1 = __webpack_require__(8);\r\n\tvar ExpressionsHelper_1 = __webpack_require__(9);\r\n\tvar SearchEndpointHelper_1 = __webpack_require__(13);\r\n\tvar OmniboxResultListHandler_1 = __webpack_require__(14);\r\n\tvar Utilities_1 = __webpack_require__(15);\r\n\tvar CoveoForSitecoreBase = (function () {\r\n\t function CoveoForSitecoreBase(searchComponent, options, defaultOptions) {\r\n\t this.isInPageEditorCssClass = \"coveo-page-editor\";\r\n\t this.isEditingInPageEditorCssClass = \"coveo-page-editor-editing\";\r\n\t this.isPreviewingInPageEditorCssClass = \"coveo-page-editor-previewing\";\r\n\t this.isPreviewingInPageEditorWithSimulatedDeviceCssClass = \"coveo-page-editor-previewing-with-simulator\";\r\n\t this.element = searchComponent;\r\n\t this.domElement = Coveo.$$(searchComponent);\r\n\t this.options = _.extend({}, defaultOptions, options);\r\n\t this.logger = new Logger_1[\"default\"](this.options.enableClientSideLogging);\r\n\t this.expressionsHelper = new ExpressionsHelper_1[\"default\"]();\r\n\t this.omniboxResultListHandler = new OmniboxResultListHandler_1[\"default\"]();\r\n\t this.endpointCaller = new Coveo.EndpointCaller();\r\n\t this.defaultSortHandler = new DefaultSortHandler_1[\"default\"](options);\r\n\t }\r\n\t CoveoForSitecoreBase.prototype.initialize = function () {\r\n\t var _this = this;\r\n\t this.logger.log(\"Initializing search.\");\r\n\t this.initializeSearchOptions();\r\n\t if (!this.options.isInitialized) {\r\n\t this.addPageEditorCssClasses();\r\n\t this.addResultListHeaderCssClasses();\r\n\t this.domElement.on(Coveo.InitializationEvents.afterInitialization, function () {\r\n\t if (!Coveo.HashUtils.getValue(\"sort\", window.location.hash)) {\r\n\t Coveo.state(_this.element, \"sort\", _this.options.defaultSortCriteriaLowercase);\r\n\t }\r\n\t });\r\n\t // Merge the options we need to add with the options that are already set.\r\n\t var mergedOptions = Coveo.Utils.extendDeep({\r\n\t Facet: {},\r\n\t SearchInterface: {}\r\n\t }, this.options);\r\n\t Coveo.init(this.element, mergedOptions);\r\n\t }\r\n\t this.doPostInitializationActions();\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.doPostInitializationActions = function () {\r\n\t var _this = this;\r\n\t _.forEach(this.domElement.findAll(\".CoveoQuerybox input, .CoveoOmnibox input\"), function (element) {\r\n\t element.setAttribute(\"placeholder\", _this.options.searchboxPlaceholderText);\r\n\t });\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.initializeSearchOptions = function () {\r\n\t var _this = this;\r\n\t SearchEndpointHelper_1[\"default\"].initializeEndpoint(this.options);\r\n\t if (this.options.enableClientSideLogging) {\r\n\t Coveo.Logger.enable();\r\n\t }\r\n\t if (!this.options.isInitialized) {\r\n\t this.addPageEditorCssClasses();\r\n\t this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n\t _this.defaultSortHandler.addSortCriteriaToQuery(args.queryBuilder);\r\n\t });\r\n\t this.domElement.on(Coveo.InitializationEvents.afterInitialization, function () {\r\n\t _this.registerSearchEvents();\r\n\t _this.options.isInitialized = true;\r\n\t });\r\n\t if (this.options.sendToSitecoreAnalytics) {\r\n\t // Make sure to flush Analytics events on document clicks.\r\n\t window.onbeforeunload = function () {\r\n\t Coveo.Defer.flush();\r\n\t };\r\n\t this.domElement.on(Coveo.AnalyticsEvents.searchEvent, function (e, args) {\r\n\t _this.postAnalytics(\"searches\", \"searchEvents\", args.searchEvents);\r\n\t });\r\n\t this.domElement.on(Coveo.AnalyticsEvents.documentViewEvent, function (e, args) {\r\n\t _this.postAnalytics(\"documentViews\", \"documentViewEvents\", args.documentViewEvent);\r\n\t });\r\n\t this.domElement.on(Coveo.AnalyticsEvents.customEvent, function (e, args) {\r\n\t _this.postAnalytics(\"custom\", \"customEvents\", args.customEvent);\r\n\t });\r\n\t }\r\n\t }\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.postAnalytics = function (eventAction, eventType, eventData) {\r\n\t var _this = this;\r\n\t eventData = [].concat(eventData);\r\n\t eventData.forEach(function (data) {\r\n\t data.sitecoreItemId = _this.options.sitecoreItemId;\r\n\t });\r\n\t var postData = {};\r\n\t postData[eventType] = JSON.stringify(eventData);\r\n\t this.sendPostRequest(Utilities_1[\"default\"].appendTrailingSlash(this.options.analyticsEndpointUri) + eventAction, postData);\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.addPageEditorCssClasses = function () {\r\n\t if (this.isInPageEditor()) {\r\n\t this.domElement.addClass(this.isInPageEditorCssClass);\r\n\t if (this.options.isEditingInPageEditor) {\r\n\t this.domElement.addClass(this.isEditingInPageEditorCssClass);\r\n\t }\r\n\t if (this.options.isPreviewingInPageEditor) {\r\n\t this.domElement.addClass(this.isPreviewingInPageEditorCssClass);\r\n\t }\r\n\t if (this.options.isPreviewingInPageEditorWithSimulatedDevice) {\r\n\t this.domElement.addClass(this.isPreviewingInPageEditorWithSimulatedDeviceCssClass);\r\n\t }\r\n\t }\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.addResultListHeaderCssClasses = function () {\r\n\t // Both the mobile and full search interface does not use the\r\n\t // same CSS class for the result list header.\r\n\t var elements = this.getDomElementsMatchingSelector(\".coveo-results-header, .coveo-result-header-section\");\r\n\t _.filter(elements, function (element) {\r\n\t return typeof (element) !== \"undefined\" &&\r\n\t !element.hasClass(\"CoveoQuerySummary\") &&\r\n\t element.hasClass(\"CoveoQueryDuration\") &&\r\n\t element.hasClass(\"CoveoSort\");\r\n\t }).forEach(function (element) {\r\n\t element.addClass(\"coveo-empty\");\r\n\t });\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.getFilterExpressions = function () {\r\n\t return this.expressionsHelper.getFilterExpression(this.options);\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.registerSearchEvents = function () {\r\n\t var _this = this;\r\n\t this.logger.log(\"Registering search events.\");\r\n\t this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n\t var optionsWithTabContent = _this.getOptionsWithTabExternalContent(args.queryBuilder.tab);\r\n\t args.queryBuilder.advancedExpression.add(_this.expressionsHelper.getSearchExpression(optionsWithTabContent));\r\n\t args.queryBuilder.constantExpression.add(_this.expressionsHelper.getFilterExpression(optionsWithTabContent));\r\n\t });\r\n\t this.domElement.on(Coveo.AnalyticsEvents.changeAnalyticsCustomData, function (e, args) {\r\n\t var options = _this.options;\r\n\t if (options) {\r\n\t if (options.clientLanguageName) {\r\n\t args.language = options.clientLanguageName;\r\n\t }\r\n\t if (options.pageName) {\r\n\t args.originLevel1 = options.pageName;\r\n\t }\r\n\t if (options.pageFullPath) {\r\n\t args.originLevel3 = options.pageFullPath;\r\n\t }\r\n\t if (options.analyticsCustomMetadata) {\r\n\t args.metaObject = _.extend({}, args.metaObject, options.analyticsCustomMetadata);\r\n\t }\r\n\t }\r\n\t });\r\n\t if (this.options.componentRefreshCallback) {\r\n\t this.domElement.on(Coveo.QueryEvents.deferredQuerySuccess, function () {\r\n\t _this.options.componentRefreshCallback();\r\n\t });\r\n\t this.domElement.on(Coveo.QueryEvents.queryError, function () {\r\n\t _this.options.componentRefreshCallback();\r\n\t });\r\n\t }\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.isInPageEditor = function () {\r\n\t return this.options.isEditingInPageEditor ||\r\n\t this.options.isPreviewingInPageEditor ||\r\n\t this.options.isPreviewingInPageEditorWithSimulatedDevice;\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.configureOmnibox = function (options) {\r\n\t this.domElement.on(Coveo.OmniboxEvents.populateOmnibox, this.generatePopulateOmniboxFunction(options));\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.getOptionsWithTabExternalContent = function (currentTabId) {\r\n\t var filterExpressionOptions = _.extend({}, this.options);\r\n\t if (typeof (currentTabId) !== \"undefined\" && this.options.hasOwnProperty(currentTabId)) {\r\n\t var tabOptions = this.options[currentTabId];\r\n\t filterExpressionOptions.externalSourcesFromCurrentTab = tabOptions.externalSources;\r\n\t filterExpressionOptions.externalCollectionsFromCurrentTab = tabOptions.externalCollections;\r\n\t }\r\n\t return filterExpressionOptions;\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.generatePopulateOmniboxFunction = function (options) {\r\n\t var _this = this;\r\n\t var queryController = Coveo.get(this.element).queryController;\r\n\t return function (e, populateOmniboxObject) {\r\n\t _this.omniboxResultListHandler.populateOmniboxResultList(populateOmniboxObject, options, queryController);\r\n\t };\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.getDomElementsMatchingSelector = function (querySelector) {\r\n\t // Using .map to pass from NodeListOf to Array type. Can't do a direct cast.\r\n\t return _.map(document.querySelectorAll(querySelector), function (element) {\r\n\t return Coveo.$$(element);\r\n\t });\r\n\t };\r\n\t CoveoForSitecoreBase.prototype.sendPostRequest = function (url, postData) {\r\n\t var callOptions = {\r\n\t errorsAsSuccess: false,\r\n\t method: \"POST\",\r\n\t queryString: [],\r\n\t requestData: postData,\r\n\t url: url,\r\n\t responseType: \"text\",\r\n\t requestDataType: \"application/json\"\r\n\t };\r\n\t this.endpointCaller.call(callOptions);\r\n\t };\r\n\t return CoveoForSitecoreBase;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = CoveoForSitecoreBase;\r\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.8.3\n\t// http://underscorejs.org\n\t// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t// Underscore may be freely distributed under the MIT license.\n\t\n\t(function() {\n\t\n\t // Baseline setup\n\t // --------------\n\t\n\t // Establish the root object, `window` in the browser, or `exports` on the server.\n\t var root = this;\n\t\n\t // Save the previous value of the `_` variable.\n\t var previousUnderscore = root._;\n\t\n\t // Save bytes in the minified (but not gzipped) version:\n\t var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\t\n\t // Create quick reference variables for speed access to core prototypes.\n\t var\n\t push = ArrayProto.push,\n\t slice = ArrayProto.slice,\n\t toString = ObjProto.toString,\n\t hasOwnProperty = ObjProto.hasOwnProperty;\n\t\n\t // All **ECMAScript 5** native function implementations that we hope to use\n\t // are declared here.\n\t var\n\t nativeIsArray = Array.isArray,\n\t nativeKeys = Object.keys,\n\t nativeBind = FuncProto.bind,\n\t nativeCreate = Object.create;\n\t\n\t // Naked function reference for surrogate-prototype-swapping.\n\t var Ctor = function(){};\n\t\n\t // Create a safe reference to the Underscore object for use below.\n\t var _ = function(obj) {\n\t if (obj instanceof _) return obj;\n\t if (!(this instanceof _)) return new _(obj);\n\t this._wrapped = obj;\n\t };\n\t\n\t // Export the Underscore object for **Node.js**, with\n\t // backwards-compatibility for the old `require()` API. If we're in\n\t // the browser, add `_` as a global object.\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = _;\n\t }\n\t exports._ = _;\n\t } else {\n\t root._ = _;\n\t }\n\t\n\t // Current version.\n\t _.VERSION = '1.8.3';\n\t\n\t // Internal function that returns an efficient (for current engines) version\n\t // of the passed-in callback, to be repeatedly applied in other Underscore\n\t // functions.\n\t var optimizeCb = function(func, context, argCount) {\n\t if (context === void 0) return func;\n\t switch (argCount == null ? 3 : argCount) {\n\t case 1: return function(value) {\n\t return func.call(context, value);\n\t };\n\t case 2: return function(value, other) {\n\t return func.call(context, value, other);\n\t };\n\t case 3: return function(value, index, collection) {\n\t return func.call(context, value, index, collection);\n\t };\n\t case 4: return function(accumulator, value, index, collection) {\n\t return func.call(context, accumulator, value, index, collection);\n\t };\n\t }\n\t return function() {\n\t return func.apply(context, arguments);\n\t };\n\t };\n\t\n\t // A mostly-internal function to generate callbacks that can be applied\n\t // to each element in a collection, returning the desired result — either\n\t // identity, an arbitrary callback, a property matcher, or a property accessor.\n\t var cb = function(value, context, argCount) {\n\t if (value == null) return _.identity;\n\t if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n\t if (_.isObject(value)) return _.matcher(value);\n\t return _.property(value);\n\t };\n\t _.iteratee = function(value, context) {\n\t return cb(value, context, Infinity);\n\t };\n\t\n\t // An internal function for creating assigner functions.\n\t var createAssigner = function(keysFunc, undefinedOnly) {\n\t return function(obj) {\n\t var length = arguments.length;\n\t if (length < 2 || obj == null) return obj;\n\t for (var index = 1; index < length; index++) {\n\t var source = arguments[index],\n\t keys = keysFunc(source),\n\t l = keys.length;\n\t for (var i = 0; i < l; i++) {\n\t var key = keys[i];\n\t if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];\n\t }\n\t }\n\t return obj;\n\t };\n\t };\n\t\n\t // An internal function for creating a new object that inherits from another.\n\t var baseCreate = function(prototype) {\n\t if (!_.isObject(prototype)) return {};\n\t if (nativeCreate) return nativeCreate(prototype);\n\t Ctor.prototype = prototype;\n\t var result = new Ctor;\n\t Ctor.prototype = null;\n\t return result;\n\t };\n\t\n\t var property = function(key) {\n\t return function(obj) {\n\t return obj == null ? void 0 : obj[key];\n\t };\n\t };\n\t\n\t // Helper for collection methods to determine whether a collection\n\t // should be iterated as an array or as an object\n\t // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n\t // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n\t var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\t var getLength = property('length');\n\t var isArrayLike = function(collection) {\n\t var length = getLength(collection);\n\t return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n\t };\n\t\n\t // Collection Functions\n\t // --------------------\n\t\n\t // The cornerstone, an `each` implementation, aka `forEach`.\n\t // Handles raw objects in addition to array-likes. Treats all\n\t // sparse array-likes as if they were dense.\n\t _.each = _.forEach = function(obj, iteratee, context) {\n\t iteratee = optimizeCb(iteratee, context);\n\t var i, length;\n\t if (isArrayLike(obj)) {\n\t for (i = 0, length = obj.length; i < length; i++) {\n\t iteratee(obj[i], i, obj);\n\t }\n\t } else {\n\t var keys = _.keys(obj);\n\t for (i = 0, length = keys.length; i < length; i++) {\n\t iteratee(obj[keys[i]], keys[i], obj);\n\t }\n\t }\n\t return obj;\n\t };\n\t\n\t // Return the results of applying the iteratee to each element.\n\t _.map = _.collect = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length,\n\t results = Array(length);\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t results[index] = iteratee(obj[currentKey], currentKey, obj);\n\t }\n\t return results;\n\t };\n\t\n\t // Create a reducing function iterating left or right.\n\t function createReduce(dir) {\n\t // Optimized iterator function as using arguments.length\n\t // in the main function will deoptimize the, see #1991.\n\t function iterator(obj, iteratee, memo, keys, index, length) {\n\t for (; index >= 0 && index < length; index += dir) {\n\t var currentKey = keys ? keys[index] : index;\n\t memo = iteratee(memo, obj[currentKey], currentKey, obj);\n\t }\n\t return memo;\n\t }\n\t\n\t return function(obj, iteratee, memo, context) {\n\t iteratee = optimizeCb(iteratee, context, 4);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length,\n\t index = dir > 0 ? 0 : length - 1;\n\t // Determine the initial value if none is provided.\n\t if (arguments.length < 3) {\n\t memo = obj[keys ? keys[index] : index];\n\t index += dir;\n\t }\n\t return iterator(obj, iteratee, memo, keys, index, length);\n\t };\n\t }\n\t\n\t // **Reduce** builds up a single result from a list of values, aka `inject`,\n\t // or `foldl`.\n\t _.reduce = _.foldl = _.inject = createReduce(1);\n\t\n\t // The right-associative version of reduce, also known as `foldr`.\n\t _.reduceRight = _.foldr = createReduce(-1);\n\t\n\t // Return the first value which passes a truth test. Aliased as `detect`.\n\t _.find = _.detect = function(obj, predicate, context) {\n\t var key;\n\t if (isArrayLike(obj)) {\n\t key = _.findIndex(obj, predicate, context);\n\t } else {\n\t key = _.findKey(obj, predicate, context);\n\t }\n\t if (key !== void 0 && key !== -1) return obj[key];\n\t };\n\t\n\t // Return all the elements that pass a truth test.\n\t // Aliased as `select`.\n\t _.filter = _.select = function(obj, predicate, context) {\n\t var results = [];\n\t predicate = cb(predicate, context);\n\t _.each(obj, function(value, index, list) {\n\t if (predicate(value, index, list)) results.push(value);\n\t });\n\t return results;\n\t };\n\t\n\t // Return all the elements for which a truth test fails.\n\t _.reject = function(obj, predicate, context) {\n\t return _.filter(obj, _.negate(cb(predicate)), context);\n\t };\n\t\n\t // Determine whether all of the elements match a truth test.\n\t // Aliased as `all`.\n\t _.every = _.all = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length;\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t if (!predicate(obj[currentKey], currentKey, obj)) return false;\n\t }\n\t return true;\n\t };\n\t\n\t // Determine if at least one element in the object matches a truth test.\n\t // Aliased as `any`.\n\t _.some = _.any = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length;\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t if (predicate(obj[currentKey], currentKey, obj)) return true;\n\t }\n\t return false;\n\t };\n\t\n\t // Determine if the array or object contains a given item (using `===`).\n\t // Aliased as `includes` and `include`.\n\t _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n\t if (!isArrayLike(obj)) obj = _.values(obj);\n\t if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n\t return _.indexOf(obj, item, fromIndex) >= 0;\n\t };\n\t\n\t // Invoke a method (with arguments) on every item in a collection.\n\t _.invoke = function(obj, method) {\n\t var args = slice.call(arguments, 2);\n\t var isFunc = _.isFunction(method);\n\t return _.map(obj, function(value) {\n\t var func = isFunc ? method : value[method];\n\t return func == null ? func : func.apply(value, args);\n\t });\n\t };\n\t\n\t // Convenience version of a common use case of `map`: fetching a property.\n\t _.pluck = function(obj, key) {\n\t return _.map(obj, _.property(key));\n\t };\n\t\n\t // Convenience version of a common use case of `filter`: selecting only objects\n\t // containing specific `key:value` pairs.\n\t _.where = function(obj, attrs) {\n\t return _.filter(obj, _.matcher(attrs));\n\t };\n\t\n\t // Convenience version of a common use case of `find`: getting the first object\n\t // containing specific `key:value` pairs.\n\t _.findWhere = function(obj, attrs) {\n\t return _.find(obj, _.matcher(attrs));\n\t };\n\t\n\t // Return the maximum element (or element-based computation).\n\t _.max = function(obj, iteratee, context) {\n\t var result = -Infinity, lastComputed = -Infinity,\n\t value, computed;\n\t if (iteratee == null && obj != null) {\n\t obj = isArrayLike(obj) ? obj : _.values(obj);\n\t for (var i = 0, length = obj.length; i < length; i++) {\n\t value = obj[i];\n\t if (value > result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index, list) {\n\t computed = iteratee(value, index, list);\n\t if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n\t result = value;\n\t lastComputed = computed;\n\t }\n\t });\n\t }\n\t return result;\n\t };\n\t\n\t // Return the minimum element (or element-based computation).\n\t _.min = function(obj, iteratee, context) {\n\t var result = Infinity, lastComputed = Infinity,\n\t value, computed;\n\t if (iteratee == null && obj != null) {\n\t obj = isArrayLike(obj) ? obj : _.values(obj);\n\t for (var i = 0, length = obj.length; i < length; i++) {\n\t value = obj[i];\n\t if (value < result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index, list) {\n\t computed = iteratee(value, index, list);\n\t if (computed < lastComputed || computed === Infinity && result === Infinity) {\n\t result = value;\n\t lastComputed = computed;\n\t }\n\t });\n\t }\n\t return result;\n\t };\n\t\n\t // Shuffle a collection, using the modern version of the\n\t // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n\t _.shuffle = function(obj) {\n\t var set = isArrayLike(obj) ? obj : _.values(obj);\n\t var length = set.length;\n\t var shuffled = Array(length);\n\t for (var index = 0, rand; index < length; index++) {\n\t rand = _.random(0, index);\n\t if (rand !== index) shuffled[index] = shuffled[rand];\n\t shuffled[rand] = set[index];\n\t }\n\t return shuffled;\n\t };\n\t\n\t // Sample **n** random values from a collection.\n\t // If **n** is not specified, returns a single random element.\n\t // The internal `guard` argument allows it to work with `map`.\n\t _.sample = function(obj, n, guard) {\n\t if (n == null || guard) {\n\t if (!isArrayLike(obj)) obj = _.values(obj);\n\t return obj[_.random(obj.length - 1)];\n\t }\n\t return _.shuffle(obj).slice(0, Math.max(0, n));\n\t };\n\t\n\t // Sort the object's values by a criterion produced by an iteratee.\n\t _.sortBy = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t return _.pluck(_.map(obj, function(value, index, list) {\n\t return {\n\t value: value,\n\t index: index,\n\t criteria: iteratee(value, index, list)\n\t };\n\t }).sort(function(left, right) {\n\t var a = left.criteria;\n\t var b = right.criteria;\n\t if (a !== b) {\n\t if (a > b || a === void 0) return 1;\n\t if (a < b || b === void 0) return -1;\n\t }\n\t return left.index - right.index;\n\t }), 'value');\n\t };\n\t\n\t // An internal function used for aggregate \"group by\" operations.\n\t var group = function(behavior) {\n\t return function(obj, iteratee, context) {\n\t var result = {};\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index) {\n\t var key = iteratee(value, index, obj);\n\t behavior(result, value, key);\n\t });\n\t return result;\n\t };\n\t };\n\t\n\t // Groups the object's values by a criterion. Pass either a string attribute\n\t // to group by, or a function that returns the criterion.\n\t _.groupBy = group(function(result, value, key) {\n\t if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n\t });\n\t\n\t // Indexes the object's values by a criterion, similar to `groupBy`, but for\n\t // when you know that your index values will be unique.\n\t _.indexBy = group(function(result, value, key) {\n\t result[key] = value;\n\t });\n\t\n\t // Counts instances of an object that group by a certain criterion. Pass\n\t // either a string attribute to count by, or a function that returns the\n\t // criterion.\n\t _.countBy = group(function(result, value, key) {\n\t if (_.has(result, key)) result[key]++; else result[key] = 1;\n\t });\n\t\n\t // Safely create a real, live array from anything iterable.\n\t _.toArray = function(obj) {\n\t if (!obj) return [];\n\t if (_.isArray(obj)) return slice.call(obj);\n\t if (isArrayLike(obj)) return _.map(obj, _.identity);\n\t return _.values(obj);\n\t };\n\t\n\t // Return the number of elements in an object.\n\t _.size = function(obj) {\n\t if (obj == null) return 0;\n\t return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n\t };\n\t\n\t // Split a collection into two arrays: one whose elements all satisfy the given\n\t // predicate, and one whose elements all do not satisfy the predicate.\n\t _.partition = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var pass = [], fail = [];\n\t _.each(obj, function(value, key, obj) {\n\t (predicate(value, key, obj) ? pass : fail).push(value);\n\t });\n\t return [pass, fail];\n\t };\n\t\n\t // Array Functions\n\t // ---------------\n\t\n\t // Get the first element of an array. Passing **n** will return the first N\n\t // values in the array. Aliased as `head` and `take`. The **guard** check\n\t // allows it to work with `_.map`.\n\t _.first = _.head = _.take = function(array, n, guard) {\n\t if (array == null) return void 0;\n\t if (n == null || guard) return array[0];\n\t return _.initial(array, array.length - n);\n\t };\n\t\n\t // Returns everything but the last entry of the array. Especially useful on\n\t // the arguments object. Passing **n** will return all the values in\n\t // the array, excluding the last N.\n\t _.initial = function(array, n, guard) {\n\t return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n\t };\n\t\n\t // Get the last element of an array. Passing **n** will return the last N\n\t // values in the array.\n\t _.last = function(array, n, guard) {\n\t if (array == null) return void 0;\n\t if (n == null || guard) return array[array.length - 1];\n\t return _.rest(array, Math.max(0, array.length - n));\n\t };\n\t\n\t // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n\t // Especially useful on the arguments object. Passing an **n** will return\n\t // the rest N values in the array.\n\t _.rest = _.tail = _.drop = function(array, n, guard) {\n\t return slice.call(array, n == null || guard ? 1 : n);\n\t };\n\t\n\t // Trim out all falsy values from an array.\n\t _.compact = function(array) {\n\t return _.filter(array, _.identity);\n\t };\n\t\n\t // Internal implementation of a recursive `flatten` function.\n\t var flatten = function(input, shallow, strict, startIndex) {\n\t var output = [], idx = 0;\n\t for (var i = startIndex || 0, length = getLength(input); i < length; i++) {\n\t var value = input[i];\n\t if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n\t //flatten current level of array or arguments object\n\t if (!shallow) value = flatten(value, shallow, strict);\n\t var j = 0, len = value.length;\n\t output.length += len;\n\t while (j < len) {\n\t output[idx++] = value[j++];\n\t }\n\t } else if (!strict) {\n\t output[idx++] = value;\n\t }\n\t }\n\t return output;\n\t };\n\t\n\t // Flatten out an array, either recursively (by default), or just one level.\n\t _.flatten = function(array, shallow) {\n\t return flatten(array, shallow, false);\n\t };\n\t\n\t // Return a version of the array that does not contain the specified value(s).\n\t _.without = function(array) {\n\t return _.difference(array, slice.call(arguments, 1));\n\t };\n\t\n\t // Produce a duplicate-free version of the array. If the array has already\n\t // been sorted, you have the option of using a faster algorithm.\n\t // Aliased as `unique`.\n\t _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n\t if (!_.isBoolean(isSorted)) {\n\t context = iteratee;\n\t iteratee = isSorted;\n\t isSorted = false;\n\t }\n\t if (iteratee != null) iteratee = cb(iteratee, context);\n\t var result = [];\n\t var seen = [];\n\t for (var i = 0, length = getLength(array); i < length; i++) {\n\t var value = array[i],\n\t computed = iteratee ? iteratee(value, i, array) : value;\n\t if (isSorted) {\n\t if (!i || seen !== computed) result.push(value);\n\t seen = computed;\n\t } else if (iteratee) {\n\t if (!_.contains(seen, computed)) {\n\t seen.push(computed);\n\t result.push(value);\n\t }\n\t } else if (!_.contains(result, value)) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t };\n\t\n\t // Produce an array that contains the union: each distinct element from all of\n\t // the passed-in arrays.\n\t _.union = function() {\n\t return _.uniq(flatten(arguments, true, true));\n\t };\n\t\n\t // Produce an array that contains every item shared between all the\n\t // passed-in arrays.\n\t _.intersection = function(array) {\n\t var result = [];\n\t var argsLength = arguments.length;\n\t for (var i = 0, length = getLength(array); i < length; i++) {\n\t var item = array[i];\n\t if (_.contains(result, item)) continue;\n\t for (var j = 1; j < argsLength; j++) {\n\t if (!_.contains(arguments[j], item)) break;\n\t }\n\t if (j === argsLength) result.push(item);\n\t }\n\t return result;\n\t };\n\t\n\t // Take the difference between one array and a number of other arrays.\n\t // Only the elements present in just the first array will remain.\n\t _.difference = function(array) {\n\t var rest = flatten(arguments, true, true, 1);\n\t return _.filter(array, function(value){\n\t return !_.contains(rest, value);\n\t });\n\t };\n\t\n\t // Zip together multiple lists into a single array -- elements that share\n\t // an index go together.\n\t _.zip = function() {\n\t return _.unzip(arguments);\n\t };\n\t\n\t // Complement of _.zip. Unzip accepts an array of arrays and groups\n\t // each array's elements on shared indices\n\t _.unzip = function(array) {\n\t var length = array && _.max(array, getLength).length || 0;\n\t var result = Array(length);\n\t\n\t for (var index = 0; index < length; index++) {\n\t result[index] = _.pluck(array, index);\n\t }\n\t return result;\n\t };\n\t\n\t // Converts lists into objects. Pass either a single array of `[key, value]`\n\t // pairs, or two parallel arrays of the same length -- one of keys, and one of\n\t // the corresponding values.\n\t _.object = function(list, values) {\n\t var result = {};\n\t for (var i = 0, length = getLength(list); i < length; i++) {\n\t if (values) {\n\t result[list[i]] = values[i];\n\t } else {\n\t result[list[i][0]] = list[i][1];\n\t }\n\t }\n\t return result;\n\t };\n\t\n\t // Generator function to create the findIndex and findLastIndex functions\n\t function createPredicateIndexFinder(dir) {\n\t return function(array, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var length = getLength(array);\n\t var index = dir > 0 ? 0 : length - 1;\n\t for (; index >= 0 && index < length; index += dir) {\n\t if (predicate(array[index], index, array)) return index;\n\t }\n\t return -1;\n\t };\n\t }\n\t\n\t // Returns the first index on an array-like that passes a predicate test\n\t _.findIndex = createPredicateIndexFinder(1);\n\t _.findLastIndex = createPredicateIndexFinder(-1);\n\t\n\t // Use a comparator function to figure out the smallest index at which\n\t // an object should be inserted so as to maintain order. Uses binary search.\n\t _.sortedIndex = function(array, obj, iteratee, context) {\n\t iteratee = cb(iteratee, context, 1);\n\t var value = iteratee(obj);\n\t var low = 0, high = getLength(array);\n\t while (low < high) {\n\t var mid = Math.floor((low + high) / 2);\n\t if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n\t }\n\t return low;\n\t };\n\t\n\t // Generator function to create the indexOf and lastIndexOf functions\n\t function createIndexFinder(dir, predicateFind, sortedIndex) {\n\t return function(array, item, idx) {\n\t var i = 0, length = getLength(array);\n\t if (typeof idx == 'number') {\n\t if (dir > 0) {\n\t i = idx >= 0 ? idx : Math.max(idx + length, i);\n\t } else {\n\t length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n\t }\n\t } else if (sortedIndex && idx && length) {\n\t idx = sortedIndex(array, item);\n\t return array[idx] === item ? idx : -1;\n\t }\n\t if (item !== item) {\n\t idx = predicateFind(slice.call(array, i, length), _.isNaN);\n\t return idx >= 0 ? idx + i : -1;\n\t }\n\t for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n\t if (array[idx] === item) return idx;\n\t }\n\t return -1;\n\t };\n\t }\n\t\n\t // Return the position of the first occurrence of an item in an array,\n\t // or -1 if the item is not included in the array.\n\t // If the array is large and already in sort order, pass `true`\n\t // for **isSorted** to use binary search.\n\t _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n\t _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\t\n\t // Generate an integer Array containing an arithmetic progression. A port of\n\t // the native Python `range()` function. See\n\t // [the Python documentation](http://docs.python.org/library/functions.html#range).\n\t _.range = function(start, stop, step) {\n\t if (stop == null) {\n\t stop = start || 0;\n\t start = 0;\n\t }\n\t step = step || 1;\n\t\n\t var length = Math.max(Math.ceil((stop - start) / step), 0);\n\t var range = Array(length);\n\t\n\t for (var idx = 0; idx < length; idx++, start += step) {\n\t range[idx] = start;\n\t }\n\t\n\t return range;\n\t };\n\t\n\t // Function (ahem) Functions\n\t // ------------------\n\t\n\t // Determines whether to execute a function as a constructor\n\t // or a normal function with the provided arguments\n\t var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n\t if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n\t var self = baseCreate(sourceFunc.prototype);\n\t var result = sourceFunc.apply(self, args);\n\t if (_.isObject(result)) return result;\n\t return self;\n\t };\n\t\n\t // Create a function bound to a given object (assigning `this`, and arguments,\n\t // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n\t // available.\n\t _.bind = function(func, context) {\n\t if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n\t if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n\t var args = slice.call(arguments, 2);\n\t var bound = function() {\n\t return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));\n\t };\n\t return bound;\n\t };\n\t\n\t // Partially apply a function by creating a version that has had some of its\n\t // arguments pre-filled, without changing its dynamic `this` context. _ acts\n\t // as a placeholder, allowing any combination of arguments to be pre-filled.\n\t _.partial = function(func) {\n\t var boundArgs = slice.call(arguments, 1);\n\t var bound = function() {\n\t var position = 0, length = boundArgs.length;\n\t var args = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];\n\t }\n\t while (position < arguments.length) args.push(arguments[position++]);\n\t return executeBound(func, bound, this, this, args);\n\t };\n\t return bound;\n\t };\n\t\n\t // Bind a number of an object's methods to that object. Remaining arguments\n\t // are the method names to be bound. Useful for ensuring that all callbacks\n\t // defined on an object belong to it.\n\t _.bindAll = function(obj) {\n\t var i, length = arguments.length, key;\n\t if (length <= 1) throw new Error('bindAll must be passed function names');\n\t for (i = 1; i < length; i++) {\n\t key = arguments[i];\n\t obj[key] = _.bind(obj[key], obj);\n\t }\n\t return obj;\n\t };\n\t\n\t // Memoize an expensive function by storing its results.\n\t _.memoize = function(func, hasher) {\n\t var memoize = function(key) {\n\t var cache = memoize.cache;\n\t var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n\t if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n\t return cache[address];\n\t };\n\t memoize.cache = {};\n\t return memoize;\n\t };\n\t\n\t // Delays a function for the given number of milliseconds, and then calls\n\t // it with the arguments supplied.\n\t _.delay = function(func, wait) {\n\t var args = slice.call(arguments, 2);\n\t return setTimeout(function(){\n\t return func.apply(null, args);\n\t }, wait);\n\t };\n\t\n\t // Defers a function, scheduling it to run after the current call stack has\n\t // cleared.\n\t _.defer = _.partial(_.delay, _, 1);\n\t\n\t // Returns a function, that, when invoked, will only be triggered at most once\n\t // during a given window of time. Normally, the throttled function will run\n\t // as much as it can, without ever going more than once per `wait` duration;\n\t // but if you'd like to disable the execution on the leading edge, pass\n\t // `{leading: false}`. To disable execution on the trailing edge, ditto.\n\t _.throttle = function(func, wait, options) {\n\t var context, args, result;\n\t var timeout = null;\n\t var previous = 0;\n\t if (!options) options = {};\n\t var later = function() {\n\t previous = options.leading === false ? 0 : _.now();\n\t timeout = null;\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t };\n\t return function() {\n\t var now = _.now();\n\t if (!previous && options.leading === false) previous = now;\n\t var remaining = wait - (now - previous);\n\t context = this;\n\t args = arguments;\n\t if (remaining <= 0 || remaining > wait) {\n\t if (timeout) {\n\t clearTimeout(timeout);\n\t timeout = null;\n\t }\n\t previous = now;\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t } else if (!timeout && options.trailing !== false) {\n\t timeout = setTimeout(later, remaining);\n\t }\n\t return result;\n\t };\n\t };\n\t\n\t // Returns a function, that, as long as it continues to be invoked, will not\n\t // be triggered. The function will be called after it stops being called for\n\t // N milliseconds. If `immediate` is passed, trigger the function on the\n\t // leading edge, instead of the trailing.\n\t _.debounce = function(func, wait, immediate) {\n\t var timeout, args, context, timestamp, result;\n\t\n\t var later = function() {\n\t var last = _.now() - timestamp;\n\t\n\t if (last < wait && last >= 0) {\n\t timeout = setTimeout(later, wait - last);\n\t } else {\n\t timeout = null;\n\t if (!immediate) {\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t }\n\t }\n\t };\n\t\n\t return function() {\n\t context = this;\n\t args = arguments;\n\t timestamp = _.now();\n\t var callNow = immediate && !timeout;\n\t if (!timeout) timeout = setTimeout(later, wait);\n\t if (callNow) {\n\t result = func.apply(context, args);\n\t context = args = null;\n\t }\n\t\n\t return result;\n\t };\n\t };\n\t\n\t // Returns the first function passed as an argument to the second,\n\t // allowing you to adjust arguments, run code before and after, and\n\t // conditionally execute the original function.\n\t _.wrap = function(func, wrapper) {\n\t return _.partial(wrapper, func);\n\t };\n\t\n\t // Returns a negated version of the passed-in predicate.\n\t _.negate = function(predicate) {\n\t return function() {\n\t return !predicate.apply(this, arguments);\n\t };\n\t };\n\t\n\t // Returns a function that is the composition of a list of functions, each\n\t // consuming the return value of the function that follows.\n\t _.compose = function() {\n\t var args = arguments;\n\t var start = args.length - 1;\n\t return function() {\n\t var i = start;\n\t var result = args[start].apply(this, arguments);\n\t while (i--) result = args[i].call(this, result);\n\t return result;\n\t };\n\t };\n\t\n\t // Returns a function that will only be executed on and after the Nth call.\n\t _.after = function(times, func) {\n\t return function() {\n\t if (--times < 1) {\n\t return func.apply(this, arguments);\n\t }\n\t };\n\t };\n\t\n\t // Returns a function that will only be executed up to (but not including) the Nth call.\n\t _.before = function(times, func) {\n\t var memo;\n\t return function() {\n\t if (--times > 0) {\n\t memo = func.apply(this, arguments);\n\t }\n\t if (times <= 1) func = null;\n\t return memo;\n\t };\n\t };\n\t\n\t // Returns a function that will be executed at most one time, no matter how\n\t // often you call it. Useful for lazy initialization.\n\t _.once = _.partial(_.before, 2);\n\t\n\t // Object Functions\n\t // ----------------\n\t\n\t // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n\t var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n\t var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n\t 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\t\n\t function collectNonEnumProps(obj, keys) {\n\t var nonEnumIdx = nonEnumerableProps.length;\n\t var constructor = obj.constructor;\n\t var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;\n\t\n\t // Constructor is a special case.\n\t var prop = 'constructor';\n\t if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\t\n\t while (nonEnumIdx--) {\n\t prop = nonEnumerableProps[nonEnumIdx];\n\t if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n\t keys.push(prop);\n\t }\n\t }\n\t }\n\t\n\t // Retrieve the names of an object's own properties.\n\t // Delegates to **ECMAScript 5**'s native `Object.keys`\n\t _.keys = function(obj) {\n\t if (!_.isObject(obj)) return [];\n\t if (nativeKeys) return nativeKeys(obj);\n\t var keys = [];\n\t for (var key in obj) if (_.has(obj, key)) keys.push(key);\n\t // Ahem, IE < 9.\n\t if (hasEnumBug) collectNonEnumProps(obj, keys);\n\t return keys;\n\t };\n\t\n\t // Retrieve all the property names of an object.\n\t _.allKeys = function(obj) {\n\t if (!_.isObject(obj)) return [];\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t // Ahem, IE < 9.\n\t if (hasEnumBug) collectNonEnumProps(obj, keys);\n\t return keys;\n\t };\n\t\n\t // Retrieve the values of an object's properties.\n\t _.values = function(obj) {\n\t var keys = _.keys(obj);\n\t var length = keys.length;\n\t var values = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t values[i] = obj[keys[i]];\n\t }\n\t return values;\n\t };\n\t\n\t // Returns the results of applying the iteratee to each element of the object\n\t // In contrast to _.map it returns an object\n\t _.mapObject = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t var keys = _.keys(obj),\n\t length = keys.length,\n\t results = {},\n\t currentKey;\n\t for (var index = 0; index < length; index++) {\n\t currentKey = keys[index];\n\t results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n\t }\n\t return results;\n\t };\n\t\n\t // Convert an object into a list of `[key, value]` pairs.\n\t _.pairs = function(obj) {\n\t var keys = _.keys(obj);\n\t var length = keys.length;\n\t var pairs = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t pairs[i] = [keys[i], obj[keys[i]]];\n\t }\n\t return pairs;\n\t };\n\t\n\t // Invert the keys and values of an object. The values must be serializable.\n\t _.invert = function(obj) {\n\t var result = {};\n\t var keys = _.keys(obj);\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t result[obj[keys[i]]] = keys[i];\n\t }\n\t return result;\n\t };\n\t\n\t // Return a sorted list of the function names available on the object.\n\t // Aliased as `methods`\n\t _.functions = _.methods = function(obj) {\n\t var names = [];\n\t for (var key in obj) {\n\t if (_.isFunction(obj[key])) names.push(key);\n\t }\n\t return names.sort();\n\t };\n\t\n\t // Extend a given object with all the properties in passed-in object(s).\n\t _.extend = createAssigner(_.allKeys);\n\t\n\t // Assigns a given object with all the own properties in the passed-in object(s)\n\t // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n\t _.extendOwn = _.assign = createAssigner(_.keys);\n\t\n\t // Returns the first key on an object that passes a predicate test\n\t _.findKey = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = _.keys(obj), key;\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t key = keys[i];\n\t if (predicate(obj[key], key, obj)) return key;\n\t }\n\t };\n\t\n\t // Return a copy of the object only containing the whitelisted properties.\n\t _.pick = function(object, oiteratee, context) {\n\t var result = {}, obj = object, iteratee, keys;\n\t if (obj == null) return result;\n\t if (_.isFunction(oiteratee)) {\n\t keys = _.allKeys(obj);\n\t iteratee = optimizeCb(oiteratee, context);\n\t } else {\n\t keys = flatten(arguments, false, false, 1);\n\t iteratee = function(value, key, obj) { return key in obj; };\n\t obj = Object(obj);\n\t }\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t var key = keys[i];\n\t var value = obj[key];\n\t if (iteratee(value, key, obj)) result[key] = value;\n\t }\n\t return result;\n\t };\n\t\n\t // Return a copy of the object without the blacklisted properties.\n\t _.omit = function(obj, iteratee, context) {\n\t if (_.isFunction(iteratee)) {\n\t iteratee = _.negate(iteratee);\n\t } else {\n\t var keys = _.map(flatten(arguments, false, false, 1), String);\n\t iteratee = function(value, key) {\n\t return !_.contains(keys, key);\n\t };\n\t }\n\t return _.pick(obj, iteratee, context);\n\t };\n\t\n\t // Fill in a given object with default properties.\n\t _.defaults = createAssigner(_.allKeys, true);\n\t\n\t // Creates an object that inherits from the given prototype object.\n\t // If additional properties are provided then they will be added to the\n\t // created object.\n\t _.create = function(prototype, props) {\n\t var result = baseCreate(prototype);\n\t if (props) _.extendOwn(result, props);\n\t return result;\n\t };\n\t\n\t // Create a (shallow-cloned) duplicate of an object.\n\t _.clone = function(obj) {\n\t if (!_.isObject(obj)) return obj;\n\t return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n\t };\n\t\n\t // Invokes interceptor with the obj, and then returns obj.\n\t // The primary purpose of this method is to \"tap into\" a method chain, in\n\t // order to perform operations on intermediate results within the chain.\n\t _.tap = function(obj, interceptor) {\n\t interceptor(obj);\n\t return obj;\n\t };\n\t\n\t // Returns whether an object has a given set of `key:value` pairs.\n\t _.isMatch = function(object, attrs) {\n\t var keys = _.keys(attrs), length = keys.length;\n\t if (object == null) return !length;\n\t var obj = Object(object);\n\t for (var i = 0; i < length; i++) {\n\t var key = keys[i];\n\t if (attrs[key] !== obj[key] || !(key in obj)) return false;\n\t }\n\t return true;\n\t };\n\t\n\t\n\t // Internal recursive comparison function for `isEqual`.\n\t var eq = function(a, b, aStack, bStack) {\n\t // Identical objects are equal. `0 === -0`, but they aren't identical.\n\t // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n\t if (a === b) return a !== 0 || 1 / a === 1 / b;\n\t // A strict comparison is necessary because `null == undefined`.\n\t if (a == null || b == null) return a === b;\n\t // Unwrap any wrapped objects.\n\t if (a instanceof _) a = a._wrapped;\n\t if (b instanceof _) b = b._wrapped;\n\t // Compare `[[Class]]` names.\n\t var className = toString.call(a);\n\t if (className !== toString.call(b)) return false;\n\t switch (className) {\n\t // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n\t case '[object RegExp]':\n\t // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n\t case '[object String]':\n\t // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n\t // equivalent to `new String(\"5\")`.\n\t return '' + a === '' + b;\n\t case '[object Number]':\n\t // `NaN`s are equivalent, but non-reflexive.\n\t // Object(NaN) is equivalent to NaN\n\t if (+a !== +a) return +b !== +b;\n\t // An `egal` comparison is performed for other numeric values.\n\t return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n\t case '[object Date]':\n\t case '[object Boolean]':\n\t // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n\t // millisecond representations. Note that invalid dates with millisecond representations\n\t // of `NaN` are not equivalent.\n\t return +a === +b;\n\t }\n\t\n\t var areArrays = className === '[object Array]';\n\t if (!areArrays) {\n\t if (typeof a != 'object' || typeof b != 'object') return false;\n\t\n\t // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n\t // from different frames are.\n\t var aCtor = a.constructor, bCtor = b.constructor;\n\t if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n\t _.isFunction(bCtor) && bCtor instanceof bCtor)\n\t && ('constructor' in a && 'constructor' in b)) {\n\t return false;\n\t }\n\t }\n\t // Assume equality for cyclic structures. The algorithm for detecting cyclic\n\t // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\t\n\t // Initializing stack of traversed objects.\n\t // It's done here since we only need them for objects and arrays comparison.\n\t aStack = aStack || [];\n\t bStack = bStack || [];\n\t var length = aStack.length;\n\t while (length--) {\n\t // Linear search. Performance is inversely proportional to the number of\n\t // unique nested structures.\n\t if (aStack[length] === a) return bStack[length] === b;\n\t }\n\t\n\t // Add the first object to the stack of traversed objects.\n\t aStack.push(a);\n\t bStack.push(b);\n\t\n\t // Recursively compare objects and arrays.\n\t if (areArrays) {\n\t // Compare array lengths to determine if a deep comparison is necessary.\n\t length = a.length;\n\t if (length !== b.length) return false;\n\t // Deep compare the contents, ignoring non-numeric properties.\n\t while (length--) {\n\t if (!eq(a[length], b[length], aStack, bStack)) return false;\n\t }\n\t } else {\n\t // Deep compare objects.\n\t var keys = _.keys(a), key;\n\t length = keys.length;\n\t // Ensure that both objects contain the same number of properties before comparing deep equality.\n\t if (_.keys(b).length !== length) return false;\n\t while (length--) {\n\t // Deep compare each member\n\t key = keys[length];\n\t if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n\t }\n\t }\n\t // Remove the first object from the stack of traversed objects.\n\t aStack.pop();\n\t bStack.pop();\n\t return true;\n\t };\n\t\n\t // Perform a deep comparison to check if two objects are equal.\n\t _.isEqual = function(a, b) {\n\t return eq(a, b);\n\t };\n\t\n\t // Is a given array, string, or object empty?\n\t // An \"empty\" object has no enumerable own-properties.\n\t _.isEmpty = function(obj) {\n\t if (obj == null) return true;\n\t if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n\t return _.keys(obj).length === 0;\n\t };\n\t\n\t // Is a given value a DOM element?\n\t _.isElement = function(obj) {\n\t return !!(obj && obj.nodeType === 1);\n\t };\n\t\n\t // Is a given value an array?\n\t // Delegates to ECMA5's native Array.isArray\n\t _.isArray = nativeIsArray || function(obj) {\n\t return toString.call(obj) === '[object Array]';\n\t };\n\t\n\t // Is a given variable an object?\n\t _.isObject = function(obj) {\n\t var type = typeof obj;\n\t return type === 'function' || type === 'object' && !!obj;\n\t };\n\t\n\t // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.\n\t _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {\n\t _['is' + name] = function(obj) {\n\t return toString.call(obj) === '[object ' + name + ']';\n\t };\n\t });\n\t\n\t // Define a fallback version of the method in browsers (ahem, IE < 9), where\n\t // there isn't any inspectable \"Arguments\" type.\n\t if (!_.isArguments(arguments)) {\n\t _.isArguments = function(obj) {\n\t return _.has(obj, 'callee');\n\t };\n\t }\n\t\n\t // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n\t // IE 11 (#1621), and in Safari 8 (#1929).\n\t if (typeof /./ != 'function' && typeof Int8Array != 'object') {\n\t _.isFunction = function(obj) {\n\t return typeof obj == 'function' || false;\n\t };\n\t }\n\t\n\t // Is a given object a finite number?\n\t _.isFinite = function(obj) {\n\t return isFinite(obj) && !isNaN(parseFloat(obj));\n\t };\n\t\n\t // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n\t _.isNaN = function(obj) {\n\t return _.isNumber(obj) && obj !== +obj;\n\t };\n\t\n\t // Is a given value a boolean?\n\t _.isBoolean = function(obj) {\n\t return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n\t };\n\t\n\t // Is a given value equal to null?\n\t _.isNull = function(obj) {\n\t return obj === null;\n\t };\n\t\n\t // Is a given variable undefined?\n\t _.isUndefined = function(obj) {\n\t return obj === void 0;\n\t };\n\t\n\t // Shortcut function for checking if an object has a given property directly\n\t // on itself (in other words, not on a prototype).\n\t _.has = function(obj, key) {\n\t return obj != null && hasOwnProperty.call(obj, key);\n\t };\n\t\n\t // Utility Functions\n\t // -----------------\n\t\n\t // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n\t // previous owner. Returns a reference to the Underscore object.\n\t _.noConflict = function() {\n\t root._ = previousUnderscore;\n\t return this;\n\t };\n\t\n\t // Keep the identity function around for default iteratees.\n\t _.identity = function(value) {\n\t return value;\n\t };\n\t\n\t // Predicate-generating functions. Often useful outside of Underscore.\n\t _.constant = function(value) {\n\t return function() {\n\t return value;\n\t };\n\t };\n\t\n\t _.noop = function(){};\n\t\n\t _.property = property;\n\t\n\t // Generates a function for a given object that returns a given property.\n\t _.propertyOf = function(obj) {\n\t return obj == null ? function(){} : function(key) {\n\t return obj[key];\n\t };\n\t };\n\t\n\t // Returns a predicate for checking whether an object has a given set of\n\t // `key:value` pairs.\n\t _.matcher = _.matches = function(attrs) {\n\t attrs = _.extendOwn({}, attrs);\n\t return function(obj) {\n\t return _.isMatch(obj, attrs);\n\t };\n\t };\n\t\n\t // Run a function **n** times.\n\t _.times = function(n, iteratee, context) {\n\t var accum = Array(Math.max(0, n));\n\t iteratee = optimizeCb(iteratee, context, 1);\n\t for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n\t return accum;\n\t };\n\t\n\t // Return a random integer between min and max (inclusive).\n\t _.random = function(min, max) {\n\t if (max == null) {\n\t max = min;\n\t min = 0;\n\t }\n\t return min + Math.floor(Math.random() * (max - min + 1));\n\t };\n\t\n\t // A (possibly faster) way to get the current timestamp as an integer.\n\t _.now = Date.now || function() {\n\t return new Date().getTime();\n\t };\n\t\n\t // List of HTML entities for escaping.\n\t var escapeMap = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '\"': '"',\n\t \"'\": ''',\n\t '`': '`'\n\t };\n\t var unescapeMap = _.invert(escapeMap);\n\t\n\t // Functions for escaping and unescaping strings to/from HTML interpolation.\n\t var createEscaper = function(map) {\n\t var escaper = function(match) {\n\t return map[match];\n\t };\n\t // Regexes for identifying a key that needs to be escaped\n\t var source = '(?:' + _.keys(map).join('|') + ')';\n\t var testRegexp = RegExp(source);\n\t var replaceRegexp = RegExp(source, 'g');\n\t return function(string) {\n\t string = string == null ? '' : '' + string;\n\t return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n\t };\n\t };\n\t _.escape = createEscaper(escapeMap);\n\t _.unescape = createEscaper(unescapeMap);\n\t\n\t // If the value of the named `property` is a function then invoke it with the\n\t // `object` as context; otherwise, return it.\n\t _.result = function(object, property, fallback) {\n\t var value = object == null ? void 0 : object[property];\n\t if (value === void 0) {\n\t value = fallback;\n\t }\n\t return _.isFunction(value) ? value.call(object) : value;\n\t };\n\t\n\t // Generate a unique integer id (unique within the entire client session).\n\t // Useful for temporary DOM ids.\n\t var idCounter = 0;\n\t _.uniqueId = function(prefix) {\n\t var id = ++idCounter + '';\n\t return prefix ? prefix + id : id;\n\t };\n\t\n\t // By default, Underscore uses ERB-style template delimiters, change the\n\t // following template settings to use alternative delimiters.\n\t _.templateSettings = {\n\t evaluate : /<%([\\s\\S]+?)%>/g,\n\t interpolate : /<%=([\\s\\S]+?)%>/g,\n\t escape : /<%-([\\s\\S]+?)%>/g\n\t };\n\t\n\t // When customizing `templateSettings`, if you don't want to define an\n\t // interpolation, evaluation or escaping regex, we need one that is\n\t // guaranteed not to match.\n\t var noMatch = /(.)^/;\n\t\n\t // Certain characters need to be escaped so that they can be put into a\n\t // string literal.\n\t var escapes = {\n\t \"'\": \"'\",\n\t '\\\\': '\\\\',\n\t '\\r': 'r',\n\t '\\n': 'n',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t };\n\t\n\t var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\t\n\t var escapeChar = function(match) {\n\t return '\\\\' + escapes[match];\n\t };\n\t\n\t // JavaScript micro-templating, similar to John Resig's implementation.\n\t // Underscore templating handles arbitrary delimiters, preserves whitespace,\n\t // and correctly escapes quotes within interpolated code.\n\t // NB: `oldSettings` only exists for backwards compatibility.\n\t _.template = function(text, settings, oldSettings) {\n\t if (!settings && oldSettings) settings = oldSettings;\n\t settings = _.defaults({}, settings, _.templateSettings);\n\t\n\t // Combine delimiters into one regular expression via alternation.\n\t var matcher = RegExp([\n\t (settings.escape || noMatch).source,\n\t (settings.interpolate || noMatch).source,\n\t (settings.evaluate || noMatch).source\n\t ].join('|') + '|$', 'g');\n\t\n\t // Compile the template source, escaping string literals appropriately.\n\t var index = 0;\n\t var source = \"__p+='\";\n\t text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n\t source += text.slice(index, offset).replace(escaper, escapeChar);\n\t index = offset + match.length;\n\t\n\t if (escape) {\n\t source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n\t } else if (interpolate) {\n\t source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n\t } else if (evaluate) {\n\t source += \"';\\n\" + evaluate + \"\\n__p+='\";\n\t }\n\t\n\t // Adobe VMs need the match returned to produce the correct offest.\n\t return match;\n\t });\n\t source += \"';\\n\";\n\t\n\t // If a variable is not specified, place data values in local scope.\n\t if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\t\n\t source = \"var __t,__p='',__j=Array.prototype.join,\" +\n\t \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n\t source + 'return __p;\\n';\n\t\n\t try {\n\t var render = new Function(settings.variable || 'obj', '_', source);\n\t } catch (e) {\n\t e.source = source;\n\t throw e;\n\t }\n\t\n\t var template = function(data) {\n\t return render.call(this, data, _);\n\t };\n\t\n\t // Provide the compiled source as a convenience for precompilation.\n\t var argument = settings.variable || 'obj';\n\t template.source = 'function(' + argument + '){\\n' + source + '}';\n\t\n\t return template;\n\t };\n\t\n\t // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n\t _.chain = function(obj) {\n\t var instance = _(obj);\n\t instance._chain = true;\n\t return instance;\n\t };\n\t\n\t // OOP\n\t // ---------------\n\t // If Underscore is called as a function, it returns a wrapped object that\n\t // can be used OO-style. This wrapper holds altered versions of all the\n\t // underscore functions. Wrapped objects may be chained.\n\t\n\t // Helper function to continue chaining intermediate results.\n\t var result = function(instance, obj) {\n\t return instance._chain ? _(obj).chain() : obj;\n\t };\n\t\n\t // Add your own custom functions to the Underscore object.\n\t _.mixin = function(obj) {\n\t _.each(_.functions(obj), function(name) {\n\t var func = _[name] = obj[name];\n\t _.prototype[name] = function() {\n\t var args = [this._wrapped];\n\t push.apply(args, arguments);\n\t return result(this, func.apply(_, args));\n\t };\n\t });\n\t };\n\t\n\t // Add all of the Underscore functions to the wrapper object.\n\t _.mixin(_);\n\t\n\t // Add all mutator Array functions to the wrapper.\n\t _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n\t var method = ArrayProto[name];\n\t _.prototype[name] = function() {\n\t var obj = this._wrapped;\n\t method.apply(obj, arguments);\n\t if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n\t return result(this, obj);\n\t };\n\t });\n\t\n\t // Add all accessor Array functions to the wrapper.\n\t _.each(['concat', 'join', 'slice'], function(name) {\n\t var method = ArrayProto[name];\n\t _.prototype[name] = function() {\n\t return result(this, method.apply(this._wrapped, arguments));\n\t };\n\t });\n\t\n\t // Extracts the result from a wrapped and chained object.\n\t _.prototype.value = function() {\n\t return this._wrapped;\n\t };\n\t\n\t // Provide unwrapping proxy for some methods used in engine operations\n\t // such as arithmetic and JSON stringification.\n\t _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\t\n\t _.prototype.toString = function() {\n\t return '' + this._wrapped;\n\t };\n\t\n\t // AMD registration happens at the end for compatibility with AMD loaders\n\t // that may not enforce next-turn semantics on modules. Even though general\n\t // practice for AMD registration is to be anonymous, underscore registers\n\t // as a named module because, like jQuery, it is a base library that is\n\t // popular enough to be bundled in a third party lib, but not be part of\n\t // an AMD load request. Those cases could generate an error when an\n\t // anonymous define() is called outside of a loader request.\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t return _;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar Logger = (function () {\r\n\t function Logger(enableClientSideLogging) {\r\n\t this.enableClientSideLogging = enableClientSideLogging;\r\n\t }\r\n\t Logger.prototype.log = function (message) {\r\n\t if (this.enableClientSideLogging) {\r\n\t console.log([\"TRACE\", \"Coveo for Sitecore\"].concat(message));\r\n\t }\r\n\t };\r\n\t return Logger;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = Logger;\r\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar DefaultSortHandler = (function () {\r\n\t function DefaultSortHandler(defaultSortOptions) {\r\n\t this.fieldSortType = \"Field\";\r\n\t this.defaultSortOptions = defaultSortOptions;\r\n\t }\r\n\t DefaultSortHandler.prototype.addSortCriteriaToQuery = function (queryBuilder) {\r\n\t queryBuilder.sortCriteria = this.defaultSortOptions.defaultSortCriteriaLowercase;\r\n\t if (this.defaultSortOptions.defaultSortType === this.fieldSortType) {\r\n\t queryBuilder.sortField = this.defaultSortOptions.defaultSortField;\r\n\t }\r\n\t };\r\n\t return DefaultSortHandler;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = DefaultSortHandler;\r\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar SearchExpressionsHelper_1 = __webpack_require__(10);\r\n\tvar FilterExpressionHelper_1 = __webpack_require__(11);\r\n\tvar ExpressionHelperUtilities_1 = __webpack_require__(12);\r\n\tvar ExpressionsHelper = (function () {\r\n\t function ExpressionsHelper(filterExpressionHelper, searchExpressionHelper) {\r\n\t var expressionHelperUtilities = new ExpressionHelperUtilities_1[\"default\"]();\r\n\t this.filterExpressionHelper = filterExpressionHelper || new FilterExpressionHelper_1[\"default\"](expressionHelperUtilities);\r\n\t this.searchExpressionHelper = searchExpressionHelper || new SearchExpressionsHelper_1[\"default\"](expressionHelperUtilities);\r\n\t }\r\n\t ExpressionsHelper.prototype.getFilterExpression = function (options) {\r\n\t var expression = this.filterExpressionHelper.getContextFilterExpressions(options);\r\n\t return this.filterExpressionHelper.appendExternalContentToExpression(expression, options);\r\n\t };\r\n\t ExpressionsHelper.prototype.getSearchExpression = function (options) {\r\n\t var expressions = [\r\n\t this.searchExpressionHelper.getSourcesAndCollectionsExpression(options, options, options),\r\n\t this.searchExpressionHelper.getSearchFilterExpression(options, options),\r\n\t this.searchExpressionHelper.getSearchBoostExpression(options)\r\n\t ];\r\n\t return expressions.filter(function (expression) { return expression !== \"\"; }).join(\" \");\r\n\t };\r\n\t ;\r\n\t return ExpressionsHelper;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = ExpressionsHelper;\r\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar SearchExpressionHelper = (function () {\r\n\t function SearchExpressionHelper(expressionHelperUtilities) {\r\n\t this.utilities = expressionHelperUtilities;\r\n\t }\r\n\t SearchExpressionHelper.prototype.getSourcesAndCollectionsExpression = function (collectionsOptions, sourcesOptions, externalContentFromCurrentTab) {\r\n\t var newExpression;\r\n\t var sourcesExpression = this.getSourcesExpression(sourcesOptions, externalContentFromCurrentTab);\r\n\t var externalCollections = this.getAllExternalCollections(collectionsOptions, externalContentFromCurrentTab);\r\n\t if (externalCollections.length > 0) {\r\n\t var externalCollectionsExpression = this.utilities.getExternalCollectionsExpression(externalCollections);\r\n\t newExpression = \"(\" + sourcesExpression + \" OR \" + externalCollectionsExpression + \")\";\r\n\t }\r\n\t else {\r\n\t newExpression = sourcesExpression;\r\n\t }\r\n\t return newExpression;\r\n\t };\r\n\t SearchExpressionHelper.prototype.getSearchFilterExpression = function (options, externalContentFromCurrentTab) {\r\n\t var expressions = [options.filterExpression];\r\n\t if (externalContentFromCurrentTab.externalSourcesFromCurrentTab.length > 0) {\r\n\t expressions.push(this.utilities.getExternalSourcesExpression(externalContentFromCurrentTab.externalSourcesFromCurrentTab));\r\n\t }\r\n\t if (externalContentFromCurrentTab.externalCollectionsFromCurrentTab.length > 0) {\r\n\t expressions.push(this.utilities.getExternalCollectionsExpression(externalContentFromCurrentTab.externalCollectionsFromCurrentTab));\r\n\t }\r\n\t return expressions.join(\" OR \");\r\n\t };\r\n\t SearchExpressionHelper.prototype.getSearchBoostExpression = function (options) {\r\n\t return options.boostExpressions;\r\n\t };\r\n\t SearchExpressionHelper.prototype.getSourcesExpression = function (sourcesExpressionOptions, externalContentFromCurrentTab) {\r\n\t var sources = [];\r\n\t if (this.utilities.isDefined(sourcesExpressionOptions.indexSourceName)) {\r\n\t sources.push(sourcesExpressionOptions.indexSourceName);\r\n\t }\r\n\t if (sourcesExpressionOptions.externalSources.length > 0) {\r\n\t sources.push.apply(sources, sourcesExpressionOptions.externalSources);\r\n\t }\r\n\t if (externalContentFromCurrentTab.externalSourcesFromCurrentTab.length > 0) {\r\n\t sources.push.apply(sources, externalContentFromCurrentTab.externalSourcesFromCurrentTab);\r\n\t }\r\n\t return this.utilities.getFilterExpression(\"@syssource\", sources);\r\n\t };\r\n\t SearchExpressionHelper.prototype.getAllExternalCollections = function (externalCollectionsOptions, externalContentFromCurrentTabOptions) {\r\n\t var externalSources = [];\r\n\t externalSources.push.apply(externalSources, externalCollectionsOptions.externalCollections);\r\n\t externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalCollectionsFromCurrentTab);\r\n\t return externalSources;\r\n\t };\r\n\t return SearchExpressionHelper;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = SearchExpressionHelper;\r\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar FilterExpressionHelper = (function () {\r\n\t function FilterExpressionHelper(expressionHelperUtilities) {\r\n\t this.utilities = expressionHelperUtilities;\r\n\t }\r\n\t FilterExpressionHelper.prototype.getFilterExpressions = function (options) {\r\n\t var filterExpressions = this.getContextFilterExpressions(options);\r\n\t var filterExpressionsWithExternalContent = this.appendExternalContentToExpression(filterExpressions, options);\r\n\t return filterExpressionsWithExternalContent;\r\n\t };\r\n\t ;\r\n\t FilterExpressionHelper.prototype.getContextFilterExpressions = function (options) {\r\n\t var expression = \"\";\r\n\t var filterExpressions = [];\r\n\t if (options.filterResultsOnCurrentCulture) {\r\n\t var clientLanguageFilterExpression = this.utilities.getFilterExpression(options.clientLanguageFieldName, options.clientLanguageName);\r\n\t filterExpressions.push(clientLanguageFilterExpression);\r\n\t }\r\n\t if (options.filterResultOnLatestVersion) {\r\n\t var latestVersionFilterExpression = this.utilities.getFilterExpression(options.latestVersionFieldName, \"1\");\r\n\t filterExpressions.push(latestVersionFilterExpression);\r\n\t }\r\n\t if (filterExpressions.length > 0) {\r\n\t var filterExpression = filterExpressions.join(\" \").replace(/^\\s+|\\s+$/g, \"\");\r\n\t expression = \"(\" + filterExpression + \")\";\r\n\t }\r\n\t return expression;\r\n\t };\r\n\t FilterExpressionHelper.prototype.appendExternalContentToExpression = function (expression, options) {\r\n\t var newExpression = expression;\r\n\t if (this.hasExternalContentSpecified(options)) {\r\n\t var expressions = [expression];\r\n\t var externalSources = this.getAllExternalSources(options, options);\r\n\t if (externalSources.length > 0) {\r\n\t expressions.push(this.utilities.getExternalSourcesExpression(externalSources));\r\n\t }\r\n\t var externalCollections = this.getAllExternalCollections(options, options);\r\n\t if (externalCollections.length > 0) {\r\n\t expressions.push(this.utilities.getExternalCollectionsExpression(externalCollections));\r\n\t }\r\n\t newExpression = \"(\" + expressions.join(\" OR \") + \")\";\r\n\t }\r\n\t return newExpression;\r\n\t };\r\n\t ;\r\n\t FilterExpressionHelper.prototype.getAllExternalSources = function (externalSourcesOptions, externalContentFromCurrentTabOptions) {\r\n\t var externalSources = [];\r\n\t externalSources.push.apply(externalSources, externalSourcesOptions.externalSources);\r\n\t externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalSourcesFromCurrentTab);\r\n\t return externalSources;\r\n\t };\r\n\t FilterExpressionHelper.prototype.getAllExternalCollections = function (externalCollectionsOptions, externalContentFromCurrentTabOptions) {\r\n\t var externalSources = [];\r\n\t externalSources.push.apply(externalSources, externalCollectionsOptions.externalCollections);\r\n\t externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalCollectionsFromCurrentTab);\r\n\t return externalSources;\r\n\t };\r\n\t FilterExpressionHelper.prototype.hasExternalContentSpecified = function (options) {\r\n\t return options.externalCollections.length > 0 ||\r\n\t options.externalSources.length > 0 ||\r\n\t options.externalSourcesFromCurrentTab.length > 0 ||\r\n\t options.externalCollectionsFromCurrentTab.length > 0;\r\n\t };\r\n\t ;\r\n\t return FilterExpressionHelper;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = FilterExpressionHelper;\r\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar ExpressionHelperUtilities = (function () {\r\n\t function ExpressionHelperUtilities() {\r\n\t }\r\n\t ExpressionHelperUtilities.prototype.getFilterExpression = function (fieldName, fieldValue) {\r\n\t if (typeof (fieldValue) == \"string\") {\r\n\t return fieldName + \"==\\\"\" + fieldValue + \"\\\"\";\r\n\t }\r\n\t else {\r\n\t var fieldValues = fieldValue;\r\n\t if (fieldValues.length > 0) {\r\n\t return fieldName + \"==(\\\"\" + fieldValues.join('\",\"') + \"\\\")\";\r\n\t }\r\n\t else {\r\n\t return \"\";\r\n\t }\r\n\t }\r\n\t };\r\n\t ;\r\n\t ExpressionHelperUtilities.prototype.getExternalCollectionsExpression = function (externalCollections) {\r\n\t return this.getFilterExpression(\"@syscollection\", externalCollections);\r\n\t };\r\n\t ExpressionHelperUtilities.prototype.getExternalSourcesExpression = function (externalSources) {\r\n\t return this.getFilterExpression(\"@syssource\", externalSources);\r\n\t };\r\n\t ExpressionHelperUtilities.prototype.isDefined = function (property) {\r\n\t return typeof property !== \"undefined\";\r\n\t };\r\n\t return ExpressionHelperUtilities;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = ExpressionHelperUtilities;\r\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar Coveo = __webpack_require__(6);\r\n\tvar SearchEndpointHelper = (function () {\r\n\t function SearchEndpointHelper() {\r\n\t }\r\n\t SearchEndpointHelper.initializeEndpoint = function (options) {\r\n\t Coveo.SearchEndpoint.endpoints[\"default\"] = new Coveo.SearchEndpoint({\r\n\t restUri: options.restEndpointUri,\r\n\t queryStringArguments: { 'sitecoreItemUri': options.sitecoreItemUri, 'siteName': options.siteName }\r\n\t });\r\n\t };\r\n\t return SearchEndpointHelper;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = SearchEndpointHelper;\r\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar Coveo = __webpack_require__(6);\r\n\tvar OmniboxResultListHandler = (function () {\r\n\t function OmniboxResultListHandler() {\r\n\t }\r\n\t OmniboxResultListHandler.getOmniboxDataRowIndex = function () {\r\n\t this.omniboxDataRowIndexCounter = this.omniboxDataRowIndexCounter + 1;\r\n\t return this.omniboxDataRowIndexCounter;\r\n\t };\r\n\t OmniboxResultListHandler.prototype.onOmniboxRowClicked = function (result) {\r\n\t window.location.href = result.clickUri;\r\n\t };\r\n\t OmniboxResultListHandler.prototype.buildOmniboxContent = function (results, options) {\r\n\t var _this = this;\r\n\t var id = options.id ? options.id : options.resultTemplateId;\r\n\t var templateElement = document.getElementById(id);\r\n\t var template = new Coveo.UnderscoreTemplate(templateElement);\r\n\t var resultContainer = this.getResultContainer(options.headerTitle);\r\n\t var content = Coveo.$$(\"div\");\r\n\t content.append(resultContainer.el);\r\n\t results.forEach(function (result) {\r\n\t var oneRowOfContent = template.instantiateToElement(result);\r\n\t var rowElement = Coveo.$$(oneRowOfContent);\r\n\t rowElement.addClass(\"CoveoResult coveo-omnibox-selectable\");\r\n\t rowElement.on(\"click keyboardSelect\", function () {\r\n\t _this.onOmniboxRowClicked(result);\r\n\t });\r\n\t content.append(oneRowOfContent);\r\n\t });\r\n\t return content.el;\r\n\t };\r\n\t OmniboxResultListHandler.prototype.populateOmniboxResultList = function (populateOmniboxObject, options, queryController) {\r\n\t var _this = this;\r\n\t var queryBuilder = queryController.createQueryBuilder(options);\r\n\t if (options.queryExpression && typeof (options.queryExpression) === \"string\") {\r\n\t queryBuilder.advancedExpression.add(options.queryExpression);\r\n\t }\r\n\t queryBuilder.numberOfResults = options.numberOfResults;\r\n\t var query = queryBuilder.build();\r\n\t var promise = this.executeSearchQuery(query)\r\n\t .then(function (response) {\r\n\t if (response.totalCount > 0) {\r\n\t var elementToReturn = _this.buildOmniboxContent(response.results, options);\r\n\t var objectToReturn = {\r\n\t zIndex: options.omniboxDataRowIndex,\r\n\t element: elementToReturn\r\n\t };\r\n\t return objectToReturn;\r\n\t }\r\n\t else {\r\n\t return { element: undefined };\r\n\t }\r\n\t });\r\n\t populateOmniboxObject.rows.push({ deferred: promise });\r\n\t };\r\n\t OmniboxResultListHandler.prototype.executeSearchQuery = function (query) {\r\n\t return Coveo.SearchEndpoint.endpoints[\"default\"].search(query);\r\n\t };\r\n\t OmniboxResultListHandler.prototype.getResultContainer = function (captionText) {\r\n\t var resultContainer = Coveo.$$(\"div\");\r\n\t resultContainer.addClass(\"coveo-omnibox-result-list-header\");\r\n\t resultContainer.append(this.getIcon().el);\r\n\t resultContainer.append(this.getCaption(captionText).el);\r\n\t return resultContainer;\r\n\t };\r\n\t OmniboxResultListHandler.prototype.getIcon = function () {\r\n\t var iconResultList = Coveo.$$(\"span\");\r\n\t iconResultList.addClass(\"coveo-icon-omnibox-result-list\");\r\n\t return iconResultList;\r\n\t };\r\n\t OmniboxResultListHandler.prototype.getCaption = function (captionText) {\r\n\t var caption = Coveo.$$(\"span\");\r\n\t caption.addClass(\"coveo-caption\");\r\n\t caption.el.textContent = captionText;\r\n\t return caption;\r\n\t };\r\n\t OmniboxResultListHandler.omniboxDataRowIndexCounter = 0;\r\n\t return OmniboxResultListHandler;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = OmniboxResultListHandler;\r\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar Utilities = (function () {\r\n\t function Utilities() {\r\n\t }\r\n\t Utilities.appendTrailingSlash = function (url) {\r\n\t return url.charAt(url.length - 1) === \"/\" ? url : url + \"/\";\r\n\t };\r\n\t return Utilities;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = Utilities;\r\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar TabsBinding = (function () {\r\n\t function TabsBinding() {\r\n\t var _this = this;\r\n\t this.bindings = {};\r\n\t this.getElementBinding = function (elementId) {\r\n\t return {\r\n\t elementId: elementId,\r\n\t document: document.getElementById(elementId),\r\n\t binding: _this.bindings[elementId]\r\n\t };\r\n\t };\r\n\t this.elementFound = function (elementBinding) {\r\n\t var elementFound = typeof (elementBinding.document) !== \"undefined\";\r\n\t if (!elementFound) {\r\n\t console.error(\"The element with the ID '\" + elementBinding.elementId + \"' was not found. Ensure the element exists in the DOM.\");\r\n\t }\r\n\t return elementFound;\r\n\t };\r\n\t this.initBinding = function (itemId) {\r\n\t if (!_this.bindings.hasOwnProperty(itemId)) {\r\n\t _this.bindings[itemId] = {\r\n\t tabNot: []\r\n\t };\r\n\t }\r\n\t return _this.bindings[itemId];\r\n\t };\r\n\t this.applyBinding = function (elementBinding) {\r\n\t _this.addExcludeFromTabTag(elementBinding.document, elementBinding.binding.tabNot);\r\n\t };\r\n\t this.addExcludeFromTabTag = function (element, bindings) {\r\n\t if (bindings.length > 0) {\r\n\t element.setAttribute(\"data-tab-not\", bindings.join(\",\"));\r\n\t }\r\n\t };\r\n\t }\r\n\t TabsBinding.prototype.excludeItemsIdsInTab = function (elementIds, tabId) {\r\n\t elementIds.map(this.initBinding, this).forEach(function (binding) {\r\n\t binding.tabNot.push(tabId);\r\n\t });\r\n\t };\r\n\t TabsBinding.prototype.applyBindings = function () {\r\n\t Object.keys(this.bindings)\r\n\t .map(this.getElementBinding)\r\n\t .filter(this.elementFound)\r\n\t .forEach(this.applyBinding);\r\n\t };\r\n\t return TabsBinding;\r\n\t}());\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = TabsBinding;\r\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar __extends = (this && this.__extends) || function (d, b) {\r\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n\t function __() { this.constructor = d; }\r\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n\t};\r\n\tvar _ = __webpack_require__(5);\r\n\tvar Coveo = __webpack_require__(6);\r\n\tvar CoveoForSitecoreBase_1 = __webpack_require__(4);\r\n\tvar Searchbox = (function (_super) {\r\n\t __extends(Searchbox, _super);\r\n\t function Searchbox(searchComponent, searchBoxPluginOptions, defaultSearchBoxPluginOptions) {\r\n\t _super.call(this, searchComponent, searchBoxPluginOptions, defaultSearchBoxPluginOptions);\r\n\t this.searchBoxOptions = _.extend({}, defaultSearchBoxPluginOptions, searchBoxPluginOptions);\r\n\t }\r\n\t Searchbox.prototype.initialize = function () {\r\n\t var _this = this;\r\n\t this.logger.log(\"Initializing searchbox.\");\r\n\t this.initializeSearchOptions();\r\n\t if (!this.options.isInitialized) {\r\n\t this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n\t var expression = _this.expressionsHelper.getSearchExpression(_this.searchBoxOptions);\r\n\t args.queryBuilder.advancedExpression.add(expression);\r\n\t });\r\n\t }\r\n\t Coveo.initSearchbox(this.element, this.searchBoxOptions.searchRedirectionUrl, this.searchBoxOptions);\r\n\t this.doPostInitializationActions();\r\n\t };\r\n\t return Searchbox;\r\n\t}(CoveoForSitecoreBase_1[\"default\"]));\r\n\texports.__esModule = true;\r\n\texports[\"default\"] = Searchbox;\r\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\t\"use strict\";\r\n\tvar __extends = (this && this.__extends) || function (d, b) {\r\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n\t function __() { this.constructor = d; }\r\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n\t};\r\n\t/// \r\n\tvar _ = __webpack_require__(5);\r\n\tvar Coveo = __webpack_require__(6);\r\n\tvar OmniboxResultListHandler_1 = __webpack_require__(14);\r\n\tvar Component = Coveo.Component;\r\n\tvar OmniboxResultList = (function (_super) {\r\n\t __extends(OmniboxResultList, _super);\r\n\t function OmniboxResultList(element, options, bindings) {\r\n\t _super.call(this, element, OmniboxResultList.ID, bindings);\r\n\t this.element = element;\r\n\t this.options = options;\r\n\t this.omniboxResultListHandler = new OmniboxResultListHandler_1[\"default\"]();\r\n\t this.options = Coveo.ComponentOptions.initComponentOptions(element, OmniboxResultList, options);\r\n\t if (bindings) {\r\n\t this.initializeOmniboxDataRowIndex(bindings);\r\n\t }\r\n\t this.bind.onRootElement(Coveo.OmniboxEvents.populateOmnibox, this.populateOmnibox);\r\n\t this.bindEnterToSearchButton();\r\n\t }\r\n\t // The enter button stops working when calling \"queryController.createQueryBuilder(options);\" in the populateOmnibox event.\r\n\t // This ugly workaround fixes the enter button.\r\n\t OmniboxResultList.prototype.bindEnterToSearchButton = function () {\r\n\t var queryBoxes = document.querySelectorAll(\".CoveoSearchbox\");\r\n\t _.map(queryBoxes, function (queryBox) {\r\n\t return {\r\n\t input: queryBox.querySelector(\"input\"),\r\n\t button: queryBox.querySelector(\".CoveoSearchButton\")\r\n\t };\r\n\t }).filter(function (queryBoxElements) {\r\n\t return queryBoxElements.button !== null && queryBoxElements.input !== null;\r\n\t }).forEach(function (queryBoxElements) {\r\n\t queryBoxElements.input.addEventListener(\"keyup\", function (event) {\r\n\t if (event.keyCode === 13) {\r\n\t queryBoxElements.button.click();\r\n\t }\r\n\t });\r\n\t });\r\n\t };\r\n\t OmniboxResultList.prototype.populateOmnibox = function (populateOmniboxObject) {\r\n\t this.omniboxResultListHandler.populateOmniboxResultList(populateOmniboxObject, this.options, this.queryController);\r\n\t };\r\n\t OmniboxResultList.prototype.initializeOmniboxDataRowIndex = function (bindings) {\r\n\t // \"as HTMLElement\" is needed in TypeScript 1.5, see details here: https://github.com/Microsoft/TypeScript/issues/4401\r\n\t var omniboxResultList = document.getElementsByClassName(\"CoveoForSitecoreOmniboxResultList\")[0];\r\n\t if (!bindings.searchInterface.options.originalOptionsObject.keepOmniboxSuggestionsProvidersDefaultOrdering) {\r\n\t // 51 is the default z-index of the JS Search OmniboxResultList.\r\n\t // We make sure that the last omnibox index is 51, the before last index is 52 and so on.\r\n\t this.options.omniboxDataRowIndex = 51 + Coveo.$$(omniboxResultList).children().length - bindings.searchInterface.options.originalOptionsObject.omniboxDataRowIndexCounter;\r\n\t bindings.searchInterface.options.originalOptionsObject.omniboxDataRowIndexCounter++;\r\n\t }\r\n\t };\r\n\t OmniboxResultList.ID = \"ForSitecoreOmniboxResultList\";\r\n\t OmniboxResultList.options = {\r\n\t headerTitle: Coveo.ComponentOptions.buildStringOption(),\r\n\t queryExpression: Coveo.ComponentOptions.buildStringOption(),\r\n\t numberOfResults: Coveo.ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1 }),\r\n\t omniboxDataRowIndex: Coveo.ComponentOptions.buildNumberOption({ defaultValue: 51, min: 16 }),\r\n\t resultTemplateId: Coveo.ComponentOptions.buildStringOption()\r\n\t };\r\n\t return OmniboxResultList;\r\n\t}(Component));\r\n\texports.OmniboxResultList = OmniboxResultList;\r\n\tCoveo.Initialization.registerAutoCreateComponent(OmniboxResultList);\r\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// CoveoForSitecore.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 427b43b64c3a2d109c3b","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\n/// \r\nvar CoveoForSitecore = require(\"../CoveoForSitecoreBase/CoveoForSitecore\");\r\nCoveo.initCoveoForSitecore = function (element, action, options) {\r\n if (action === \"init\") {\r\n CoveoForSitecore.initializeSearch(element, options);\r\n }\r\n else if (action === \"initSearchbox\") {\r\n CoveoForSitecore.initializeSearchbox(element, options);\r\n }\r\n else {\r\n console.error(\"The action '\" + action + \"' is not part of the coveoForSitecore plugin. Ignoring action.\");\r\n }\r\n};\r\nCoveo.initializeJQuery = function (jQueryInstance) {\r\n Coveo.$ = jQueryInstance;\r\n Coveo.initializeCoveoForSitecorePlugin();\r\n};\r\nCoveo.initializeCoveoForSitecorePlugin = function () {\r\n if (typeof (Coveo.$) !== \"undefined\" && typeof (Coveo.$.fn) != \"undefined\") {\r\n Coveo.$.fn.coveoForSitecore = function (action, options) {\r\n Coveo.initCoveoForSitecore(this[0], action, options);\r\n return this;\r\n };\r\n }\r\n};\r\n(function (jQueryInstance) {\r\n if (typeof (jQueryInstance) !== \"undefined\") {\r\n Coveo.initializeJQuery(jQueryInstance);\r\n }\r\n})(typeof (Coveo) !== \"undefined\" && typeof (Coveo.$) !== \"undefined\" ? Coveo.$ : jQuery);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreJQuery/CoveoForSitecore.JQuery.ts\n// module id = 1\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar PluginOptions_1 = require(\"./PluginOptions\");\r\nvar CoveoForSitecoreBase_1 = require(\"./CoveoForSitecoreBase\");\r\nvar TabsBinding_1 = require(\"./Tabs/TabsBinding\");\r\nvar Searchbox_1 = require(\"./Searchbox\");\r\nvar SearchEndpointHelper_1 = require(\"./SearchEndpointHelper\");\r\nexports.OmniboxResultList = require(\"./OmniboxResultList/OmniboxResultList\");\r\nexports.componentsOptions = new PluginOptions_1[\"default\"]();\r\nexports.tabsBinding = new TabsBinding_1[\"default\"]();\r\nexports.SearchEndpointHelper = SearchEndpointHelper_1[\"default\"];\r\nexports.defaults = new PluginOptions_1[\"default\"]();\r\nfunction initializeSearch(searchComponent, options) {\r\n exports.tabsBinding.applyBindings();\r\n if (!_isExistingPlugin(searchComponent)) {\r\n exports.plugin = new CoveoForSitecoreBase_1[\"default\"](searchComponent, options, exports.defaults);\r\n exports.plugin.initialize();\r\n }\r\n}\r\nexports.initializeSearch = initializeSearch;\r\nfunction initializeSearchbox(searchComponent, options) {\r\n exports.plugin = new Searchbox_1[\"default\"](searchComponent, options, exports.defaults);\r\n exports.plugin.initialize();\r\n}\r\nexports.initializeSearchbox = initializeSearchbox;\r\nfunction _isExistingPlugin(searchComponent) {\r\n return exports.plugin && exports.plugin.element && exports.plugin.element.id === searchComponent.id;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/CoveoForSitecore.ts\n// module id = 2\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar PluginOptions = (function () {\r\n function PluginOptions() {\r\n this.analyticsCustomMetadata = {};\r\n this.analyticsEndpointUri = \"/coveo/rest/v6/analytics/\";\r\n this.boostExpressions = \"\";\r\n this.clientLanguageFieldName = \"\";\r\n this.clientLanguageName = \"\";\r\n this.componentRefreshCallback = null;\r\n this.defaultSortType = \"Relevancy\";\r\n this.defaultSortField = \"\";\r\n this.defaultSortCriteriaNoSpace = \"Relevancy\";\r\n this.defaultSortCriteriaLowercase = \"relevancy\";\r\n this.enableClientSideLogging = false;\r\n this.externalCollections = [];\r\n this.externalSources = [];\r\n this.externalSourcesFromCurrentTab = [];\r\n this.externalCollectionsFromCurrentTab = [];\r\n this.filterExpression = \"\";\r\n this.filterResultOnLatestVersion = true;\r\n this.filterResultsOnCurrentCulture = false;\r\n this.indexSourceName = \"\";\r\n this.isEditingInPageEditor = false;\r\n this.isInitialized = false;\r\n this.isPreviewingInPageEditor = false;\r\n this.isPreviewingInPageEditorWithSimulatedDevice = false;\r\n this.keepOmniboxSuggestionsProvidersDefaultOrdering = true;\r\n this.latestVersionFieldName = \"\";\r\n this.omniboxDataRowIndexCounter = 0;\r\n this.pageFullPath = \"\";\r\n this.pageName = \"\";\r\n this.restEndpointUri = \"/coveo/rest/\";\r\n this.resultListInfiniteScrollContainer = window;\r\n this.searchboxPlaceholderText = \"\";\r\n this.searchRedirectionUrl = \"\";\r\n this.sendToSitecoreAnalytics = false;\r\n this.sitecoreItemId = \"\";\r\n this.sitecoreItemUri = \"\";\r\n this.siteName = \"\";\r\n }\r\n return PluginOptions;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = PluginOptions;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/PluginOptions.ts\n// module id = 3\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\n/// \r\nvar _ = require(\"underscore\");\r\nvar Coveo = require(\"coveo-search-ui\");\r\nvar Logger_1 = require(\"./Logger\");\r\nvar DefaultSortHandler_1 = require(\"./Sorts/DefaultSortHandler\");\r\nvar ExpressionsHelper_1 = require(\"./Rules/ExpressionsHelper\");\r\nvar SearchEndpointHelper_1 = require(\"./SearchEndpointHelper\");\r\nvar OmniboxResultListHandler_1 = require(\"./OmniboxResultList/OmniboxResultListHandler\");\r\nvar Utilities_1 = require(\"./Utilities\");\r\nvar CoveoForSitecoreBase = (function () {\r\n function CoveoForSitecoreBase(searchComponent, options, defaultOptions) {\r\n this.isInPageEditorCssClass = \"coveo-page-editor\";\r\n this.isEditingInPageEditorCssClass = \"coveo-page-editor-editing\";\r\n this.isPreviewingInPageEditorCssClass = \"coveo-page-editor-previewing\";\r\n this.isPreviewingInPageEditorWithSimulatedDeviceCssClass = \"coveo-page-editor-previewing-with-simulator\";\r\n this.element = searchComponent;\r\n this.domElement = Coveo.$$(searchComponent);\r\n this.options = _.extend({}, defaultOptions, options);\r\n this.logger = new Logger_1[\"default\"](this.options.enableClientSideLogging);\r\n this.expressionsHelper = new ExpressionsHelper_1[\"default\"]();\r\n this.omniboxResultListHandler = new OmniboxResultListHandler_1[\"default\"]();\r\n this.endpointCaller = new Coveo.EndpointCaller();\r\n this.defaultSortHandler = new DefaultSortHandler_1[\"default\"](options);\r\n }\r\n CoveoForSitecoreBase.prototype.initialize = function () {\r\n var _this = this;\r\n this.logger.log(\"Initializing search.\");\r\n this.initializeSearchOptions();\r\n if (!this.options.isInitialized) {\r\n this.addPageEditorCssClasses();\r\n this.addResultListHeaderCssClasses();\r\n this.domElement.on(Coveo.InitializationEvents.afterInitialization, function () {\r\n if (!Coveo.HashUtils.getValue(\"sort\", window.location.hash)) {\r\n Coveo.state(_this.element, \"sort\", _this.options.defaultSortCriteriaLowercase);\r\n }\r\n });\r\n // Merge the options we need to add with the options that are already set.\r\n var mergedOptions = Coveo.Utils.extendDeep({\r\n Facet: {},\r\n SearchInterface: {}\r\n }, this.options);\r\n Coveo.init(this.element, mergedOptions);\r\n }\r\n this.doPostInitializationActions();\r\n };\r\n CoveoForSitecoreBase.prototype.doPostInitializationActions = function () {\r\n var _this = this;\r\n _.forEach(this.domElement.findAll(\".CoveoQuerybox input, .CoveoOmnibox input\"), function (element) {\r\n element.setAttribute(\"placeholder\", _this.options.searchboxPlaceholderText);\r\n });\r\n };\r\n CoveoForSitecoreBase.prototype.initializeSearchOptions = function () {\r\n var _this = this;\r\n SearchEndpointHelper_1[\"default\"].initializeEndpoint(this.options);\r\n if (this.options.enableClientSideLogging) {\r\n Coveo.Logger.enable();\r\n }\r\n if (!this.options.isInitialized) {\r\n this.addPageEditorCssClasses();\r\n this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n _this.defaultSortHandler.addSortCriteriaToQuery(args.queryBuilder);\r\n });\r\n this.domElement.on(Coveo.InitializationEvents.afterInitialization, function () {\r\n _this.registerSearchEvents();\r\n _this.options.isInitialized = true;\r\n });\r\n if (this.options.sendToSitecoreAnalytics) {\r\n // Make sure to flush Analytics events on document clicks.\r\n window.onbeforeunload = function () {\r\n Coveo.Defer.flush();\r\n };\r\n this.domElement.on(Coveo.AnalyticsEvents.searchEvent, function (e, args) {\r\n _this.postAnalytics(\"searches\", \"searchEvents\", args.searchEvents);\r\n });\r\n this.domElement.on(Coveo.AnalyticsEvents.documentViewEvent, function (e, args) {\r\n _this.postAnalytics(\"documentViews\", \"documentViewEvents\", args.documentViewEvent);\r\n });\r\n this.domElement.on(Coveo.AnalyticsEvents.customEvent, function (e, args) {\r\n _this.postAnalytics(\"custom\", \"customEvents\", args.customEvent);\r\n });\r\n }\r\n }\r\n };\r\n CoveoForSitecoreBase.prototype.postAnalytics = function (eventAction, eventType, eventData) {\r\n var _this = this;\r\n eventData = [].concat(eventData);\r\n eventData.forEach(function (data) {\r\n data.sitecoreItemId = _this.options.sitecoreItemId;\r\n });\r\n var postData = {};\r\n postData[eventType] = JSON.stringify(eventData);\r\n this.sendPostRequest(Utilities_1[\"default\"].appendTrailingSlash(this.options.analyticsEndpointUri) + eventAction, postData);\r\n };\r\n CoveoForSitecoreBase.prototype.addPageEditorCssClasses = function () {\r\n if (this.isInPageEditor()) {\r\n this.domElement.addClass(this.isInPageEditorCssClass);\r\n if (this.options.isEditingInPageEditor) {\r\n this.domElement.addClass(this.isEditingInPageEditorCssClass);\r\n }\r\n if (this.options.isPreviewingInPageEditor) {\r\n this.domElement.addClass(this.isPreviewingInPageEditorCssClass);\r\n }\r\n if (this.options.isPreviewingInPageEditorWithSimulatedDevice) {\r\n this.domElement.addClass(this.isPreviewingInPageEditorWithSimulatedDeviceCssClass);\r\n }\r\n }\r\n };\r\n CoveoForSitecoreBase.prototype.addResultListHeaderCssClasses = function () {\r\n // Both the mobile and full search interface does not use the\r\n // same CSS class for the result list header.\r\n var elements = this.getDomElementsMatchingSelector(\".coveo-results-header, .coveo-result-header-section\");\r\n _.filter(elements, function (element) {\r\n return typeof (element) !== \"undefined\" &&\r\n !element.hasClass(\"CoveoQuerySummary\") &&\r\n element.hasClass(\"CoveoQueryDuration\") &&\r\n element.hasClass(\"CoveoSort\");\r\n }).forEach(function (element) {\r\n element.addClass(\"coveo-empty\");\r\n });\r\n };\r\n CoveoForSitecoreBase.prototype.getFilterExpressions = function () {\r\n return this.expressionsHelper.getFilterExpression(this.options);\r\n };\r\n CoveoForSitecoreBase.prototype.registerSearchEvents = function () {\r\n var _this = this;\r\n this.logger.log(\"Registering search events.\");\r\n this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n var optionsWithTabContent = _this.getOptionsWithTabExternalContent(args.queryBuilder.tab);\r\n args.queryBuilder.advancedExpression.add(_this.expressionsHelper.getSearchExpression(optionsWithTabContent));\r\n args.queryBuilder.constantExpression.add(_this.expressionsHelper.getFilterExpression(optionsWithTabContent));\r\n });\r\n this.domElement.on(Coveo.AnalyticsEvents.changeAnalyticsCustomData, function (e, args) {\r\n var options = _this.options;\r\n if (options) {\r\n if (options.clientLanguageName) {\r\n args.language = options.clientLanguageName;\r\n }\r\n if (options.pageName) {\r\n args.originLevel1 = options.pageName;\r\n }\r\n if (options.pageFullPath) {\r\n args.originLevel3 = options.pageFullPath;\r\n }\r\n if (options.analyticsCustomMetadata) {\r\n args.metaObject = _.extend({}, args.metaObject, options.analyticsCustomMetadata);\r\n }\r\n }\r\n });\r\n if (this.options.componentRefreshCallback) {\r\n this.domElement.on(Coveo.QueryEvents.deferredQuerySuccess, function () {\r\n _this.options.componentRefreshCallback();\r\n });\r\n this.domElement.on(Coveo.QueryEvents.queryError, function () {\r\n _this.options.componentRefreshCallback();\r\n });\r\n }\r\n };\r\n CoveoForSitecoreBase.prototype.isInPageEditor = function () {\r\n return this.options.isEditingInPageEditor ||\r\n this.options.isPreviewingInPageEditor ||\r\n this.options.isPreviewingInPageEditorWithSimulatedDevice;\r\n };\r\n CoveoForSitecoreBase.prototype.configureOmnibox = function (options) {\r\n this.domElement.on(Coveo.OmniboxEvents.populateOmnibox, this.generatePopulateOmniboxFunction(options));\r\n };\r\n CoveoForSitecoreBase.prototype.getOptionsWithTabExternalContent = function (currentTabId) {\r\n var filterExpressionOptions = _.extend({}, this.options);\r\n if (typeof (currentTabId) !== \"undefined\" && this.options.hasOwnProperty(currentTabId)) {\r\n var tabOptions = this.options[currentTabId];\r\n filterExpressionOptions.externalSourcesFromCurrentTab = tabOptions.externalSources;\r\n filterExpressionOptions.externalCollectionsFromCurrentTab = tabOptions.externalCollections;\r\n }\r\n return filterExpressionOptions;\r\n };\r\n CoveoForSitecoreBase.prototype.generatePopulateOmniboxFunction = function (options) {\r\n var _this = this;\r\n var queryController = Coveo.get(this.element).queryController;\r\n return function (e, populateOmniboxObject) {\r\n _this.omniboxResultListHandler.populateOmniboxResultList(populateOmniboxObject, options, queryController);\r\n };\r\n };\r\n CoveoForSitecoreBase.prototype.getDomElementsMatchingSelector = function (querySelector) {\r\n // Using .map to pass from NodeListOf to Array type. Can't do a direct cast.\r\n return _.map(document.querySelectorAll(querySelector), function (element) {\r\n return Coveo.$$(element);\r\n });\r\n };\r\n CoveoForSitecoreBase.prototype.sendPostRequest = function (url, postData) {\r\n var callOptions = {\r\n errorsAsSuccess: false,\r\n method: \"POST\",\r\n queryString: [],\r\n requestData: postData,\r\n url: url,\r\n responseType: \"text\",\r\n requestDataType: \"application/json\"\r\n };\r\n this.endpointCaller.call(callOptions);\r\n };\r\n return CoveoForSitecoreBase;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = CoveoForSitecoreBase;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/CoveoForSitecoreBase.ts\n// module id = 4\n// module chunks = 0","// Underscore.js 1.8.3\n// http://underscorejs.org\n// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` in the browser, or `exports` on the server.\n var root = this;\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n // Create quick reference variables for speed access to core prototypes.\n var\n push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var\n nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeBind = FuncProto.bind,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for the old `require()` API. If we're in\n // the browser, add `_` as a global object.\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.8.3';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n case 2: return function(value, other) {\n return func.call(context, value, other);\n };\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n // A mostly-internal function to generate callbacks that can be applied\n // to each element in a collection, returning the desired result — either\n // identity, an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value)) return _.matcher(value);\n return _.property(value);\n };\n _.iteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, undefinedOnly) {\n return function(obj) {\n var length = arguments.length;\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var property = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = property('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n function createReduce(dir) {\n // Optimized iterator function as using arguments.length\n // in the main function will deoptimize the, see #1991.\n function iterator(obj, iteratee, memo, keys, index, length) {\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n }\n\n return function(obj, iteratee, memo, context) {\n iteratee = optimizeCb(iteratee, context, 4);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n // Determine the initial value if none is provided.\n if (arguments.length < 3) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n return iterator(obj, iteratee, memo, keys, index, length);\n };\n }\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var key;\n if (isArrayLike(obj)) {\n key = _.findIndex(obj, predicate, context);\n } else {\n key = _.findKey(obj, predicate, context);\n }\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = function(obj, method) {\n var args = slice.call(arguments, 2);\n var isFunc = _.isFunction(method);\n return _.map(obj, function(value) {\n var func = isFunc ? method : value[method];\n return func == null ? func : func.apply(value, args);\n });\n };\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection, using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n _.shuffle = function(obj) {\n var set = isArrayLike(obj) ? obj : _.values(obj);\n var length = set.length;\n var shuffled = Array(length);\n for (var index = 0, rand; index < length; index++) {\n rand = _.random(0, index);\n if (rand !== index) shuffled[index] = shuffled[rand];\n shuffled[rand] = set[index];\n }\n return shuffled;\n };\n\n // Sample **n** random values from a collection.\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n return _.shuffle(obj).slice(0, Math.max(0, n));\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, index, list) {\n return {\n value: value,\n index: index,\n criteria: iteratee(value, index, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior) {\n return function(obj, iteratee, context) {\n var result = {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var pass = [], fail = [];\n _.each(obj, function(value, key, obj) {\n (predicate(value, key, obj) ? pass : fail).push(value);\n });\n return [pass, fail];\n };\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, _.identity);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, startIndex) {\n var output = [], idx = 0;\n for (var i = startIndex || 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n //flatten current level of array or arguments object\n if (!shallow) value = flatten(value, shallow, strict);\n var j = 0, len = value.length;\n output.length += len;\n while (j < len) {\n output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = function(array) {\n return _.difference(array, slice.call(arguments, 1));\n };\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = function() {\n return _.uniq(flatten(arguments, true, true));\n };\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n for (var j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = function(array) {\n var rest = flatten(arguments, true, true, 1);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = function() {\n return _.unzip(arguments);\n };\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions\n function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n }\n\n // Returns the first index on an array-like that passes a predicate test\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions\n function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n }\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n step = step || 1;\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = function(func, context) {\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var args = slice.call(arguments, 2);\n var bound = function() {\n return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));\n };\n return bound;\n };\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder, allowing any combination of arguments to be pre-filled.\n _.partial = function(func) {\n var boundArgs = slice.call(arguments, 1);\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n };\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = function(obj) {\n var i, length = arguments.length, key;\n if (length <= 1) throw new Error('bindAll must be passed function names');\n for (i = 1; i < length; i++) {\n key = arguments[i];\n obj[key] = _.bind(obj[key], obj);\n }\n return obj;\n };\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = function(func, wait) {\n var args = slice.call(arguments, 2);\n return setTimeout(function(){\n return func.apply(null, args);\n }, wait);\n };\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n\n var later = function() {\n var last = _.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n }\n }\n };\n\n return function() {\n context = this;\n args = arguments;\n timestamp = _.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n function collectNonEnumProps(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n }\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object\n // In contrast to _.map it returns an object\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {},\n currentKey;\n for (var index = 0; index < length; index++) {\n currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s)\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = function(object, oiteratee, context) {\n var result = {}, obj = object, iteratee, keys;\n if (obj == null) return result;\n if (_.isFunction(oiteratee)) {\n keys = _.allKeys(obj);\n iteratee = optimizeCb(oiteratee, context);\n } else {\n keys = flatten(arguments, false, false, 1);\n iteratee = function(value, key, obj) { return key in obj; };\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n };\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = function(obj, iteratee, context) {\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n } else {\n var keys = _.map(flatten(arguments, false, false, 1), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n };\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // A strict comparison is necessary because `null == undefined`.\n if (a == null || b == null) return a === b;\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return _.has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), and in Safari 8 (#1929).\n if (typeof /./ != 'function' && typeof Int8Array != 'object') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n _.isNaN = function(obj) {\n return _.isNumber(obj) && obj !== +obj;\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n _.property = property;\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n return obj == null ? function(){} : function(key) {\n return obj[key];\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // If the value of the named `property` is a function then invoke it with the\n // `object` as context; otherwise, return it.\n _.result = function(object, property, fallback) {\n var value = object == null ? void 0 : object[property];\n if (value === void 0) {\n value = fallback;\n }\n return _.isFunction(value) ? value.call(object) : value;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escaper, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n try {\n var render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var result = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return result(this, func.apply(_, args));\n };\n });\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return result(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return result(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return '' + this._wrapped;\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define === 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}.call(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/underscore.js\n// module id = 5\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"Coveo\"\n// module id = 6\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar Logger = (function () {\r\n function Logger(enableClientSideLogging) {\r\n this.enableClientSideLogging = enableClientSideLogging;\r\n }\r\n Logger.prototype.log = function (message) {\r\n if (this.enableClientSideLogging) {\r\n console.log([\"TRACE\", \"Coveo for Sitecore\"].concat(message));\r\n }\r\n };\r\n return Logger;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = Logger;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Logger.ts\n// module id = 7\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar DefaultSortHandler = (function () {\r\n function DefaultSortHandler(defaultSortOptions) {\r\n this.fieldSortType = \"Field\";\r\n this.defaultSortOptions = defaultSortOptions;\r\n }\r\n DefaultSortHandler.prototype.addSortCriteriaToQuery = function (queryBuilder) {\r\n queryBuilder.sortCriteria = this.defaultSortOptions.defaultSortCriteriaLowercase;\r\n if (this.defaultSortOptions.defaultSortType === this.fieldSortType) {\r\n queryBuilder.sortField = this.defaultSortOptions.defaultSortField;\r\n }\r\n };\r\n return DefaultSortHandler;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = DefaultSortHandler;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Sorts/DefaultSortHandler.ts\n// module id = 8\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar SearchExpressionsHelper_1 = require(\"./SearchExpressionsHelper\");\r\nvar FilterExpressionHelper_1 = require(\"./FilterExpressionHelper\");\r\nvar ExpressionHelperUtilities_1 = require(\"./ExpressionHelperUtilities\");\r\nvar ExpressionsHelper = (function () {\r\n function ExpressionsHelper(filterExpressionHelper, searchExpressionHelper) {\r\n var expressionHelperUtilities = new ExpressionHelperUtilities_1[\"default\"]();\r\n this.filterExpressionHelper = filterExpressionHelper || new FilterExpressionHelper_1[\"default\"](expressionHelperUtilities);\r\n this.searchExpressionHelper = searchExpressionHelper || new SearchExpressionsHelper_1[\"default\"](expressionHelperUtilities);\r\n }\r\n ExpressionsHelper.prototype.getFilterExpression = function (options) {\r\n var expression = this.filterExpressionHelper.getContextFilterExpressions(options);\r\n return this.filterExpressionHelper.appendExternalContentToExpression(expression, options);\r\n };\r\n ExpressionsHelper.prototype.getSearchExpression = function (options) {\r\n var expressions = [\r\n this.searchExpressionHelper.getSourcesAndCollectionsExpression(options, options, options),\r\n this.searchExpressionHelper.getSearchFilterExpression(options, options),\r\n this.searchExpressionHelper.getSearchBoostExpression(options)\r\n ];\r\n return expressions.filter(function (expression) { return expression !== \"\"; }).join(\" \");\r\n };\r\n ;\r\n return ExpressionsHelper;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = ExpressionsHelper;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/ExpressionsHelper.ts\n// module id = 9\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar SearchExpressionHelper = (function () {\r\n function SearchExpressionHelper(expressionHelperUtilities) {\r\n this.utilities = expressionHelperUtilities;\r\n }\r\n SearchExpressionHelper.prototype.getSourcesAndCollectionsExpression = function (collectionsOptions, sourcesOptions, externalContentFromCurrentTab) {\r\n var newExpression;\r\n var sourcesExpression = this.getSourcesExpression(sourcesOptions, externalContentFromCurrentTab);\r\n var externalCollections = this.getAllExternalCollections(collectionsOptions, externalContentFromCurrentTab);\r\n if (externalCollections.length > 0) {\r\n var externalCollectionsExpression = this.utilities.getExternalCollectionsExpression(externalCollections);\r\n newExpression = \"(\" + sourcesExpression + \" OR \" + externalCollectionsExpression + \")\";\r\n }\r\n else {\r\n newExpression = sourcesExpression;\r\n }\r\n return newExpression;\r\n };\r\n SearchExpressionHelper.prototype.getSearchFilterExpression = function (options, externalContentFromCurrentTab) {\r\n var expressions = [options.filterExpression];\r\n if (externalContentFromCurrentTab.externalSourcesFromCurrentTab.length > 0) {\r\n expressions.push(this.utilities.getExternalSourcesExpression(externalContentFromCurrentTab.externalSourcesFromCurrentTab));\r\n }\r\n if (externalContentFromCurrentTab.externalCollectionsFromCurrentTab.length > 0) {\r\n expressions.push(this.utilities.getExternalCollectionsExpression(externalContentFromCurrentTab.externalCollectionsFromCurrentTab));\r\n }\r\n return expressions.join(\" OR \");\r\n };\r\n SearchExpressionHelper.prototype.getSearchBoostExpression = function (options) {\r\n return options.boostExpressions;\r\n };\r\n SearchExpressionHelper.prototype.getSourcesExpression = function (sourcesExpressionOptions, externalContentFromCurrentTab) {\r\n var sources = [];\r\n if (this.utilities.isDefined(sourcesExpressionOptions.indexSourceName)) {\r\n sources.push(sourcesExpressionOptions.indexSourceName);\r\n }\r\n if (sourcesExpressionOptions.externalSources.length > 0) {\r\n sources.push.apply(sources, sourcesExpressionOptions.externalSources);\r\n }\r\n if (externalContentFromCurrentTab.externalSourcesFromCurrentTab.length > 0) {\r\n sources.push.apply(sources, externalContentFromCurrentTab.externalSourcesFromCurrentTab);\r\n }\r\n return this.utilities.getFilterExpression(\"@syssource\", sources);\r\n };\r\n SearchExpressionHelper.prototype.getAllExternalCollections = function (externalCollectionsOptions, externalContentFromCurrentTabOptions) {\r\n var externalSources = [];\r\n externalSources.push.apply(externalSources, externalCollectionsOptions.externalCollections);\r\n externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalCollectionsFromCurrentTab);\r\n return externalSources;\r\n };\r\n return SearchExpressionHelper;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = SearchExpressionHelper;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/SearchExpressionsHelper.ts\n// module id = 10\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar FilterExpressionHelper = (function () {\r\n function FilterExpressionHelper(expressionHelperUtilities) {\r\n this.utilities = expressionHelperUtilities;\r\n }\r\n FilterExpressionHelper.prototype.getFilterExpressions = function (options) {\r\n var filterExpressions = this.getContextFilterExpressions(options);\r\n var filterExpressionsWithExternalContent = this.appendExternalContentToExpression(filterExpressions, options);\r\n return filterExpressionsWithExternalContent;\r\n };\r\n ;\r\n FilterExpressionHelper.prototype.getContextFilterExpressions = function (options) {\r\n var expression = \"\";\r\n var filterExpressions = [];\r\n if (options.filterResultsOnCurrentCulture) {\r\n var clientLanguageFilterExpression = this.utilities.getFilterExpression(options.clientLanguageFieldName, options.clientLanguageName);\r\n filterExpressions.push(clientLanguageFilterExpression);\r\n }\r\n if (options.filterResultOnLatestVersion) {\r\n var latestVersionFilterExpression = this.utilities.getFilterExpression(options.latestVersionFieldName, \"1\");\r\n filterExpressions.push(latestVersionFilterExpression);\r\n }\r\n if (filterExpressions.length > 0) {\r\n var filterExpression = filterExpressions.join(\" \").replace(/^\\s+|\\s+$/g, \"\");\r\n expression = \"(\" + filterExpression + \")\";\r\n }\r\n return expression;\r\n };\r\n FilterExpressionHelper.prototype.appendExternalContentToExpression = function (expression, options) {\r\n var newExpression = expression;\r\n if (this.hasExternalContentSpecified(options)) {\r\n var expressions = [expression];\r\n var externalSources = this.getAllExternalSources(options, options);\r\n if (externalSources.length > 0) {\r\n expressions.push(this.utilities.getExternalSourcesExpression(externalSources));\r\n }\r\n var externalCollections = this.getAllExternalCollections(options, options);\r\n if (externalCollections.length > 0) {\r\n expressions.push(this.utilities.getExternalCollectionsExpression(externalCollections));\r\n }\r\n newExpression = \"(\" + expressions.join(\" OR \") + \")\";\r\n }\r\n return newExpression;\r\n };\r\n ;\r\n FilterExpressionHelper.prototype.getAllExternalSources = function (externalSourcesOptions, externalContentFromCurrentTabOptions) {\r\n var externalSources = [];\r\n externalSources.push.apply(externalSources, externalSourcesOptions.externalSources);\r\n externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalSourcesFromCurrentTab);\r\n return externalSources;\r\n };\r\n FilterExpressionHelper.prototype.getAllExternalCollections = function (externalCollectionsOptions, externalContentFromCurrentTabOptions) {\r\n var externalSources = [];\r\n externalSources.push.apply(externalSources, externalCollectionsOptions.externalCollections);\r\n externalSources.push.apply(externalSources, externalContentFromCurrentTabOptions.externalCollectionsFromCurrentTab);\r\n return externalSources;\r\n };\r\n FilterExpressionHelper.prototype.hasExternalContentSpecified = function (options) {\r\n return options.externalCollections.length > 0 ||\r\n options.externalSources.length > 0 ||\r\n options.externalSourcesFromCurrentTab.length > 0 ||\r\n options.externalCollectionsFromCurrentTab.length > 0;\r\n };\r\n ;\r\n return FilterExpressionHelper;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = FilterExpressionHelper;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/FilterExpressionHelper.ts\n// module id = 11\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar ExpressionHelperUtilities = (function () {\r\n function ExpressionHelperUtilities() {\r\n }\r\n ExpressionHelperUtilities.prototype.getFilterExpression = function (fieldName, fieldValue) {\r\n if (typeof (fieldValue) == \"string\") {\r\n return fieldName + \"==\\\"\" + fieldValue + \"\\\"\";\r\n }\r\n else {\r\n var fieldValues = fieldValue;\r\n if (fieldValues.length > 0) {\r\n return fieldName + \"==(\\\"\" + fieldValues.join('\",\"') + \"\\\")\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }\r\n };\r\n ;\r\n ExpressionHelperUtilities.prototype.getExternalCollectionsExpression = function (externalCollections) {\r\n return this.getFilterExpression(\"@syscollection\", externalCollections);\r\n };\r\n ExpressionHelperUtilities.prototype.getExternalSourcesExpression = function (externalSources) {\r\n return this.getFilterExpression(\"@syssource\", externalSources);\r\n };\r\n ExpressionHelperUtilities.prototype.isDefined = function (property) {\r\n return typeof property !== \"undefined\";\r\n };\r\n return ExpressionHelperUtilities;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = ExpressionHelperUtilities;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Rules/ExpressionHelperUtilities.ts\n// module id = 12\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar Coveo = require(\"coveo-search-ui\");\r\nvar SearchEndpointHelper = (function () {\r\n function SearchEndpointHelper() {\r\n }\r\n SearchEndpointHelper.initializeEndpoint = function (options) {\r\n Coveo.SearchEndpoint.endpoints[\"default\"] = new Coveo.SearchEndpoint({\r\n restUri: options.restEndpointUri,\r\n queryStringArguments: { 'sitecoreItemUri': options.sitecoreItemUri, 'siteName': options.siteName }\r\n });\r\n };\r\n return SearchEndpointHelper;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = SearchEndpointHelper;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/SearchEndpointHelper.ts\n// module id = 13\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar Coveo = require(\"coveo-search-ui\");\r\nvar OmniboxResultListHandler = (function () {\r\n function OmniboxResultListHandler() {\r\n }\r\n OmniboxResultListHandler.getOmniboxDataRowIndex = function () {\r\n this.omniboxDataRowIndexCounter = this.omniboxDataRowIndexCounter + 1;\r\n return this.omniboxDataRowIndexCounter;\r\n };\r\n OmniboxResultListHandler.prototype.onOmniboxRowClicked = function (result) {\r\n window.location.href = result.clickUri;\r\n };\r\n OmniboxResultListHandler.prototype.buildOmniboxContent = function (results, options) {\r\n var _this = this;\r\n var id = options.id ? options.id : options.resultTemplateId;\r\n var templateElement = document.getElementById(id);\r\n var template = new Coveo.UnderscoreTemplate(templateElement);\r\n var resultContainer = this.getResultContainer(options.headerTitle);\r\n var content = Coveo.$$(\"div\");\r\n content.append(resultContainer.el);\r\n results.forEach(function (result) {\r\n var oneRowOfContent = template.instantiateToElement(result);\r\n var rowElement = Coveo.$$(oneRowOfContent);\r\n rowElement.addClass(\"CoveoResult coveo-omnibox-selectable\");\r\n rowElement.on(\"click keyboardSelect\", function () {\r\n _this.onOmniboxRowClicked(result);\r\n });\r\n content.append(oneRowOfContent);\r\n });\r\n return content.el;\r\n };\r\n OmniboxResultListHandler.prototype.populateOmniboxResultList = function (populateOmniboxObject, options, queryController) {\r\n var _this = this;\r\n var queryBuilder = queryController.createQueryBuilder(options);\r\n if (options.queryExpression && typeof (options.queryExpression) === \"string\") {\r\n queryBuilder.advancedExpression.add(options.queryExpression);\r\n }\r\n queryBuilder.numberOfResults = options.numberOfResults;\r\n var query = queryBuilder.build();\r\n var promise = this.executeSearchQuery(query)\r\n .then(function (response) {\r\n if (response.totalCount > 0) {\r\n var elementToReturn = _this.buildOmniboxContent(response.results, options);\r\n var objectToReturn = {\r\n zIndex: options.omniboxDataRowIndex,\r\n element: elementToReturn\r\n };\r\n return objectToReturn;\r\n }\r\n else {\r\n return { element: undefined };\r\n }\r\n });\r\n populateOmniboxObject.rows.push({ deferred: promise });\r\n };\r\n OmniboxResultListHandler.prototype.executeSearchQuery = function (query) {\r\n return Coveo.SearchEndpoint.endpoints[\"default\"].search(query);\r\n };\r\n OmniboxResultListHandler.prototype.getResultContainer = function (captionText) {\r\n var resultContainer = Coveo.$$(\"div\");\r\n resultContainer.addClass(\"coveo-omnibox-result-list-header\");\r\n resultContainer.append(this.getIcon().el);\r\n resultContainer.append(this.getCaption(captionText).el);\r\n return resultContainer;\r\n };\r\n OmniboxResultListHandler.prototype.getIcon = function () {\r\n var iconResultList = Coveo.$$(\"span\");\r\n iconResultList.addClass(\"coveo-icon-omnibox-result-list\");\r\n return iconResultList;\r\n };\r\n OmniboxResultListHandler.prototype.getCaption = function (captionText) {\r\n var caption = Coveo.$$(\"span\");\r\n caption.addClass(\"coveo-caption\");\r\n caption.el.textContent = captionText;\r\n return caption;\r\n };\r\n OmniboxResultListHandler.omniboxDataRowIndexCounter = 0;\r\n return OmniboxResultListHandler;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = OmniboxResultListHandler;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/OmniboxResultList/OmniboxResultListHandler.ts\n// module id = 14\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar Utilities = (function () {\r\n function Utilities() {\r\n }\r\n Utilities.appendTrailingSlash = function (url) {\r\n return url.charAt(url.length - 1) === \"/\" ? url : url + \"/\";\r\n };\r\n return Utilities;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = Utilities;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Utilities.ts\n// module id = 15\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar TabsBinding = (function () {\r\n function TabsBinding() {\r\n var _this = this;\r\n this.bindings = {};\r\n this.getElementBinding = function (elementId) {\r\n return {\r\n elementId: elementId,\r\n document: document.getElementById(elementId),\r\n binding: _this.bindings[elementId]\r\n };\r\n };\r\n this.elementFound = function (elementBinding) {\r\n var elementFound = typeof (elementBinding.document) !== \"undefined\";\r\n if (!elementFound) {\r\n console.error(\"The element with the ID '\" + elementBinding.elementId + \"' was not found. Ensure the element exists in the DOM.\");\r\n }\r\n return elementFound;\r\n };\r\n this.initBinding = function (itemId) {\r\n if (!_this.bindings.hasOwnProperty(itemId)) {\r\n _this.bindings[itemId] = {\r\n tabNot: []\r\n };\r\n }\r\n return _this.bindings[itemId];\r\n };\r\n this.applyBinding = function (elementBinding) {\r\n _this.addExcludeFromTabTag(elementBinding.document, elementBinding.binding.tabNot);\r\n };\r\n this.addExcludeFromTabTag = function (element, bindings) {\r\n if (bindings.length > 0) {\r\n element.setAttribute(\"data-tab-not\", bindings.join(\",\"));\r\n }\r\n };\r\n }\r\n TabsBinding.prototype.excludeItemsIdsInTab = function (elementIds, tabId) {\r\n elementIds.map(this.initBinding, this).forEach(function (binding) {\r\n binding.tabNot.push(tabId);\r\n });\r\n };\r\n TabsBinding.prototype.applyBindings = function () {\r\n Object.keys(this.bindings)\r\n .map(this.getElementBinding)\r\n .filter(this.elementFound)\r\n .forEach(this.applyBinding);\r\n };\r\n return TabsBinding;\r\n}());\r\nexports.__esModule = true;\r\nexports[\"default\"] = TabsBinding;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Tabs/TabsBinding.ts\n// module id = 16\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar _ = require(\"underscore\");\r\nvar Coveo = require(\"coveo-search-ui\");\r\nvar CoveoForSitecoreBase_1 = require(\"./CoveoForSitecoreBase\");\r\nvar Searchbox = (function (_super) {\r\n __extends(Searchbox, _super);\r\n function Searchbox(searchComponent, searchBoxPluginOptions, defaultSearchBoxPluginOptions) {\r\n _super.call(this, searchComponent, searchBoxPluginOptions, defaultSearchBoxPluginOptions);\r\n this.searchBoxOptions = _.extend({}, defaultSearchBoxPluginOptions, searchBoxPluginOptions);\r\n }\r\n Searchbox.prototype.initialize = function () {\r\n var _this = this;\r\n this.logger.log(\"Initializing searchbox.\");\r\n this.initializeSearchOptions();\r\n if (!this.options.isInitialized) {\r\n this.domElement.on(Coveo.QueryEvents.buildingQuery, function (e, args) {\r\n var expression = _this.expressionsHelper.getSearchExpression(_this.searchBoxOptions);\r\n args.queryBuilder.advancedExpression.add(expression);\r\n });\r\n }\r\n Coveo.initSearchbox(this.element, this.searchBoxOptions.searchRedirectionUrl, this.searchBoxOptions);\r\n this.doPostInitializationActions();\r\n };\r\n return Searchbox;\r\n}(CoveoForSitecoreBase_1[\"default\"]));\r\nexports.__esModule = true;\r\nexports[\"default\"] = Searchbox;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/Searchbox.ts\n// module id = 17\n// module chunks = 0","// Copyright (c) 2005-2016, Coveo Solutions Inc.\r\n\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n/// \r\nvar _ = require(\"underscore\");\r\nvar Coveo = require(\"coveo-search-ui\");\r\nvar OmniboxResultListHandler_1 = require(\"./OmniboxResultListHandler\");\r\nvar Component = Coveo.Component;\r\nvar OmniboxResultList = (function (_super) {\r\n __extends(OmniboxResultList, _super);\r\n function OmniboxResultList(element, options, bindings) {\r\n _super.call(this, element, OmniboxResultList.ID, bindings);\r\n this.element = element;\r\n this.options = options;\r\n this.omniboxResultListHandler = new OmniboxResultListHandler_1[\"default\"]();\r\n this.options = Coveo.ComponentOptions.initComponentOptions(element, OmniboxResultList, options);\r\n if (bindings) {\r\n this.initializeOmniboxDataRowIndex(bindings);\r\n }\r\n this.bind.onRootElement(Coveo.OmniboxEvents.populateOmnibox, this.populateOmnibox);\r\n this.bindEnterToSearchButton();\r\n }\r\n // The enter button stops working when calling \"queryController.createQueryBuilder(options);\" in the populateOmnibox event.\r\n // This ugly workaround fixes the enter button.\r\n OmniboxResultList.prototype.bindEnterToSearchButton = function () {\r\n var queryBoxes = document.querySelectorAll(\".CoveoSearchbox\");\r\n _.map(queryBoxes, function (queryBox) {\r\n return {\r\n input: queryBox.querySelector(\"input\"),\r\n button: queryBox.querySelector(\".CoveoSearchButton\")\r\n };\r\n }).filter(function (queryBoxElements) {\r\n return queryBoxElements.button !== null && queryBoxElements.input !== null;\r\n }).forEach(function (queryBoxElements) {\r\n queryBoxElements.input.addEventListener(\"keyup\", function (event) {\r\n if (event.keyCode === 13) {\r\n queryBoxElements.button.click();\r\n }\r\n });\r\n });\r\n };\r\n OmniboxResultList.prototype.populateOmnibox = function (populateOmniboxObject) {\r\n this.omniboxResultListHandler.populateOmniboxResultList(populateOmniboxObject, this.options, this.queryController);\r\n };\r\n OmniboxResultList.prototype.initializeOmniboxDataRowIndex = function (bindings) {\r\n // \"as HTMLElement\" is needed in TypeScript 1.5, see details here: https://github.com/Microsoft/TypeScript/issues/4401\r\n var omniboxResultList = document.getElementsByClassName(\"CoveoForSitecoreOmniboxResultList\")[0];\r\n if (!bindings.searchInterface.options.originalOptionsObject.keepOmniboxSuggestionsProvidersDefaultOrdering) {\r\n // 51 is the default z-index of the JS Search OmniboxResultList.\r\n // We make sure that the last omnibox index is 51, the before last index is 52 and so on.\r\n this.options.omniboxDataRowIndex = 51 + Coveo.$$(omniboxResultList).children().length - bindings.searchInterface.options.originalOptionsObject.omniboxDataRowIndexCounter;\r\n bindings.searchInterface.options.originalOptionsObject.omniboxDataRowIndexCounter++;\r\n }\r\n };\r\n OmniboxResultList.ID = \"ForSitecoreOmniboxResultList\";\r\n OmniboxResultList.options = {\r\n headerTitle: Coveo.ComponentOptions.buildStringOption(),\r\n queryExpression: Coveo.ComponentOptions.buildStringOption(),\r\n numberOfResults: Coveo.ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1 }),\r\n omniboxDataRowIndex: Coveo.ComponentOptions.buildNumberOption({ defaultValue: 51, min: 16 }),\r\n resultTemplateId: Coveo.ComponentOptions.buildStringOption()\r\n };\r\n return OmniboxResultList;\r\n}(Component));\r\nexports.OmniboxResultList = OmniboxResultList;\r\nCoveo.Initialization.registerAutoCreateComponent(OmniboxResultList);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Coveo.SearchProvider/Coveo.Sitecore.UI/CoveoForSitecoreBase/OmniboxResultList/OmniboxResultList.ts\n// module id = 18\n// module chunks = 0"],"sourceRoot":""}