{"version":3,"sources":["./src/ui/Facet/FacetSearchParameters.ts","./src/utils/SVGDom.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent.ts","./src/utils/EventsUtils.ts","./src/ui/Facet/FacetValuesOrder.ts","./src/ui/ResponsiveComponents/ResponsiveFacets.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown.ts","./src/controllers/FacetQueryController.ts","./src/utils/AccessibleButton.ts","./src/rest/AllowedValuesPatternType.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader.ts","./src/ui/Facet/ValueElement.ts","./src/ui/Facet/ValueElementRenderer.ts","./src/ui/Facet/FacetSearchElement.ts","./src/ui/Facet/FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator.ts","./src/ui/CategoryFacet/CategoryValueChildrenRenderer.ts","./src/ui/Facet/FacetSettings.ts","./src/ui/Facet/FacetSort.ts","./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","./src/ui/Facet/FacetHeader.ts","./src/ui/Facet/BreadcrumbValueElement.ts","./src/ui/Facet/BreadcrumbValuesList.ts","./src/ui/Facet/FacetSearch.ts","./src/ui/Facet/FacetSearchValuesList.ts","./src/ui/Facet/FacetValuesList.ts","./src/ui/Facet/OmniboxValueElement.ts","./src/ui/Facet/OmniboxValuesList.ts","./sass/_AccessibleButton.scss","./sass/_ResponsiveFacets.scss","./sass/_FacetHeader.scss","./sass/_Facet.scss","./sass/_FacetFooter.scss","./sass/_FacetBreadcrumb.scss","./sass/_FacetSearch.scss","./src/ui/Facet/FacetSearchUserInputHandler.ts","./src/ui/Facet/FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory.ts","./src/ui/Facet/FacetSearchDropdownNavigation/FacetSearchDropdownNavigator.ts","./src/ui/CategoryFacet/CategoryFacetTemplates.ts","./src/ui/CategoryFacet/CategoryValueRoot.ts","./src/ui/CategoryFacet/CategoryValue.ts","./src/controllers/CategoryFacetQueryController.ts","./sass/_CategoryFacet.scss","./src/ui/CategoryFacet/CategoryFacetSearch.ts","./sass/_CategoryFacetSearch.scss","./src/ui/CategoryFacet/CategoryFacetBreadcrumb.ts","./src/ui/CategoryFacet/CategoryFacetDebug.ts","./src/ui/CategoryFacet/CategoryFacetHeader.ts","./sass/_FacetSettings.scss","./src/ui/Facet/DependentFacetManager.ts","./src/ui/Facet/FacetUtils.ts","./src/ui/Facet/Facet.ts","./src/ui/CategoryFacet/CategoryFacet.ts","./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","./node_modules/popper.js/dist/esm/popper.js","./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","./src/ui/Facet/FacetValues.ts","./src/ui/Facet/FacetValueElement.ts"],"names":[],"mappings":"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OAAO,EAAE,mBAAmB,EAAE,CAAC;CACnG,CAAC;;;;;;;;;;ACnCF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yDAAyD;;AAE9E;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;;;;;;;;;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","file":"CategoryFacet__a32fd127c77e29c02637.js","sourcesContent":["/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { Utils } from '../../utils/Utils';\nimport { FacetUtils } from './FacetUtils';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IQuery } from '../../rest/Query';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { AllowedValuesPatternType } from '../../rest/AllowedValuesPatternType';\n\nexport class FacetSearchParameters {\n public nbResults: number;\n public ignoreAccents: boolean;\n public valueToSearch: string = '';\n public alwaysInclude: string[] = [];\n public alwaysExclude: string[] = [];\n public sortCriteria = 'occurrences';\n public fetchMore = false;\n public completeFacetWithStandardValues = true;\n\n constructor(public facet: Facet) {\n this.nbResults = facet.options.numberOfValuesInFacetSearch;\n this.ignoreAccents = facet.options.facetSearchIgnoreAccents;\n }\n\n public setValueToSearch(value: string) {\n this.valueToSearch = value;\n if (Utils.isNonEmptyString(value)) {\n this.valueToSearch = this.valueToSearch.trim();\n this.alwaysInclude = this.alwaysInclude.concat(FacetUtils.getValuesToUseForSearchInFacet(this.valueToSearch, this.facet));\n }\n return this;\n }\n\n public excludeCurrentlyDisplayedValuesInSearch(searchResults: HTMLElement) {\n _.each(this.getCurrentlyShowedValueInSearch(searchResults), v => {\n const expandedValues = FacetUtils.getValuesToUseForSearchInFacet(v, this.facet);\n _.each(expandedValues, expanded => {\n this.alwaysExclude.push(expanded);\n });\n });\n _.each(this.facet.getDisplayedFacetValues(), v => {\n this.alwaysExclude.push(v.value);\n });\n }\n\n public getGroupByRequest(): IGroupByRequest {\n this.lowerCaseAll();\n let nbResults = this.nbResults;\n nbResults += this.alwaysExclude.length;\n\n let typedByUser = [];\n if (this.valueToSearch) {\n typedByUser = ['*' + this.valueToSearch + '*'];\n }\n\n let allowedValues;\n if (this.valueToSearch) {\n allowedValues = typedByUser.concat(this.alwaysInclude).concat(this.alwaysExclude);\n } else {\n allowedValues = _.compact(typedByUser.concat(this.alwaysInclude).concat(this.facet.options.allowedValues));\n }\n\n let completeFacetWithStandardValues = this.completeFacetWithStandardValues;\n if (this.facet.options.lookupField != null) {\n completeFacetWithStandardValues = false;\n }\n\n const request: IGroupByRequest = {\n allowedValues,\n allowedValuesPatternType: this.facet.options.useWildcardsInFacetSearch\n ? AllowedValuesPatternType.Wildcards\n : AllowedValuesPatternType.Legacy,\n maximumNumberOfValues: nbResults,\n completeFacetWithStandardValues: completeFacetWithStandardValues,\n field: <string>this.facet.options.field,\n sortCriteria: this.facet.options.sortCriteria || this.sortCriteria,\n injectionDepth: this.facet.options.injectionDepth\n };\n\n if (this.facet.options.lookupField) {\n request.lookupField = <string>this.facet.options.lookupField;\n }\n\n if (this.facet.options.computedField) {\n request.computedFields = [\n {\n field: <string>this.facet.options.computedField,\n operation: this.facet.options.computedFieldOperation\n }\n ];\n }\n return request;\n }\n\n public getQuery(): IQuery {\n let lastQuery = _.clone(this.facet.queryController.getLastQuery());\n if (!lastQuery) {\n // There should normally always be a last query available\n // If not, just create an empty one.\n lastQuery = new QueryBuilder().build();\n }\n // We want to always force query syntax to true for a facet search,\n // but arrange for the basic expression to adapt itself with no syntax block\n if (lastQuery.enableQuerySyntax) {\n lastQuery.q = this.facet.facetQueryController.basicExpressionToUseForFacetSearch;\n } else if (Utils.isNonEmptyString(this.facet.facetQueryController.basicExpressionToUseForFacetSearch)) {\n lastQuery.q = `<@- ${this.facet.facetQueryController.basicExpressionToUseForFacetSearch} -@>`;\n } else {\n lastQuery.q = '';\n }\n\n lastQuery.enableQuerySyntax = true;\n lastQuery.cq = this.facet.facetQueryController.constantExpressionToUseForFacetSearch;\n lastQuery.aq = this.facet.facetQueryController.advancedExpressionToUseForFacetSearch;\n lastQuery.enableDidYouMean = false;\n lastQuery.firstResult = 0;\n lastQuery.numberOfResults = 0;\n lastQuery.fieldsToInclude = [];\n lastQuery.groupBy = [this.getGroupByRequest()];\n return lastQuery;\n }\n\n private getCurrentlyShowedValueInSearch(searchResults: HTMLElement) {\n return _.map($$(searchResults).findAll('.coveo-facet-value-caption'), val => {\n return $$(val).getAttribute('data-original-value') || $$(val).text();\n });\n }\n\n private lowerCaseAll() {\n this.alwaysExclude = _.chain(this.alwaysExclude)\n .map(v => {\n return v.toLowerCase();\n })\n .uniq()\n .value();\n\n this.alwaysInclude = _.chain(this.alwaysInclude)\n .map(v => {\n return v.toLowerCase();\n })\n .uniq()\n .value();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchParameters.ts","import { IStringMap } from '../rest/GenericParam';\nimport * as _ from 'underscore';\n\nexport class SVGDom {\n public static addClassToSVGInContainer(svgContainer: HTMLElement, classToAdd: string) {\n const svgElement = svgContainer.querySelector('svg');\n svgElement.setAttribute('class', `${SVGDom.getClass(svgElement)}${classToAdd}`);\n }\n\n public static removeClassFromSVGInContainer(svgContainer: HTMLElement, classToRemove: string) {\n const svgElement = svgContainer.querySelector('svg');\n svgElement.setAttribute('class', SVGDom.getClass(svgElement).replace(classToRemove, ''));\n }\n\n public static addStyleToSVGInContainer(svgContainer: HTMLElement, styleToAdd: IStringMap<any>) {\n const svgElement = svgContainer.querySelector('svg');\n _.each(styleToAdd, (styleValue, styleKey) => {\n svgElement.style[styleKey] = styleValue;\n });\n }\n\n private static getClass(svgElement: SVGElement) {\n const className = svgElement.getAttribute('class');\n return className ? className + ' ' : '';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/SVGDom.ts","import { Dom } from '../../../utils/Dom';\nimport PopperJs from 'popper.js';\nimport { ResponsiveComponentsManager } from '../ResponsiveComponentsManager';\n\nexport interface IResponsiveDropdownContent {\n element: Dom;\n\n positionDropdown(): void;\n hideDropdown(): void;\n cleanUp(): void;\n}\n\nexport class ResponsiveDropdownContent implements IResponsiveDropdownContent {\n public static DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-content';\n\n private coveoRoot: Dom;\n private cssClassName: string;\n\n private widthRatio: number;\n private minWidth: number;\n private popperReference: PopperJs;\n\n public static isTargetInsideOpenedDropdown(target: Dom) {\n const targetParentDropdown = target.parent(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n if (targetParentDropdown) {\n return targetParentDropdown.style.display != 'none';\n }\n return false;\n }\n\n constructor(componentName: string, public element: Dom, coveoRoot: Dom, minWidth: number, widthRatio: number) {\n this.cssClassName = `coveo-${componentName}-dropdown-content`;\n this.coveoRoot = coveoRoot;\n this.widthRatio = widthRatio;\n this.minWidth = minWidth;\n }\n\n public positionDropdown() {\n this.element.addClass(this.cssClassName);\n this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n this.element.el.style.display = '';\n\n let width = this.widthRatio * this.coveoRoot.width();\n if (width <= this.minWidth) {\n width = this.minWidth;\n }\n this.element.el.style.width = width.toString() + 'px';\n\n const referenceElement = this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`);\n\n this.popperReference = new PopperJs(referenceElement, this.element.el, {\n placement: 'bottom-end',\n positionFixed: true\n });\n }\n\n public hideDropdown() {\n if (this.popperReference) {\n this.popperReference.destroy();\n }\n\n this.element.el.style.display = 'none';\n this.element.removeClass(this.cssClassName);\n this.element.removeClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n }\n\n public cleanUp() {\n this.element.el.removeAttribute('style');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent.ts","import * as _ from 'underscore';\n\nexport class EventsUtils {\n private static prefixes = ['webkit', 'moz', 'MS', 'o', ''];\n\n // eventName must be in PascalCase\n public static addPrefixedEvent(element: HTMLElement, pascalCaseEventName: string, callback) {\n _.each(this.prefixes, prefix => {\n if (prefix == '') {\n pascalCaseEventName = pascalCaseEventName.toLowerCase();\n }\n element.addEventListener(prefix + pascalCaseEventName, callback, false);\n });\n }\n\n // eventName must be in PascalCase\n public static removePrefixedEvent(element: HTMLElement, pascalCaseEventName: string, callback) {\n _.each(this.prefixes, prefix => {\n if (prefix == '') {\n pascalCaseEventName = pascalCaseEventName.toLowerCase();\n }\n element.removeEventListener(prefix + pascalCaseEventName, callback, false);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/EventsUtils.ts","import { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { FacetSort } from './FacetSort';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport * as _ from 'underscore';\n\nexport class FacetValuesOrder {\n constructor(public facet: Facet, public facetSort: FacetSort) {}\n\n public reorderValues(facetValues: IIndexFieldValue[]): IIndexFieldValue[];\n public reorderValues(facetValues: FacetValue[]): FacetValue[];\n public reorderValues(facetValues: any[]): FacetValue[] | IIndexFieldValue[] {\n if (this.facetSort && this.facetSort.activeSort) {\n if (this.facetSort.activeSort.name == 'custom' && this.facet.options.customSort != undefined) {\n return this.reorderValuesWithCustomOrder(facetValues);\n } else if (this.facetSort.activeSort.name.indexOf('alpha') != -1) {\n return this.reorderValuesWithCustomCaption(facetValues);\n }\n }\n return facetValues;\n }\n\n private reorderValuesWithCustomOrder(facetValues: FacetValue[]) {\n let customSortsLowercase = _.map(this.facet.options.customSort, customSort => customSort.toLowerCase());\n let valueIndexPair = _.map(facetValues, (facetValue, i) => {\n // Get the index of the current value in the custom sort array.\n // If it's not found, put it's index to it's original value + the length of customSort so that's always after the specified custom sort order.\n let index = _.findIndex(customSortsLowercase, customSort => {\n return (\n StringUtils.equalsCaseInsensitive(<string>customSort, facetValue.value) ||\n (facetValue.lookupValue != null && StringUtils.equalsCaseInsensitive(<string>customSort, facetValue.lookupValue))\n );\n });\n if (index == -1) {\n index = i + customSortsLowercase.length;\n }\n return { facetValue: facetValue, index: index };\n });\n let sorted = _.sortBy(valueIndexPair, 'index');\n sorted = this.facetSort.customSortDirection == 'ascending' ? sorted : sorted.reverse();\n return _.pluck(sorted, 'facetValue');\n }\n\n private reorderValuesWithCustomCaption(facetValues: FacetValue[]) {\n let sorted = facetValues.sort((firstValue, secondValue) => {\n return this.facet.getValueCaption(firstValue).localeCompare(this.facet.getValueCaption(secondValue), String['locale'], {\n sensitivity: 'base'\n });\n });\n if (this.facetSort.activeSort.name.indexOf('descending') != -1) {\n sorted = sorted.reverse();\n }\n return sorted;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValuesOrder.ts","import { ResponsiveFacetColumn } from './ResponsiveFacetColumn';\nimport { IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { Facet } from '../Facet/Facet';\n\nexport class ResponsiveFacets extends ResponsiveFacetColumn {\n public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n ResponsiveFacetColumn.init(ResponsiveFacets, root, component, options, Facet.ID);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacets.ts","import { ResponsiveDropdownHeader } from './ResponsiveDropdownHeader';\nimport { IResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { EventsUtils } from '../../../utils/EventsUtils';\nimport * as _ from 'underscore';\nimport { AccessibleButton } from '../../../utils/AccessibleButton';\nimport { KeyboardUtils, KEYBOARD } from '../../../utils/KeyboardUtils';\nimport { InitializationEvents } from '../../../events/InitializationEvents';\nexport enum ResponsiveDropdownEvent {\n OPEN = 'responsiveDropdownOpen',\n CLOSE = 'responsiveDropdownClose'\n}\n\ntype HandlerCall = { handler: Function; context: any };\n\nexport class ResponsiveDropdown {\n public static TRANSPARENT_BACKGROUND_OPACITY: string = '0.9';\n public static DROPDOWN_BACKGROUND_CSS_CLASS_NAME: string = 'coveo-dropdown-background';\n\n public isOpened: boolean = false;\n\n private onOpenHandlers: HandlerCall[] = [];\n private onCloseHandlers: HandlerCall[] = [];\n private popupBackground: Dom;\n private popupBackgroundIsEnabled: boolean = true;\n private previousSibling: Dom;\n private parent: Dom;\n\n constructor(public dropdownContent: IResponsiveDropdownContent, public dropdownHeader: ResponsiveDropdownHeader, public coveoRoot: Dom) {\n this.popupBackground = this.buildPopupBackground();\n this.bindOnClickDropdownHeaderEvent();\n this.saveContentPosition();\n this.bindOnKeyboardEscapeEvent();\n this.bindNukeEvents();\n }\n\n public registerOnOpenHandler(handler: Function, context) {\n this.onOpenHandlers.push({ handler: handler, context: context });\n }\n\n public registerOnCloseHandler(handler: Function, context) {\n this.onCloseHandlers.push({ handler: handler, context: context });\n }\n\n public cleanUp() {\n this.close();\n this.dropdownHeader.cleanUp();\n this.dropdownContent.cleanUp();\n this.restoreContentPosition();\n }\n\n public open() {\n this.isOpened = true;\n this.dropdownHeader.open();\n this.dropdownContent.positionDropdown();\n _.each(this.onOpenHandlers, handlerCall => {\n handlerCall.handler.apply(handlerCall.context);\n });\n this.showPopupBackground();\n $$(this.dropdownHeader.element).trigger(ResponsiveDropdownEvent.OPEN);\n }\n\n public close() {\n this.isOpened = false;\n _.each(this.onCloseHandlers, handlerCall => {\n handlerCall.handler.apply(handlerCall.context);\n });\n\n this.dropdownHeader.close();\n this.dropdownContent.hideDropdown();\n this.hidePopupBackground();\n $$(this.dropdownHeader.element).trigger(ResponsiveDropdownEvent.CLOSE);\n }\n\n public disablePopupBackground() {\n this.popupBackgroundIsEnabled = false;\n }\n\n private bindOnClickDropdownHeaderEvent() {\n new AccessibleButton()\n .withElement(this.dropdownHeader.element)\n .withSelectAction(() => (this.isOpened ? this.close() : this.open()))\n .withLabel('Filters')\n .build();\n }\n\n private closeIfOpened = () => {\n this.isOpened && this.close();\n };\n\n private bindOnKeyboardEscapeEvent() {\n $$(document.documentElement).on('keyup', KeyboardUtils.keypressAction(KEYBOARD.ESCAPE, this.closeIfOpened));\n }\n\n private unbindOnKeyboardEscapeEvent() {\n $$(document.documentElement).off('keyup', KeyboardUtils.keypressAction(KEYBOARD.ESCAPE, this.closeIfOpened));\n }\n\n private bindNukeEvents() {\n $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n this.unbindOnKeyboardEscapeEvent();\n });\n }\n\n private showPopupBackground() {\n if (this.popupBackgroundIsEnabled) {\n this.coveoRoot.el.appendChild(this.popupBackground.el);\n window.getComputedStyle(this.popupBackground.el).opacity;\n this.popupBackground.el.style.opacity = ResponsiveDropdown.TRANSPARENT_BACKGROUND_OPACITY;\n this.popupBackground.addClass('coveo-dropdown-background-active');\n }\n }\n\n private hidePopupBackground() {\n if (this.popupBackgroundIsEnabled) {\n // forces the browser to reflow the element, so that the transition is applied.\n window.getComputedStyle(this.popupBackground.el).opacity;\n this.popupBackground.el.style.opacity = '0';\n this.popupBackground.removeClass('coveo-dropdown-background-active');\n }\n }\n\n private buildPopupBackground(): Dom {\n let popupBackground = $$('div', { className: ResponsiveDropdown.DROPDOWN_BACKGROUND_CSS_CLASS_NAME });\n EventsUtils.addPrefixedEvent(popupBackground.el, 'TransitionEnd', () => {\n if (popupBackground.el.style.opacity == '0') {\n popupBackground.detach();\n }\n });\n popupBackground.on('click', () => this.close());\n return popupBackground;\n }\n\n private saveContentPosition() {\n let dropdownContentPreviousSibling = this.dropdownContent.element.el.previousSibling;\n let dropdownContentParent = this.dropdownContent.element.el.parentElement;\n this.previousSibling = dropdownContentPreviousSibling ? $$(<HTMLElement>dropdownContentPreviousSibling) : null;\n this.parent = $$(dropdownContentParent);\n }\n\n private restoreContentPosition() {\n if (this.previousSibling) {\n this.dropdownContent.element.insertAfter(this.previousSibling.el);\n } else {\n this.parent.prepend(this.dropdownContent.element.el);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown.ts","/// <reference path='../ui/Facet/Facet.ts' />\n\nimport { Facet } from '../ui/Facet/Facet';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { IGroupByResult } from '../rest/GroupByResult';\nimport { ExpressionBuilder } from '../ui/Base/ExpressionBuilder';\nimport { FacetValue } from '../ui/Facet/FacetValues';\nimport { Utils } from '../utils/Utils';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { FacetSearchParameters } from '../ui/Facet/FacetSearchParameters';\nimport { Assert } from '../misc/Assert';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { FacetUtils } from '../ui/Facet/FacetUtils';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IGroupByValue } from '../rest/GroupByValue';\nimport { IEndpointError } from '../rest/EndpointError';\nimport * as _ from 'underscore';\nimport { QueryBuilderExpression } from '../ui/Base/QueryBuilderExpression';\n\nexport class FacetQueryController {\n public expressionToUseForFacetSearch: string;\n public basicExpressionToUseForFacetSearch: string;\n public advancedExpressionToUseForFacetSearch: string;\n public constantExpressionToUseForFacetSearch: string;\n public lastGroupByRequestIndex: number;\n public lastGroupByRequest: IGroupByRequest;\n public lastGroupByResult: IGroupByResult;\n\n private currentSearchPromise: Promise<IQueryResults>;\n\n constructor(public facet: Facet) {}\n\n /**\n * Reset the expression for the facet search, used when a new query is triggered\n */\n public prepareForNewQuery() {\n this.lastGroupByRequestIndex = undefined;\n this.expressionToUseForFacetSearch = undefined;\n this.constantExpressionToUseForFacetSearch = undefined;\n }\n\n /**\n * Compute the filter expression that the facet needs to output for the query\n * @returns {string}\n */\n public computeOurFilterExpression(): string {\n const builder = new ExpressionBuilder();\n const selected = this.facet.values.getSelected();\n if (selected.length > 0) {\n if (this.facet.options.useAnd) {\n _.each(selected, (value: FacetValue) => {\n builder.addFieldExpression(<string>this.facet.options.field, '==', [value.value]);\n });\n } else {\n builder.addFieldExpression(<string>this.facet.options.field, '==', _.map(selected, (value: FacetValue) => value.value));\n }\n }\n const excluded = this.facet.values.getExcluded();\n if (excluded.length > 0) {\n builder.addFieldNotEqualExpression(<string>this.facet.options.field, _.map(excluded, (value: FacetValue) => value.value));\n }\n if (Utils.isNonEmptyString(this.facet.options.additionalFilter)) {\n builder.add(this.facet.options.additionalFilter);\n }\n return builder.build();\n }\n\n /**\n * Build the group by request for the facet, and insert it in the query builder\n * @param queryBuilder\n */\n public putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n Assert.exists(queryBuilder);\n\n const allowedValues = this.createGroupByAllowedValues();\n const groupByRequest = this.createBasicGroupByRequest(allowedValues);\n\n const queryOverrideObject = this.createGroupByQueryOverride(queryBuilder);\n if (!Utils.isNullOrUndefined(queryOverrideObject) || !QueryBuilderExpression.isEmpty(queryOverrideObject)) {\n groupByRequest.queryOverride = queryOverrideObject.basic;\n groupByRequest.advancedQueryOverride = queryOverrideObject.advanced;\n groupByRequest.constantQueryOverride = queryOverrideObject.constant;\n this.expressionToUseForFacetSearch = queryOverrideObject.withoutConstant;\n this.basicExpressionToUseForFacetSearch = queryOverrideObject.basic;\n this.advancedExpressionToUseForFacetSearch = queryOverrideObject.advanced;\n this.constantExpressionToUseForFacetSearch = queryOverrideObject.constant;\n } else {\n const parts = queryBuilder.computeCompleteExpressionParts();\n this.expressionToUseForFacetSearch = parts.withoutConstant == null ? '' : parts.withoutConstant;\n this.basicExpressionToUseForFacetSearch = parts.basic == null ? '' : parts.basic;\n this.advancedExpressionToUseForFacetSearch = parts.advanced;\n this.constantExpressionToUseForFacetSearch = parts.constant;\n }\n this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n this.lastGroupByRequest = groupByRequest;\n queryBuilder.groupByRequests.push(groupByRequest);\n }\n\n /**\n * Search inside the facet, using a group by request\n * @param params\n * @param oldLength Optional params, used by the search method to call itself recursively to fetch all required values\n * @returns {Promise|Promise<T>}\n */\n public search(params: FacetSearchParameters, oldLength = params.nbResults): Promise<IIndexFieldValue[]> {\n // For search, we want to retrieve the exact values we requested, and not additional ones\n params.completeFacetWithStandardValues = false;\n return new Promise((resolve, reject) => {\n const onResult = (fieldValues?: IIndexFieldValue[]) => {\n const newLength = fieldValues.length;\n fieldValues = this.checkForFacetSearchValuesToRemove(fieldValues, params.valueToSearch);\n if (FacetUtils.needAnotherFacetSearch(fieldValues.length, newLength, oldLength, 5)) {\n // This means that we removed enough values from the returned one that we need to perform a new search with more values requested.\n params.nbResults += 5;\n return this.search(params, fieldValues.length);\n } else {\n resolve(fieldValues);\n }\n };\n\n const searchPromise = this.facet.getEndpoint().search(params.getQuery());\n this.currentSearchPromise = searchPromise;\n\n searchPromise\n .then((queryResults: IQueryResults) => {\n if (this.currentSearchPromise == searchPromise) {\n // params.getQuery() will generate a query for all excluded values + some new values\n // there is no clean way to do a group by and remove some values\n // so instead we request more values than we need, and crop all the one we don't want\n const valuesCropped: IGroupByValue[] = [];\n if (queryResults.groupByResults && queryResults.groupByResults[0]) {\n _.each(queryResults.groupByResults[0].values, (v: IGroupByValue) => {\n if (v.lookupValue) {\n if (!_.contains(params.alwaysExclude, v.lookupValue.toLowerCase())) {\n valuesCropped.push(v);\n }\n } else {\n if (!_.contains(params.alwaysExclude, v.value.toLowerCase())) {\n valuesCropped.push(v);\n }\n }\n });\n }\n onResult(_.first(valuesCropped, params.nbResults));\n } else {\n reject();\n }\n })\n .catch((error: IEndpointError) => {\n reject(error);\n });\n });\n }\n\n public fetchMore(numberOfValuesToFetch: number): Promise<IQueryResults> {\n const params = new FacetSearchParameters(this.facet);\n params.alwaysInclude = this.facet.options.allowedValues || _.pluck(this.facet.values.getAll(), 'value');\n params.nbResults = numberOfValuesToFetch;\n return this.facet\n .getEndpoint()\n .search(params.getQuery())\n .then((results: IQueryResults) => {\n if (this.facet.options.allowedValues && results && results.groupByResults && results.groupByResults[0]) {\n results.groupByResults[0].values = this.filterByAllowedValueOption(results.groupByResults[0].values);\n }\n return results;\n });\n }\n\n public searchInFacetToUpdateDelta(facetValues: FacetValue[]): Promise<IQueryResults> {\n const params = new FacetSearchParameters(this.facet);\n const query = params.getQuery();\n query.aq = `${query.aq ? query.aq : ''} ${this.computeOurFilterExpression()}`;\n _.each(facetValues, (facetValue: FacetValue) => {\n facetValue.waitingForDelta = true;\n });\n query.groupBy = [this.createBasicGroupByRequest(_.map(facetValues, (facetValue: FacetValue) => facetValue.value))];\n query.groupBy[0].completeFacetWithStandardValues = false;\n return this.facet.getEndpoint().search(query);\n }\n\n protected createGroupByAllowedValues() {\n // if you want to keep displayed values next time, take all current values as allowed values\n // otherwise take only the selected value\n if (this.facet.options.allowedValues != undefined) {\n return this.facet.options.allowedValues;\n } else if (this.facet.options.customSort != undefined) {\n // If there is a custom sort, we still need to add selectedValues to the group by\n // Filter out duplicates with a lower case comparison on the value\n return this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.getAllowedValuesFromSelected());\n } else {\n return _.map(this.getAllowedValuesFromSelected(), (facetValue: FacetValue) => facetValue.value);\n }\n }\n\n protected createBasicGroupByRequest(allowedValues?: string[], addComputedField: boolean = true): IGroupByRequest {\n let nbOfRequestedValues = this.facet.numberOfValues;\n if (this.facet.options.customSort != null) {\n // If we have a custom sort, we need to make sure that we always request at least enough values to always receive them\n const usedValues = this.getUnionWithCustomSortLowercase(\n this.facet.options.customSort,\n this.facet.values.getSelected().concat(this.facet.values.getExcluded())\n );\n nbOfRequestedValues = Math.max(nbOfRequestedValues, usedValues.length);\n }\n const groupByRequest: IGroupByRequest = {\n field: <string>this.facet.options.field,\n maximumNumberOfValues: nbOfRequestedValues + (this.facet.options.enableMoreLess ? 1 : 0),\n sortCriteria: this.facet.options.sortCriteria,\n injectionDepth: this.facet.options.injectionDepth,\n completeFacetWithStandardValues: this.facet.options.allowedValues == undefined ? true : false\n };\n if (this.facet.options.lookupField) {\n groupByRequest.lookupField = <string>this.facet.options.lookupField;\n }\n if (allowedValues != null) {\n groupByRequest.allowedValues = allowedValues;\n }\n\n if (addComputedField && Utils.isNonEmptyString(<string>this.facet.options.computedField)) {\n groupByRequest.computedFields = [\n {\n field: <string>this.facet.options.computedField,\n operation: this.facet.options.computedFieldOperation\n }\n ];\n }\n return groupByRequest;\n }\n\n protected getAllowedValuesFromSelected() {\n let facetValues: FacetValue[] = [];\n if (this.facet.options.useAnd || !this.facet.keepDisplayedValuesNextTime) {\n const selected = this.facet.values.getSelected();\n if (selected.length == 0) {\n return undefined;\n }\n facetValues = this.facet.values.getSelected();\n } else {\n facetValues = this.facet.values.getAll();\n }\n return facetValues;\n }\n\n private get additionalFilter() {\n return this.facet.options.additionalFilter ? this.facet.options.additionalFilter : '';\n }\n\n private getUnionWithCustomSortLowercase(customSort: string[], facetValues: FacetValue[]) {\n // This will take the custom sort, compare it against the passed in facetValues\n // The comparison is lowercase.\n // The union of the 2 arrays with duplicated filtered out is returned.\n\n const toCompare = _.map(customSort, (val: string) => {\n return val.toLowerCase();\n });\n const filtered = _.chain(facetValues)\n .filter((facetValue: FacetValue) => {\n return !_.contains(toCompare, facetValue.value.toLowerCase());\n })\n .map((facetValue: FacetValue) => {\n return facetValue.value;\n })\n .value();\n return _.compact(customSort.concat(filtered));\n }\n\n private createGroupByQueryOverride(queryBuilder: QueryBuilder): QueryBuilderExpression {\n let queryBuilderExpression = queryBuilder.computeCompleteExpressionParts();\n\n if (this.queryOverrideIsNeededForMultiSelection()) {\n queryBuilderExpression = this.processQueryOverrideForMultiSelection(queryBuilder, queryBuilderExpression);\n } else {\n queryBuilderExpression.reset();\n }\n if (this.queryOverrideIsNeededForAdditionalFilter()) {\n queryBuilderExpression = this.processQueryOverrideForAdditionalFilter(queryBuilder, queryBuilderExpression);\n }\n\n queryBuilderExpression = this.processQueryOverrideForEmptyValues(queryBuilder, queryBuilderExpression);\n if (QueryBuilderExpression.isEmpty(queryBuilderExpression)) {\n return null;\n }\n return queryBuilderExpression;\n }\n\n private queryOverrideIsNeededForMultiSelection() {\n if (this.facet.options.useAnd) {\n return false;\n }\n if (this.facet.values.hasSelectedOrExcludedValues()) {\n return true;\n }\n return false;\n }\n\n private queryOverrideIsNeededForAdditionalFilter() {\n return Utils.isNonEmptyString(this.additionalFilter);\n }\n\n private processQueryOverrideForMultiSelection(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n if (this.facet.values.hasSelectedOrExcludedValues()) {\n mergeWith = queryBuilder.computeCompleteExpressionPartsExcept(this.computeOurFilterExpression());\n if (QueryBuilderExpression.isEmpty(mergeWith)) {\n mergeWith.advanced = '@uri';\n }\n }\n\n return mergeWith;\n }\n\n private processQueryOverrideForAdditionalFilter(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n if (Utils.isEmptyString(mergeWith.basic)) {\n mergeWith.basic = queryBuilder.expression.build();\n }\n if (Utils.isEmptyString(mergeWith.constant)) {\n const addExistingConstantExpressionIfNotEmpty = queryBuilder.constantExpression.isEmpty()\n ? ''\n : queryBuilder.constantExpression.build() + ' ';\n mergeWith.constant = `${addExistingConstantExpressionIfNotEmpty}${this.additionalFilter}`;\n } else {\n mergeWith.constant = `${mergeWith.constant} ${this.additionalFilter}`;\n }\n\n if (!mergeWith.advanced) {\n mergeWith.advanced = queryBuilder.advancedExpression.build();\n }\n\n return mergeWith;\n }\n\n private processQueryOverrideForEmptyValues(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n const withoutEmptyValues = _.chain(mergeWith)\n .keys()\n .each((key: string) => {\n if (Utils.isEmptyString(mergeWith[key]) || Utils.isNullOrUndefined(mergeWith[key])) {\n delete mergeWith[key];\n }\n })\n .value();\n\n if (_.keys(withoutEmptyValues).length == 0) {\n mergeWith = undefined;\n }\n\n return mergeWith;\n }\n\n private checkForFacetSearchValuesToRemove(fieldValues: IIndexFieldValue[], valueToCheckAgainst: string) {\n const regex = FacetUtils.getRegexToUseForFacetSearch(valueToCheckAgainst, this.facet.options.facetSearchIgnoreAccents);\n\n return _.filter<IIndexFieldValue>(fieldValues, fieldValue => {\n const isAllowed = _.isEmpty(this.facet.options.allowedValues) || this.isValueAllowedByAllowedValueOption(fieldValue.value);\n const value = this.facet.getValueCaption(fieldValue);\n return isAllowed && regex.test(value);\n });\n }\n\n private filterByAllowedValueOption(values: IGroupByValue[]): IGroupByValue[] {\n return _.filter(values, (value: IGroupByValue) => this.isValueAllowedByAllowedValueOption(value.value));\n }\n\n private isValueAllowedByAllowedValueOption(value: string): boolean {\n // Allowed value option on the facet should support * (wildcard searches)\n // We need to filter values client side the index will completeWithStandardValues\n // Replace the wildcard (*) for a regex match (.*)\n // Also replace the (?) with \"any character once\" since it is also supported by the index\n return _.some(this.facet.options.allowedValues, allowedValue => {\n const regex = new RegExp(`^${allowedValue.replace(/\\*/g, '.*').replace(/\\?/g, '.')}$`, 'gi');\n return regex.test(value);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetQueryController.ts","import { Logger } from '../misc/Logger';\nimport { ComponentEvents } from '../ui/Base/Component';\nimport { KEYBOARD, KeyboardUtils } from '../utils/KeyboardUtils';\nimport { $$, Dom } from './Dom';\nimport 'styling/_AccessibleButton';\n\nexport class AccessibleButton {\n private element: Dom;\n private label: string;\n private title: string;\n\n private clickAction: (e: Event) => void;\n private enterKeyboardAction: (e: Event) => void;\n private blurAction: (e: Event) => void;\n private mouseleaveAction: (e: Event) => void;\n private focusAction: (e: Event) => void;\n private mouseenterAction: (e: Event) => void;\n\n private logger: Logger;\n private eventOwner: ComponentEvents;\n\n public constructor() {\n this.logger = new Logger(this);\n }\n\n public withOwner(owner: ComponentEvents) {\n this.eventOwner = owner;\n return this;\n }\n\n public withElement(element: Dom | HTMLElement) {\n if (element instanceof HTMLElement) {\n this.element = $$(element);\n } else {\n this.element = element;\n }\n return this;\n }\n\n public withLabel(label: string) {\n this.label = label;\n return this;\n }\n\n public withTitle(title: string) {\n this.title = title;\n return this;\n }\n\n public withSelectAction(action: (e: Event) => void) {\n this.clickAction = action;\n this.enterKeyboardAction = action;\n return this;\n }\n\n public withClickAction(clickAction: (e: Event) => void) {\n this.clickAction = clickAction;\n return this;\n }\n\n public withEnterKeyboardAction(enterAction: (e: Event) => void) {\n this.enterKeyboardAction = enterAction;\n return this;\n }\n\n public withFocusAndMouseEnterAction(action: (e: Event) => void) {\n this.focusAction = action;\n this.mouseenterAction = action;\n return this;\n }\n\n public withFocusAction(action: (e: Event) => void) {\n this.focusAction = action;\n return this;\n }\n\n public withMouseEnterAction(action: (e: Event) => void) {\n this.mouseenterAction = action;\n return this;\n }\n\n public withBlurAndMouseLeaveAction(action: (e: Event) => void) {\n this.mouseleaveAction = action;\n this.blurAction = action;\n return this;\n }\n\n public withMouseLeaveAction(action: (e: Event) => void) {\n this.mouseleaveAction = action;\n return this;\n }\n\n public withBlurAction(action: (e: Event) => void) {\n this.blurAction = action;\n return this;\n }\n\n public build() {\n if (!this.element) {\n this.element = $$('div');\n }\n\n this.ensureCorrectRole();\n this.ensureCorrectLabel();\n this.ensureTitle();\n this.ensureSelectAction();\n this.ensureUnselectAction();\n this.ensureMouseenterAndFocusAction();\n this.ensureMouseleaveAndBlurAction();\n this.ensureDifferentiationBetweenKeyboardAndMouseFocus();\n\n return this;\n }\n\n private ensureDifferentiationBetweenKeyboardAndMouseFocus() {\n const classOnPress = 'coveo-accessible-button-pressed';\n const classOnFocus = 'coveo-accessible-button-focused';\n $$(this.element).addClass('coveo-accessible-button');\n\n $$(this.element).on('mousedown', () => {\n $$(this.element).addClass(classOnPress);\n $$(this.element).removeClass(classOnFocus);\n });\n\n $$(this.element).on('mouseup', () => $$(this.element).removeClass(classOnPress));\n $$(this.element).on('focus', () => {\n if (!$$(this.element).hasClass(classOnPress)) {\n $$(this.element).addClass(classOnFocus);\n }\n });\n\n $$(this.element).on('blur', () => $$(this.element).removeClass(classOnFocus));\n }\n\n private ensureCorrectRole() {\n if (!this.element.getAttribute('role')) {\n this.element.setAttribute('role', 'button');\n }\n }\n\n private ensureCorrectLabel() {\n if (!this.label) {\n this.logger.error(`Missing label to create an accessible button !`);\n return;\n }\n this.element.setAttribute('aria-label', this.label);\n }\n\n private ensureTitle() {\n this.title && this.element.setAttribute('title', this.title);\n }\n\n private ensureTabIndex() {\n this.element.setAttribute('tabindex', '0');\n }\n\n private ensureSelectAction() {\n if (this.enterKeyboardAction) {\n this.ensureTabIndex();\n this.bindEvent('keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, (e: Event) => this.enterKeyboardAction(e)));\n }\n\n if (this.clickAction) {\n this.bindEvent('click', this.clickAction);\n }\n }\n\n private ensureUnselectAction() {\n if (this.blurAction) {\n this.bindEvent('blur', this.blurAction);\n }\n\n if (this.mouseleaveAction) {\n this.bindEvent('mouseleave', this.mouseleaveAction);\n }\n }\n\n private ensureMouseenterAndFocusAction() {\n if (this.mouseenterAction) {\n this.bindEvent('mouseenter', this.mouseenterAction);\n }\n if (this.focusAction) {\n this.bindEvent('focus', this.focusAction);\n }\n }\n\n private ensureMouseleaveAndBlurAction() {\n if (this.mouseleaveAction) {\n this.bindEvent('mouseleave', this.mouseleaveAction);\n }\n if (this.blurAction) {\n this.bindEvent('blur', this.blurAction);\n }\n }\n\n private bindEvent(event: string, action: (...args: any[]) => void) {\n if (this.eventOwner) {\n this.eventOwner.on(this.element, event, action);\n } else {\n $$(this.element).on(event, action);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AccessibleButton.ts","/**\n * The possible values for the [allowedValuesPatternType]{@link IGroupByRequest.allowedValuesPatternType} property of the `IGroupByRequest` interface.\n */\nexport enum AllowedValuesPatternType {\n /**\n * Only supports trailing wildcards in the pattern.\n */\n Legacy = 'legacy',\n /**\n * Fully supports wildcards.\n */\n Wildcards = 'wildcards',\n /**\n * Supports regular expression as the pattern.\n */\n Regex = 'regex',\n /**\n *Applies the Edit Distance algorithm to match values that are close to the specified pattern.\n */\n EditDistance = 'editdistance',\n /**\n *Applies a phonetic algorithm to match values that are phonetically similar to the specified pattern.\n */\n Phonetic = 'phonetic'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AllowedValuesPatternType.ts","import { $$, Dom } from '../../../utils/Dom';\nexport class ResponsiveDropdownHeader {\n public static DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-header';\n public static ACTIVE_HEADER_CSS_CLASS_NAME: string = 'coveo-dropdown-header-active';\n\n constructor(componentName: string, public element: Dom) {\n this.element.addClass(`coveo-${componentName}-dropdown-header`);\n this.element.addClass(ResponsiveDropdownHeader.DEFAULT_CSS_CLASS_NAME);\n }\n\n public open() {\n this.element.addClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n }\n\n public close() {\n this.element.removeClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n }\n\n public cleanUp() {\n this.element.detach();\n }\n\n public hide() {\n $$(this.element).addClass('coveo-hidden');\n }\n\n public show() {\n $$(this.element).removeClass('coveo-hidden');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader.ts","/// <reference path=\"Facet.ts\" />\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { ValueElementRenderer } from './ValueElementRenderer';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsActionCause, analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { $$ } from '../../utils/Dom';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\n\nexport interface IValueElementKlass {\n new (facet: Facet, facetValue: FacetValue): ValueElement;\n}\n\nexport interface IValueElementEventsBinding {\n displayNextTime: boolean;\n pinFacet: boolean;\n omniboxObject?: IPopulateOmniboxObject;\n}\n\nexport class ValueElement {\n public renderer: ValueElementRenderer;\n private isOmnibox: boolean;\n\n constructor(\n public facet: Facet,\n public facetValue: FacetValue,\n public onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n public onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n ) {}\n\n public build(): ValueElement {\n this.renderer = new ValueElementRenderer(this.facet, this.facetValue).build();\n this.bindEvent({ displayNextTime: true, pinFacet: this.facet.options.preservePosition });\n return this;\n }\n\n public bindEvent(eventBindings: IValueElementEventsBinding) {\n if (!Utils.isNullOrUndefined(eventBindings.omniboxObject)) {\n this.isOmnibox = true;\n } else {\n this.isOmnibox = false;\n }\n this.handleEventForCheckboxChange(eventBindings);\n if (this.facetValue.excluded) {\n this.handleEventForExcludedValueElement(eventBindings);\n } else {\n this.handleEventForValueElement(eventBindings);\n }\n }\n\n public select() {\n this.facetValue.selected = true;\n this.facetValue.excluded = false;\n this.renderer.setCssClassOnListValueElement();\n }\n\n public unselect() {\n this.facetValue.selected = false;\n this.facetValue.excluded = false;\n this.renderer.setCssClassOnListValueElement();\n }\n\n public exclude() {\n this.facetValue.selected = false;\n this.facetValue.excluded = true;\n this.renderer.setCssClassOnListValueElement();\n }\n\n public unexclude() {\n this.facetValue.selected = false;\n this.facetValue.excluded = false;\n this.renderer.setCssClassOnListValueElement();\n }\n\n public toggleExcludeWithUA() {\n let actionCause: IAnalyticsActionCause;\n if (this.facetValue.excluded) {\n actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetUnexclude : analyticsActionCauseList.facetUnexclude;\n } else {\n actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetExclude : analyticsActionCauseList.facetExclude;\n }\n\n this.facet.toggleExcludeValue(this.facetValue);\n\n if (this.onExclude) {\n this.facet.triggerNewQuery(() => this.onExclude(this, actionCause));\n } else {\n this.facet.triggerNewQuery(() =>\n this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, this.getAnalyticsFacetMeta())\n );\n }\n }\n\n protected handleSelectValue(eventBindings: IValueElementEventsBinding) {\n this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n var actionCause: IAnalyticsActionCause;\n if (this.facetValue.excluded) {\n actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetUnexclude : analyticsActionCauseList.facetUnexclude;\n this.facet.unexcludeValue(this.facetValue);\n } else {\n if (this.facetValue.selected) {\n actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetDeselect : analyticsActionCauseList.facetDeselect;\n } else {\n actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetSelect : analyticsActionCauseList.facetSelect;\n }\n this.facet.toggleSelectValue(this.facetValue);\n }\n if (this.onSelect) {\n this.facet.triggerNewQuery(() => this.onSelect(this, actionCause));\n } else {\n this.facet.triggerNewQuery(() =>\n this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, this.getAnalyticsFacetMeta())\n );\n }\n }\n\n protected handleExcludeClick(eventBindings: IValueElementEventsBinding) {\n this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n this.toggleExcludeWithUA();\n }\n\n protected handleEventForExcludedValueElement(eventBindings: IValueElementEventsBinding) {\n let clickEvent = (event: Event) => {\n if (eventBindings.pinFacet) {\n this.facet.pinFacetPosition();\n }\n if (eventBindings.omniboxObject) {\n this.omniboxCloseEvent(eventBindings.omniboxObject);\n }\n this.handleSelectValue(eventBindings);\n return false;\n };\n\n $$(this.renderer.label).on('click', e => {\n e.stopPropagation();\n clickEvent(e);\n });\n\n $$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], clickEvent));\n }\n\n protected handleEventForValueElement(eventBindings: IValueElementEventsBinding) {\n let excludeAction = (event: Event) => {\n if (eventBindings.omniboxObject) {\n this.omniboxCloseEvent(eventBindings.omniboxObject);\n }\n\n this.handleExcludeClick(eventBindings);\n\n if (this.facet && this.facet.facetSearch && this.facet.facetSearch.dismissSearchResults) {\n this.facet.facetSearch.dismissSearchResults();\n }\n event.stopPropagation();\n event.preventDefault();\n };\n $$(this.renderer.excludeIcon).on('click', excludeAction);\n\n $$(this.renderer.excludeIcon).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], excludeAction));\n\n let selectAction = (event: Event) => {\n if (eventBindings.pinFacet) {\n this.facet.pinFacetPosition();\n }\n\n $$(this.renderer.checkbox).trigger('change');\n event.preventDefault();\n };\n\n $$(this.renderer.label).on('click', selectAction);\n\n $$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], selectAction));\n }\n\n protected handleEventForCheckboxChange(eventBindings: IValueElementEventsBinding) {\n $$(this.renderer.checkbox).on('change', () => {\n if (eventBindings.omniboxObject) {\n this.omniboxCloseEvent(eventBindings.omniboxObject);\n }\n this.handleSelectValue(eventBindings);\n });\n }\n\n protected omniboxCloseEvent(eventArg: IPopulateOmniboxObject) {\n eventArg.closeOmnibox();\n eventArg.clear();\n }\n\n private getAnalyticsFacetMeta(): IAnalyticsFacetMeta {\n return {\n facetId: this.facet.options.id,\n facetField: this.facet.options.field.toString(),\n facetValue: this.facetValue.value,\n facetTitle: this.facet.options.title\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/ValueElement.ts","import { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\nimport * as _ from 'underscore';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\n\nexport class ValueElementRenderer {\n public listItem: HTMLElement;\n public label: HTMLElement;\n public checkbox: HTMLElement;\n public stylishCheckbox: HTMLElement;\n public valueCaption: HTMLElement;\n public valueCount: HTMLElement;\n public icon: HTMLElement;\n public excludeIcon: HTMLElement;\n public computedField: HTMLElement;\n private facetValueLabelWrapper: HTMLElement;\n\n constructor(public facet: Facet, public facetValue: FacetValue) {}\n\n public withNo(element: HTMLElement[]): ValueElementRenderer;\n public withNo(element: HTMLElement): ValueElementRenderer;\n public withNo(element: any): ValueElementRenderer {\n if (_.isArray(element)) {\n _.each(element, (e: HTMLElement) => {\n if (e) {\n $$(e).detach();\n }\n });\n } else {\n if (element) {\n $$(element).detach();\n }\n }\n return this;\n }\n\n public build(): ValueElementRenderer {\n this.buildListItem();\n this.initAndAppendLabel();\n this.initAndAppendExcludeIcon();\n this.setCssClassOnListValueElement();\n this.addAccessibilityAttributesToTargetElement();\n return this;\n }\n\n public setCssClassOnListValueElement(): void {\n $$(this.listItem).toggleClass('coveo-selected', this.facetValue.selected);\n $$(this.listItem).toggleClass('coveo-excluded', this.facetValue.excluded);\n }\n\n public get accessibleElement() {\n return this.stylishCheckbox;\n }\n\n protected buildExcludeIcon(): HTMLElement {\n const excludeIcon = $$('div', {\n title: l('Exclude', this.facet.getValueCaption(this.facetValue)),\n className: 'coveo-facet-value-exclude',\n tabindex: 0\n }).el;\n this.addFocusAndBlurEventListeners(excludeIcon);\n excludeIcon.innerHTML = SVGIcons.icons.checkboxHookExclusionMore;\n SVGDom.addClassToSVGInContainer(excludeIcon, 'coveo-facet-value-exclude-svg');\n return excludeIcon;\n }\n\n protected buildValueComputedField(): HTMLElement {\n const computedField = this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat);\n if (Utils.isNonEmptyString(computedField)) {\n const elem = $$('span', {\n className: 'coveo-facet-value-computed-field'\n }).el;\n $$(elem).text(computedField);\n return elem;\n } else {\n return undefined;\n }\n }\n\n protected buildValueCheckbox(): HTMLElement {\n const checkbox = $$('input', {\n type: 'checkbox'\n }).el;\n if (this.facetValue.selected) {\n checkbox.setAttribute('checked', 'checked');\n } else {\n checkbox.removeAttribute('checked');\n }\n if (this.facetValue.excluded) {\n checkbox.setAttribute('disabled', 'disabled');\n } else {\n checkbox.removeAttribute('disabled');\n }\n Component.pointElementsToDummyForm(checkbox);\n return checkbox;\n }\n\n protected buildValueStylishCheckbox(): HTMLElement {\n const checkbox = $$('div', {\n className: 'coveo-facet-value-checkbox',\n tabindex: 0\n }).el;\n checkbox.innerHTML = SVGIcons.icons.checkboxHookExclusionMore;\n SVGDom.addClassToSVGInContainer(checkbox, 'coveo-facet-value-checkbox-svg');\n this.addFocusAndBlurEventListeners(checkbox);\n return checkbox;\n }\n\n protected buildValueIcon(): HTMLElement {\n const icon = this.getValueIcon();\n if (Utils.exists(icon)) {\n return $$('img', {\n className: 'coveo-facet-value-icon coveo-icon',\n src: this.getValueIcon()\n }).el;\n } else {\n return this.buildValueIconFromSprite();\n }\n }\n\n protected getValueIcon(): string {\n if (Utils.exists(this.facet.options.valueIcon)) {\n return this.facet.options.valueIcon(this.facetValue);\n } else {\n return undefined;\n }\n }\n\n protected buildValueIconFromSprite(): HTMLElement {\n return $$('div', {\n className: 'coveo-facet-value-icon coveo-icon ' + this.facet.options.field.substr(1) + ' ' + this.facetValue.value\n }).el;\n }\n\n protected buildValueCaption(): HTMLElement {\n const valueCaption = $$('span', {\n className: 'coveo-facet-value-caption',\n title: this.caption,\n 'data-original-value': this.facetValue.value\n }).el;\n\n $$(valueCaption).text(this.caption);\n return valueCaption;\n }\n\n protected buildValueCount(): HTMLElement {\n if (Utils.isNonEmptyString(this.count)) {\n const countElement = $$('span', {\n className: 'coveo-facet-value-count'\n }).el;\n $$(countElement).text(this.count);\n return countElement;\n } else {\n return undefined;\n }\n }\n\n private get caption() {\n return this.facet.getValueCaption(this.facetValue);\n }\n\n private get count() {\n return this.facetValue.getFormattedCount();\n }\n\n private addFocusAndBlurEventListeners(elem: HTMLElement) {\n $$(elem).on('focus', () => $$(this.listItem).addClass('coveo-focused'));\n $$(elem).on('blur', () => $$(this.listItem).removeClass('coveo-focused'));\n }\n\n private buildListItem() {\n this.listItem = $$('li', { className: 'coveo-facet-value coveo-facet-selectable' }).el;\n this.listItem.setAttribute('data-value', this.facetValue.value);\n }\n\n private initAndAppendLabel() {\n this.label = $$('label', { className: 'coveo-facet-value-label' }).el;\n this.tryToInitAndAppendComputedField();\n this.initAndAppendFacetValueLabelWrapper();\n this.listItem.appendChild(this.label);\n }\n\n private initAndAppendExcludeIcon() {\n this.excludeIcon = this.buildExcludeIcon();\n this.attachExcludeIconEventHandlers();\n this.listItem.appendChild(this.excludeIcon);\n }\n\n private attachExcludeIconEventHandlers() {\n $$(this.excludeIcon).on('mouseover', () => {\n $$(this.listItem).addClass('coveo-facet-value-will-exclude');\n });\n\n $$(this.excludeIcon).on('mouseout', () => {\n $$(this.listItem).removeClass('coveo-facet-value-will-exclude');\n });\n }\n\n private tryToInitAndAppendComputedField() {\n if (!Utils.exists(this.facetValue.computedField)) {\n return;\n }\n\n this.computedField = this.buildValueComputedField();\n\n if (!this.computedField) {\n return;\n }\n\n this.label.appendChild(this.computedField);\n $$(this.label).addClass('coveo-with-computed-field');\n }\n\n private initAndAppendFacetValueLabelWrapper() {\n this.facetValueLabelWrapper = $$('div', { className: 'coveo-facet-value-label-wrapper' }).el;\n\n this.initAndAppendCheckbox();\n this.initAndAppendStylishCheckbox();\n this.initAndAppendValueCount();\n this.initAndAppendValueCaption();\n\n this.label.appendChild(this.facetValueLabelWrapper);\n }\n\n private initAndAppendCheckbox() {\n this.checkbox = this.buildValueCheckbox();\n this.facetValueLabelWrapper.appendChild(this.checkbox);\n }\n\n private initAndAppendStylishCheckbox() {\n this.stylishCheckbox = this.buildValueStylishCheckbox();\n this.facetValueLabelWrapper.appendChild(this.stylishCheckbox);\n }\n\n private initAndAppendValueCount() {\n this.valueCount = this.buildValueCount();\n\n if (!this.valueCount) {\n return;\n }\n\n this.facetValueLabelWrapper.appendChild(this.valueCount);\n }\n\n private initAndAppendValueCaption() {\n this.valueCaption = this.buildValueCaption();\n this.facetValueLabelWrapper.appendChild(this.valueCaption);\n }\n\n private addAccessibilityAttributesToTargetElement() {\n const el = this.accessibleElement;\n el.setAttribute('aria-label', this.ariaLabel);\n el.setAttribute('role', 'heading');\n el.setAttribute('aria-level', '3');\n }\n\n private get ariaLabel() {\n const selectOrUnselect = !this.facetValue.selected ? 'SelectValueWithResultCount' : 'UnselectValueWithResultCount';\n const resultCount = l('ResultCount', this.count);\n\n return `${l(selectOrUnselect, this.caption, resultCount)}`;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/ValueElementRenderer.ts","import { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { Component } from '../Base/Component';\nimport { l } from '../../strings/Strings';\nimport { EventsUtils } from '../../utils/EventsUtils';\nimport { PopupUtils, PopupHorizontalAlignment, PopupVerticalAlignment } from '../../utils/PopupUtils';\nimport { IFacetSearch } from './IFacetSearch';\nimport { FacetSearchUserInputHandler } from './FacetSearchUserInputHandler';\nimport { uniqueId } from 'underscore';\nimport { ISearchDropdownNavigator, ISearchDropdownConfig } from './FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator';\nimport { SearchDropdownNavigatorFactory } from './FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory';\n\nexport class FacetSearchElement {\n public search: HTMLElement | undefined;\n public magnifier: HTMLElement | undefined;\n public wait: HTMLElement | undefined;\n public clear: HTMLElement | undefined;\n public input: HTMLInputElement | undefined;\n public combobox: HTMLElement | undefined;\n public searchBarIsAnimating: boolean = false;\n public searchResults: HTMLElement;\n public facetSearchUserInputHandler: FacetSearchUserInputHandler;\n\n private triggeredScroll = false;\n private static FACET_SEARCH_PADDING = 40;\n private facetSearchId = uniqueId('coveo-facet-search-results');\n private searchDropdownNavigator: ISearchDropdownNavigator;\n\n constructor(private facetSearch: IFacetSearch) {\n this.facetSearchUserInputHandler = new FacetSearchUserInputHandler(this.facetSearch);\n this.initSearchResults();\n }\n\n public build(handleFacetSearchClear?: () => void) {\n this.search = document.createElement('div');\n $$(this.search).addClass('coveo-facet-search');\n\n this.magnifier = this.buildMagnifierIcon();\n this.search.appendChild(this.magnifier);\n\n this.wait = this.buildWaitIcon();\n this.search.appendChild(this.wait);\n\n this.hideFacetSearchWaitingAnimation();\n\n this.clear = $$(\n 'div',\n { className: 'coveo-facet-search-clear', title: l('Clear', l('Search')) },\n SVGIcons.icons.checkboxHookExclusionMore\n ).el;\n SVGDom.addClassToSVGInContainer(this.clear, 'coveo-facet-search-clear-svg');\n this.clear.style.display = 'none';\n this.search.appendChild(this.clear);\n\n this.combobox = this.buildCombobox();\n this.search.appendChild(this.combobox);\n\n this.input = this.buildInputElement();\n Component.pointElementsToDummyForm(this.input);\n this.combobox.appendChild(this.input);\n\n $$(this.input).on('keyup', (e: KeyboardEvent) => {\n this.facetSearchUserInputHandler.handleKeyboardEvent(e);\n });\n $$(this.clear).on('click', (e: Event) => {\n handleFacetSearchClear && handleFacetSearchClear();\n });\n $$(this.input).on('focus', (e: Event) => {\n this.handleFacetSearchFocus();\n });\n\n this.detectSearchBarAnimation();\n this.initSearchDropdownNavigator();\n\n return this.search;\n }\n\n private initSearchResults() {\n this.searchResults = $$('ul', { id: this.facetSearchId, className: 'coveo-facet-search-results', role: 'listbox' }).el;\n $$(this.searchResults).on('scroll', () => this.handleScrollEvent());\n $$(this.searchResults).hide();\n }\n\n private initSearchDropdownNavigator() {\n const config: ISearchDropdownConfig = {\n input: this.input,\n searchResults: this.searchResults,\n setScrollTrigger: (val: boolean) => (this.triggeredScroll = val)\n };\n\n this.searchDropdownNavigator = SearchDropdownNavigatorFactory(this.facetSearch, config);\n }\n\n private buildCombobox() {\n return $$('div', {\n className: 'coveo-facet-search-middle',\n ariaHaspopup: 'listbox',\n ariaExpanded: 'true'\n }).el;\n }\n\n public showFacetSearchWaitingAnimation() {\n this.magnifier && $$(this.magnifier).hide();\n $$(this.wait).show();\n }\n\n public getValueInInputForFacetSearch() {\n return this.input.value.trim();\n }\n\n public hideFacetSearchWaitingAnimation() {\n $$(this.magnifier).show();\n $$(this.wait).hide();\n }\n\n public detectSearchBarAnimation() {\n EventsUtils.addPrefixedEvent(this.search, 'AnimationStart', event => {\n if (event.animationName == 'grow') {\n this.searchBarIsAnimating = true;\n }\n });\n\n EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', event => {\n if (event.animationName == 'grow') {\n this.searchBarIsAnimating = false;\n }\n });\n }\n\n public positionSearchResults(root: HTMLElement, facetWidth: number, nextTo: HTMLElement) {\n if (this.searchResults != null) {\n root.appendChild(this.searchResults);\n $$(this.searchResults).show();\n this.searchResults.style.width = facetWidth - FacetSearchElement.FACET_SEARCH_PADDING + 'px';\n\n if ($$(this.searchResults).css('display') == 'none') {\n this.searchResults.style.display = '';\n }\n let searchBar = $$(this.search);\n if (searchBar.css('display') == 'none' || this.searchBarIsAnimating) {\n if ($$(this.searchResults).css('display') == 'none') {\n this.searchResults.style.display = '';\n }\n EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', () => {\n this.positionPopUp(nextTo, root);\n EventsUtils.removePrefixedEvent(this.search, 'AnimationEnd', this);\n });\n } else {\n this.positionPopUp(nextTo, root);\n }\n }\n }\n\n public setAsCurrentResult(toSet: Dom) {\n this.searchDropdownNavigator.setAsCurrentResult(toSet);\n }\n\n public get currentResult() {\n return this.searchDropdownNavigator.currentResult;\n }\n\n public moveCurrentResultDown() {\n this.searchDropdownNavigator.focusNextElement();\n }\n\n public moveCurrentResultUp() {\n this.searchDropdownNavigator.focusPreviousElement();\n }\n\n public highlightCurrentQueryInSearchResults(regex: RegExp) {\n const captions = this.facetSearch.getCaptions();\n captions.forEach(caption => {\n caption.innerHTML = $$(caption)\n .text()\n .replace(regex, '<span class=\"coveo-highlight\">$1</span>');\n });\n }\n\n public appendToSearchResults(el: HTMLElement) {\n this.searchResults.appendChild(el);\n this.setupFacetSearchResultsEvents(el);\n }\n\n public focus() {\n this.input.focus();\n this.handleFacetSearchFocus();\n }\n\n private handleFacetSearchFocus() {\n if (this.facetSearch.currentlyDisplayedResults == null) {\n this.facetSearch.displayNewValues();\n this.addAriaAttributes();\n }\n }\n\n private setupFacetSearchResultsEvents(el: HTMLElement) {\n $$(el).on('mousemove', () => {\n this.setAsCurrentResult($$(el));\n });\n\n // Prevent closing the search results on the end of a touch drag\n let touchDragging = false;\n let mouseDragging = false;\n $$(el).on('mousedown', () => (mouseDragging = false));\n $$(el).on('mousemove', () => (mouseDragging = true));\n $$(el).on('touchmove', () => (touchDragging = true));\n\n $$(el).on('mouseup touchend', () => {\n if (!touchDragging && !mouseDragging) {\n setTimeout(() => {\n this.facetSearch.dismissSearchResults();\n }, 0); // setTimeout is to give time to trigger the click event before hiding the search menu.\n }\n touchDragging = false;\n mouseDragging = false;\n });\n }\n\n public hideSearchResultsElement() {\n this.removeAriaAttributes();\n $$(this.searchResults).hide();\n $$(this.searchResults).remove();\n }\n\n public clearSearchInput() {\n if (this.input) {\n this.input.value = '';\n }\n }\n\n private buildMagnifierIcon() {\n const magnifier = document.createElement('div');\n magnifier.innerHTML = SVGIcons.icons.search;\n $$(magnifier).addClass('coveo-facet-search-magnifier');\n SVGDom.addClassToSVGInContainer(magnifier, 'coveo-facet-search-magnifier-svg');\n this.search.appendChild(magnifier);\n return magnifier;\n }\n\n private buildWaitIcon() {\n const wait = document.createElement('div');\n wait.innerHTML = SVGIcons.icons.loading;\n $$(wait).addClass('coveo-facet-search-wait-animation');\n SVGDom.addClassToSVGInContainer(wait, 'coveo-facet-search-wait-animation-svg');\n return wait;\n }\n\n private buildInputElement() {\n return <HTMLInputElement>$$('input', {\n className: 'coveo-facet-search-input',\n type: 'text',\n autocapitalize: 'off',\n autocorrect: 'off',\n ariaLabel: l('Search'),\n ariaHaspopup: 'true',\n ariaAutocomplete: 'list'\n }).el;\n }\n\n private positionPopUp(nextTo: HTMLElement, root: HTMLElement) {\n PopupUtils.positionPopup(this.searchResults, nextTo, root, {\n horizontal: PopupHorizontalAlignment.CENTER,\n vertical: PopupVerticalAlignment.BOTTOM\n });\n }\n\n private handleScrollEvent() {\n if (this.triggeredScroll) {\n this.triggeredScroll = false;\n } else {\n this.facetSearchUserInputHandler.handleFacetSearchResultsScroll();\n }\n }\n\n private addAriaAttributes() {\n if (!this.input || !this.combobox) {\n return;\n }\n\n this.combobox.setAttribute('role', 'combobox');\n this.combobox.setAttribute('aria-owns', this.facetSearchId);\n this.input.setAttribute('aria-controls', this.facetSearchId);\n }\n\n private removeAriaAttributes() {\n if (!this.input || !this.combobox) {\n return;\n }\n\n this.combobox.removeAttribute('role');\n this.combobox.removeAttribute('aria-owns');\n this.input.removeAttribute('aria-controls');\n this.input.removeAttribute('aria-activedescendant');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchElement.ts","import { first, last } from 'underscore';\nimport { $$, Dom } from '../../../utils/Dom';\n\nexport interface ISearchDropdownNavigator {\n focusNextElement: () => void;\n focusPreviousElement: () => void;\n currentResult: Dom;\n setAsCurrentResult: (el: Dom) => void;\n}\n\nexport interface ISearchDropdownConfig {\n input: HTMLInputElement;\n searchResults: HTMLElement;\n setScrollTrigger: (value: boolean) => void;\n}\n\nexport class DefaultSearchDropdownNavigator implements ISearchDropdownNavigator {\n public currentResult: Dom;\n\n constructor(private config: ISearchDropdownConfig) {}\n\n public setAsCurrentResult(toSet: Dom) {\n this.currentResult && this.currentResult.removeClass('coveo-facet-search-current-result');\n this.currentResult = toSet;\n toSet.addClass('coveo-facet-search-current-result');\n this.updateSelectedOption(toSet);\n }\n\n public focusNextElement() {\n this.moveCurrentResultDown();\n }\n\n public focusPreviousElement() {\n this.moveCurrentResultUp();\n }\n\n public moveCurrentResultDown() {\n let nextResult = this.currentResult.el.nextElementSibling;\n if (!nextResult) {\n nextResult = first(this.searchResults.children);\n }\n this.setAsCurrentResult($$(<HTMLElement>nextResult));\n this.highlightAndShowCurrentResultWithKeyboard();\n }\n\n public moveCurrentResultUp() {\n let previousResult = this.currentResult.el.previousElementSibling;\n if (!previousResult) {\n previousResult = last(this.searchResults.children);\n }\n this.setAsCurrentResult($$(<HTMLElement>previousResult));\n this.highlightAndShowCurrentResultWithKeyboard();\n }\n\n private highlightAndShowCurrentResultWithKeyboard() {\n this.currentResult.addClass('coveo-facet-search-current-result');\n this.config.setScrollTrigger(true);\n this.searchResults.scrollTop = this.currentResult.el.offsetTop;\n }\n\n private get searchResults() {\n return this.config.searchResults;\n }\n\n private updateSelectedOption(option: Dom) {\n this.config.input.setAttribute('aria-activedescendant', option.getAttribute('id'));\n\n const previouslySelectedOption = $$(this.searchResults).find('[aria-selected^=\"true\"]');\n previouslySelectedOption && previouslySelectedOption.setAttribute('aria-selected', 'false');\n\n option.setAttribute('aria-selected', 'true');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator.ts","import { Dom } from '../../utils/Dom';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryValue, CategoryValueParent } from './CategoryValue';\nimport { CategoryFacet } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { each } from 'underscore';\n\nexport class CategoryChildrenValueRenderer {\n public children: CategoryValue[] = [];\n\n constructor(\n private element: Dom,\n private categoryFacetTemplates: CategoryFacetTemplates,\n private categoryValue: CategoryValueParent,\n private categoryFacet: CategoryFacet\n ) {}\n\n public clearChildren() {\n this.element.removeClass('coveo-active-category-facet-parent');\n this.children.forEach(child => {\n child.clear();\n });\n this.children = [];\n }\n\n public renderChildren(values: ICategoryFacetValue[]) {\n each(values, value => {\n this.renderValue(value, true).makeSelectable();\n });\n }\n\n public renderAsParent(value: ICategoryFacetValue) {\n const categoryValue = this.renderValue(value, false);\n return categoryValue;\n }\n\n private renderValue(value: ICategoryFacetValue, isChild: boolean) {\n const path = this.categoryValue.path.concat([value.value]);\n const categoryValueDescriptor = {\n value: value.value,\n count: value.numberOfResults,\n path\n };\n const categoryValue = new CategoryValue(\n this.categoryValue.listRoot,\n categoryValueDescriptor,\n this.categoryFacetTemplates,\n this.categoryFacet\n );\n categoryValue.render(isChild);\n this.children.push(categoryValue);\n return categoryValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValueChildrenRenderer.ts","import 'styling/_FacetSettings';\nimport { each, find, map, contains, compact, filter, findWhere, escape } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { LocalStorageUtils } from '../../utils/LocalStorageUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Facet } from './Facet';\nimport { FacetSort, IFacetSortDescription } from './FacetSort';\nimport Popper from 'popper.js';\n\nexport interface IFacetSettingsKlass {\n new (sorts: string[], facet: Facet): FacetSettings;\n}\n\nexport interface IFacetState {\n included: string[];\n excluded: string[];\n operator: string;\n}\n\n/**\n * Handle the rendering of the {@link Facet} settings menu (typically the ... in the facet header).\n */\nexport class FacetSettings extends FacetSort {\n public loadedFromSettings: { [attribute: string]: any };\n public settingsButton: HTMLElement;\n public settingsPopup: HTMLElement;\n\n private facetStateLocalStorage: LocalStorageUtils<IFacetState>;\n private includedStateAttribute: string;\n private excludedStateAttribute: string;\n private operatorStateAttribute: string;\n private directionSection: HTMLElement[];\n private saveStateSection: HTMLElement;\n private clearStateSection: HTMLElement;\n private hideSection: HTMLElement;\n private showSection: HTMLElement;\n private sortSection: { element: HTMLElement; sortItems: HTMLElement[] };\n private customSortDirectionChange = false;\n private onDocumentClick = () => this.close();\n private closeTimeout: number;\n private enabledSortsIgnoreRenderBecauseOfPairs: IFacetSortDescription[] = [];\n\n constructor(public sorts: string[], public facet: Facet) {\n super(sorts, facet);\n this.filterDuplicateForRendering();\n }\n\n /**\n * Build the menu, hook click events.\n * @returns {HTMLElement}\n */\n public build() {\n this.buildSettingsButton();\n this.buildSettingsPopup();\n\n if (Utils.isNonEmptyArray(this.enabledSorts)) {\n this.sortSection = this.buildSortSection();\n if (this.enabledSortsAllowDirection()) {\n this.directionSection = this.buildDirectionSection();\n }\n }\n if (this.facet.options.enableSettingsFacetState) {\n this.saveStateSection = this.buildSaveStateSection();\n this.clearStateSection = this.buildClearStateSection();\n }\n if (this.facet.options.enableCollapse) {\n this.hideSection = this.buildHideSection();\n this.showSection = this.buildShowSection();\n }\n\n const appendCommon = () => {\n this.appendIfNotUndefined(this.saveStateSection);\n this.appendIfNotUndefined(this.clearStateSection);\n this.appendIfNotUndefined(this.hideSection);\n this.appendIfNotUndefined(this.showSection);\n };\n\n this.addOnDocumentClickHandler();\n this.addOnNukeHandler();\n\n if (Utils.isNonEmptyArray(this.enabledSorts)) {\n this.settingsPopup.appendChild(this.sortSection.element);\n each(this.directionSection, d => {\n this.appendIfNotUndefined(d);\n });\n appendCommon();\n } else {\n appendCommon();\n }\n return this.settingsButton;\n }\n\n /**\n * Restore the facet state from local storage, and apply it in the query state model.\n */\n public loadSavedState() {\n if (this.facetStateLocalStorage) {\n // set the state from the settings only if there is nothing\n // in the query state model for the current facet\n const state = this.facetStateLocalStorage.load();\n const currentStateIncluded = this.facet.queryStateModel.get(this.includedStateAttribute);\n const currentStateExcluded = this.facet.queryStateModel.get(this.excludedStateAttribute);\n const currentStateOperator = this.facet.queryStateModel.get(this.operatorStateAttribute);\n if (\n !Utils.isNullOrUndefined(state) &&\n Utils.isEmptyArray(currentStateIncluded) &&\n Utils.isEmptyArray(currentStateExcluded) &&\n !Utils.isNonEmptyString(currentStateOperator)\n ) {\n const toSet: { [key: string]: any } = {};\n toSet[this.includedStateAttribute] = state.included;\n toSet[this.excludedStateAttribute] = state.excluded;\n toSet[this.operatorStateAttribute] = state.operator;\n this.facet.queryStateModel.setMultiple(toSet);\n this.loadedFromSettings = toSet;\n }\n } else {\n this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n }\n }\n\n /**\n * Take the current state of the facet and save it in the local storage.\n */\n public saveState() {\n if (this.facetStateLocalStorage) {\n this.facetStateLocalStorage.save({\n included: this.facet.queryStateModel.get(this.includedStateAttribute),\n excluded: this.facet.queryStateModel.get(this.excludedStateAttribute),\n operator: this.facet.queryStateModel.get(this.operatorStateAttribute)\n });\n } else {\n this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n }\n }\n\n /**\n * Close the settings menu\n */\n public close() {\n $$(this.settingsPopup).detach();\n }\n\n /**\n * Open the settings menu\n */\n public open() {\n $$(this.settingsPopup).insertAfter(this.settingsButton);\n new Popper(this.settingsButton, this.settingsPopup, {\n modifiers: {\n preventOverflow: {\n boundariesElement: this.facet.root\n }\n }\n });\n\n if (this.hideSection && this.showSection) {\n $$(this.hideSection).toggle(!$$(this.facet.element).hasClass('coveo-facet-collapsed'));\n $$(this.showSection).toggle($$(this.facet.element).hasClass('coveo-facet-collapsed'));\n }\n\n if (this.facet.options.enableSettingsFacetState) {\n $$(this.clearStateSection).toggle(!Utils.isNullOrUndefined(this.facetStateLocalStorage.load()));\n }\n\n each(this.enabledSorts, (criteria: IFacetSortDescription, i) => {\n if (this.activeSort.name == criteria.name.toLowerCase()) {\n this.selectItem(this.getSortItem(criteria.name));\n } else {\n this.unselectItem(this.getSortItem(criteria.name));\n }\n });\n }\n\n public getSortItem(sortName: string): HTMLElement {\n return find(this.sortSection.sortItems, sortItem => {\n return (\n $$(sortItem)\n .getAttribute('data-sort-name')\n .toLowerCase() == sortName.replace('ascending|descending', '').toLowerCase()\n );\n });\n }\n\n public get button() {\n return this.settingsButton;\n }\n\n private buildSettingsButton() {\n this.settingsButton = $$('div', { className: 'coveo-facet-header-settings' }).el;\n this.settingsButton.innerHTML = SVGIcons.icons.more;\n SVGDom.addClassToSVGInContainer(this.settingsButton, 'coveo-facet-settings-more-svg');\n\n this.hideElementOnMouseEnterLeave(this.settingsButton);\n\n new AccessibleButton()\n .withElement(this.settingsButton)\n .withLabel(l('Settings'))\n .withClickAction(e => this.handleSettingsButtonClick(e))\n .withEnterKeyboardAction(e => this.handleSettingsButtonClick(e))\n .build();\n }\n\n private hideElementOnMouseEnterLeave(el: HTMLElement) {\n const mouseLeave = () => (this.closeTimeout = window.setTimeout(() => this.close(), 300));\n const mouseEnter = () => clearTimeout(this.closeTimeout);\n\n $$(el).on('mouseleave', mouseLeave);\n $$(el).on('mouseenter', mouseEnter);\n }\n\n private buildSettingsPopup() {\n this.settingsPopup = $$('div', { className: 'coveo-facet-settings-popup' }).el;\n this.hideElementOnMouseEnterLeave(this.settingsPopup);\n }\n\n private buildSortSection() {\n const sortSection = this.buildSection('coveo-facet-settings-section-sort');\n const sortSectionIcon = this.buildIcon('coveo-facet-settings-section-sort-svg', SVGIcons.icons.sort);\n const sortSectionItems = this.buildItems();\n\n const sortTitle = document.createElement('div');\n $$(sortTitle).addClass('coveo-facet-settings-section-sort-title');\n $$(sortTitle).text(l('SortBy') + ' :');\n sortSectionItems.appendChild(sortTitle);\n\n const sortItems = this.buildSortSectionItems();\n each(sortItems, s => {\n sortSectionItems.appendChild(s);\n });\n sortSection.appendChild(sortSectionIcon);\n sortSection.appendChild(sortSectionItems);\n return { element: sortSection, sortItems: sortItems };\n }\n\n private buildSortSectionItems() {\n let elems = map(this.enabledSorts, enabledSort => {\n if (contains(this.enabledSortsIgnoreRenderBecauseOfPairs, enabledSort)) {\n return undefined;\n } else {\n const elem = this.buildItem(l(enabledSort.label), enabledSort.description);\n $$(elem).setAttribute('data-sort-name', enabledSort.name.toLowerCase().replace('ascending|descending', ''));\n\n new AccessibleButton()\n .withElement(elem)\n .withSelectAction((e: Event) => this.handleClickSortButton(e, enabledSort))\n .withLabel(enabledSort.label)\n .build();\n\n return elem;\n }\n });\n elems = compact(elems);\n return elems;\n }\n\n private closePopupAndUpdateSort() {\n this.close();\n if (this.activeSort.name != 'custom') {\n this.facet.updateSort(this.activeSort.name);\n } else {\n this.facet.updateSort('nosort');\n if (this.customSortDirectionChange) {\n this.customSortDirectionChange = false;\n this.facet.queryController.executeQuery();\n }\n }\n }\n\n private enabledSortsAllowDirection() {\n const allEnabledSortsWithPossibleDirectionToggle = filter(this.enabledSorts, (facetSortDescription: IFacetSortDescription) => {\n return facetSortDescription.directionToggle;\n });\n const allowToggle = filter(allEnabledSortsWithPossibleDirectionToggle, possibleDirectionToggle => {\n return findWhere(this.enabledSorts, { name: possibleDirectionToggle.relatedSort }) != undefined;\n });\n return allowToggle.length > 0;\n }\n\n private buildDirectionSection() {\n const directionAscendingSection = this.buildAscendingOrDescendingSection('Ascending');\n const iconAscending = this.buildIcon('coveo-facet-settings-section-direction-ascending-svg', SVGIcons.icons.ascending);\n const iconDescending = this.buildIcon('coveo-facet-settings-section-direction-descending-svg', SVGIcons.icons.descending);\n const directionItemsAscending = this.buildItems();\n const ascending = this.buildAscendingOrDescending('Ascending');\n\n directionItemsAscending.appendChild(ascending);\n directionAscendingSection.appendChild(iconAscending);\n directionAscendingSection.appendChild(directionItemsAscending);\n new AccessibleButton()\n .withElement(directionAscendingSection)\n .withLabel(l('Ascending'))\n .withSelectAction((e: Event) => this.handleDirectionClick(e, 'ascending'))\n .build();\n\n const directionDescendingSection = this.buildAscendingOrDescendingSection('Descending');\n const directionItemsDescending = this.buildItems();\n const descending = this.buildAscendingOrDescending('Descending');\n\n directionItemsDescending.appendChild(descending);\n directionDescendingSection.appendChild(iconDescending);\n directionDescendingSection.appendChild(directionItemsDescending);\n new AccessibleButton()\n .withElement(directionDescendingSection)\n .withLabel(l('Descending'))\n .withSelectAction((e: Event) => this.handleDirectionClick(e, 'descending'))\n .build();\n\n if (!this.activeSort.directionToggle) {\n $$(directionAscendingSection).addClass('coveo-facet-settings-disabled');\n $$(directionDescendingSection).addClass('coveo-facet-settings-disabled');\n } else {\n this.selectItem(this.getItems(directionAscendingSection)[0]);\n }\n return [directionAscendingSection, directionDescendingSection];\n }\n\n private buildSaveStateSection() {\n const saveStateSection = this.buildSection('coveo-facet-settings-section-save-state');\n const icon = this.buildIcon('coveo-facet-settings-section-save-state-svg', SVGIcons.icons.dropdownMore);\n const saveStateItems = this.buildItems();\n\n this.facetStateLocalStorage = new LocalStorageUtils<IFacetState>('facet-state-' + this.facet.options.id);\n this.includedStateAttribute = QueryStateModel.getFacetId(this.facet.options.id);\n this.excludedStateAttribute = QueryStateModel.getFacetId(this.facet.options.id, false);\n this.operatorStateAttribute = QueryStateModel.getFacetOperator(this.facet.options.id);\n\n const saveStateItem = document.createElement('div');\n $$(saveStateItem).addClass('coveo-facet-settings-item');\n saveStateItem.setAttribute('title', l('SaveFacetState'));\n $$(saveStateItem).text(l('SaveFacetState'));\n saveStateItems.appendChild(saveStateItem);\n\n saveStateSection.appendChild(icon);\n saveStateSection.appendChild(saveStateItems);\n new AccessibleButton()\n .withElement(saveStateSection)\n .withSelectAction(() => this.handleSaveStateClick())\n .withLabel(l('SaveFacetState'))\n .build();\n\n return saveStateSection;\n }\n\n private buildClearStateSection() {\n const clearStateSection = this.buildSection('coveo-facet-settings-section-clear-state');\n const icon = this.buildIcon('coveo-facet-settings-section-clear-state-svg', SVGIcons.icons.dropdownLess);\n const clearStateItems = this.buildItems();\n const clearStateItem = this.buildItem(l('ClearFacetState'));\n clearStateItems.appendChild(clearStateItem);\n clearStateSection.appendChild(icon);\n clearStateSection.appendChild(clearStateItems);\n new AccessibleButton()\n .withElement(clearStateSection)\n .withSelectAction(() => this.handleClearStateClick())\n .withLabel(l('ClearFacetState'))\n .build();\n\n return clearStateSection;\n }\n\n private buildHideSection() {\n const hideSection = this.buildSection('coveo-facet-settings-section-hide');\n const icon = this.buildIcon('coveo-facet-settings-section-hide-svg', SVGIcons.icons.facetCollapse);\n const hideItems = this.buildItems();\n const hideItem = this.buildItem(l('Collapse'));\n hideItems.appendChild(hideItem);\n\n hideSection.appendChild(icon);\n hideSection.appendChild(hideItems);\n new AccessibleButton()\n .withElement(hideSection)\n .withSelectAction(() => {\n this.facet.facetHeader.collapseFacet();\n this.close();\n })\n .withLabel(l('Collapse'))\n .build();\n\n return hideSection;\n }\n\n private buildShowSection() {\n const showSection = this.buildSection('coveo-facet-settings-section-show');\n const icon = this.buildIcon('coveo-facet-settings-section-show-svg', SVGIcons.icons.facetExpand);\n const showItems = this.buildItems();\n const showItem = this.buildItem(l('Expand'));\n showItems.appendChild(showItem);\n\n showSection.appendChild(icon);\n showSection.appendChild(showItems);\n\n new AccessibleButton()\n .withElement(showSection)\n .withSelectAction(() => {\n this.facet.facetHeader.expandFacet();\n this.close();\n })\n .withLabel(l('Expand'))\n .build();\n\n return showSection;\n }\n\n private buildIcon(iconClass?: string, svgIcon?: string) {\n if (iconClass && svgIcon) {\n const icon = $$('div', { className: 'coveo-icon-container' }, svgIcon);\n SVGDom.addClassToSVGInContainer(icon.el, iconClass);\n return icon.el;\n } else {\n return $$('div', { className: 'coveo-icon' }).el;\n }\n }\n\n private buildAscendingOrDescending(direction: string) {\n const elem = this.buildItem(l(direction));\n elem.setAttribute('aria-disabled', 'true');\n elem.setAttribute('data-direction', direction.toLowerCase());\n return elem;\n }\n\n private buildAscendingOrDescendingSection(direction: string) {\n return this.buildSection('coveo-facet-settings-section-direction-' + direction.toLowerCase());\n }\n\n private buildItem(label: string, title = label) {\n return $$(\n 'div',\n {\n className: 'coveo-facet-settings-item',\n title: title\n },\n escape(label)\n ).el;\n }\n\n private buildItems() {\n const elem = document.createElement('div');\n $$(elem).addClass('coveo-facet-settings-items');\n return elem;\n }\n\n private buildSection(className: string) {\n const section = document.createElement('div');\n $$(section).addClass(['coveo-facet-settings-section', className]);\n return section;\n }\n\n private handleSettingsButtonClick(event: Event) {\n event.stopPropagation();\n const settingsPopupIsOpen = !Utils.isNullOrUndefined(this.settingsPopup.parentElement);\n settingsPopupIsOpen ? this.close() : this.open();\n }\n\n private handleClickSortButton(e: Event, enabledSort: IFacetSortDescription) {\n if (this.activeSort != enabledSort && this.activeSort.relatedSort != enabledSort.name) {\n this.activeSort = enabledSort;\n if (enabledSort.directionToggle && contains(this.enabledSorts, FacetSettings.availableSorts[this.activeSort.relatedSort])) {\n this.activateDirectionSection();\n } else {\n this.disableDirectionSection();\n }\n this.selectItem(<HTMLElement>e.target);\n this.closePopupAndUpdateSort();\n }\n }\n\n private handleDirectionClick(e: Event, direction: string) {\n if (\n !$$((<HTMLElement>e.target).parentElement.parentElement).hasClass('coveo-facet-settings-disabled') &&\n this.activeSort.name.indexOf(direction) == -1\n ) {\n this.activeSort = FacetSettings.availableSorts[this.activeSort.relatedSort];\n each(this.directionSection, d => {\n this.unselectSection(d);\n });\n this.selectItem(<HTMLElement>e.target);\n if (this.activeSort.name == 'custom' && this.customSortDirection != direction) {\n this.customSortDirection = direction;\n this.customSortDirectionChange = true;\n }\n this.closePopupAndUpdateSort();\n }\n }\n\n private handleSaveStateClick() {\n this.saveState();\n this.close();\n }\n\n private handleClearStateClick() {\n this.facetStateLocalStorage.remove();\n this.facet.reset();\n this.close();\n this.facet.triggerNewQuery(() =>\n this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetClearAll, {\n facetId: this.facet.options.id,\n facetField: this.facet.options.field.toString(),\n facetTitle: this.facet.options.title\n })\n );\n }\n\n private addOnNukeHandler() {\n $$(this.facet.root).on(InitializationEvents.nuke, () => this.handleNuke());\n }\n\n private addOnDocumentClickHandler() {\n document.addEventListener('click', () => this.onDocumentClick());\n }\n\n public getCurrentDirectionItem(directionSection = this.directionSection) {\n let found: HTMLElement;\n each(directionSection, direction => {\n if (!found) {\n found = find(this.getItems(direction), (direction: HTMLElement) => {\n return this.activeSort.name.indexOf(direction.getAttribute('data-direction')) != -1;\n });\n }\n });\n if (!found) {\n found = directionSection[0];\n }\n return found;\n }\n\n private activateDirectionSection() {\n each(this.directionSection, direction => {\n $$(direction).removeClass('coveo-facet-settings-disabled');\n $$(direction)\n .find('.coveo-facet-settings-item')\n .removeAttribute('aria-disabled');\n this.unselectSection(direction);\n });\n this.selectItem(this.getCurrentDirectionItem());\n }\n\n private disableDirectionSection() {\n each(this.directionSection, direction => {\n $$(direction).addClass('coveo-facet-settings-disabled');\n $$(direction)\n .find('.coveo-facet-settings-item')\n .setAttribute('aria-disabled', 'true');\n this.unselectSection(direction);\n });\n }\n\n private getItems(section: HTMLElement) {\n return $$(section).findAll('.coveo-facet-settings-item');\n }\n\n private unselectSection(section: HTMLElement) {\n each(this.getItems(section), i => {\n $$(i).removeClass('coveo-selected');\n });\n }\n\n private selectItem(item: HTMLElement) {\n if (item) {\n $$(item).addClass('coveo-selected');\n }\n }\n\n private unselectItem(item: HTMLElement) {\n if (item) {\n $$(item).removeClass('coveo-selected');\n }\n }\n\n private filterDuplicateForRendering() {\n each(this.enabledSorts, (enabledSort: IFacetSortDescription, i: number) => {\n if (enabledSort.relatedSort != null) {\n for (let j = i + 1; j < this.enabledSorts.length; j++) {\n if (this.enabledSorts[j].name == enabledSort.relatedSort) {\n this.enabledSortsIgnoreRenderBecauseOfPairs.push(this.enabledSorts[j]);\n break;\n }\n }\n }\n });\n }\n\n private appendIfNotUndefined(toAppend: HTMLElement) {\n if (!Utils.isNullOrUndefined(toAppend)) {\n this.settingsPopup.appendChild(toAppend);\n }\n }\n\n private handleNuke() {\n document.removeEventListener('click', this.onDocumentClick);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSettings.ts","/// <reference path=\"Facet.ts\" />\n/// <reference path=\"FacetSettings.ts\" />\nimport { Facet } from './Facet';\nimport { l } from '../../strings/Strings';\nimport { FacetSettings } from './FacetSettings';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\n\ndeclare const Coveo;\n\nexport interface IFacetSortKlass {\n new (sorts: string[], facet: Facet): FacetSort;\n}\n\nexport interface IFacetSortDescription {\n label: string;\n directionToggle: boolean;\n description: string;\n name: string;\n relatedSort?: string;\n}\n\nexport class FacetSort {\n public static availableSorts: { [name: string]: IFacetSortDescription } = {\n score: {\n label: l('Score'),\n directionToggle: false,\n description: l('ScoreDescription'),\n name: 'score'\n },\n occurrences: {\n label: l('Occurrences'),\n directionToggle: false,\n description: l('OccurrencesDescription'),\n name: 'occurrences'\n },\n alphaascending: {\n label: l('Label'),\n directionToggle: true,\n description: l('LabelDescription'),\n name: 'alphaascending',\n relatedSort: 'alphadescending'\n },\n alphadescending: {\n label: l('Label'),\n directionToggle: true,\n description: l('LabelDescription'),\n name: 'alphadescending',\n relatedSort: 'alphaascending'\n },\n computedfieldascending: {\n label: l('Value'),\n directionToggle: true,\n description: l('ValueDescription'),\n name: 'computedfieldascending',\n relatedSort: 'computedfielddescending'\n },\n computedfielddescending: {\n label: l('Value'),\n directionToggle: true,\n description: l('ValueDescription'),\n name: 'computedfielddescending',\n relatedSort: 'computedfieldascending'\n },\n chisquare: {\n label: l('RelativeFrequency'),\n directionToggle: false,\n description: l('RelativeFrequencyDescription'),\n name: 'chisquare'\n },\n nosort: {\n label: l('Nosort'),\n directionToggle: false,\n description: l('NosortDescription'),\n name: 'nosort'\n },\n custom: {\n label: l('Custom'),\n directionToggle: true,\n description: l('CustomDescription'),\n name: 'custom',\n relatedSort: 'custom'\n }\n };\n\n public enabledSorts: IFacetSortDescription[] = [];\n public activeSort: IFacetSortDescription;\n public customSortDirection = 'ascending';\n\n constructor(sorts: string[], public facet: Facet) {\n _.each(sorts, sortToActivate => {\n var newSortToEnable = FacetSettings.availableSorts[sortToActivate.toLowerCase()];\n if (newSortToEnable != undefined) {\n this.enabledSorts.push(newSortToEnable);\n }\n });\n this.removeEnabledSortsBasedOnFacetType();\n if (Utils.isNonEmptyArray(this.enabledSorts)) {\n if (this.facet.options.sortCriteria != undefined) {\n this.activeSort = _.find<IFacetSortDescription>(this.enabledSorts, enabledSort => {\n return enabledSort.name == this.facet.options.sortCriteria;\n });\n }\n if (!this.activeSort) {\n this.activeSort = this.enabledSorts[0];\n }\n }\n }\n\n private removeEnabledSortsBasedOnFacetType() {\n if (Coveo.FacetRange && this.facet instanceof Coveo.FacetRange) {\n var facetRange = this.facet;\n if (facetRange.options['slider']) {\n this.enabledSorts = [];\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSort.ts","import 'styling/_ResponsiveFacets';\nimport { IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResponsiveComponents } from './ResponsiveComponents';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\nimport { ResponsiveDropdownHeader } from './ResponsiveDropdown/ResponsiveDropdownHeader';\nimport { each, debounce } from 'underscore';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\n\nexport class ResponsiveFacetColumn implements IResponsiveComponent {\n public static DEBOUNCE_SCROLL_WAIT = 250;\n\n private static DROPDOWN_MIN_WIDTH: number = 280;\n private static DROPDOWN_WIDTH_RATIO: number = 0.35; // Used to set the width relative to the coveo root.\n private static DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'Filters';\n\n private searchInterface: SearchInterface;\n private componentsInFacetColumn: any[] = [];\n private preservePositionOriginalValues: boolean[] = [];\n private breakpoint: number;\n protected dropdown: ResponsiveDropdown;\n private dropdownHeaderLabel: string;\n\n public static init(responsiveComponentConstructor, root: HTMLElement, component, options: IResponsiveComponentOptions, ID: string) {\n const column = this.findColumn(root);\n if (!column) {\n return;\n }\n\n ResponsiveComponentsManager.register(ResponsiveFacetColumn, $$(root), 'ResponsiveFacetColumn', component, options);\n ResponsiveComponentsManager.register(responsiveComponentConstructor, $$(root), ID, component, options);\n }\n\n private static findColumn(root: HTMLElement) {\n const column = $$(root).find('.coveo-facet-column');\n if (!column) {\n const logger = new Logger('ResponsiveFacets');\n logger.info('No element with class coveo-facet-column. Responsive facets cannot be enabled');\n }\n return column;\n }\n\n constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n this.dropdown = this.buildDropdown(responsiveDropdown);\n this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n this.bindDropdownContentEvents();\n this.registerOnCloseHandler();\n this.registerQueryEvents();\n this.breakpoint = options.responsiveBreakpoint;\n }\n\n public registerComponent(accept: Component) {\n this.componentsInFacetColumn.push(accept);\n this.preservePositionOriginalValues.push(accept.options.preservePosition);\n return true;\n }\n\n public needDropdownWrapper() {\n return this.needSmallMode();\n }\n\n public handleResizeEvent() {\n if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n this.changeToSmallMode();\n } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n this.changeToLargeMode();\n }\n if (this.dropdown.isOpened) {\n this.dropdown.dropdownContent.positionDropdown();\n }\n }\n\n public dismissFacetSearches() {\n each(this.componentsInFacetColumn, component => {\n if (component.facetSearch && component.facetSearch.currentlyDisplayedResults) {\n component.facetSearch.dismissSearchResults();\n }\n });\n }\n\n private needSmallMode(): boolean {\n if (!this.searchInterface) {\n return (\n this.coveoRoot.width() <=\n (Utils.isNullOrUndefined(this.breakpoint) ? new ResponsiveComponents().getMediumScreenWidth() : this.breakpoint)\n );\n }\n switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n case 'small':\n case 'medium':\n return true;\n case 'auto':\n return (\n this.coveoRoot.width() <=\n (Utils.isNullOrUndefined(this.breakpoint) ? this.searchInterface.responsiveComponents.getMediumScreenWidth() : this.breakpoint)\n );\n default:\n return false;\n }\n }\n\n private changeToSmallMode() {\n this.dropdown.close();\n this.disableFacetPreservePosition();\n $$(this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`)).append(\n this.dropdown.dropdownHeader.element.el\n );\n ResponsiveComponentsUtils.activateSmallFacet(this.coveoRoot);\n }\n\n private changeToLargeMode() {\n this.restoreFacetPreservePositionValue();\n this.dropdown.cleanUp();\n ResponsiveComponentsUtils.deactivateSmallFacet(this.coveoRoot);\n }\n\n private buildDropdown(responsiveDropdown?: ResponsiveDropdown) {\n let dropdownContent = this.buildDropdownContent();\n let dropdownHeader = this.buildDropdownHeader();\n let dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n return dropdown;\n }\n\n private buildDropdownContent(): ResponsiveDropdownContent {\n let dropdownContentElement = $$(this.coveoRoot.find('.coveo-facet-column'));\n let filterByContainer = $$('div', { className: 'coveo-facet-header-filter-by-container', style: 'display: none' });\n let filterBy = $$('div', { className: 'coveo-facet-header-filter-by' });\n filterBy.text(l('Filter by:'));\n filterByContainer.append(filterBy.el);\n dropdownContentElement.prepend(filterByContainer.el);\n let dropdownContent = new ResponsiveDropdownContent(\n 'facet',\n dropdownContentElement,\n this.coveoRoot,\n ResponsiveFacetColumn.DROPDOWN_MIN_WIDTH,\n ResponsiveFacetColumn.DROPDOWN_WIDTH_RATIO\n );\n return dropdownContent;\n }\n\n private buildDropdownHeader(): ResponsiveDropdownHeader {\n let dropdownHeaderElement = $$('a');\n let content = $$('p');\n content.text(this.dropdownHeaderLabel);\n dropdownHeaderElement.el.appendChild(content.el);\n let dropdownHeader = new ResponsiveDropdownHeader('facet', dropdownHeaderElement);\n return dropdownHeader;\n }\n\n private registerOnCloseHandler() {\n this.dropdown.registerOnCloseHandler(this.dismissFacetSearches, this);\n }\n\n private registerQueryEvents() {\n this.coveoRoot.on(QueryEvents.noResults, () => this.handleNoResults());\n this.coveoRoot.on(QueryEvents.querySuccess, (e: Event, data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n this.coveoRoot.on(QueryEvents.queryError, () => this.handleQueryError());\n }\n\n private bindDropdownContentEvents() {\n this.dropdown.dropdownContent.element.on(\n 'scroll',\n debounce(() => {\n each(this.componentsInFacetColumn, component => {\n let facetSearch = component.facetSearch;\n if (facetSearch && facetSearch.currentlyDisplayedResults && !this.isFacetSearchScrolledIntoView(facetSearch.search)) {\n component.facetSearch.positionSearchResults(this.dropdown.dropdownContent.element.el);\n } else if (facetSearch && component.facetSearch.currentlyDisplayedResults) {\n component.facetSearch.positionSearchResults();\n }\n });\n }, ResponsiveFacetColumn.DEBOUNCE_SCROLL_WAIT)\n );\n }\n\n private restoreFacetPreservePositionValue() {\n each(this.componentsInFacetColumn, (component, index) => {\n if (component.options) {\n component.options.preservePosition = this.preservePositionOriginalValues[index];\n }\n });\n }\n\n private disableFacetPreservePosition() {\n each(this.componentsInFacetColumn, component => {\n if (component.options) {\n component.options.preservePosition = false;\n }\n });\n }\n\n private isFacetSearchScrolledIntoView(facetSearchElement: HTMLElement) {\n let facetTop = facetSearchElement.getBoundingClientRect().top;\n let facetBottom = facetSearchElement.getBoundingClientRect().bottom;\n let dropdownTop = this.dropdown.dropdownContent.element.el.getBoundingClientRect().top;\n let dropdownBottom = this.dropdown.dropdownContent.element.el.getBoundingClientRect().bottom;\n\n dropdownTop = dropdownTop >= 0 ? dropdownTop : 0;\n\n return facetTop >= dropdownTop && facetBottom <= dropdownBottom;\n }\n\n private getDropdownHeaderLabel() {\n let dropdownHeaderLabel: string;\n ComponentsTypes.getAllFacetsInstance(this.coveoRoot.find('.coveo-facet-column')).forEach(facet => {\n const options = facet.options as IResponsiveComponentOptions;\n\n if (!dropdownHeaderLabel && options.dropdownHeaderLabel) {\n dropdownHeaderLabel = options.dropdownHeaderLabel;\n }\n });\n\n if (!dropdownHeaderLabel) {\n dropdownHeaderLabel = l(ResponsiveFacetColumn.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n }\n\n return dropdownHeaderLabel;\n }\n\n private handleNoResults() {\n this.dropdown.dropdownHeader.hide();\n }\n\n private handleQueryError() {\n this.dropdown.dropdownHeader.hide();\n }\n\n private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n if (data.results.totalCount === 0) {\n this.dropdown.dropdownHeader.hide();\n } else {\n this.dropdown.dropdownHeader.show();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","import FacetSliderModuleDefinition = require('../FacetSlider/FacetSlider');\nimport FacetModuleDefinition = require('./Facet');\nimport { IFacetSettingsKlass, FacetSettings } from './FacetSettings';\nimport { IFacetSortKlass, FacetSort } from './FacetSort';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { IAnalyticsFacetOperatorMeta, IAnalyticsFacetMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport 'styling/_FacetHeader';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IFacetHeaderOptions {\n facetElement: HTMLElement;\n facet?: FacetModuleDefinition.Facet;\n title: string;\n field: string;\n enableClearElement: boolean;\n enableCollapseElement: boolean;\n icon?: string;\n facetSlider?: FacetSliderModuleDefinition.FacetSlider;\n settingsKlass?: IFacetSettingsKlass;\n sortKlass?: IFacetSortKlass;\n availableSorts?: string[];\n}\n\nexport class FacetHeader {\n public element: HTMLElement;\n public iconElement: HTMLElement;\n public waitElement: HTMLElement;\n public collapseElement: HTMLElement;\n public expandElement: HTMLElement;\n public operatorElement: HTMLElement;\n public eraserElement: HTMLElement;\n public settings: FacetSettings;\n public sort: FacetSort;\n\n constructor(public options: IFacetHeaderOptions) {\n this.element = document.createElement('div');\n $$(this.element).addClass('coveo-facet-header');\n }\n\n public build(): HTMLElement {\n let titleSection = $$('div', {\n className: 'coveo-facet-header-title-section'\n });\n if (this.options.icon != undefined) {\n this.iconElement = this.buildIcon();\n titleSection.append(this.iconElement);\n }\n titleSection.append(this.buildTitle());\n this.waitElement = this.buildWaitAnimation();\n titleSection.append(this.waitElement);\n this.element.appendChild(titleSection.el);\n\n let settingsSection = $$('div', {\n className: 'coveo-facet-header-settings-section'\n });\n\n this.eraserElement = this.buildEraser();\n settingsSection.append(this.eraserElement);\n\n if (this.options.facet) {\n this.operatorElement = this.buildOperatorToggle();\n settingsSection.append(this.operatorElement);\n $$(this.operatorElement).toggle(this.options.facet.options.enableTogglingOperator);\n }\n\n if (this.options.settingsKlass) {\n this.sort = this.settings = new this.options.settingsKlass(this.options.availableSorts, this.options.facet);\n settingsSection.append(this.settings.build());\n } else if (this.options.sortKlass) {\n this.sort = new this.options.sortKlass(this.options.availableSorts, this.options.facet);\n }\n this.element.appendChild(settingsSection.el);\n\n return this.element;\n }\n\n public switchToAnd(): void {\n if (this.options.facet) {\n this.options.facet.options.useAnd = true;\n this.rebuildOperatorToggle();\n this.updateOperatorQueryStateModel();\n }\n }\n\n public switchToOr(): void {\n if (this.options.facet) {\n this.options.facet.options.useAnd = false;\n this.rebuildOperatorToggle();\n this.updateOperatorQueryStateModel();\n }\n }\n\n public collapseFacet(): void {\n if (this.collapseElement && this.expandElement) {\n $$(this.collapseElement).hide();\n $$(this.expandElement).show();\n }\n $$(this.options.facetElement).addClass('coveo-facet-collapsed');\n }\n\n public expandFacet(): void {\n if (this.collapseElement && this.expandElement) {\n $$(this.expandElement).hide();\n $$(this.collapseElement).show();\n }\n $$(this.options.facetElement).removeClass('coveo-facet-collapsed');\n }\n\n public updateOperatorQueryStateModel(): void {\n if (this.options.facet && this.options.facet.options.enableTogglingOperator) {\n let valueToSet = '';\n if (this.options.facet.getSelectedValues().length != 0 || this.options.facet.getExcludedValues().length != 0) {\n valueToSet = this.options.facet.options.useAnd ? 'and' : 'or';\n }\n this.options.facet.queryStateModel.set(this.options.facet.operatorAttributeId, valueToSet);\n }\n }\n\n private rebuildOperatorToggle(): void {\n const newElement = this.buildOperatorToggle();\n if (this.operatorElement) {\n $$(this.operatorElement).replaceWith(newElement);\n }\n this.operatorElement = newElement;\n }\n\n private buildIcon(): HTMLElement {\n let cssClassForIcon;\n if (this.options.icon) {\n cssClassForIcon = 'coveo-icon-custom ' + this.options.icon;\n } else {\n cssClassForIcon = 'coveo-icon ' + this.options.field.substr(1);\n }\n this.iconElement = document.createElement('div');\n $$(this.iconElement).addClass(cssClassForIcon);\n return this.iconElement;\n }\n\n private buildWaitAnimation(): HTMLElement {\n this.waitElement = $$('div', { className: 'coveo-facet-header-wait-animation' }, SVGIcons.icons.loading).el;\n SVGDom.addClassToSVGInContainer(this.waitElement, 'coveo-facet-header-wait-animation-svg');\n this.waitElement.style.visibility = 'hidden';\n return this.waitElement;\n }\n\n private buildOperatorToggle(): HTMLElement {\n const label = l('SwitchTo', this.options.facet.options.useAnd ? l('Or') : l('And'));\n const icon = $$('span', { className: 'coveo-' + (this.options.facet.options.useAnd ? 'and' : 'or') }, SVGIcons.icons.orAnd);\n SVGDom.addClassToSVGInContainer(icon.el, 'coveo-or-and-svg');\n const toggle = $$('div', {\n className: 'coveo-facet-header-operator',\n title: label\n });\n toggle.append(icon.el);\n\n new AccessibleButton()\n .withElement(toggle)\n .withLabel(label)\n .withSelectAction(() => this.handleOperatorClick())\n .build();\n\n return toggle.el;\n }\n\n private handleOperatorClick(): void {\n if (this.options.facet.options.useAnd) {\n this.options.facet.switchToOr();\n } else {\n this.options.facet.switchToAnd();\n }\n if (this.options.facet.getSelectedValues().length != 0) {\n const operatorNow = this.options.facet.options.useAnd ? 'AND' : 'OR';\n const operatorBefore = this.options.facet.options.useAnd ? 'OR' : 'AND';\n this.options.facet.triggerNewQuery(() =>\n this.options.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetOperatorMeta>(analyticsActionCauseList.facetToggle, {\n facetId: this.options.facet.options.id,\n facetField: this.options.field.toString(),\n facetOperatorBefore: operatorBefore,\n facetOperatorAfter: operatorNow,\n facetTitle: this.options.title\n })\n );\n }\n }\n\n private buildTitle(): HTMLElement {\n const title = $$('div', { className: 'coveo-facet-header-title' });\n title.text(this.options.title);\n title.setAttribute('role', 'heading');\n title.setAttribute('aria-level', '2');\n title.setAttribute('aria-label', `${l('FacetTitle', this.options.title)}.`);\n return title.el;\n }\n\n public buildEraser(): HTMLElement {\n const eraser = $$('div', { className: 'coveo-facet-header-eraser' }, SVGIcons.icons.mainClear);\n\n SVGDom.addClassToSVGInContainer(eraser.el, 'coveo-facet-header-eraser-svg');\n\n new AccessibleButton()\n .withElement(eraser.el)\n .withLabel(l('Clear', this.options.title))\n .withClickAction(() => this.onEraserClick())\n .withEnterKeyboardAction(() => this.onEraserClick())\n .build();\n\n return eraser.el;\n }\n\n private onEraserClick() {\n const cmp = this.options.facet || this.options.facetSlider;\n cmp.reset();\n cmp.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetClearAll, {\n facetId: cmp.options.id,\n facetField: cmp.options.field.toString(),\n facetTitle: cmp.options.title\n });\n cmp.queryController.executeQuery();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetHeader.ts","/// <reference path=\"Facet.ts\" />\n\nimport 'styling/_FacetBreadcrumb';\nimport { compact } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { l } from '../../strings/Strings';\n\nexport interface IBreadcrumbValueElementKlass {\n new (facet: Facet, facetValue: FacetValue): BreadcrumbValueElement;\n}\n\nexport class BreadcrumbValueElement {\n constructor(public facet: Facet, public facetValue: FacetValue) {}\n\n public build(): Dom {\n Assert.exists(this.facetValue);\n\n const { container, caption, clear } = this.buildElements();\n\n container.append(caption.el);\n container.append(clear.el);\n\n return container;\n }\n\n public getBreadcrumbTooltip(): string {\n const tooltipParts = [\n this.facet.getValueCaption(this.facetValue),\n this.facetValue.getFormattedCount(),\n this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat)\n ];\n return compact(tooltipParts).join(' ');\n }\n\n private buildElements() {\n return {\n container: this.buildContainer(),\n clear: this.buildClear(),\n caption: this.buildCaption()\n };\n }\n\n private buildContainer() {\n const container = $$('div', {\n className: 'coveo-facet-breadcrumb-value'\n });\n\n container.toggleClass('coveo-selected', this.facetValue.selected);\n container.toggleClass('coveo-excluded', this.facetValue.excluded);\n\n const labelString = this.facetValue.excluded ? 'Unexclude' : 'RemoveFilterOn';\n const label = l(labelString, this.facet.getValueCaption(this.facetValue));\n\n new AccessibleButton()\n .withElement(container)\n .withLabel(label)\n .withSelectAction(() => this.selectAction())\n .build();\n\n return container;\n }\n\n private buildClear() {\n const clear = $$(\n 'span',\n {\n className: 'coveo-facet-breadcrumb-clear'\n },\n SVGIcons.icons.checkboxHookExclusionMore\n );\n SVGDom.addClassToSVGInContainer(clear.el, 'coveo-facet-breadcrumb-clear-svg');\n\n return clear;\n }\n\n private buildCaption() {\n const caption = $$('span', {\n className: 'coveo-facet-breadcrumb-caption'\n });\n caption.text(this.facet.getValueCaption(this.facetValue));\n return caption;\n }\n\n private selectAction() {\n if (this.facetValue.excluded) {\n this.facet.unexcludeValue(this.facetValue.value);\n } else {\n this.facet.deselectValue(this.facetValue.value);\n }\n this.facet.triggerNewQuery(() =>\n this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.breadcrumbFacet, {\n facetId: this.facet.options.id,\n facetField: this.facet.options.field.toString(),\n facetValue: this.facetValue.value,\n facetTitle: this.facet.options.title\n })\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/BreadcrumbValueElement.ts","import * as Globalize from 'globalize';\nimport { each, filter, first, map, rest } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { IBreadcrumbValueElementKlass } from './BreadcrumbValueElement';\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\n\nexport class BreadcrumbValueList {\n private expanded: FacetValue[];\n private collapsed: FacetValue[];\n protected elem: HTMLElement;\n private valueContainer: HTMLElement;\n\n constructor(public facet: Facet, public facetValues: FacetValue[], public breadcrumbValueElementKlass: IBreadcrumbValueElementKlass) {\n this.setExpandedAndCollapsed();\n this.elem = $$('div', {\n className: 'coveo-facet-breadcrumb'\n }).el;\n\n const title = $$('span');\n title.addClass('coveo-facet-breadcrumb-title');\n title.text(this.facet.options.title + ':');\n this.elem.appendChild(title.el);\n\n this.valueContainer = $$('span', {\n className: 'coveo-facet-breadcrumb-values'\n }).el;\n\n this.elem.appendChild(this.valueContainer);\n }\n\n public build(): HTMLElement {\n this.buildExpanded();\n if (this.collapsed.length != 0) {\n this.buildCollapsed();\n }\n return this.elem;\n }\n\n public buildAsString(): string {\n this.build();\n if (this.elem) {\n return (\n `${this.facet.options.title}: ` +\n map($$(this.elem).findAll('.coveo-facet-breadcrumb-value'), (value: HTMLElement) => {\n return $$(value).text();\n }).join(', ')\n );\n }\n return '';\n }\n\n private buildExpanded() {\n each(this.expanded, (value: FacetValue, index?: number) => {\n const elementBreadcrumb = new this.breadcrumbValueElementKlass(this.facet, value).build();\n this.valueContainer.appendChild(elementBreadcrumb.el);\n });\n }\n\n private buildCollapsed() {\n const numberOfSelected = filter(this.collapsed, (value: FacetValue) => value.selected).length;\n const numberOfExcluded = filter(this.collapsed, (value: FacetValue) => value.excluded).length;\n Assert.check(numberOfSelected + numberOfExcluded == this.collapsed.length);\n\n const elem = $$('div', {\n className: 'coveo-facet-breadcrumb-value'\n });\n\n const multiCount = $$('span', {\n className: 'coveo-facet-breadcrumb-multi-count'\n });\n\n multiCount.text(l('NMore', Globalize.format(numberOfSelected + numberOfExcluded, 'n0')));\n elem.append(multiCount.el);\n\n const valueElements = map(this.collapsed, facetValue => {\n return new this.breadcrumbValueElementKlass(this.facet, facetValue);\n });\n\n const toolTips = map(valueElements, valueElement => {\n return valueElement.getBreadcrumbTooltip();\n });\n\n elem.el.setAttribute('title', toolTips.join('\\n'));\n elem.on('click', () => {\n const elements: HTMLElement[] = [];\n each(valueElements, valueElement => {\n elements.push(valueElement.build().el);\n });\n each(elements, el => {\n $$(el).insertBefore(elem.el);\n });\n elem.detach();\n });\n\n this.valueContainer.appendChild(elem.el);\n }\n\n private setExpandedAndCollapsed() {\n if (this.facetValues.length > this.facet.options.numberOfValuesInBreadcrumb) {\n this.collapsed = rest(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb);\n this.expanded = first(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb);\n } else {\n this.collapsed = [];\n this.expanded = this.facetValues;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/BreadcrumbValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { Facet } from './Facet';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { FacetSearchParameters } from './FacetSearchParameters';\nimport { IAnalyticsFacetMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport { l } from '../../strings/Strings';\nimport { Assert } from '../../misc/Assert';\nimport { FacetValue } from './FacetValues';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { IFacetSearchValuesListKlass } from './FacetSearchValuesList';\nimport { FacetValueElement } from './FacetValueElement';\nimport { ModalBox } from '../../ExternalModulesShim';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResponsiveComponentsUtils } from '../ResponsiveComponents/ResponsiveComponentsUtils';\nimport { FacetValuesOrder } from './FacetValuesOrder';\nimport 'styling/_FacetSearch';\nimport { each, debounce, map, pluck } from 'underscore';\nimport { FacetSearchElement } from './FacetSearchElement';\nimport { IFacetSearch } from './IFacetSearch';\n\n/**\n * Used by the {@link Facet} component to render and handle the facet search part of each facet.\n */\nexport class FacetSearch implements IFacetSearch {\n public currentlyDisplayedResults: string[];\n public facetSearchElement: FacetSearchElement;\n public facetSearchPromise: Promise<IIndexFieldValue[]>;\n public moreValuesToFetch = true;\n\n private facetSearchTimeout: number;\n private onResize: (...args: any[]) => void;\n private onDocumentClick: (e: Event) => void;\n private lastSearchWasEmpty = true;\n\n constructor(public facet: Facet, public facetSearchValuesListKlass: IFacetSearchValuesListKlass, private root: HTMLElement) {\n this.facetSearchElement = new FacetSearchElement(this);\n this.onResize = debounce(() => {\n // Mitigate issues in UT where the window in phantom js might get resized in the scope of another test.\n // These would point to random instance of a test karma object, and not a real search interface.\n if (this.facet instanceof Facet && this.facet.searchInterface instanceof SearchInterface) {\n if (this.shouldPositionSearchResults()) {\n this.positionSearchResults();\n }\n }\n }, 250);\n this.onDocumentClick = (e: Event) => {\n this.handleClickElsewhere(e);\n };\n window.addEventListener('resize', this.onResize);\n document.addEventListener('click', (e: Event) => this.onDocumentClick(e));\n $$(facet.root).on(InitializationEvents.nuke, () => this.handleNuke());\n }\n\n public get facetType() {\n return Facet.ID;\n }\n\n /**\n * Build the search component and return an `HTMLElement` which can be appended to the {@link Facet}.\n * @returns {HTMLElement}\n */\n public build(): HTMLElement {\n return this.buildBaseSearch();\n }\n\n /**\n * Position the search results at the footer of the facet.\n */\n public positionSearchResults(nextTo: HTMLElement = this.search) {\n this.facetSearchElement.positionSearchResults(this.root, this.facet.element.clientWidth, nextTo);\n }\n\n public fetchMoreValues() {\n this.triggerNewFacetSearch(this.buildParamsForFetchingMore());\n }\n\n /**\n * Dismiss the search results\n */\n public dismissSearchResults() {\n this.cancelAnyPendingSearchOperation();\n this.facet.unfadeInactiveValuesInMainList();\n $$(this.searchResults).empty();\n this.moreValuesToFetch = true;\n $$(this.search).removeClass('coveo-facet-search-no-results');\n $$(this.facet.element).removeClass('coveo-facet-searching');\n this.facetSearchElement.hideSearchResultsElement();\n this.input.value = '';\n $$(this.clear).hide();\n this.currentlyDisplayedResults = undefined;\n }\n\n /**\n * Trigger a new facet search, and display the results.\n * @param params\n */\n public triggerNewFacetSearch(params: FacetSearchParameters) {\n this.cancelAnyPendingSearchOperation();\n this.facetSearchElement.showFacetSearchWaitingAnimation();\n\n this.facet.logger.info('Triggering new facet search');\n\n this.facetSearchPromise = this.facet.facetQueryController.search(params);\n\n if (this.facetSearchPromise) {\n this.facetSearchPromise\n .then((fieldValues: IIndexFieldValue[]) => {\n this.facet.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(\n analyticsActionCauseList.facetSearch,\n {\n facetId: this.facet.options.id,\n facetField: this.facet.options.field.toString(),\n facetTitle: this.facet.options.title\n },\n this.facet.root\n );\n this.facet.logger.debug('Received field values', fieldValues);\n this.processNewFacetSearchResults(fieldValues, params);\n this.facetSearchElement.hideFacetSearchWaitingAnimation();\n this.facetSearchPromise = undefined;\n })\n .catch((error: IEndpointError) => {\n // The request might be normally cancelled if another search is triggered.\n // In this case we do not hide the animation to prevent flicking.\n if (Utils.exists(error)) {\n this.facet.logger.error('Error while retrieving facet values', error);\n this.facetSearchElement.hideFacetSearchWaitingAnimation();\n }\n this.facetSearchPromise = undefined;\n return null;\n });\n }\n }\n\n /**\n * Trigger the event associated with the focus of the search input.\n */\n public focus(): void {\n this.facetSearchElement.focus();\n }\n\n public get searchResults() {\n return this.facetSearchElement.searchResults;\n }\n\n public get searchBarIsAnimating() {\n return this.facetSearchElement.searchBarIsAnimating;\n }\n\n public get search() {\n return this.facetSearchElement.search;\n }\n\n public keyboardEventDefaultHandler() {\n this.moreValuesToFetch = true;\n this.highlightCurrentQueryWithinSearchResults();\n if (!this.inputIsEmpty()) {\n this.lastSearchWasEmpty = false;\n this.displayNewValues(this.buildParamsForNormalSearch());\n } else if (!this.lastSearchWasEmpty) {\n // This normally happen if a user delete the search box content to go back to \"empty\" state.\n this.currentlyDisplayedResults = undefined;\n $$(this.searchResults).empty();\n this.lastSearchWasEmpty = true;\n this.displayNewValues(this.buildParamsForFetchingMore());\n }\n }\n\n public keyboardNavigationEnterPressed(event: KeyboardEvent) {\n if (event.shiftKey) {\n this.triggerNewFacetSearch(this.buildParamsForNormalSearch());\n } else {\n if (this.searchResults.style.display != 'none') {\n this.performActionOnCurrentSearchResult();\n this.dismissSearchResults();\n } else if ($$(this.search).is('.coveo-facet-search-no-results')) {\n this.selectAllValuesMatchingSearch();\n }\n }\n }\n\n public keyboardNavigationDeletePressed(event: KeyboardEvent) {\n if (event.shiftKey) {\n this.performExcludeActionOnCurrentSearchResult();\n this.dismissSearchResults();\n this.input.value = '';\n }\n }\n\n public displayNewValues(params: FacetSearchParameters = this.buildParamsForExcludingCurrentlyDisplayedValues()) {\n this.cancelAnyPendingSearchOperation();\n this.facetSearchTimeout = window.setTimeout(() => {\n this.triggerNewFacetSearch(params);\n }, this.facet.options.facetSearchDelay);\n }\n\n public getCaptions() {\n return $$(this.searchResults).findAll('.coveo-facet-value-caption');\n }\n\n public getValueInInputForFacetSearch() {\n return this.facetSearchElement.getValueInInputForFacetSearch();\n }\n\n public updateAriaLive(text: string) {\n this.facet.searchInterface.ariaLive.updateText(text);\n }\n\n private get input() {\n return this.facetSearchElement.input;\n }\n\n private get clear() {\n return this.facetSearchElement.clear;\n }\n\n private shouldPositionSearchResults(): boolean {\n return !ResponsiveComponentsUtils.isSmallFacetActivated($$(this.root)) && $$(this.facet.element).hasClass('coveo-facet-searching');\n }\n\n private buildBaseSearch(): HTMLElement {\n this.facetSearchElement.build(() => this.handleFacetSearchClear());\n $$(this.facetSearchElement.input).on('keyup', () => this.showOrHideClearElement());\n return this.search;\n }\n\n private handleNuke() {\n window.removeEventListener('resize', this.onResize);\n document.removeEventListener('click', this.onDocumentClick);\n }\n\n private handleClickElsewhere(event: Event) {\n if (this.currentlyDisplayedResults && this.search != event.target && this.searchResults != event.target && this.input != event.target) {\n this.dismissSearchResults();\n }\n }\n\n private handleFacetSearchClear() {\n this.input.value = '';\n $$(this.clear).hide();\n this.dismissSearchResults();\n }\n\n private showOrHideClearElement() {\n if (!this.inputIsEmpty()) {\n $$(this.clear).show();\n } else {\n $$(this.clear).hide();\n $$(this.search).removeClass('coveo-facet-search-no-results');\n }\n }\n private cancelAnyPendingSearchOperation() {\n if (Utils.exists(this.facetSearchTimeout)) {\n clearTimeout(this.facetSearchTimeout);\n this.facetSearchTimeout = undefined;\n }\n if (Utils.exists(this.facetSearchPromise)) {\n Promise.reject(this.facetSearchPromise).catch(() => {});\n this.facetSearchPromise = undefined;\n }\n\n this.facetSearchElement.hideFacetSearchWaitingAnimation();\n }\n\n private inputIsEmpty() {\n return this.input.value.trim() == '';\n }\n\n private processNewFacetSearchResults(fieldValues: IIndexFieldValue[], facetSearchParameters: FacetSearchParameters) {\n Assert.exists(fieldValues);\n fieldValues = new FacetValuesOrder(this.facet, this.facet.facetSort).reorderValues(fieldValues);\n if (fieldValues.length > 0) {\n $$(this.search).removeClass('coveo-facet-search-no-results');\n this.facet.fadeInactiveValuesInMainList(this.facet.options.facetSearchDelay);\n this.rebuildSearchResults(fieldValues, facetSearchParameters);\n if (!facetSearchParameters.fetchMore) {\n this.showSearchResultsElement();\n }\n this.highlightCurrentQueryWithinSearchResults();\n this.makeFirstSearchResultTheCurrentOne();\n } else {\n if (facetSearchParameters.fetchMore) {\n this.moreValuesToFetch = false;\n } else {\n this.facetSearchElement.hideSearchResultsElement();\n $$(this.search).addClass('coveo-facet-search-no-results');\n }\n }\n }\n\n private rebuildSearchResults(fieldValues: IIndexFieldValue[], facetSearchParameters: FacetSearchParameters) {\n Assert.exists(fieldValues);\n if (!facetSearchParameters.fetchMore) {\n $$(this.searchResults).empty();\n }\n\n const facetSearchHasQuery = Utils.isNonEmptyString(facetSearchParameters.valueToSearch);\n\n if (facetSearchHasQuery) {\n this.appendSelectAllResultsButton();\n }\n\n let facetValues = map(fieldValues, fieldValue => {\n return FacetValue.create(fieldValue);\n });\n each(new this.facetSearchValuesListKlass(this.facet, FacetValueElement).build(facetValues), (listElement: HTMLElement) => {\n this.facetSearchElement.appendToSearchResults(listElement);\n });\n if (this.currentlyDisplayedResults) {\n this.currentlyDisplayedResults = this.currentlyDisplayedResults.concat(pluck(facetValues, 'value'));\n } else {\n this.currentlyDisplayedResults = pluck(facetValues, 'value');\n }\n\n each($$(this.searchResults).findAll('.coveo-facet-selectable'), (elem: HTMLElement, index: number) => {\n $$(elem).setAttribute('id', `coveo-facet-search-${this.facet.options.id}-suggestion-${index}`);\n $$(elem).setAttribute('role', 'option');\n $$(elem).setAttribute('aria-selected', 'false');\n $$(elem).addClass('coveo-facet-search-selectable');\n });\n }\n\n private appendSelectAllResultsButton() {\n const selectAll = document.createElement('li');\n $$(selectAll).addClass(['coveo-facet-selectable', 'coveo-facet-search-selectable', 'coveo-facet-search-select-all']);\n $$(selectAll).text(l('SelectAll'));\n $$(selectAll).setAttribute('aria-hidden', 'true');\n $$(selectAll).on('click', () => this.selectAllValuesMatchingSearch());\n this.facetSearchElement.appendToSearchResults(selectAll);\n }\n\n private buildParamsForNormalSearch() {\n let params = new FacetSearchParameters(this.facet);\n params.setValueToSearch(this.getValueInInputForFacetSearch());\n params.fetchMore = false;\n return params;\n }\n\n private buildParamsForFetchingMore() {\n let params = this.buildParamsForExcludingCurrentlyDisplayedValues();\n params.fetchMore = true;\n return params;\n }\n\n protected buildParamsForExcludingCurrentlyDisplayedValues() {\n let params = new FacetSearchParameters(this.facet);\n params.excludeCurrentlyDisplayedValuesInSearch(this.searchResults);\n params.setValueToSearch(this.getValueInInputForFacetSearch());\n return params;\n }\n\n private showSearchResultsElement() {\n this.positionSearchResults();\n }\n\n private highlightCurrentQueryWithinSearchResults() {\n let search = this.getValueInInputForFacetSearch();\n let regex = new RegExp('(' + StringUtils.wildcardsToRegex(search, this.facet.options.facetSearchIgnoreAccents) + ')', 'ig');\n this.facetSearchElement.highlightCurrentQueryInSearchResults(regex);\n }\n\n private makeFirstSearchResultTheCurrentOne() {\n this.facetSearchElement.setAsCurrentResult($$(this.getSelectables()[0]));\n }\n\n private getSelectables(target = this.searchResults) {\n return $$(target).findAll('.coveo-facet-selectable');\n }\n\n private performActionOnCurrentSearchResult() {\n let current = $$(this.searchResults).find('.coveo-facet-search-current-result');\n Assert.check(current != undefined);\n\n const shouldExclude = $$(current).hasClass('coveo-facet-value-will-exclude');\n\n if (shouldExclude) {\n const excludeIcon = $$(current).find('.coveo-facet-value-exclude');\n excludeIcon.click();\n return;\n }\n\n const checkbox = <HTMLInputElement>$$(current).find('input[type=\"checkbox\"]');\n\n if (checkbox) {\n checkbox.checked = true;\n $$(checkbox).trigger('change');\n } else {\n current.click();\n }\n }\n\n private performExcludeActionOnCurrentSearchResult() {\n let current = $$(this.searchResults).find('.coveo-facet-search-current-result');\n Assert.check(current != null);\n let valueCaption = $$(current).find('.coveo-facet-value-caption');\n let valueElement = this.facet.facetValuesList.get($$(valueCaption).text());\n\n valueElement.toggleExcludeWithUA();\n }\n\n protected selectAllValuesMatchingSearch() {\n this.facet.showWaitingAnimation();\n\n let searchParameters = new FacetSearchParameters(this.facet);\n searchParameters.nbResults = 1000;\n searchParameters.setValueToSearch(this.getValueInInputForFacetSearch());\n this.facet.facetQueryController.search(searchParameters).then((fieldValues: IIndexFieldValue[]) => {\n this.dismissSearchResults();\n ModalBox.close(true);\n let facetValues = map(fieldValues, fieldValue => {\n let facetValue = this.facet.values.get(fieldValue.value);\n if (!Utils.exists(facetValue)) {\n facetValue = FacetValue.create(fieldValue);\n }\n facetValue.selected = true;\n facetValue.excluded = false;\n return facetValue;\n });\n this.facet.processFacetSearchAllResultsSelected(facetValues);\n });\n this.dismissSearchResults();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearch.ts","/// <reference path=\"Facet.ts\" />\nimport { Facet } from './Facet';\nimport { IFacetValueElementKlass } from './FacetValueElement';\nimport { FacetValue } from './FacetValues';\nimport * as _ from 'underscore';\n\nexport interface IFacetSearchValuesListKlass {\n new (facet: Facet, facetValueElementKlass: IFacetValueElementKlass): FacetSearchValuesList;\n}\n\nexport class FacetSearchValuesList {\n constructor(public facet: Facet, public facetValueElementKlass: IFacetValueElementKlass) {}\n\n public build(facetValues: FacetValue[]): HTMLElement[] {\n var valuesToBuildWith = _.map(facetValues, facetValue => {\n return (\n _.find(this.facet.values.getAll(), (valueAlreadyInFacet: FacetValue) => {\n return valueAlreadyInFacet.value == facetValue.value;\n }) || facetValue\n );\n });\n return _.map(valuesToBuildWith, facetValue => {\n const valueElement = new this.facetValueElementKlass(this.facet, facetValue, this.facet.keepDisplayedValuesNextTime).build();\n valueElement.renderer.excludeIcon.setAttribute('aria-hidden', 'true');\n valueElement.renderer.label.setAttribute('aria-hidden', 'true');\n return valueElement.renderer.listItem;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { FacetValueElement, IFacetValueElementKlass } from './FacetValueElement';\nimport { Facet } from './Facet';\nimport { $$ } from '../../utils/Dom';\nimport { ValueElement } from './ValueElement';\nimport { FacetValue } from './FacetValues';\nimport { Utils } from '../../utils/Utils';\nimport { FacetUtils } from './FacetUtils';\nimport { FacetValuesOrder } from './FacetValuesOrder';\nimport * as _ from 'underscore';\n\nexport class FacetValuesList {\n // Dictionary of values. The key is always in lowercase.\n private valueList: { [value: string]: FacetValueElement } = {};\n\n public valueContainer: HTMLElement;\n private currentlyDisplayed: ValueElement[] = [];\n\n constructor(public facet: Facet, public facetValueElementKlass: IFacetValueElementKlass) {}\n\n public build(): HTMLElement {\n this.valueContainer = document.createElement('ul');\n $$(this.valueContainer).addClass('coveo-facet-values');\n return this.valueContainer;\n }\n\n public getAllCurrentlyDisplayed(): ValueElement[] {\n return this.currentlyDisplayed;\n }\n\n public getAll(): ValueElement[] {\n return _.toArray<ValueElement>(this.valueList);\n }\n\n public getAllFacetValue(): FacetValue[] {\n return _.map(this.getAll(), (v: ValueElement) => {\n return v.facetValue;\n });\n }\n\n public get(value: FacetValue | string): ValueElement {\n var getter;\n if (value instanceof FacetValue) {\n getter = value.value;\n } else {\n value = Utils.anyTypeToString(value);\n getter = value;\n }\n this.ensureFacetValueIsInList(value);\n return this.valueList[getter.toLowerCase()];\n }\n\n public select(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n valueElement.select();\n return valueElement;\n }\n\n public unselect(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n valueElement.unselect();\n return valueElement;\n }\n\n public exclude(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n valueElement.exclude();\n return valueElement;\n }\n\n public unExclude(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n valueElement.unexclude();\n return valueElement;\n }\n\n public toggleSelect(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n if (valueElement.facetValue.selected) {\n valueElement.unselect();\n } else {\n valueElement.select();\n }\n return valueElement;\n }\n\n public toggleExclude(value: FacetValue | string): ValueElement {\n var valueElement = this.get(value);\n if (valueElement.facetValue.excluded) {\n valueElement.unexclude();\n } else {\n valueElement.exclude();\n }\n return valueElement;\n }\n\n public rebuild(numberOfValues: number): void {\n $$(this.valueContainer).empty();\n this.currentlyDisplayed = [];\n var allValues = this.getValuesToBuildWith();\n var toCompare = numberOfValues;\n let docFragment = document.createDocumentFragment();\n _.each(allValues, (facetValue: FacetValue, index?: number, list?) => {\n if (this.facetValueShouldBeRemoved(facetValue)) {\n this.facet.values.remove(facetValue.value);\n toCompare += 1;\n } else if (index < toCompare) {\n var valueElement = new this.facetValueElementKlass(this.facet, facetValue, true);\n this.valueList[facetValue.value.toLowerCase()] = valueElement;\n var valueListElement = valueElement.build().renderer.listItem;\n docFragment.appendChild(valueListElement);\n this.currentlyDisplayed.push(valueElement);\n }\n });\n this.valueContainer.appendChild(docFragment);\n\n FacetUtils.addNoStateCssClassToFacetValues(this.facet, this.valueContainer);\n }\n\n protected getValuesToBuildWith() {\n if (this.facet.facetSort) {\n return new FacetValuesOrder(this.facet, this.facet.facetSort).reorderValues(this.facet.values.getAll());\n } else {\n return this.facet.values.getAll();\n }\n }\n\n private facetValueShouldBeRemoved(facetValue: FacetValue): boolean {\n return (\n facetValue.occurrences == 0 &&\n (facetValue.delta == 0 || facetValue.delta == undefined) &&\n !facetValue.selected &&\n !facetValue.excluded &&\n !this.facet.keepDisplayedValuesNextTime\n );\n }\n\n private ensureFacetValueIsInList(value: any) {\n var facetValue: FacetValue;\n if (value instanceof FacetValue) {\n facetValue = this.facet.values.get((<FacetValue>value).value);\n if (facetValue == null) {\n this.facet.values.add(value);\n facetValue = value;\n }\n } else {\n facetValue = this.facet.values.get(value);\n if (facetValue == null) {\n facetValue = FacetValue.createFromValue(value);\n this.facet.values.add(facetValue);\n }\n }\n\n var key = facetValue.value.toLowerCase();\n var found = this.valueList[key];\n if (found == undefined) {\n found = this.valueList[key] = new FacetValueElement(this.facet, facetValue, true);\n found.build();\n } else {\n found.facetValue = facetValue;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { ValueElement } from './ValueElement';\nimport { IAnalyticsActionCause } from '../Analytics/AnalyticsActionListMeta';\n\nexport interface IOmniboxValueElementKlass {\n new (\n facet: Facet,\n facetValue: FacetValue,\n eventArg: IPopulateOmniboxObject,\n onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n ): OmniboxValueElement;\n}\n\nexport class OmniboxValueElement extends ValueElement {\n constructor(\n public facet: Facet,\n public facetValue: FacetValue,\n public eventArg: IPopulateOmniboxObject,\n onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n ) {\n super(facet, facetValue, onSelect, onExclude);\n }\n\n public bindEvent() {\n super.bindEvent({ displayNextTime: false, pinFacet: false, omniboxObject: this.eventArg });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/OmniboxValueElement.ts","/// <reference path=\"Facet.ts\" />\nimport { each, indexOf, pluck } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsActionCause, IAnalyticsOmniboxFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { Facet } from './Facet';\nimport { FacetUtils } from './FacetUtils';\nimport { FacetValue } from './FacetValues';\nimport { IOmniboxValueElementKlass } from './OmniboxValueElement';\nimport { ValueElement } from './ValueElement';\n\nexport class OmniboxValuesList {\n constructor(\n public facet: Facet,\n public facetValues: FacetValue[],\n public omniboxObject: IPopulateOmniboxObject,\n public omniboxValueElementKlass: IOmniboxValueElementKlass\n ) {}\n\n public build() {\n const rows: HTMLElement[] = [];\n each(this.facetValues, (facetValue: FacetValue) => {\n rows.push(this.buildOmniboxForOneRow(facetValue, this.omniboxObject));\n });\n return this.buildFinalOmniboxElement(rows);\n }\n\n private buildOmniboxForOneRow(facetValue: FacetValue, omniboxObject: IPopulateOmniboxObject): HTMLElement {\n const selectCallback = (elem: ValueElement, cause: IAnalyticsActionCause) => this.logAnalyticsEvent(elem, cause);\n const excludeCallback = (elem: ValueElement, cause: IAnalyticsActionCause) => this.logAnalyticsEvent(elem, cause);\n const omniboxValueElement = new this.omniboxValueElementKlass(this.facet, facetValue, omniboxObject, selectCallback, excludeCallback);\n const omniboxRowContent = omniboxValueElement.build().renderer.listItem;\n\n const regex = omniboxObject.completeQueryExpression.regex;\n const valueToSearch = omniboxObject.completeQueryExpression.word;\n const caption = $$(omniboxRowContent).find('.coveo-facet-value-caption');\n caption.innerHTML = this.highlightOmniboxMatch(this.facet.getValueCaption(facetValue), regex, valueToSearch);\n\n const omniboxRow = $$('ul', {\n className: 'coveo-omnibox-selectable coveo-facet-value coveo-omnibox-facet-value'\n }).el;\n omniboxRow.appendChild(omniboxRowContent);\n $$(omniboxRow).on('keyboardSelect', () => {\n const input = $$(omniboxRowContent).find('input[type=checkbox]');\n $$(input).trigger('change');\n });\n omniboxRow['no-text-suggestion'] = true;\n return omniboxRow;\n }\n\n private buildFinalOmniboxElement(rows: HTMLElement[]) {\n const header = this.buildOmniboxHeader();\n if (Utils.isEmptyArray(rows)) {\n return undefined;\n } else {\n const ret = $$('div', {\n className: 'coveo-omnibox-facet-value'\n }).el;\n ret.appendChild(header);\n each(rows, r => {\n ret.appendChild(r);\n });\n FacetUtils.addNoStateCssClassToFacetValues(this.facet, ret);\n return ret;\n }\n }\n\n private buildOmniboxHeader(): HTMLElement {\n const title = this.facet.options.title;\n const header = $$('div', {\n className: 'coveo-omnibox-facet-header'\n }).el;\n $$(header).text(title);\n return header;\n }\n\n private highlightOmniboxMatch(orignalStr: string, regex: RegExp, valueToSearch: string) {\n const firstChar = orignalStr.search(regex);\n const lastChar = firstChar + valueToSearch.length;\n return (\n orignalStr.slice(0, firstChar) +\n '<span class=\"coveo-highlight\">' +\n orignalStr.slice(firstChar, lastChar) +\n '</span>' +\n orignalStr.slice(lastChar)\n );\n }\n\n private logAnalyticsEvent(elem: ValueElement, cause: IAnalyticsActionCause) {\n const strippedFacetValues = pluck(this.facetValues, 'value');\n elem.facet.usageAnalytics.logSearchEvent<IAnalyticsOmniboxFacetMeta>(cause, {\n query: this.omniboxObject.completeQueryExpression.word,\n facetId: elem.facet.options.id,\n facetField: elem.facet.options.field.toString(),\n facetTitle: elem.facet.options.title,\n facetValue: elem.facetValue.value,\n suggestions: strippedFacetValues.join(';'),\n suggestionRanking: indexOf(strippedFacetValues, elem.facetValue.value)\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/OmniboxValuesList.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AccessibleButton.scss\n// module id = 372\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 14 16 17 18 19 20 21 23 24 25 26 27 29 30 31 37 38 39 40 41 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveFacets.scss\n// module id = 374\n// module chunks = 1 2 3 4 8 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetHeader.scss\n// module id = 375\n// module chunks = 1 2 3 4 8 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Facet.scss\n// module id = 376\n// module chunks = 1 2 3 4 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetFooter.scss\n// module id = 377\n// module chunks = 1 2 3 4 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetBreadcrumb.scss\n// module id = 378\n// module chunks = 1 2 3 4 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetSearch.scss\n// module id = 379\n// module chunks = 1 2 3 4 77","import { IFacetSearch } from './IFacetSearch';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\nexport class FacetSearchUserInputHandler {\n constructor(private facetSearch: IFacetSearch) {}\n\n public handleKeyboardEvent(event: KeyboardEvent) {\n switch (event.which) {\n case KEYBOARD.ENTER:\n this.facetSearch.keyboardNavigationEnterPressed(event);\n break;\n case KEYBOARD.DELETE:\n this.facetSearch.keyboardNavigationDeletePressed && this.facetSearch.keyboardNavigationDeletePressed(event);\n break;\n case KEYBOARD.ESCAPE:\n this.facetSearch.dismissSearchResults();\n break;\n case KEYBOARD.DOWN_ARROW:\n this.facetSearch.facetSearchElement.moveCurrentResultDown();\n break;\n case KEYBOARD.UP_ARROW:\n this.facetSearch.facetSearchElement.moveCurrentResultUp();\n break;\n default:\n this.facetSearch.keyboardEventDefaultHandler();\n }\n }\n\n public handleFacetSearchResultsScroll() {\n if (\n this.facetSearch.facetSearchPromise ||\n this.facetSearch.facetSearchElement.getValueInInputForFacetSearch() != '' ||\n !this.facetSearch.moreValuesToFetch\n ) {\n return;\n }\n\n let elementHeight = this.facetSearch.facetSearchElement.searchResults.clientHeight;\n let scrollHeight = this.facetSearch.facetSearchElement.searchResults.scrollHeight;\n let bottomPosition = this.facetSearch.facetSearchElement.searchResults.scrollTop + elementHeight;\n if (scrollHeight - bottomPosition < elementHeight / 2) {\n this.facetSearch.fetchMoreValues();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchUserInputHandler.ts","import { ISearchDropdownNavigator, ISearchDropdownConfig, DefaultSearchDropdownNavigator } from './DefaultSearchDropdownNavigator';\nimport { FacetSearchDropdownNavigator } from './FacetSearchDropdownNavigator';\nimport { IFacetSearch } from '../IFacetSearch';\nimport { CategoryFacet } from '../../CategoryFacet/CategoryFacet';\nimport { Facet } from '../Facet';\n\nexport function SearchDropdownNavigatorFactory(facetSearch: IFacetSearch, config: ISearchDropdownConfig): ISearchDropdownNavigator {\n switch (facetSearch.facetType) {\n case Facet.ID:\n return new FacetSearchDropdownNavigator({ ...config, facetSearch });\n\n case CategoryFacet.ID:\n default:\n return new DefaultSearchDropdownNavigator(config);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory.ts","import { ISearchDropdownNavigator, DefaultSearchDropdownNavigator, ISearchDropdownConfig } from './DefaultSearchDropdownNavigator';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { IFacetSearch } from '../IFacetSearch';\nimport { debounce } from 'underscore';\n\nexport interface IFacetSearchDropdownConfig extends ISearchDropdownConfig {\n facetSearch: IFacetSearch;\n}\n\nexport class FacetSearchDropdownNavigator implements ISearchDropdownNavigator {\n private defaultDropdownNavigator: DefaultSearchDropdownNavigator;\n private debounceAnnounceCurrentResultAction = debounce(() => this.announceCurrentResultAction(), 500);\n\n constructor(private config: IFacetSearchDropdownConfig) {\n this.defaultDropdownNavigator = new DefaultSearchDropdownNavigator(config);\n }\n\n public setAsCurrentResult(dom: Dom) {\n this.defaultDropdownNavigator.setAsCurrentResult(dom);\n this.debounceAnnounceCurrentResultAction();\n }\n\n public get currentResult() {\n return this.defaultDropdownNavigator.currentResult;\n }\n\n public focusNextElement() {\n if (this.isCurrentResultSelectAllButton) {\n this.moveResultDownAndAnnounce();\n } else if (this.canExcludeCurrentResult) {\n this.toggleCanExcludeCurrentResult();\n this.moveResultDownAndAnnounce();\n } else {\n this.toggleCanExcludeCurrentResult();\n this.announceCurrentResultCanBeExcluded();\n }\n }\n\n public focusPreviousElement() {\n if (!this.canExcludeCurrentResult) {\n this.moveResultUpAndAnnounce();\n } else {\n this.toggleCanExcludeCurrentResult();\n this.announceCurrentResultCanBeSelected();\n }\n }\n\n private moveResultDownAndAnnounce() {\n this.defaultDropdownNavigator.moveCurrentResultDown();\n this.announceCurrentResultCanBeSelected();\n }\n\n private moveResultUpAndAnnounce() {\n this.defaultDropdownNavigator.moveCurrentResultUp();\n\n if (this.isCurrentResultSelectAllButton) {\n this.announceCurrentResultCanBeSelected();\n } else {\n this.toggleCanExcludeCurrentResult();\n this.announceCurrentResultCanBeExcluded();\n }\n }\n\n private get isCurrentResultSelectAllButton() {\n return this.currentResult.hasClass('coveo-facet-search-select-all');\n }\n\n private get canExcludeCurrentResult() {\n return this.currentResult.hasClass('coveo-facet-value-will-exclude');\n }\n\n private toggleCanExcludeCurrentResult() {\n this.currentResult.toggleClass('coveo-facet-value-will-exclude', !this.canExcludeCurrentResult);\n }\n\n private announceCurrentResultAction() {\n this.canExcludeCurrentResult ? this.announceCurrentResultCanBeExcluded() : this.announceCurrentResultCanBeSelected();\n }\n\n private announceCurrentResultCanBeExcluded() {\n const excludeIconTitle = $$(this.currentResult).find('.coveo-facet-value-exclude').title;\n this.config.facetSearch.updateAriaLive(excludeIconTitle);\n }\n\n private announceCurrentResultCanBeSelected() {\n const message = this.currentResultSelectMessage;\n this.config.facetSearch.updateAriaLive(message);\n }\n\n private get currentResultSelectMessage() {\n if (this.isCurrentResultSelectAllButton) {\n return this.currentResult.text();\n }\n\n const checkbox = this.currentResult.find('.coveo-facet-value-checkbox');\n return checkbox.getAttribute('aria-label');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/FacetSearchDropdownNavigator.ts","import { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { escape } from 'underscore';\nimport { l } from '../../strings/Strings';\n\nexport interface CategoryFacetData {\n value: string;\n count: number;\n}\n\nexport class CategoryFacetTemplates {\n private listRoot: Dom;\n private collapseArrow: Dom;\n\n constructor() {\n this.listRoot = $$('ul', { className: 'coveo-category-facet-values' });\n this.collapseArrow = $$('span', { className: 'coveo-category-facet-collapse-children' }, SVGIcons.icons.arrowDown);\n SVGDom.addClassToSVGInContainer(this.collapseArrow.el, 'coveo-category-facet-collapse-children-svg');\n }\n\n public buildListRoot() {\n return this.listRoot.clone(true);\n }\n\n public buildListElement(data: CategoryFacetData) {\n const div = $$('div', {}, this.createListElement(data));\n return $$(div.el.firstChild as HTMLElement);\n }\n\n public buildAllCategoriesButton() {\n const allCategoriesCaption = $$('span', { className: 'coveo-category-facet-all-categories-caption', tabindex: 0 }, l('AllCategories'));\n const allCategories = $$(\n 'li',\n { className: 'coveo-category-facet-value coveo-category-facet-all-categories' },\n this.buildCollapseArrow(),\n allCategoriesCaption\n );\n return allCategories;\n }\n\n public buildEllipsis() {\n const ellipsisCaption = $$('span', { className: 'coveo-category-facet-ellipsis-caption' }, '[ ... ]');\n const ellipsis = $$('li', { className: 'coveo-category-facet-ellipsis' }, ellipsisCaption);\n return ellipsis;\n }\n\n public buildCollapseArrow() {\n return this.collapseArrow.clone(true);\n }\n\n private createListElement(data: CategoryFacetData) {\n return `<li class=\"coveo-category-facet-value\">\n <label class=\"coveo-category-facet-value-label\">\n <span title=\"${escape(data.value)}\" class=\"coveo-category-facet-value-caption\">${escape(data.value)}</span>\n <span class=\"coveo-category-facet-value-count\">${data.count}</span>\n </label>\n </li>`;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetTemplates.ts","import { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { Dom } from '../../utils/Dom';\nimport { CategoryChildrenValueRenderer } from './CategoryValueChildrenRenderer';\nimport { CategoryFacet } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { CategoryValueParent, CategoryValue } from './CategoryValue';\n\nexport class CategoryValueRoot implements CategoryValueParent {\n public path = [];\n public categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n public listRoot: Dom;\n\n constructor(private element: Dom, categoryFacetTemplates: CategoryFacetTemplates, categoryFacet: CategoryFacet) {\n this.categoryChildrenValueRenderer = new CategoryChildrenValueRenderer(element, categoryFacetTemplates, this, categoryFacet);\n this.listRoot = categoryFacetTemplates.buildListRoot();\n this.appendListRoot();\n }\n\n public renderChildren(values: ICategoryFacetValue[]) {\n this.appendListRoot();\n this.categoryChildrenValueRenderer.renderChildren(values);\n }\n\n public renderAsParent(value: ICategoryFacetValue): CategoryValue {\n this.appendListRoot();\n return this.categoryChildrenValueRenderer.renderAsParent(value);\n }\n\n public get children(): CategoryValue[] {\n return this.categoryChildrenValueRenderer.children;\n }\n\n public clear() {\n this.listRoot.detach();\n this.listRoot.empty();\n this.categoryChildrenValueRenderer.clearChildren();\n }\n\n private appendListRoot() {\n this.element.append(this.listRoot.el);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValueRoot.ts","import { Dom, $$ } from '../../utils/Dom';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryChildrenValueRenderer } from './CategoryValueChildrenRenderer';\nimport { CategoryFacet, CategoryValueDescriptor } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { l } from '../../strings/Strings';\n\nexport interface CategoryValueParent {\n listRoot: Dom;\n path: string[];\n categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n renderAsParent(categoryFacetValue: ICategoryFacetValue): CategoryValue;\n renderChildren(categoryFacetValues: ICategoryFacetValue[]): void;\n}\n\nexport class CategoryValue implements CategoryValueParent {\n private collapseArrow: Dom;\n\n public path: string[];\n public element: Dom;\n public isActive = false;\n public categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n\n constructor(\n public listRoot: Dom,\n public categoryValueDescriptor: CategoryValueDescriptor,\n private categoryFacetTemplates: CategoryFacetTemplates,\n private categoryFacet: CategoryFacet\n ) {\n this.element = this.categoryFacetTemplates.buildListElement({\n value: this.captionedValueDescriptorValue,\n count: this.categoryValueDescriptor.count\n });\n this.collapseArrow = this.categoryFacetTemplates.buildCollapseArrow();\n this.categoryChildrenValueRenderer = new CategoryChildrenValueRenderer(this.element, categoryFacetTemplates, this, this.categoryFacet);\n this.path = this.categoryValueDescriptor.path;\n }\n\n public render(isChild: boolean) {\n if (this.pastMaximumDepth()) {\n this.element.addClass('coveo-category-facet-last-value');\n }\n\n if (isChild) {\n this.element.addClass('coveo-category-facet-child-value');\n } else {\n this.element.addClass('coveo-category-facet-parent-value');\n }\n\n this.listRoot.append(this.element.el);\n }\n\n public getDescriptor() {\n return {\n value: this.categoryValueDescriptor.value,\n count: this.categoryValueDescriptor.count,\n path: this.path\n };\n }\n\n public clear() {\n this.element.detach();\n this.categoryChildrenValueRenderer.clearChildren();\n }\n\n public renderChildren(values: ICategoryFacetValue[]) {\n this.isActive = true;\n this.element.addClass('coveo-active-category-facet-parent');\n this.categoryChildrenValueRenderer.renderChildren(values);\n }\n\n public renderAsParent(value: ICategoryFacetValue) {\n return this.categoryChildrenValueRenderer.renderAsParent(value);\n }\n\n public get children() {\n return this.categoryChildrenValueRenderer.children;\n }\n\n public makeSelectable() {\n const element = $$(this.element.find('.coveo-category-facet-value-label'));\n element.addClass('coveo-selectable');\n\n const countLabel = l('ResultCount', this.categoryValueDescriptor.count.toString());\n const label = l('SelectValueWithResultCount', this.captionedValueDescriptorValue, countLabel);\n\n new AccessibleButton()\n .withElement(element)\n .withSelectAction(() => this.onSelect())\n .withLabel(label)\n .build();\n\n return this;\n }\n\n public showCollapseArrow() {\n if (!this.collapseArrow.el.parentElement) {\n const label = this.element.find('label');\n $$(label).prepend(this.collapseArrow.el);\n }\n\n return this;\n }\n\n private get captionedValueDescriptorValue() {\n const value = this.categoryValueDescriptor.value;\n return this.categoryFacet.getCaption(value);\n }\n\n private onSelect() {\n if (!this.pastMaximumDepth()) {\n this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, this.path);\n this.categoryFacet.changeActivePath(this.path);\n this.categoryFacet.executeQuery();\n }\n }\n\n private pastMaximumDepth() {\n return this.path.length - this.categoryFacet.options.basePath.length >= this.categoryFacet.options.maximumDepth;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValue.ts","import { CategoryFacet } from '../ui/CategoryFacet/CategoryFacet';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { ICategoryFacetRequest } from '../rest/CategoryFacetRequest';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { AllowedValuesPatternType } from '../rest/AllowedValuesPatternType';\nimport { IGroupByValue } from '../rest/GroupByValue';\nimport { Utils } from '../utils/Utils';\n\nexport class CategoryFacetQueryController {\n constructor(private categoryFacet: CategoryFacet) {}\n\n public putCategoryFacetInQueryBuilder(queryBuilder: QueryBuilder, path: string[], maximumNumberOfValues: number): number {\n const positionInQuery = queryBuilder.categoryFacets.length;\n this.addQueryFilter(queryBuilder, path);\n this.addCategoryFacetRequest(queryBuilder, path, maximumNumberOfValues);\n return positionInQuery;\n }\n\n public async searchFacetValues(value: string, numberOfValues: number): Promise<IGroupByValue[]> {\n const lastQuery = { ...this.categoryFacet.queryController.getLastQuery() };\n\n const groupByRequest: IGroupByRequest = {\n allowedValues: [this.getAllowedValuesPattern(value)],\n allowedValuesPatternType: AllowedValuesPatternType.Wildcards,\n maximumNumberOfValues: numberOfValues,\n field: this.categoryFacet.options.field as string,\n sortCriteria: 'occurrences',\n injectionDepth: this.categoryFacet.options.injectionDepth\n };\n\n lastQuery.groupBy = [groupByRequest];\n lastQuery.categoryFacets.splice(this.categoryFacet.positionInQuery, 1);\n const results = await this.categoryFacet.queryController.getEndpoint().search(lastQuery);\n\n const sortByNumberOfResultsThenPathLength = (firstGroupByValue: IGroupByValue, secondGroupByValue: IGroupByValue) => {\n if (firstGroupByValue.numberOfResults == secondGroupByValue.numberOfResults) {\n return firstGroupByValue.value.length - secondGroupByValue.value.length;\n }\n return secondGroupByValue.numberOfResults - firstGroupByValue.numberOfResults;\n };\n\n return results.groupByResults[0].values.sort(sortByNumberOfResultsThenPathLength);\n }\n\n public addDebugGroupBy(queryBuilder: QueryBuilder, value: string) {\n queryBuilder.groupByRequests.push({\n field: this.categoryFacet.options.field as string,\n allowedValues: [`.*${Utils.escapeRegexCharacter(value)}.*`],\n allowedValuesPatternType: AllowedValuesPatternType.Regex\n });\n }\n\n private shouldAddFilterToQuery(path: string[]) {\n return path.length != 0 && !Utils.arrayEqual(path, this.categoryFacet.options.basePath);\n }\n\n private addQueryFilter(queryBuilder: QueryBuilder, path: string[]) {\n if (this.shouldAddFilterToQuery(path)) {\n queryBuilder.advancedExpression.addFieldExpression(this.categoryFacet.options.field as string, '==', [\n path.join(this.categoryFacet.options.delimitingCharacter)\n ]);\n }\n }\n\n private addCategoryFacetRequest(queryBuilder: QueryBuilder, path: string[], maximumNumberOfValues: number) {\n const categoryFacetsRequest: ICategoryFacetRequest = {\n field: this.categoryFacet.options.field as string,\n path,\n injectionDepth: this.categoryFacet.options.injectionDepth,\n maximumNumberOfValues,\n delimitingCharacter: this.categoryFacet.options.delimitingCharacter\n };\n queryBuilder.categoryFacets.push(categoryFacetsRequest);\n }\n\n private getAllowedValuesPattern(value: string) {\n const basePath = this.categoryFacet.options.basePath;\n const delimiter = this.categoryFacet.options.delimitingCharacter;\n\n if (Utils.isNonEmptyArray(basePath)) {\n return `${basePath.join(delimiter)}${delimiter}*${value}*`;\n }\n return `*${value}*`;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/CategoryFacetQueryController.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CategoryFacet.scss\n// module id = 387\n// module chunks = 1 2 3 4 77","import { CategoryFacet } from './CategoryFacet';\nimport { FacetSearchElement } from '../Facet/FacetSearchElement';\nimport { pluck, debounce, last } from 'underscore';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { l } from '../../strings/Strings';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport 'styling/_CategoryFacetSearch';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { analyticsActionCauseList, IAnalyticsCategoryFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IFacetSearch } from '../Facet/IFacetSearch';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport class CategoryFacetSearch implements IFacetSearch {\n public container: Dom | undefined;\n public facetSearchElement: FacetSearchElement;\n public displayNewValues: () => void;\n public currentlyDisplayedResults: string[];\n public moreValuesToFetch = true;\n public facetSearchPromise: Promise<IIndexFieldValue[]>;\n\n private numberOfValuesToFetch: number;\n\n constructor(private categoryFacet: CategoryFacet) {\n this.facetSearchElement = new FacetSearchElement(this);\n this.displayNewValues = debounce(this.getDisplayNewValuesFunction(), this.categoryFacet.options.facetSearchDelay);\n this.categoryFacet.root.addEventListener('click', (e: MouseEvent) => this.handleClickElsewhere(e));\n this.numberOfValuesToFetch = this.categoryFacet.options.numberOfResultsInFacetSearch;\n }\n\n public get facetType() {\n return CategoryFacet.ID;\n }\n\n public build() {\n this.container = $$('div', {\n className: 'coveo-category-facet-search-container',\n role: 'heading',\n 'aria-level': 3\n });\n\n new AccessibleButton()\n .withElement(this.container)\n .withSelectAction(() => {\n $$(this.categoryFacet.element).addClass('coveo-category-facet-searching');\n this.focus();\n })\n .withLabel(l('Search'))\n .build();\n\n const search = this.facetSearchElement.build();\n const searchPlaceholder = this.buildfacetSearchPlaceholder();\n this.container.append(search);\n this.container.append(searchPlaceholder.el);\n return this.container;\n }\n\n public focus() {\n this.facetSearchElement.focus();\n }\n\n public clear() {\n this.dismissSearchResults();\n this.container && this.container.detach();\n }\n\n public dismissSearchResults() {\n this.removeNoResultsCssClasses();\n $$(this.categoryFacet.element).removeClass('coveo-category-facet-searching');\n $$(this.facetSearchElement.searchResults).empty();\n this.facetSearchElement.clearSearchInput();\n this.facetSearchElement.hideSearchResultsElement();\n this.currentlyDisplayedResults = null;\n this.numberOfValuesToFetch = this.categoryFacet.options.numberOfResultsInFacetSearch;\n this.moreValuesToFetch = true;\n }\n\n public keyboardEventDefaultHandler() {\n this.moreValuesToFetch = true;\n this.displayNewValues();\n }\n\n public keyboardNavigationEnterPressed() {\n this.selectCurrentResult();\n }\n\n public fetchMoreValues() {\n this.numberOfValuesToFetch += this.categoryFacet.options.numberOfResultsInFacetSearch;\n this.displayNewValues();\n }\n\n public getCaptions() {\n const searchResults = $$(this.facetSearchElement.searchResults);\n const captions = searchResults\n .findAll('.coveo-category-facet-search-value-caption')\n .concat(searchResults.findAll('.coveo-category-facet-search-path-parents'))\n .concat(searchResults.findAll('.coveo-category-facet-search-path-last-value'));\n return captions;\n }\n\n public updateAriaLive(text: string) {\n this.categoryFacet.searchInterface.ariaLive.updateText(text);\n }\n\n private selectCurrentResult() {\n if (this.facetSearchElement.currentResult) {\n const currentResultPathData = this.facetSearchElement.currentResult.el.dataset.path;\n const delimiter = this.categoryFacet.options.delimitingCharacter;\n const path = currentResultPathData.split(delimiter);\n this.categoryFacet.changeActivePath(path);\n this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, path);\n this.categoryFacet.executeQuery();\n }\n }\n\n private handleClickElsewhere(e: MouseEvent) {\n const closestContainer = $$(<HTMLElement>e.target).closest('.coveo-category-facet-search-container');\n\n if (!closestContainer || closestContainer != this.container.el) {\n this.dismissSearchResults();\n }\n }\n\n private buildfacetSearchPlaceholder() {\n const placeholder = $$('div', { className: 'coveo-category-facet-search-placeholder' });\n\n const icon = $$('div', { className: 'coveo-category-facet-search-icon' }, SVGIcons.icons.checkboxHookExclusionMore);\n SVGDom.addClassToSVGInContainer(icon.el, 'coveo-category-facet-search-icon-svg');\n\n const label = $$('span', { className: 'coveo-category-facet-search-label' }, l('Search'));\n\n placeholder.append(icon.el);\n placeholder.append(label.el);\n return placeholder;\n }\n\n private getDisplayNewValuesFunction() {\n return async () => {\n this.facetSearchElement.showFacetSearchWaitingAnimation();\n this.categoryFacet.logger.info('Triggering new Category Facet search');\n const categoryFacetValues = await this.categoryFacet.categoryFacetQueryController.searchFacetValues(\n this.facetSearchElement.input.value,\n this.numberOfValuesToFetch\n );\n this.logAnalyticsEvent();\n if (categoryFacetValues.length < this.numberOfValuesToFetch) {\n this.moreValuesToFetch = false;\n }\n if (categoryFacetValues.length == 0) {\n this.noFacetSearchResults();\n return;\n }\n this.removeNoResultsCssClasses();\n this.setFacetSearchResults(categoryFacetValues);\n\n if (this.shouldPositionSearchResults) {\n this.facetSearchElement.positionSearchResults(\n this.categoryFacet.root,\n this.categoryFacet.element.clientWidth,\n this.facetSearchElement.search\n );\n }\n\n this.facetSearchElement.hideFacetSearchWaitingAnimation();\n };\n }\n\n private setFacetSearchResults(categoryFacetValues: IGroupByValue[]) {\n $$(this.facetSearchElement.searchResults).empty();\n this.currentlyDisplayedResults = pluck(categoryFacetValues, 'value');\n for (let i = 0; i < categoryFacetValues.length; i++) {\n const searchResult = this.buildFacetSearchValue(categoryFacetValues[i], i);\n if (i == 0) {\n this.facetSearchElement.setAsCurrentResult(searchResult);\n }\n this.facetSearchElement.appendToSearchResults(searchResult.el);\n }\n this.highlightCurrentQueryWithinSearchResults();\n }\n\n private buildFacetSearchValue(categoryFacetValue: IGroupByValue, index: number) {\n const path = categoryFacetValue.value.split(this.categoryFacet.options.delimitingCharacter);\n\n const pathParents = path.slice(0, -1).length != 0 ? `${path.slice(0, -1).join('/')}/` : '';\n\n const value = $$('span', { className: 'coveo-category-facet-search-value-caption' }, last(path));\n const number = $$('span', { className: 'coveo-category-facet-search-value-number' }, categoryFacetValue.numberOfResults.toString(10));\n const pathParentsCaption = $$('span', { className: 'coveo-category-facet-search-path-parents' }, pathParents);\n\n const pathToValueCaption = $$('span', { className: 'coveo-category-facet-search-path' }, pathParentsCaption);\n\n const firstRow = $$('div', { className: 'coveo-category-facet-search-first-row' }, value, number);\n const secondRow = $$('div', { className: 'coveo-category-facet-search-second-row' }, pathToValueCaption);\n const item = $$(\n 'li',\n {\n id: `coveo-category-facet-search-suggestion-${index}`,\n role: 'option',\n ariaSelected: 'false',\n className: 'coveo-category-facet-search-value',\n title: path\n },\n firstRow,\n secondRow\n );\n item.el.dataset.path = categoryFacetValue.value;\n\n const countLabel = l('ResultCount', categoryFacetValue.numberOfResults.toString());\n const label = l('SelectValueWithResultCount', last(path), countLabel);\n\n new AccessibleButton()\n .withElement(item)\n .withSelectAction(() => {\n this.categoryFacet.changeActivePath(path);\n this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, path);\n this.categoryFacet.executeQuery();\n })\n .withLabel(label)\n .build();\n\n return item;\n }\n\n private noFacetSearchResults() {\n this.facetSearchElement.hideFacetSearchWaitingAnimation();\n this.facetSearchElement.hideSearchResultsElement();\n $$(this.facetSearchElement.search).addClass('coveo-facet-search-no-results');\n $$(this.categoryFacet.element).addClass('coveo-no-results');\n }\n\n private removeNoResultsCssClasses() {\n this.facetSearchElement.search && $$(this.facetSearchElement.search).removeClass('coveo-facet-search-no-results');\n $$(this.categoryFacet.element).removeClass('coveo-no-results');\n }\n\n private highlightCurrentQueryWithinSearchResults() {\n const regex = new RegExp(`(${StringUtils.stringToRegex(this.facetSearchElement.input.value, true)})`, 'ig');\n this.facetSearchElement.highlightCurrentQueryInSearchResults(regex);\n }\n\n private logAnalyticsEvent() {\n this.categoryFacet.usageAnalytics.logCustomEvent<IAnalyticsCategoryFacetMeta>(\n analyticsActionCauseList.categoryFacetSearch,\n {\n categoryFacetId: this.categoryFacet.options.id,\n categoryFacetField: this.categoryFacet.options.field.toString(),\n categoryFacetTitle: this.categoryFacet.options.title\n },\n this.categoryFacet.root\n );\n }\n\n private get shouldPositionSearchResults() {\n const searchResults = this.facetSearchElement.searchResults;\n return searchResults && !searchResults.parentElement;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetSearch.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CategoryFacetSearch.scss\n// module id = 389\n// module chunks = 1 2 3 4 77","import { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { CategoryValueDescriptor, CategoryFacet } from './CategoryFacet';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { l } from '../../strings/Strings';\nimport { without } from 'underscore';\n\nexport class CategoryFacetBreadcrumb {\n constructor(\n private categoryFacet: CategoryFacet,\n private onClickHandler: (e: MouseEvent) => void,\n private categoryValueDescriptor: CategoryValueDescriptor\n ) {}\n\n public build(): HTMLElement {\n const clear = $$(\n 'span',\n {\n className: 'coveo-facet-breadcrumb-clear'\n },\n SVGIcons.icons.checkboxHookExclusionMore\n );\n\n SVGDom.addClassToSVGInContainer(clear.el, 'coveo-facet-breadcrumb-clear-svg');\n const pathToRender = without(this.categoryValueDescriptor.path, ...this.categoryFacet.options.basePath);\n const captionLabel = pathToRender.map(pathPart => this.categoryFacet.getCaption(pathPart)).join('/');\n\n const breadcrumbTitle = $$('span', { className: 'coveo-category-facet-breadcrumb-title' }, `${this.categoryFacet.options.title}: `);\n const valuesContainer = $$('span', { className: 'coveo-category-facet-breadcrumb-values' }, captionLabel, clear);\n\n new AccessibleButton()\n .withElement(valuesContainer)\n .withLabel(l('RemoveFilterOn', captionLabel))\n .withSelectAction(this.onClickHandler)\n .build();\n\n const breadcrumb = $$('span', { className: 'coveo-category-facet-breadcrumb' }, breadcrumbTitle, valuesContainer);\n return breadcrumb.el;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetBreadcrumb.ts","import { CategoryFacet } from './CategoryFacet';\nimport { IBuildingQueryEventArgs, QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { sortBy, chain } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { IGroupByValue } from '../../rest/GroupByValue';\n\nclass PathMap {\n get: (key: string) => PathMap;\n set: (key: string, value?: PathMap) => void;\n}\n\ntype DebugGroupByPositionInQuery = {\n start: number;\n end: number;\n};\n\nexport class CategoryFacetDebug {\n private static logger = new Logger(CategoryFacet);\n private positionInQuery: DebugGroupByPositionInQuery;\n constructor(private categoryFacet: CategoryFacet) {\n this.categoryFacet.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, args => this.handleBuildingQuery(args));\n this.categoryFacet.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, args => {\n this.handleQuerySuccess(args);\n });\n }\n\n private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n const firstPositionInQuery = args.queryBuilder.groupByRequests.length;\n if (this.categoryFacet.activePath.length == 0) {\n this.positionInQuery = { start: firstPositionInQuery, end: firstPositionInQuery + 1 };\n this.addGroupByForEmptyPath(args.queryBuilder);\n } else {\n const path = this.categoryFacet.activePath;\n this.positionInQuery = { start: firstPositionInQuery, end: firstPositionInQuery + path.length };\n this.addGroupByForEachPathElement(args.queryBuilder, path);\n }\n }\n\n private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n args.results.groupByResults\n .slice(this.positionInQuery.start, this.positionInQuery.end)\n .forEach(groupByResult => CategoryFacetDebug.analyzeResults(groupByResult, this.categoryFacet.options.delimitingCharacter));\n }\n\n private addGroupByForEmptyPath(queryBuilder: QueryBuilder) {\n queryBuilder.groupByRequests.push({\n field: this.categoryFacet.options.field as string,\n injectionDepth: this.categoryFacet.options.injectionDepth\n });\n }\n\n private addGroupByForEachPathElement(queryBuilder: QueryBuilder, path: string[]) {\n path.forEach(pathElement => {\n this.categoryFacet.categoryFacetQueryController.addDebugGroupBy(queryBuilder, pathElement);\n });\n }\n\n public static analyzeResults(groupByResults: IGroupByResult, delimiter: string) {\n const treeRoot: PathMap = new Map<string, PathMap>();\n const orphans: string[] = [];\n\n let paths = this.buildPathsFromGroupByValues(groupByResults.values, delimiter);\n paths = sortBy(paths, value => value.length);\n\n paths.forEach(path => {\n if (path.length == 1) {\n this.addFirstNodeToTree(treeRoot, path);\n } else {\n let pathIsValid = true;\n const parentsOnly = path.slice(0, -1);\n let currentNode = treeRoot;\n for (const parent of parentsOnly) {\n currentNode = currentNode.get(parent);\n if (!currentNode) {\n this.processOrphan(orphans, path, delimiter);\n pathIsValid = false;\n break;\n }\n }\n if (pathIsValid) {\n this.addValidNodeToTree(currentNode, path);\n }\n }\n });\n return orphans;\n }\n\n private static buildPathsFromGroupByValues(values: IGroupByValue[], delimiter: string) {\n return chain(values)\n .pluck('value')\n .map((value: string) => value.split(delimiter))\n .sortBy(value => value.length)\n .value();\n }\n\n private static addFirstNodeToTree(treeRoot: PathMap, path: string[]) {\n treeRoot.set(path[0], new Map<string, PathMap>());\n }\n\n private static addValidNodeToTree(node: PathMap, path: string[]) {\n node.set(path.slice(-1)[0], new Map<string, PathMap>());\n }\n\n private static processOrphan(orphans: string[], path: string[], delimiter: string) {\n const formattedOrphan = path.join(delimiter);\n orphans.push(formattedOrphan);\n this.logger.error(`Value ${formattedOrphan} has no parent.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetDebug.ts","import { CategoryFacet } from './CategoryFacet';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface ICategoryFacetHeaderOptions {\n categoryFacet: CategoryFacet;\n title: string;\n}\n\nexport class CategoryFacetHeader {\n public element: HTMLElement;\n\n constructor(private options: ICategoryFacetHeaderOptions) {\n this.element = document.createElement('div');\n $$(this.element).addClass('coveo-facet-header');\n }\n\n public build(): HTMLElement {\n const waitElement = this.buildWaitAnimation();\n\n const titleSection = $$(\n 'div',\n {\n className: 'coveo-category-facet-title',\n role: 'heading',\n 'aria-level': '2',\n 'aria-label': `${l('FacetTitle', this.options.title)}.`\n },\n this.options.title\n );\n this.element = $$('div', { className: 'coveo-category-facet-header' }, titleSection).el;\n $$(this.element).append(waitElement);\n\n const eraserElement = this.buildEraser();\n $$(this.element).append(eraserElement);\n return this.element;\n }\n\n private buildWaitAnimation(): HTMLElement {\n const waitElement = $$('div', { className: CategoryFacet.WAIT_ELEMENT_CLASS }, SVGIcons.icons.loading).el;\n SVGDom.addClassToSVGInContainer(waitElement, 'coveo-category-facet-header-wait-animation-svg');\n waitElement.style.visibility = 'hidden';\n return waitElement;\n }\n\n private buildEraser() {\n const eraserElement = $$('div', { className: 'coveo-category-facet-header-eraser coveo-facet-header-eraser' }, SVGIcons.icons.mainClear)\n .el;\n\n SVGDom.addClassToSVGInContainer(eraserElement, 'coveo-facet-header-eraser-svg');\n\n const onClearClick = () => {\n this.options.categoryFacet.reset();\n };\n\n new AccessibleButton()\n .withElement(eraserElement)\n .withLabel(l('Clear', this.options.title))\n .withClickAction(onClearClick)\n .withEnterKeyboardAction(onClearClick)\n .build();\n\n return eraserElement;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetHeader.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetSettings.scss\n// module id = 393\n// module chunks = 1 2 3 4 77","import { Facet } from './Facet';\nimport { Utils } from '../../utils/Utils';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\n\nexport class DependentFacetManager {\n constructor(private facet: Facet) {}\n\n public listenToParentIfDependentFacet() {\n if (!this.isDependentFacet) {\n return;\n }\n\n this.facet.bind.onQueryState(MODEL_EVENTS.CHANGE, undefined, () => this.resetIfParentFacetHasNoSelectedValues());\n }\n\n public updateVisibilityBasedOnDependsOn() {\n if (this.isDependentFacet) {\n $$(this.facet.element).toggleClass('coveo-facet-dependent', !this.parentFacetHasSelectedValues);\n }\n }\n\n private get isDependentFacet() {\n return Utils.isNonEmptyString(this.facetDependsOnField);\n }\n\n private get facetDependsOnField() {\n return this.facet.options.dependsOn;\n }\n\n private resetIfParentFacetHasNoSelectedValues() {\n if (this.parentFacetHasSelectedValues) {\n return;\n }\n\n this.facet.reset();\n }\n\n private get parentFacetHasSelectedValues() {\n const parentSelectedValuesId = QueryStateModel.getFacetId(this.facetDependsOnField);\n return this.valuesExistForFacetWithId(parentSelectedValuesId);\n }\n\n private valuesExistForFacetWithId(id: string) {\n const values = this.facet.queryStateModel.get(id);\n return values != null && values.length != 0;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/DependentFacetManager.ts","/// <reference path='Facet.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 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(<string>facet.options.field, '@objecttype') ||\n QueryUtils.isStratusAgnosticField(<string>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(<string>facet.options.field, '@objecttype') ||\n QueryUtils.isStratusAgnosticField(<string>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(<string>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 (FacetUtils.isMonthFieldValue(field, value)) {\n const month = parseInt(value, 10);\n found = DateUtils.monthToString(month - 1);\n } else {\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 'styling/_Facet';\nimport 'styling/_FacetFooter';\nimport * as _ from 'underscore';\nimport { FacetQueryController } from '../../controllers/FacetQueryController';\nimport { BreadcrumbEvents, IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IPopulateOmniboxEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { IDoneBuildingQueryEventArgs, INewQueryEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { ISearchAlertsPopulateMessageEventArgs, SearchAlertsEvents } from '../../events/SearchAlertEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { IQueryStateExcludedAttribute, IQueryStateIncludedAttribute, QueryStateModel } from '../../models/QueryStateModel';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport { l } from '../../strings/Strings';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Win } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta, IAnalyticsFacetSortMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions, IFieldOption, IQueryExpression } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IOmniboxDataRow } from '../Omnibox/OmniboxInterface';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport { BreadcrumbValueElement } from './BreadcrumbValueElement';\nimport { BreadcrumbValueList } from './BreadcrumbValuesList';\nimport { FacetHeader } from './FacetHeader';\nimport { FacetSearch } from './FacetSearch';\nimport { FacetSearchParameters } from './FacetSearchParameters';\nimport { FacetSearchValuesList } from './FacetSearchValuesList';\nimport { FacetSettings } from './FacetSettings';\nimport { FacetSort } from './FacetSort';\nimport { FacetUtils } from './FacetUtils';\nimport { FacetValueElement } from './FacetValueElement';\nimport { FacetValue, FacetValues } from './FacetValues';\nimport { FacetValuesList } from './FacetValuesList';\nimport { FacetValuesOrder } from './FacetValuesOrder';\nimport { OmniboxValueElement } from './OmniboxValueElement';\nimport { OmniboxValuesList } from './OmniboxValuesList';\nimport { ValueElement } from './ValueElement';\nimport { ValueElementRenderer } from './ValueElementRenderer';\nimport { DependentFacetManager } from './DependentFacetManager';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\n\nexport interface IFacetOptions extends IResponsiveComponentOptions {\n title?: string;\n field?: IFieldOption;\n isMultiValueField?: boolean;\n numberOfValues?: number;\n pageSize?: number;\n sortCriteria?: string;\n availableSorts?: string[];\n injectionDepth?: number;\n showIcon?: boolean;\n useAnd?: boolean;\n enableCollapse?: boolean;\n enableTogglingOperator?: boolean;\n enableMoreLess?: boolean;\n valueCaption?: any;\n lookupField?: IFieldOption;\n enableFacetSearch?: boolean;\n facetSearchDelay?: number;\n facetSearchIgnoreAccents?: boolean;\n numberOfValuesInFacetSearch?: number;\n includeInBreadcrumb?: boolean;\n includeInOmnibox?: boolean;\n numberOfValuesInOmnibox?: number;\n numberOfValuesInBreadcrumb?: number;\n id?: string;\n computedField?: IFieldOption;\n computedFieldOperation?: string;\n computedFieldFormat?: string;\n computedFieldCaption?: string;\n preservePosition?: boolean;\n scrollContainer?: HTMLElement;\n paddingContainer?: HTMLElement;\n customSort?: string[];\n enableSettings?: boolean;\n enableSettingsFacetState?: boolean;\n allowedValues?: string[];\n headerIcon?: string;\n valueIcon?: (facetValue: FacetValue) => string;\n additionalFilter?: IQueryExpression;\n dependsOn?: string;\n useWildcardsInFacetSearch?: boolean;\n}\n\n/**\n * The `Facet` component displays a *facet* of the results for the current query. A facet is a list of values for a\n * certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n *\n * The list of values is obtained using a [`GroupByRequest`]{@link IGroupByRequest} operation performed at the same time\n * as the main query.\n *\n * The `Facet` component allows the end user to drill down inside a result set by restricting the result to certain\n * field values. It also allows filtering out values from the facet itself, and can provide a search box to look for\n * specific values inside larger sets.\n *\n * This is probably the most complex component in the Coveo JavaScript Search Framework and as such, it allows for many\n * configuration options.\n *\n * See also the [`FacetRange`]{@link FacetRange} and [`TimespanFacet`]{@link TimespanFacet} components (which\n * extend this component), and the [`FacetSlider`]{@link FacetSlider} and [`CategoryFacet`]{@link CategoryFacet} components (which do not extend this\n * component, but are very similar).\n */\nexport class Facet extends Component {\n static ID = 'Facet';\n static omniboxIndex = 50;\n\n static doExport = () => {\n exportGlobally({\n Facet: Facet,\n FacetHeader: FacetHeader,\n FacetSearchValuesList: FacetSearchValuesList,\n FacetSettings: FacetSettings,\n FacetSort: FacetSort,\n FacetUtils: FacetUtils,\n FacetValueElement: FacetValueElement,\n FacetValue: FacetValue\n });\n };\n\n /**\n * The possible options for a facet\n * @componentOptions\n */\n static options: IFacetOptions = {\n /**\n * Specifies the title to display at the top of the facet.\n *\n * Default value is the localized string for `NoTitle`.\n */\n title: ComponentOptions.buildLocalizedStringOption({\n defaultValue: l('NoTitle'),\n section: 'CommonOptions',\n priority: 10\n }),\n /**\n * Specifies the index field whose values the facet should use.\n *\n * This requires the given field to be configured correctly in the index as a *Facet field* (see\n * [Adding Fields to a Source](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=137)).\n *\n * Specifying a value for this option is required for the `Facet` component to work.\n */\n field: ComponentOptions.buildFieldOption({ required: true, groupByField: true, section: 'CommonOptions' }),\n headerIcon: ComponentOptions.buildStringOption({\n deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.'\n }),\n /**\n * Specifies a unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n * the facet state in the URL hash.\n *\n * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n * those two facets. This `id` must be unique among the facets.\n *\n * Non-word characters except - @ $ _ . + ! * ' ( ) , , ( `^a-zA-Z0-9-@$_.+!*'(),,]+` ) are automatically removed from the `id` value.\n *\n * Default value is the [`field`]{@link Facet.options.field} option value.\n */\n id: ComponentOptions.buildStringOption({\n postProcessing: (value: string, options: IFacetOptions) => {\n if (value) {\n // All non-word characters, except @ (the default character that specifies a field in the index)\n // and characters that do no need to be encoded in the URL : - @ $ _ . + ! * ' ( ) , ,\n const modified = value.replace(/[^a-zA-Z0-9-@$_.+!*'(),,]+/g, '');\n if (Utils.isNullOrEmptyString(modified)) {\n return options.field as string;\n }\n return modified;\n }\n return options.field as string;\n }\n }),\n /**\n * Specifies whether the facet [`field`]{@link Facet.options.field} is configured in the index as a multi-value\n * field (semicolon separated values such as `abc;def;ghi`).\n *\n * Default value is `false`.\n */\n isMultiValueField: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n /**\n * Specifies the field whose values the Facet should display.\n *\n * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n */\n lookupField: ComponentOptions.buildFieldOption({\n deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n }),\n /**\n * Specifies whether to display the facet **Settings** menu.\n *\n * See also the [`enableSettingsFacetState`]{@link Facet.options.enableSettingsFacetState},\n * [`availableSorts`]{@link Facet.options.availableSorts}, and\n * [`enableCollapse`]{@link Facet.options.enableCollapse} options.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `true`.\n */\n enableSettings: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'SettingsMenu', priority: 9 }),\n /**\n * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies whether the\n * **Save state** menu option is available in the facet **Settings** menu.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `false`.\n */\n enableSettingsFacetState: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableSettings' }),\n /**\n * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies the sort criteria\n * options to display in the facet **Settings** menu.\n *\n * Possible values are:\n * - `\"occurrences\"`\n * - `\"score\"`\n * - `\"alphaascending\"`\n * - `\"alphadescending\"`\n * - `\"computedfieldascending\"`\n * - `\"computedfielddescending\"`\n * - `\"custom\"`\n *\n * See {@link IGroupByRequest.sortCriteria} for a description of each possible value.\n *\n * **Notes:**\n * > * The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * > * Using value captions will disable alphabetical sorts (see the [valueCaption]{@link Facet.options.valueCaption} option).\n *\n * Default value is `occurrences,score,alphaascending,alphadescending`.\n */\n availableSorts: ComponentOptions.buildListOption<\n | 'occurrences'\n | 'score'\n | 'alphaascending'\n | 'alphadescending'\n | 'computedfieldascending'\n | 'computedfielddescending'\n | 'chisquare'\n | 'nosort'\n >({\n defaultValue: ['occurrences', 'score', 'alphaascending', 'alphadescending'],\n depend: 'enableSettings',\n section: 'Sorting',\n values: ['AlphaAscending', 'AlphaDescending', 'ComputedFieldAscending', 'ComputedFieldDescending', 'ChiSquare', 'NoSort']\n }),\n /**\n * Specifies the criteria to use to sort the facet values.\n *\n * See {@link IGroupByRequest.sortCriteria} for the list and description of possible values.\n *\n * Default value is the first sort criteria specified in the [`availableSorts`]{@link Facet.options.availableSorts}\n * option, or `occurrences` if no sort criteria is specified.\n */\n sortCriteria: ComponentOptions.buildStringOption({\n postProcessing: (value, options: IFacetOptions) =>\n value || (options.availableSorts.length > 0 ? options.availableSorts[0] : 'occurrences'),\n section: 'Sorting'\n }),\n /**\n * Specifies a custom order by which to sort the facet values.\n *\n * **Example:**\n *\n * You could use this option to specify a logical order for support tickets, such as:\n * ```html\n * <div class=\"CoveoFacet\" data-field=\"@ticketstatus\" data-title=\"Ticket Status\" data-tab=\"All\" data-custom-sort=\"New,Opened,Feedback,Resolved\"></div>\n * ```\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n */\n customSort: ComponentOptions.buildListOption<string>({ section: 'Sorting' }),\n /**\n * Specifies the maximum number of field values to display by default in the facet before the user\n * clicks the arrow to show more.\n *\n * See also the [`enableMoreLess`]{@link Facet.options.enableMoreLess} option.\n */\n numberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'CommonOptions' }),\n /**\n * Specifies the *injection depth* to use for the [`GroupByRequest`]{@link IGroupByRequest} operation.\n *\n * The injection depth determines how many results to scan in the index to ensure that the facet lists all potential\n * facet values. Increasing this value enhances the accuracy of the listed values at the cost of performance.\n *\n * Default value is `1000`. Minimum value is `0`.\n * @notSupportedIn salesforcefree\n */\n injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 0 }),\n showIcon: ComponentOptions.buildBooleanOption({\n defaultValue: false,\n deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n }),\n /**\n * Specifies whether to use the `AND` operator in the resulting filter when multiple values are selected in the\n * facet.\n *\n * Setting this option to `true` means that items must have all of the selected values to match the resulting\n * query.\n *\n * Default value is `false`, which means that the filter uses the `OR` operator. Thus, by default, items must\n * have at least one of the selected values to match the query.\n */\n useAnd: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Filtering' }),\n /**\n * Specifies whether to allow the user to toggle between the `OR` and `AND` modes in the facet.\n *\n * Setting this option to `true` displays an icon in the top right corner of the facet. The user can click this icon\n * to toggle between between the two modes.\n *\n * Default value is `false`.\n */\n enableTogglingOperator: ComponentOptions.buildBooleanOption({\n defaultValue: false,\n alias: 'allowTogglingOperator',\n section: 'Filtering'\n }),\n /**\n * Specifies whether to display a search box at the bottom of the facet for searching among the available facet\n * [`field`]{@link Facet.options.field} values.\n *\n * See also the [`facetSearchDelay`]{@link Facet.options.facetSearchDelay},\n * [`facetSearchIgnoreAccents`]{@link Facet.options.facetSearchIgnoreAccents}, and\n * [`numberOfValuesInFacetSearch`]{@link Facet.options.numberOfValuesInFacetSearch} options.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `true`.\n */\n enableFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'FacetSearch', priority: 8 }),\n /**\n * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies the delay (in\n * milliseconds) before sending a search request to the server when the user starts typing in the facet search box.\n *\n * Specifying a smaller value makes results appear faster. However, chances of having to cancel many requests\n * sent to the server increase as the user keeps on typing new characters.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `100`. Minimum value is `0`.\n */\n facetSearchDelay: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0, depend: 'enableFacetSearch' }),\n /**\n * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies whether to ignore\n * accents in the facet search box.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `false`.\n */\n facetSearchIgnoreAccents: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFacetSearch' }),\n /**\n * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies the number of v\n * alues to display in the facet search results popup.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `15`. Minimum value is `1`.\n */\n numberOfValuesInFacetSearch: ComponentOptions.buildNumberOption({ defaultValue: 15, min: 1, section: 'FacetSearch' }),\n /**\n * Specifies whether [wildcards]{@link AllowedValuesPatternType.wildcards} are used as the [allowedValuesPatternType]{@link IGroupByRequest.allowedValuesPatternType}\n * in the [groupBy]{@link IGroupByRequest} for the facet search.\n *\n * Enabling this option returns results that end with the entered value. For example, searching for `veo` would match with `Coveo`.\n *\n * **Note:**\n * > If you are experiencing slow facet search and/or timeouts when this option is set to `true`, consider enabling the **Use cache for nested queries**\n * > option on your facet [field]{@link Facet.options.field} in the Coveo Cloud Admninistration Console (see [Add/Edit a Field]{@link https://onlinehelp.coveo.com/en/cloud/add_edit_fields.htm}).\n */\n useWildcardsInFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'FacetSearch' }),\n /**\n * Specifies whether the facet should push data to the [`Breadcrumb`]{@link Breadcrumb} component.\n *\n * See also the [`numberOfValuesInBreadcrumb`]{@link Facet.options.numberOfValuesInBreadcrumb} option.\n *\n * Default value is `true`.\n */\n includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n /**\n * If the [`includeInBreadcrumb`]{@link Facet.options.includeInBreadcrumb} option is `true`, specifies the maximum\n * number of values that the facet should display in the [`Breadcrumb`]{@link Breadcrumb} before outputting a\n * **more...** button.\n *\n * Default value is `5` on a desktop computer and `3` on a mobile device. Minimum value is `0`.\n */\n numberOfValuesInBreadcrumb: ComponentOptions.buildNumberOption({\n defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n min: 0,\n depend: 'includeInBreadcrumb'\n }),\n /**\n * Specifies whether the Facet should push data to the {@link Omnibox} component.\n *\n * See also {@link Facet.options.numberOfValuesInOmnibox}.\n *\n * Default value is `false`.\n *\n * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n */\n includeInOmnibox: ComponentOptions.buildBooleanOption({\n defaultValue: false,\n deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n }),\n /**\n * When {@link Facet.options.includeInOmnibox} is `true`, specifies the number of values to populate the\n * {@link Breadcrumb} with.\n *\n * Default value is `5` on desktop computer and `3` on a mobile device. Minimum value is `0`.\n *\n * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n */\n numberOfValuesInOmnibox: ComponentOptions.buildNumberOption({\n defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n min: 0,\n depend: 'includeInOmnibox',\n deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n }),\n /**\n * Specifies the name of a field on which to execute an aggregate operation for all distinct values of the facet\n * [`field`]{@link Facet.options.field}.\n *\n * The facet displays the result of the operation along with the number of occurrences for each value.\n *\n * You can use this option to compute the sum of a field (like a money amount) for each listed facet value.\n *\n * Works in conjunction with the [`computedFieldOperation`]{@link Facet.options.computedFieldOperation},\n * [`computedFieldFormat`]{@link Facet.options.computedFieldFormat}, and\n * [`computedFieldCaption`]{@link Facet.options.computedFieldCaption} options.\n * @notSupportedIn salesforcefree\n */\n computedField: ComponentOptions.buildFieldOption({ section: 'ComputedField', priority: 7 }),\n /**\n * Specifies the type of aggregate operation to perform on the [`computedField`]{@link Facet.options.computedField}.\n *\n * The possible values are:\n * - `sum` - Computes the sum of the computed field values.\n * - `average` - Computes the average of the computed field values.\n * - `minimum` - Finds the minimum value of the computed field values.\n * - `maximum` - Finds the maximum value of the computed field values.\n *\n * Default value is `sum`.\n * @notSupportedIn salesforcefree\n */\n computedFieldOperation: ComponentOptions.buildStringOption({ defaultValue: 'sum', section: 'ComputedField' }),\n /**\n * Specifies how to format the values resulting from a\n * [`computedFieldOperation`]{@link Facet.options.computedFieldOperation}.\n *\n * The Globalize library defines all available formats (see\n * [Globalize](https://github.com/klaaspieter/jquery-global#globalizeformat-value-format-culture-)).\n *\n * The most commonly used formats are:\n * - `c0` - Formats the value as a currency.\n * - `n0` - Formats the value as an integer.\n * - `n2` - Formats the value as a floating point with 2 decimal digits.\n *\n * Default value is `\"c0\"`.\n * @notSupportedIn salesforcefree\n */\n computedFieldFormat: ComponentOptions.buildStringOption({ defaultValue: 'c0', section: 'ComputedField' }),\n /**\n * Specifies what the caption of the [`computedField`]{@link Facet.options.computedField} should be in the facet\n * **Settings** menu for sorting.\n *\n * For example, setting this option to `\"Money\"` will display `\"Money Ascending\"` for computed field ascending.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is the localized string for `ComputedField`.\n * @notSupportedIn salesforcefree\n */\n computedFieldCaption: ComponentOptions.buildLocalizedStringOption({\n defaultValue: l('ComputedField'),\n section: 'ComputedField'\n }),\n /**\n * Specifies whether the facet should remain stable in its current position in the viewport while the mouse cursor\n * is over it.\n *\n * Whenever the value selection changes in a facet, the search interface automatically performs a query. This new\n * query might cause other elements in the page to resize themselves (typically, other facets above or below the\n * one the user is interacting with).\n *\n * This option is responsible for adding the `<div class='coveo-topSpace'>` and\n * `<div class='coveo-bottomSpace'>` around the Facet container. The Facet adjusts the scroll amount of the page to\n * ensure that it does not move relatively to the mouse when the results are updated.\n *\n * In some cases, the facet also adds margins to the `scrollContainer`, if scrolling alone is not enough to\n * preserve position.\n *\n * See also the [`paddingContainer`]{@link Facet.options.paddingContainer}, and\n * [`scrollContainer`]{@link Facet.options.scrollContainer} options.\n *\n * Default value is `true`.\n */\n preservePosition: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n /**\n * Specifies the parent container of the facets.\n *\n * Used by the [`preservePosition`]{@link Facet.options.preservePosition} option.\n *\n * Default value is `element.parentElement`.\n */\n paddingContainer: ComponentOptions.buildSelectorOption({\n defaultFunction: element => {\n const standardColumn = $$(element).parent('coveo-facet-column');\n if (standardColumn != null) {\n return standardColumn;\n }\n return element.parentElement;\n }\n }),\n /**\n * Specifies the HTML element (through a CSS selector) whose scroll amount the facet should adjust to preserve its\n * position when results are updated.\n *\n * Used by the [`preservePosition`]{@link Facet.options.preservePosition} option.\n *\n * Default value is `document.body`.\n */\n scrollContainer: ComponentOptions.buildSelectorOption({ defaultFunction: element => document.body }),\n /**\n * Specifies whether to enable the **More** and **Less** buttons in the Facet.\n *\n * See also the [`pageSize`]{@link Facet.options.pageSize} option.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `true`.\n */\n enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n /**\n * If the [`enableMoreLess`]{@link Facet.options.enableMoreLess} option is `true`, specifies the number of\n * additional results to fetch when clicking the **More** button.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `10`. Minimum value is `1`.\n */\n pageSize: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableMoreLess' }),\n /**\n * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies whether the\n * **Collapse \\ Expand** menu option is available in the facet **Settings** menu.\n *\n * **Note:**\n * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n *\n * Default value is `true`.\n */\n enableCollapse: ComponentOptions.buildBooleanOption({ defaultValue: true, depend: 'enableSettings' }),\n /**\n * Specifies an explicit list of [`allowedValues`]{@link IGroupByRequest.allowedValues} in the\n * [`GroupByRequest`]{@link IGroupByRequest}.\n *\n * If you specify a list of values for this option, the facet uses only these values (if they are available in\n * the current result set).\n *\n * **Example:**\n *\n * The following facet only uses the `Contact`, `Account`, and `File` values of the `@objecttype` field. Even if the\n * current result set contains other `@objecttype` values, such as `Message`, or `Product`, the facet does not use\n * those other values.\n *\n * ```html\n *\n * <div class=\"CoveoFacet\" data-field=\"@objecttype\" data-title=\"Object Type\" data-tab=\"All\" data-allowed-values=\"Contact,Account,File\"></div>\n * ```\n *\n * Default value is `undefined`, and the facet uses all available values for its\n * [`field`]{@link Facet.options.field} in the current result set.\n */\n allowedValues: ComponentOptions.buildListOption<string>(),\n /**\n * Specifies an additional query expression (query override) to add to each\n * [`GroupByRequest`]{@link IGroupByRequest} that this facet performs.\n *\n * Example: `@date>=2014/01/01`\n * @notSupportedIn salesforcefree\n */\n additionalFilter: ComponentOptions.buildQueryExpressionOption({ section: 'Filtering' }),\n /**\n * Specifies whether this facet only appears when a value is selected in its \"parent\" facet.\n *\n * To specify the parent facet, use its [`id`]{@link Facet.options.id}.\n *\n * Remember that by default, a facet `id` value is the same as its [`field`]{@link Facet.options.field} option\n * value.\n *\n * **Examples:**\n *\n * First case: the \"parent\" facet has no custom `id`:\n * ```html\n * <!-- \"Parent\" Facet: -->\n * <div class='CoveoFacet' data-field='@myfield' data-title='My Parent Facet'></div>\n *\n * <!-- The \"dependent\" Facet must refer to the default `id` of its \"parent\" Facet, which is the name of its field. -->\n * <div class='CoveoFacet' data-field='@myotherfield' data-title='My Dependent Facet' data-depends-on='@myfield'></div>\n * ```\n *\n * Second case: the \"parent\" facet has a custom `id`:\n * ```html\n * <!-- \"Parent\" Facet: -->\n * <div class='CoveoFacet' data-field='@myfield' data-title='My Parent Facet' data-id='myParentCustomId'></div>\n *\n * <!-- The \"dependent\" Facet must refer to the custom `id` of its \"parent\" Facet, which is 'myParentCustomId'. -->\n * <div class='CoveoFacet' data-field='@myotherfield' data-title='My Dependent Facet' data-depends-on='myParentCustomId'></div>\n * ```\n *\n * Default value is `undefined`\n */\n dependsOn: ComponentOptions.buildStringOption(),\n /**\n * Specifies a JSON object describing a mapping of facet values to their desired captions. See\n * [Normalizing Facet Value Captions](https://developers.coveo.com/x/jBsvAg).\n *\n * **Examples:**\n *\n * You can set the option in the ['init']{@link init} call:\n * ```javascript\n * var myValueCaptions = {\n * \"txt\" : \"Text files\",\n * \"html\" : \"Web page\",\n * [ ... ]\n * };\n *\n * Coveo.init(document.querySelector(\"#search\"), {\n * Facet : {\n * valueCaption : myValueCaptions\n * }\n * });\n * ```\n *\n * Or before the `init` call, using the ['options']{@link options} top-level function:\n * ```javascript\n * Coveo.options(document.querySelector(\"#search\"), {\n * Facet : {\n * valueCaption : myValueCaptions\n * }\n * });\n * ```\n *\n * Or directly in the markup:\n * ```html\n * <!-- Ensure that the double quotes are properly handled in data-value-caption. -->\n * <div class='CoveoFacet' data-field='@myotherfield' data-value-caption='{\"txt\":\"Text files\",\"html\":\"Web page\"}'></div>\n * ```\n *\n * **Note:**\n * > Using value captions will disable alphabetical sorts (see the [availableSorts]{@link Facet.options.availableSorts} option).\n */\n valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>(),\n ...ResponsiveFacetOptions\n };\n\n public facetQueryController: FacetQueryController;\n public keepDisplayedValuesNextTime: boolean = false;\n public values = new FacetValues();\n public currentPage: number = 0;\n public numberOfValues: number;\n public firstQuery = true;\n public operatorAttributeId: string;\n\n /**\n * Renders and handles the facet **Search** part of the component.\n */\n public facetSearch: FacetSearch;\n\n /**\n * Renders and handles the facet **Settings** part of the component\n */\n public facetSettings: FacetSettings;\n public facetSort: FacetSort;\n public facetValuesList: FacetValuesList;\n public facetHeader: FacetHeader;\n public searchContainer: ValueElementRenderer;\n\n protected omniboxZIndex;\n protected moreElement: HTMLElement;\n protected lessElement: HTMLElement;\n\n protected headerElement: HTMLElement;\n protected footerElement: HTMLElement;\n private canFetchMore: boolean = true;\n private nbAvailableValues: number;\n private dependentFacetManager: DependentFacetManager;\n\n private showingWaitAnimation = false;\n private pinnedViewportPosition: number;\n private unpinnedViewportPosition: number;\n private pinnedTopSpace: HTMLElement;\n private pinnedBottomSpace: HTMLElement;\n\n private componentStateId: string;\n private includedAttributeId: string;\n private excludedAttributeId: string;\n private lookupValueAttributeId: string;\n private listenToQueryStateChange = true;\n\n /**\n * Creates a new `Facet` component. Binds multiple query events as well.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the `Facet` 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 facetClassId The ID to use for this facet (as `Facet` inherited from by other component\n * (e.g., [`FacetRange`]{@link FacetRange}). Default value is `Facet`.\n */\n constructor(public element: HTMLElement, public options: IFacetOptions, bindings?: IComponentBindings, facetClassId: string = Facet.ID) {\n super(element, facetClassId, bindings);\n this.options = ComponentOptions.initComponentOptions(element, Facet, options);\n\n if (this.options.valueCaption != null) {\n this.options.availableSorts = _.filter(this.options.availableSorts, (sort: string) => !/^alpha.*$/.test(sort));\n this.logger.warn(`Because the ${this.options.field} facet is using value captions, alphabetical sorts are disabled.`);\n }\n\n ResponsiveFacets.init(this.root, this, this.options);\n\n // Serves as a way to render facet in the omnibox in the order in which they are instantiated\n this.omniboxZIndex = Facet.omniboxIndex;\n Facet.omniboxIndex--;\n\n this.checkForComputedFieldAndSort();\n this.checkForValueCaptionType();\n this.checkForCustomSort();\n this.initDependentFacetManager();\n this.initFacetQueryController();\n this.initQueryEvents();\n this.initQueryStateEvents();\n this.initComponentStateEvents();\n this.initOmniboxEvents();\n this.initBreadCrumbEvents();\n this.initSearchAlertEvents();\n this.updateNumberOfValues();\n\n this.bind.oneRootElement(QueryEvents.querySuccess, () => {\n this.firstQuery = false;\n });\n }\n\n public isCurrentlyDisplayed() {\n if (!$$(this.element).isVisible()) {\n return false;\n }\n\n if ($$(this.element).hasClass('coveo-active')) {\n return true;\n }\n\n if ($$(this.element).hasClass('coveo-facet-empty')) {\n return false;\n }\n\n return true;\n }\n\n public createDom() {\n this.initBottomAndTopSpacer();\n this.buildFacetContent();\n this.updateAppearanceDependingOnState();\n // After the facet has been created (and before the first query is applied)\n // Try to load a state from the setting, if it's available\n // Execute only _.once (only the first query, or the first time the user switch to a tab that contains a newly set of active facet)\n if (this.facetSettings && this.options.enableSettingsFacetState) {\n const loadOnce = <(args: INewQueryEventArgs) => any>_.once(() => {\n this.facetSettings.loadSavedState.apply(this.facetSettings);\n });\n this.bind.onRootElement(QueryEvents.newQuery, loadOnce);\n }\n }\n\n /**\n * Selects a single value.\n *\n * Does not trigger a query automatically.\n *\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `selectValue('foobar')` or\n * `selectValue(new FacetValue('foobar'))`).\n */\n public selectValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Selecting facet value', this.facetValuesList.select(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Selects multiple values.\n *\n * Does not trigger a query automatically.\n *\n * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n */\n public selectMultipleValues(values: FacetValue[] | string[]): void {\n Assert.exists(values);\n this.ensureDom();\n _.each(values as FacetValue[], value => {\n this.logger.info('Selecting facet value', this.facetValuesList.select(value));\n });\n this.facetValueHasChanged();\n }\n\n /**\n * Deselects a single value.\n *\n * Does not trigger a query automatically.\n *\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `deselectValue('foobar')` or\n * `deselectValue(new FacetValue('foobar'))`).\n */\n public deselectValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Deselecting facet value', this.facetValuesList.unselect(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Deselects multiple values.\n *\n * Does not trigger a query automatically.\n *\n * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n */\n public deselectMultipleValues(values: FacetValue[] | string[]): void {\n Assert.exists(values);\n this.ensureDom();\n _.each(values as FacetValue[], value => {\n this.logger.info('Deselecting facet value', this.facetValuesList.unselect(value));\n });\n this.facetValueHasChanged();\n }\n\n /**\n * Excludes a single value.\n *\n * Does not trigger a query automatically.\n *\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `excludeValue('foobar')` or\n * `excludeValue(new FacetValue('foobar'))`).\n */\n public excludeValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Excluding facet value', this.facetValuesList.exclude(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Excludes multiple values.\n *\n * Does not trigger a query automatically.\n *\n * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n */\n public excludeMultipleValues(values: FacetValue[] | string[]): void {\n Assert.exists(values);\n this.ensureDom();\n _.each(values as FacetValue[], value => {\n this.logger.info('Excluding facet value', this.facetValuesList.exclude(value));\n });\n this.facetValueHasChanged();\n }\n\n /**\n * Unexcludes a single value.\n *\n * Does not trigger a query automatically.\n *\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n */\n public unexcludeValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Unexcluding facet value', this.facetValuesList.unExclude(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Unexcludes multiple values.\n *\n * Does not trigger a query automatically.\n *\n * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n */\n public unexcludeMultipleValues(values: FacetValue[] | string[]): void {\n Assert.exists(values);\n this.ensureDom();\n _.each(values as FacetValue[], value => {\n this.logger.info('Unexcluding facet value', this.facetValuesList.unExclude(value));\n });\n this.facetValueHasChanged();\n }\n\n /**\n * Toggles the selection state of a single value (selects the value if it is not already selected; un-selects the\n * value if it is already selected).\n *\n * Does not trigger a query automatically.\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n */\n public toggleSelectValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Toggle select facet value', this.facetValuesList.toggleSelect(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Toggles the exclusion state of a single value (excludes the value if it is not already excluded; un-excludes the\n * value if it is already excluded).\n *\n * Does not trigger a query automatically.\n *\n * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n */\n public toggleExcludeValue(value: FacetValue | string): void {\n Assert.exists(value);\n this.ensureDom();\n this.logger.info('Toggle exclude facet value', this.facetValuesList.toggleExclude(value));\n this.facetValueHasChanged();\n }\n\n /**\n * Returns the currently displayed values as an array of strings.\n *\n * @returns {any[]} The currently displayed values.\n */\n public getDisplayedValues(): string[] {\n return _.pluck(this.getDisplayedFacetValues(), 'value');\n }\n\n /**\n * Returns the currently displayed values as an array of [`FacetValue`]{@link FacetValue}.\n *\n * @returns {T[]} The currently displayed values.\n */\n public getDisplayedFacetValues(): FacetValue[] {\n this.ensureDom();\n const displayed = this.facetValuesList.getAllCurrentlyDisplayed();\n return _.map(displayed, (value: ValueElement) => {\n return value.facetValue;\n });\n }\n\n /**\n * Returns the currently selected values as an array of strings.\n * @returns {string[]} The currently selected values.\n */\n public getSelectedValues(): string[] {\n this.ensureDom();\n return _.map(this.values.getSelected(), (value: FacetValue) => value.value);\n }\n\n /**\n * Returns the currently excluded values as an array of strings.\n * @returns {string[]} The currently excluded values.\n */\n public getExcludedValues(): string[] {\n this.ensureDom();\n return _.map(this.values.getExcluded(), (value: FacetValue) => value.value);\n }\n\n /**\n * Resets the facet by un-selecting all values, un-excluding all values, and redrawing the facet.\n */\n public reset(): void {\n this.ensureDom();\n this.values.reset();\n this.rebuildValueElements();\n this.updateAppearanceDependingOnState();\n this.updateQueryStateModel();\n }\n\n /**\n * Switches the facet to `AND` mode.\n *\n * See the [`useAnd`]{@link Facet.options.useAnd}, and\n * [`enableTogglingOperator`]{@link Facet.options.enableTogglingOperator} options.\n */\n public switchToAnd(): void {\n this.ensureDom();\n this.logger.info('Switching to AND');\n this.facetHeader.switchToAnd();\n }\n\n /**\n * Switches the facet to `OR` mode.\n *\n * See the [`useAnd`]{@link Facet.options.useAnd}, and\n * [`enableTogglingOperator`]{@link Facet.options.enableTogglingOperator} options.\n */\n public switchToOr(): void {\n this.ensureDom();\n this.logger.info('Switching to OR');\n this.facetHeader.switchToOr();\n }\n\n /**\n * Returns the endpoint for the facet.\n * @returns {ISearchEndpoint} The endpoint for the Ffcet.\n */\n public getEndpoint(): ISearchEndpoint {\n return this.queryController.getEndpoint();\n }\n\n /**\n * Changes the sort parameter for the facet.\n *\n * See {@link Facet.options.availableSorts} for the list of possible values.\n *\n * Also triggers a new query.\n *\n * @param criteria The new sort parameter for the facet.\n */\n public updateSort(criteria: string): void {\n this.ensureDom();\n if (this.options.sortCriteria != criteria) {\n this.options.sortCriteria = criteria;\n this.usageAnalytics.logCustomEvent<IAnalyticsFacetSortMeta>(\n analyticsActionCauseList.facetUpdateSort,\n {\n criteria,\n facetId: this.options.id,\n facetField: this.options.field.toString(),\n facetTitle: this.options.title\n },\n this.element\n );\n this.triggerNewQuery();\n }\n }\n\n public unfadeInactiveValuesInMainList(): void {\n $$(this.element).removeClass('coveo-facet-fade');\n }\n\n public fadeInactiveValuesInMainList(delay: number): void {\n $$(this.element).addClass('coveo-facet-fade');\n }\n\n /**\n * Shows a waiting animation in the facet header (a spinner).\n */\n public showWaitingAnimation() {\n this.ensureDom();\n if (!this.showingWaitAnimation) {\n $$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'visible';\n this.showingWaitAnimation = true;\n }\n }\n\n /**\n * Hides the waiting animation in the facet header.\n */\n public hideWaitingAnimation(): void {\n this.ensureDom();\n if (this.showingWaitAnimation) {\n $$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'hidden';\n this.showingWaitAnimation = false;\n }\n }\n\n public processFacetSearchAllResultsSelected(facetValues: FacetValue[]): void {\n const valuesForAnalytics = [];\n _.each(facetValues, facetValue => {\n this.ensureFacetValueIsInList(facetValue);\n valuesForAnalytics.push(facetValue.value);\n });\n // Calculate the correct number of values from the current selected/excluded values (those will stay no matter what next rendering)\n // add the new one that will be selected (and are not already selected in the facet)\n // The minimum number of values is the number of values set in the option\n const valuesThatStays = this.values.getSelected().concat(this.values.getExcluded());\n this.numberOfValues = valuesThatStays.length + _.difference(valuesThatStays, facetValues).length;\n this.numberOfValues = Math.max(this.numberOfValues, this.options.numberOfValues);\n // Then, we set current page as the last \"full\" page (math.floor)\n // This is so there is no additional values displayed requested to fill the current page\n // Also, when the user hit more, it will request the current page and fill it with more values\n this.currentPage = Math.floor((this.numberOfValues - this.options.numberOfValues) / this.options.pageSize);\n\n this.updateQueryStateModel();\n this.triggerNewQuery(() =>\n this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetSelectAll, {\n facetId: this.options.id,\n facetField: this.options.field.toString(),\n facetTitle: this.options.title\n })\n );\n }\n\n public pinFacetPosition() {\n if (this.options.preservePosition) {\n this.pinnedViewportPosition = this.element.getBoundingClientRect().top;\n }\n }\n\n /**\n * Returns the configured caption for the given [`FacetValue`]{@link FacetValue}.\n *\n * @param facetValue The `FacetValue` whose caption the method should return.\n */\n public getValueCaption(facetValue: IIndexFieldValue | FacetValue): string {\n Assert.exists(facetValue);\n const lookupValue = facetValue.lookupValue || facetValue.value;\n let ret = lookupValue;\n ret = FacetUtils.tryToGetTranslatedCaption(<string>this.options.field, lookupValue);\n\n if (Utils.exists(this.options.valueCaption)) {\n if (typeof this.options.valueCaption == 'object') {\n ret = this.options.valueCaption[lookupValue] || ret;\n }\n if (typeof this.options.valueCaption == 'function') {\n this.values.get(lookupValue);\n ret = this.options.valueCaption.call(this, this.facetValuesList.get(lookupValue).facetValue);\n }\n }\n return ret;\n }\n\n /**\n * Shows the next page of results in the facet.\n *\n * See the [`enableMoreLess`]{@link Facet.options.enableMoreLess}, and [`pageSize`]{@link Facet.options.pageSize}\n * options.\n *\n * Triggers a query if needed, or displays the already available values.\n */\n public showMore() {\n this.currentPage++;\n this.updateNumberOfValues();\n if (this.nbAvailableValues >= this.numberOfValues || !this.canFetchMore) {\n this.rebuildValueElements();\n } else {\n this.triggerMoreQuery();\n }\n }\n\n /**\n * Shows less elements in the Facet (up to the original number of values).\n *\n * See the [`enableMoreLess`]{@link Facet.options.enableMoreLess}, and\n * [`numberOfValues`]{@link Facet.options.numberOfValues} options.\n */\n public showLess() {\n $$(this.lessElement).removeClass('coveo-active');\n this.currentPage = 0;\n this.updateNumberOfValues();\n $$(this.moreElement).addClass('coveo-active');\n this.values.sortValuesDependingOnStatus(this.numberOfValues);\n this.rebuildValueElements();\n }\n\n /**\n * Collapses the facet.\n */\n public collapse() {\n this.ensureDom();\n if (this.facetHeader) {\n this.facetHeader.collapseFacet();\n }\n }\n\n /**\n * Expands the facet.\n */\n public expand() {\n this.ensureDom();\n if (this.facetHeader) {\n this.facetHeader.expandFacet();\n }\n }\n\n public triggerNewQuery(beforeExecuteQuery?: () => void) {\n if (!beforeExecuteQuery) {\n this.queryController.executeQuery({ ignoreWarningSearchEvent: true });\n } else {\n this.queryController.executeQuery({ beforeExecuteQuery });\n }\n this.showWaitingAnimation();\n }\n\n protected handleDeferredQuerySuccess(data: IQuerySuccessEventArgs) {\n Assert.exists(data);\n this.unfadeInactiveValuesInMainList();\n this.hideWaitingAnimation();\n this.dependentFacetManager.updateVisibilityBasedOnDependsOn();\n const groupByResult = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n this.facetQueryController.lastGroupByResult = groupByResult;\n // Two corner case to handle regarding the \"sticky\" aspect of facets :\n // 1) The group by is empty (so there is nothing to \"sticky\")\n // 2) There is only one value displayed currently, so there is nothing to \"sticky\" either\n if (!groupByResult) {\n this.keepDisplayedValuesNextTime = false;\n }\n if (this.values.getAll().length == 1) {\n this.keepDisplayedValuesNextTime = false;\n }\n this.processNewGroupByResults(groupByResult);\n }\n\n protected handleQueryError() {\n this.updateValues(new FacetValues());\n this.updateAppearanceDependingOnState();\n this.hideWaitingAnimation();\n }\n\n protected handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n Assert.exists(args);\n\n if (this.values.hasSelectedOrExcludedValues()) {\n const element = new BreadcrumbValueList(\n this,\n this.values.getSelected().concat(this.values.getExcluded()),\n BreadcrumbValueElement\n ).build();\n args.breadcrumbs.push({ element: element });\n }\n }\n\n protected handlePopulateSearchAlerts(args: ISearchAlertsPopulateMessageEventArgs) {\n if (this.values.hasSelectedOrExcludedValues()) {\n const excludedValues = this.values.getExcluded();\n const selectedValues = this.values.getSelected();\n\n if (!_.isEmpty(excludedValues)) {\n args.text.push({\n value: new BreadcrumbValueList(this, excludedValues, BreadcrumbValueElement).buildAsString(),\n lineThrough: true\n });\n }\n\n if (!_.isEmpty(selectedValues)) {\n args.text.push({\n value: new BreadcrumbValueList(this, selectedValues, BreadcrumbValueElement).buildAsString(),\n lineThrough: false\n });\n }\n }\n }\n\n protected initFacetQueryController() {\n this.facetQueryController = new FacetQueryController(this);\n }\n\n protected initFacetValuesList() {\n this.facetValuesList = new FacetValuesList(this, FacetValueElement);\n this.element.appendChild(this.facetValuesList.build());\n }\n\n protected initFacetSearch() {\n this.facetSearch = new FacetSearch(this, FacetSearchValuesList, this.root);\n this.element.appendChild(this.facetSearch.build());\n }\n\n protected facetValueHasChanged() {\n this.updateQueryStateModel();\n this.rebuildValueElements();\n Defer.defer(() => {\n this.updateAppearanceDependingOnState();\n });\n }\n\n protected updateAppearanceDependingOnState() {\n $$(this.element).toggleClass('coveo-active', this.values.hasSelectedOrExcludedValues());\n $$(this.element).toggleClass('coveo-facet-empty', !this.isAnyValueCurrentlyDisplayed());\n $$(this.facetHeader.eraserElement).toggleClass('coveo-facet-header-eraser-visible', this.values.hasSelectedOrExcludedValues());\n }\n\n protected initQueryEvents() {\n this.bind.onRootElement(QueryEvents.duringQuery, () => this.handleDuringQuery());\n this.bind.onRootElement(QueryEvents.buildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (args: IQuerySuccessEventArgs) => this.handleDeferredQuerySuccess(args));\n this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n }\n\n protected initQueryStateEvents() {\n this.includedAttributeId = QueryStateModel.getFacetId(this.options.id);\n this.excludedAttributeId = QueryStateModel.getFacetId(this.options.id, false);\n this.operatorAttributeId = QueryStateModel.getFacetOperator(this.options.id);\n this.lookupValueAttributeId = QueryStateModel.getFacetLookupValue(this.options.id);\n\n this.queryStateModel.registerNewAttribute(this.includedAttributeId, []);\n this.queryStateModel.registerNewAttribute(this.excludedAttributeId, []);\n this.queryStateModel.registerNewAttribute(this.operatorAttributeId, '');\n this.queryStateModel.registerNewAttribute(this.lookupValueAttributeId, {});\n\n this.bind.onQueryState(MODEL_EVENTS.CHANGE, undefined, (args: IAttributesChangedEventArg) => this.handleQueryStateChanged(args));\n this.dependentFacetManager.listenToParentIfDependentFacet();\n }\n\n protected initComponentStateEvents() {\n this.componentStateId = QueryStateModel.getFacetId(this.options.id);\n this.componentStateModel.registerComponent(this.componentStateId, this);\n }\n\n protected initOmniboxEvents() {\n if (this.options.includeInOmnibox) {\n this.bind.onRootElement(OmniboxEvents.populateOmnibox, (args: IPopulateOmniboxEventArgs) => this.handlePopulateOmnibox(args));\n }\n }\n\n protected initBreadCrumbEvents() {\n if (this.options.includeInBreadcrumb) {\n this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n this.handlePopulateBreadcrumb(args)\n );\n this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, (args: IClearBreadcrumbEventArgs) => this.handleClearBreadcrumb());\n }\n }\n\n protected initSearchAlertEvents() {\n this.bind.onRootElement(SearchAlertsEvents.searchAlertsPopulateMessage, (args: ISearchAlertsPopulateMessageEventArgs) =>\n this.handlePopulateSearchAlerts(args)\n );\n }\n\n protected handleOmniboxWithStaticValue(eventArg: IPopulateOmniboxEventArgs) {\n const regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n const match = _.first(\n _.filter(this.getDisplayedValues(), (displayedValue: string) => {\n const value = this.getValueCaption(this.facetValuesList.get(displayedValue).facetValue);\n return regex.test(value);\n }),\n this.options.numberOfValuesInOmnibox\n );\n const facetValues = _.map(match, (gotAMatch: string) => {\n return this.facetValuesList.get(gotAMatch).facetValue;\n });\n const element = new OmniboxValuesList(this, facetValues, eventArg, OmniboxValueElement).build();\n eventArg.rows.push({ element: element, zIndex: this.omniboxZIndex });\n }\n\n protected processNewGroupByResults(groupByResult: IGroupByResult) {\n this.logger.trace('Displaying group by results', groupByResult);\n if (groupByResult != undefined && groupByResult.values != undefined) {\n this.nbAvailableValues = groupByResult.values.length;\n }\n const newFacetValues = new FacetValues(groupByResult);\n this.updateValues(newFacetValues);\n this.canFetchMore = this.numberOfValues < this.nbAvailableValues;\n\n if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd && this.options.isMultiValueField) {\n this.triggerUpdateDeltaQuery(\n _.filter(this.values.getAll(), (facetValue: FacetValue) => {\n return !facetValue.selected && !facetValue.excluded;\n })\n );\n } else if (this.values.getSelected().length > 0 && !this.options.useAnd) {\n this.values.updateDeltaWithFilteredFacetValues(new FacetValues(), this.options.isMultiValueField);\n }\n if (!this.values.hasSelectedOrExcludedValues() || this.options.useAnd || !this.options.isMultiValueField) {\n this.rebuildValueElements();\n this.updateAppearanceDependingOnState();\n this.ensurePinnedFacetHasntMoved();\n }\n this.keepDisplayedValuesNextTime = false;\n }\n\n protected updateQueryStateModel() {\n this.listenToQueryStateChange = false;\n this.updateExcludedQueryStateModel();\n this.updateIncludedQueryStateModel();\n this.facetHeader.updateOperatorQueryStateModel();\n this.updateLookupValueQueryStateModel();\n this.listenToQueryStateChange = true;\n }\n\n protected rebuildValueElements() {\n this.updateNumberOfValues();\n this.facetValuesList.rebuild(this.numberOfValues);\n if (this.shouldRenderMoreLess()) {\n this.updateMoreLess();\n if (this.shouldRenderFacetSearch()) {\n this.updateSearchElement(this.nbAvailableValues > this.numberOfValues);\n }\n } else if (this.shouldRenderFacetSearch()) {\n this.updateSearchElement();\n }\n }\n\n protected updateSearchElement(moreValuesAvailable = true) {\n if (!moreValuesAvailable) {\n return;\n }\n\n const renderer = new ValueElementRenderer(this, FacetValue.create(l('Search')));\n this.searchContainer = renderer.build().withNo([renderer.excludeIcon, renderer.icon]);\n $$(this.searchContainer.listItem).addClass('coveo-facet-search-button');\n\n new AccessibleButton()\n .withElement(this.searchContainer.accessibleElement)\n .withLabel(l('Search'))\n .withEnterKeyboardAction(e => this.toggleSearchMenu(e))\n .build();\n\n // Mobile do not like label. Use click event\n if (DeviceUtils.isMobileDevice()) {\n $$(this.searchContainer.label).on('click', e => this.toggleSearchMenu(e));\n }\n\n $$(this.searchContainer.checkbox).on('change', () => {\n $$(this.element).addClass('coveo-facet-searching');\n this.facetSearch.focus();\n });\n this.facetValuesList.valueContainer.appendChild(this.searchContainer.listItem);\n }\n\n protected updateMoreLess(\n lessElementIsShown = this.getMinimumNumberOfValuesToDisplay() < this.numberOfValues,\n moreValuesAvailable = this.nbAvailableValues > this.numberOfValues\n ) {\n if (lessElementIsShown) {\n $$(this.lessElement).addClass('coveo-active');\n } else {\n $$(this.lessElement).removeClass('coveo-active');\n }\n\n if (moreValuesAvailable) {\n $$(this.moreElement).addClass('coveo-active');\n } else {\n $$(this.moreElement).removeClass('coveo-active');\n }\n\n if (lessElementIsShown || moreValuesAvailable) {\n $$(this.footerElement).removeClass('coveo-facet-empty');\n } else {\n $$(this.footerElement).addClass('coveo-facet-empty');\n }\n }\n\n protected handleClickMore(): void {\n this.showMore();\n }\n\n protected handleClickLess() {\n this.showLess();\n }\n\n private toggleSearchMenu(e: Event) {\n const searchButton = this.searchContainer;\n\n if (searchButton.checkbox.getAttribute('checked')) {\n searchButton.checkbox.removeAttribute('checked');\n } else {\n searchButton.checkbox.setAttribute('checked', 'checked');\n }\n\n $$(searchButton.checkbox).trigger('change');\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n private checkForComputedFieldAndSort() {\n if (this.options.sortCriteria.toLowerCase().indexOf('computedfield') != -1 && Utils.isNullOrUndefined(this.options.computedField)) {\n this.logger.warn(\n 'Sort criteria is specified as ComputedField, but the facet uses no computed field. Facet will always be empty !',\n this\n );\n }\n }\n\n private checkForValueCaptionType() {\n if (this.options.valueCaption && typeof this.options.valueCaption == 'function') {\n this.options.enableFacetSearch = false;\n this.options.includeInOmnibox = false;\n this.logger.warn(\n 'Using a function as valueCaption is now deprecated. Use a json key value pair instead. Facet search and omnibox has been disabled for this facet',\n this\n );\n }\n }\n\n private checkForCustomSort() {\n if (this.options.customSort != undefined && !_.contains(this.options.availableSorts, 'custom')) {\n this.options.availableSorts.unshift('custom');\n }\n if (this.options.availableSorts[0] == 'custom') {\n this.options.sortCriteria = 'nosort';\n }\n }\n\n private initDependentFacetManager() {\n this.dependentFacetManager = new DependentFacetManager(this);\n }\n\n private initBottomAndTopSpacer() {\n const bottomSpace = $$(this.options.paddingContainer).find('.coveo-bottomSpace');\n const topSpace = $$(this.options.paddingContainer).find('.coveo-topSpace');\n if (this.options.preservePosition) {\n $$(this.options.paddingContainer).on('mouseleave', () => this.unpinFacetPosition());\n\n this.pinnedTopSpace = topSpace;\n this.pinnedBottomSpace = bottomSpace;\n\n if (!this.pinnedTopSpace) {\n this.pinnedTopSpace = document.createElement('div');\n $$(this.pinnedTopSpace).addClass('coveo-topSpace');\n $$(this.pinnedTopSpace).insertBefore(<HTMLElement>this.options.paddingContainer.firstChild);\n }\n if (!this.pinnedBottomSpace) {\n this.pinnedBottomSpace = document.createElement('div');\n $$(this.pinnedBottomSpace).addClass('coveo-bottomSpace');\n this.options.paddingContainer.appendChild(this.pinnedBottomSpace);\n }\n }\n }\n\n private updateIncludedQueryStateModel() {\n const selectedValues: IQueryStateIncludedAttribute = { included: this.getSelectedValues(), title: this.includedAttributeId };\n this.queryStateModel.set(this.includedAttributeId, selectedValues.included);\n }\n\n private updateExcludedQueryStateModel() {\n const excludedValues: IQueryStateExcludedAttribute = { title: this.excludedAttributeId, excluded: this.getExcludedValues() };\n\n this.queryStateModel.set(this.excludedAttributeId, excludedValues.excluded);\n }\n\n private updateLookupValueQueryStateModel() {\n if (this.options.lookupField) {\n const valueToSet = {};\n _.each(this.values.getSelected().concat(this.values.getExcluded()), value => {\n valueToSet[value.value] = value.lookupValue;\n });\n this.queryStateModel.set(this.lookupValueAttributeId, valueToSet);\n }\n }\n\n private handleQueryStateChangedOperator(operator: string) {\n if (operator == 'and') {\n this.switchToAnd();\n } else if (operator == 'or') {\n this.switchToOr();\n }\n }\n\n private handleQueryStateChangedIncluded(includedChanged) {\n const toUnSelect = _.difference(this.getSelectedValues(), includedChanged);\n if (Utils.isNonEmptyArray(toUnSelect)) {\n this.deselectMultipleValues(toUnSelect);\n }\n if (!Utils.arrayEqual(this.getSelectedValues(), includedChanged, false)) {\n this.selectMultipleValues(includedChanged);\n }\n }\n\n private handleQueryStateChangedExcluded(excludedChanged) {\n const toUnExclude = _.difference(this.getExcludedValues(), excludedChanged);\n if (Utils.isNonEmptyArray(toUnExclude)) {\n this.unexcludeMultipleValues(toUnExclude);\n }\n if (!Utils.arrayEqual(this.getExcludedValues(), excludedChanged, false)) {\n this.excludeMultipleValues(excludedChanged);\n }\n }\n\n private handleLookupvalueChanged(lookupFieldChanged: { [value: string]: string }) {\n _.each(lookupFieldChanged, (lookupvalue, value) => {\n this.facetValuesList.get(decodeURIComponent(value)).facetValue.lookupValue = decodeURIComponent(lookupvalue);\n });\n }\n\n private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n Assert.exists(data);\n this.ensureDom();\n\n const trimValuesFromModel = (values?: string[]) => {\n if (values) {\n values = _.map(values, value => value.trim());\n }\n return values;\n };\n\n const queryStateAttributes: IStringMap<any> = data.attributes;\n let includedChanged: string[] = trimValuesFromModel(queryStateAttributes[this.includedAttributeId]);\n let excludedChanged: string[] = trimValuesFromModel(queryStateAttributes[this.excludedAttributeId]);\n const operator: string = queryStateAttributes[this.operatorAttributeId];\n const lookupValueChanged: IStringMap<string> = queryStateAttributes[this.lookupValueAttributeId];\n\n if (this.listenToQueryStateChange) {\n if (!Utils.isNullOrEmptyString(operator)) {\n this.handleQueryStateChangedOperator(operator);\n }\n if (!Utils.isNullOrUndefined(includedChanged)) {\n this.handleQueryStateChangedIncluded(includedChanged);\n }\n if (!Utils.isNullOrUndefined(excludedChanged)) {\n this.handleQueryStateChangedExcluded(excludedChanged);\n }\n if (!Utils.isNullOrUndefined(lookupValueChanged)) {\n this.handleLookupvalueChanged(lookupValueChanged);\n }\n }\n }\n\n private handlePopulateOmnibox(data: IPopulateOmniboxEventArgs) {\n Assert.exists(data);\n Assert.exists(data.completeQueryExpression);\n\n // The omnibox calls can come in before a first query was executed (atypical, but\n // if no query is auto-triggered on initialization). To ensure that we've got the\n // proper filters, we ensure that at least a dumbshow query builder run occured\n // before proceeding.\n this.queryController.ensureCreatedQueryBuilder();\n\n if (this.canFetchMore) {\n this.handleOmniboxWithSearchInFacet(data);\n } else {\n this.handleOmniboxWithStaticValue(data);\n }\n }\n\n private handleOmniboxWithSearchInFacet(eventArg: IPopulateOmniboxEventArgs) {\n const regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n\n const promise = new Promise<IOmniboxDataRow>((resolve, reject) => {\n const searchParameters = new FacetSearchParameters(this);\n searchParameters.setValueToSearch(eventArg.completeQueryExpression.word);\n searchParameters.nbResults = this.options.numberOfValuesInOmnibox;\n this.facetQueryController\n .search(searchParameters)\n .then(fieldValues => {\n const facetValues = _.map(\n _.filter(fieldValues, (fieldValue: IIndexFieldValue) => {\n return regex.test(fieldValue.lookupValue);\n }),\n fieldValue => {\n return this.values.get(fieldValue.lookupValue) || FacetValue.create(fieldValue);\n }\n );\n const element = new OmniboxValuesList(this, facetValues, eventArg, OmniboxValueElement).build();\n resolve({ element: element, zIndex: this.omniboxZIndex });\n })\n .catch(() => {\n resolve({ element: undefined });\n });\n });\n eventArg.rows.push({ deferred: promise });\n }\n\n private handleDuringQuery() {\n this.ensureDom();\n if (!this.keepDisplayedValuesNextTime) {\n this.fadeInactiveValuesInMainList(this.options.facetSearchDelay);\n }\n }\n\n private handleBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n Assert.exists(data);\n Assert.exists(data.queryBuilder);\n\n this.facetQueryController.prepareForNewQuery();\n if (this.values.hasSelectedOrExcludedValues()) {\n const expression = this.facetQueryController.computeOurFilterExpression();\n this.logger.trace('Putting filter in query', expression);\n data.queryBuilder.advancedExpression.add(expression);\n }\n }\n\n private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n Assert.exists(data);\n Assert.exists(data.queryBuilder);\n const queryBuilder = data.queryBuilder;\n this.facetQueryController.putGroupByIntoQueryBuilder(queryBuilder);\n }\n\n private handleClearBreadcrumb() {\n this.reset();\n }\n\n private updateValues(facetValues: FacetValues) {\n Assert.exists(facetValues);\n if (this.keepDisplayedValuesNextTime) {\n this.values.updateCountsFromNewValues(facetValues);\n } else {\n facetValues.importActiveValuesFromOtherList(this.values);\n facetValues.sortValuesDependingOnStatus(this.numberOfValues);\n this.values = facetValues;\n }\n\n this.updateNumberOfValues();\n }\n\n private ensureFacetValueIsInList(facetValue: FacetValue) {\n Assert.exists(facetValue);\n if (!this.values.contains(facetValue.value)) {\n this.values.add(facetValue);\n }\n }\n\n private isAnyValueCurrentlyDisplayed(): boolean {\n return !this.values.isEmpty();\n }\n\n private buildFacetContent() {\n this.headerElement = this.buildHeader();\n this.element.appendChild(this.headerElement);\n this.initFacetValuesList();\n if (this.shouldRenderFacetSearch()) {\n this.initFacetSearch();\n }\n if (this.shouldRenderMoreLess()) {\n this.moreElement = this.buildMore();\n this.lessElement = this.buildLess();\n }\n this.footerElement = this.buildFooter();\n this.element.appendChild(this.footerElement);\n if (this.lessElement && this.moreElement) {\n this.footerElement.appendChild(this.lessElement);\n this.footerElement.appendChild(this.moreElement);\n }\n }\n\n private buildHeader() {\n let icon = this.options.headerIcon;\n if (this.options.headerIcon == this.options.field) {\n icon = undefined;\n }\n this.facetHeader = new FacetHeader({\n facetElement: this.element,\n title: this.options.title,\n icon: icon,\n field: <string>this.options.field,\n enableClearElement: true,\n enableCollapseElement: this.options.enableCollapse,\n facet: this,\n settingsKlass: this.options.enableSettings ? FacetSettings : undefined,\n sortKlass: FacetSort,\n availableSorts: this.options.availableSorts\n });\n const built = this.facetHeader.build();\n this.facetSettings = this.facetHeader.settings;\n this.facetSort = this.facetHeader.sort;\n return built;\n }\n\n private unpinFacetPosition() {\n if (this.shouldFacetUnpin() && this.options.preservePosition) {\n $$(this.pinnedTopSpace).addClass('coveo-with-animation');\n $$(this.pinnedBottomSpace).addClass('coveo-with-animation');\n this.pinnedTopSpace.style.height = '0px';\n this.pinnedBottomSpace.style.height = '0px';\n }\n this.unpinnedViewportPosition = undefined;\n this.pinnedViewportPosition = undefined;\n }\n\n private isFacetPinned(): boolean {\n return Utils.exists(this.pinnedViewportPosition);\n }\n\n private shouldFacetUnpin(): boolean {\n return Utils.exists(this.unpinnedViewportPosition);\n }\n\n private ensurePinnedFacetHasntMoved(): void {\n if (this.isFacetPinned()) {\n Assert.exists(this.pinnedViewportPosition);\n $$(this.pinnedTopSpace).removeClass('coveo-with-animation');\n $$(this.pinnedBottomSpace).removeClass('coveo-with-animation');\n this.pinnedTopSpace.style.height = '0px';\n this.pinnedBottomSpace.style.height = '0px';\n\n // Under firefox scrolling the body doesn't work, but window does\n // on all browser, so we substitute those here when needed.\n const elementToScroll: any = this.options.scrollContainer == document.body ? window : this.options.scrollContainer;\n let currentViewportPosition = this.element.getBoundingClientRect().top;\n let offset = currentViewportPosition - this.pinnedViewportPosition;\n const scrollToOffset = () => {\n if (elementToScroll instanceof Window) {\n window.scrollTo(0, new Win(elementToScroll).scrollY() + offset);\n } else {\n (<HTMLElement>elementToScroll).scrollTop = elementToScroll.scrollTop + offset;\n }\n };\n // First try to adjust position by scrolling the page\n scrollToOffset();\n currentViewportPosition = this.element.getBoundingClientRect().top;\n offset = currentViewportPosition - this.pinnedViewportPosition;\n // If scrolling has worked (offset == 0), we're good to go, nothing to do anymore.\n\n if (offset < 0) {\n // This means the facet element is scrolled up in the viewport,\n // scroll it down by adding space in the top container\n this.pinnedTopSpace.style.height = offset * -1 + 'px';\n }\n this.unpinnedViewportPosition = this.pinnedViewportPosition;\n this.pinnedViewportPosition = null;\n }\n }\n\n private buildFooter(): HTMLElement {\n return $$('div', { className: 'coveo-facet-footer' }).el;\n }\n\n private buildMore(): HTMLElement {\n const svgContainer = $$('span', { className: 'coveo-facet-more-icon' }, SVGIcons.icons.arrowDown).el;\n SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-more-icon-svg');\n const more = $$('div', { className: 'coveo-facet-more', tabindex: 0 }, svgContainer).el;\n\n new AccessibleButton()\n .withElement(more)\n .withLabel(l('ExpandFacet', this.options.title))\n .withSelectAction(() => this.handleClickMore())\n .build();\n\n return more;\n }\n\n private buildLess(): HTMLElement {\n const svgContainer = $$('span', { className: 'coveo-facet-less-icon' }, SVGIcons.icons.arrowUp).el;\n SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-less-icon-svg');\n const less = $$('div', { className: 'coveo-facet-less', tabindex: 0 }, svgContainer).el;\n\n new AccessibleButton()\n .withElement(less)\n .withLabel(l('CollapseFacet', this.options.title))\n .withSelectAction(() => this.handleClickLess())\n .build();\n\n return less;\n }\n\n private triggerMoreQuery() {\n this.logger.info('Triggering new facet more query');\n this.showWaitingAnimation();\n // fetch 1 more value than we need, so we can see if there is more value to fetch still or if we have reached\n // the end of the availables values\n this.facetQueryController\n .fetchMore(this.numberOfValues + 1)\n .then((queryResults: IQueryResults) => {\n const facetValues = new FacetValues(queryResults.groupByResults[0]);\n\n facetValues.importActiveValuesFromOtherList(this.values);\n facetValues.sortValuesDependingOnStatus(this.numberOfValues);\n this.values = facetValues;\n\n this.nbAvailableValues = this.values.size();\n\n this.updateNumberOfValues();\n this.canFetchMore = this.numberOfValues < this.nbAvailableValues;\n\n if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd && this.options.isMultiValueField) {\n this.triggerUpdateDeltaQuery(\n _.filter(this.values.getAll(), (facetValue: FacetValue) => !facetValue.selected && !facetValue.excluded)\n );\n } else if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd) {\n this.values.updateDeltaWithFilteredFacetValues(new FacetValues(), this.options.isMultiValueField);\n this.hideWaitingAnimation();\n } else {\n this.hideWaitingAnimation();\n }\n this.rebuildValueElements();\n })\n .catch(() => this.hideWaitingAnimation());\n }\n\n protected triggerUpdateDeltaQuery(facetValues: FacetValue[]): void {\n this.showWaitingAnimation();\n this.facetQueryController.searchInFacetToUpdateDelta(facetValues).then((queryResults?) => {\n const values: FacetValues = new FacetValues();\n _.each(queryResults.groupByResults, (groupByResult: IGroupByResult) => {\n _.each(groupByResult.values, (groupByValue: IGroupByValue) => {\n if (!values.contains(groupByValue.value)) {\n values.add(FacetValue.createFromGroupByValue(groupByValue));\n }\n });\n });\n this.values.updateDeltaWithFilteredFacetValues(values, this.options.isMultiValueField);\n this.cleanupDeltaValuesForMultiValueField();\n this.rebuildValueElements();\n this.hideWaitingAnimation();\n });\n }\n\n protected updateNumberOfValues() {\n if (this.currentPage <= 0) {\n // We're on the first page, let's reset the number of values to a minimum.\n this.currentPage = 0;\n this.numberOfValues = 0;\n } else {\n // Calculate the number of value with the current page.\n this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n }\n\n // Make sure we have at least the absolute minimum of value to display.\n this.numberOfValues = Math.max(this.numberOfValues, this.getMinimumNumberOfValuesToDisplay());\n }\n\n private getMinimumNumberOfValuesToDisplay() {\n // The min value is the number of used values.\n let minValue = this.values.getExcluded().length + this.values.getSelected().length;\n\n // When using a custom sort, we have to show all values between the selected ones.\n // Thus, we must find the last selected value after a reorder and use that value as the number of value.\n if (this.options.customSort != null && this.facetSort != null && this.options.customSort.length > 0) {\n let lastSelectedValueIndex = -1;\n new FacetValuesOrder(this, this.facetSort).reorderValues(this.values.getAll()).forEach((facetValue, index) => {\n if (facetValue.selected) {\n lastSelectedValueIndex = index;\n }\n });\n minValue = lastSelectedValueIndex + 1;\n }\n return Math.max(minValue, this.options.numberOfValues);\n }\n\n private cleanupDeltaValuesForMultiValueField() {\n // On a multi value field, it's possible to end up in a scenario where many of the current values are empty\n // Crop those out, and adjust the nbAvailable values for the \"search\" and \"show more\";\n if (this.options.isMultiValueField) {\n _.each(this.values.getAll(), v => {\n if (v.occurrences == 0 && !v.selected && !v.excluded) {\n this.values.remove(v.value);\n }\n });\n this.nbAvailableValues = this.values.getAll().length;\n }\n }\n\n private shouldRenderFacetSearch() {\n return this.options.enableFacetSearch;\n }\n\n private shouldRenderMoreLess() {\n return this.options.enableMoreLess;\n }\n\n public debugInfo() {\n const info: any = {};\n info[this['constructor']['ID']] = {\n component: this,\n groupByRequest: this.facetQueryController.lastGroupByRequest,\n groupByResult: this.facetQueryController.lastGroupByResult\n };\n return info;\n }\n}\n\nInitialization.registerAutoCreateComponent(Facet);\n\nFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/Facet.ts","import { Component } from '../Base/Component';\nimport { l } from '../../strings/Strings';\nimport { IFieldOption, ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryValueRoot } from './CategoryValueRoot';\nimport { CategoryFacetQueryController } from '../../controllers/CategoryFacetQueryController';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport 'styling/_CategoryFacet';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { Utils } from '../../utils/Utils';\nimport { CategoryValue, CategoryValueParent } from './CategoryValue';\nimport { pluck, reduce, find, first, last, contains, isArray, keys } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IBuildingQueryEventArgs, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { CategoryFacetSearch } from './CategoryFacetSearch';\nimport { ICategoryFacetResult } from '../../rest/CategoryFacetResult';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { CategoryFacetBreadcrumb } from './CategoryFacetBreadcrumb';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport { IAnalyticsCategoryFacetMeta, analyticsActionCauseList, IAnalyticsActionCause } from '../Analytics/AnalyticsActionListMeta';\nimport { CategoryFacetDebug } from './CategoryFacetDebug';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { IAutoLayoutAdjustableInsideFacetColumn } from '../SearchInterface/FacetColumnAutoLayoutAdjustment';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { CategoryFacetHeader } from './CategoryFacetHeader';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { IStringMap } from '../../rest/GenericParam';\n\nexport interface ICategoryFacetOptions extends IResponsiveComponentOptions {\n field: IFieldOption;\n title?: string;\n numberOfResultsInFacetSearch?: number;\n id?: string;\n enableFacetSearch?: boolean;\n facetSearchDelay?: number;\n numberOfValues?: number;\n injectionDepth?: number;\n enableMoreLess?: boolean;\n pageSize?: number;\n delimitingCharacter?: string;\n debug?: boolean;\n basePath?: string[];\n maximumDepth?: number;\n valueCaption?: IStringMap<string>;\n}\n\nexport type CategoryValueDescriptor = {\n value: string;\n count: number;\n path: string[];\n};\n\n/**\n * The `CategoryFacet` component is a facet that renders values in a hierarchical fashion. It determines the filter to apply depending on the\n * current selected path of values.\n *\n * The path is a sequence of values that leads to a specific value in the hierarchy.\n * It is an array listing all the parents of a file (e.g., `['c', 'folder1']` for the `c:\\folder1\\text1.txt` file).\n *\n * This facet requires a [`field`]{@link CategoryFacet.options.field} with a special format to work correctly (see [Using the Category Facet Component](https://docs.coveo.com/en/2667)).\n */\nexport class CategoryFacet extends Component implements IAutoLayoutAdjustableInsideFacetColumn {\n static doExport = () => {\n exportGlobally({\n CategoryFacet\n });\n };\n\n static ID = 'CategoryFacet';\n\n /**\n * The options for the component\n * @componentOptions\n */\n static options: ICategoryFacetOptions = {\n /**\n * The index field whose values the facet should use. The field values should have the form:\n * `the; the|path; the|path|to; the|path|to|given; the|path|to|given|item;`\n * where the delimiting character is `|`. This default delimiting character can be changed using the [delimitingCharacter]{@link CategoryFacet.options.delimitingCharacter} option.\n *\n * To help you verify whether your fields are setup correctly, see the {@link CategoryFacet.options.debug} option\n * and the {@link CategoryFacet.debugValue} method.\n *\n * See [Using the Category Facet Component](https://docs.coveo.com/en/2667).\n */\n field: ComponentOptions.buildFieldOption({ required: true }),\n /**\n * The title to display at the top of the facet.\n *\n * Default value is the localized string for `NoTitle`.\n */\n title: ComponentOptions.buildLocalizedStringOption({\n defaultValue: l('NoTitle')\n }),\n /**\n * The maximum number of field values to display by default in the facet before the user\n * clicks the arrow to show more.\n *\n * See also the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess} option.\n */\n numberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'CommonOptions' }),\n /**\n * Whether to display a search box at the bottom of the facet for searching among the available facet\n * [`field`]{@link CategoryFacet.options.field} values.\n *\n * See also the [`facetSearchDelay`]{@link CategoryFacet.options.facetSearchDelay}, and\n * [`numberOfResultsInFacetSearch`]{@link CategoryFacet.options.numberOfResultsInFacetSearch} options.\n *\n *\n * Default value is `true`.\n */\n enableFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n /**\n * A unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n * the facet state in the URL hash.\n *\n * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n * those two facets. This `id` must be unique among the facets.\n *\n * Default value is the [`field`]{@link CategoryFacet.options.field} option value.\n */\n id: ComponentOptions.buildStringOption({\n postProcessing: (value, options: ICategoryFacetOptions) => value || (options.field as string)\n }),\n /**\n * The *injection depth* to use.\n *\n * The injection depth determines how many results to scan in the index to ensure that the category facet lists all potential\n * facet values. Increasing this value enhances the accuracy of the listed values at the cost of performance.\n *\n * Default value is `1000`. Minimum value is `0`.\n * @notSupportedIn salesforcefree\n */\n injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 0 }),\n /**\n * If the [`enableFacetSearch`]{@link CategoryFacet.options.enableFacetSearch} option is `true`, specifies the number of\n * values to display in the facet search results popup.\n *\n * Default value is `15`. Minimum value is `1`.\n */\n numberOfResultsInFacetSearch: ComponentOptions.buildNumberOption({ defaultValue: 15, min: 1 }),\n /**\n * If the [`enableFacetSearch`]{@link CategoryFacet.options.enableFacetSearch} option is `true`, specifies the delay (in\n * milliseconds) before sending a search request to the server when the user starts typing in the category facet search box.\n *\n * Specifying a smaller value makes results appear faster. However, chances of having to cancel many requests\n * sent to the server increase as the user keeps on typing new characters.\n *\n * Default value is `100`. Minimum value is `0`.\n */\n facetSearchDelay: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0 }),\n /**\n * Whether to enable the **More** and **Less** buttons in the Facet.\n *\n * See also the [`pageSize`]{@link CategoryFacet.options.pageSize} option.\n *\n * Default value is `true`.\n */\n enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n /**\n * If the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess} option is `true`, specifies the number of\n * additional results to fetch when clicking the **More** button.\n *\n * Default value is `10`. Minimum value is `1`.\n */\n pageSize: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableMoreLess' }),\n /**\n * The character that specifies the hierarchical dependency.\n *\n * **Example:**\n *\n * If your field has the following values:\n *\n * `@field: c; c>folder2; c>folder2>folder3;`\n *\n * The delimiting character is `>`.\n *\n * Default value is `|`.\n */\n delimitingCharacter: ComponentOptions.buildStringOption({ defaultValue: '|' }),\n /**\n * The path to use as the path prefix for every query.\n *\n * **Example:**\n *\n * You have the following files indexed on a file system:\n * ```\n * c:\\\n * folder1\\\n * text1.txt\n * folder2\\\n * folder3\\\n * text2.txt\n * ```\n * Setting the `basePath` to `c` would display `folder1` and `folder2` in the `CategoryFacet`, but omit `c`.\n *\n * This options accepts an array of values. To specify a \"deeper\" starting path in your tree, you need to use comma-separated values.\n *\n * For example, setting `data-base-path=\"c,folder1\"` on the component markup would display `folder3` in the `CategoryFacet`, but omit `c` and `folder1`.\n *\n */\n basePath: ComponentOptions.buildListOption<string>({ defaultValue: [] }),\n /**\n * The maximum number of levels to traverse in the hierarchy.\n * This option does not count the length of the base path. The depth depends on what is shown in the interface.\n *\n * Default value is `Number.MAX_VALUE`.\n */\n maximumDepth: ComponentOptions.buildNumberOption({ min: 1, defaultValue: Number.MAX_VALUE }),\n /**\n * Whether to activate field format debugging.\n * This options logs messages in the console for any potential encountered issues.\n * This option can have negative effects on performance, and should only be activated when debugging.\n */\n debug: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n /**\n * Specifies a JSON object describing a mapping of facet values to their desired captions. See\n * [Normalizing Facet Value Captions](https://developers.coveo.com/x/jBsvAg).\n *\n * If this option is specified, the facet search box will be unavailable.\n *\n * **Examples:**\n *\n * You can set the option in the ['init']{@link init} call:\n * ```javascript\n * var myValueCaptions = {\n * \"txt\" : \"Text files\",\n * \"html\" : \"Web page\",\n * [ ... ]\n * };\n *\n * Coveo.init(document.querySelector(\"#search\"), {\n * Facet : {\n * valueCaption : myValueCaptions\n * }\n * });\n * ```\n *\n * Or before the `init` call, using the ['options']{@link options} top-level function:\n * ```javascript\n * Coveo.options(document.querySelector(\"#search\"), {\n * Facet : {\n * valueCaption : myValueCaptions\n * }\n * });\n * ```\n *\n * Or directly in the markup:\n * ```html\n * <!-- Ensure that the double quotes are properly handled in data-value-caption. -->\n * <div class='CoveoCategoryFacet' data-field='@myotherfield' data-value-caption='{\"txt\":\"Text files\",\"html\":\"Web page\"}'></div>\n * ```\n *\n * **Note:**\n * > Using value captions will disable alphabetical sorts (see the [availableSorts]{@link Facet.options.availableSorts} option).\n */\n valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>({ defaultValue: {} }),\n ...ResponsiveFacetOptions\n };\n\n public categoryFacetQueryController: CategoryFacetQueryController;\n public listenToQueryStateChange = true;\n public categoryFacetSearch: CategoryFacetSearch;\n public activeCategoryValue: CategoryValue | undefined;\n public positionInQuery: number;\n public static MAXIMUM_NUMBER_OF_VALUES_BEFORE_TRUNCATING = 15;\n public static NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING = 10;\n\n private categoryValueRoot: CategoryValueRoot;\n private categoryFacetTemplates: CategoryFacetTemplates;\n private headerElement: HTMLElement;\n private currentPage: number;\n private moreLessContainer: Dom;\n private moreValuesToFetch: boolean = true;\n private showingWaitAnimation = false;\n private numberOfChildValuesCurrentlyDisplayed = 0;\n private numberOfValues: number;\n\n public static WAIT_ELEMENT_CLASS = 'coveo-category-facet-header-wait-animation';\n\n constructor(public element: HTMLElement, public options: ICategoryFacetOptions, bindings?: IComponentBindings) {\n super(element, 'CategoryFacet', bindings);\n this.options = ComponentOptions.initComponentOptions(element, CategoryFacet, options);\n\n this.categoryFacetQueryController = new CategoryFacetQueryController(this);\n this.categoryFacetTemplates = new CategoryFacetTemplates();\n this.categoryValueRoot = new CategoryValueRoot($$(this.element), this.categoryFacetTemplates, this);\n this.categoryValueRoot.path = this.activePath;\n this.currentPage = 0;\n this.numberOfValues = this.options.numberOfValues;\n\n this.tryToInitFacetSearch();\n\n if (this.options.debug) {\n new CategoryFacetDebug(this);\n }\n\n ResponsiveFacets.init(this.root, this, this.options);\n\n this.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, args => this.handleBuildingQuery(args));\n this.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, args => this.handleQuerySuccess(args));\n this.bind.onRootElement(QueryEvents.duringQuery, () => this.addFading());\n this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => this.removeFading());\n this.bind.onRootElement<IPopulateBreadcrumbEventArgs>(BreadcrumbEvents.populateBreadcrumb, args => this.handlePopulateBreadCrumb(args));\n this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.handleClearBreadcrumb());\n this.buildFacetHeader();\n this.initQueryStateEvents();\n }\n\n public isCurrentlyDisplayed() {\n return this.isPristine() ? this.hasValues : true;\n }\n\n public get activePath() {\n return this.queryStateModel.get(this.queryStateAttribute) || this.options.basePath;\n }\n\n public set activePath(newPath: string[]) {\n this.listenToQueryStateChange = false;\n this.queryStateModel.set(this.queryStateAttribute, newPath);\n this.listenToQueryStateChange = true;\n }\n\n public get queryStateAttribute() {\n return QueryStateModel.getFacetId(this.options.id);\n }\n\n public handleBuildingQuery(args: IBuildingQueryEventArgs) {\n this.positionInQuery = this.categoryFacetQueryController.putCategoryFacetInQueryBuilder(\n args.queryBuilder,\n this.activePath,\n this.numberOfValues + 1\n );\n }\n\n private tryToInitFacetSearch() {\n if (!this.isFacetSearchAvailable) {\n return this.logDisabledFacetSearchWarning();\n }\n\n this.categoryFacetSearch = new CategoryFacetSearch(this);\n }\n\n private logDisabledFacetSearchWarning() {\n if (this.isEnableFacetSearchFalsy) {\n return;\n }\n\n const valueCaptionAttributeName = this.getOptionAttributeName('valueCaption');\n const enableFacetSearchAttributeName = this.getOptionAttributeName('enableFacetSearch');\n const field = this.options.field;\n\n this.logger.warn(`The search box is disabled on the ${field} CategoryFacet. To hide this warning,\n either remove the ${valueCaptionAttributeName} option or set the ${enableFacetSearchAttributeName} option to \"false\".`);\n }\n\n private getOptionAttributeName(optionName: keyof ICategoryFacetOptions) {\n return ComponentOptions.attrNameFromName(optionName);\n }\n\n private get isFacetSearchAvailable() {\n if (this.areValueCaptionsSpecified) {\n return false;\n }\n\n if (this.isEnableFacetSearchFalsy) {\n return false;\n }\n\n return true;\n }\n\n private get areValueCaptionsSpecified() {\n const valueCaptions = this.options.valueCaption;\n return keys(valueCaptions).length !== 0;\n }\n\n private get isEnableFacetSearchFalsy() {\n return !this.options.enableFacetSearch;\n }\n\n private handleNoResults() {\n if (this.isPristine()) {\n this.hide();\n return;\n }\n\n if (this.hasValues) {\n this.show();\n return;\n }\n\n this.activePath = this.options.basePath;\n this.hide();\n }\n\n public handleQuerySuccess(args: IQuerySuccessEventArgs) {\n if (Utils.isNullOrUndefined(args.results.categoryFacets)) {\n this.notImplementedError();\n return;\n }\n\n if (Utils.isNullOrUndefined(args.results.categoryFacets[this.positionInQuery])) {\n this.handleNoResults();\n return;\n }\n\n const numberOfRequestedValues = args.query.categoryFacets[this.positionInQuery].maximumNumberOfValues;\n const categoryFacetResult = args.results.categoryFacets[this.positionInQuery];\n this.moreValuesToFetch = numberOfRequestedValues == categoryFacetResult.values.length;\n this.clear();\n\n if (categoryFacetResult.notImplemented) {\n this.notImplementedError();\n return;\n }\n\n if (categoryFacetResult.values.length == 0 && categoryFacetResult.parentValues.length == 0) {\n this.handleNoResults();\n return;\n }\n\n this.renderValues(categoryFacetResult, numberOfRequestedValues);\n if (this.isFacetSearchAvailable) {\n const facetSearch = this.categoryFacetSearch.build();\n $$(facetSearch).insertAfter(this.categoryValueRoot.listRoot.el);\n }\n\n this.moreLessContainer = $$('div', { className: 'coveo-category-facet-more-less-container' });\n $$(this.element).append(this.moreLessContainer.el);\n\n if (this.options.enableMoreLess) {\n this.renderMoreLess();\n }\n\n if (!this.isPristine()) {\n $$(this.element).addClass('coveo-category-facet-non-empty-path');\n }\n }\n\n /**\n * Changes the active path.\n *\n */\n public changeActivePath(path: string[]) {\n this.activePath = path;\n }\n\n public async executeQuery() {\n this.showWaitingAnimation();\n try {\n await this.queryController.executeQuery();\n } finally {\n this.hideWaitingAnimation();\n }\n }\n\n /**\n * Reloads the facet with the same path.\n */\n public reload() {\n this.changeActivePath(this.activePath);\n this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetReload);\n this.executeQuery();\n }\n\n /**\n * Returns all the visible parent values.\n * @returns simple object with three fields: `value`, `count` and `path`.\n */\n public getVisibleParentValues(): CategoryValueDescriptor[] {\n return this.getVisibleParentCategoryValues().map(categoryValue => categoryValue.getDescriptor());\n }\n\n private getVisibleParentCategoryValues() {\n if (this.categoryValueRoot.children.length == 0 || this.categoryValueRoot.children[0].children.length == 0) {\n return [];\n }\n let currentParentvalue = this.categoryValueRoot.children[0];\n const parentValues = [currentParentvalue];\n while (currentParentvalue.children.length != 0 && !Utils.arrayEqual(currentParentvalue.path, this.activePath)) {\n currentParentvalue = currentParentvalue.children[0];\n parentValues.push(currentParentvalue);\n }\n return parentValues;\n }\n\n /**\n * Shows more values according to {@link CategoryFacet.options.pageSize}.\n *\n * See the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess}, and\n * [`numberOfValues`]{@link CategoryFacet.options.numberOfValues} options.\n */\n public showMore() {\n if (this.moreValuesToFetch) {\n this.currentPage++;\n this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n this.reload();\n }\n }\n\n /**\n * Shows less values, up to the original number of values.\n *\n * See the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess}, and\n * [`numberOfValues`]{@link CategoryFacet.options.numberOfValues} options.\n */\n public showLess() {\n if (this.currentPage > 0) {\n this.currentPage--;\n this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n this.reload();\n }\n }\n\n /**\n * Returns the values at the bottom of the hierarchy. These are the values that are not yet applied to the query.\n * @returns simple object with three fields: `value`, `count` and `path`.\n */\n public getAvailableValues() {\n if (!this.activeCategoryValue) {\n return [];\n }\n return this.activeCategoryValue.children.map(categoryValue => {\n return {\n value: categoryValue.categoryValueDescriptor.value,\n count: categoryValue.categoryValueDescriptor.count,\n path: categoryValue.path\n };\n });\n }\n\n /**\n * Selects a value from the currently available values.\n * If the given value to select is not in the available values, it will throw an error.\n */\n public selectValue(value: string) {\n Assert.check(\n contains(pluck(this.getAvailableValues(), 'value'), value),\n 'Failed while trying to select a value that is not available.'\n );\n const newPath = this.activePath.slice(0);\n newPath.push(value);\n this.changeActivePath(newPath);\n this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect);\n this.executeQuery();\n }\n\n /**\n * Deselects the last value in the hierarchy that is applied to the query. When at the top of the hierarchy, this method does nothing.\n */\n public deselectCurrentValue() {\n if (this.activePath.length == 0) {\n return;\n }\n\n const newPath = this.activePath.slice(0);\n newPath.pop();\n this.changeActivePath(newPath);\n this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect);\n this.executeQuery();\n }\n\n /**\n * Resets the facet to its initial state.\n */\n public reset() {\n this.changeActivePath(this.options.basePath);\n this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetClear);\n this.executeQuery();\n }\n\n public disable() {\n super.disable();\n this.hide();\n }\n\n /**\n * Hides the component.\n */\n public hide() {\n $$(this.element).addClass('coveo-hidden');\n }\n\n /**\n * Shows the component.\n */\n public show() {\n $$(this.element).removeClass('coveo-hidden');\n }\n\n /**\n * Goes through any value that contains the value parameter, and verifies whether there are missing parents.\n * Issues are then logged in the console.\n * If you do not want to specify a value, you can simply enable {@link CategoryFacet.options.debug} and do an empty query.\n */\n public async debugValue(value: string) {\n const queryBuilder = new QueryBuilder();\n this.categoryFacetQueryController.addDebugGroupBy(queryBuilder, value);\n const queryResults = await this.queryController.getEndpoint().search(queryBuilder.build());\n CategoryFacetDebug.analyzeResults(queryResults.groupByResults[0], this.options.delimitingCharacter);\n }\n\n /**\n *\n * @param value The string to find a caption for.\n * Returns the caption for a value or the value itself if no caption is available.\n */\n public getCaption(value: string) {\n const valueCaptions = this.options.valueCaption;\n const caption = valueCaptions[value];\n return caption ? caption : value;\n }\n\n public showWaitingAnimation() {\n this.ensureDom();\n if (!this.showingWaitAnimation) {\n $$(this.headerElement).find('.coveo-category-facet-header-wait-animation').style.visibility = 'visible';\n this.showingWaitAnimation = true;\n }\n }\n\n public hideWaitingAnimation() {\n this.ensureDom();\n if (this.showingWaitAnimation) {\n $$(this.headerElement).find('.coveo-category-facet-header-wait-animation').style.visibility = 'hidden';\n this.showingWaitAnimation = false;\n }\n }\n\n public logAnalyticsEvent(eventName: IAnalyticsActionCause, path = this.activePath) {\n this.usageAnalytics.logSearchEvent<IAnalyticsCategoryFacetMeta>(eventName, {\n categoryFacetId: this.options.id,\n categoryFacetField: this.options.field.toString(),\n categoryFacetPath: path,\n categoryFacetTitle: this.options.title\n });\n }\n\n public getEndpoint(): ISearchEndpoint {\n return this.queryController.getEndpoint();\n }\n\n get children(): CategoryValue[] {\n return this.categoryValueRoot.children;\n }\n\n private renderValues(categoryFacetResult: ICategoryFacetResult, numberOfRequestedValues: number) {\n this.show();\n let sortedParentValues = this.sortParentValues(categoryFacetResult.parentValues);\n let currentParentValue: CategoryValueParent = this.categoryValueRoot;\n let needToTruncate = false;\n let pathOfLastTruncatedParentValue: string[];\n\n const numberOfItemsInFirstSlice = Math.floor(CategoryFacet.NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING / 2);\n const numberOfItemsInSecondSlice = Math.ceil(CategoryFacet.NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING / 2);\n\n sortedParentValues = this.hideBasePathInParentValues(sortedParentValues);\n\n if (this.shouldTruncate(sortedParentValues)) {\n pathOfLastTruncatedParentValue = this.findPathOfLastTruncatedParentValue(sortedParentValues, numberOfItemsInSecondSlice);\n needToTruncate = true;\n sortedParentValues = first(sortedParentValues, numberOfItemsInFirstSlice).concat(\n last(sortedParentValues, numberOfItemsInSecondSlice)\n );\n }\n\n if (!this.isPristine()) {\n this.addAllCategoriesButton();\n }\n\n for (let i = 0; i < sortedParentValues.length; i++) {\n currentParentValue = currentParentValue.renderAsParent(sortedParentValues[i]);\n\n // We do not want to make the \"last\" parent selectable, as clicking it would be a noop (re-selecting the same filter)\n const isLastParent = i == sortedParentValues.length - 1;\n if (!isLastParent) {\n (currentParentValue as CategoryValue).makeSelectable().showCollapseArrow();\n }\n\n if (needToTruncate) {\n if (i == numberOfItemsInFirstSlice - 1) {\n this.addEllipsis();\n }\n\n if (i == numberOfItemsInFirstSlice) {\n currentParentValue.path = [...pathOfLastTruncatedParentValue, sortedParentValues[i].value];\n }\n }\n }\n\n const childrenValuesToRender = this.moreValuesToFetch\n ? categoryFacetResult.values.slice(0, numberOfRequestedValues - 1)\n : categoryFacetResult.values.slice(0, numberOfRequestedValues);\n\n this.numberOfChildValuesCurrentlyDisplayed = childrenValuesToRender.length;\n\n currentParentValue.renderChildren(childrenValuesToRender);\n this.activeCategoryValue = currentParentValue as CategoryValue;\n }\n\n private hideBasePathInParentValues(parentValues: ICategoryFacetValue[]) {\n if (Utils.arrayEqual(first(this.activePath, this.options.basePath.length), this.options.basePath)) {\n parentValues = last(parentValues, parentValues.length - this.options.basePath.length);\n }\n return parentValues;\n }\n\n private shouldTruncate(parentValues: ICategoryFacetValue[]) {\n return parentValues.length > CategoryFacet.MAXIMUM_NUMBER_OF_VALUES_BEFORE_TRUNCATING;\n }\n\n private addEllipsis() {\n this.categoryValueRoot.listRoot.append(this.categoryFacetTemplates.buildEllipsis().el);\n }\n\n private findPathOfLastTruncatedParentValue(sortedParentValues: ICategoryFacetValue[], numberOfItemsInSecondSlice: number) {\n const indexOfLastTruncatedParentValue = sortedParentValues.length - numberOfItemsInSecondSlice - 1;\n return reduce(first(sortedParentValues, indexOfLastTruncatedParentValue + 1), (path, parentValue) => [...path, parentValue.value], []);\n }\n\n private addAllCategoriesButton() {\n const allCategories = this.categoryFacetTemplates.buildAllCategoriesButton();\n allCategories.on('click', () => this.reset());\n this.categoryValueRoot.listRoot.append(allCategories.el);\n }\n\n private isPristine() {\n return Utils.arrayEqual(this.activePath, this.options.basePath);\n }\n\n private buildFacetHeader() {\n const facetHeader = new CategoryFacetHeader({ categoryFacet: this, title: this.options.title });\n this.headerElement = facetHeader.build();\n $$(this.element).prepend(this.headerElement);\n }\n\n private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n if (this.listenToQueryStateChange) {\n let path = data.attributes[this.queryStateAttribute];\n if (!Utils.isNullOrUndefined(path) && isArray(path) && path.length != 0) {\n this.activePath = path;\n }\n }\n }\n\n private initQueryStateEvents() {\n this.queryStateModel.registerNewAttribute(this.queryStateAttribute, this.options.basePath);\n this.bind.onQueryState<IAttributesChangedEventArg>(MODEL_EVENTS.CHANGE, undefined, data => this.handleQueryStateChanged(data));\n }\n\n private addFading() {\n $$(this.element).addClass('coveo-category-facet-values-fade');\n }\n\n private removeFading() {\n $$(this.element).removeClass('coveo-category-facet-values-fade');\n }\n\n private notImplementedError() {\n const errorMessage = 'Category Facets are not supported by your current search endpoint. Disabling this component.';\n this.logger.error(errorMessage);\n this.disable();\n }\n\n private sortParentValues(parentValues: ICategoryFacetValue[]) {\n if (this.activePath.length != parentValues.length) {\n this.logger.warn('Inconsistent CategoryFacet results: Number of parent values results does not equal length of active path');\n return parentValues;\n }\n\n const sortedParentvalues: ICategoryFacetValue[] = [];\n for (const pathElement of this.activePath) {\n const currentParentValue = find(parentValues, parentValue => parentValue.value.toLowerCase() == pathElement.toLowerCase());\n if (!currentParentValue) {\n this.logger.warn('Inconsistent CategoryFacet results: path not consistent with parent values results');\n return parentValues;\n }\n sortedParentvalues.push(currentParentValue);\n }\n return sortedParentvalues;\n }\n\n private renderMoreLess() {\n if (this.numberOfChildValuesCurrentlyDisplayed > this.options.numberOfValues) {\n this.moreLessContainer.append(this.buildLessButton());\n }\n\n if (this.moreValuesToFetch) {\n this.moreLessContainer.append(this.buildMoreButton());\n }\n }\n\n private clear() {\n this.categoryValueRoot.clear();\n if (this.isFacetSearchAvailable) {\n this.categoryFacetSearch.clear();\n }\n this.moreLessContainer && this.moreLessContainer.detach();\n $$(this.element).removeClass('coveo-category-facet-non-empty-path');\n }\n\n private buildMoreButton() {\n const svgContainer = $$('span', { className: 'coveo-facet-more-icon' }, SVGIcons.icons.arrowDown).el;\n SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-more-icon-svg');\n const more = $$('div', { className: 'coveo-category-facet-more' }, svgContainer);\n\n new AccessibleButton()\n .withElement(more)\n .withSelectAction(() => this.showMore())\n .withLabel(l('ExpandFacet', this.options.title))\n .build();\n\n return more.el;\n }\n\n private buildLessButton() {\n const svgContainer = $$('span', { className: 'coveo-facet-less-icon' }, SVGIcons.icons.arrowUp).el;\n SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-less-icon-svg');\n const less = $$('div', { className: 'coveo-category-facet-less' }, svgContainer);\n\n new AccessibleButton()\n .withElement(less)\n .withSelectAction(() => this.showLess())\n .withLabel(l('CollapseFacet', this.options.title))\n .build();\n\n return less.el;\n }\n\n private handlePopulateBreadCrumb(args: IPopulateBreadcrumbEventArgs) {\n if (this.isPristine()) {\n return;\n }\n\n let lastParentValue = this.getVisibleParentValues().pop();\n\n if (!lastParentValue) {\n // This means we're in a special corner case where the current base path is configured\n // to one level before the last values in the tree.\n // In that case, there's simply no parent, so we must tweak things a bit so it plays nicely with the breadcrumb.\n // We can simulate the \"last parent value\" as being the current active path itself.\n lastParentValue = this.activeCategoryValue.getDescriptor();\n }\n\n const resetFacet = () => {\n this.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet);\n this.reset();\n };\n\n const categoryFacetBreadcrumbBuilder = new CategoryFacetBreadcrumb(this, resetFacet, lastParentValue);\n\n args.breadcrumbs.push({ element: categoryFacetBreadcrumbBuilder.build() });\n }\n\n private handleClearBreadcrumb() {\n this.changeActivePath(this.options.basePath);\n }\n\n private get hasValues(): boolean {\n return this.getAvailableValues().length > 0;\n }\n}\n\nInitialization.registerAutoCreateComponent(CategoryFacet);\nCategoryFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacet.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';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { debounce } from 'underscore';\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 = <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 = <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 = debounce(() => {\n if (this.isAbleToDetermineMode()) {\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 }, 250);\n // On many android devices, focusing on an input (eg: facet search input) causes the device to \"zoom in\"\n // and this triggers the window resize event. Since this class modify HTML nodes, Android has the quirks of removing the focus on the input.\n // As a net result, users focus on the text input, the keyboard appears for a few milliseconds, then dissapears instantly when the DOM is modified.\n // Since on a mobile device resizing the page is not something that should really happen, we disable it here.\n if (!DeviceUtils.isMobileDevice()) {\n window.addEventListener('resize', this.resizeListener);\n }\n\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 <HTMLElement>searchBoxElement;\n } else {\n return <HTMLElement>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 private isAbleToDetermineMode() {\n return this.coveoRoot.width() != 0 || this.searchInterface.options.responsiveMode !== 'auto';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","import { ComponentOptions } from '../Base/ComponentOptions';\n\n/**\n * ResponsiveFacets options\n */\nexport const ResponsiveFacetOptions = {\n /**\n * Specifies whether to enable *responsive mode* for facets. Setting this options to `false` on any `Facet`, or\n * [`FacetSlider`]{@link FacetSlider} component in a search interface disables responsive mode for all other facets\n * in the search interface.\n *\n * Responsive mode displays all facets under a single dropdown button whenever the width of the HTML element which\n * the search interface is bound to reaches or falls behind a certain threshold (see\n * {@link SearchInterface.responsiveComponents}).\n *\n * See also the [`dropdownHeaderLabel`]{@link Facet.options.dropdownHeaderLabel} option.\n *\n * Default value is `true`.\n */\n enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'ResponsiveOptions' }),\n responsiveBreakpoint: ComponentOptions.buildNumberOption({\n deprecated:\n 'This option is exposed for legacy reasons. It is not recommended to use this option. Instead, use `SearchInterface.options.responsiveMediumBreakpoint` options exposed on the `SearchInterface`.'\n }),\n /**\n * If the [`enableResponsiveMode`]{@link Facet.options.enableResponsiveMode} option is `true` for all facets and\n * {@link FacetSlider.options.enableResponsiveMode} is also `true` for all sliders, specifies the label of the\n * dropdown button that allows to display the facets when in responsive mode.\n *\n * If more than one `Facet` or {@link FacetSlider} component in the search interface specifies a value for this\n * option, the framework uses the first occurrence of the option.\n *\n * Default value is `Filters`.\n */\n dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({ section: 'ResponsiveOptions' })\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.3\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && parent.nodeName === 'HTML') {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var styles = getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // Avoid blurry text by using full pixel integers.\n // For pixel-perfect positioning, top/bottom prefers rounded\n // values, while left/right prefers floored values.\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.round(popper.top),\n bottom: Math.round(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/popper.js/dist/esm/popper.js\n// module id = 92\n// module chunks = 1 2 3 4 8 12 14 16 24 77","import { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\n\nexport class ResponsiveComponentsUtils {\n private static smallTabsClassName: string = 'coveo-small-tabs';\n private static smallFacetClassName: string = 'coveo-small-facets';\n private static smallRecommendationClassName: string = 'coveo-small-recommendation';\n\n static shouldDrawFacetSlider(root: Dom, facetSliderElement: Dom): boolean {\n return ResponsiveDropdownContent.isTargetInsideOpenedDropdown(facetSliderElement) || !this.isSmallFacetActivated(root);\n }\n\n static isSmallTabsActivated(root: Dom): boolean {\n return root.hasClass(this.smallTabsClassName);\n }\n\n static isSmallFacetActivated(root: Dom): boolean {\n return root.hasClass(this.smallFacetClassName);\n }\n\n static isSmallRecommendationActivated(root: Dom): boolean {\n return root.hasClass(this.smallRecommendationClassName);\n }\n\n static activateSmallTabs(root: Dom): void {\n root.addClass(this.smallTabsClassName);\n }\n\n static deactivateSmallTabs(root: Dom): void {\n root.removeClass(this.smallTabsClassName);\n }\n\n static activateSmallFacet(root: Dom): void {\n root.addClass(this.smallFacetClassName);\n }\n\n static deactivateSmallFacet(root: Dom): void {\n root.removeClass(this.smallFacetClassName);\n }\n\n static activateSmallRecommendation(root: Dom): void {\n root.addClass(this.smallRecommendationClassName);\n }\n\n static deactivateSmallRecommendation(root: Dom): void {\n root.removeClass(this.smallRecommendationClassName);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","import { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport * as Globalize from 'globalize';\nimport * as _ from 'underscore';\n\n/**\n * A class which holds information and operation available on a single facet value returned by a {@link IGroupByRequest}.<br/>\n * This class is used extensively in the {@link Facet} component.\n */\nexport class FacetValue {\n value: string;\n lookupValue: string;\n occurrences: number;\n computedField: number;\n delta: number;\n score: number;\n selected: boolean = false;\n excluded: boolean = false;\n waitingForDelta: boolean = false;\n\n reset() {\n this.selected = false;\n this.excluded = false;\n }\n\n updateCountsFromNewValue(newValue: FacetValue) {\n Assert.exists(newValue);\n this.occurrences = newValue.occurrences;\n this.delta = newValue.delta;\n this.computedField = newValue.computedField;\n }\n\n clone(): FacetValue {\n this.computedField = undefined;\n this.delta = undefined;\n return this;\n }\n\n cloneWithZeroOccurrences(): FacetValue {\n this.occurrences = 0;\n return this.clone();\n }\n\n cloneWithDelta(count: number, delta: number): FacetValue {\n Assert.isLargerOrEqualsThan(0, count);\n var clone = this.cloneWithZeroOccurrences();\n clone.delta = delta;\n clone.occurrences = count;\n return clone;\n }\n\n getFormattedCount() {\n var count: string = undefined;\n if (Utils.exists(this.delta) && this.delta > 0) {\n count = '+' + Globalize.format(this.delta, 'n0');\n } else {\n if (this.occurrences > 0) {\n count = Globalize.format(this.occurrences, 'n0');\n }\n }\n return count;\n }\n\n getFormattedComputedField(format: string) {\n if (this.computedField != 0) {\n return Globalize.format(this.computedField, format);\n } else {\n return undefined;\n }\n }\n\n static create(value: any): FacetValue {\n if (_.isString(value)) {\n return FacetValue.createFromValue(value);\n } else if (_.isObject(value)) {\n if ('computedFieldResults' in value) {\n return FacetValue.createFromGroupByValue(value);\n } else {\n return FacetValue.createFromFieldValue(value);\n }\n } else {\n throw new Error(\"Can't create value from \" + value);\n }\n }\n\n static createFromValue(value: string): FacetValue {\n Assert.isNonEmptyString(value);\n\n var facetValue = new FacetValue();\n facetValue.value = value;\n facetValue.lookupValue = value;\n\n return facetValue;\n }\n\n static createFromGroupByValue(groupByValue: IGroupByValue): FacetValue {\n Assert.exists(groupByValue);\n\n Assert.exists(groupByValue);\n\n var facetValue = new FacetValue();\n facetValue.value = groupByValue.value;\n facetValue.lookupValue = Utils.exists(groupByValue.lookupValue) ? groupByValue.lookupValue : groupByValue.value;\n facetValue.occurrences = groupByValue.numberOfResults;\n facetValue.computedField = Utils.isNonEmptyArray(groupByValue.computedFieldResults) ? groupByValue.computedFieldResults[0] : undefined;\n facetValue.score = groupByValue.score;\n\n return facetValue;\n }\n\n static createFromFieldValue(fieldValue: IIndexFieldValue): FacetValue {\n Assert.exists(fieldValue);\n\n var facetValue = new FacetValue();\n facetValue.value = fieldValue.value;\n facetValue.lookupValue = fieldValue.lookupValue;\n facetValue.occurrences = fieldValue.numberOfResults;\n\n return facetValue;\n }\n}\n\nexport class FacetValues {\n private values: FacetValue[];\n\n constructor(groupByResult?: IGroupByResult) {\n if (Utils.exists(groupByResult)) {\n this.values = _.map(groupByResult.values, groupByValue => FacetValue.createFromGroupByValue(groupByValue));\n } else {\n this.values = [];\n }\n }\n\n add(facetValue: FacetValue) {\n Assert.exists(facetValue);\n Assert.check(!this.contains(facetValue.value));\n this.values.push(facetValue);\n }\n\n remove(value: string) {\n Assert.isNonEmptyString(value);\n value = value;\n this.values = _.filter(this.values, (elem: FacetValue) => elem.value != value);\n }\n\n size(): number {\n return this.values.length;\n }\n\n isEmpty(): boolean {\n return this.values.length == 0;\n }\n\n at(index: number): FacetValue {\n Assert.isLargerOrEqualsThan(0, index);\n Assert.isSmallerThan(this.values.length, index);\n return this.values[index];\n }\n\n get(value: string): FacetValue {\n return _.find(this.values, (elem: FacetValue) => elem.value.toLowerCase() == value.toLowerCase());\n }\n\n contains(value: string): boolean {\n return Utils.exists(this.get(value));\n }\n\n getAll(): FacetValue[] {\n return this.values;\n }\n\n getSelected(): FacetValue[] {\n return _.filter(this.values, (value: FacetValue) => value.selected);\n }\n\n getExcluded(): FacetValue[] {\n return _.filter(this.values, (value: FacetValue) => value.excluded);\n }\n\n hasSelectedOrExcludedValues(): boolean {\n return this.getSelected().length != 0 || this.getExcluded().length != 0;\n }\n\n hasSelectedAndExcludedValues(): boolean {\n return this.getSelected().length != 0 && this.getExcluded().length != 0;\n }\n\n hasOnlyExcludedValues(): boolean {\n return this.getSelected().length == 0 && this.getExcluded().length != 0;\n }\n\n hasOnlySelectedValues(): boolean {\n return this.getSelected().length != 0 && this.getExcluded().length == 0;\n }\n\n reset() {\n _.each(this.values, (elem: FacetValue) => elem.reset());\n }\n\n importActiveValuesFromOtherList(other: FacetValues) {\n Assert.exists(other);\n\n _.each(other.getSelected(), (otherValue: FacetValue) => {\n var myValue = this.get(otherValue.value);\n if (Utils.exists(myValue)) {\n myValue.selected = true;\n } else {\n this.values.push(otherValue.cloneWithZeroOccurrences());\n }\n });\n\n _.each(other.getExcluded(), (otherValue: FacetValue) => {\n var myValue = this.get(otherValue.value);\n if (Utils.exists(myValue)) {\n myValue.excluded = true;\n } else if (otherValue.occurrences != 0) {\n var occurrences = otherValue.occurrences;\n var clone = otherValue.cloneWithZeroOccurrences();\n clone.occurrences = occurrences;\n this.values.push(clone);\n } else {\n this.values.push(otherValue.cloneWithZeroOccurrences());\n }\n });\n }\n\n updateCountsFromNewValues(newValues: FacetValues) {\n Assert.exists(newValues);\n\n this.values = _.map(this.values, (myValue: FacetValue) => {\n var newValue = newValues.get(myValue.value);\n if (Utils.exists(newValue)) {\n myValue.updateCountsFromNewValue(newValue);\n return myValue;\n } else if (myValue.occurrences == null) {\n return myValue.cloneWithZeroOccurrences();\n }\n return myValue;\n });\n }\n\n updateDeltaWithFilteredFacetValues(filtered: FacetValues, isMultiValueField: boolean) {\n Assert.exists(filtered);\n _.each(this.values, (unfilteredValue: FacetValue) => {\n var filteredValue = filtered.get(unfilteredValue.value);\n unfilteredValue.waitingForDelta = false;\n if (Utils.exists(filteredValue)) {\n if (unfilteredValue.occurrences - filteredValue.occurrences > 0) {\n // When there are only exclusion in the facet, there should be no \"delta\"\n // The number of value for each facet will be what is selected, no addition.\n if (this.hasOnlyExcludedValues()) {\n unfilteredValue.delta = null;\n unfilteredValue.occurrences = filteredValue.occurrences;\n } else {\n unfilteredValue.delta = unfilteredValue.occurrences - filteredValue.occurrences;\n }\n } else {\n unfilteredValue.delta = null;\n }\n } else if (!unfilteredValue.selected && !unfilteredValue.excluded) {\n if (isMultiValueField && filtered.values.length == 0) {\n unfilteredValue.delta = null;\n unfilteredValue.occurrences = 0;\n } else {\n unfilteredValue.delta = unfilteredValue.occurrences;\n }\n }\n });\n }\n\n mergeWithUnfilteredFacetValues(unfiltered: FacetValues) {\n Assert.exists(unfiltered);\n\n var values: FacetValue[] = [];\n _.each(unfiltered.values, (unfilteredValue: FacetValue) => {\n var filteredValue = this.get(unfilteredValue.value);\n if (Utils.exists(filteredValue)) {\n if (filteredValue.occurrences == unfilteredValue.occurrences) {\n values.push(filteredValue);\n } else {\n values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences - filteredValue.occurrences));\n }\n } else {\n values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences));\n }\n });\n\n var index = 0;\n _.each(this.values, (value: FacetValue) => {\n var unfilteredValue = unfiltered.get(value.value);\n if (!Utils.exists(unfilteredValue)) {\n if (value.selected || value.excluded) {\n values.splice(index, 0, value);\n index++;\n }\n } else {\n for (var i = 0; i < values.length; i++) {\n if (values[i].value == value.value) {\n index = i + 1;\n break;\n }\n }\n }\n });\n this.values = values;\n }\n\n sortValuesDependingOnStatus(excludeLastIndex?: number) {\n this.values = _.sortBy(this.values, (value: FacetValue) => {\n if (value.selected) {\n return 1;\n } else if (value.excluded) {\n return 3;\n } else {\n return 2;\n }\n });\n if (excludeLastIndex != null && excludeLastIndex < this.values.length) {\n var nbExclude = this.getExcluded().length;\n var excludes = this.values.splice(this.values.length - nbExclude, nbExclude);\n Array.prototype.splice.apply(this.values, (<any[]>[excludeLastIndex - nbExclude, 0]).concat(excludes));\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValues.ts","/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValues';\nimport { ValueElement } from './ValueElement';\n\nexport interface IFacetValueElementKlass {\n new (facet: Facet, facetValue: FacetValue, displayNextTime?: boolean): FacetValueElement;\n}\n\nexport class FacetValueElement extends ValueElement {\n constructor(public facet: Facet, public facetValue: FacetValue, public keepDisplayedValueNextTime: boolean) {\n super(facet, facetValue);\n }\n\n public bindEvent() {\n super.bindEvent({\n displayNextTime: this.keepDisplayedValueNextTime,\n pinFacet: this.facet.options.preservePosition\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValueElement.ts"],"sourceRoot":""}