{"version":3,"sources":["./src/utils/ResultListUtils.ts","./src/ui/ResultList/ResultListRenderer.ts","./src/ui/Facet/FacetUtils.ts","./src/ui/Templates/TableTemplate.ts","./src/ui/Templates/DefaultRecommendationTemplate.ts","./src/ui/Templates/TemplateToHtml.ts","./src/ui/Templates/CoreHelpers.ts","./sass/_Result.scss","./sass/_ResultFrame.scss","./sass/_ResultList.scss","./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","./src/ui/ResultList/ResultContainer.ts","./src/ui/ResultList/ResultListCardRenderer.ts","./src/ui/ResultList/ResultListTableRenderer.ts","./src/ui/ResultList/ResultList.ts"],"names":[],"mappings":"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","file":"ResultList__7f0661f464388d8314e9.js","sourcesContent":["import { Component } from '../ui/Base/Component';\nimport { ResultList } from '../ui/ResultList/ResultList';\nimport { $$ } from './Dom';\nimport { find } from 'underscore';\nimport { Logger } from '../misc/Logger';\n\nexport class ResultListUtils {\n public static hideIfInfiniteScrollEnabled(cmp: Component) {\n const infiniteScrollEnabled = ResultListUtils.isInfiniteScrollEnabled(cmp.searchInterface.element);\n\n if (infiniteScrollEnabled) {\n cmp.disable();\n $$(cmp.element).hide();\n ResultListUtils.warnIfComponentNotNeeded(cmp);\n } else {\n cmp.enable();\n $$(cmp.element).unhide();\n }\n }\n\n public static isInfiniteScrollEnabled(root: HTMLElement) {\n const resultList = ResultListUtils.getMainResultList(root);\n return resultList ? !!resultList.options.enableInfiniteScroll : false;\n }\n\n public static scrollToTop(root: HTMLElement) {\n const resultList = ResultListUtils.getMainResultList(root);\n if (!resultList) {\n new Logger(this).warn('No active ResultList, scrolling to the top of the Window');\n return window.scrollTo(0, 0);\n }\n\n const searchInterfacePosition = resultList.searchInterface.element.getBoundingClientRect().top;\n if (searchInterfacePosition > 0) {\n return;\n }\n\n window.scrollTo(0, window.pageYOffset + searchInterfacePosition);\n }\n\n private static getMainResultList(root: HTMLElement) {\n const resultLists = ResultListUtils.getResultLists(root);\n return find(resultLists, resultList => {\n const isRecInterface = resultList.searchInterface.element.classList.contains('CoveoRecommendation');\n return !resultList.disabled && !isRecInterface;\n });\n }\n\n private static getResultLists(root: HTMLElement) {\n return $$(root)\n .findAll(`.${ResultListUtils.cssClass()}`)\n .map(el => Component.get(el, ResultList));\n }\n\n private static cssClass() {\n return Component.computeCssClassName(ResultList);\n }\n\n private static warnIfComponentNotNeeded(cmp: Component) {\n const root = cmp.searchInterface.root;\n const allListsUseInfiniteScroll = ResultListUtils.allResultListsUseInfiniteScroll(root);\n\n allListsUseInfiniteScroll && ResultListUtils.notNeededComponentWarning(cmp);\n }\n\n private static allResultListsUseInfiniteScroll(root: HTMLElement) {\n const listsWithInfiniteScrollDisabled = ResultListUtils.getResultLists(root).filter(\n resultList => !resultList.options.enableInfiniteScroll\n );\n\n return listsWithInfiniteScrollDisabled.length === 0;\n }\n\n private static notNeededComponentWarning(cmp: Component) {\n const cmpCssClass = Component.computeCssClassNameForType(cmp.type);\n const message = `The ${cmpCssClass} component is not needed because all ${ResultListUtils.cssClass()} components have enableInfiniteScroll set to 'true'.\n For the best performance, remove the ${cmpCssClass} component from your search page.`;\n\n new Logger(cmp).warn(message);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ResultListUtils.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../Base/Component';\nimport { IResultListOptions } from './ResultListOptions';\nimport _ = require('underscore');\n\nexport class ResultListRenderer {\n constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {}\n\n renderResults(\n resultElements: HTMLElement[],\n append = false,\n resultDisplayedCallback: (result: IQueryResult, resultElem: HTMLElement) => any\n ) {\n return Promise.all([this.getStartFragment(resultElements, append), this.getEndFragment(resultElements, append)]).then(\n ([startFrag, endFrag]) => {\n const resultsFragment = document.createDocumentFragment();\n if (startFrag) {\n resultsFragment.appendChild(startFrag);\n }\n _.each(resultElements, resultElement => {\n resultsFragment.appendChild(resultElement);\n resultDisplayedCallback(Component.getResult(resultElement), resultElement);\n });\n if (endFrag) {\n resultsFragment.appendChild(endFrag);\n }\n this.resultListOptions.resultsContainer.appendChild(resultsFragment);\n }\n );\n }\n\n protected getStartFragment(resultElements: HTMLElement[], append: boolean): Promise {\n return Promise.resolve(document.createDocumentFragment());\n }\n\n protected getEndFragment(resultElements: HTMLElement[], append: boolean): Promise {\n return Promise.resolve(document.createDocumentFragment());\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListRenderer.ts","/// \nimport { StringUtils } from '../../utils/StringUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { FileTypes } from '../Misc/FileTypes';\nimport { DateUtils } from '../../utils/DateUtils';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport FacetModuleDefinition = require('./Facet');\nimport { l } from '../../strings/Strings';\n\nexport class FacetUtils {\n static getRegexToUseForFacetSearch(value: string, ignoreAccent: boolean) {\n return new RegExp(StringUtils.stringToRegex(value, ignoreAccent), 'i');\n }\n\n static getDisplayValueFromValueCaption(value: string, field: string, valueCaption: Record) {\n const returnValue = this.tryToGetTranslatedCaption(field, value, false);\n return valueCaption[value] || returnValue;\n }\n\n static getValuesToUseForSearchInFacet(original: string, facet: FacetModuleDefinition.Facet): string[] {\n let ret = [original];\n let regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents);\n if (facet.options.valueCaption) {\n _.chain(facet.options.valueCaption)\n .pairs()\n .filter(pair => {\n return regex.test(pair[1]);\n })\n .each(match => {\n ret.push(match[0]);\n });\n if (\n QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') ||\n QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')\n ) {\n _.each(FileTypes.getFileTypeCaptions(), (value: string, key: string) => {\n if (!(key in facet.options.valueCaption) && regex.test(value)) {\n ret.push(key);\n }\n });\n }\n } else if (\n QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') ||\n QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')\n ) {\n _.each(\n _.filter(_.pairs(FileTypes.getFileTypeCaptions()), pair => {\n return regex.test(pair[1]);\n }),\n match => {\n ret.push(match[0]);\n }\n );\n } else if (QueryUtils.isStratusAgnosticField(facet.options.field, '@month')) {\n _.each(_.range(1, 13), month => {\n if (regex.test(DateUtils.monthToString(month - 1))) {\n ret.push(('0' + month.toString()).substr(-2));\n }\n });\n }\n return ret;\n }\n\n static buildFacetSearchPattern(values: string[]) {\n values = _.map(values, value => {\n return Utils.escapeRegexCharacter(value);\n });\n values[0] = '.*' + values[0] + '.*';\n return values.join('|');\n }\n\n static needAnotherFacetSearch(\n currentSearchLength: number,\n newSearchLength: number,\n oldSearchLength: number,\n desiredSearchLength: number\n ) {\n // Something was removed (currentSearch < newSearch)\n // && we might want to display more facet search result(currentSearch < desiredSearch)\n // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength)\n return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength;\n }\n\n static addNoStateCssClassToFacetValues(facet: FacetModuleDefinition.Facet, container: HTMLElement) {\n // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet\n if (facet.values.getSelected().length != 0) {\n let noStates = $$(container).findAll('li:not(.coveo-selected)');\n _.each(noStates, noState => {\n $$(noState).addClass('coveo-no-state');\n });\n }\n }\n\n static tryToGetTranslatedCaption(field: string, value: string, fallbackOnLocalization = true) {\n let found: string;\n\n if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n found = FileTypes.getFileType(value, fallbackOnLocalization).caption;\n } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@objecttype')) {\n found = FileTypes.getObjectType(value, fallbackOnLocalization).caption;\n } else if (FacetUtils.isMonthFieldValue(field, value)) {\n const month = parseInt(value, 10);\n found = DateUtils.monthToString(month - 1);\n } else if (fallbackOnLocalization) {\n found = l(value);\n }\n return found != undefined && Utils.isNonEmptyString(found) ? found : value;\n }\n\n static isMonthFieldValue(field: string, value: string) {\n if (!QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) {\n return false;\n }\n\n const asInt = parseInt(value, 10);\n\n if (isNaN(asInt)) {\n return false;\n }\n\n if (asInt < 1 || asInt > 12) {\n return false;\n }\n\n return true;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetUtils.ts","import { Template, TemplateRole } from './Template';\nimport { TemplateList } from './TemplateList';\nimport _ = require('underscore');\n\nexport class TableTemplate extends TemplateList {\n instantiateRoleToString(role: TemplateRole) {\n const roledTemplate = _.find(this.templates, t => t.role === role);\n if (roledTemplate) {\n return roledTemplate.instantiateToString(undefined, {});\n } else {\n return this.defaultRoledTemplates[role];\n }\n }\n instantiateRoleToElement(role: TemplateRole) {\n const roledTemplate = _.find(this.templates, t => t.role === role);\n if (roledTemplate) {\n return roledTemplate.instantiateToElement(undefined, {});\n } else {\n const tmpl = new Template(() => this.defaultRoledTemplates[role]);\n tmpl.layout = 'table';\n return tmpl.instantiateToElement(undefined);\n }\n }\n\n private defaultTemplate = `\n \n `;\n\n private defaultRoledTemplates = {\n 'table-header': `Link\n Excerpt\n Date`,\n 'table-footer': `Link\n Excerpt\n Date`\n };\n\n protected getFallbackTemplate(): Template {\n return new Template(() => this.defaultTemplate);\n }\n\n hasTemplateWithRole(role: TemplateRole) {\n return _.find(this.templates, t => t.role === role);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TableTemplate.ts","import { Template } from './Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultRecommendationTemplate extends Template {\n instantiateToString(object?: IQueryResult): string {\n var template = `
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
`;\n return template;\n }\n\n instantiateToElement(object?: IQueryResult): Promise {\n return new Promise((resolve, reject) => {\n var div = document.createElement('div');\n div.innerHTML = this.instantiateToString(object);\n resolve(div);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/DefaultRecommendationTemplate.ts","import { IQueryResults } from '../../rest/QueryResults';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert, QueryUtils, Component, Initialization, QueryStateModel } from '../../Core';\nimport { IInitResult } from '../Base/Initialization';\nimport { Template } from './Template';\nimport { SearchInterface } from '../../ui/SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { pluck, sortBy, map } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\n\nexport interface ITemplateToHtml {\n resultTemplate: Template;\n queryStateModel: QueryStateModel;\n searchInterface: SearchInterface;\n}\n\nexport class TemplateToHtml {\n constructor(public args: ITemplateToHtml) {}\n\n public async buildResults(\n results: IQueryResults,\n layout: RendererValidLayout,\n currentlyDisplayedResults: IQueryResult[]\n ): Promise {\n const res: { elem: HTMLElement; idx: number }[] = [];\n const resultsPromises = map(results.results, (result: IQueryResult, index: number) => {\n return this.buildResult(result, layout, currentlyDisplayedResults).then((resultElement: HTMLElement) => {\n if (resultElement != null) {\n res.push({ elem: resultElement, idx: index });\n }\n ResultList.resultCurrentlyBeingRendered = null;\n return resultElement;\n });\n });\n\n // We need to sort by the original index order, because in lazy loading mode, it's possible that results does not gets rendered\n // in the correct order returned by the index, depending on the time it takes to load all the results component for a given result template\n return Promise.all(resultsPromises).then(() => {\n return pluck(sortBy(res, 'idx'), 'elem');\n });\n }\n\n public async buildResult(\n result: IQueryResult,\n layout: RendererValidLayout,\n currentlyDisplayedResults: IQueryResult[]\n ): Promise {\n Assert.exists(result);\n QueryUtils.setStateObjectOnQueryResult(this.args.queryStateModel.get(), result);\n QueryUtils.setSearchInterfaceObjectOnQueryResult(this.args.searchInterface, result);\n ResultList.resultCurrentlyBeingRendered = result;\n const resultElement = await this.createHtmlElement(result, layout);\n\n if (resultElement != null) {\n Component.bindResultToElement(resultElement, result);\n }\n currentlyDisplayedResults.push(result);\n\n await this.autoCreateComponentsInsideResult(resultElement, result).initResult;\n\n this.verifyChildren(resultElement);\n return resultElement;\n }\n\n public autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n Assert.exists(element);\n return Initialization.automaticallyCreateComponentsInsideResult(element, result);\n }\n\n private createHtmlElement(result: IQueryResult, layout: RendererValidLayout) {\n return this.args.resultTemplate.instantiateToElement(result, {\n wrapInDiv: true,\n checkCondition: true,\n currentLayout: layout,\n responsiveComponents: this.args.searchInterface.responsiveComponents\n });\n }\n\n private verifyChildren(element: HTMLElement) {\n const containsResultLink = !!$$(element).find('.CoveoResultLink');\n if (containsResultLink) {\n return;\n }\n\n const msg = `Result does not contain a \"CoveoResultLink\" component, please verify the result template`;\n new Logger(element).warn(msg, this.args.resultTemplate);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateToHtml.ts","import { TemplateHelpers, ITemplateHelperFunction } from './TemplateHelpers';\nimport { IHighlight, IHighlightPhrase, IHighlightTerm } from '../../rest/Highlight';\nimport { HighlightUtils, StringAndHoles } from '../../utils/HighlightUtils';\nimport { IStreamHighlightOptions } from '../../utils/StreamHighlightUtils';\nimport { IDateToStringOptions, DateUtils } from '../../utils/DateUtils';\nimport { ICurrencyToStringOptions, CurrencyUtils } from '../../utils/CurrencyUtils';\nimport { IAnchorUtilsOptions, IImageUtilsOptions, AnchorUtils, ImageUtils } from '../../utils/HtmlUtils';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { TimeSpan, ITimeSpanUtilsOptions } from '../../utils/TimeSpanUtils';\nimport { EmailUtils } from '../../utils/EmailUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { StreamHighlightUtils } from '../../utils/StreamHighlightUtils';\nimport { FacetUtils } from '../Facet/FacetUtils';\nimport * as Globalize from 'globalize';\nimport { IStringMap } from '../../rest/GenericParam';\nimport * as _ from 'underscore';\nimport { Component } from '../Base/Component';\nimport { TemplateCache } from './TemplateCache';\nimport { INumberFormatOptions } from '../../utils/NumberUtils';\n\n/**\n * The core template helpers provided by default.\n *\n * **Examples:**\n *\n * **HTML**\n *\n * ```html\n *
\n * ```\n *\n * **Underscore**\n *\n * ```erb\n * <%= timeSpan(raw.videoduration, { isMilliseconds: false }) %>\n * ```\n */\nexport interface ICoreHelpers {\n /**\n * Shortens a string so that its length does not exceed a specific number of\n * characters. An ellipsis is appended to the string if it exceeds the\n * maximum length.\n *\n * - `content`: The string to shorten.\n * - `length`: The maximum length of the resulting string.\n * - `highlights`: Optional. If provided, the string will be highlighted\n * using this highlight information.\n * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n */\n shorten: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n /**\n * Shortens a string using an algorithm suitable for file paths. The helper\n * will insert an ellipsis in the string where text has been removed when\n * the path exceeds the maximum length.\n *\n * - `content`: The path to shorten.\n * - `length`: The maximum length of the resulting string.\n * - `highlights`: Optional. If provided, the string will be highlighted using\n * this highlight information.\n * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n */\n shortenPath: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n /**\n * Shortens a string using an algorithm suitable for URIs. The helper will\n * insert an ellipsis in the string where text has been removed when the URI\n * exceeds the maximum length.\n *\n * - `content`: The URI to shorten.\n * - `length`: The maximum length of the resulting string.\n * - `highlights`: Optional. If provided, the string will be highlighted\n * using this highlight information.\n * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n */\n shortenUri: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n /**\n * Highlights a string using the provided highlight information.\n *\n * - `content`: The URI to shorten.\n * - `highlights`: Optional. The highlight information to use.\n * - `cssClass`: Optional. The name of the CSS class to use for highlighting.\n */\n highlight: (content: string, highlights?: IHighlight[], cssClass?: string) => string;\n /**\n * Highlights the provided terms in a given string.
\n * By default, the terms to highlight are the current query and the\n * associated stemming words from the index.\n * The only required parameter is the content, which specify the string that needs to be highlighted.\n * The other parameters will normally be automatically resolved for you from the current result object.\n *\n * - `content`: The string content to highlight\n * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n *\n * **Note:**\n * > `highlightStreamText` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n * >\n * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n * >\n * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n */\n highlightStreamText: (\n content: string,\n termsToHighlight: IHighlightTerm,\n phrasesToHighlight: IHighlightPhrase,\n options?: IStreamHighlightOptions\n ) => string;\n /**\n * This helper operates exactly like the {@link highlightStreamText} helper, except\n * that it should be used to highlight HTML content. The helper takes care\n * of not highlighting the HTML markup.\n *\n * - `content`: The string content to highlight\n * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n *\n * **Note:**\n * > `highlightStreamHTML` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n * >\n * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n * >\n * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n */\n highlightStreamHTML: (\n content: string,\n termsToHighlight: IHighlightTerm,\n phrasesToHighlight: IHighlightPhrase,\n options?: IStreamHighlightOptions\n ) => string;\n /**\n * Formats a numeric value using the format string.\n *\n * - `content`: The numeric value to format.\n * - `format` Optional. The string format to use. See the Globalize library for the list of available formats.\n *\n * When the helper is used in a [`FieldValue`]{@link FieldValue} component, this value is automatically retrieved from the specified [`field`]{@link FieldValue.options.field}.\n *\n * **Example:**\n *\n * ```html\n *
\n * ```\n */\n number: (content: string, format: string | INumberFormatOptions) => string;\n /**\n * Formats a date value to a date-only string using the specified options.\n *\n * - `content`: The Date value to format.\n * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n */\n date: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Formats a date value to a time-only string using the specified options.\n *\n * - `content`: The Date value to format.\n * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n */\n time: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Formats a date value to a date and time string using the specified\n * options.\n *\n * - `content`: The Date value to format.\n * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n */\n dateTime: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Formats a currency value to a string using the specified options.\n *\n * - `content`: The number value to format.\n * - `options`: Optional. The options to use (see {@link ICurrencyToStringOptions}).\n */\n currency: (content: any, options?: ICurrencyToStringOptions) => string;\n /**\n * Formats a date value to a date and time string using options suitable for\n * email dates\n *\n * - `content`: The Date value to format.\n * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n */\n emailDateTime: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Renders one or several email values in `mailto:` hyperlinks.\n *\n * - `value`: The string or array of strings that contains a list of semicolon-separated email\n * values. When multiple values are passed, each value is displayed in a\n * separate hyperlink.\n * - `companyDomain`: Optional. The string that contains your own domain (e.g.:\n * coveo.com). When specified, this parameter allows email addresses\n * coming from your own domain to be displayed in a shortened format\n * (e.g.: Full Name), whereas email addresses coming from an external\n * domain will be displayed in an extended format (e.g.: Full Name\n * (domain.com)). If this parameter is not specified, then the shortened\n * format will automatically be used.\n * - `me`: Optional. The string that contains the current username. If it is\n * specified, then the email address containing the current username will\n * be replaced by the localized string 'Me'.\n * - `lengthLimit`: Optional. The number of email addresses that you want to display\n * before an ellipse is added (e.g.: 'From Joe, John and 5 others').
\n * The default value is 2.\n * - `truncateName`: Optional. When the username is available from the email address,\n * then you can specify if you want to truncate the full name. (e.g.:\n * 'John S.' instead of 'John Smith').
\n * The default value is `false`.\n */\n email: (value: string | string[], companyDomain?: string, me?: string, lengthLimit?: number, truncateName?: boolean) => string;\n /**\n * Formats a clickable HTML link (``).\n *\n * - `href`: The link URI\n * - `options`: Optional. The options to use (see {@link IAnchorUtilsOptions})\n */\n anchor: (href: string, options?: IAnchorUtilsOptions) => string;\n /**\n * Formats an HTML image tag (``).\n *\n * - `src`: The image source URI\n * - `options`: Optional. The options to use (see {@link IImageUtilsOptions})\n */\n image: (src: string, options?: IImageUtilsOptions) => string;\n /**\n * Formats an HTML image tag (``), and automatically uses the result\n * object to query the REST API to get the thumbnail for this result. For\n * example, this can be used to great effect when designing a template\n * showing users or previews of files.\n * - `result`: Optional. The current result object inside your template. In\n * underscore, it is referenced as `obj`. By default, the result\n * will be resolved automatically from your current template function (\n * Meaning the nearest result in the current call stack execution inside\n * your template)\n * - `endpoint`: Optional. The name of the endpoint to use for your\n * thumbnail. Default is default.\n * - `options`: Optional. The options to use (see {@link IImageUtilsOptions}).\n */\n thumbnail: (result?: IQueryResult, endpoint?: string, options?: IImageUtilsOptions) => string;\n /**\n * Generates an icon based on the file type of the current result. The icon\n * will be contained inside a `` element with the appropriate CSS\n * class.\n *\n * - `result`: Optional. The current result object inside your template. In\n * underscore, it is referenced as `obj`. By default, the result\n * will be resolved automatically from your current template function (\n * Meaning the nearest result in the current call stack execution inside\n * your template)\n * - `options`: Optional. The options to use (see {@link IIconOptions}).\n */\n fromFileTypeToIcon: (result?: IQueryResult, options?: any) => string;\n /**\n * Loads a partial template in the current template, by passing the ID of\n * the template to load, the condition for which this template should be\n * loaded, and the context object (the object that the loaded template will\n * use as its data). By default, the context object will be the same as the\n * template that called this helper function. So, for example, in a\n * ResultList Component, the contextObject would, by default, be the Query\n * Results.\n *\n * - `templateId`: The ID of the template to load.\n * - `condition`: Optional. The boolean condition to determine if this template should\n * load for this result set. Most of the time this would be a condition of\n * the type if raw.somefield == 'something'.\n * - `contextObject`: Optional. The object that should be used by the loaded template\n * as its contextObject.\n */\n loadTemplate: (templateId: string, condition?: boolean, contextObject?: any) => string;\n /**\n * Given a number, either in millisecond or second, convert to a HH:MM:SS format.\n *\n * **Examples**\n *\n * >`timeSpan(1, {isMilliseconds: false}) => '00:01'`\n * >\n * >`timeSpan(1000, {isMilliseconds: true}) => '00:01'`\n *\n * - `value`: The number to convert to a timespan\n * - `options` : The options to use (see {@link ITimeSpanUtilsOptions})\n */\n timeSpan: (value: number, options: ITimeSpanUtilsOptions) => string;\n /**\n * Formats a number, which represents a file size in bytes, into a logical unit size.\n *\n * **Examples:**\n *\n * >`size(1024) => 1024 B`\n * >\n * >`size(1025) => 1 KB`\n * >\n * >`size(10240) => 10 KB`\n *\n * **Examples:**\n *\n * >**HTML**\n * >\n * > ```html\n * >
\n * > ```\n *\n * >**Underscore**\n * >\n * > ```erb\n * > <%= size(raw.size, {base: 0, precision: 2}) %>\n * > ```\n *\n * - `value`: The number to format\n * - `options` : The options to use (see {@link ISizeOptions})\n */\n size: (value: number, options?: ISizeOptions) => string;\n /**\n * Given a filetype value, try to return a translated and human readable version.\n *\n * If the filetype is known and recognized by the framework, a translated value will be returned.\n *\n * **Examples**\n *\n * >`translatedCaption('doc') => Document`\n * >\n * >`translatedCaption('xls') => Spreadsheet Document`\n *\n * - `value`: The string value to translate\n */\n translatedCaption: (value: string) => string;\n /**\n * Replace all carriage return in a string by a <br /> tag\n *\n * - `value`: The string value to replace the carriage returns in.\n */\n encodeCarriageReturn: (value: string) => string;\n /**\n * Detect if the results is being rendered in a mobile device.\n *\n * If it's not a mobile device, the helper return null ;\n *\n * If it's a mobile device, return the type of device (Android, iPhone, iPad) etc.\n */\n isMobileDevice: () => string;\n}\n\n/**\n * Available options for the size templateHelpers.\n *\n * Example:\n *
\n */\nexport interface ISizeOptions {\n /**\n * The base into which to format the value.\n *\n * Formula: value * 10^(3 * base)\n *\n * **Examples:**\n * > **Base 0:**\n * >\n * > 1 => 1B\n * >\n * > 1000 => 1KB\n *\n * > **Base 1:**\n * >\n * > 1 => 1KB\n * >\n * > 1000 => 1MB\n */\n base?: number;\n /**\n * The precision to use to format the size (i.e., the number of digits to display after the decimal)\n *\n * **Examples:**\n * > **Precision 0:**\n * >\n * > 1.0 => 1\n * >\n * > 1.85 => 1\n *\n * > **Precision 1:**\n * >\n * > 1.0 => 1.0\n * >\n * > 1.85 => 1.8\n */\n\n precision?: number;\n}\n\nexport interface IShortenOptions {\n length: number;\n highlights?: IHighlight[];\n cssClass?: string;\n}\n\nexport interface IHighlightsOptions {\n highlights: IHighlight[];\n cssClass?: string;\n}\n\nexport interface IHelperStreamHighlightOptions {\n termsToHighlight: IHighlightTerm;\n phrasesToHighlight: IHighlightPhrase;\n opts?: IStreamHighlightOptions;\n}\n\nexport class CoreHelpers {\n public constructor() {}\n\n /**\n * For backward compatibility reason, the \"global\" template helper should be available under the\n * coveo namespace.\n * @param scope\n */\n public static exportAllHelpersGlobally(scope: IStringMap) {\n _.each(TemplateHelpers.getHelpers(), (helper: ITemplateHelperFunction, name: string) => {\n if (scope[name] == undefined) {\n scope[name] = helper;\n }\n });\n }\n}\n\nTemplateHelpers.registerFieldHelper('javascriptEncode', (value: string) => {\n return Utils.exists(value) ? StringUtils.javascriptEncode(value) : undefined;\n});\n\nconst executeShorten = (content: string, options: IShortenOptions) => {\n const strAndHoles = StringAndHoles.shortenString(content, options.length, '...');\n if (Utils.exists(options.highlights)) {\n return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n } else {\n return strAndHoles.value;\n }\n};\n\nTemplateHelpers.registerTemplateHelper('shorten', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n return executeShorten(content, {\n length,\n highlights,\n cssClass\n });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenv2', (content: string, options: IShortenOptions) => {\n return executeShorten(content, options);\n});\n\nconst executeShortenPath = (content: string, options: IShortenOptions) => {\n const strAndHoles = StringAndHoles.shortenPath(content, options.length);\n if (Utils.exists(options.highlights)) {\n return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n } else {\n return strAndHoles.value;\n }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenPath', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n return executeShortenPath(content, {\n length,\n highlights,\n cssClass\n });\n});\n\nTemplateHelpers.registerFieldHelper('shortenPathv2', (content: string, options: IShortenOptions) => {\n return executeShortenPath(content, options);\n});\n\nconst executeShortenUri = (content: string, options: IShortenOptions) => {\n const strAndHoles = StringAndHoles.shortenUri(content, options.length);\n\n if (Utils.exists(options.highlights)) {\n return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n } else {\n return strAndHoles.value;\n }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenUri', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n return executeShortenUri(content, {\n length,\n highlights,\n cssClass\n });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenUriv2', (content: string, options: IShortenOptions) => {\n return executeShortenUri(content, options);\n});\n\nconst executeHighlight = (content: string, options: IHighlightsOptions) => {\n if (Utils.exists(content)) {\n if (Utils.exists(options.highlights)) {\n return HighlightUtils.highlightString(content, options.highlights, null, options.cssClass || 'highlight');\n } else {\n return content;\n }\n } else {\n return undefined;\n }\n};\n\nTemplateHelpers.registerTemplateHelper('highlight', (content: string, highlights: IHighlight[], cssClass?: string) => {\n return executeHighlight(content, {\n highlights,\n cssClass\n });\n});\n\nTemplateHelpers.registerTemplateHelper('highlightv2', (content: string, options: IHighlightsOptions) => {\n return executeHighlight(content, options);\n});\n\nconst executeHighlightStreamText = (content: string, options: IHelperStreamHighlightOptions) => {\n if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n return StreamHighlightUtils.highlightStreamText(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n } else {\n return content;\n }\n } else {\n return undefined;\n }\n};\n\nTemplateHelpers.registerTemplateHelper(\n 'highlightStreamText',\n (\n content: string,\n termsToHighlight = resolveTermsToHighlight(),\n phrasesToHighlight = resolvePhrasesToHighlight(),\n opts?: IStreamHighlightOptions\n ) => {\n return executeHighlightStreamText(content, {\n termsToHighlight,\n phrasesToHighlight,\n opts\n });\n }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamTextv2', (content: string, options: IHelperStreamHighlightOptions) => {\n const mergedOptions = {\n termsToHighlight: resolveTermsToHighlight(),\n phrasesToHighlight: resolvePhrasesToHighlight(),\n ...options\n };\n return executeHighlightStreamText(content, mergedOptions);\n});\n\nconst executeHighlightStreamHTML = (content: string, options: IHelperStreamHighlightOptions) => {\n if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n return StreamHighlightUtils.highlightStreamHTML(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n } else {\n return content;\n }\n } else {\n return undefined;\n }\n};\n\nTemplateHelpers.registerTemplateHelper(\n 'highlightStreamHTML',\n (\n content: string,\n termsToHighlight = resolveTermsToHighlight(),\n phrasesToHighlight = resolvePhrasesToHighlight(),\n opts?: IStreamHighlightOptions\n ) => {\n return executeHighlightStreamHTML(content, {\n termsToHighlight,\n phrasesToHighlight,\n opts\n });\n }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamHTMLv2', (content: string, options: IHelperStreamHighlightOptions) => {\n const mergedOptions = {\n termsToHighlight: resolveTermsToHighlight(),\n phrasesToHighlight: resolvePhrasesToHighlight(),\n ...options\n };\n return executeHighlightStreamHTML(content, mergedOptions);\n});\n\nTemplateHelpers.registerFieldHelper('number', (value: any, options?: INumberFormatOptions | string) => {\n if (!Utils.exists(value)) {\n return undefined;\n }\n\n const numberValue = Number(value);\n const format = _.isString(options) ? options : options && options.format;\n if (!format) {\n return StringUtils.htmlEncode(numberValue.toString());\n }\n\n return StringUtils.htmlEncode(Globalize.format(numberValue, format));\n});\n\nTemplateHelpers.registerFieldHelper('date', (value: any, options?: IDateToStringOptions) => {\n return DateUtils.dateToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('time', (value: any, options?: IDateToStringOptions) => {\n return DateUtils.timeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('dateTime', (value: any, options?: IDateToStringOptions) => {\n return DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('emailDateTime', (value: any, options?: IDateToStringOptions) => {\n var defaultOptions = {};\n defaultOptions.includeTimeIfThisWeek = true;\n var optionsToUse = _.extend(options, defaultOptions);\n return value ? DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), optionsToUse) : undefined;\n});\n\nTemplateHelpers.registerFieldHelper('currency', (value: any, options?: ICurrencyToStringOptions) => {\n return CurrencyUtils.currencyToString(value, options);\n});\n\nTemplateHelpers.registerFieldHelper('timeSpan', (value: any, options: ITimeSpanUtilsOptions = { isMilliseconds: false }) => {\n return new TimeSpan(value, options.isMilliseconds).getHHMMSS();\n});\n\nTemplateHelpers.registerFieldHelper('email', (value: string | string[], ...args: any[]) => {\n // support old arguments (value: any, companyDomain: string, me: string, lengthLimit = 2, truncateName = false)\n var companyDomain: string;\n var me: string;\n var lengthLimit: number;\n var truncateName: boolean;\n if (_.isObject(args[0])) {\n companyDomain = args[0]['companyDomain'];\n me = args[0]['me'];\n lengthLimit = args[0]['lengthLimit'];\n truncateName = args[0]['truncateName'];\n } else {\n companyDomain = args[0];\n me = args[1];\n lengthLimit = args[2];\n truncateName = args[3];\n }\n if (lengthLimit == undefined) {\n lengthLimit = 2;\n }\n if (truncateName == undefined) {\n truncateName = false;\n }\n if (_.isString(value)) {\n var listOfAddresses = EmailUtils.splitSemicolonSeparatedListOfEmailAddresses(value);\n return EmailUtils.emailAddressesToHyperlinks(listOfAddresses, companyDomain, me, lengthLimit, truncateName);\n } else if (_.isArray(value)) {\n return EmailUtils.emailAddressesToHyperlinks(value, companyDomain, me, lengthLimit, truncateName);\n } else {\n return undefined;\n }\n});\n\nTemplateHelpers.registerTemplateHelper('excessEmailToggle', (target: HTMLElement) => {\n $$(target).removeClass('coveo-active');\n if ($$(target).hasClass('coveo-emails-excess-collapsed')) {\n _.each($$(target).siblings('.coveo-emails-excess-expanded'), sibling => {\n $$(sibling).addClass('coveo-active');\n });\n } else if ($$(target).hasClass('coveo-hide-expanded')) {\n $$(target.parentElement).addClass('coveo-inactive');\n _.each($$(target.parentElement).siblings('.coveo-emails-excess-collapsed'), sibling => {\n $$(sibling).addClass('coveo-active');\n });\n }\n return undefined;\n});\n\nTemplateHelpers.registerFieldHelper('anchor', (href: string, options?: IAnchorUtilsOptions) => {\n return AnchorUtils.buildAnchor(href, options);\n});\n\nTemplateHelpers.registerFieldHelper('image', (src: string, options?: IImageUtilsOptions, result: IQueryResult = resolveQueryResult()) => {\n if (options && options.srcTemplate) {\n return ImageUtils.buildImage(StringUtils.buildStringTemplateFromResult(options.srcTemplate, result), {\n alt: options.alt,\n height: options.height,\n width: options.width\n });\n }\n return ImageUtils.buildImage(src, options);\n});\n\nTemplateHelpers.registerTemplateHelper(\n 'thumbnail',\n (result: IQueryResult = resolveQueryResult(), endpoint: string = 'default', options?: IImageUtilsOptions) => {\n if (QueryUtils.hasThumbnail(result)) {\n return ImageUtils.buildImageFromResult(result, SearchEndpoint.endpoints[endpoint], options);\n }\n }\n);\n\nTemplateHelpers.registerTemplateHelper('fromFileTypeToIcon', (result: IQueryResult = resolveQueryResult(), options = {}) => {\n let icon = Component.getComponentRef('Icon');\n if (icon) {\n return icon.createIcon(result, options).outerHTML;\n }\n});\n\nTemplateHelpers.registerTemplateHelper('attrEncode', (value: string) => {\n return ('' + value) /* Forces the conversion to string. */\n .replace(/&/g, '&') /* This MUST be the 1st replacement. */\n .replace(/'/g, ''') /* The 4 other predefined entities, required. */\n .replace(/'/g, '"')\n .replace(//g, '>');\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplates', (templatesToLoad: { [id: string]: any }, once = true) => {\n var ret = '';\n var data = resolveQueryResult();\n var atLeastOneWasLoaded = false;\n var toLoad = templatesToLoad;\n var defaultTmpl;\n _.each(templatesToLoad, (value, key?, obj?) => {\n if (value == 'default') {\n defaultTmpl = key;\n }\n });\n if (defaultTmpl != undefined) {\n toLoad = _.omit(templatesToLoad, defaultTmpl);\n }\n _.each(toLoad, (condition, id?, obj?) => {\n if (!atLeastOneWasLoaded || !once) {\n atLeastOneWasLoaded = atLeastOneWasLoaded || condition;\n ret += TemplateHelpers.getHelper('loadTemplate')(id, condition, data);\n }\n });\n if (!atLeastOneWasLoaded && defaultTmpl != undefined) {\n ret += TemplateHelpers.getHelper('loadTemplate')(defaultTmpl, true, data);\n }\n return ret;\n});\n\nconst byteMeasure = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'];\n\nTemplateHelpers.registerFieldHelper('size', (value: any, options?: ISizeOptions) => {\n var size = parseInt(value, 10);\n var precision = options != null && options.precision != null ? options.precision : 2;\n var base = options != null && options.base != null ? options.base : 0;\n while (size > 1024 && base + 1 < byteMeasure.length) {\n size /= 1024;\n base++;\n }\n size = Math.floor(size * Math.pow(10, precision)) / Math.pow(10, precision);\n return size + ' ' + byteMeasure[base];\n});\n\nTemplateHelpers.registerFieldHelper('translatedCaption', (value: string) => {\n return FacetUtils.tryToGetTranslatedCaption('@filetype', value);\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplate', (id: string, condition: boolean = true, data?: any) => {\n if (Utils.isNullOrUndefined(data)) {\n data = resolveQueryResult();\n }\n if (condition) {\n return TemplateCache.getTemplate(id).instantiateToString(data, {\n checkCondition: false\n });\n }\n return '';\n});\n\nTemplateHelpers.registerTemplateHelper('encodeCarriageReturn', (data: string) => {\n if (Utils.isNullOrUndefined(data)) {\n return undefined;\n } else {\n return StringUtils.encodeCarriageReturn(data);\n }\n});\n\nTemplateHelpers.registerTemplateHelper('isMobileDevice', () => {\n return DeviceUtils.isMobileDevice() ? DeviceUtils.getDeviceName() : null;\n});\n\nfunction resolveQueryResult(): IQueryResult {\n let found;\n let resultList = Component.getComponentRef('ResultList');\n if (resultList) {\n found = resultList.resultCurrentlyBeingRendered;\n }\n if (!found) {\n let quickview = Component.getComponentRef('Quickview');\n if (quickview) {\n found = quickview.resultCurrentlyBeingRendered;\n }\n }\n return found;\n}\n\nfunction resolveTermsToHighlight(): IHighlightTerm {\n let currentQueryResult = resolveQueryResult();\n if (currentQueryResult) {\n return currentQueryResult.termsToHighlight;\n }\n}\n\nfunction resolvePhrasesToHighlight(): IHighlightPhrase {\n let currentQueryResult = resolveQueryResult();\n if (currentQueryResult) {\n return currentQueryResult.phrasesToHighlight;\n }\n}\n\nfunction termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight) {\n return Utils.isNonEmptyArray(_.keys(termsToHighlight)) || Utils.isNonEmptyArray(_.keys(phrasesToHighlight));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/CoreHelpers.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Result.scss\n// module id = 527\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultFrame.scss\n// module id = 528\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultList.scss\n// module id = 529\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","import { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { Logger } from '../../misc/Logger';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\n\nexport class ResponsiveDefaultResultTemplate implements IResponsiveComponent {\n private searchInterface: SearchInterface;\n private resultList: ResultList;\n\n private currentMode: string;\n\n public static init(root: HTMLElement, component: ResultList, options: IResponsiveComponentOptions) {\n if (!$$(root).find(`.${Component.computeCssClassName(ResultList)}`)) {\n let logger = new Logger('ResponsiveDefaultResultTemplate');\n logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n return;\n }\n ResponsiveComponentsManager.register(ResponsiveDefaultResultTemplate, $$(root), ResultList.ID, component, options);\n }\n\n constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n this.searchInterface = Component.get(this.coveoRoot.el, SearchInterface, false);\n this.currentMode = 'large';\n }\n\n public registerComponent(accept: ResultList) {\n if (accept instanceof ResultList) {\n this.resultList = accept;\n return true;\n }\n return false;\n }\n\n public handleResizeEvent() {\n let lastResults = this.resultList.queryController.getLastResults();\n if (this.needSmallMode()) {\n $$(this.resultList.options.resultsContainer).addClass('coveo-card-layout-container');\n $$(this.resultList.options.resultsContainer).removeClass(`coveo-list-layout-container`);\n if (this.currentMode != 'small') {\n if (lastResults) {\n this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n this.resultList.renderResults(elements);\n });\n }\n this.currentMode = 'small';\n }\n } else {\n $$(this.resultList.options.resultsContainer).removeClass('coveo-card-layout-container');\n $$(this.resultList.options.resultsContainer).addClass(`coveo-list-layout-container`);\n if (this.currentMode != 'large') {\n if (lastResults) {\n this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n this.resultList.renderResults(elements);\n });\n }\n this.currentMode = 'large';\n }\n }\n }\n\n private needSmallMode(): boolean {\n return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\n\nexport interface ResultToRender {\n resultElement: HTMLElement;\n componentsInside: Component[];\n}\n\nexport class ResultContainer {\n public static resultCurrentlyBeingRendered: IQueryResult = null;\n\n public resultContainerElement: Dom;\n\n constructor(resultContainer: HTMLElement, private searchInterface: SearchInterface) {\n this.resultContainerElement = $$(resultContainer);\n }\n\n public empty() {\n this.searchInterface.detachComponentsInside(this.resultContainerElement.el);\n $$(this.resultContainerElement).empty();\n }\n\n public addClass(classToAdd: string) {\n this.resultContainerElement.addClass(classToAdd);\n }\n\n public isEmpty() {\n return this.resultContainerElement.isEmpty();\n }\n\n public hideChildren() {\n this.resultContainerElement.children().forEach(child => $$(child).hide());\n }\n\n public getResultElements() {\n return this.resultContainerElement.findAll('.CoveoResult');\n }\n\n public get el() {\n return this.resultContainerElement.el;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultContainer.ts","import { ResultListRenderer } from './ResultListRenderer';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListCardRenderer extends ResultListRenderer {\n getEndFragment(resultElements: HTMLElement[]) {\n return new Promise(resolve => {\n if (!_.isEmpty(resultElements)) {\n // with infinite scrolling, we want the additional results to append at the end of the previous query.\n // For this, we need to remove the padding.\n if (this.resultListOptions.enableInfiniteScroll) {\n const needToBeRemoved = $$(this.resultListOptions.resultsContainer).findAll('.coveo-card-layout-padding');\n _.each(needToBeRemoved, toRemove => $$(toRemove).remove());\n }\n // Used to prevent last card from spanning the grid's whole width\n const emptyCards = document.createDocumentFragment();\n _.times(3, () => emptyCards.appendChild($$('div', { className: 'coveo-card-layout coveo-card-layout-padding' }).el));\n resolve(emptyCards);\n }\n resolve(null);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListCardRenderer.ts","import { IResultListOptions } from './ResultListOptions';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { TemplateRole } from '../Templates/Template';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListTableRenderer extends ResultListRenderer {\n private shouldDisplayHeader: boolean = true;\n private shouldDisplayFooter: boolean = false;\n\n constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {\n super(resultListOptions, autoCreateComponentsFn);\n if (this.resultListOptions.resultTemplate instanceof TableTemplate) {\n if (this.resultListOptions.resultTemplate.hasTemplateWithRole('table-footer')) {\n this.shouldDisplayFooter = true;\n }\n // If custom templates are defined but no header template, do not display it.\n if (\n this.resultListOptions.resultTemplate.templates.length !== 0 &&\n !this.resultListOptions.resultTemplate.hasTemplateWithRole('table-header')\n ) {\n this.shouldDisplayHeader = false;\n }\n }\n }\n\n getStartFragment(resultElements: HTMLElement[], append: boolean): Promise {\n if (!append && !_.isEmpty(resultElements) && this.shouldDisplayHeader) {\n return this.renderRoledTemplate('table-header');\n }\n }\n\n getEndFragment(resultElements: HTMLElement[], append: boolean): Promise {\n if (!append && !_.isEmpty(resultElements) && this.shouldDisplayFooter) {\n return this.renderRoledTemplate('table-footer');\n }\n }\n\n private async renderRoledTemplate(role: TemplateRole) {\n const elem = await (this.resultListOptions.resultTemplate).instantiateRoleToElement(role);\n $$(elem).addClass(`coveo-result-list-${role}`);\n this.autoCreateComponentsFn(elem, undefined);\n const frag = document.createDocumentFragment();\n frag.appendChild(elem);\n return frag;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListTableRenderer.ts","import 'styling/_Result';\nimport 'styling/_ResultFrame';\nimport 'styling/_ResultList';\nimport { chain, compact, contains, each, flatten, map, unique, without, uniqueId, find } from 'underscore';\nimport {\n IBuildingQueryEventArgs,\n IDuringQueryEventArgs,\n INewQueryEventArgs,\n IQueryErrorEventArgs,\n IQuerySuccessEventArgs,\n QueryEvents\n} from '../../events/QueryEvents';\nimport { IResultLayoutPopulateArgs, ResultLayoutEvents } from '../../events/ResultLayoutEvents';\nimport {\n IChangeLayoutEventArgs,\n IDisplayedNewResultEventArgs,\n IDisplayedNewResultsEventArgs,\n ResultListEvents\n} from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Doc, Win } from '../../utils/Dom';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IInitializationParameters, IInitResult, Initialization } from '../Base/Initialization';\nimport { InitializationPlaceholder } from '../Base/InitializationPlaceholder';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { ResponsiveDefaultResultTemplate } from '../ResponsiveComponents/ResponsiveDefaultResultTemplate';\nimport { ValidLayout, RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { CoreHelpers } from '../Templates/CoreHelpers';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { DefaultResultTemplate } from '../Templates/DefaultResultTemplate';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { Template } from '../Templates/Template';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { ResultContainer } from './ResultContainer';\nimport { ResultListCardRenderer } from './ResultListCardRenderer';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { ResultListTableRenderer } from './ResultListTableRenderer';\nimport ResultLayoutSelectorModule = require('../ResultLayoutSelector/ResultLayoutSelector');\nimport { IResultListOptions } from './ResultListOptions';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { TemplateToHtml, ITemplateToHtml } from '../Templates/TemplateToHtml';\n\nCoreHelpers.exportAllHelpersGlobally(window['Coveo']);\n\ntype WaitAnimation = 'fade' | 'spinner' | 'none';\n\n/**\n * The `ResultList` component is responsible for displaying query results by applying one or several result templates\n * (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * It is possible to include multiple `ResultList` components along with a single `ResultLayout`\n * component in a search page to provide different result layouts (see\n * [Result Layouts](https://docs.coveo.com/en/360/)).\n *\n * This component supports infinite scrolling (see the\n * [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option).\n */\nexport class ResultList extends Component {\n private static getDefaultTemplate(e: HTMLElement): Template {\n const template = ResultList.loadTemplatesFromCache();\n if (template != null) {\n return template;\n }\n\n const component = Component.get(e);\n if (Coveo['Recommendation'] && component.searchInterface instanceof Coveo['Recommendation']) {\n return new DefaultRecommendationTemplate();\n }\n return new DefaultResultTemplate();\n }\n\n private static loadTemplatesFromCache(): Template {\n var pageTemplateNames = TemplateCache.getResultListTemplateNames();\n if (pageTemplateNames.length > 0) {\n return new TemplateList(compact(map(pageTemplateNames, templateName => TemplateCache.getTemplate(templateName))));\n }\n\n return null;\n }\n\n static ID = 'ResultList';\n\n static doExport = () => {\n exportGlobally({\n ResultList: ResultList\n });\n };\n\n /**\n * The options for the ResultList\n * @componentOptions\n */\n static options: IResultListOptions = {\n /**\n * The element inside which to insert the rendered result templates.\n *\n * Performing a new query clears the content of this element.\n *\n * You can change the container by specifying its selector (e.g.,\n * `data-result-container-selector='#someCssSelector'`).\n *\n * If you specify no value for this option, a `div` element will be dynamically created and appended to the result\n * list. This element will then be used as a result container.\n */\n resultsContainer: ComponentOptions.buildChildHtmlElementOption({ alias: 'resultContainerSelector' }),\n resultTemplate: TemplateComponentOptions.buildTemplateOption({ defaultFunction: ResultList.getDefaultTemplate }),\n\n /**\n * The type of animation to display while waiting for a query to return.\n *\n * The possible values are:\n * - `fade`: Fades out the current list of results while the query is executing.\n * - `spinner`: Shows a spinning animation while the query is executing.\n * - `none`: Use no animation during queries.\n *\n * See also the [`waitAnimationContainer`]{@link ResultList.options.waitAnimationContainer} option.\n *\n * @examples spinner\n */\n waitAnimation: ComponentOptions.buildStringOption({ defaultValue: 'none' }),\n\n /**\n * The element inside which to display the [`waitAnimation`]{@link ResultList.options.waitAnimation}.\n *\n * You can change this by specifying a CSS selector (e.g.,\n * `data-wait-animation-container-selector='#someCssSelector'`).\n *\n * Defaults to the value of the [`resultsContainer`]{@link ResultList.options.resultsContainer} option.\n */\n waitAnimationContainer: ComponentOptions.buildChildHtmlElementOption({\n postProcessing: (value, options: IResultListOptions) => value || options.resultsContainer\n }),\n\n /**\n * Whether to automatically retrieve an additional page of results and append it to the\n * results that the `ResultList` is currently displaying when the user scrolls down to the bottom of the\n * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n *\n * See also the [`infiniteScrollPageSize`]{@link ResultList.options.infiniteScrollPageSize} and\n * [`enableInfiniteScrollWaitingAnimation`]{@link ResultList.options.enableInfiniteScrollWaitingAnimation} options.\n *\n * It is important to specify the `infiniteScrollContainer` option manually if you want the scrolling element to be\n * something else than the default `window` element. Otherwise, you might find yourself in a strange state where the\n * framework rapidly triggers multiple successive query.\n */\n enableInfiniteScroll: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * The number of additional results to fetch when the user scrolls down to the bottom of the\n * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n *\n * @examples 5\n */\n infiniteScrollPageSize: ComponentOptions.buildNumberOption({\n defaultValue: 10,\n min: 1,\n depend: 'enableInfiniteScroll'\n }),\n\n /**\n * The element that triggers fetching additional results when the end user scrolls down to its bottom.\n *\n * You can change the container by specifying its selector (e.g.,\n * `data-infinite-scroll-container-selector='#someCssSelector'`).\n *\n * By default, the framework uses the first vertically scrollable parent element it finds, starting from the\n * `ResultList` element itself. A vertically scrollable element is an element whose CSS `overflow-y` attribute is\n * `scroll`.\n *\n * This implies that if the framework can find no scrollable parent, it uses the `window` itself as a scrollable\n * container.\n *\n * This heuristic is not perfect, for technical reasons. There are always some corner case CSS combination which the\n * framework will not be able to correctly detect as 'scrollable'.\n *\n * It is highly recommended that you manually set this option if you wish something else than the `window` to be the\n * scrollable element.\n */\n infiniteScrollContainer: ComponentOptions.buildChildHtmlElementOption({\n depend: 'enableInfiniteScroll',\n defaultFunction: element => ComponentOptions.findParentScrolling(element)\n }),\n\n /**\n * Whether to display the [`waitingAnimation`]{@link ResultList.options.waitAnimation} while fetching additional\n * results.\n */\n enableInfiniteScrollWaitingAnimation: ComponentOptions.buildBooleanOption({\n depend: 'enableInfiniteScroll',\n defaultValue: true\n }),\n mobileScrollContainer: ComponentOptions.buildSelectorOption({\n defaultFunction: () => document.querySelector('.coveo-results-column')\n }),\n\n /**\n * Whether the `ResultList` should scan its result templates to discover which fields it must request to\n * be able to render all results.\n *\n * Setting this option to `true` ensures that the Coveo Search API does not return fields that are unnecessary for\n * the UI to function.\n * \n * If you set this option to `true`, the fields referenced in your result folding templates won't be automatically resolved.\n * In such a case, you must manually specify those fields using the [`fieldsToInclude`]{@link ResultList.options.fieldsToInclude} option.\n *\n * **Notes:**\n *\n * - Many interfaces created with the JavaScript Search Interface Editor explicitly set this option to `true`. \n * - You cannot set this option to `true` in the Coveo for Sitecore integration.\n */\n autoSelectFieldsToInclude: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * A list of fields to include in the query results.\n *\n * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n * `true`, the Coveo Search API returns the fields you specify for this option (if those fields are available) in\n * addition to the fields which the `ResultList` automatically requests. Note that the `autoSelectFieldsToInclude`\n * option doesn't automatically request fields for folding templates; in such a case, you must manually specify \n * fields using this option to avoid empty results.\n *\n * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n * `false`, the Coveo Search API only returns the fields you specify for this option (if those fields are\n * available).\n * \n * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n * `false` and leave this option undefined, the Coveo Search API returns all available fields.\n */\n fieldsToInclude: ComponentOptions.buildFieldsOption({ includeInResults: true }),\n\n /**\n * Specifies the layout to use when displaying results in this `ResultList` (see\n * [Result Layouts](https://docs.coveo.com/en/360/)). Specifying a value for this option automatically\n * populates a [`ResultLayout`]{@link ResultLayout} component with a switcher for the layout.\n *\n * For example, if there are two `ResultList` components in the page, one with its `layout` set to `list` and the\n * other with the same option set to `card`, then the `ResultLayout` component will render two buttons respectively\n * entitled **List** and **Card**.\n *\n * See the [`ValidLayout`]{@link ValidLayout} type for the list of possible values.\n *\n * @examples card\n */\n layout: ComponentOptions.buildStringOption({\n defaultValue: 'list',\n required: true\n }),\n\n /**\n * Whether to scroll back to the top of the page when the end-user:\n * - interacts with a facet when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `true`\n * - interacts with the [`Pager`]{@link Pager} component when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `false`\n *\n * **Note:** Setting this option to `false` has no effect on dynamic facets. To disable this behavior on a `DynamicFacet` component, you must set its own [`enableScrollToTop`]{@link DynamicFacet.options.enableScrollToTop} option to `false`.\n *\n * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n */\n enableScrollToTop: ComponentOptions.buildBooleanOption({\n defaultValue: true\n })\n };\n\n public static resultCurrentlyBeingRendered: IQueryResult = null;\n public currentlyDisplayedResults: IQueryResult[] = [];\n private fetchingMoreResults: Promise;\n private reachedTheEndOfResults = false;\n private disableLayoutChange = false;\n private renderer: ResultListRenderer;\n private resultContainer: ResultContainer;\n\n // This variable serves to block some setup where the framework fails to correctly identify the \"real\" scrolling container.\n // Since it's not technically feasible to correctly identify the scrolling container in every possible scenario without some very complex logic, we instead try to add some kind of mechanism to\n // block runaway requests where UI will keep asking more results in the index, eventually bringing the browser to it's knee.\n // Those successive request are needed in \"displayMoreResults\" to ensure we fill the scrolling container correctly.\n // Since the container is not identified correctly, it is never \"full\", so we keep asking for more.\n // It is reset every time the user actually scroll the container manually.\n private successiveScrollCount = 0;\n private static MAX_AMOUNT_OF_SUCESSIVE_REQUESTS = 5;\n\n /**\n * Creates a new `ResultList` component. Binds various event related to queries (e.g., on querySuccess ->\n * renderResults). Binds scroll event if the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll}\n * option is `true`.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the `ResultList` component.\n * @param bindings The bindings that the component requires to function normally. If not set, these will be\n * automatically resolved (with a slower execution time).\n * @param elementClassId The class that this component should instantiate. Components that extend the base ResultList\n * use this. Default value is `CoveoResultList`.\n */\n constructor(\n public element: HTMLElement,\n public options?: IResultListOptions,\n public bindings?: IComponentBindings,\n elementClassId: string = ResultList.ID\n ) {\n super(element, elementClassId, bindings);\n this.options = ComponentOptions.initComponentOptions(element, ResultList, options);\n\n Assert.exists(element);\n Assert.exists(this.options);\n Assert.exists(this.options.resultTemplate);\n Assert.exists(this.options.infiniteScrollContainer);\n\n this.showOrHideElementsDependingOnState(false, false);\n\n this.addListeners();\n\n this.resultContainer = this.initResultContainer();\n Assert.exists(this.options.resultsContainer);\n\n this.initWaitAnimationContainer();\n Assert.exists(this.options.waitAnimationContainer);\n\n this.setupTemplatesVersusLayouts();\n $$(this.root).on(ResultLayoutEvents.populateResultLayout, (e, args: IResultLayoutPopulateArgs) =>\n args.layouts.push(this.options.layout)\n );\n this.setupRenderer();\n this.makeElementFocusable();\n this.ensureHasId();\n }\n\n private addListeners() {\n this.bind.onRootElement(QueryEvents.newQuery, (args: INewQueryEventArgs) => this.handleNewQuery());\n this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) =>\n this.handleBuildingQuery(args)\n );\n this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) =>\n this.handleQuerySuccess(args)\n );\n this.bind.onRootElement(QueryEvents.duringQuery, (args: IDuringQueryEventArgs) => this.handleDuringQuery());\n this.bind.onRootElement(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError());\n $$(this.root).on(ResultListEvents.changeLayout, (e: Event, args: IChangeLayoutEventArgs) => this.handleChangeLayout(args));\n\n if (this.options.enableInfiniteScroll) {\n this.addInfiniteScrollListeners();\n } else {\n this.addPagerListeners();\n }\n }\n\n private addInfiniteScrollListeners() {\n this.bind.on(this.options.infiniteScrollContainer, 'scroll', () => {\n this.successiveScrollCount = 0;\n this.handleScrollOfResultList();\n });\n this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => {\n setTimeout(() => {\n this.scrollToTopIfEnabled();\n }, 0);\n });\n }\n\n private addPagerListeners() {\n this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.FIRST, () => {\n this.bind.oneRootElement(QueryEvents.deferredQuerySuccess, () => {\n setTimeout(() => {\n this.scrollToTopIfEnabled();\n }, 0);\n });\n });\n }\n\n /**\n * Get the fields needed to be automatically included in the query for this result list.\n * @returns {string[]}\n */\n public getAutoSelectedFieldsToInclude(): string[] {\n return chain(this.options.resultTemplate.getFields()).concat(this.getMinimalFieldsToInclude()).compact().unique().value();\n }\n\n private setupTemplatesVersusLayouts() {\n const layoutClassToAdd = `coveo-${this.options.layout}-layout-container`;\n this.resultContainer.addClass(layoutClassToAdd);\n\n if (this.options.layout === 'table') {\n this.options.resultTemplate = new TableTemplate((this.options.resultTemplate).templates || []);\n }\n\n // A TemplateList is the scenario where the result template are directly embedded inside the ResultList\n // This is the typical scenario when a page gets created by the interface editor, for example.\n // In that case, we try to stick closely that what is actually configured inside the page, and do no \"special magic\".\n // Stick to the \"hardcoded\" configuration present in the page.\n // We only add the correct layout options if it has not been set manually.\n if (this.options.resultTemplate instanceof TemplateList) {\n each((this.options.resultTemplate).templates, (tmpl: Template) => {\n if (!tmpl.layout) {\n tmpl.layout = this.options.layout;\n }\n });\n } else if (this.options.resultTemplate instanceof DefaultResultTemplate && this.options.layout == 'list') {\n ResponsiveDefaultResultTemplate.init(this.root, this, {});\n }\n }\n\n /**\n * Empties the current result list content and appends the given array of HTMLElement.\n *\n * Can append to existing elements in the result list, or replace them.\n *\n * Triggers the `newResultsDisplayed` and `newResultDisplayed` events.\n * @param resultsElement\n * @param append\n */\n public renderResults(resultElements: HTMLElement[], append = false): Promise {\n if (!append) {\n this.resultContainer.empty();\n }\n\n return this.renderer\n .renderResults(resultElements, append, this.triggerNewResultDisplayed.bind(this))\n .then(() => this.triggerNewResultsDisplayed());\n }\n\n /**\n * Builds and returns an array of HTMLElement with the given result set.\n * @param results the result set to build an array of HTMLElement from.\n */\n public buildResults(results: IQueryResults): Promise {\n const layout = this.options.layout;\n return this.templateToHtml.buildResults(results, layout, this.currentlyDisplayedResults);\n }\n\n /**\n * Builds and returns an HTMLElement for the given result.\n * @param result the result to build an HTMLElement from.\n * @returns {HTMLElement}\n */\n public buildResult(result: IQueryResult): Promise {\n const layout = this.options.layout;\n return this.templateToHtml.buildResult(result, layout, this.currentlyDisplayedResults);\n }\n\n /**\n * Executes a query to fetch new results. After the query returns, renders the new results.\n *\n * Asserts that there are more results to display by verifying whether the last query has returned as many results as\n * requested.\n *\n * Asserts that the `ResultList` is not currently fetching results.\n * @param count The number of results to fetch and display.\n */\n public displayMoreResults(count: number) {\n Assert.isLargerOrEqualsThan(1, count);\n\n if (this.isCurrentlyFetchingMoreResults()) {\n this.logger.warn(\"Ignoring request to display more results since we're already doing so\");\n return;\n }\n if (!this.hasPotentiallyMoreResultsToDisplay()) {\n this.logger.warn(\"Ignoring request to display more results since we know there aren't more to display\");\n return;\n }\n\n if (this.options.enableInfiniteScrollWaitingAnimation) {\n this.showWaitingAnimationForInfiniteScrolling();\n }\n\n return this.fetchAndRenderMoreResults(count);\n }\n\n public get templateToHtml() {\n const templateToHtmlArgs: ITemplateToHtml = {\n resultTemplate: this.options.resultTemplate,\n searchInterface: this.searchInterface,\n queryStateModel: this.queryStateModel\n };\n return new TemplateToHtml(templateToHtmlArgs);\n }\n\n /**\n * Gets the list of currently displayed result.\n * @returns {IQueryResult[]}\n */\n public getDisplayedResults(): IQueryResult[] {\n return this.currentlyDisplayedResults;\n }\n\n /**\n * Gets the list of currently displayed result HTMLElement.\n * @returns {HTMLElement[]}\n */\n public getDisplayedResultsElements(): HTMLElement[] {\n return this.resultContainer.getResultElements();\n }\n\n public enable(): void {\n this.disableLayoutChange = false;\n if (this.resultLayoutSelectors.length > 0) {\n this.enableBasedOnActiveLayouts();\n } else {\n super.enable();\n $$(this.element).removeClass('coveo-hidden');\n }\n }\n\n public disable(): void {\n super.disable();\n const otherLayoutsStillActive = map(this.otherResultLists, otherResultList => otherResultList.options.layout);\n if (!contains(otherLayoutsStillActive, this.options.layout) && !this.disableLayoutChange) {\n each(this.resultLayoutSelectors, resultLayoutSelector => {\n resultLayoutSelector.disableLayouts([this.options.layout] as ValidLayout[]);\n });\n }\n this.disableLayoutChange = false;\n $$(this.element).addClass('coveo-hidden');\n }\n\n protected autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n return this.templateToHtml.autoCreateComponentsInsideResult(element, result);\n }\n\n protected triggerNewResultDisplayed(result: IQueryResult, resultElement: HTMLElement) {\n const args: IDisplayedNewResultEventArgs = {\n result: result,\n item: resultElement\n };\n $$(this.element).trigger(ResultListEvents.newResultDisplayed, args);\n }\n\n protected triggerNewResultsDisplayed() {\n const args: IDisplayedNewResultsEventArgs = {\n isInfiniteScrollEnabled: this.options.enableInfiniteScroll\n };\n $$(this.element).trigger(ResultListEvents.newResultsDisplayed, args);\n }\n\n private async fetchAndRenderMoreResults(count: number): Promise {\n this.fetchingMoreResults = this.queryController.fetchMore(count);\n\n try {\n const data = await this.fetchingMoreResults;\n Assert.exists(data);\n this.usageAnalytics.logCustomEvent(analyticsActionCauseList.pagerScrolling, {}, this.element);\n\n this.reachedTheEndOfResults = count > data.results.length;\n this.renderNewResults(data);\n\n this.resetStateAfterFetchingMoreResults();\n\n return data;\n } catch (e) {\n this.resetStateAfterFetchingMoreResults();\n return Promise.reject(e);\n }\n }\n\n private async renderNewResults(data: IQueryResults) {\n const elements = await this.buildResults(data);\n this.renderResults(elements, true);\n this.currentlyDisplayedResults.push(...data.results);\n this.triggerNewResultsDisplayed();\n }\n\n private resetStateAfterFetchingMoreResults() {\n this.hideWaitingAnimationForInfiniteScrolling();\n this.fetchingMoreResults = undefined;\n Defer.defer(() => {\n this.successiveScrollCount++;\n if (this.successiveScrollCount <= ResultList.MAX_AMOUNT_OF_SUCESSIVE_REQUESTS) {\n this.handleScrollOfResultList();\n } else {\n this.logger.info(\n `Result list has triggered 5 consecutive queries to try and fill up the scrolling container, but it is still unable to do so.\n Try explicitly setting the 'data-infinite-scroll-container-selector' option on the result list. See: https://coveo.github.io/search-ui/components/resultlist.html#options.infinitescrollcontainer`\n );\n }\n });\n }\n\n private handleDuringQuery() {\n this.logger.trace('Emptying the result container');\n this.cancelFetchingMoreResultsIfNeeded();\n this.showWaitingAnimation();\n this.showOrHideElementsDependingOnState(false, false);\n }\n\n private handleQueryError() {\n this.hideWaitingAnimation();\n this.resultContainer.empty();\n this.currentlyDisplayedResults = [];\n this.reachedTheEndOfResults = true;\n }\n\n private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n Assert.exists(data);\n Assert.exists(data.results);\n const results = data.results;\n this.logger.trace('Received query results from new query', results);\n this.hideWaitingAnimation();\n\n ResultList.resultCurrentlyBeingRendered = undefined;\n this.reachedTheEndOfResults = data.query.numberOfResults > data.results.results.length;\n\n this.currentlyDisplayedResults = [];\n this.buildResults(data.results).then(async (elements: HTMLElement[]) => {\n await this.renderResults(elements);\n\n this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length != 0);\n\n if (DeviceUtils.isMobileDevice() && this.options.mobileScrollContainer != undefined) {\n this.options.mobileScrollContainer.scrollTop = 0;\n }\n\n if (this.options.enableInfiniteScroll && results.results.length == data.queryBuilder.numberOfResults) {\n // This will check right away if we need to add more results to make the scroll container full & scrolling.\n this.scrollToTopIfEnabled();\n this.handleScrollOfResultList();\n }\n });\n }\n\n private handleScrollOfResultList() {\n if (this.isCurrentlyFetchingMoreResults() || !this.options.enableInfiniteScroll) {\n return;\n }\n if (this.isScrollingOfResultListAlmostAtTheBottom() && this.hasPotentiallyMoreResultsToDisplay()) {\n this.displayMoreResults(this.options.infiniteScrollPageSize);\n }\n }\n\n private scrollToTopIfEnabled() {\n if (!this.options.enableScrollToTop) {\n return;\n }\n\n ResultListUtils.scrollToTop(this.root);\n }\n\n private handleNewQuery() {\n $$(this.element).removeClass('coveo-hidden');\n ResultList.resultCurrentlyBeingRendered = undefined;\n }\n\n private get otherResultLists() {\n const allResultLists = this.searchInterface.getComponents(ResultList.ID) as ResultList[];\n return without(allResultLists, this);\n }\n\n private get resultLayoutSelectors() {\n return this.searchInterface.getComponents('ResultLayoutSelector') as ResultLayoutSelectorModule.ResultLayoutSelector[];\n }\n\n protected handleBuildingQuery(args: IBuildingQueryEventArgs) {\n if (this.options.fieldsToInclude != null) {\n // remove the @\n args.queryBuilder.addFieldsToInclude(map(this.options.fieldsToInclude, field => field.substr(1)));\n }\n if (this.options.autoSelectFieldsToInclude) {\n const otherFields = flatten(\n map(this.otherResultLists, otherResultList => {\n return otherResultList.getAutoSelectedFieldsToInclude();\n })\n );\n\n args.queryBuilder.addRequiredFields(unique(otherFields.concat(this.getAutoSelectedFieldsToInclude())));\n args.queryBuilder.includeRequiredFields = true;\n }\n }\n\n protected handleChangeLayout(args: IChangeLayoutEventArgs) {\n if (args.layout === this.options.layout) {\n this.disableLayoutChange = false;\n this.enable();\n this.options.resultTemplate.layout = this.options.layout;\n if (args.results) {\n // Prevent flickering when switching to a new layout that is empty\n // add a temporary placeholder, the same that is used on initialization\n if (this.resultContainer.isEmpty()) {\n new InitializationPlaceholder(this.root).withVisibleRootElement().withPlaceholderForResultList();\n }\n Defer.defer(async () => {\n const elements = await this.buildResults(args.results);\n this.renderResults(elements);\n this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length !== 0);\n });\n }\n } else {\n this.disableLayoutChange = true;\n this.disable();\n this.resultContainer.empty();\n }\n }\n\n private isCurrentlyFetchingMoreResults(): boolean {\n return Utils.exists(this.fetchingMoreResults);\n }\n\n private getMinimalFieldsToInclude() {\n // these fields are needed for analytics click event\n return ['author', 'language', 'urihash', 'objecttype', 'collection', 'source', 'language', 'permanentid'];\n }\n\n private isScrollingOfResultListAlmostAtTheBottom(): boolean {\n // this is in a try catch because the unit test fail otherwise (Window does not exist for phantom js in the console)\n let isWindow;\n try {\n isWindow = this.options.infiniteScrollContainer instanceof Window;\n } catch (e) {\n isWindow = false;\n }\n return isWindow ? this.isScrollAtBottomForWindowElement() : this.isScrollAtBottomForHtmlElement();\n }\n\n private isScrollAtBottomForWindowElement() {\n const win = new Win(window);\n const windowHeight = win.height();\n const scrollTop = win.scrollY();\n const bodyHeight = new Doc(document).height();\n return bodyHeight - (windowHeight + scrollTop) < windowHeight / 2;\n }\n\n private isScrollAtBottomForHtmlElement() {\n const el = this.options.infiniteScrollContainer;\n const elementHeight = el.clientHeight;\n const scrollHeight = el.scrollHeight;\n const bottomPosition = el.scrollTop + elementHeight;\n return scrollHeight - bottomPosition < elementHeight / 2;\n }\n\n public hasPotentiallyMoreResultsToDisplay(): boolean {\n return this.currentlyDisplayedResults.length > 0 && !this.reachedTheEndOfResults;\n }\n\n private cancelFetchingMoreResultsIfNeeded() {\n if (this.isCurrentlyFetchingMoreResults()) {\n this.logger.trace('Cancelling fetching more results');\n Promise.reject(this.fetchingMoreResults);\n this.fetchingMoreResults = undefined;\n }\n }\n\n private showOrHideElementsDependingOnState(hasQuery: boolean, hasResults: boolean) {\n const showIfQuery = $$(this.element).findAll('.coveo-show-if-query');\n const showIfNoQuery = $$(this.element).findAll('.coveo-show-if-no-query');\n const showIfResults = $$(this.element).findAll('.coveo-show-if-results');\n const showIfNoResults = $$(this.element).findAll('.coveo-show-if-no-results');\n\n each(showIfQuery, (s: HTMLElement) => {\n $$(s).toggle(hasQuery);\n });\n each(showIfNoQuery, (s: HTMLElement) => {\n $$(s).toggle(!hasQuery);\n });\n each(showIfResults, (s: HTMLElement) => {\n $$(s).toggle(hasQuery && hasResults);\n });\n each(showIfNoResults, (s: HTMLElement) => {\n $$(s).toggle(hasQuery && !hasResults);\n });\n }\n\n private get waitAnimation() {\n return this.options.waitAnimation.toLowerCase() as WaitAnimation;\n }\n\n private showWaitingAnimation() {\n switch (this.waitAnimation) {\n case 'fade':\n $$(this.options.waitAnimationContainer).addClass('coveo-fade-out');\n break;\n case 'spinner':\n this.resultContainer.hideChildren();\n if ($$(this.options.waitAnimationContainer).find('.coveo-wait-animation') == undefined) {\n this.options.waitAnimationContainer.appendChild(DomUtils.getBasicLoadingAnimation());\n }\n break;\n }\n }\n\n private hideWaitingAnimation() {\n switch (this.waitAnimation) {\n case 'fade':\n $$(this.options.waitAnimationContainer).removeClass('coveo-fade-out');\n break;\n case 'spinner':\n const spinner = $$(this.options.waitAnimationContainer).find('.coveo-loading-spinner');\n if (spinner) {\n $$(spinner).detach();\n }\n break;\n }\n }\n\n private showWaitingAnimationForInfiniteScrolling() {\n const spinner = DomUtils.getLoadingSpinner();\n if (this.options.layout == 'card' && this.options.enableInfiniteScroll) {\n const previousSpinnerContainer = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n each(previousSpinnerContainer, previousSpinner => $$(previousSpinner).remove());\n const spinnerContainer = $$('div', {\n className: 'coveo-loading-spinner-container'\n });\n spinnerContainer.append(spinner);\n this.options.waitAnimationContainer.appendChild(spinnerContainer.el);\n } else {\n this.options.waitAnimationContainer.appendChild(DomUtils.getLoadingSpinner());\n }\n }\n\n private hideWaitingAnimationForInfiniteScrolling() {\n const spinners = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner');\n const containers = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n each(spinners, spinner => $$(spinner).remove());\n each(containers, container => $$(container).remove());\n }\n\n private initResultContainer(): ResultContainer {\n if (!this.options.resultsContainer) {\n const elemType = this.options.layout === 'table' ? 'table' : 'div';\n this.options.resultsContainer = $$(elemType, { className: 'coveo-result-list-container' }).el;\n this.initResultContainerAddToDom();\n }\n return new ResultContainer(this.options.resultsContainer, this.searchInterface);\n }\n\n protected initResultContainerAddToDom() {\n this.element.appendChild(this.options.resultsContainer);\n }\n\n private initWaitAnimationContainer() {\n if (!this.options.waitAnimationContainer) {\n this.options.waitAnimationContainer = this.resultContainer.el;\n }\n }\n\n private setupRenderer() {\n const initParameters: IInitializationParameters = {\n options: this.searchInterface.options.originalOptionsObject,\n bindings: this.bindings\n };\n\n const autoCreateComponentsFn = (elem: HTMLElement) => Initialization.automaticallyCreateComponentsInside(elem, initParameters);\n\n switch (this.options.layout) {\n case 'card':\n this.renderer = new ResultListCardRenderer(this.options, autoCreateComponentsFn);\n break;\n case 'table':\n this.renderer = new ResultListTableRenderer(this.options, autoCreateComponentsFn);\n break;\n case 'list':\n default:\n this.renderer = new ResultListRenderer(this.options, autoCreateComponentsFn);\n break;\n }\n }\n\n private makeElementFocusable() {\n $$(this.element).setAttribute('tabindex', '-1');\n }\n\n private ensureHasId() {\n const currentId = this.element.id;\n if (currentId === '') {\n this.element.id = uniqueId('coveo-result-list');\n }\n }\n\n private enableBasedOnActiveLayouts() {\n // We should try to enable a result list only when the result layout selector currently allow that result list layout to be displayed.\n each(this.resultLayoutSelectors, resultLayoutSelector => {\n const found = find(resultLayoutSelector.activeLayouts, (activeLayout, activeLayoutKey) => activeLayoutKey == this.options.layout);\n if (found) {\n super.enable();\n resultLayoutSelector.enableLayouts([this.options.layout] as ValidLayout[]);\n $$(this.element).removeClass('coveo-hidden');\n }\n });\n }\n}\n\nInitialization.registerAutoCreateComponent(ResultList);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultList.ts"],"sourceRoot":""}