{"version":3,"sources":["webpack://CoveoForSitecore/webpack/universalModuleDefinition","webpack://CoveoForSitecore/webpack/bootstrap","webpack://CoveoForSitecore/external {\"root\":\"Coveo\",\"commonjs\":\"coveo-search-ui\",\"commonjs2\":\"coveo-search-ui\",\"amd\":\"coveo-search-ui\"}","webpack://CoveoForSitecore/./src/events/ContextEvents.ts","webpack://CoveoForSitecore/./src/base/Context.ts","webpack://CoveoForSitecore/./src/utils/HTMLUtils.ts","webpack://CoveoForSitecore/./src/base/Prebinding.ts","webpack://CoveoForSitecore/./src/events/ExpressionEvents.ts","webpack://CoveoForSitecore/./src/ui/context/CoveoForSitecoreContext.ts","webpack://CoveoForSitecore/./src/handlers/LegacyFieldTypeResolver.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/ItemIdSelector.ts","webpack://CoveoForSitecore/./src/base/Initialization.ts","webpack://CoveoForSitecore/./src/resolvers/components/SearchInterfaceComponentInitializer.ts","webpack://CoveoForSitecore/./src/base/initialization/SitecoreExperienceEditor.ts","webpack://CoveoForSitecore/./src/utils/SearchInterfaceProvider.ts","webpack://CoveoForSitecore/./src/base/initialization/ElementWithContextInitializer.ts","webpack://CoveoForSitecore/./src/utils/TabUtils.ts","webpack://CoveoForSitecore/./src/ui/analytics/CoveoForSitecoreAnalytics.ts","webpack://CoveoForSitecore/./src/ui/analytics/CoveoForSitecoreConfigureSearchHub.ts","webpack://CoveoForSitecore/./src/ui/analytics/SendAnalyticsToSitecore.ts","webpack://CoveoForSitecore/./src/ui/analytics/ValidateAnalyticsIncluded.ts","webpack://CoveoForSitecore/./src/ui/context/CoveoForSitecoreBindWithUserContext.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreExpressions.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreSyntax.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreRankingExpression.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreExternalContent.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreFilterExpression.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreLocalExpression.ts","webpack://CoveoForSitecore/./src/ui/distance/GoogleApiPositionProvider.ts","webpack://CoveoForSitecore/./src/ui/distance/NavigatorPositionProvider.ts","webpack://CoveoForSitecore/./src/ui/distance/StaticPositionProvider.ts","webpack://CoveoForSitecore/./src/EventsModules.ts","webpack://CoveoForSitecore/./src/BaseModules.ts","webpack://CoveoForSitecore/./src/base/initialization/ContextInitializer.ts","webpack://CoveoForSitecore/./src/handlers/CoveoFieldsHandler.ts","webpack://CoveoForSitecore/./src/handlers/SourceSpecificFieldResolver.ts","webpack://CoveoForSitecore/./src/handlers/CoveoLabelsHandler.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/PrebindResolver.ts","webpack://CoveoForSitecore/./src/resolvers/sortCriteria/SortCriteriaPreprocessor.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/PrebindHelpers.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/AnalyticsEnabled.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/CoveoForSitecoreAnalyticsEndpoint.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/CurrentMaximumAge.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/CurrentPageName.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/FieldTranslator.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/IsAnonymous.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/MainSearchInterfaceSelector.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/SortCriteria.ts","webpack://CoveoForSitecore/./src/resolvers/sortCriteria/SortCriteriaResolver.ts","webpack://CoveoForSitecore/./src/resolvers/prebinding/prebindHelpers/UnfoldDictionaryToAttributes.ts","webpack://CoveoForSitecore/./src/base/SearchEndpoint.ts","webpack://CoveoForSitecore/./src/base/initialization/ExternalComponentInitializer.ts","webpack://CoveoForSitecore/./src/base/initialization/SearchboxInitializer.ts","webpack://CoveoForSitecore/./src/base/initialization/SearchInterfaceInitializer.ts","webpack://CoveoForSitecore/./src/base/initialization/HostedSearchPageInitializer.ts","webpack://CoveoForSitecore/./src/rest/EndpointCaller.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/QueryNodeTreeParserFactory.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/AndNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/FalseNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/FieldNodeParser.ts","webpack://CoveoForSitecore/./node_modules/dateformat/lib/dateformat.js","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/NotNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/OrNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/TrueNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/QueryNodeTreeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/QueryRankingNodeExpressionResolver.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/QueryFilterNodeExpressionResolver.ts","webpack://CoveoForSitecore/./src/ComponentsEntry.ts"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","SitecoreContextEvents","onSitecoreContextInitialization","ContextInitializer_1","CoveoForSitecoreContext_1","coveo_search_ui_1","Context","configureContext","contextElement","Error","options","ComponentOptions","initComponentOptions","CoveoForSitecoreContext","this","initializeWithContextOptions","contextOptions","contextInitializer","ContextInitializer","fieldsHandler","createFieldsHandler","externalFields","scExternalFields","sourceSpecificFields","scSourceSpecificFields","preferSourceSpecificFields","scPreferSourceSpecificFields","prefix","scFieldPrefix","suffix","scFieldSuffix","labels","createLabelsHandler","scLabels","sourceName","scIndexSourceName","initializePrebinding","context","initializeUnderscoreFieldsHelpers","initializeUnderscoreLabelsHelpers","initializeUnderscoreContextHelpers","initializeContextElement","fields","element","removeAllIDAttributes","removeAttribute","children","querySelectorAll","length","item","nodeListToArray","elements","array","push","cloneElementSafelyForAccessibility","cloneNode","PrebindResolver_1","SortCriteriaPreprocessor","Prebinding","registerPrebindHelper","helperName","handler","processor","getHelper","applyPrebindingOnElement","rootElement","canApplyPrebind","hasNotAppliedPrebind","applyToElement","applyPreprocessingToElements","adjustDOMElements","applyPrebindingOnChildren","_this","processedElements","map","filter","forEach","PrebindResolver","SitecoreExpressionEvents","onBuildingSitecoreExternalContent","onBuildingLocalSitecoreInstanceExpression","ContextEvents_1","_super","bindings","ID","onRootElement","InitializationEvents","afterComponentsInitialization","QueryEvents","doneBuildingQuery","OmniboxEvents","buildingQuerySuggest","__extends","args","hasDefaultPipelineNameSet","queryBuilderUsesDefaultPipeline","queryBuilder","pipeline","scDefaultPipelineName","querySuggestUsesDefaultPipeline","payload","querySuggestRequest","contextArgs","sitecoreItemId","scItemId","sitecoreItemUri","scItemUri","sitecorePageName","scPageName","shouldHaveAnalyticsComponent","scShouldHaveAnalyticsComponent","analyticsEnabled","scAnalyticsEnabled","indexSourceName","currentLanguage","scCurrentLanguage","languageFieldName","scLanguageFieldName","latestVersionFieldName","scLatestVersionFieldName","isInExperienceEditor","scIsInExperienceEditor","sitecorePageFullPath","scPageNameFullPath","siteName","scSiteName","restEndpointUri","scRestEndpointUri","analyticsEndpointUri","scAnalyticsEndpointUri","trigger","buildStringOption","buildJsonOption","buildBooleanOption","scIsUserAnonymous","scMaximumAge","buildNumberOption","Component","Initialization","registerAutoCreateComponent","LegacyFieldTypeResolver","parseExternalFields","externalField","fieldName","toLowerCase","shouldEscape","isExternalFieldConfig","console","error","shouldEscapeFirstCharacter","shouldEscapeSpecialCharacters","field","shouldDecorate","some","isExternalField","obj","ItemIdSelectorPrebind","resolvers","ResolveIfSelector","ResolveIfItemIdInPage","UseItemIdSelectorAsIs","getPrebind","itemId","getFirstValidResolver","getValue","resolver","message","shift","canResolve","isItemDefined","isIdSelectorValid","selector","document","querySelector","isStartingWithSelectorCharacter","firstCharacter","indexOf","ExternalComponentInitializer_1","SearchboxInitializer_1","SearchInterfaceInitializer_1","ElementWithContextInitializer_1","HostedSearchPageInitializer_1","initSearchInterface","searchInterfaceElement","searchInterfaceInitializer","initExternalComponentsSection","externalComponentInitializer","initializeExternalComponentSection","SearchInterfaceInitializer","searchboxInitializer","SearchboxInitializer","ExternalComponentInitializer","hostedSearchPageInitializer","HostedSearchPageInitializer","initializeSearchInterfaceForExperienceEditor","initializeExperienceEditorHooksForSearchInterface","initSearchboxIfStandalone","searchBoxElement","searchPageUri","initContextOnElement","ElementWithContextInitializer","initializeContextWithinElement","initExternalComponentsSectionForExperienceEditor","initializeExperienceEditorHooksForExternalComponentsSection","initHostedSearchPageInitializer","initializeSearchPage","Prebinding_1","HTMLUtils_1","SearchInterfaceComponentInitializer","loadComponentsForSearchInterface","searchInterface","newComponent","automaticallyCreateComponentsInside","getBindings","initResult","then","removeAllPlaceholdersWithinElement","queryController","executeQuery","ignoreWarningSearchEvent","tryUnloadComponentsForSearchInterface","getElementsByClassName","facet","facetComponent","detachComponent","removeAllChildren","tab","tabComponent","removePlaceholders","classList","remove","contains","removeFacetsPlaceholders","firstChild","removeChild","loadComponentsWithSearchInterfaceInitialization","componentsContainer","Coveo","externalComponents","initializer","getInitializerInstance","SitecoreExperienceEditor","isAfterFrameLoadedOverriden","isAfterPersonalizationChangedOverriden","isBeforeUnloadingChromeOverriden","onAfterFrameLoadedCallbacks","onAfterPersonalizationChanged","onBeforeUnloadingChrome","registerOnLoadRenderingFromUrl","onAfterFrameLoadedCallback","tryOverrideSitecoreLoadRenderingFromUrl","registerBeforeUnloadingChrome","onBeforeUnloadingChromeCallback","tryOverrideOnUnloadingChrome","registerOnAfterPersonalizationChanged","tryOverrideSitecoreChromeTypesRenderingChangeCondition","isInBackgroundRendering","location","search","isInBackgroundRenderingParameterName","getComponentFromLoadRenderingFromUrlCallbackData","callbackData","getElementById","opening","id","nextElementSibling","Sitecore","overrideSitecoreLoadRenderingFromUrl","originalLoad","PageModes","ChromeTypes","Placeholder","insertRendering","frameLoadedCallback","callback","overrideSitecoreChromeChangeCondition","originalChangeCondition","Rendering","changeCondition","sender","preserveCacheUpdating","changedElement","chrome","apply","arguments","overrideSitecoreChromeTypesRenderingChangeCondition","elementToProcessWhenFinished","originalStartActivation","_startActivation","originalEndActivation","_endActivation","markersAndElements","fieldId","isDifferentFirstLoadMarker","getValidMarker","reason","nodeType","Node","TEXT_NODE","registerShowDebugInformationCallback","debugModeEnabled","debugInfoElements","add","ChromeManager","resetChromes","staticInstance","getExperienceEditorInstance","SearchInterfacesProvider","getSearchInterfacesInPage","componentsIds","searchInterfacesSelector","getSearchInterfacesSelectorFromComponentIds","searchInterfaces","componentIds","componentId","computeSelectorForType","join","Context_1","appendChild","isTabCurrentlySelected","selected","queryStateModel","QueryStateModel","attributesEnum","CoveoForSitecoreAnalytics","afterInitialization","onAfterInitialization","usageAnalytics","scOriginContext","setOriginContext","sitecoreContext","completeAnalyticsCustomDataWithSitecoreContext","setUsageAnalyticsEnpointServiceUrl","AnalyticsEvents","changeAnalyticsCustomData","scOverrideCurrentLanguage","language","scOverrideOriginWithPageName","originLevel1","customMetadata","pageFullPath","sitename","userContext","getContext","_","extend","_a","scAnalyticsCustomMetadata","metaObject","endpoint","serviceUrl","defaultValue","CoveoForSitecoreConfigureSearchHub","scSearchHub","oneRootElement","onAfterComponentsInitialization","componentOptionsModel","set","EndpointCaller_1","SendAnalyticsToSitecore","endpointCaller","EndpointCallerWrapper","searchEvent","postAnalytics","searchEvents","documentViewEvent","customEvent","eventAction","eventType","eventData","parsedEventData","concat","data","postData","JSON","stringify","sendPost","required","postProcessing","slice","ValidateAnalyticsIncluded","sitecoreContextArgs","searchInterfaceHasNoBoundAnalyticsComponent","errorMessage","componentName","checkIfErrorInErrorMessage","warn","createErrorMessageElement","index","textContent","getComponents","errorSpan","createElement","attrName","CoveoForSitecoreBindWithUserContext","addContext","ExpressionEvents_1","CoveoForSitecoreExpressions","dataset","buildingQuery","buildingQueryArgs","onBuildingQuery","externalContentArgs","triggerBuildingSitecoreExternalContent","localSitecoreInstanceArgs","triggerBuildingLocalSitecoreInstanceEvent","sources","expression","isEmpty","constantExpression","build","filterUnique","externalSources","ExpressionBuilder","buildingQueryAlreadyProcessed","self","CoveoForSitecoreSyntax","fieldHandler","IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED","onDoneBuildingQuery","setFieldHandler","replaceSitecoreFieldExpressionsByCoveoFieldExpressions","expressionBuilder","getParts","originalExpression","replaceSitecoreFieldNamesByCoveoFieldNames","sitecoreFieldNamesMatched","extractSitecoreFieldNames","sitecoreFieldName","coveoFieldName","convertUnaryFieldExpressionToCoveoUnaryFieldExpression","replace","match","SITECORE_FIELD_NAME_REGEX","unaryFieldExpression","isCoveoFieldName","toCoveo","TabUtils_1","QueryRankingNodeExpressionResolver_1","CoveoForSitecoreRankingExpression","shouldAddRankingExpression","scRankingExpression","advancedExpression","trim","scRankingScopeNode","builder","getNodeResolver","parseQueryRankingNode","rankingFunctions","rankingFunction","copyQueryBuilderAttributes","from","to","fromExpressionBuilder","nodeResolver","QueryRankingNodeExpressionResolverFactory","createQueryFilterNodeExpression","logger","scScopeToTab","buildCustomOption","parse","CoveoForSitecoreExternalContent","buildingExternalContentEventArgs","shouldAddExternalContent","scSources","buildListOption","QueryFilterNodeExpressionResolver_1","QueryFilterNodeOptions","parseQueryFilterNode","rawValue","unescapeAttributeValue","CoveoForSitecoreFilterExpression","queryFilterNodeFactory","QueryFilterNodeExpressionResolverFactory","shouldAddFilterExpression","scAdvancedFilter","scFilterScopeNode","resultingBuilder","getQueryFilterNodeExpressionResolver","exception","queryFilterNodeResolver","CoveoForSitecoreLocalExpression","onContextInitialization","builderFilterExpression","onBuildingFilterExpression","buildingFilterExpressionEventArgs","scFilterOnCurrentLanguage","addFieldExpression","scFilterOnLatestVersion","scFilterOnSitecoreContextDatabase","sourceExpression","GoogleApiPositionProvider","DistanceEvents","onResolvingPosition","validateProperties","canProvideDistance","providers","getPosition","googleApiKey","GOOGLE_MAP_BASE_URL","positionData","latitude","lat","longitude","lng","NavigatorPositionProvider","Promise","resolve","reject","navigator","geolocation","getCurrentPosition","position","coords","StaticPositionProvider","canGetPosition","float","SearchEndpoint_1","SearchEndpoint","CoveoFieldsHandler_1","SourceSpecificFieldResolver_1","CoveoLabelsHandler_1","PrebindHelpers_1","LegacyFieldTypeResolver_1","fieldTypeResolver","SourceSpecificFieldResolver","CoveoFieldsHandler","CoveoLabelsHandler","PrebindHelpers","getAllPrebindHelpers","helper","TemplateHelpers","registerTemplateHelper","raw","labelKey","translate","undefined","isValidFieldName","lowerCaseFieldName","fieldWithoutDelimiter","stripCoveoFieldDelimiter","escapedCharacterRegex","test","trace","translatedFieldWithoutDelimiter","translateFieldName","startsWithAt","addCoveoFieldDelimiter","fieldNameWithDelimiter","coveoFieldDelimiter","strippedFieldName","isDecorated","regexString","RegExp","substr","isFieldAlreadyTranslated","replaceSpecialCharacters","replaceFirstCharacter","fieldNameRegex","characters","split","unshift","escapeSpecialCharacter","replaceSpecialCharacter","character","nonSpecialCharacters","charCodeAt","nonSpecialCharactersString","validFirstCharacters","prebindAppliedValue","helpers","hasHelper","attributes","getPrebindingAttributesForElement","applyPrebindToElement","getAllPrebindingAttributesNames","methodName","attribute","lowerCaseFirstCharacter","removePrebindPrefix","attributeValue","method","keys","stringStartsWithPrebindingString","filterAndWarnNonExistingHelperName","lastIndexOf","prebindString","hasHelperWithName","attributeName","substring","charAt","prebind","createReversedSortElement","sortElement","sortElementReverse","sortCriteria","direction","addDirectionToCaption","caption","_i","insertAdjacentElement","adjustSortDropdown","AnalyticsEnabled_1","CoveoForSitecoreAnalyticsEndpoint_1","CurrentMaximumAge_1","CurrentPageName_1","FieldTranslator_1","IsAnonymous_1","MainSearchInterfaceSelector_1","ItemIdSelector_1","SortCriteria_1","UnfoldDictionaryToAttributes_1","AnalyticsEnabledPrebind","CoveoForSitecoreAnalyticsEndpointPrebind","CurrentMaximumAge","CurrentPageNamePrebind","FieldTranslatorPrebind","IsAnonymousPrebind","MainSearchInterfaceSelectorPrebind","SortCriteriaPrebind","UnfoldDictionaryToAttributesPrebind","currentValue","toString","pageName","isAnonymous","ResolveParentSearchInterfaceId","mainSearchInterfaceId","foundId","tryFindParentSearchInterfaceFromElement","parentSearchInterface","findParentWithClass","SearchInterface","className","parent","parentElement","SortCriteriaResolver_1","criteriaResolver","SortCriteriaResolver","sortCriteriaRawValue","sortType","type","sortDirection","enableBothSortDirections","sortDropdownElement","enableSortDropdown","body","resolveRelevancyCriteria","resolveDateCriteria","sortField","resolveFieldCriteria","fieldCriteria","getFieldCriteria","getFieldWithDirection","getInvertedDirection","rawDictionary","parsedDictionary","translatedField","dataKey","toUpperCase","configureSitecoreEndpoint","getAccessToken","accessToken","initializeEndPoint","dispatchInitializationEvent","createNewEndpoint","endpoints","createEvent","initEvent","readyState","dispatchEvent","addEventListener","fetchAccessToken","response","ok","json","token","catch","fetch","Date","now","restUri","queryStringArguments","itemUri","renewAccessToken","SearchInterfaceComponentInitializer_1","SitecoreExperienceEditor_1","SearchInterfaceProvider_1","experienceEditor","searchInterfaceComponentInitializer","searchInterfacesProvider","externalComponentsSection","findSearchInterfaceForSection","getAllSearchInterfaceIds","getAllSearchInterfaceIdsInPage","getSearchInterfaceId","component","searchInterfaceId","searchboxElement","waitForSearchInterfacesInitialization","sent","searchboxElementIsNotInitialized","initSearchbox","Searchbox","all","getAllSearchInterfacesAfterComponentInitialization","$$","waitForSearchInterfaceInitialization","hasClass","on","Initialization_1","searchInterfacePromise","init","event","searchInterfaceComponent","UNABLE_TO_RETRIEVE_ACCESS_TOKEN","searchPageElement","searchEndpointUri","organizationId","searchHub","initializeCoveo","err","displayErrorMessageInExperienceEditor","searchPageRoot","Analytics","organization","errorMessageElement","insertAdjacentHTML","EndpointCaller","url","callOptions","errorsAsSuccess","queryString","requestData","responseType","requestDataType","AndNodeParser_1","FalseNodeParser_1","FieldNodeParser_1","NotNodeParser_1","OrNodeParser_1","TrueNodeParser_1","QueryNodeTreeParser_1","QueryNodeTreeParserFactory","createParser","parser","QueryNodeTreeParser","registerParser","AndNodeParser","FalseNodeParser","FieldNodeParser","NotNodeParser","OrNodeParser","TrueNodeParser","nodeParser","node","left","right","dateformat","indexDateFormat","fieldValueType","parseString","operator","fieldValues","QueryUtils","buildFieldExpression","parseFieldValuesFromType","values","parseBoolean","parseDate","parseNumber","date","parseInt","parseEmptyField","__WEBPACK_AMD_DEFINE_RESULT__","global","timezone","timezoneClip","dateFormat","mask","utc","gmt","val","Array","isArray","isNaN","TypeError","maskSlice","String","masks","D","y","H","M","L","getTimezoneOffset","W","targetThursday","getFullYear","getMonth","getDate","setDate","getDay","firstThursday","ds","setHours","getHours","weekDiff","Math","floor","getWeek","N","dow","getDayOfWeek","flags","dd","pad","ddd","i18n","dayNames","dddd","mm","mmm","monthNames","mmmm","yy","yyyy","h","hh","HH","MM","ss","round","tt","T","TT","Z","pop","abs","S","len","default","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","operand","parsers","queryNodeParser","QueryNodeTreeParserFactory_1","rankingExpressionFieldsRegex","compile","QueryRankingNodeExpressionResolver","queryRankingNode","QueryBuilder","rankingExpressions","ranking","parsedExpression","modifier","translateRankingExpressionFieldNames","textualRankingExpressions","rankingExpression","matchingExpression","matchingGroup","QueryFilterNodeExpressionResolver","queryFilterNode","Assert","isNotNull","advanced","CoveoForSitecoreAnalytics_1","CoveoForSitecoreConfigureSearchHub_1","SendAnalyticsToSitecore_1","ValidateAnalyticsIncluded_1","CoveoForSitecoreBindWithUserContext_1","CoveoForSitecoreExpressions_1","CoveoForSitecoreSyntax_1","CoveoForSitecoreRankingExpression_1","CoveoForSitecoreExternalContent_1","CoveoForSitecoreFilterExpression_1","CoveoForSitecoreLocalExpression_1","GoogleApiPositionProvider_1","NavigatorPositionProvider_1","StaticPositionProvider_1","__export"],"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-search-ui\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"coveo-search-ui\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CoveoForSitecore\"] = factory(require(\"coveo-search-ui\"));\n\telse\n\t\troot[\"CoveoForSitecore\"] = factory(root[\"Coveo\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 81);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export interface ISitecoreContextInitializationEventArgs {\r\n sitecoreItemId: string;\r\n sitecoreItemUri: string;\r\n sitecorePageName: string;\r\n shouldHaveAnalyticsComponent: boolean;\r\n analyticsEnabled: boolean;\r\n indexSourceName: string;\r\n currentLanguage: string;\r\n languageFieldName: string;\r\n latestVersionFieldName: string;\r\n isInExperienceEditor: boolean;\r\n sitecorePageFullPath: string;\r\n siteName: string;\r\n restEndpointUri: string;\r\n analyticsEndpointUri: string;\r\n}\r\n\r\nexport class SitecoreContextEvents {\r\n public static onSitecoreContextInitialization = 'onSitecoreContextInitialization';\r\n}\r\n","import { ICoveoFieldHandler } from '../handlers/CoveoFieldsHandler';\r\nimport { ICoveoLabelsHandler } from '../handlers/CoveoLabelsHandler';\r\nimport { ContextInitializer } from './initialization/ContextInitializer';\r\nimport { CoveoForSitecoreContext, ICoveoForSitecoreContextOptions } from '../ui/context/CoveoForSitecoreContext';\r\nimport { ComponentOptions } from 'coveo-search-ui';\r\n\r\nexport interface IOnContextConfiguredHandler {\r\n handle(contextElement: HTMLElement): void;\r\n}\r\n\r\nexport class Context {\r\n public static fields: ICoveoFieldHandler;\r\n public static labels: ICoveoLabelsHandler;\r\n\r\n public static element: HTMLElement;\r\n\r\n static configureContext(contextElement: HTMLElement): void {\r\n if (typeof contextElement === 'undefined' || contextElement === null) {\r\n throw Error('You must execute `configureContext` with an HTML element.');\r\n }\r\n\r\n const options: ICoveoForSitecoreContextOptions = ComponentOptions.initComponentOptions(\r\n contextElement,\r\n CoveoForSitecoreContext\r\n );\r\n this.initializeWithContextOptions(contextElement, options);\r\n }\r\n\r\n private static initializeWithContextOptions(\r\n contextElement: HTMLElement,\r\n contextOptions: ICoveoForSitecoreContextOptions\r\n ): void {\r\n const contextInitializer = new ContextInitializer();\r\n const fieldsHandler = contextInitializer.createFieldsHandler({\r\n externalFields: contextOptions.scExternalFields,\r\n sourceSpecificFields: contextOptions.scSourceSpecificFields,\r\n preferSourceSpecificFields: contextOptions.scPreferSourceSpecificFields,\r\n prefix: contextOptions.scFieldPrefix,\r\n suffix: contextOptions.scFieldSuffix,\r\n });\r\n const labels: ICoveoLabelsHandler = contextInitializer.createLabelsHandler({\r\n labels: contextOptions.scLabels,\r\n });\r\n const sourceName = contextOptions.scIndexSourceName;\r\n\r\n contextInitializer.initializePrebinding({\r\n fieldsHandler: fieldsHandler,\r\n context: contextOptions,\r\n });\r\n contextInitializer.initializeUnderscoreFieldsHelpers(fieldsHandler);\r\n contextInitializer.initializeUnderscoreLabelsHelpers(labels);\r\n contextInitializer.initializeUnderscoreContextHelpers(sourceName);\r\n contextInitializer.initializeContextElement(contextElement);\r\n\r\n this.fields = fieldsHandler;\r\n this.labels = labels;\r\n this.element = contextElement;\r\n }\r\n}\r\n","export function nodeListToArray(elements: HTMLCollectionOf | NodeListOf): HTMLElement[] {\r\n const array: HTMLElement[] = [];\r\n for (var i = 0, length = elements.length; i < length; i++) {\r\n array.push(elements.item(i) as HTMLElement);\r\n }\r\n return array;\r\n}\r\n\r\nexport function cloneElementSafelyForAccessibility(element: HTMLElement): HTMLElement {\r\n const clone = element.cloneNode(true) as HTMLElement;\r\n return removeAllIDAttributes(clone);\r\n}\r\n\r\nexport function removeAllIDAttributes(element: HTMLElement): HTMLElement {\r\n element.removeAttribute('id');\r\n const children = element.querySelectorAll('*[id]');\r\n const length = children.length;\r\n for (let i = 0; i < length; i++) {\r\n children.item(i).removeAttribute('id');\r\n }\r\n return element;\r\n}\r\n","import { IPrebindResolver, PrebindResolver, IPrebindHandler } from '../resolvers/prebinding/PrebindResolver';\r\nimport * as SortCriteriaPreprocessor from '../resolvers/sortCriteria/SortCriteriaPreprocessor';\r\n\r\nexport class Prebinding {\r\n private static processor: IPrebindResolver = new PrebindResolver();\r\n\r\n static registerPrebindHelper(helperName: string, handler: IPrebindHandler): void {\r\n this.processor.registerPrebindHelper(helperName, handler);\r\n }\r\n\r\n static getHelper(helperName: string): IPrebindHandler {\r\n return this.processor.getHelper(helperName);\r\n }\r\n\r\n static applyPrebindingOnElement(rootElement: HTMLElement): void {\r\n if (this.processor.canApplyPrebind(rootElement) && this.processor.hasNotAppliedPrebind(rootElement)) {\r\n this.processor.applyToElement(rootElement);\r\n }\r\n }\r\n\r\n static applyPreprocessingToElements(rootElement: HTMLElement) {\r\n SortCriteriaPreprocessor.adjustDOMElements(rootElement);\r\n\r\n return rootElement.querySelectorAll('*');\r\n }\r\n\r\n static applyPrebindingOnChildren(rootElement: HTMLElement): void {\r\n const processedElements = this.applyPreprocessingToElements(rootElement);\r\n\r\n this.nodeListToArray(processedElements)\r\n .map((element) => element as HTMLElement)\r\n .filter((element) => this.processor.canApplyPrebind(element))\r\n .filter((element) => this.processor.hasNotAppliedPrebind(element))\r\n .forEach((element) => this.processor.applyToElement(element));\r\n }\r\n\r\n private static nodeListToArray(elements: NodeListOf): TElementType[] {\r\n const array: TElementType[] = [];\r\n for (var i = 0, length = elements.length; i < length; i++) {\r\n array.push(elements[i]);\r\n }\r\n return array;\r\n }\r\n}\r\n","import { ExpressionBuilder } from 'coveo-search-ui';\r\n\r\nexport interface IBuildingExternalContentEventArgs {\r\n sources: string[];\r\n}\r\n\r\nexport interface IBuildingLocalSitecoreInstanceExpressionEventArgs {\r\n expression: ExpressionBuilder;\r\n externalSources: string[];\r\n buildingQueryAlreadyProcessed: boolean;\r\n}\r\n\r\nexport class SitecoreExpressionEvents {\r\n public static onBuildingSitecoreExternalContent = 'onBuildingSitecoreExternalContent';\r\n public static onBuildingLocalSitecoreInstanceExpression = 'onBuildingLocalSitecoreInstanceExpression';\r\n}\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IBuildingQuerySuggestArgs,\r\n IComponentBindings,\r\n InitializationEvents,\r\n IQuerySuggestRequest,\r\n OmniboxEvents,\r\n QueryEvents,\r\n QueryBuilder,\r\n IDoneBuildingQueryEventArgs,\r\n Initialization,\r\n IStringMap,\r\n} from 'coveo-search-ui';\r\n\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\nimport { IExternalFieldConfig as ILegacyExternalFieldConfig } from '../../handlers/CoveoFieldsHandler';\r\nimport { IExternalFieldConfig, ISourceSpecificFieldConfig } from '../../handlers/IFieldTypeResolver';\r\n\r\nexport interface ICoveoForSitecoreContextOptions {\r\n scItemId: string;\r\n scItemUri: string;\r\n scLatestVersionFieldName: string;\r\n scLanguageFieldName: string;\r\n scCurrentLanguage: string;\r\n scRestEndpointUri: string;\r\n scAnalyticsEndpointUri: string;\r\n scLabels: IStringMap;\r\n scPageName: string;\r\n scDefaultPipelineName: string;\r\n scShouldHaveAnalyticsComponent: boolean;\r\n scAnalyticsEnabled: boolean;\r\n scIsUserAnonymous: boolean;\r\n scFieldPrefix: string;\r\n scFieldSuffix: string;\r\n scExternalFields: IExternalFieldConfig[] | ILegacyExternalFieldConfig[];\r\n scSourceSpecificFields: ISourceSpecificFieldConfig[];\r\n scPreferSourceSpecificFields: boolean;\r\n scIndexSourceName: string;\r\n scIsInExperienceEditor: boolean;\r\n scMaximumAge: number;\r\n scPageNameFullPath: string;\r\n scSiteName: string;\r\n}\r\n\r\nexport class CoveoForSitecoreContext extends Component {\r\n static ID = 'ForSitecoreContext';\r\n\r\n static options: ICoveoForSitecoreContextOptions = {\r\n scItemId: ComponentOptions.buildStringOption(),\r\n scItemUri: ComponentOptions.buildStringOption(),\r\n scLanguageFieldName: ComponentOptions.buildStringOption(),\r\n scLatestVersionFieldName: ComponentOptions.buildStringOption(),\r\n scCurrentLanguage: ComponentOptions.buildStringOption(),\r\n scRestEndpointUri: ComponentOptions.buildStringOption(),\r\n scAnalyticsEndpointUri: ComponentOptions.buildStringOption(),\r\n scLabels: ComponentOptions.buildJsonOption(),\r\n scPageName: ComponentOptions.buildStringOption(),\r\n scDefaultPipelineName: ComponentOptions.buildStringOption(),\r\n scShouldHaveAnalyticsComponent: ComponentOptions.buildBooleanOption(),\r\n scAnalyticsEnabled: ComponentOptions.buildBooleanOption(),\r\n scIsUserAnonymous: ComponentOptions.buildBooleanOption(),\r\n scFieldPrefix: ComponentOptions.buildStringOption(),\r\n scFieldSuffix: ComponentOptions.buildStringOption(),\r\n scExternalFields: ComponentOptions.buildJsonOption(),\r\n scSourceSpecificFields: ComponentOptions.buildJsonOption(),\r\n scPreferSourceSpecificFields: ComponentOptions.buildBooleanOption(),\r\n scIndexSourceName: ComponentOptions.buildStringOption(),\r\n scIsInExperienceEditor: ComponentOptions.buildBooleanOption(),\r\n scMaximumAge: ComponentOptions.buildNumberOption(),\r\n scPageNameFullPath: ComponentOptions.buildStringOption(),\r\n scSiteName: ComponentOptions.buildStringOption(),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreContextOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreContext.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreContext, options);\r\n this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, this.afterComponentsInitialization);\r\n this.bind.onRootElement(QueryEvents.doneBuildingQuery, this.doneBuildingQuery);\r\n this.bind.onRootElement(OmniboxEvents.buildingQuerySuggest, this.buildingQuerySuggest);\r\n }\r\n\r\n private doneBuildingQuery(args: IDoneBuildingQueryEventArgs): void {\r\n if (this.hasDefaultPipelineNameSet() && this.queryBuilderUsesDefaultPipeline(args.queryBuilder)) {\r\n args.queryBuilder.pipeline = this.options.scDefaultPipelineName;\r\n }\r\n }\r\n\r\n private buildingQuerySuggest(args: IBuildingQuerySuggestArgs): void {\r\n if (this.hasDefaultPipelineNameSet() && this.querySuggestUsesDefaultPipeline(args.payload)) {\r\n args.payload.pipeline = this.options.scDefaultPipelineName;\r\n }\r\n }\r\n\r\n private hasDefaultPipelineNameSet(): boolean {\r\n return this.options.scDefaultPipelineName !== '';\r\n }\r\n\r\n private queryBuilderUsesDefaultPipeline(queryBuilder: QueryBuilder): boolean {\r\n return typeof queryBuilder.pipeline === 'undefined';\r\n }\r\n\r\n private querySuggestUsesDefaultPipeline(querySuggestRequest: IQuerySuggestRequest): boolean {\r\n return typeof querySuggestRequest.pipeline === 'undefined';\r\n }\r\n\r\n private afterComponentsInitialization(): void {\r\n const contextArgs: ISitecoreContextInitializationEventArgs = {\r\n sitecoreItemId: this.options.scItemId,\r\n sitecoreItemUri: this.options.scItemUri,\r\n sitecorePageName: this.options.scPageName,\r\n shouldHaveAnalyticsComponent: this.options.scShouldHaveAnalyticsComponent,\r\n analyticsEnabled: this.options.scAnalyticsEnabled,\r\n indexSourceName: this.options.scIndexSourceName,\r\n currentLanguage: this.options.scCurrentLanguage,\r\n languageFieldName: this.options.scLanguageFieldName,\r\n latestVersionFieldName: this.options.scLatestVersionFieldName,\r\n isInExperienceEditor: this.options.scIsInExperienceEditor,\r\n sitecorePageFullPath: this.options.scPageNameFullPath,\r\n siteName: this.options.scSiteName,\r\n restEndpointUri: this.options.scRestEndpointUri,\r\n analyticsEndpointUri: this.options.scAnalyticsEndpointUri,\r\n };\r\n this.bind.trigger(this.element, SitecoreContextEvents.onSitecoreContextInitialization, contextArgs);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreContext);\r\n","import { IExternalFieldConfig } from './CoveoFieldsHandler';\r\nimport { IFieldTypeResolver } from './IFieldTypeResolver';\r\n\r\nexport class LegacyFieldTypeResolver implements IFieldTypeResolver {\r\n private readonly externalFields: IExternalFieldConfig[];\r\n\r\n constructor(externalFields: IExternalFieldConfig[]) {\r\n this.externalFields = this.parseExternalFields(externalFields);\r\n }\r\n\r\n private parseExternalFields(externalFields: Array): IExternalFieldConfig[] {\r\n return externalFields.map((externalField) => {\r\n if (typeof externalField === 'string') {\r\n return {\r\n fieldName: (externalField as string).toLowerCase(),\r\n shouldEscape: false,\r\n };\r\n } else if (this.isExternalFieldConfig(externalField)) {\r\n return {\r\n fieldName: externalField.fieldName.toLowerCase(),\r\n shouldEscape: externalField.shouldEscape,\r\n };\r\n } else {\r\n console.error(`Invalid external field '${externalField}'.`);\r\n }\r\n });\r\n }\r\n\r\n public shouldEscapeFirstCharacter(fieldName: string): boolean {\r\n return false;\r\n }\r\n\r\n public shouldEscapeSpecialCharacters(fieldName: string): boolean {\r\n const fields = this.externalFields.filter((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n\r\n return fields.length > 0 ? fields[0].shouldEscape : true;\r\n }\r\n\r\n public shouldDecorate(fieldName: string): boolean {\r\n return !this.externalFields.some((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n }\r\n\r\n public isExternalField(fieldName: string): boolean {\r\n return this.externalFields.some((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n }\r\n\r\n private isExternalFieldConfig(obj: any): boolean {\r\n return (\r\n typeof obj !== 'undefined' &&\r\n typeof obj.fieldName !== 'undefined' &&\r\n typeof obj.shouldEscape !== 'undefined'\r\n );\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport interface IItemIdValueResolver {\r\n canResolve(itemId: string, element: HTMLElement): boolean;\r\n getValue(itemId: string, element: HTMLElement): string;\r\n}\r\n\r\nexport class ItemIdSelectorPrebind implements IPrebindHelper {\r\n public name: string = 'itemIdSelector';\r\n\r\n private resolvers: IItemIdValueResolver[] = [\r\n new ResolveIfSelector(),\r\n new ResolveIfItemIdInPage(),\r\n new UseItemIdSelectorAsIs(),\r\n ];\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (itemId: string, element: HTMLElement) => {\r\n const resolver: IItemIdValueResolver = this.getFirstValidResolver(itemId, element);\r\n\r\n return resolver.getValue(itemId, element);\r\n };\r\n }\r\n\r\n private getFirstValidResolver(itemId: string, element: HTMLElement): IItemIdValueResolver {\r\n let resolver: IItemIdValueResolver;\r\n\r\n do {\r\n if (this.resolvers.length === 0) {\r\n const message =\r\n 'Could not resolve the element using the current resolver. Ensure that a valid value is set.';\r\n console.error(message, {\r\n itemId: itemId,\r\n element: element,\r\n });\r\n throw message;\r\n }\r\n resolver = this.resolvers.shift();\r\n } while (!resolver.canResolve(itemId, element));\r\n\r\n return resolver;\r\n }\r\n}\r\n\r\nexport class ResolveIfItemIdInPage implements IItemIdValueResolver {\r\n canResolve(itemId: string): boolean {\r\n return this.isItemDefined(itemId) && this.isIdSelectorValid(`#${itemId}`);\r\n }\r\n\r\n getValue(itemId: string): string {\r\n return `#${itemId}`;\r\n }\r\n\r\n private isItemDefined(itemId: string): boolean {\r\n return !!itemId;\r\n }\r\n\r\n private isIdSelectorValid(selector: string): boolean {\r\n return document.querySelector(selector) !== null;\r\n }\r\n}\r\n\r\nexport class ResolveIfSelector implements IItemIdValueResolver {\r\n canResolve(itemId: string, element: HTMLElement): boolean {\r\n return !!itemId && this.isStartingWithSelectorCharacter(itemId);\r\n }\r\n\r\n getValue(itemId: string, element: HTMLElement): string {\r\n return itemId;\r\n }\r\n\r\n private isStartingWithSelectorCharacter(itemId: string): boolean {\r\n const firstCharacter = itemId[0];\r\n\r\n return ['.', '#'].indexOf(firstCharacter) !== -1;\r\n }\r\n}\r\n\r\nexport class UseItemIdSelectorAsIs implements IItemIdValueResolver {\r\n canResolve(itemId: string, element: HTMLElement): boolean {\r\n return true;\r\n }\r\n\r\n getValue(itemId: string, element: HTMLElement): string {\r\n return itemId;\r\n }\r\n}\r\n","import { ExternalComponentInitializer } from './initialization/ExternalComponentInitializer';\r\nimport { SearchboxInitializer } from './initialization/SearchboxInitializer';\r\nimport { SearchInterfaceInitializer } from './initialization/SearchInterfaceInitializer';\r\nimport { ElementWithContextInitializer } from './initialization/ElementWithContextInitializer';\r\nimport { HostedSearchPageInitializer } from './initialization/HostedSearchPageInitializer';\r\n\r\nexport const searchInterfaceInitializer = new SearchInterfaceInitializer();\r\nexport const searchboxInitializer = new SearchboxInitializer();\r\nexport const externalComponentInitializer = new ExternalComponentInitializer();\r\nexport const hostedSearchPageInitializer = new HostedSearchPageInitializer();\r\n\r\nexport function initSearchInterface(searchInterfaceElement: HTMLElement): Promise<{ elem: HTMLElement }> {\r\n return searchInterfaceInitializer.initSearchInterface(searchInterfaceElement);\r\n}\r\n\r\nexport function initializeSearchInterfaceForExperienceEditor(\r\n searchInterfaceElement: HTMLElement\r\n): Promise<{ elem: HTMLElement }> {\r\n searchInterfaceInitializer.initializeExperienceEditorHooksForSearchInterface(searchInterfaceElement);\r\n return initSearchInterface(searchInterfaceElement);\r\n}\r\n\r\nexport function initSearchboxIfStandalone(\r\n searchBoxElement: HTMLElement,\r\n searchPageUri: string,\r\n options?: any\r\n): Promise {\r\n return searchboxInitializer.initSearchboxIfStandalone(searchBoxElement, searchPageUri, options);\r\n}\r\n\r\nexport function initContextOnElement(element: HTMLElement): void {\r\n ElementWithContextInitializer.initializeContextWithinElement(element);\r\n}\r\n\r\nexport function initExternalComponentsSection(element: HTMLElement): void {\r\n externalComponentInitializer.initializeExternalComponentSection(element);\r\n}\r\n\r\nexport function initExternalComponentsSectionForExperienceEditor(element: HTMLElement): void {\r\n externalComponentInitializer.initializeExperienceEditorHooksForExternalComponentsSection(element);\r\n initExternalComponentsSection(element);\r\n}\r\n\r\nexport function initHostedSearchPageInitializer(element: HTMLElement): void {\r\n hostedSearchPageInitializer.initializeSearchPage(element);\r\n}\r\n","import { Prebinding } from '../../base/Prebinding';\r\nimport { nodeListToArray } from '../../utils/HTMLUtils';\r\n\r\nimport { Initialization, SearchInterface, get, Facet, Tab } from 'coveo-search-ui';\r\n\r\nconst duringInitializationClass = 'coveo-during-initialization';\r\n\r\nexport class SearchInterfaceComponentInitializer implements ISearchInterfaceComponentInitializer {\r\n public loadComponentsForSearchInterface(\r\n searchInterface: SearchInterface,\r\n newComponent: HTMLElement\r\n ): Promise {\r\n Prebinding.applyPrebindingOnElement(newComponent);\r\n Prebinding.applyPrebindingOnChildren(newComponent);\r\n const result = Initialization.automaticallyCreateComponentsInside(newComponent, {\r\n bindings: searchInterface.getBindings(),\r\n options: {},\r\n });\r\n return result.initResult.then(() => {\r\n this.removeAllPlaceholdersWithinElement(newComponent);\r\n searchInterface.queryController.executeQuery({\r\n ignoreWarningSearchEvent: true,\r\n });\r\n });\r\n }\r\n\r\n public tryUnloadComponentsForSearchInterface(searchInterface: SearchInterface, newComponent: HTMLElement): void {\r\n const facets = nodeListToArray(newComponent.getElementsByClassName('CoveoFacet'));\r\n facets.forEach((facet) => {\r\n const facetComponent: Facet = get(facet, 'CoveoFacet') as Facet;\r\n if (facetComponent) {\r\n searchInterface.detachComponent('Facet', facetComponent);\r\n }\r\n this.removeAllChildren(facet);\r\n });\r\n\r\n const tabs = nodeListToArray(newComponent.getElementsByClassName('CoveoTab'));\r\n tabs.forEach((tab) => {\r\n const tabComponent: Tab = get(tab, 'CoveoTab') as Tab;\r\n if (tabComponent) {\r\n searchInterface.detachComponent('Tab', tabComponent);\r\n }\r\n this.removeAllChildren(tab);\r\n });\r\n }\r\n\r\n private removeAllPlaceholdersWithinElement(element: HTMLElement): void {\r\n const elementsWithInitializationClass = nodeListToArray(\r\n element.getElementsByClassName(duringInitializationClass)\r\n );\r\n elementsWithInitializationClass.forEach((element) => this.removePlaceholders(element));\r\n }\r\n\r\n private removePlaceholders(element: HTMLElement): void {\r\n element.classList.remove(duringInitializationClass);\r\n\r\n if (element.classList.contains('CoveoFacet')) {\r\n this.removeFacetsPlaceholders(element);\r\n }\r\n }\r\n private removeFacetsPlaceholders(element: HTMLElement): void {\r\n element.classList.remove('coveo-with-placeholder');\r\n\r\n // Since a Facet reinserts DOM as children when initializing, we have to remove all its children,\r\n // else new content will be appended each time the facet is initialized.\r\n this.removeAllChildren(element);\r\n }\r\n\r\n private removeAllChildren(element: HTMLElement): void {\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n }\r\n\r\n public loadComponentsWithSearchInterfaceInitialization(\r\n searchInterfaceElement: HTMLElement,\r\n componentsContainer: HTMLElement\r\n ): void {\r\n Prebinding.applyPrebindingOnElement(componentsContainer);\r\n Prebinding.applyPrebindingOnChildren(componentsContainer);\r\n Coveo.options(searchInterfaceElement, {\r\n externalComponents: [componentsContainer],\r\n });\r\n }\r\n}\r\n\r\nexport interface ISearchInterfaceComponentInitializer {\r\n loadComponentsWithSearchInterfaceInitialization(searchInterfaceElement: HTMLElement, element: HTMLElement): void;\r\n loadComponentsForSearchInterface(searchInterface: SearchInterface, newComponent: HTMLElement): Promise;\r\n tryUnloadComponentsForSearchInterface(searchInterface: SearchInterface, newComponent: HTMLElement): void;\r\n}\r\n\r\nconst initializer = new SearchInterfaceComponentInitializer();\r\nexport function getInitializerInstance(): ISearchInterfaceComponentInitializer {\r\n return initializer;\r\n}\r\n","import { nodeListToArray } from '../../utils/HTMLUtils';\r\n\r\ndeclare const Sitecore: any;\r\n\r\nexport interface IRenderingElement {\r\n opening: Array;\r\n}\r\n\r\nexport type IAfterFrameLoadedCallback = (callbackData: IRenderingElement) => void;\r\nexport type IAfterPersonalizationChangedCallback = (element: HTMLElement) => void;\r\nexport type IBeforeUnloadingChromeCallback = (element: HTMLElement) => void;\r\n\r\nexport class SitecoreExperienceEditor implements ISitecoreExperienceEditor {\r\n public static isInBackgroundRenderingParameterName = 'sc_phk';\r\n\r\n private isAfterFrameLoadedOverriden = false;\r\n private isAfterPersonalizationChangedOverriden = false;\r\n private isBeforeUnloadingChromeOverriden = false;\r\n\r\n private onAfterFrameLoadedCallbacks: IAfterFrameLoadedCallback[] = [];\r\n private onAfterPersonalizationChanged: IAfterPersonalizationChangedCallback[] = [];\r\n private onBeforeUnloadingChrome: IBeforeUnloadingChromeCallback[] = [];\r\n\r\n public registerOnLoadRenderingFromUrl(onAfterFrameLoadedCallback: (callbackData: IRenderingElement) => void): void {\r\n this.tryOverrideSitecoreLoadRenderingFromUrl();\r\n this.onAfterFrameLoadedCallbacks.push(onAfterFrameLoadedCallback);\r\n }\r\n\r\n public registerBeforeUnloadingChrome(onBeforeUnloadingChromeCallback: IBeforeUnloadingChromeCallback): void {\r\n this.tryOverrideOnUnloadingChrome();\r\n this.onBeforeUnloadingChrome.push(onBeforeUnloadingChromeCallback);\r\n }\r\n\r\n public registerOnAfterPersonalizationChanged(\r\n onAfterPersonalizationChanged: IAfterPersonalizationChangedCallback\r\n ): void {\r\n this.tryOverrideSitecoreChromeTypesRenderingChangeCondition();\r\n this.onAfterPersonalizationChanged.push(onAfterPersonalizationChanged);\r\n }\r\n\r\n public isInBackgroundRendering(): boolean {\r\n return window.location.search.indexOf(SitecoreExperienceEditor.isInBackgroundRenderingParameterName) !== -1;\r\n }\r\n\r\n public getComponentFromLoadRenderingFromUrlCallbackData(callbackData: IRenderingElement): HTMLElement {\r\n var chromeRendering = document.getElementById(callbackData.opening[0].id);\r\n return chromeRendering.nextElementSibling as HTMLElement;\r\n }\r\n\r\n private tryOverrideSitecoreLoadRenderingFromUrl(): void {\r\n if (!this.isAfterFrameLoadedOverriden && typeof Sitecore !== 'undefined') {\r\n this.overrideSitecoreLoadRenderingFromUrl();\r\n }\r\n }\r\n\r\n private overrideSitecoreLoadRenderingFromUrl(): void {\r\n const originalLoad = Sitecore.PageModes.ChromeTypes.Placeholder.prototype.insertRendering;\r\n const onAfterFrameLoadedCallback = (callbackData: IRenderingElement) => {\r\n this.onAfterFrameLoadedCallbacks.forEach((callback) => callback(callbackData));\r\n };\r\n Sitecore.PageModes.ChromeTypes.Placeholder.prototype.insertRendering = function (\r\n frameLoadedCallback: IRenderingElement\r\n ): void {\r\n originalLoad.call(this, frameLoadedCallback);\r\n onAfterFrameLoadedCallback(frameLoadedCallback);\r\n };\r\n this.isAfterFrameLoadedOverriden = true;\r\n }\r\n\r\n private tryOverrideOnUnloadingChrome(): void {\r\n if (!this.isBeforeUnloadingChromeOverriden && typeof Sitecore !== 'undefined') {\r\n this.overrideSitecoreChromeChangeCondition();\r\n this.isBeforeUnloadingChromeOverriden = true;\r\n }\r\n }\r\n\r\n private overrideSitecoreChromeChangeCondition(): void {\r\n const originalChangeCondition: Function = Sitecore.PageModes.ChromeTypes.Rendering.prototype.changeCondition;\r\n const onBeforeChangeCondition = (changedElement: HTMLElement) => {\r\n this.onBeforeUnloadingChrome.forEach((callback) => callback(changedElement));\r\n };\r\n Sitecore.PageModes.ChromeTypes.Rendering.prototype.changeCondition = function (\r\n id,\r\n sender,\r\n preserveCacheUpdating\r\n ): void {\r\n onBeforeChangeCondition(this.chrome.element[0]);\r\n originalChangeCondition.apply(this, arguments);\r\n };\r\n }\r\n\r\n private tryOverrideSitecoreChromeTypesRenderingChangeCondition(): void {\r\n if (!this.isAfterPersonalizationChangedOverriden && typeof Sitecore !== 'undefined') {\r\n this.overrideSitecoreChromeTypesRenderingChangeCondition();\r\n }\r\n }\r\n\r\n private overrideSitecoreChromeTypesRenderingChangeCondition(): void {\r\n const originalStartActivation: Function = Sitecore.PageModes.ChromeTypes.Rendering.prototype._startActivation;\r\n const originalEndActivation: Function = Sitecore.PageModes.ChromeTypes.Rendering.prototype._endActivation;\r\n let elementToProcessWhenFinished: HTMLElement;\r\n const onAfterPersonalizationChanged = (changedElement: HTMLElement) => {\r\n this.onAfterPersonalizationChanged.forEach((callback) => callback(changedElement));\r\n };\r\n const getValidMarker = (markersAndElements: HTMLElement[]): HTMLElement => {\r\n return this.isDifferentFirstLoadMarker(markersAndElements) ? markersAndElements[2] : markersAndElements[1];\r\n };\r\n Sitecore.PageModes.ChromeTypes.Rendering.prototype._startActivation = function (\r\n markersAndElements: HTMLElement[],\r\n fieldId?: string\r\n ): void {\r\n elementToProcessWhenFinished = getValidMarker(markersAndElements);\r\n originalStartActivation.apply(this, arguments);\r\n };\r\n Sitecore.PageModes.ChromeTypes.Rendering.prototype._endActivation = function (reason: string): void {\r\n originalEndActivation.apply(this, arguments);\r\n if (elementToProcessWhenFinished) {\r\n onAfterPersonalizationChanged(elementToProcessWhenFinished);\r\n }\r\n };\r\n this.isAfterPersonalizationChangedOverriden = true;\r\n }\r\n\r\n // In Sitecore 8.0, for some reason, there are two additionnal text nodes *only on the first load*.\r\n // The cached version does not have those.\r\n private isDifferentFirstLoadMarker(markersAndElements: HTMLElement[]): boolean {\r\n return markersAndElements[1].nodeType === Node.TEXT_NODE;\r\n }\r\n\r\n public registerShowDebugInformationCallback(): void {\r\n if (!window['scCoveoShowDebugInformation']) {\r\n window['scCoveoShowDebugInformation'] = (debugModeEnabled: boolean) => {\r\n const debugInfoElements = nodeListToArray(document.getElementsByClassName('coveo-debug-information'));\r\n if (debugModeEnabled) {\r\n debugInfoElements.forEach((element) => element.classList.remove('coveo-debug-hidden'));\r\n } else {\r\n debugInfoElements.forEach((element) => element.classList.add('coveo-debug-hidden'));\r\n }\r\n // Chromes are not updated correctly until an event refreshes them. This forces the update.\r\n Sitecore.PageModes.ChromeManager.resetChromes();\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport interface ISitecoreExperienceEditor {\r\n registerOnLoadRenderingFromUrl(onAfterFrameLoadedCallback: (callbackData: IRenderingElement) => void): void;\r\n registerBeforeUnloadingChrome(onBeforeUnloadingChromeCallback: IBeforeUnloadingChromeCallback): void;\r\n registerOnAfterPersonalizationChanged(onAfterPersonalizationChanged: IAfterPersonalizationChangedCallback): void;\r\n isInBackgroundRendering(): boolean;\r\n getComponentFromLoadRenderingFromUrlCallbackData(callbackData: IRenderingElement): HTMLElement;\r\n registerShowDebugInformationCallback(): void;\r\n}\r\n\r\nconst staticInstance = new SitecoreExperienceEditor();\r\n\r\nexport function getExperienceEditorInstance(): ISitecoreExperienceEditor {\r\n return staticInstance;\r\n}\r\n","import { Component } from 'coveo-search-ui';\r\n\r\nimport { nodeListToArray } from './HTMLUtils';\r\n\r\nexport class SearchInterfacesProvider {\r\n getSearchInterfacesInPage(componentsIds: string[]): HTMLElement[] {\r\n const searchInterfacesSelector = this.getSearchInterfacesSelectorFromComponentIds(componentsIds);\r\n const searchInterfaces = document.querySelectorAll(searchInterfacesSelector);\r\n return nodeListToArray(searchInterfaces);\r\n }\r\n\r\n private getSearchInterfacesSelectorFromComponentIds(componentIds: string[]): string {\r\n return componentIds.map((componentId) => Component.computeSelectorForType(componentId)).join(', ');\r\n }\r\n}\r\n","import { Prebinding } from '../Prebinding';\r\nimport { Context } from '../Context';\r\nimport { cloneElementSafelyForAccessibility } from '../../utils/HTMLUtils';\r\n\r\nexport class ElementWithContextInitializer {\r\n public static initializeContextWithinElement(element: HTMLElement): void {\r\n if (!!Context.element) {\r\n element.appendChild(cloneElementSafelyForAccessibility(Context.element));\r\n }\r\n Prebinding.applyPrebindingOnElement(element);\r\n Prebinding.applyPrebindingOnChildren(element);\r\n }\r\n}\r\n","import { SearchInterface, QueryStateModel } from 'coveo-search-ui';\r\n\r\nexport function isTabCurrentlySelected(selected: string, searchInterface: SearchInterface): boolean {\r\n return !(!!selected && selected !== searchInterface.queryStateModel.get(QueryStateModel.attributesEnum.t));\r\n}\r\n","import {\r\n Component,\r\n AnalyticsEvents,\r\n ComponentOptions,\r\n IComponentBindings,\r\n IChangeAnalyticsCustomDataEventArgs,\r\n InitializationEvents,\r\n Initialization,\r\n IStringMap,\r\n} from 'coveo-search-ui';\r\n\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\n\r\nexport interface ICoveoForSitecoreAnalyticsOptions {\r\n scAnalyticsCustomMetadata: IStringMap;\r\n scOriginContext: string;\r\n scOverrideOriginWithPageName: boolean;\r\n scOverrideCurrentLanguage: boolean;\r\n endpoint: string;\r\n}\r\n\r\nexport class CoveoForSitecoreAnalytics extends Component {\r\n static ID = 'ForSitecoreAnalytics';\r\n\r\n static options: ICoveoForSitecoreAnalyticsOptions = {\r\n scAnalyticsCustomMetadata: ComponentOptions.buildJsonOption(),\r\n scOriginContext: ComponentOptions.buildStringOption({\r\n defaultValue: 'WebsiteSearch',\r\n }),\r\n scOverrideOriginWithPageName: ComponentOptions.buildBooleanOption({\r\n defaultValue: false,\r\n }),\r\n scOverrideCurrentLanguage: ComponentOptions.buildBooleanOption({\r\n defaultValue: true,\r\n }),\r\n endpoint: ComponentOptions.buildStringOption(),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreAnalyticsOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreAnalytics.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreAnalytics, options);\r\n\r\n this.bind.onRootElement(InitializationEvents.afterInitialization, () => this.onAfterInitialization());\r\n this.bind.onRootElement(\r\n SitecoreContextEvents.onSitecoreContextInitialization,\r\n (args) => this.onSitecoreContextInitialization(args)\r\n );\r\n }\r\n\r\n private onAfterInitialization(): void {\r\n if (this.bindings.usageAnalytics && this.options.scOriginContext) {\r\n this.bindings.usageAnalytics.setOriginContext(this.options.scOriginContext);\r\n }\r\n }\r\n\r\n private onSitecoreContextInitialization(sitecoreContext: ISitecoreContextInitializationEventArgs): void {\r\n this.completeAnalyticsCustomDataWithSitecoreContext(sitecoreContext);\r\n this.setUsageAnalyticsEnpointServiceUrl(sitecoreContext);\r\n }\r\n\r\n private completeAnalyticsCustomDataWithSitecoreContext(\r\n sitecoreContext: ISitecoreContextInitializationEventArgs\r\n ): void {\r\n this.bind.onRootElement(\r\n AnalyticsEvents.changeAnalyticsCustomData,\r\n (args: IChangeAnalyticsCustomDataEventArgs) => {\r\n const options = this.options;\r\n if (options) {\r\n if (options.scOverrideCurrentLanguage && !!sitecoreContext.currentLanguage) {\r\n args.language = sitecoreContext.currentLanguage;\r\n }\r\n if (options.scOverrideOriginWithPageName && !!sitecoreContext.sitecorePageName) {\r\n args.originLevel1 = sitecoreContext.sitecorePageName;\r\n }\r\n\r\n const customMetadata = {\r\n pageFullPath: sitecoreContext.sitecorePageFullPath,\r\n sitename: sitecoreContext.siteName, // Kept for backward-compatibility with legacy components\r\n siteName: sitecoreContext.siteName,\r\n };\r\n\r\n const userContext = window['CoveoForSitecoreUserContext'];\r\n if (!!userContext && !!userContext.handler) {\r\n const context = userContext.handler.getContext();\r\n if (!!context) {\r\n for (const key in context) {\r\n _.extend(customMetadata, {\r\n ['context_' + key]: context[key],\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (options.scAnalyticsCustomMetadata) {\r\n _.extend(customMetadata, options.scAnalyticsCustomMetadata);\r\n }\r\n\r\n _.extend(args.metaObject, customMetadata);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private setUsageAnalyticsEnpointServiceUrl(sitecoreContext: ISitecoreContextInitializationEventArgs): void {\r\n if (\r\n this.bindings.usageAnalytics &&\r\n this.bindings.usageAnalytics.endpoint &&\r\n this.bindings.usageAnalytics.endpoint.options\r\n ) {\r\n this.bindings.usageAnalytics.endpoint.options.serviceUrl =\r\n this.options.endpoint || sitecoreContext.analyticsEndpointUri;\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreAnalytics);\r\n","import { Component, ComponentOptions, Initialization, InitializationEvents, IComponentBindings } from 'coveo-search-ui';\r\n\r\nconst searchHubAttribute = 'searchHub';\r\n\r\nexport interface ICoveoForSitecoreAnalyticsOptions {\r\n scSearchHub: string;\r\n}\r\n\r\nexport class CoveoForSitecoreConfigureSearchHub extends Component {\r\n static ID = 'ForSitecoreConfigureSearchHub';\r\n\r\n static options: ICoveoForSitecoreAnalyticsOptions = {\r\n scSearchHub: ComponentOptions.buildStringOption(),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreAnalyticsOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreConfigureSearchHub.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreConfigureSearchHub, options);\r\n\r\n if (!!this.options.scSearchHub) {\r\n this.bind.oneRootElement(\r\n InitializationEvents.afterComponentsInitialization,\r\n this.onAfterComponentsInitialization\r\n );\r\n }\r\n }\r\n\r\n private onAfterComponentsInitialization(): void {\r\n const currentSearchHub = this.componentOptionsModel.get(searchHubAttribute);\r\n if (!currentSearchHub) {\r\n this.componentOptionsModel.set(searchHubAttribute, this.options.scSearchHub);\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreConfigureSearchHub);\r\n","import { IEndpointCaller, EndpointCallerWrapper } from '../../rest/EndpointCaller';\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\n\r\nimport {\r\n AnalyticsEvents,\r\n IAnalyticsSearchEventsArgs,\r\n IAnalyticsDocumentViewEventArgs,\r\n IAnalyticsCustomEventArgs,\r\n Component,\r\n IComponentBindings,\r\n ComponentOptions,\r\n IStringMap,\r\n Initialization,\r\n} from 'coveo-search-ui';\r\n\r\nexport interface ISendAnalyticsToSitecoreOptions {\r\n scAnalyticsEndpointUri: string;\r\n}\r\n\r\nexport class SendAnalyticsToSitecore extends Component {\r\n static ID = 'SendAnalyticsToSitecore';\r\n\r\n static options: ISendAnalyticsToSitecoreOptions = {\r\n scAnalyticsEndpointUri: ComponentOptions.buildStringOption({\r\n required: true,\r\n postProcessing: (value) => {\r\n return typeof value !== 'undefined' && value[value.length - 1] === '/'\r\n ? value.slice(0, value.length - 1)\r\n : value;\r\n },\r\n }),\r\n };\r\n\r\n private endpointCaller: IEndpointCaller;\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ISendAnalyticsToSitecoreOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, SendAnalyticsToSitecore.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, SendAnalyticsToSitecore, options);\r\n\r\n this.endpointCaller = new EndpointCallerWrapper();\r\n this.bind.onRootElement(\r\n SitecoreContextEvents.onSitecoreContextInitialization,\r\n this.onSitecoreContextInitialization\r\n );\r\n }\r\n\r\n private onSitecoreContextInitialization(sitecoreContext: ISitecoreContextInitializationEventArgs): void {\r\n if (sitecoreContext.analyticsEnabled) {\r\n this.bind.onRootElement(AnalyticsEvents.searchEvent, (args: IAnalyticsSearchEventsArgs) => {\r\n this.postAnalytics('searches', 'searchEvents', args.searchEvents, sitecoreContext);\r\n });\r\n this.bind.onRootElement(AnalyticsEvents.documentViewEvent, (args: IAnalyticsDocumentViewEventArgs) => {\r\n this.postAnalytics('documentViews', 'documentViewEvents', args.documentViewEvent, sitecoreContext);\r\n });\r\n this.bind.onRootElement(AnalyticsEvents.customEvent, (args: IAnalyticsCustomEventArgs) => {\r\n this.postAnalytics('custom', 'customEvents', args.customEvent, sitecoreContext);\r\n });\r\n }\r\n }\r\n\r\n private postAnalytics(\r\n eventAction: string,\r\n eventType: string,\r\n eventData: any,\r\n sitecoreContext: ISitecoreContextInitializationEventArgs\r\n ): void {\r\n let parsedEventData: Array = [];\r\n if (typeof eventData !== 'undefined') {\r\n parsedEventData = parsedEventData.concat(eventData);\r\n }\r\n parsedEventData\r\n .filter((data: any) => {\r\n return typeof data !== 'undefined';\r\n })\r\n .forEach((data: any) => {\r\n data.sitecoreItemId = sitecoreContext.sitecoreItemId;\r\n });\r\n\r\n const postData: IStringMap = {};\r\n postData[eventType] = JSON.stringify(parsedEventData);\r\n\r\n this.endpointCaller.sendPost(`${this.options.scAnalyticsEndpointUri}/${eventAction}`, postData);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(SendAnalyticsToSitecore);\r\n","import { Component, ComponentOptions, IComponentBindings, Initialization } from 'coveo-search-ui';\r\nimport { SitecoreContextEvents, ISitecoreContextInitializationEventArgs } from '../../events/ContextEvents';\r\n\r\nexport interface IValidateAnalyticsIncludedOptions {\r\n componentName: string;\r\n}\r\n\r\nexport class ValidateAnalyticsIncluded extends Component {\r\n static ID = 'ValidateAnalyticsIncluded';\r\n\r\n static options: IValidateAnalyticsIncludedOptions = {\r\n componentName: ComponentOptions.buildStringOption({\r\n defaultValue: '',\r\n attrName: 'data-component-name',\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: IValidateAnalyticsIncludedOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, ValidateAnalyticsIncluded.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, ValidateAnalyticsIncluded, options);\r\n\r\n this.bind.onRootElement(\r\n SitecoreContextEvents.onSitecoreContextInitialization,\r\n this.onSitecoreContextInitialization\r\n );\r\n }\r\n\r\n private onSitecoreContextInitialization(sitecoreContextArgs: ISitecoreContextInitializationEventArgs): void {\r\n if (sitecoreContextArgs.shouldHaveAnalyticsComponent && this.searchInterfaceHasNoBoundAnalyticsComponent()) {\r\n if (sitecoreContextArgs.isInExperienceEditor) {\r\n let errorMessage = getErrorMessage(this.options.componentName || 'Search Interface');\r\n\r\n if (!this.checkIfErrorInErrorMessage(errorMessage)) {\r\n console.warn(errorMessage);\r\n this.element.appendChild(this.createErrorMessageElement(errorMessage));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private checkIfErrorInErrorMessage(errorMessage: string): boolean {\r\n for (let index = 0; index < this.element.children.length; index++) {\r\n const element = this.element.children[index];\r\n if (element.textContent.indexOf(errorMessage, 0) !== -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private searchInterfaceHasNoBoundAnalyticsComponent(): boolean {\r\n return (\r\n this.searchInterface.getComponents('Analytics').length === 0 &&\r\n this.searchInterface.getComponents('ForSitecoreAnalytics').length === 0\r\n );\r\n }\r\n\r\n private createErrorMessageElement(errorMessage: string): HTMLElement {\r\n const errorSpan = document.createElement('span');\r\n\r\n errorSpan.classList.add('errorMessage');\r\n errorSpan.textContent = errorMessage;\r\n\r\n return errorSpan;\r\n }\r\n}\r\n\r\nfunction getErrorMessage(component: string): string {\r\n return `The Coveo Analytics are not enabled for this ${component}. Insert a Coveo For Sitecore Analytics component to record Coveo Usage Analytics data.`;\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(ValidateAnalyticsIncluded);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IBuildingQuerySuggestArgs,\r\n IComponentBindings,\r\n IDoneBuildingQueryEventArgs,\r\n Initialization,\r\n OmniboxEvents,\r\n QueryEvents,\r\n} from 'coveo-search-ui';\r\n\r\nexport interface ICoveoForSitecoreBindWithUserContextOptions {}\r\n\r\nexport class CoveoForSitecoreBindWithUserContext extends Component {\r\n static ID = 'ForSitecoreBindWithUserContext';\r\n\r\n static options: ICoveoForSitecoreBindWithUserContextOptions = {};\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreBindWithUserContextOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreBindWithUserContext.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreBindWithUserContext, options);\r\n this.bind.onRootElement(QueryEvents.doneBuildingQuery, this.doneBuildingQuery);\r\n this.bind.onRootElement(OmniboxEvents.buildingQuerySuggest, this.buildingQuerySuggest);\r\n }\r\n\r\n private doneBuildingQuery(args: IDoneBuildingQueryEventArgs): void {\r\n const context = window['CoveoForSitecoreUserContext'];\r\n if (!!context && !!context.handler) {\r\n args.queryBuilder.addContext(context.handler.getContext());\r\n }\r\n }\r\n\r\n private buildingQuerySuggest(args: IBuildingQuerySuggestArgs): void {\r\n const context = window['CoveoForSitecoreUserContext'];\r\n if (!!context && !!context.handler) {\r\n args.payload.context = context.handler.getContext();\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreBindWithUserContext);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n IBuildingQueryEventArgs,\r\n QueryEvents,\r\n ExpressionBuilder,\r\n} from 'coveo-search-ui';\r\n\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\nimport {\r\n IBuildingExternalContentEventArgs,\r\n IBuildingLocalSitecoreInstanceExpressionEventArgs,\r\n SitecoreExpressionEvents,\r\n} from '../../events/ExpressionEvents';\r\n\r\nexport interface ICoveoForSitecoreExpressionOptions {}\r\n\r\nconst IS_COVEO_FOR_SITECORE_EXPRESSIONS_EVENT_REGISTERED = 'coveoForSitecoreEventRegistered';\r\n\r\nexport class CoveoForSitecoreExpressions extends Component {\r\n static ID = 'ForSitecoreExpressions';\r\n\r\n static options: ICoveoForSitecoreExpressionOptions = {};\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreExpressionOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreExpressions.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreExpressions, options);\r\n this.bind.onRootElement(\r\n SitecoreContextEvents.onSitecoreContextInitialization,\r\n this.afterComponentsInitialization\r\n );\r\n }\r\n\r\n private afterComponentsInitialization(contextArgs: ISitecoreContextInitializationEventArgs): void {\r\n if (!this.root.dataset[IS_COVEO_FOR_SITECORE_EXPRESSIONS_EVENT_REGISTERED]) {\r\n this.root.dataset[IS_COVEO_FOR_SITECORE_EXPRESSIONS_EVENT_REGISTERED] = 'true';\r\n this.bind.onRootElement(QueryEvents.buildingQuery, (buildingQueryArgs: IBuildingQueryEventArgs) => {\r\n this.onBuildingQuery(buildingQueryArgs, contextArgs);\r\n });\r\n }\r\n }\r\n\r\n private onBuildingQuery(\r\n buildingQueryArgs: IBuildingQueryEventArgs,\r\n contextArgs: ISitecoreContextInitializationEventArgs\r\n ): void {\r\n const externalContentArgs: IBuildingExternalContentEventArgs = this.triggerBuildingSitecoreExternalContent();\r\n const localSitecoreInstanceArgs: IBuildingLocalSitecoreInstanceExpressionEventArgs = this.triggerBuildingLocalSitecoreInstanceEvent(\r\n externalContentArgs.sources\r\n );\r\n\r\n if (!localSitecoreInstanceArgs.expression.isEmpty()) {\r\n buildingQueryArgs.queryBuilder.constantExpression.add(localSitecoreInstanceArgs.expression.build(' OR '));\r\n }\r\n }\r\n\r\n private triggerBuildingSitecoreExternalContent(): IBuildingExternalContentEventArgs {\r\n const externalContentArgs: IBuildingExternalContentEventArgs = {\r\n sources: [],\r\n };\r\n\r\n this.bind.trigger(\r\n this.element,\r\n SitecoreExpressionEvents.onBuildingSitecoreExternalContent,\r\n externalContentArgs\r\n );\r\n\r\n return {\r\n sources: this.filterUnique(externalContentArgs.sources),\r\n };\r\n }\r\n\r\n private triggerBuildingLocalSitecoreInstanceEvent(\r\n externalSources: string[]\r\n ): IBuildingLocalSitecoreInstanceExpressionEventArgs {\r\n const localSitecoreInstanceArgs: IBuildingLocalSitecoreInstanceExpressionEventArgs = {\r\n expression: new ExpressionBuilder(),\r\n externalSources: externalSources,\r\n buildingQueryAlreadyProcessed: false,\r\n };\r\n\r\n this.bind.trigger(\r\n this.element,\r\n SitecoreExpressionEvents.onBuildingLocalSitecoreInstanceExpression,\r\n localSitecoreInstanceArgs\r\n );\r\n\r\n return localSitecoreInstanceArgs;\r\n }\r\n\r\n private filterUnique(array: T[]): T[] {\r\n return array.filter((value, index, self) => self.indexOf(value) === index);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreExpressions);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n IBuildingQueryEventArgs,\r\n QueryEvents,\r\n ExpressionBuilder,\r\n} from 'coveo-search-ui';\r\n\r\nimport { ICoveoFieldHandler } from '../../handlers/CoveoFieldsHandler';\r\n\r\nimport { Context } from '../../base/Context';\r\n\r\nexport interface ICoveoForSitecoreSyntaxOptions {}\r\n\r\nexport class CoveoForSitecoreSyntax extends Component {\r\n static ID = 'ForSitecoreSyntax';\r\n\r\n static options: ICoveoForSitecoreSyntaxOptions = {};\r\n\r\n private static readonly IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED = 'coveoForSitecoreSyntaxEventRegistered';\r\n\r\n private static readonly SITECORE_FIELD_NAME_REGEX = /@[\\w\\_]*(?=\\=|\\=\\=|\\<\\>|\\s|$)/gi;\r\n\r\n private fieldHandler: ICoveoFieldHandler;\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreSyntaxOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreSyntax.ID, bindings);\r\n\r\n this.fieldHandler = Context.fields;\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreSyntax, options);\r\n\r\n if (!this.root.dataset[CoveoForSitecoreSyntax.IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED]) {\r\n this.root.dataset[CoveoForSitecoreSyntax.IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED] = 'true';\r\n this.bind.onRootElement(QueryEvents.doneBuildingQuery, this.onDoneBuildingQuery);\r\n }\r\n }\r\n\r\n public setFieldHandler(fieldHandler: ICoveoFieldHandler): void {\r\n this.fieldHandler = fieldHandler;\r\n }\r\n\r\n private onDoneBuildingQuery(buildingQueryArgs: IBuildingQueryEventArgs): void {\r\n this.replaceSitecoreFieldExpressionsByCoveoFieldExpressions(buildingQueryArgs.queryBuilder.expression);\r\n }\r\n\r\n private replaceSitecoreFieldExpressionsByCoveoFieldExpressions(expressionBuilder: ExpressionBuilder): void {\r\n const expressionParts = expressionBuilder.getParts();\r\n expressionParts.forEach((expression) => {\r\n const originalExpression = expression;\r\n\r\n expression = this.replaceSitecoreFieldNamesByCoveoFieldNames(expression);\r\n\r\n expressionBuilder.remove(originalExpression);\r\n expressionBuilder.add(expression);\r\n });\r\n }\r\n\r\n private replaceSitecoreFieldNamesByCoveoFieldNames(expression: string): string {\r\n const sitecoreFieldNamesMatched = this.extractSitecoreFieldNames(expression);\r\n if (sitecoreFieldNamesMatched) {\r\n sitecoreFieldNamesMatched.forEach((sitecoreFieldName) => {\r\n const coveoFieldName = this.convertUnaryFieldExpressionToCoveoUnaryFieldExpression(sitecoreFieldName);\r\n expression = expression.replace(sitecoreFieldName, coveoFieldName);\r\n });\r\n }\r\n return expression;\r\n }\r\n\r\n private extractSitecoreFieldNames(expression: string): string[] {\r\n return expression.match(CoveoForSitecoreSyntax.SITECORE_FIELD_NAME_REGEX);\r\n }\r\n\r\n private convertUnaryFieldExpressionToCoveoUnaryFieldExpression(unaryFieldExpression: string): string {\r\n if (!this.fieldHandler.isCoveoFieldName(unaryFieldExpression)) {\r\n return this.fieldHandler.toCoveo(unaryFieldExpression);\r\n } else {\r\n return unaryFieldExpression;\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreSyntax);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n QueryEvents,\r\n QueryBuilder,\r\n IBuildingQueryEventArgs,\r\n} from 'coveo-search-ui';\r\n\r\nimport { isTabCurrentlySelected } from '../../utils/TabUtils';\r\nimport {\r\n IQueryRankingNode,\r\n IQueryRankingNodeExpressionResolver,\r\n QueryRankingNodeExpressionResolverFactory,\r\n} from '../../resolvers/nodes/QueryRankingNodeExpressionResolver';\r\n\r\nexport interface ICoveoForSitecoreRankingExpressionOptions {\r\n scScopeToTab: string;\r\n scRankingExpression: string;\r\n scRankingScopeNode: IQueryRankingNode;\r\n}\r\n\r\nexport class CoveoForSitecoreRankingExpression extends Component {\r\n private nodeResolver: IQueryRankingNodeExpressionResolver;\r\n\r\n static ID = 'ForSitecoreRankingExpression';\r\n\r\n static options: ICoveoForSitecoreRankingExpressionOptions = {\r\n scScopeToTab: ComponentOptions.buildStringOption(),\r\n scRankingExpression: ComponentOptions.buildStringOption(),\r\n scRankingScopeNode: ComponentOptions.buildCustomOption((value) => {\r\n return JSON.parse(value);\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreRankingExpressionOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreRankingExpression.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreRankingExpression, options);\r\n this.bind.onRootElement(QueryEvents.buildingQuery, this.onBuildingQuery);\r\n }\r\n\r\n private onBuildingQuery(buildingQuery: IBuildingQueryEventArgs): void {\r\n if (this.shouldAddRankingExpression()) {\r\n if (!!this.options.scRankingExpression) {\r\n buildingQuery.queryBuilder.advancedExpression.add(this.options.scRankingExpression.trim());\r\n }\r\n if (!!this.options.scRankingScopeNode) {\r\n const resolver = this.getNodeResolver();\r\n const builder = resolver.parseQueryRankingNode(this.options.scRankingScopeNode);\r\n builder.rankingFunctions.forEach((rankingFunction) =>\r\n buildingQuery.queryBuilder.rankingFunctions.push(rankingFunction)\r\n );\r\n this.copyQueryBuilderAttributes(builder, buildingQuery.queryBuilder);\r\n }\r\n }\r\n }\r\n\r\n private copyQueryBuilderAttributes(from: QueryBuilder, to: QueryBuilder): void {\r\n from.rankingFunctions.forEach((rankingFunction) => to.rankingFunctions.push(rankingFunction));\r\n to.advancedExpression.fromExpressionBuilder(from.advancedExpression);\r\n }\r\n\r\n private getNodeResolver(): IQueryRankingNodeExpressionResolver {\r\n return (\r\n this.nodeResolver ||\r\n (this.nodeResolver = new QueryRankingNodeExpressionResolverFactory().createQueryFilterNodeExpression(\r\n this.logger\r\n ))\r\n );\r\n }\r\n\r\n private shouldAddRankingExpression(): boolean {\r\n return isTabCurrentlySelected(this.options.scScopeToTab, this.searchInterface);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreRankingExpression);\r\n","import { Component, ComponentOptions, IComponentBindings, Initialization } from 'coveo-search-ui';\r\n\r\nimport { isTabCurrentlySelected } from '../../utils/TabUtils';\r\nimport { IBuildingExternalContentEventArgs, SitecoreExpressionEvents } from '../../events/ExpressionEvents';\r\n\r\nexport interface ICoveoForSitecoreExternalContentOptions {\r\n scSources: string[];\r\n scScopeToTab: string;\r\n}\r\n\r\nexport class CoveoForSitecoreExternalContent extends Component {\r\n static ID = 'ForSitecoreExternalContent';\r\n\r\n static options: ICoveoForSitecoreExternalContentOptions = {\r\n scSources: ComponentOptions.buildListOption(),\r\n scScopeToTab: ComponentOptions.buildStringOption(),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreExternalContentOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreExternalContent.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreExternalContent, options);\r\n this.bind.onRootElement(\r\n SitecoreExpressionEvents.onBuildingSitecoreExternalContent,\r\n this.onBuildingSitecoreExternalContent\r\n );\r\n }\r\n\r\n private onBuildingSitecoreExternalContent(\r\n buildingExternalContentEventArgs: IBuildingExternalContentEventArgs\r\n ): void {\r\n if (this.shouldAddExternalContent()) {\r\n buildingExternalContentEventArgs.sources.push(...this.options.scSources);\r\n }\r\n }\r\n\r\n private shouldAddExternalContent(): boolean {\r\n return isTabCurrentlySelected(this.options.scScopeToTab, this.searchInterface);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreExternalContent);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n QueryEvents,\r\n IBuildingQueryEventArgs,\r\n} from 'coveo-search-ui';\r\n\r\nimport { isTabCurrentlySelected } from '../../utils/TabUtils';\r\nimport {\r\n IQueryFilterNode,\r\n IQueryFilterNodeExpressionResolver,\r\n QueryFilterNodeExpressionResolverFactory,\r\n IQueryFilterNodeExpressionResolverFactory,\r\n} from '../../resolvers/nodes/QueryFilterNodeExpressionResolver';\r\n\r\nexport interface ICoveoForSitecoreFilterExpressionOptions {\r\n scScopeToTab: string;\r\n scAdvancedFilter: string;\r\n scFilterScopeNode: IQueryFilterNode;\r\n}\r\n\r\nexport class QueryFilterNodeOptions {\r\n public static parseQueryFilterNode(rawValue: string): IQueryFilterNode {\r\n return JSON.parse(this.unescapeAttributeValue(rawValue));\r\n }\r\n\r\n private static unescapeAttributeValue(value: string): string {\r\n return value\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/&g‌​t;/g, '>')\r\n .replace(/"/g, '\"');\r\n }\r\n}\r\n\r\nexport class CoveoForSitecoreFilterExpression extends Component {\r\n private queryFilterNodeResolver: IQueryFilterNodeExpressionResolver;\r\n\r\n static ID = 'ForSitecoreFilterExpression';\r\n\r\n static options: ICoveoForSitecoreFilterExpressionOptions = {\r\n scScopeToTab: ComponentOptions.buildStringOption(),\r\n scAdvancedFilter: ComponentOptions.buildStringOption(),\r\n scFilterScopeNode: ComponentOptions.buildCustomOption((value) => {\r\n return QueryFilterNodeOptions.parseQueryFilterNode(value);\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreFilterExpressionOptions,\r\n public bindings: IComponentBindings,\r\n private queryFilterNodeFactory: IQueryFilterNodeExpressionResolverFactory = new QueryFilterNodeExpressionResolverFactory()\r\n ) {\r\n super(element, CoveoForSitecoreFilterExpression.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreFilterExpression, options);\r\n this.bind.onRootElement(QueryEvents.buildingQuery, this.onBuildingQuery);\r\n }\r\n\r\n private onBuildingQuery(buildingQuery: IBuildingQueryEventArgs): void {\r\n if (this.shouldAddFilterExpression()) {\r\n if (!!this.options.scAdvancedFilter) {\r\n buildingQuery.queryBuilder.advancedExpression.add(this.options.scAdvancedFilter.trim());\r\n }\r\n if (!!this.options.scFilterScopeNode) {\r\n try {\r\n const resolver = this.getQueryFilterNodeExpressionResolver();\r\n const resultingBuilder = resolver.parseQueryFilterNode(this.options.scFilterScopeNode);\r\n buildingQuery.queryBuilder.advancedExpression.fromExpressionBuilder(\r\n resultingBuilder.advancedExpression\r\n );\r\n } catch (exception) {\r\n this.logger.error('Could not parse the query filter node.', exception);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getQueryFilterNodeExpressionResolver(): IQueryFilterNodeExpressionResolver {\r\n return (\r\n this.queryFilterNodeResolver ||\r\n (this.queryFilterNodeResolver = this.queryFilterNodeFactory.createQueryFilterNodeExpression(this.logger))\r\n );\r\n }\r\n\r\n private shouldAddFilterExpression(): boolean {\r\n return isTabCurrentlySelected(this.options.scScopeToTab, this.searchInterface);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreFilterExpression);\r\n","import { Component, ComponentOptions, ExpressionBuilder, IComponentBindings, Initialization } from 'coveo-search-ui';\r\n\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\nimport {\r\n IBuildingLocalSitecoreInstanceExpressionEventArgs,\r\n SitecoreExpressionEvents,\r\n} from '../../events/ExpressionEvents';\r\n\r\nexport interface ICoveoForSitecoreLocalExpressionOptions {\r\n scFilterOnSitecoreContextDatabase: boolean;\r\n scFilterOnCurrentLanguage: boolean;\r\n scFilterOnLatestVersion: boolean;\r\n}\r\n\r\nexport class CoveoForSitecoreLocalExpression extends Component {\r\n static ID = 'ForSitecoreLocalExpression';\r\n\r\n static options: ICoveoForSitecoreLocalExpressionOptions = {\r\n scFilterOnSitecoreContextDatabase: ComponentOptions.buildBooleanOption(),\r\n scFilterOnCurrentLanguage: ComponentOptions.buildBooleanOption(),\r\n scFilterOnLatestVersion: ComponentOptions.buildBooleanOption(),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreLocalExpressionOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreLocalExpression.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreLocalExpression, options);\r\n this.bind.onRootElement(SitecoreContextEvents.onSitecoreContextInitialization, this.onContextInitialization);\r\n }\r\n\r\n private onContextInitialization(context: ISitecoreContextInitializationEventArgs): void {\r\n this.bind.onRootElement(\r\n SitecoreExpressionEvents.onBuildingLocalSitecoreInstanceExpression,\r\n (builderFilterExpression: IBuildingLocalSitecoreInstanceExpressionEventArgs) =>\r\n this.onBuildingFilterExpression(builderFilterExpression, context)\r\n );\r\n }\r\n\r\n private onBuildingFilterExpression(\r\n buildingFilterExpressionEventArgs: IBuildingLocalSitecoreInstanceExpressionEventArgs,\r\n context: ISitecoreContextInitializationEventArgs\r\n ): void {\r\n if (!buildingFilterExpressionEventArgs.buildingQueryAlreadyProcessed) {\r\n buildingFilterExpressionEventArgs.buildingQueryAlreadyProcessed = true;\r\n const expression = new ExpressionBuilder();\r\n\r\n if (this.options.scFilterOnCurrentLanguage) {\r\n expression.addFieldExpression(`@${context.languageFieldName}`, '==', [context.currentLanguage]);\r\n }\r\n\r\n if (this.options.scFilterOnLatestVersion) {\r\n expression.addFieldExpression(`@${context.latestVersionFieldName}`, '==', ['1']);\r\n }\r\n\r\n if (this.options.scFilterOnSitecoreContextDatabase) {\r\n expression.addFieldExpression('@source', '==', [context.indexSourceName]);\r\n }\r\n\r\n if (!expression.isEmpty()) {\r\n buildingFilterExpressionEventArgs.expression.add(expression.build());\r\n }\r\n\r\n if (\r\n buildingFilterExpressionEventArgs.externalSources &&\r\n buildingFilterExpressionEventArgs.externalSources.length > 0\r\n ) {\r\n const sourceExpression = new ExpressionBuilder();\r\n\r\n sourceExpression.addFieldExpression('@source', '==', buildingFilterExpressionEventArgs.externalSources);\r\n if (!sourceExpression.isEmpty()) {\r\n buildingFilterExpressionEventArgs.expression.add(sourceExpression.build(' OR '));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreLocalExpression);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n ISuccessResponse,\r\n IResolvingPositionEventArgs,\r\n IGeolocationPosition,\r\n DistanceEvents,\r\n} from 'coveo-search-ui';\r\n\r\nimport { IEndpointCaller, EndpointCallerWrapper } from '../../rest/EndpointCaller';\r\n\r\nconst GOOGLE_MAP_BASE_URL = 'https://www.googleapis.com/geolocation/v1/geolocate';\r\n\r\nexport interface IGoogleApiPositionProviderOptions {\r\n googleApiKey: string;\r\n}\r\n\r\ninterface IGeolocationResponse {\r\n location: IGeolocationResponseLocation;\r\n}\r\n\r\ninterface IGeolocationResponseLocation {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\nexport class GoogleApiPositionProvider extends Component {\r\n public static ID = 'GoogleApiPositionProvider';\r\n public static options: IGoogleApiPositionProviderOptions = {\r\n googleApiKey: ComponentOptions.buildStringOption({\r\n required: true,\r\n }),\r\n };\r\n\r\n private endpointCaller: IEndpointCaller;\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: IGoogleApiPositionProviderOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, GoogleApiPositionProvider.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, GoogleApiPositionProvider, options);\r\n this.endpointCaller = new EndpointCallerWrapper();\r\n\r\n this.bind.onRootElement(DistanceEvents.onResolvingPosition, this.onResolvingPosition);\r\n this.validateProperties();\r\n }\r\n\r\n private onResolvingPosition(args: IResolvingPositionEventArgs): void {\r\n if (this.canProvideDistance()) {\r\n args.providers.push({\r\n getPosition: () => this.getPosition(),\r\n });\r\n }\r\n }\r\n\r\n private canProvideDistance(): boolean {\r\n return !!this.options.googleApiKey;\r\n }\r\n\r\n private getPosition(): Promise {\r\n return this.endpointCaller\r\n .sendPost(`${GOOGLE_MAP_BASE_URL}?key=${this.options.googleApiKey}`, {})\r\n .then((positionData: ISuccessResponse) => {\r\n const location = positionData.data.location;\r\n return {\r\n latitude: location.lat,\r\n longitude: location.lng,\r\n };\r\n });\r\n }\r\n\r\n private validateProperties(): void {\r\n if (!this.options.googleApiKey) {\r\n this.logger.error(\r\n `You must set the \"googleApiKey\" property for this component to work properly. It will be disabled.`\r\n );\r\n }\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(GoogleApiPositionProvider);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n IResolvingPositionEventArgs,\r\n IGeolocationPosition,\r\n DistanceEvents,\r\n} from 'coveo-search-ui';\r\n\r\nexport interface INavigatorPositionProviderOptions {}\r\n\r\nexport class NavigatorPositionProvider extends Component {\r\n public static ID = 'NavigatorPositionProvider';\r\n public static options: INavigatorPositionProviderOptions = {};\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: INavigatorPositionProviderOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, NavigatorPositionProvider.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, NavigatorPositionProvider, options);\r\n\r\n this.bind.onRootElement(DistanceEvents.onResolvingPosition, this.onResolvingPosition);\r\n }\r\n\r\n private onResolvingPosition(args: IResolvingPositionEventArgs): void {\r\n args.providers.push({\r\n getPosition: () => this.getPosition(),\r\n });\r\n }\r\n\r\n private getPosition(): Promise {\r\n return new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n resolve({\r\n latitude: position.coords.latitude,\r\n longitude: position.coords.longitude,\r\n });\r\n },\r\n (error) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(NavigatorPositionProvider);\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n IResolvingPositionEventArgs,\r\n IGeolocationPosition,\r\n DistanceEvents,\r\n} from 'coveo-search-ui';\r\n\r\nexport interface IStaticPositionProviderOptions {\r\n longitude: number;\r\n latitude: number;\r\n}\r\n\r\nexport class StaticPositionProvider extends Component {\r\n public static ID = 'StaticPositionProvider';\r\n public static options: IStaticPositionProviderOptions = {\r\n latitude: ComponentOptions.buildNumberOption({\r\n required: true,\r\n float: true,\r\n }),\r\n longitude: ComponentOptions.buildNumberOption({\r\n required: true,\r\n float: true,\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: IStaticPositionProviderOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, StaticPositionProvider.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, StaticPositionProvider, options);\r\n\r\n this.bind.onRootElement(DistanceEvents.onResolvingPosition, this.onResolvingPosition);\r\n }\r\n\r\n private onResolvingPosition(args: IResolvingPositionEventArgs): void {\r\n if (this.canGetPosition()) {\r\n args.providers.push({\r\n getPosition: () => this.getPosition(),\r\n });\r\n }\r\n }\r\n\r\n private canGetPosition(): boolean {\r\n return !!this.options.latitude && !!this.options.longitude;\r\n }\r\n\r\n private getPosition(): Promise {\r\n return Promise.resolve({\r\n longitude: this.options.longitude,\r\n latitude: this.options.latitude,\r\n });\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(StaticPositionProvider);\r\n","export { SitecoreContextEvents } from './events/ContextEvents';\r\nexport { SitecoreExpressionEvents } from './events/ExpressionEvents';\r\n","export { Context } from './base/Context';\r\nexport { Prebinding } from './base/Prebinding';\r\nexport { SearchEndpoint } from './base/SearchEndpoint';\r\n","import {\r\n ICoveoFieldHandler,\r\n IExternalFieldConfig as ILegacyExternalFieldConfig,\r\n CoveoFieldsHandler,\r\n} from '../../handlers/CoveoFieldsHandler';\r\nimport {\r\n IFieldTypeResolver,\r\n ISourceSpecificFieldConfig,\r\n IExternalFieldConfig,\r\n} from '../../handlers/IFieldTypeResolver';\r\nimport { SourceSpecificFieldResolver } from '../../handlers/SourceSpecificFieldResolver';\r\nimport { ICoveoLabelsHandler, ILabelsDictionary, CoveoLabelsHandler } from '../../handlers/CoveoLabelsHandler';\r\nimport { Prebinding } from '../Prebinding';\r\nimport { IPrebindHelperInitializationArgs } from '../../resolvers/prebinding/PrebindHelper';\r\nimport { PrebindHelpers } from '../../resolvers/prebinding/PrebindHelpers';\r\n\r\nimport { TemplateHelpers } from 'coveo-search-ui';\r\nimport { LegacyFieldTypeResolver } from '../../handlers/LegacyFieldTypeResolver';\r\n\r\nexport interface ICoveoFieldsHandlerOptions {\r\n externalFields: ILegacyExternalFieldConfig[] | IExternalFieldConfig[];\r\n sourceSpecificFields: ISourceSpecificFieldConfig[];\r\n preferSourceSpecificFields: boolean;\r\n prefix: string;\r\n suffix: string;\r\n}\r\n\r\nexport interface ICoveoLabelsHandlerOptions {\r\n labels: ILabelsDictionary;\r\n}\r\n\r\nexport class ContextInitializer {\r\n public createFieldsHandler(options: ICoveoFieldsHandlerOptions): ICoveoFieldHandler {\r\n const externalFields: ILegacyExternalFieldConfig[] | IExternalFieldConfig[] = options.externalFields || [];\r\n const sourceSpecificFields: ISourceSpecificFieldConfig[] = options.sourceSpecificFields || [];\r\n\r\n const fieldTypeResolver: IFieldTypeResolver = options.preferSourceSpecificFields\r\n ? new LegacyFieldTypeResolver(externalFields as ILegacyExternalFieldConfig[])\r\n : new SourceSpecificFieldResolver(sourceSpecificFields, externalFields);\r\n\r\n return new CoveoFieldsHandler(fieldTypeResolver, options.prefix, options.suffix);\r\n }\r\n\r\n public createLabelsHandler(options: ICoveoLabelsHandlerOptions): ICoveoLabelsHandler {\r\n const labels: ILabelsDictionary = options.labels || {};\r\n return new CoveoLabelsHandler(labels);\r\n }\r\n\r\n public initializePrebinding(args: IPrebindHelperInitializationArgs): void {\r\n PrebindHelpers.getAllPrebindHelpers().forEach((helper) => {\r\n Prebinding.registerPrebindHelper(helper.name, helper.getPrebind(args));\r\n });\r\n }\r\n\r\n public initializeUnderscoreFieldsHelpers(fieldsHandler: ICoveoFieldHandler): void {\r\n TemplateHelpers.registerTemplateHelper('coveoFieldValue', function (fieldName: string): string {\r\n return this.raw[fieldsHandler.toCoveo(fieldName)];\r\n });\r\n TemplateHelpers.registerTemplateHelper('coveoFieldName', function (fieldName: string): string {\r\n return fieldsHandler.toCoveo(fieldName);\r\n });\r\n }\r\n\r\n public initializeUnderscoreLabelsHelpers(labels: ICoveoLabelsHandler): void {\r\n TemplateHelpers.registerTemplateHelper('translateLabel', function (labelKey: string): string {\r\n return labels.translate(labelKey);\r\n });\r\n }\r\n\r\n public initializeUnderscoreContextHelpers(sourceName: string): void {\r\n TemplateHelpers.registerTemplateHelper('currentSourceName', function (): string {\r\n return sourceName;\r\n });\r\n }\r\n\r\n public initializeContextElement(contextElement: HTMLElement): void {\r\n Prebinding.applyPrebindingOnElement(contextElement);\r\n }\r\n}\r\n","import { IFieldTypeResolver } from './IFieldTypeResolver';\r\nimport { LegacyFieldTypeResolver } from './LegacyFieldTypeResolver';\r\n\r\nexport interface ICoveoFieldHandler {\r\n isCoveoFieldName(fieldName: string): boolean;\r\n toCoveo(fieldName: string): string;\r\n addCoveoFieldDelimiter(fieldName: string): string;\r\n}\r\n\r\nexport interface IExternalFieldConfig {\r\n fieldName: string;\r\n shouldEscape: boolean;\r\n}\r\n\r\nexport class CoveoFieldsHandler implements ICoveoFieldHandler {\r\n // 'z' and 'x' are also considered as special characters because\r\n // they are used in the escaping logic. So we have to remove them\r\n // from the regular expression pattern.\r\n private static readonly nonSpecialCharactersString = '[a-wyA-WY0-9]';\r\n private static readonly nonSpecialCharacters = new RegExp(CoveoFieldsHandler.nonSpecialCharactersString);\r\n private static readonly coveoFieldDelimiter = '@';\r\n private static readonly fieldNameRegex = new RegExp('^[^\\\\W_]*$');\r\n private static readonly escapedCharacterRegex = new RegExp('z\\\\d{2,3}x');\r\n\r\n private readonly resolver: IFieldTypeResolver;\r\n\r\n constructor(resolver: IFieldTypeResolver, prefix: string, suffix: string);\r\n /**\r\n * @deprecated. Use the `constructor(IFieldTypeResolver, string, string)` constructor instead.\r\n */\r\n constructor(resolver: IExternalFieldConfig[], prefix: string, suffix: string);\r\n constructor(resolver: IExternalFieldConfig[] | IFieldTypeResolver, private prefix: string, private suffix: string) {\r\n if ((resolver).shouldDecorate !== undefined) {\r\n this.resolver = resolver as IFieldTypeResolver;\r\n } else {\r\n // Handle legacy constructor case.\r\n this.resolver = new LegacyFieldTypeResolver(resolver as IExternalFieldConfig[]);\r\n }\r\n }\r\n\r\n public toCoveo(fieldName: string): string {\r\n if (this.isValidFieldName(fieldName)) {\r\n const lowerCaseFieldName = fieldName.toLowerCase();\r\n const fieldWithoutDelimiter = this.stripCoveoFieldDelimiter(lowerCaseFieldName);\r\n if (CoveoFieldsHandler.escapedCharacterRegex.test(fieldWithoutDelimiter)) {\r\n console.warn(\r\n `Field name ${fieldName} contains the z\\\\d{2,3}x pattern. Ensure you avoid using this pattern in field names.`\r\n );\r\n console.trace();\r\n }\r\n\r\n const translatedFieldWithoutDelimiter = this.translateFieldName(fieldWithoutDelimiter);\r\n return this.startsWithAt(fieldName)\r\n ? this.addCoveoFieldDelimiter(translatedFieldWithoutDelimiter)\r\n : translatedFieldWithoutDelimiter;\r\n } else {\r\n console.error(`Could not translate the '${fieldName}' field to a Coveo field. Returning as is.`);\r\n return fieldName;\r\n }\r\n }\r\n\r\n public addCoveoFieldDelimiter(fieldName: string): string {\r\n let fieldNameWithDelimiter = fieldName;\r\n if (!this.startsWithAt(fieldName)) {\r\n fieldNameWithDelimiter = `${CoveoFieldsHandler.coveoFieldDelimiter}${fieldName}`.toLowerCase();\r\n }\r\n return fieldNameWithDelimiter;\r\n }\r\n\r\n public isCoveoFieldName(fieldName: string): boolean {\r\n const strippedFieldName = this.stripCoveoFieldDelimiter(fieldName);\r\n return this.resolver.isExternalField(strippedFieldName) || this.isDecorated(strippedFieldName);\r\n }\r\n\r\n private isDecorated(fieldName: string): boolean {\r\n const regexString = this.prefix + '[\\\\w]+' + this.suffix;\r\n const coveoFieldNameRegex = new RegExp(regexString);\r\n return coveoFieldNameRegex.test(fieldName);\r\n }\r\n\r\n private isValidFieldName(fieldName: string): boolean {\r\n return typeof fieldName !== 'undefined' && fieldName !== '';\r\n }\r\n\r\n private startsWithAt(fieldName: string): boolean {\r\n return fieldName[0] === CoveoFieldsHandler.coveoFieldDelimiter;\r\n }\r\n\r\n private stripCoveoFieldDelimiter(fieldName: string): string {\r\n let field = fieldName;\r\n if (this.startsWithAt(fieldName)) {\r\n field = field.substr(1);\r\n }\r\n return field;\r\n }\r\n\r\n private translateFieldName(fieldName: string): string {\r\n let field = fieldName;\r\n\r\n if (this.resolver.shouldEscapeSpecialCharacters(fieldName) && !this.isFieldAlreadyTranslated(fieldName)) {\r\n field = this.replaceSpecialCharacters(field);\r\n }\r\n if (this.resolver.shouldDecorate(fieldName)) {\r\n field = this.prefix + field + this.suffix;\r\n }\r\n if (this.resolver.shouldEscapeFirstCharacter(field)) {\r\n field = this.replaceFirstCharacter(field);\r\n }\r\n\r\n return field;\r\n }\r\n\r\n // This check was added to avoid fields from being double translated. See SC-4266.\r\n private isFieldAlreadyTranslated(fieldName: string): boolean {\r\n return (\r\n CoveoFieldsHandler.fieldNameRegex.test(fieldName) &&\r\n CoveoFieldsHandler.escapedCharacterRegex.test(fieldName)\r\n );\r\n }\r\n\r\n private replaceFirstCharacter(fieldName: string): string {\r\n const characters = fieldName.split('');\r\n const firstCharacter = characters.shift();\r\n characters.unshift(this.escapeSpecialCharacter(firstCharacter));\r\n return characters.join('');\r\n }\r\n\r\n private replaceSpecialCharacters(fieldName: string): string {\r\n return fieldName.split('').map(this.replaceSpecialCharacter.bind(this)).join('');\r\n }\r\n\r\n private replaceSpecialCharacter(character: string): string {\r\n if (character.match(CoveoFieldsHandler.nonSpecialCharacters)) {\r\n return character;\r\n } else {\r\n return this.escapeSpecialCharacter(character);\r\n }\r\n }\r\n\r\n private escapeSpecialCharacter(character: string): string {\r\n return `z${character.charCodeAt(0)}x`;\r\n }\r\n}\r\n","import { IFieldTypeResolver, IExternalFieldConfig, ISourceSpecificFieldConfig } from './IFieldTypeResolver';\r\n\r\nexport class SourceSpecificFieldResolver implements IFieldTypeResolver {\r\n private static readonly validFirstCharacters = new RegExp('[a-zA-Z_]');\r\n\r\n constructor(\r\n private sourceSpecificFields: ISourceSpecificFieldConfig[],\r\n private externalFields: IExternalFieldConfig[]\r\n ) {}\r\n\r\n public shouldEscapeFirstCharacter(fieldName: string): boolean {\r\n return !fieldName[0].match(SourceSpecificFieldResolver.validFirstCharacters);\r\n }\r\n\r\n public shouldEscapeSpecialCharacters(fieldName: string): boolean {\r\n return !this.externalFields.some((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n }\r\n\r\n public shouldDecorate(fieldName: string): boolean {\r\n return this.sourceSpecificFields.some((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n }\r\n\r\n public isExternalField(fieldName: string): boolean {\r\n return this.externalFields.some((field) => field.fieldName.toLowerCase() === fieldName.toLowerCase());\r\n }\r\n}\r\n","export interface ICoveoLabelsHandler {\r\n translate(key: string): string;\r\n}\r\n\r\nexport interface ILabelsDictionary {\r\n [key: string]: string;\r\n}\r\n\r\nexport class CoveoLabelsHandler implements ICoveoLabelsHandler {\r\n constructor(private labels: ILabelsDictionary) {}\r\n\r\n public translate(key: string): string {\r\n return this.labels[key] || key;\r\n }\r\n}\r\n","export interface IPrebindHandler {\r\n (value: string, element: HTMLElement): string;\r\n}\r\n\r\nexport interface IPrebindAttribute {\r\n attribute: string;\r\n attributeValue: any;\r\n method: IPrebindHandler;\r\n}\r\n\r\nexport interface IPrebindResolver {\r\n registerPrebindHelper(helperName: string, handler: IPrebindHandler): void;\r\n hasHelper(helperName: string): boolean;\r\n getHelper(helperName: string): IPrebindHandler;\r\n canApplyPrebind(element: HTMLElement): boolean;\r\n applyToElement(element: HTMLElement): void;\r\n hasNotAppliedPrebind(element: HTMLElement): boolean;\r\n}\r\n\r\nexport class PrebindResolver implements IPrebindResolver {\r\n public static prebindString = 'prebind';\r\n private prebindAppliedValue = 'appliedPrebind';\r\n private helpers: { [helperName: string]: IPrebindHandler } = {};\r\n\r\n public registerPrebindHelper(helperName: string, handler: IPrebindHandler): void {\r\n if (typeof helperName !== 'string' || helperName === '') {\r\n throw 'You must define a name for the prebind helper.';\r\n }\r\n if (typeof handler === 'undefined' || handler === null) {\r\n throw 'You must define a handler for the prebind helper.';\r\n }\r\n if (this.helpers.hasOwnProperty(helperName)) {\r\n console.warn(`A prebind handler already exists for '${helperName}'. It will be ignored`);\r\n return;\r\n }\r\n this.helpers[helperName] = handler;\r\n }\r\n\r\n public hasHelper(helperName: string): boolean {\r\n return this.helpers.hasOwnProperty(helperName);\r\n }\r\n\r\n public getHelper(helperName: string): IPrebindHandler {\r\n if (!this.hasHelper(helperName)) {\r\n throw `'${helperName}' has no registered helper.`;\r\n }\r\n return this.helpers[helperName];\r\n }\r\n\r\n public canApplyPrebind(element: HTMLElement): boolean {\r\n return !!element.dataset;\r\n }\r\n\r\n public hasNotAppliedPrebind(element: HTMLElement): boolean {\r\n return element.dataset[this.prebindAppliedValue] !== 'true';\r\n }\r\n\r\n public applyToElement(element: HTMLElement): void {\r\n try {\r\n const attributes = this.getPrebindingAttributesForElement(element);\r\n if (attributes.length > 0) {\r\n element.dataset[this.prebindAppliedValue] = 'true';\r\n }\r\n attributes.forEach((attributes) => this.applyPrebindToElement(attributes, element));\r\n } catch (exception) {\r\n console.warn('(CoveoForSitecore) prebinding failed on element.', element, exception);\r\n }\r\n }\r\n\r\n private getPrebindingAttributesForElement(element: HTMLElement): IPrebindAttribute[] {\r\n return this.getAllPrebindingAttributesNames(element).map((key) => {\r\n const methodName = element.dataset[key];\r\n const attribute = this.lowerCaseFirstCharacter(this.removePrebindPrefix(key));\r\n return {\r\n attribute: attribute,\r\n attributeValue: element.dataset[attribute] || '',\r\n method: this.getHelper(methodName),\r\n };\r\n });\r\n }\r\n\r\n private getAllPrebindingAttributesNames(element: HTMLElement): string[] {\r\n return Object.keys(element.dataset)\r\n .filter((key) => this.stringStartsWithPrebindingString(key))\r\n .filter((key) => {\r\n const helperName = element.dataset[key];\r\n return this.filterAndWarnNonExistingHelperName(helperName, element);\r\n });\r\n }\r\n\r\n private stringStartsWithPrebindingString(value: string): boolean {\r\n return value.lastIndexOf(PrebindResolver.prebindString) === 0;\r\n }\r\n\r\n private filterAndWarnNonExistingHelperName(helperName: string, element: HTMLElement): boolean {\r\n const hasHelperWithName: boolean = this.hasHelper(helperName);\r\n\r\n if (!hasHelperWithName) {\r\n console.warn(\r\n `(CoveoForSitecore) an unregistered prebinding '${helperName}' was set on the element. Register this method using Prebinding.registerPrebindHelper(\"${helperName}\", handler).`,\r\n element\r\n );\r\n }\r\n\r\n return hasHelperWithName;\r\n }\r\n\r\n private removePrebindPrefix(attributeName: string): string {\r\n return attributeName.substring(PrebindResolver.prebindString.length);\r\n }\r\n\r\n private lowerCaseFirstCharacter(value: string): string {\r\n return value.charAt(0).toLowerCase() + value.slice(1);\r\n }\r\n\r\n private applyPrebindToElement(prebind: IPrebindAttribute, element: HTMLElement): void {\r\n element.dataset[prebind.attribute] = prebind.method(prebind.attributeValue, element);\r\n }\r\n}\r\n","import { Context } from '../../base/Context';\n\nconst CSS_SORT_BOTH_DIRECTIONS = '.CoveoSort[data-sc-enable-both-sort-directions=\"true\"]';\nconst CSS_DROPDOWN_SELECTOR = '.CoveoSortDropdown';\nconst DESCENDING_CRITERIA = 'Descending';\nconst ASCENDING_CRITERIA = 'Ascending';\n\nconst createReversedSortElement = (sortElement: HTMLElement): HTMLElement => {\n const sortElementReverse: HTMLElement = sortElement.cloneNode(false) as HTMLElement;\n const sortCriteria = JSON.parse(sortElementReverse.dataset.sortCriteria);\n\n sortCriteria.direction = sortCriteria.direction === DESCENDING_CRITERIA ? ASCENDING_CRITERIA : DESCENDING_CRITERIA;\n\n sortElementReverse.dataset.sortCriteria = JSON.stringify(sortCriteria);\n\n return sortElementReverse;\n};\n\nconst addDirectionToCaption = (element: HTMLElement): void => {\n const sortCriteria = JSON.parse(element.dataset.sortCriteria);\n\n element.dataset.caption =\n sortCriteria.direction === DESCENDING_CRITERIA\n ? `${element.dataset.caption} ${Context.labels.translate('Descending')}`\n : `${element.dataset.caption} ${Context.labels.translate('Ascending')}`;\n};\n\nconst adjustSortDropdown = (rootElement: HTMLElement): void => {\n const dropdownElement: HTMLElement = rootElement.querySelector(CSS_DROPDOWN_SELECTOR);\n\n if (dropdownElement) {\n for (const sortElement of rootElement.querySelectorAll(CSS_SORT_BOTH_DIRECTIONS) as any) {\n const sortElementReverse: HTMLElement = createReversedSortElement(sortElement);\n\n sortElement.insertAdjacentElement('afterend', sortElementReverse);\n\n addDirectionToCaption(sortElement);\n addDirectionToCaption(sortElementReverse);\n }\n }\n};\n\nexport const adjustDOMElements = (rootElement: HTMLElement): void => {\n adjustSortDropdown(rootElement);\n};\n","import { IPrebindHelper } from './PrebindHelper';\r\n\r\nimport { AnalyticsEnabledPrebind } from './prebindHelpers/AnalyticsEnabled';\r\nimport { CoveoForSitecoreAnalyticsEndpointPrebind } from './prebindHelpers/CoveoForSitecoreAnalyticsEndpoint';\r\nimport { CurrentMaximumAge } from './prebindHelpers/CurrentMaximumAge';\r\nimport { CurrentPageNamePrebind } from './prebindHelpers/CurrentPageName';\r\nimport { FieldTranslatorPrebind } from './prebindHelpers/FieldTranslator';\r\nimport { IsAnonymousPrebind } from './prebindHelpers/IsAnonymous';\r\nimport { MainSearchInterfaceSelectorPrebind } from './prebindHelpers/MainSearchInterfaceSelector';\r\nimport { ItemIdSelectorPrebind } from './prebindHelpers/ItemIdSelector';\r\nimport { SortCriteriaPrebind } from './prebindHelpers/SortCriteria';\r\nimport { UnfoldDictionaryToAttributesPrebind } from './prebindHelpers/UnfoldDictionaryToAttributes';\r\n\r\nexport class PrebindHelpers {\r\n public static getAllPrebindHelpers(): IPrebindHelper[] {\r\n return [\r\n new AnalyticsEnabledPrebind(),\r\n new CoveoForSitecoreAnalyticsEndpointPrebind(),\r\n new CurrentMaximumAge(),\r\n new CurrentPageNamePrebind(),\r\n new FieldTranslatorPrebind(),\r\n new IsAnonymousPrebind(),\r\n new MainSearchInterfaceSelectorPrebind(),\r\n new ItemIdSelectorPrebind(),\r\n new SortCriteriaPrebind(),\r\n new UnfoldDictionaryToAttributesPrebind(),\r\n ];\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class AnalyticsEnabledPrebind implements IPrebindHelper {\r\n public name: string = 'analyticsEnabled';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (currentValue: string, element: HTMLElement) => {\r\n return args.context.scAnalyticsEnabled ? 'true' : 'false';\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class CoveoForSitecoreAnalyticsEndpointPrebind implements IPrebindHelper {\r\n public name: string = 'coveoForSitecoreAnalyticsEndpoint';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (currentValue: string, element: HTMLElement) => {\r\n return currentValue || `${args.context.scRestEndpointUri}/ua`;\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class CurrentMaximumAge implements IPrebindHelper {\r\n public name: string = 'currentMaximumAge';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (value: string, element: HTMLElement) => {\r\n return value || args.context.scMaximumAge.toString();\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class CurrentPageNamePrebind implements IPrebindHelper {\r\n public name: string = 'currentPageName';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (pageName: string, element: HTMLElement) => {\r\n return pageName || args.context.scPageName;\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class FieldTranslatorPrebind implements IPrebindHelper {\r\n public name: string = 'fieldTranslator';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (name: string, element: HTMLElement) => {\r\n return args.fieldsHandler.toCoveo(name);\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class IsAnonymousPrebind implements IPrebindHelper {\r\n public name: string = 'isAnonymous';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (isAnonymous: string, element: HTMLElement) => {\r\n return args.context.scIsUserAnonymous ? 'true' : 'false';\r\n };\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\nimport {\r\n IItemIdValueResolver,\r\n ResolveIfSelector,\r\n ResolveIfItemIdInPage,\r\n UseItemIdSelectorAsIs,\r\n} from './ItemIdSelector';\r\n\r\nimport { SearchInterface } from 'coveo-search-ui';\r\n\r\nexport class MainSearchInterfaceSelectorPrebind implements IPrebindHelper {\r\n public name: string = 'mainSearchInterfaceSelector';\r\n\r\n private resolvers: IItemIdValueResolver[] = [\r\n new ResolveIfSelector(),\r\n new ResolveIfItemIdInPage(),\r\n new ResolveParentSearchInterfaceId(),\r\n new UseItemIdSelectorAsIs(),\r\n ];\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (mainSearchInterfaceId: string, element: HTMLElement) => {\r\n const resolver: IItemIdValueResolver = this.getFirstValidResolver(mainSearchInterfaceId, element);\r\n\r\n return resolver.getValue(mainSearchInterfaceId, element);\r\n };\r\n }\r\n\r\n private getFirstValidResolver(mainSearchInterfaceId: string, element: HTMLElement): IItemIdValueResolver {\r\n let resolver: IItemIdValueResolver;\r\n\r\n do {\r\n if (this.resolvers.length === 0) {\r\n const message =\r\n 'Could not resolve the search interface element using the current resolver. Ensure that a valid value is set.';\r\n console.error(message, {\r\n mainSearchInterfaceId: mainSearchInterfaceId,\r\n element: element,\r\n });\r\n throw message;\r\n }\r\n resolver = this.resolvers.shift();\r\n } while (!resolver.canResolve(mainSearchInterfaceId, element));\r\n\r\n return resolver;\r\n }\r\n}\r\n\r\nclass ResolveParentSearchInterfaceId implements IItemIdValueResolver {\r\n private foundId: string;\r\n\r\n canResolve(mainSearchInterfaceId: string, element: HTMLElement): boolean {\r\n return this.getValue(mainSearchInterfaceId, element) !== null;\r\n }\r\n\r\n getValue(mainSearchInterfaceId: string, element: HTMLElement): string {\r\n if (typeof this.foundId === 'undefined') {\r\n this.foundId = this.tryFindParentSearchInterfaceFromElement(element);\r\n }\r\n\r\n return this.foundId;\r\n }\r\n\r\n private tryFindParentSearchInterfaceFromElement(element: HTMLElement): string {\r\n const parentSearchInterface = this.findParentWithClass(element, `Coveo${SearchInterface.ID}`);\r\n\r\n return !!parentSearchInterface ? `#${parentSearchInterface.id}` : null;\r\n }\r\n\r\n private findParentWithClass(element: HTMLElement, className: string): HTMLElement {\r\n let parent = element.parentElement;\r\n while ((parent = parent.parentElement) && !parent.classList.contains(className)) {}\r\n return parent;\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\nimport { ISortDirection, SortCriteriaResolver } from '../../sortCriteria/SortCriteriaResolver';\r\n\r\nexport class SortCriteriaPrebind implements IPrebindHelper {\r\n public name: string = 'sortCriteriaResolver';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n const criteriaResolver = new SortCriteriaResolver(args.fieldsHandler);\r\n return (sortCriteriaRawValue: string, element: HTMLElement) => {\r\n const sortCriteria = JSON.parse(sortCriteriaRawValue);\r\n if (Object.keys(sortCriteria).length === 0) {\r\n return null;\r\n }\r\n const sortType = (sortCriteria.type || 'relevancy').toLowerCase();\r\n const sortDirection = (sortCriteria.direction || 'ascending').toLowerCase() as ISortDirection;\r\n const enableBothSortDirections =\r\n (element.dataset['scEnableBothSortDirections'] || 'false').toLowerCase() === 'true';\r\n const sortDropdownElement = document.querySelector('.coveo-sort-section .CoveoSortDropdown');\r\n const enableSortDropdown = document.body.contains(sortDropdownElement);\r\n\r\n if (sortType === 'relevancy') {\r\n return criteriaResolver.resolveRelevancyCriteria();\r\n } else if (sortType === 'date') {\r\n return criteriaResolver.resolveDateCriteria(\r\n sortDirection,\r\n enableBothSortDirections,\r\n enableSortDropdown\r\n );\r\n } else {\r\n const sortField = sortCriteria.field;\r\n return criteriaResolver.resolveFieldCriteria(\r\n sortField,\r\n sortDirection,\r\n enableBothSortDirections,\r\n enableSortDropdown\r\n );\r\n }\r\n };\r\n }\r\n}\r\n","import { ICoveoFieldHandler } from '../../handlers/CoveoFieldsHandler';\r\n\r\nexport type ISortDirection = 'ascending' | 'descending';\r\n\r\nexport class SortCriteriaResolver {\r\n constructor(private fieldsHandler: ICoveoFieldHandler) {}\r\n\r\n resolveFieldCriteria(\r\n fieldCriteria: string,\r\n sortDirection: ISortDirection,\r\n enableBothSortDirections: boolean,\r\n enableSortDropdown: boolean\r\n ): string {\r\n const field = fieldCriteria.charAt(0) !== '@' ? `@${fieldCriteria}` : fieldCriteria;\r\n return this.getFieldCriteria(\r\n this.fieldsHandler.toCoveo(field),\r\n sortDirection,\r\n enableBothSortDirections,\r\n enableSortDropdown\r\n );\r\n }\r\n\r\n resolveDateCriteria(\r\n sortDirection: ISortDirection,\r\n enableBothSortDirections: boolean,\r\n enableSortDropdown: boolean\r\n ): string {\r\n return this.getFieldCriteria('date', sortDirection, enableBothSortDirections, enableSortDropdown);\r\n }\r\n\r\n resolveRelevancyCriteria(): string {\r\n return 'relevancy';\r\n }\r\n\r\n private getFieldCriteria(\r\n fieldCriteria: string,\r\n sortDirection: ISortDirection,\r\n enableBothSortDirections: boolean,\r\n enableSortDropdown: boolean\r\n ): string {\r\n if (enableBothSortDirections && !enableSortDropdown) {\r\n return `${this.getFieldWithDirection(fieldCriteria, sortDirection)}, ${this.getFieldWithDirection(\r\n fieldCriteria,\r\n this.getInvertedDirection(sortDirection)\r\n )}`;\r\n } else {\r\n return this.getFieldWithDirection(fieldCriteria, sortDirection);\r\n }\r\n }\r\n\r\n private getFieldWithDirection(fieldCriteria: string, sortDirection: ISortDirection): string {\r\n return `${fieldCriteria} ${sortDirection}`;\r\n }\r\n\r\n private getInvertedDirection(sortDirection: ISortDirection): ISortDirection {\r\n return sortDirection === 'descending' ? 'ascending' : 'descending';\r\n }\r\n}\r\n","import { IPrebindHelper, IPrebindHelperInitializationArgs } from '../PrebindHelper';\r\nimport { IPrebindHandler } from '../PrebindResolver';\r\n\r\nexport class UnfoldDictionaryToAttributesPrebind implements IPrebindHelper {\r\n public name: string = 'unfoldDictionaryToAttributesPrebind';\r\n\r\n public getPrebind(args: IPrebindHelperInitializationArgs): IPrebindHandler {\r\n return (rawDictionary: string, element: HTMLElement) => {\r\n const parsedDictionary = JSON.parse(rawDictionary);\r\n Object.keys(parsedDictionary).forEach((key) => {\r\n const translatedField = args.fieldsHandler.toCoveo(key);\r\n const dataKey = 'field' + translatedField.charAt(0).toUpperCase() + translatedField.slice(1);\r\n element.dataset[dataKey] = parsedDictionary[key];\r\n });\r\n return rawDictionary;\r\n };\r\n }\r\n}\r\n","import { SearchEndpoint as CoveoSearchEndpoint } from 'coveo-search-ui';\r\n\r\nexport interface ICoveoForSitecoreEndpointOptions {\r\n restEndpointUri?: string;\r\n itemUri: string;\r\n siteName: string;\r\n}\r\n\r\nexport class SearchEndpoint {\r\n static configureSitecoreEndpoint(options: ICoveoForSitecoreEndpointOptions): void {\r\n if (typeof options === 'undefined') {\r\n throw Error(\"You must define endpoint options when calling 'configureSitecoreEndpoint'.\");\r\n }\r\n\r\n SearchEndpoint.getAccessToken().then((accessToken) => {\r\n SearchEndpoint.initializeEndPoint(options, accessToken);\r\n SearchEndpoint.dispatchInitializationEvent();\r\n });\r\n }\r\n\r\n static initializeEndPoint(options: ICoveoForSitecoreEndpointOptions, accessToken: string): void {\r\n const endpoint = SearchEndpoint.createNewEndpoint(options, accessToken);\r\n CoveoSearchEndpoint.endpoints['default'] = endpoint;\r\n }\r\n\r\n static dispatchInitializationEvent() {\r\n const customEvent = document.createEvent('CustomEvent');\r\n customEvent.initEvent('CoveoSearchEndpointInitialized', false, true);\r\n\r\n if (document.readyState !== 'loading') {\r\n document.dispatchEvent(customEvent);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n document.dispatchEvent(customEvent);\r\n });\r\n }\r\n }\r\n\r\n static getAccessToken() {\r\n return SearchEndpoint.fetchAccessToken()\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n })\r\n .then((data) => data.token)\r\n .catch(() => {\r\n // Returning an empty token delegates error handling of invalid access token to the Coveo Search UI.\r\n return '';\r\n });\r\n }\r\n\r\n static fetchAccessToken() {\r\n return fetch(`/coveo/rest/token?t=${Date.now()}`);\r\n }\r\n\r\n private static createNewEndpoint(\r\n options: ICoveoForSitecoreEndpointOptions,\r\n accessToken: string\r\n ): CoveoSearchEndpoint {\r\n return new CoveoSearchEndpoint({\r\n restUri: options.restEndpointUri ? `${options.restEndpointUri}/search` : '/coveo/rest/search',\r\n queryStringArguments: {\r\n sitecoreItemUri: options.itemUri,\r\n siteName: options.siteName,\r\n },\r\n accessToken: accessToken,\r\n renewAccessToken: SearchEndpoint.getAccessToken,\r\n });\r\n }\r\n}\r\n","import {\r\n ISearchInterfaceComponentInitializer,\r\n getInitializerInstance,\r\n} from '../../resolvers/components/SearchInterfaceComponentInitializer';\r\nimport { ISitecoreExperienceEditor, getExperienceEditorInstance } from './SitecoreExperienceEditor';\r\nimport { SearchInterfacesProvider } from '../../utils/SearchInterfaceProvider';\r\n\r\nimport { SearchInterface, get as getCoveoComponent } from 'coveo-search-ui';\r\n\r\nexport class ExternalComponentInitializer {\r\n private searchInterfacesProvider = new SearchInterfacesProvider();\r\n\r\n constructor(\r\n private experienceEditor: ISitecoreExperienceEditor = getExperienceEditorInstance(),\r\n private searchInterfaceComponentInitializer: ISearchInterfaceComponentInitializer = getInitializerInstance()\r\n ) {}\r\n\r\n public initializeExternalComponentSection(externalComponentsSection: HTMLElement): void {\r\n const searchInterface = this.findSearchInterfaceForSection(externalComponentsSection);\r\n if (!!searchInterface) {\r\n this.searchInterfaceComponentInitializer.loadComponentsWithSearchInterfaceInitialization(\r\n searchInterface,\r\n externalComponentsSection\r\n );\r\n } else {\r\n const getAllSearchInterfaceIds = this.getAllSearchInterfaceIdsInPage();\r\n if (getAllSearchInterfaceIds.length > 0) {\r\n console.error(\r\n `Could not find the search interface element with the following ID: ${this.getSearchInterfaceId(\r\n externalComponentsSection\r\n )}. The following IDs were found: ${getAllSearchInterfaceIds.join(',')}.`,\r\n externalComponentsSection\r\n );\r\n }\r\n }\r\n }\r\n\r\n public initializeExperienceEditorHooksForExternalComponentsSection(externalComponentsSection: HTMLElement): void {\r\n const searchInterface = this.findSearchInterfaceForSection(externalComponentsSection);\r\n if (!!searchInterface) {\r\n this.experienceEditor.registerOnLoadRenderingFromUrl((callbackData) => {\r\n const component = this.experienceEditor.getComponentFromLoadRenderingFromUrlCallbackData(callbackData);\r\n\r\n if (externalComponentsSection.contains(component)) {\r\n this.searchInterfaceComponentInitializer.loadComponentsForSearchInterface(\r\n getCoveoComponent(searchInterface, SearchInterface) as SearchInterface,\r\n component\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n private findSearchInterfaceForSection(externalComponentsSection: HTMLElement): HTMLElement {\r\n const searchInterfaceId = this.getSearchInterfaceId(externalComponentsSection);\r\n const searchInterfaceElement = document.getElementById(searchInterfaceId);\r\n if (!!searchInterfaceElement) {\r\n return searchInterfaceElement;\r\n }\r\n }\r\n\r\n private getSearchInterfaceId(externalComponentsSection: HTMLElement): string {\r\n return externalComponentsSection.dataset.searchInterfaceId;\r\n }\r\n\r\n private getAllSearchInterfaceIdsInPage(): string[] {\r\n return this.searchInterfacesProvider\r\n .getSearchInterfacesInPage(['SearchInterface'])\r\n .map((element) => element.id)\r\n .filter((id) => !!id);\r\n }\r\n}\r\n","import { SearchInterfacesProvider } from '../../utils/SearchInterfaceProvider';\r\nimport { ElementWithContextInitializer } from './ElementWithContextInitializer';\r\n\r\nimport { $$, Dom, get as getCoveoComponents, initSearchbox, InitializationEvents } from 'coveo-search-ui';\r\n\r\nexport class SearchboxInitializer {\r\n private searchInterfacesProvider = new SearchInterfacesProvider();\r\n\r\n async initSearchboxIfStandalone(\r\n searchboxElement: HTMLElement,\r\n searchPageUri?: string,\r\n options?: any\r\n ): Promise {\r\n const searchInterfaces = this.searchInterfacesProvider.getSearchInterfacesInPage([\r\n 'Recommendation',\r\n 'SearchInterface',\r\n ]);\r\n await this.waitForSearchInterfacesInitialization(searchInterfaces);\r\n if (this.searchboxElementIsNotInitialized(searchboxElement)) {\r\n if (!!searchPageUri) {\r\n ElementWithContextInitializer.initializeContextWithinElement(searchboxElement.parentElement);\r\n // coveo-search-ui doesn't like an initSearchbox directly on the searchbox.\r\n initSearchbox(searchboxElement.parentElement, searchPageUri, options);\r\n } else {\r\n console.warn(\r\n `The search box is not included in any search interface and the \"searchPageUri\" parameters is not specified. Consider using a Global Searchbox instead.`,\r\n searchboxElement\r\n );\r\n }\r\n }\r\n }\r\n\r\n private searchboxElementIsNotInitialized(searchBoxElement: HTMLElement): boolean {\r\n return typeof getCoveoComponents(searchBoxElement, Coveo.Searchbox) === 'undefined';\r\n }\r\n\r\n private async waitForSearchInterfacesInitialization(searchInterfaces: HTMLElement[]): Promise {\r\n await Promise.all(this.getAllSearchInterfacesAfterComponentInitialization(searchInterfaces));\r\n }\r\n\r\n private getAllSearchInterfacesAfterComponentInitialization(searchInterfaces: HTMLElement[]): Promise[] {\r\n return searchInterfaces\r\n .map((searchInterface) => $$(searchInterface))\r\n .map((searchInterface) => this.waitForSearchInterfaceInitialization(searchInterface));\r\n }\r\n\r\n private waitForSearchInterfaceInitialization(searchInterface: Dom): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (searchInterface.hasClass('coveo-after-initialization')) {\r\n return resolve();\r\n }\r\n\r\n searchInterface.on(InitializationEvents.afterComponentsInitialization, () => resolve());\r\n });\r\n }\r\n}\r\n","import { initContextOnElement } from '../Initialization';\r\nimport {\r\n ISearchInterfaceComponentInitializer,\r\n getInitializerInstance,\r\n} from '../../resolvers/components/SearchInterfaceComponentInitializer';\r\nimport { ISitecoreExperienceEditor, getExperienceEditorInstance } from './SitecoreExperienceEditor';\r\n\r\nimport { SearchInterface, init } from 'coveo-search-ui';\r\n\r\nexport class SearchInterfaceInitializer {\r\n constructor(\r\n private experienceEditor: ISitecoreExperienceEditor = getExperienceEditorInstance(),\r\n private searchInterfaceComponentInitializer: ISearchInterfaceComponentInitializer = getInitializerInstance()\r\n ) {}\r\n\r\n public initSearchInterface(searchInterface: HTMLElement): Promise<{ elem: HTMLElement }> {\r\n if (!this.experienceEditor.isInBackgroundRendering()) {\r\n this.experienceEditor.registerShowDebugInformationCallback();\r\n initContextOnElement(searchInterface);\r\n const searchInterfacePromise = init(searchInterface);\r\n searchInterfacePromise.then(() => {\r\n const event = document.createEvent('CustomEvent');\r\n event.initEvent('SearchInterfaceInitialized', false, true);\r\n searchInterface.dispatchEvent(event);\r\n });\r\n return searchInterfacePromise;\r\n }\r\n }\r\n\r\n public initializeExperienceEditorHooksForSearchInterface(searchInterface: HTMLElement): void {\r\n this.experienceEditor.registerOnLoadRenderingFromUrl((callbackData) => {\r\n const component = this.experienceEditor.getComponentFromLoadRenderingFromUrlCallbackData(callbackData);\r\n\r\n // Since multiple search interfaces can register event handlers, this ensures that the component is initializing for the correct search interface.\r\n if (searchInterface.contains(component)) {\r\n const searchInterfaceComponent = Coveo.get(searchInterface, Coveo.SearchInterface) as SearchInterface;\r\n this.searchInterfaceComponentInitializer.loadComponentsForSearchInterface(\r\n searchInterfaceComponent,\r\n component\r\n );\r\n }\r\n });\r\n\r\n this.experienceEditor.registerOnAfterPersonalizationChanged((element) => {\r\n if (searchInterface.contains(element)) {\r\n const searchInterfaceComponent = Coveo.get(searchInterface, Coveo.SearchInterface) as SearchInterface;\r\n this.searchInterfaceComponentInitializer.loadComponentsForSearchInterface(\r\n searchInterfaceComponent,\r\n element\r\n );\r\n }\r\n });\r\n\r\n this.experienceEditor.registerBeforeUnloadingChrome((element) => {\r\n if (searchInterface.contains(element)) {\r\n const searchInterfaceComponent = Coveo.get(searchInterface, Coveo.SearchInterface) as SearchInterface;\r\n this.searchInterfaceComponentInitializer.tryUnloadComponentsForSearchInterface(\r\n searchInterfaceComponent,\r\n element\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","export class HostedSearchPageInitializer {\n private searchPageElement: HTMLElement;\n private searchEndpointUri: string;\n private analyticsEndpointUri: string;\n private organizationId: string;\n private searchHub: string;\n private isInExperienceEditor: boolean;\n\n private UNABLE_TO_RETRIEVE_ACCESS_TOKEN = 'Unable to retrieve access token.';\n\n public initializeSearchPage(element: HTMLElement): void {\n this.searchPageElement = element;\n this.searchEndpointUri = element.dataset.searchEndpointUri;\n this.analyticsEndpointUri = element.dataset.analyticsEndpointUri;\n this.organizationId = element.dataset.organizationId;\n this.searchHub = element.dataset.searchHub;\n this.isInExperienceEditor = element.dataset.isInExperienceEditor === 'true';\n\n this.getAccessToken = this.getAccessToken.bind(this);\n\n this.getAccessToken()\n .then((accessToken) => {\n this.initializeCoveo(element, accessToken);\n })\n .catch((err) => {\n if (this.isInExperienceEditor) {\n this.displayErrorMessageInExperienceEditor(err.message);\n }\n });\n }\n\n private async getAccessToken() {\n return this.fetchAccessToken()\n .then((response) => {\n if (response.ok) {\n return response.json();\n }\n\n throw Error(this.UNABLE_TO_RETRIEVE_ACCESS_TOKEN);\n })\n .then((data) => data.token)\n .catch((err) => {\n if (this.isInExperienceEditor) {\n this.displayErrorMessageInExperienceEditor(err.message);\n }\n\n return '';\n });\n }\n\n private initializeCoveo(element: HTMLElement, accessToken: string): void {\n const searchPageRoot: HTMLElement = element.querySelector('.CoveoSearchInterface');\n\n if (searchPageRoot && typeof Coveo !== 'undefined') {\n Coveo.SearchEndpoint.endpoints['default'] = new Coveo.SearchEndpoint({\n restUri: `${this.searchEndpointUri}/rest/search/`,\n accessToken: accessToken,\n queryStringArguments: {\n organizationId: this.organizationId,\n },\n renewAccessToken: this.getAccessToken,\n });\n\n Coveo.Analytics.options.searchHub['defaultValue'] = this.searchHub;\n Coveo.Analytics.options.organization['defaultValue'] = this.organizationId;\n Coveo.Analytics.options.endpoint['defaultValue'] = `${this.analyticsEndpointUri}/rest/ua/`;\n\n Coveo.init(searchPageRoot);\n }\n }\n\n private async fetchAccessToken() {\n return await fetch(`/coveo/rest/token?t=${Date.now()}`);\n }\n\n private displayErrorMessageInExperienceEditor(message: string): void {\n const errorMessageElement = `\n ${message}\n `;\n\n this.searchPageElement.insertAdjacentHTML('afterbegin', errorMessageElement);\n }\n}\n","import { IStringMap, IEndpointCallParameters, EndpointCaller, ISuccessResponse } from 'coveo-search-ui';\r\n\r\nexport class EndpointCallerWrapper implements IEndpointCaller {\r\n private endpointCaller: EndpointCaller;\r\n\r\n constructor(endpointCaller?: EndpointCaller) {\r\n this.endpointCaller = endpointCaller || new EndpointCaller();\r\n }\r\n\r\n public sendPost(url: string, postData: IStringMap): Promise> {\r\n const callOptions: IEndpointCallParameters = {\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 return this.endpointCaller.call(callOptions);\r\n }\r\n}\r\n\r\nexport interface IEndpointCaller {\r\n sendPost(url: string, postData: IStringMap): Promise>;\r\n}\r\n","import { AndNodeParser } from './parsers/AndNodeParser';\r\nimport { FalseNodeParser } from './parsers/FalseNodeParser';\r\nimport { FieldNodeParser } from './parsers/FieldNodeParser';\r\nimport { NotNodeParser } from './parsers/NotNodeParser';\r\nimport { OrNodeParser } from './parsers/OrNodeParser';\r\nimport { TrueNodeParser } from './parsers/TrueNodeParser';\r\nimport { IQueryNodeTreeParser, QueryNodeTreeParser } from './QueryNodeTreeParser';\r\nimport { Context } from '../../../base/Context';\r\n\r\nimport { Logger } from 'coveo-search-ui';\r\n\r\nexport class QueryNodeTreeParserFactory implements IQueryNodeTreeParserFactory {\r\n createParser(logger: Logger): IQueryNodeTreeParser {\r\n const parser: IQueryNodeTreeParser = new QueryNodeTreeParser(logger);\r\n\r\n parser.registerParser(new AndNodeParser(parser));\r\n parser.registerParser(new FalseNodeParser());\r\n parser.registerParser(new FieldNodeParser(Context.fields));\r\n parser.registerParser(new NotNodeParser(parser));\r\n parser.registerParser(new OrNodeParser(parser));\r\n parser.registerParser(new TrueNodeParser());\r\n\r\n return parser;\r\n }\r\n}\r\n\r\nexport interface IQueryNodeTreeParserFactory {\r\n createParser(logger: Logger): IQueryNodeTreeParser;\r\n}\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { IAndNode } from '../QueryNodeTypes';\r\nexport class AndNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'and';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: IAndNode): string {\r\n return `(${this.nodeParser.parse(node.left)} ${this.nodeParser.parse(node.right)})`;\r\n }\r\n}\r\n","import { IFalseNode } from '../QueryNodeTypes';\r\nimport { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nexport class FalseNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'false';\r\n\r\n parse(node: IFalseNode): string {\r\n return `(NOT @uri)`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nimport { ICoveoFieldHandler } from '../../../../handlers/CoveoFieldsHandler';\r\nimport { IFieldNode } from '../QueryNodeTypes';\r\nimport { QueryUtils } from 'coveo-search-ui';\r\n\r\nimport * as dateformat from 'dateformat';\r\n\r\nexport class FieldNodeParser implements IRegisterableQueryNodeParser {\r\n private indexDateFormat = 'yyyy/mm/dd@HH:MM:ss';\r\n type: string = 'field';\r\n\r\n constructor(private fieldHandler: ICoveoFieldHandler) {}\r\n\r\n parse(node: IFieldNode): string {\r\n if (node.fieldValueType.name === 'string') {\r\n return this.parseString(\r\n this.fieldHandler.toCoveo(`@${node.fieldName}`),\r\n node.operator.name,\r\n node.fieldValues\r\n );\r\n } else {\r\n return QueryUtils.buildFieldExpression(\r\n this.fieldHandler.toCoveo(`@${node.fieldName}`),\r\n node.operator.name,\r\n this.parseFieldValuesFromType(node.fieldValueType.name, node.fieldValues)\r\n );\r\n }\r\n }\r\n\r\n parseFieldValuesFromType(type: string, values: any[]): string[] {\r\n switch (type) {\r\n case 'boolean':\r\n return values.map((value) => this.parseBoolean(value));\r\n case 'date':\r\n return values.map((value) => this.parseDate(value));\r\n case 'number':\r\n return values.map((value) => this.parseNumber(value));\r\n default:\r\n return values;\r\n }\r\n }\r\n\r\n parseBoolean(value: any): string {\r\n return !!value ? '1' : '0';\r\n }\r\n\r\n parseDate(value: any): string {\r\n const date = new Date(parseInt(value.replace('/Date(', '')));\r\n return dateformat(date, this.indexDateFormat);\r\n }\r\n\r\n parseNumber(value: any): string {\r\n return value.toString();\r\n }\r\n\r\n parseString(fieldName: any, operator: string, values: string[]): string {\r\n if (values.some((value) => value !== '')) {\r\n return QueryUtils.buildFieldExpression(\r\n `${fieldName}`,\r\n operator,\r\n values.filter((value) => value !== '')\r\n );\r\n } else {\r\n return this.parseEmptyField(fieldName, operator);\r\n }\r\n }\r\n\r\n parseEmptyField(fieldName: string, operator: string): string {\r\n switch (operator) {\r\n case '=':\r\n case '==':\r\n return fieldName;\r\n case '!=':\r\n case '<>':\r\n return `(NOT ${fieldName})`;\r\n default:\r\n throw `Operator \"${operator}\" for field \"${fieldName}\" requires a non-empty value.`;\r\n }\r\n }\r\n}\r\n","/*\r\n * Date Format 1.2.3\r\n * (c) 2007-2009 Steven Levithan \r\n * MIT license\r\n *\r\n * Includes enhancements by Scott Trenda \r\n * and Kris Kowal \r\n *\r\n * Accepts a date, a mask, or a date and a mask.\r\n * Returns a formatted version of the given date.\r\n * The date defaults to the current date/time.\r\n * The mask defaults to dateFormat.masks.default.\r\n */\r\n\r\n(function(global) {\r\n 'use strict';\r\n\r\n var dateFormat = (function() {\r\n var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|[LloSZWN]|'[^']*'|'[^']*'/g;\r\n var timezone = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;\r\n var timezoneClip = /[^-+\\dA-Z]/g;\r\n \r\n // Regexes and supporting functions are cached through closure\r\n return function (date, mask, utc, gmt) {\r\n \r\n // You can't provide utc if you skip other args (use the 'UTC:' mask prefix)\r\n if (arguments.length === 1 && kindOf(date) === 'string' && !/\\d/.test(date)) {\r\n mask = date;\r\n date = undefined;\r\n }\r\n \r\n date = date || new Date;\r\n \r\n if(!(date instanceof Date)) {\r\n date = new Date(date);\r\n }\r\n \r\n if (isNaN(date)) {\r\n throw TypeError('Invalid date');\r\n }\r\n \r\n mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']);\r\n \r\n // Allow setting the utc/gmt argument via the mask\r\n var maskSlice = mask.slice(0, 4);\r\n if (maskSlice === 'UTC:' || maskSlice === 'GMT:') {\r\n mask = mask.slice(4);\r\n utc = true;\r\n if (maskSlice === 'GMT:') {\r\n gmt = true;\r\n }\r\n }\r\n \r\n var _ = utc ? 'getUTC' : 'get';\r\n var d = date[_ + 'Date']();\r\n var D = date[_ + 'Day']();\r\n var m = date[_ + 'Month']();\r\n var y = date[_ + 'FullYear']();\r\n var H = date[_ + 'Hours']();\r\n var M = date[_ + 'Minutes']();\r\n var s = date[_ + 'Seconds']();\r\n var L = date[_ + 'Milliseconds']();\r\n var o = utc ? 0 : date.getTimezoneOffset();\r\n var W = getWeek(date);\r\n var N = getDayOfWeek(date);\r\n var flags = {\r\n d: d,\r\n dd: pad(d),\r\n ddd: dateFormat.i18n.dayNames[D],\r\n dddd: dateFormat.i18n.dayNames[D + 7],\r\n m: m + 1,\r\n mm: pad(m + 1),\r\n mmm: dateFormat.i18n.monthNames[m],\r\n mmmm: dateFormat.i18n.monthNames[m + 12],\r\n yy: String(y).slice(2),\r\n yyyy: y,\r\n h: H % 12 || 12,\r\n hh: pad(H % 12 || 12),\r\n H: H,\r\n HH: pad(H),\r\n M: M,\r\n MM: pad(M),\r\n s: s,\r\n ss: pad(s),\r\n l: pad(L, 3),\r\n L: pad(Math.round(L / 10)),\r\n t: H < 12 ? 'a' : 'p',\r\n tt: H < 12 ? 'am' : 'pm',\r\n T: H < 12 ? 'A' : 'P',\r\n TT: H < 12 ? 'AM' : 'PM',\r\n Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''),\r\n o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),\r\n S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10],\r\n W: W,\r\n N: N\r\n };\r\n \r\n return mask.replace(token, function (match) {\r\n if (match in flags) {\r\n return flags[match];\r\n }\r\n return match.slice(1, match.length - 1);\r\n });\r\n };\r\n })();\r\n\r\n dateFormat.masks = {\r\n 'default': 'ddd mmm dd yyyy HH:MM:ss',\r\n 'shortDate': 'm/d/yy',\r\n 'mediumDate': 'mmm d, yyyy',\r\n 'longDate': 'mmmm d, yyyy',\r\n 'fullDate': 'dddd, mmmm d, yyyy',\r\n 'shortTime': 'h:MM TT',\r\n 'mediumTime': 'h:MM:ss TT',\r\n 'longTime': 'h:MM:ss TT Z',\r\n 'isoDate': 'yyyy-mm-dd',\r\n 'isoTime': 'HH:MM:ss',\r\n 'isoDateTime': 'yyyy-mm-dd\\'T\\'HH:MM:sso',\r\n 'isoUtcDateTime': 'UTC:yyyy-mm-dd\\'T\\'HH:MM:ss\\'Z\\'',\r\n 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z'\r\n };\r\n\r\n // Internationalization strings\r\n dateFormat.i18n = {\r\n dayNames: [\r\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',\r\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n ],\r\n monthNames: [\r\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\r\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'\r\n ]\r\n };\r\n\r\nfunction pad(val, len) {\r\n val = String(val);\r\n len = len || 2;\r\n while (val.length < len) {\r\n val = '0' + val;\r\n }\r\n return val;\r\n}\r\n\r\n/**\r\n * Get the ISO 8601 week number\r\n * Based on comments from\r\n * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html\r\n *\r\n * @param {Object} `date`\r\n * @return {Number}\r\n */\r\nfunction getWeek(date) {\r\n // Remove time components of date\r\n var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n\r\n // Change date to Thursday same week\r\n targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3);\r\n\r\n // Take January 4th as it is always in week 1 (see ISO 8601)\r\n var firstThursday = new Date(targetThursday.getFullYear(), 0, 4);\r\n\r\n // Change date to Thursday same week\r\n firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3);\r\n\r\n // Check if daylight-saving-time-switch occurred and correct for it\r\n var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset();\r\n targetThursday.setHours(targetThursday.getHours() - ds);\r\n\r\n // Number of weeks between target Thursday and first Thursday\r\n var weekDiff = (targetThursday - firstThursday) / (86400000*7);\r\n return 1 + Math.floor(weekDiff);\r\n}\r\n\r\n/**\r\n * Get ISO-8601 numeric representation of the day of the week\r\n * 1 (for Monday) through 7 (for Sunday)\r\n * \r\n * @param {Object} `date`\r\n * @return {Number}\r\n */\r\nfunction getDayOfWeek(date) {\r\n var dow = date.getDay();\r\n if(dow === 0) {\r\n dow = 7;\r\n }\r\n return dow;\r\n}\r\n\r\n/**\r\n * kind-of shortcut\r\n * @param {*} val\r\n * @return {String}\r\n */\r\nfunction kindOf(val) {\r\n if (val === null) {\r\n return 'null';\r\n }\r\n\r\n if (val === undefined) {\r\n return 'undefined';\r\n }\r\n\r\n if (typeof val !== 'object') {\r\n return typeof val;\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n return 'array';\r\n }\r\n\r\n return {}.toString.call(val)\r\n .slice(8, -1).toLowerCase();\r\n};\r\n\r\n\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () {\r\n return dateFormat;\r\n });\r\n } else if (typeof exports === 'object') {\r\n module.exports = dateFormat;\r\n } else {\r\n global.dateFormat = dateFormat;\r\n }\r\n})(this);\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { INotNode } from '../QueryNodeTypes';\r\n\r\nexport class NotNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'not';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: INotNode): string {\r\n return `NOT ${this.nodeParser.parse(node.operand)}`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { IOrNode } from '../QueryNodeTypes';\r\n\r\nexport class OrNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'or';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: IOrNode): string {\r\n return `(${this.nodeParser.parse(node.left)} OR ${this.nodeParser.parse(node.right)})`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nimport { ITrueNode } from '../QueryNodeTypes';\r\n\r\nexport class TrueNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'true';\r\n\r\n parse(node: ITrueNode): string {\r\n return '@uri';\r\n }\r\n}\r\n","import { IQueryNode } from './QueryNodeTypes';\r\nimport { IQueryNodeParser, IRegisterableQueryNodeParser } from './QueryNodeParser';\r\nimport { Logger } from 'coveo-search-ui';\r\n\r\nexport class QueryNodeTreeParser implements IQueryNodeTreeParser {\r\n private parsers: { [key: string]: (node: IQueryNode) => string } = {};\r\n\r\n constructor(private logger: Logger) {}\r\n\r\n registerParser(queryNodeParser: IRegisterableQueryNodeParser): void {\r\n this.parsers[queryNodeParser.type] = (node: IQueryNode) => queryNodeParser.parse(node as T);\r\n }\r\n\r\n parse(node: IQueryNode): string {\r\n try {\r\n return this.parsers[node.type](node);\r\n } catch (exception) {\r\n this.logger.error('Error when parsing a query node:', node, exception);\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport interface IQueryNodeTreeParser extends IQueryNodeParser {\r\n registerParser(queryNodeParser: IRegisterableQueryNodeParser): void;\r\n}\r\n","import { IQueryNode } from './queryNodes/QueryNodeTypes';\r\nimport { IQueryNodeParser } from './queryNodes/QueryNodeParser';\r\nimport { QueryNodeTreeParserFactory } from './queryNodes/QueryNodeTreeParserFactory';\r\nimport { ICoveoFieldHandler } from '../../handlers/CoveoFieldsHandler';\r\nimport { Context } from '../../base/Context';\r\n\r\nimport { QueryBuilder, IRankingFunction, Logger } from 'coveo-search-ui';\r\n\r\nexport interface IQueryRankingNode {\r\n rankingExpressions: IRankingExpressionNode[];\r\n rankingFunctions: IRankingFunction[];\r\n textualRankingExpressions: ITextualRankingExpression[];\r\n}\r\n\r\nexport interface IRankingExpressionNode {\r\n expression: IQueryNode;\r\n modifier: number;\r\n}\r\n\r\nexport interface ITextualRankingExpression {\r\n expression: string;\r\n}\r\n\r\n/*\r\n Matches \"@[x]\"\" and return x as matching group.\r\n Examples:\r\n * @[blublu] gives \"blublu\".\r\n * @[[blublu]] gives \"[blublu]\"\r\n * @[blublu]] gives \"blublu]\"\r\n*/\r\nconst rankingExpressionFieldsRegex: RegExp = /@\\[(.*?\\]*)\\]/g.compile();\r\n\r\nexport class QueryRankingNodeExpressionResolver implements IQueryRankingNodeExpressionResolver {\r\n constructor(private parser: IQueryNodeParser, private fieldsHandler: ICoveoFieldHandler) {}\r\n\r\n parseQueryRankingNode(queryRankingNode: IQueryRankingNode): QueryBuilder {\r\n const queryBuilder = new QueryBuilder();\r\n queryRankingNode.rankingExpressions.map((ranking) => {\r\n const parsedExpression = this.parser.parse(ranking.expression);\r\n if (parsedExpression !== '') {\r\n queryBuilder.advancedExpression.add(\r\n `$qre(expression:'${parsedExpression}', modifier:${ranking.modifier})`\r\n );\r\n }\r\n });\r\n queryRankingNode.rankingFunctions.forEach((rankingFunction) => {\r\n rankingFunction.expression = this.translateRankingExpressionFieldNames(rankingFunction.expression);\r\n queryBuilder.rankingFunctions.push(rankingFunction);\r\n });\r\n queryRankingNode.textualRankingExpressions\r\n .filter((rankingExpression) => rankingExpression.expression !== '')\r\n .forEach((rankingExpression) => {\r\n queryBuilder.advancedExpression.add(rankingExpression.expression);\r\n });\r\n return queryBuilder;\r\n }\r\n\r\n private translateRankingExpressionFieldNames(expression: string): string {\r\n expression.replace(rankingExpressionFieldsRegex, (matchingExpression, matchingGroup) => {\r\n return this.fieldsHandler.toCoveo(matchingGroup);\r\n });\r\n return expression;\r\n }\r\n}\r\n\r\nexport interface IQueryRankingNodeExpressionResolver {\r\n parseQueryRankingNode(queryRankingNode: IQueryRankingNode): QueryBuilder;\r\n}\r\n\r\nexport class QueryRankingNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryRankingNodeExpressionResolver {\r\n const parserFactory = new QueryNodeTreeParserFactory();\r\n const parser = parserFactory.createParser(logger);\r\n return new QueryRankingNodeExpressionResolver(parser, Context.fields);\r\n }\r\n}\r\n","import { IQueryNode } from './queryNodes/QueryNodeTypes';\r\nimport { IQueryNodeParser } from './queryNodes/QueryNodeParser';\r\nimport { QueryNodeTreeParserFactory } from './queryNodes/QueryNodeTreeParserFactory';\r\n\r\nimport { QueryBuilder, Logger, Assert } from 'coveo-search-ui';\r\n\r\nexport interface IQueryFilterNode {\r\n advanced: IQueryNode;\r\n}\r\n\r\nexport class QueryFilterNodeExpressionResolver implements IQueryFilterNodeExpressionResolver {\r\n constructor(private parser: IQueryNodeParser) {}\r\n\r\n parseQueryFilterNode(queryFilterNode: IQueryFilterNode): QueryBuilder {\r\n Assert.isNotNull(queryFilterNode);\r\n const queryBuilder = new QueryBuilder();\r\n queryBuilder.advancedExpression.add(this.parser.parse(queryFilterNode.advanced));\r\n return queryBuilder;\r\n }\r\n}\r\n\r\nexport interface IQueryFilterNodeExpressionResolver {\r\n parseQueryFilterNode(queryFilterNode: IQueryFilterNode): QueryBuilder;\r\n}\r\n\r\nexport interface IQueryFilterNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryFilterNodeExpressionResolver;\r\n}\r\n\r\nexport class QueryFilterNodeExpressionResolverFactory implements IQueryFilterNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryFilterNodeExpressionResolver {\r\n const parserFactory = new QueryNodeTreeParserFactory();\r\n const parser = parserFactory.createParser(logger);\r\n return new QueryFilterNodeExpressionResolver(parser);\r\n }\r\n}\r\n","export { CoveoForSitecoreAnalytics } from './ui/analytics/CoveoForSitecoreAnalytics';\r\nexport { CoveoForSitecoreConfigureSearchHub } from './ui/analytics/CoveoForSitecoreConfigureSearchHub';\r\nexport { SendAnalyticsToSitecore } from './ui/analytics/SendAnalyticsToSitecore';\r\nexport { ValidateAnalyticsIncluded } from './ui/analytics/ValidateAnalyticsIncluded';\r\n\r\nexport { CoveoForSitecoreBindWithUserContext } from './ui/context/CoveoForSitecoreBindWithUserContext';\r\nexport { CoveoForSitecoreContext } from './ui/context/CoveoForSitecoreContext';\r\n\r\nexport { CoveoForSitecoreExpressions } from './ui/scopes/CoveoForSitecoreExpressions';\r\nexport { CoveoForSitecoreSyntax } from './ui/scopes/CoveoForSitecoreSyntax';\r\nexport { CoveoForSitecoreRankingExpression } from './ui/scopes/CoveoForSitecoreRankingExpression';\r\nexport { CoveoForSitecoreExternalContent } from './ui/scopes/CoveoForSitecoreExternalContent';\r\nexport { CoveoForSitecoreFilterExpression } from './ui/scopes/CoveoForSitecoreFilterExpression';\r\nexport { CoveoForSitecoreLocalExpression } from './ui/scopes/CoveoForSitecoreLocalExpression';\r\n\r\nexport { GoogleApiPositionProvider } from './ui/distance/GoogleApiPositionProvider';\r\nexport { NavigatorPositionProvider } from './ui/distance/NavigatorPositionProvider';\r\nexport { StaticPositionProvider } from './ui/distance/StaticPositionProvider';\r\n\r\nexport * from './EventsModules';\r\nexport * from './BaseModules';\r\n\r\nexport * from './base/Initialization';\r\n"],"sourceRoot":""}