{"version":3,"sources":["./src/ui/ResultList/ResultListRenderer.ts","./src/ui/Templates/TableTemplate.ts","./src/ui/Templates/DefaultRecommendationTemplate.ts","./src/ui/Templates/CoreHelpers.ts","./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","./src/ui/ResultList/ResultListTableRenderer.ts","./src/ui/ResultList/ResultListCardRenderer.ts","./sass/_ResultList.scss","./sass/_ResultFrame.scss","./sass/_Result.scss","./src/ui/Facet/FacetUtils.ts","./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","./src/ui/ResultList/ResultList.ts"],"names":[],"mappings":"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","file":"ResultList__3666dadfe7be2cf1b66b.js","sourcesContent":["import { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../Base/Component';\nimport { IResultListOptions } from './ResultList';\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.resultContainer.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","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 { 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';\n\n/**\n * The core template helpers provided by default.\n *\n * Example usage:\n *\n * ### HTML\n * ```\n *
\n * ```\n *\n * ### Underscore\n * ```\n * <%= helperName(argument1, argument2) %>\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 * - `value`: 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 * - `value`: 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 * - `value`: 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 * - `highlights`: 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 * This helper 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`: Optional. The terms to highlight (see {@link IHighlightTerm})\n * - `phraseToHighlight`: Optional. The phrases to highlight (see {@link IHighlightPhrase})\n * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\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`: Optional. The terms to highlight (see {@link IHighlightTerm})\n * - `phraseToHighlight`: Optional. The phrases to highlight (see {@link IHighlightPhrase})\n * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\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 * - `value`: The numeric value to format.\n * - `format`: The format string to use. The options available are defined by\n * the [Globalize](https://github.com/klaaspieter/jquery-global#numbers) library.\n */\n number: (content: string, format: string) => string;\n /**\n * Formats a date value to a date-only string using the specified options.\n *\n * - `value`: The Date value to format.\n * - `options`: The options to use (see IDateToStringOptions).\n */\n date: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Formats a date value to a time-only string using the sepcified options.\n *\n * - `value`: The Date value to format.\n * - `options`: The options to use (see 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 * - `value`: The Date value to format.\n * - `options`: The options to use (see IDateToStringOptions).\n */\n dateTime: (content: any, options?: IDateToStringOptions) => string;\n /**\n * Formats a currency value to a string using the specified options.\n *\n * - `value`: The number value to format.\n * - `options`: The options to use (see 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 * - `value`: The Date value to format.\n * - `options`: The options to use (see 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 string 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`: 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`: 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`: 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`: 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`: 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`: 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 preview of files.\n * - `result`: The current result object inside your template. In\n * underscore, it is referenced as `obj`. Optional, 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`: 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`: The current result object inside your template. In\n * underscore, it is referenced as `obj`. *Optional*, 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`: 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`: 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`: 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 * eg:\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 * Given a number, which represent a file size in bytes, format the value into a logical unit size.\n *\n * eg:\n *\n * `size(1024) => 1024 B`\n *\n * `size(1025) => 1 KB`\n *\n * `size(10240) => 10 KB`\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 * eg:\n *\n * `translatedCaption('doc') => Document`\n *\n * `translatedCaption('xls') => Spreadsheet Document`\n */\n translatedCaption: (value: string) => string;\n /**\n * Replace all carriage return in a string by a <br /> tag\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 */\nexport interface ISizeOptions {\n /**\n * The base into which to format the value.\n */\n base?: number;\n /**\n * The precision to use to format the size.\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 return executeHighlightStreamHTML(content, options);\n});\n\nTemplateHelpers.registerFieldHelper('number', (value: any, options?: any) => {\n var numberValue = Number(value);\n if (Utils.exists(value)) {\n if (_.isString(options)) {\n return StringUtils.htmlEncode(Globalize.format(numberValue, options));\n } else {\n return StringUtils.htmlEncode(numberValue.toString());\n }\n } else {\n return undefined;\n }\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) => {\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","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.resultContainer).addClass('coveo-card-layout-container');\n $$(this.resultList.options.resultContainer).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.resultContainer).removeClass('coveo-card-layout-container');\n $$(this.resultList.options.resultContainer).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 { IResultListOptions } from './ResultList';\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 { 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.resultContainer).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","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultList.scss\n// module id = 351\n// module chunks = 7 10 75","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultFrame.scss\n// module id = 352\n// module chunks = 7 10 75","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Result.scss\n// module id = 353\n// module chunks = 7 10 75","/// \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 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) {\n let found: string;\n\n if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n found = FileTypes.getFileType(value).caption;\n } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@objecttype')) {\n found = FileTypes.getObjectType(value).caption;\n } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month') && value != 'Search') {\n try {\n let month = parseInt(value);\n found = DateUtils.monthToString(month - 1);\n } catch (ex) {\n // Do nothing\n }\n } else {\n found = l(value);\n }\n return found != undefined && Utils.isNonEmptyString(found) ? found : value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetUtils.ts","import { $$, Dom } from '../../utils/Dom';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\n\nexport interface IResponsiveComponentOptions {\n enableResponsiveMode?: boolean;\n responsiveBreakpoint?: number;\n dropdownHeaderLabel?: string;\n initializationEventRoot?: Dom;\n}\n\nexport interface IResponsiveComponentConstructor {\n new (root: Dom, ID: string, options: IResponsiveComponentOptions): IResponsiveComponent;\n}\n\nexport interface IResponsiveComponent {\n ID: string;\n handleResizeEvent(): void;\n needDropdownWrapper?(): boolean;\n registerComponent?(accept: Component): boolean;\n}\n\ninterface IComponentInitialization {\n responsiveComponentsManager: ResponsiveComponentsManager;\n arguments: [IResponsiveComponentConstructor, Dom, string, Component, IResponsiveComponentOptions];\n}\n\nexport class ResponsiveComponentsManager {\n public static DROPDOWN_HEADER_WRAPPER_CSS_CLASS = 'coveo-dropdown-header-wrapper';\n\n private static componentManagers: ResponsiveComponentsManager[] = [];\n private static remainingComponentInitializations: number = 0;\n private static componentInitializations: IComponentInitialization[] = [];\n\n public resizeListener;\n\n private disabledComponents: string[] = [];\n private coveoRoot: Dom;\n private responsiveComponents: IResponsiveComponent[] = [];\n private searchBoxElement: HTMLElement;\n private dropdownHeadersWrapper: Dom;\n private searchInterface: SearchInterface;\n private logger: Logger;\n\n // Register takes a class and will instantiate it after framework initialization has completed.\n public static register(\n responsiveComponentConstructor: IResponsiveComponentConstructor,\n root: Dom,\n ID: string,\n component: Component,\n options: IResponsiveComponentOptions\n ): void {\n // options.initializationEventRoot can be set in some instance (like recommendation) where the root of the interface triggering the init event\n // is different from the one that will be used for calculation size.\n const initEventRoot = options.initializationEventRoot || root;\n initEventRoot.on(InitializationEvents.afterInitialization, () => {\n if (this.shouldEnableResponsiveMode(root)) {\n let responsiveComponentsManager = _.find(this.componentManagers, componentManager => root.el == componentManager.coveoRoot.el);\n if (!responsiveComponentsManager) {\n responsiveComponentsManager = new ResponsiveComponentsManager(root);\n this.componentManagers.push(responsiveComponentsManager);\n }\n\n if (!Utils.isNullOrUndefined(options.enableResponsiveMode) && !options.enableResponsiveMode) {\n responsiveComponentsManager.disableComponent(ID);\n return;\n }\n\n this.componentInitializations.push({\n responsiveComponentsManager: responsiveComponentsManager,\n arguments: [responsiveComponentConstructor, root, ID, component, options]\n });\n }\n\n this.remainingComponentInitializations--;\n if (this.remainingComponentInitializations == 0) {\n this.instantiateResponsiveComponents(); // necessary to verify if all components are disabled before they are initialized.\n if (root.width() == 0) {\n let logger = new Logger('ResponsiveComponentsManager');\n logger.info(`Search interface width is 0, cannot dispatch resize events to responsive components. Will try again after first\n query success.`);\n root.one(QueryEvents.querySuccess, () => {\n this.resizeAllComponentsManager();\n });\n } else {\n this.resizeAllComponentsManager();\n }\n }\n });\n this.remainingComponentInitializations++;\n }\n\n private static shouldEnableResponsiveMode(root: Dom): boolean {\n let searchInterface = Component.get(root.el, SearchInterface, true);\n return searchInterface instanceof SearchInterface && searchInterface.options.enableAutomaticResponsiveMode;\n }\n\n private static instantiateResponsiveComponents() {\n _.each(this.componentInitializations, componentInitialization => {\n let responsiveComponentsManager = componentInitialization.responsiveComponentsManager;\n responsiveComponentsManager.register.apply(responsiveComponentsManager, componentInitialization.arguments);\n });\n }\n\n private static resizeAllComponentsManager(): void {\n _.each(this.componentManagers, componentManager => {\n componentManager.resizeListener();\n });\n }\n\n constructor(root: Dom) {\n this.coveoRoot = root;\n this.searchInterface = Component.get(this.coveoRoot.el, SearchInterface, false);\n this.dropdownHeadersWrapper = $$('div', {\n className: ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS\n });\n this.searchBoxElement = this.getSearchBoxElement();\n this.logger = new Logger(this);\n this.resizeListener = () => {\n if (this.coveoRoot.width() != 0) {\n this.addDropdownHeaderWrapperIfNeeded();\n if (this.shouldSwitchToSmallMode()) {\n this.coveoRoot.addClass('coveo-small-interface');\n } else if (!this.shouldSwitchToSmallMode()) {\n this.coveoRoot.removeClass('coveo-small-interface');\n }\n _.each(this.responsiveComponents, responsiveComponent => {\n responsiveComponent.handleResizeEvent();\n });\n } else {\n this.logger\n .warn(`The width of the search interface is 0, cannot dispatch resize events to responsive components. This means that the tabs will not\n automatically fit in the tab section. Also, the facet and recommendation component will not hide in a menu. Could the search\n interface display property be none? Could its visibility property be set to hidden? Also, if either of these scenarios happen during\n loading, it could be the cause of this issue.`);\n }\n };\n window.addEventListener('resize', this.resizeListener);\n this.bindNukeEvents();\n }\n\n public register(\n responsiveComponentConstructor: IResponsiveComponentConstructor,\n root: Dom,\n ID: string,\n component: Component,\n options: IResponsiveComponentOptions\n ): void {\n if (this.isDisabled(ID)) {\n return;\n }\n\n if (!this.isActivated(ID)) {\n let responsiveComponent = new responsiveComponentConstructor(root, ID, options);\n\n if (this.isTabs(ID)) {\n this.responsiveComponents.push(responsiveComponent);\n } else {\n // Tabs need to be rendered last, so any dropdown header(eg: facet) is already there when the responsive tabs check for overflow.\n this.responsiveComponents.unshift(responsiveComponent);\n }\n }\n _.each(this.responsiveComponents, (responsiveComponent: IResponsiveComponent) => {\n if (responsiveComponent.registerComponent != null) {\n responsiveComponent.registerComponent(component);\n }\n });\n }\n\n public disableComponent(ID: string) {\n this.disabledComponents.push(ID);\n }\n\n private isDisabled(ID: string) {\n return _.indexOf(this.disabledComponents, ID) != -1;\n }\n\n private shouldSwitchToSmallMode(): boolean {\n let aComponentNeedsTabSection = this.needDropdownWrapper();\n let reachedBreakpoint = this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n return aComponentNeedsTabSection || reachedBreakpoint;\n }\n\n private needDropdownWrapper(): boolean {\n for (let i = 0; i < this.responsiveComponents.length; i++) {\n let responsiveComponent = this.responsiveComponents[i];\n if (responsiveComponent.needDropdownWrapper && responsiveComponent.needDropdownWrapper()) {\n return true;\n }\n }\n return false;\n }\n\n private addDropdownHeaderWrapperIfNeeded(): void {\n if (this.needDropdownWrapper()) {\n let tabSection = $$(this.coveoRoot).find('.coveo-tab-section');\n if (this.searchBoxElement) {\n this.dropdownHeadersWrapper.insertAfter(this.searchBoxElement);\n } else if (tabSection) {\n this.dropdownHeadersWrapper.insertAfter(tabSection);\n } else {\n this.coveoRoot.prepend(this.dropdownHeadersWrapper.el);\n }\n }\n }\n\n private isTabs(ID: string): boolean {\n return ID == 'Tab';\n }\n\n private isActivated(ID: string): boolean {\n return _.find(this.responsiveComponents, current => current.ID == ID) != undefined;\n }\n\n private getSearchBoxElement(): HTMLElement {\n let searchBoxElement = this.coveoRoot.find('.coveo-search-section');\n if (searchBoxElement) {\n return searchBoxElement;\n } else {\n return this.coveoRoot.find('.CoveoSearchbox');\n }\n }\n\n private bindNukeEvents(): void {\n $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n window.removeEventListener('resize', this.resizeListener);\n\n // If the interface gets nuked, we need to remove all reference to componentManagers stored which match the current search interface\n ResponsiveComponentsManager.componentManagers = _.filter(\n ResponsiveComponentsManager.componentManagers,\n manager => manager.coveoRoot.el != this.coveoRoot.el\n );\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","import { Template } from '../Templates/Template';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { DefaultResultTemplate } from '../Templates/DefaultResultTemplate';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { ComponentOptions, IFieldOption } from '../Base/ComponentOptions';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { Assert } from '../../misc/Assert';\nimport {\n QueryEvents,\n INewQueryEventArgs,\n IBuildingQueryEventArgs,\n IQuerySuccessEventArgs,\n IDuringQueryEventArgs,\n IQueryErrorEventArgs\n} from '../../events/QueryEvents';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { $$, Win, Doc } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Initialization, IInitializationParameters, IInitResult } from '../Base/Initialization';\nimport { Defer } from '../../misc/Defer';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { ResultListEvents, IDisplayedNewResultEventArgs, IChangeLayoutEventArgs } from '../../events/ResultListEvents';\nimport { ResultLayoutEvents, IResultLayoutPopulateArgs } from '../../events/ResultLayoutEvents';\nimport { Utils } from '../../utils/Utils';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { ResponsiveDefaultResultTemplate } from '../ResponsiveComponents/ResponsiveDefaultResultTemplate';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { ResultListTableRenderer } from './ResultListTableRenderer';\nimport { ResultListCardRenderer } from './ResultListCardRenderer';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_ResultList';\nimport 'styling/_ResultFrame';\nimport 'styling/_Result';\nimport { InitializationPlaceholder } from '../Base/InitializationPlaceholder';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { CoreHelpers } from '../Templates/CoreHelpers';\n\nCoreHelpers.exportAllHelpersGlobally(window['Coveo']);\nexport interface IResultListOptions {\n resultContainer?: HTMLElement;\n resultTemplate?: Template;\n resultOptions?: {};\n waitAnimationContainer?: HTMLElement;\n enableInfiniteScroll?: boolean;\n infiniteScrollPageSize?: number;\n infiniteScrollContainer?: HTMLElement | Window;\n waitAnimation?: string;\n mobileScrollContainer?: HTMLElement;\n enableInfiniteScrollWaitingAnimation?: boolean;\n fieldsToInclude?: IFieldOption[];\n autoSelectFieldsToInclude?: boolean;\n layout?: string;\n}\n\n/**\n * The `ResultList` component is responsible for displaying query results by applying one or several result templates\n * (see [Result Templates](https://developers.coveo.com/x/aIGfAQ)).\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://developers.coveo.com/x/yQUvAg)).\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 * Specifies 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 resultContainer: ComponentOptions.buildChildHtmlElementOption(),\n resultTemplate: TemplateComponentOptions.buildTemplateOption({ defaultFunction: ResultList.getDefaultTemplate }),\n\n /**\n * Specifies 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 * Default value is `none`.\n */\n waitAnimation: ComponentOptions.buildStringOption({ defaultValue: 'none' }),\n\n /**\n * Specifies 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 * Default value is the value of the [`resultContainer`]{@link ResultList.options.resultContainer} option.\n */\n waitAnimationContainer: ComponentOptions.buildChildHtmlElementOption({\n postProcessing: (value, options: IResultListOptions) => value || options.resultContainer\n }),\n\n /**\n * Specifies 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 * Default value is `false`.\n */\n enableInfiniteScroll: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * If the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option is `true`, specifies the\n * number of additional results to fetch when the user scrolls down to the bottom of the\n * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n *\n * Default value is `10`. Minimum value is `1`.\n */\n infiniteScrollPageSize: ComponentOptions.buildNumberOption({\n defaultValue: 10,\n min: 1,\n depend: 'enableInfiniteScroll'\n }),\n\n /**\n * If the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option is `true`, specifies the\n * 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 * If the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option is `true`, specifies\n * whether to display the [`waitingAnimation`]{@link ResultList.options.waitAnimation} while fetching additional\n * results.\n *\n * Default value is `true`.\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 * Specifies 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 * Default value is `false`, which means that for each result, the Coveo Search API returns all available fields\n * (unless you specify a list of values in the [`fieldsToInclude`]{@link ResultList.options.fieldsToInclude} option,\n * in which case the Coveo Search API only returns those fields, if they are available).\n *\n * **Notes:**\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 * Specifies 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.\n *\n * Otherwise, the Coveo Search API only returns the fields you specify for this option (if those fields are\n * available), unless you leave this option undefined, in which case the Coveo Search API returns all available\n * 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://developers.coveo.com/x/yQUvAg)). 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 * Default value is `list`.\n */\n layout: ComponentOptions.buildStringOption({\n defaultValue: 'list',\n required: true\n })\n };\n\n public static resultCurrentlyBeingRendered: IQueryResult = null;\n public currentlyDisplayedResults: IQueryResult[] = [];\n private fetchingMoreResults: Promise;\n private reachedTheEndOfResults = false;\n\n private renderer: ResultListRenderer;\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.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.handlePageChanged();\n this.bind.on(this.options.infiniteScrollContainer, 'scroll', (e: Event) => {\n this.successiveScrollCount = 0;\n this.handleScrollOfResultList();\n });\n }\n this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.FIRST, () => this.handlePageChanged());\n\n this.initResultContainer();\n Assert.exists(this.options.resultContainer);\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 }\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())\n .concat(this.getMinimalFieldsToInclude())\n .compact()\n .unique()\n .value();\n }\n\n private setupTemplatesVersusLayouts() {\n const layoutClassToAdd = `coveo-${this.options.layout}-layout-container`;\n $$(this.options.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.options.resultContainer.innerHTML = '';\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 res: { elem: HTMLElement; idx: number }[] = [];\n const resultsPromises = _.map(results.results, (result: IQueryResult, index: number) => {\n return this.buildResult(result).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 /**\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 Assert.exists(result);\n QueryUtils.setStateObjectOnQueryResult(this.queryStateModel.get(), result);\n QueryUtils.setSearchInterfaceObjectOnQueryResult(this.searchInterface, result);\n ResultList.resultCurrentlyBeingRendered = result;\n return this.options.resultTemplate\n .instantiateToElement(result, {\n wrapInDiv: true,\n checkCondition: true,\n currentLayout: this.options.layout,\n responsiveComponents: this.searchInterface.responsiveComponents\n })\n .then((resultElement: HTMLElement) => {\n if (resultElement != null) {\n Component.bindResultToElement(resultElement, result);\n }\n this.currentlyDisplayedResults.push(result);\n return this.autoCreateComponentsInsideResult(resultElement, result).initResult.then(() => {\n return resultElement;\n });\n });\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 this.fetchingMoreResults = this.queryController.fetchMore(count);\n this.fetchingMoreResults.then((data: IQueryResults) => {\n Assert.exists(data);\n this.usageAnalytics.logCustomEvent(analyticsActionCauseList.pagerScrolling, {}, this.element);\n const results = data.results;\n this.reachedTheEndOfResults = count > data.results.length;\n this.buildResults(data).then((elements: HTMLElement[]) => {\n this.renderResults(elements, true);\n _.each(results, result => {\n this.currentlyDisplayedResults.push(result);\n });\n this.triggerNewResultsDisplayed();\n });\n });\n\n this.fetchingMoreResults.finally(() => {\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 );\n this.logger.info(\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 return this.fetchingMoreResults;\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.options.resultContainer).findAll('.CoveoResult');\n }\n\n public enable(): void {\n super.enable();\n $$(this.element).removeClass('coveo-hidden');\n }\n public disable(): void {\n super.disable();\n $$(this.element).addClass('coveo-hidden');\n }\n\n protected autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n Assert.exists(element);\n\n const initOptions = this.searchInterface.options.originalOptionsObject;\n const resultComponentBindings: IResultsComponentBindings = _.extend({}, this.getBindings(), {\n resultElement: element\n });\n const initParameters: IInitializationParameters = {\n options: initOptions,\n bindings: resultComponentBindings,\n result: result\n };\n return Initialization.automaticallyCreateComponentsInside(element, initParameters);\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 $$(this.element).trigger(ResultListEvents.newResultsDisplayed, {});\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.options.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((elements: HTMLElement[]) => {\n 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.scrollBackToTop();\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 handlePageChanged() {\n this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => {\n setTimeout(() => {\n this.scrollBackToTop();\n }, 0);\n });\n }\n\n private scrollBackToTop() {\n if (this.options.infiniteScrollContainer instanceof Window) {\n const win = this.options.infiniteScrollContainer;\n const searchInterfacePosition = win.pageYOffset + this.searchInterface.element.getBoundingClientRect().top;\n win.scrollTo(0, searchInterfacePosition);\n } else {\n const el = this.options.infiniteScrollContainer;\n el.scrollTop = 0;\n }\n }\n\n private handleNewQuery() {\n $$(this.element).removeClass('coveo-hidden');\n ResultList.resultCurrentlyBeingRendered = undefined;\n }\n\n private 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 otherResultListsElements = _.reject(\n $$(this.root).findAll(`.${Component.computeCssClassName(ResultList)}`),\n resultListElement => resultListElement == this.element\n );\n const otherFields = _.flatten(\n _.map(otherResultListsElements, otherResultListElement => {\n const otherResultListInstance = get(otherResultListElement);\n if (otherResultListInstance) {\n return otherResultListInstance.getAutoSelectedFieldsToInclude();\n } else {\n return [];\n }\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.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.options.resultContainer.innerHTML == '') {\n new InitializationPlaceholder(this.root).withVisibleRootElement().withPlaceholderForResultList();\n }\n Defer.defer(() => {\n this.buildResults(args.results).then((elements: HTMLElement[]) => {\n this.renderResults(elements);\n });\n });\n }\n } else {\n this.disable();\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 showWaitingAnimation() {\n switch (this.options.waitAnimation.toLowerCase()) {\n case 'fade':\n $$(this.options.waitAnimationContainer).addClass('coveo-fade-out');\n break;\n case 'spinner':\n _.each(this.options.resultContainer.children, (child: HTMLElement) => {\n $$(child).hide();\n });\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.options.waitAnimation.toLowerCase()) {\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() {\n if (!this.options.resultContainer) {\n const elemType = this.options.layout === 'table' ? 'table' : 'div';\n this.options.resultContainer = $$(elemType, { className: 'coveo-result-list-container' }).el;\n this.element.appendChild(this.options.resultContainer);\n }\n }\n\n private initWaitAnimationContainer() {\n if (!this.options.waitAnimationContainer) {\n this.options.waitAnimationContainer = this.options.resultContainer;\n }\n }\n\n private setupRenderer() {\n const autoCreateComponentsFn = this.autoCreateComponentsInsideResult.bind(this);\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\nInitialization.registerAutoCreateComponent(ResultList);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultList.ts"],"sourceRoot":""}