@4alldigital/foundation-ui--gamma 1.31.8 → 1.31.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,9 +1,15 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import cx from 'classnames';
3
3
  import { Icon as Icon$1 } from '@iconify/react';
4
- import React, { useEffect } from 'react';
4
+ import React, { useEffect, useMemo } from 'react';
5
5
  import HoverVideoPlayer from 'react-hover-video-player';
6
6
  import { useForm, FormProvider, useFormContext, Controller } from 'react-hook-form';
7
+ import '@elastic/eui/dist/eui_theme_light.css';
8
+ import ElasticSearchAPIConnector from '@elastic/search-ui-elasticsearch-connector';
9
+ import { SearchProvider, WithSearch, ErrorBoundary, SearchBox as SearchBox$1, Sorting as Sorting$1, Facet, Results as Results$1, PagingInfo as PagingInfo$1, ResultsPerPage as ResultsPerPage$1, Paging as Paging$1 } from '@elastic/react-search-ui';
10
+ import '@elastic/react-search-ui-views/lib/styles/styles.css';
11
+ import RCPagination from 'rc-pagination';
12
+ import enUsLocale from 'rc-pagination/lib/locale/en_US';
7
13
 
8
14
  var Blockquote = function (_a) {
9
15
  var text = _a.text, citation = _a.citation, className = _a.className, citationAttribute = _a.citationAttribute, _b = _a.showIcon, showIcon = _b === void 0 ? true : _b;
@@ -795,4 +801,297 @@ var CardVariant;
795
801
  CardVariant["VIDEO"] = "video";
796
802
  })(CardVariant || (CardVariant = {}));
797
803
 
798
- export { BTN_SIZES, BTN_TYPES, BTN_VARIANTS, Blockquote, Button, COPY_ALIGN, COPY_CONTEXTUAL, COPY_SIZE, COPY_TAG, COPY_TRANSFORM, CPL_SPACING, CRL_SIZE, Card, CardVariant, Container, ContentPageLayout, ContentRowsLayout, Copy, FIELD_TYPES, Form, FormField, HEADING_ALIGN, HEADING_TAGS, HEADING_TRANSFORM, Heading, Hr, Icon, Image, Link, List, ListItem, ListTag, Loader, Notice, Variants };
804
+ var ResultAsTypes;
805
+ (function (ResultAsTypes) {
806
+ ResultAsTypes["cardBasic"] = "cardBasic";
807
+ ResultAsTypes["cardMedia"] = "cardMedia";
808
+ ResultAsTypes["cardVideo"] = "cardVideo";
809
+ })(ResultAsTypes || (ResultAsTypes = {}));
810
+
811
+ function Sorting(_a) {
812
+ var className = _a.className, label = _a.label, onChange = _a.onChange, options = _a.options;
813
+ return (jsxs("div", { className: cx('m-0 p-0 mb-2 border-none', className), children: [jsx(Label, { className: "text-sm", transform: COPY_TRANSFORM.UPPERCASE, children: label }), jsx(FormSelect, { id: label || 'Sorting', options: options, onChange: function (o) { return onChange(o.target.value); } })] }));
814
+ }
815
+ Sorting.displayName = 'Sorting';
816
+
817
+ // import { BTN_SIZES, BTN_VARIANTS, Button, Icon } from '../../../../components';
818
+ // const itemRender = (current: number, type: string, element: React.ReactNode, ...rest: any) => {
819
+ // console.log('itemRender', rest);
820
+ // if (type === 'page') {
821
+ // return <a href={`#${current}`}>{current}</a>;
822
+ // }
823
+ // if (type === 'prev') {
824
+ // return <Button variant={BTN_VARIANTS.PRIMARY} size={BTN_SIZES.SMALL}><Icon name="mdi:chevron-left" /></Button>;
825
+ // }
826
+ // if (type === 'next') {
827
+ // return <button type="button">Next</button>;
828
+ // }
829
+ // return element;
830
+ // };
831
+ function Paging(_a) {
832
+ var className = _a.className, current = _a.current, _b = _a.resultsPerPage, resultsPerPage = _b === void 0 ? 10 : _b, onChange = _a.onChange, totalPages = _a.totalPages, rest = __rest(_a, ["className", "current", "resultsPerPage", "onChange", "totalPages"]);
833
+ return (jsx(RCPagination, __assign({ current: current, onChange: onChange, simple: true, pageSize: resultsPerPage, total: totalPages * resultsPerPage, className: cx('m-0 p-0 list-none text-white', className), locale: enUsLocale, prevIcon: jsx(Icon, { name: "mdi:chevron-left" }), nextIcon: jsx(Icon, { name: "mdi:chevron-right" }) }, rest)));
834
+ }
835
+ Paging.displayName = 'Paging';
836
+
837
+ function ResultsPerPage(_a) {
838
+ var className = _a.className, onChange = _a.onChange, options = _a.options, label = _a.label, rest = __rest(_a, ["className", "onChange", "options", "label"]);
839
+ // Return nothing without options.
840
+ if (!options) {
841
+ return jsx(Fragment, {});
842
+ }
843
+ return (jsxs("div", __assign({ className: cx('m-0 p-0 border-none flex items-center justify-end', className) }, rest, { children: [jsx(Label, { className: "text-sm mr-2", transform: COPY_TRANSFORM.UPPERCASE, children: "Show" }), jsx(FormSelect, { id: label || 'ResultsPerPage', options: options.map(function (option) { return ({ label: option.toString(), value: option }); }), onChange: function (o) { return onChange(o.target.value); }, className: 'min-w-20' })] })));
844
+ }
845
+ ResultsPerPage.displayName = 'ResultsPerPage';
846
+
847
+ function PagingInfo(_a) {
848
+ var className = _a.className, end = _a.end, searchTerm = _a.searchTerm, start = _a.start, totalResults = _a.totalResults, rest = __rest(_a, ["className", "end", "searchTerm", "start", "totalResults"]);
849
+ return (jsxs("div", __assign({ className: cx("m-0 p-0", className) }, rest, { children: ["Showing", " ", jsxs("strong", { children: [start, " - ", end] }), " ", "out of ", jsx("strong", { children: totalResults }), searchTerm && (jsxs(Fragment, { children: [" ", "for: ", jsx("em", { children: searchTerm })] }))] })));
850
+ }
851
+ PagingInfo.displayName = 'PagingInfo';
852
+
853
+ function SearchBox(_a) {
854
+ var className = _a.className, onChange = _a.onChange, onSubmit = _a.onSubmit, rest = __rest(_a, ["className", "onChange", "onSubmit"]);
855
+ console.log('SearchBox: rest', rest);
856
+ return (jsx("div", { className: cx('m-0', className), children: jsxs("form", { onSubmit: function (e) { return onSubmit(e); }, className: "flex items-center", children: [jsx("div", { className: "flex-1", children: jsx(TextInput, { name: "SearchBoxInput", type: InputType.TEXT, placeholder: "Search now....", onChange: function (e) {
857
+ var _a;
858
+ onChange((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value);
859
+ } }) }), jsx("div", { className: "pl-2", children: jsx(Button, { type: BTN_TYPES.SUBMIT, variant: BTN_VARIANTS.PRIMARY, children: "Search" }) })] }) }));
860
+ }
861
+ SearchBox.displayName = 'SearchBox';
862
+
863
+ // import Sidebar from "../Sidebar";
864
+ function Layout(_a) {
865
+ var className = _a.className, children = _a.children, header = _a.header, bodyContent = _a.bodyContent, bodyFooter = _a.bodyFooter, bodyHeader = _a.bodyHeader, sideContent = _a.sideContent;
866
+ var sidebarClasses = cx('hidden md:block fixed md:relative w-full h-full left-0 md:left-auto top-0 md:top-auto px-2 pb-4 md:pt-6 md:px-6 md:pb-auto md:pl-0', { 'hidden md:hidden': !sideContent });
867
+ return (jsxs("div", { className: cx('w-full flex flex-col', className), children: [jsx("div", { className: "m-auto p-4 md:py-0 md:px-6 max-w-7xl w-full", children: header }), jsxs("div", { className: cx('md:grid m-auto p-4 md:py-0 md:px-6 max-w-7xl w-full', {
868
+ 'md:grid-cols-search-layout': !sideContent,
869
+ 'md:grid-cols-search-layout-with-sidebar': sideContent,
870
+ }), children: [jsx("div", { className: sidebarClasses, children: sideContent }), jsxs("div", { className: cx('p-0 pt-2 md:p-6 md:pr-0', {
871
+ 'md:pl-0': !sideContent,
872
+ }), children: [jsx("div", { className: "flex items-center justify-between", children: bodyHeader }), jsx("div", { className: "relative", children: children || bodyContent }), jsx("div", { className: "flex items-center justify-around", children: bodyFooter })] })] })] }));
873
+ }
874
+ Layout.displayName = 'Layout';
875
+
876
+ function Results(_a) {
877
+ var children = _a.children, className = _a.className, rest = __rest(_a, ["children", "className"]);
878
+ console.log('Results: rest', rest);
879
+ return (jsx("ul", __assign({ className: cx('relative grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-4', className) }, rest, { children: children })));
880
+ }
881
+ Results.displayName = 'Results';
882
+
883
+ /*
884
+ Since Filter Values come in many different varieties, this helper
885
+ encapsulates the logic for determining how to show the label of that
886
+ filter in the UI.
887
+ */
888
+ function getFilterValueDisplay(filterValue) {
889
+ if (filterValue === undefined || filterValue === null)
890
+ return '';
891
+ if (Object.prototype.hasOwnProperty.call(filterValue, 'name'))
892
+ return filterValue.name;
893
+ return String(filterValue);
894
+ }
895
+
896
+ function getFieldType(object, type) {
897
+ if (object)
898
+ return object[type];
899
+ }
900
+ function getRaw(object) {
901
+ return getFieldType(object, 'raw');
902
+ }
903
+ function getSnippet(object) {
904
+ return getFieldType(object, 'snippet');
905
+ }
906
+ function htmlEscape(str) {
907
+ if (!str)
908
+ return '';
909
+ return String(str)
910
+ .replace(/&/g, '&amp;')
911
+ .replace(/"/g, '&quot;')
912
+ .replace(/'/g, '&#39;')
913
+ .replace(/</g, '&lt;')
914
+ .replace(/>/g, '&gt;');
915
+ }
916
+ function getEscapedField(maybeObject) {
917
+ // Fallback to raw values here, because non-string fields
918
+ // will not have a snippet fallback. Raw values MUST be html escaped.
919
+ var safeField = getSnippet(maybeObject) || htmlEscape(getRaw(maybeObject));
920
+ return Array.isArray(safeField) ? safeField.join(', ') : safeField;
921
+ }
922
+
923
+ function Result(_a) {
924
+ var className = _a.className, result = _a.result,
925
+ // onClickLink,
926
+ as = _a.as, _b = _a.cardMap, cardMap = _b === void 0 ? {
927
+ idField: { fieldName: 'uuid' },
928
+ titleField: { fieldName: 'title' },
929
+ descriptionField: { fieldName: 'description' },
930
+ imageField: { fieldName: 'image' },
931
+ } : _b;
932
+ console.log('Result', cardMap);
933
+ // Pass fields into the relevant Card.
934
+ // const fields: any = formatResult(result);
935
+ var idField = cardMap.idField, titleField = cardMap.titleField, imageField = cardMap.imageField, videoField = cardMap.videoField, descriptionField = cardMap.descriptionField, metaDataFields = cardMap.metaDataFields, cardProps = cardMap.cardProps, rest = __rest(cardMap, ["idField", "titleField", "imageField", "videoField", "descriptionField", "metaDataFields", "cardProps"]);
936
+ console.log('rest', rest);
937
+ console.log('cardProps', cardProps);
938
+ var id = idField && getEscapedField(result[idField.fieldName]);
939
+ var title = titleField && getEscapedField(result[titleField.fieldName]);
940
+ var imageUrl = imageField && getEscapedField(result[imageField.fieldName]);
941
+ var videoUrl = videoField && videoField.formatter
942
+ ? videoField.formatter(getEscapedField(result[videoField.fieldName]))
943
+ : videoField && getEscapedField(result[videoField.fieldName]);
944
+ var description = descriptionField && getEscapedField(result[descriptionField.fieldName]);
945
+ var metaData = metaDataFields &&
946
+ metaDataFields.map(function (field) {
947
+ var value = getEscapedField(result[field.fieldName]);
948
+ if (field.formatter && typeof field.formatter === 'function') {
949
+ return field.formatter(value);
950
+ }
951
+ });
952
+ // console.log('Result metaData:', metaData);
953
+ // console.log('Result', cardMap);
954
+ var resultView = function () {
955
+ var imageData = {
956
+ src: imageUrl || '',
957
+ alt: title || '',
958
+ title: title || '',
959
+ width: 500,
960
+ height: 500,
961
+ };
962
+ var cardData = {
963
+ id: id,
964
+ title: title,
965
+ image: imageData,
966
+ video: videoUrl,
967
+ description: description,
968
+ metaData: metaData,
969
+ actions: cardMap.actionsData,
970
+ onClick: cardMap.onClickLink,
971
+ };
972
+ switch (as) {
973
+ case ResultAsTypes.cardMedia:
974
+ return jsx(Card, __assign({ variant: CardVariant.MEDIA, data: cardData }, cardProps));
975
+ case ResultAsTypes.cardVideo:
976
+ return jsx(Card, __assign({ variant: CardVariant.VIDEO, data: cardData }, cardProps, { isMuted: false }));
977
+ default:
978
+ return jsx(Card, __assign({ variant: CardVariant.BASIC, data: cardData }, cardProps));
979
+ }
980
+ };
981
+ return jsx("li", { className: cx('relative', className), children: resultView() });
982
+ }
983
+ Result.displayName = 'Result';
984
+
985
+ function Search(_a) {
986
+ var _b = _a.showOptions, showOptions = _b === void 0 ? [10, 25, 50] : _b, sortOptions = _a.sortOptions, _c = _a.resultAs, resultAs = _c === void 0 ? ResultAsTypes.cardBasic : _c, ResultFieldMap = _a.ResultFieldMap, _d = _a.config, config = _d === void 0 ? {
987
+ filters: [],
988
+ facets: {},
989
+ searchFields: {},
990
+ resultsFields: {},
991
+ } : _d, _e = _a.facetDisplay, facetDisplay = _e === void 0 ? [] : _e, _f = _a.noSidebar, noSidebar = _f === void 0 ? false : _f, customConnector = _a.customConnector;
992
+ var connector = useMemo(function () {
993
+ var defaultConnector = {
994
+ host: process.env.REACT_ELASTICSEARCH_HOST,
995
+ index: process.env.REACT_ELASTICSEARCH_INDEX || '',
996
+ apiKey: process.env.REACT_ELASTICSEARCH_API_KEY,
997
+ };
998
+ return new ElasticSearchAPIConnector(customConnector || defaultConnector);
999
+ }, []);
1000
+ var searchConfig = useMemo(function () {
1001
+ return {
1002
+ debug: true,
1003
+ alwaysSearchOnInitialLoad: true,
1004
+ apiConnector: connector,
1005
+ hasA11yNotifications: true,
1006
+ searchQuery: {
1007
+ filters: config.filters || [],
1008
+ search_fields: config.searchFields || {},
1009
+ result_fields: config.resultsFields || {},
1010
+ // disjunctiveFacets: ['created'], // Make certain Facets into OR instead of AND
1011
+ facets: config.facets,
1012
+ },
1013
+ autocompleteQuery: {
1014
+ results: {
1015
+ search_fields: {
1016
+ title: {},
1017
+ description: {},
1018
+ },
1019
+ resultsPerPage: 5,
1020
+ result_fields: {
1021
+ title: {
1022
+ snippet: {
1023
+ size: 100,
1024
+ fallback: true,
1025
+ },
1026
+ },
1027
+ },
1028
+ },
1029
+ // TODO: Implement suggestions
1030
+ // suggestions: {
1031
+ // types: {
1032
+ // documents: {
1033
+ // fields: ['title'],
1034
+ // },
1035
+ // },
1036
+ // size: 4,
1037
+ // },
1038
+ },
1039
+ };
1040
+ }, [config]);
1041
+ return (jsx(SearchProvider, { config: searchConfig, children: jsx(WithSearch, { mapContextToProps: function (_a) {
1042
+ var wasSearched = _a.wasSearched;
1043
+ return ({
1044
+ wasSearched: wasSearched,
1045
+ });
1046
+ }, children: function (_a) {
1047
+ var wasSearched = _a.wasSearched;
1048
+ return (jsx("div", { className: "App", children: jsx(ErrorBoundary, { children: jsx(Layout, { header: jsx(SearchBox$1, { view: SearchBox }), sideContent: !noSidebar && (jsxs("div", { children: [wasSearched && jsx(Sorting$1, { label: 'Sort by', sortOptions: sortOptions, view: Sorting }), facetDisplay.map(function (_a) {
1049
+ var field = _a.field, label = _a.label, view = _a.view;
1050
+ return (jsx(Facet, { field: field, label: label, view: view }, field));
1051
+ })] })), bodyContent: jsx(Results$1, { shouldTrackClickThrough: false, resultView: function (props) { return jsx(Result, __assign({}, props, { as: resultAs, cardMap: ResultFieldMap })); }, className: "list-none p-0 m-0", view: Results }), bodyHeader: jsxs(React.Fragment, { children: [wasSearched && jsx(PagingInfo$1, { view: PagingInfo }), wasSearched && jsx(ResultsPerPage$1, { view: ResultsPerPage, options: showOptions })] }), bodyFooter: jsx(Paging$1, { view: Paging }), noSidebar: noSidebar }) }) }));
1052
+ } }) }));
1053
+ }
1054
+
1055
+ function SingleSelectFacet(_a) {
1056
+ var className = _a.className, label = _a.label, onChange = _a.onChange, options = _a.options;
1057
+ var selectBoxOptions = options.map(function (option) {
1058
+ return {
1059
+ value: option.value,
1060
+ label: "".concat(option.value, " (").concat(option.count, ")"),
1061
+ };
1062
+ });
1063
+ return (jsxs("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: [jsx(Label, { className: "text-sm", transform: COPY_TRANSFORM.UPPERCASE, children: label }), jsx(FormSelect, { id: label, options: selectBoxOptions, onChange: function (o) { return onChange(o.target.value); } })] }));
1064
+ }
1065
+ SingleSelectFacet.displayName = 'SingleSelectFacet';
1066
+
1067
+ function SingleLinksFacet(_a) {
1068
+ var className = _a.className, label = _a.label, onRemove = _a.onRemove, onSelect = _a.onSelect, options = _a.options;
1069
+ var value = options.filter(function (o) { return o.selected; }).map(function (o) { return o.value; })[0];
1070
+ return (jsx("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: jsxs("div", { children: [jsx(Label, { className: "text-sm", transform: COPY_TRANSFORM.UPPERCASE, children: label }), jsxs("ul", { className: "ul list-none p-0", children: [value && (jsxs("li", { className: "m-0 flex justify-between items-center flex-1", children: [getFilterValueDisplay(value), jsx("span", { className: "ml-1 px-1", children: jsx(Button, { onClick: function () { return onRemove(value); }, children: jsx(Icon, { name: "mdi:close" }) }) })] })), !value &&
1071
+ options.map(function (option) {
1072
+ var filterValue = getFilterValueDisplay(option.value);
1073
+ return (jsxs("li", { className: "m-0 flex justify-between", children: [jsx("a", { className: "no-underline text-sm visited:text-body-text", "data-transaction-name": "facet - ".concat(label), href: "/", onClick: function (e) {
1074
+ e.preventDefault();
1075
+ onSelect(option.value);
1076
+ }, children: jsx("label", { className: "label pl-0 leading-none text-sm", children: filterValue }) }), jsx(Copy, { as: COPY_TAG.SPAN, size: COPY_SIZE.SMALL, children: option.count.toLocaleString('en') })] }, filterValue));
1077
+ })] })] }) }));
1078
+ }
1079
+ SingleLinksFacet.displayName = 'SingleLinksFacet';
1080
+
1081
+ function MultiCheckboxFacet(_a) {
1082
+ var className = _a.className, label = _a.label, onMoreClick = _a.onMoreClick, onRemove = _a.onRemove, onSelect = _a.onSelect, options = _a.options, showMore = _a.showMore, showSearch = _a.showSearch, onSearch = _a.onSearch, searchPlaceholder = _a.searchPlaceholder;
1083
+ if (!options) {
1084
+ return jsx(Fragment, { children: "Options required" });
1085
+ }
1086
+ return (jsxs("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: [jsx(Label, { className: "text-sm", transform: COPY_TRANSFORM.UPPERCASE, children: label }), showSearch && (jsx("div", { className: "mt-1", children: jsx(TextInput, { type: InputType.SEARCH, placeholder: searchPlaceholder || 'Search', onChange: function (e) {
1087
+ onSearch(e.target.value);
1088
+ } }) })), jsxs("div", { className: "my-4", children: [(options === null || options === void 0 ? void 0 : options.length) < 1 && jsx("div", { children: "No matching options" }), options === null || options === void 0 ? void 0 : options.map(function (option) {
1089
+ var checked = option.selected;
1090
+ var value = option.value;
1091
+ var filterDisplayValue = getFilterValueDisplay(value);
1092
+ return (jsxs("div", { className: "flex justify-between pb-2", children: [jsx(Checkbox, { id: "facet_".concat(label).concat(filterDisplayValue), "data-transaction-name": "facet - ".concat(label), checked: checked, onChange: function () { return (checked ? onRemove(value) : onSelect(value)); }, label: filterDisplayValue }), jsx(Copy, { as: COPY_TAG.SPAN, size: COPY_SIZE.SMALL, children: option.count.toLocaleString('en') })] }, filterDisplayValue));
1093
+ })] }), showMore && (jsx(Button, { size: BTN_SIZES.SMALL, variant: BTN_VARIANTS.TERTIARY, onClick: onMoreClick, "aria-label": "Show more options", children: "+ More" }))] }));
1094
+ }
1095
+ MultiCheckboxFacet.displayName = 'MultiCheckboxFacet';
1096
+
1097
+ export { BTN_SIZES, BTN_TYPES, BTN_VARIANTS, Blockquote, Button, COPY_ALIGN, COPY_CONTEXTUAL, COPY_SIZE, COPY_TAG, COPY_TRANSFORM, CPL_SPACING, CRL_SIZE, Card, CardVariant, Container, ContentPageLayout, ContentRowsLayout, Copy, FIELD_TYPES, Form, FormField, HEADING_ALIGN, HEADING_TAGS, HEADING_TRANSFORM, Heading, Hr, Icon, Image, Link, List, ListItem, ListTag, Loader, MultiCheckboxFacet, Notice, ResultAsTypes, Search, SingleLinksFacet, SingleSelectFacet, Variants };
package/dist/index.js CHANGED
@@ -6,6 +6,12 @@ var react = require('@iconify/react');
6
6
  var React = require('react');
7
7
  var HoverVideoPlayer = require('react-hover-video-player');
8
8
  var reactHookForm = require('react-hook-form');
9
+ require('@elastic/eui/dist/eui_theme_light.css');
10
+ var ElasticSearchAPIConnector = require('@elastic/search-ui-elasticsearch-connector');
11
+ var reactSearchUi = require('@elastic/react-search-ui');
12
+ require('@elastic/react-search-ui-views/lib/styles/styles.css');
13
+ var RCPagination = require('rc-pagination');
14
+ var enUsLocale = require('rc-pagination/lib/locale/en_US');
9
15
 
10
16
  var Blockquote = function (_a) {
11
17
  var text = _a.text, citation = _a.citation, className = _a.className, citationAttribute = _a.citationAttribute, _b = _a.showIcon, showIcon = _b === void 0 ? true : _b;
@@ -797,6 +803,299 @@ exports.CardVariant = void 0;
797
803
  CardVariant["VIDEO"] = "video";
798
804
  })(exports.CardVariant || (exports.CardVariant = {}));
799
805
 
806
+ exports.ResultAsTypes = void 0;
807
+ (function (ResultAsTypes) {
808
+ ResultAsTypes["cardBasic"] = "cardBasic";
809
+ ResultAsTypes["cardMedia"] = "cardMedia";
810
+ ResultAsTypes["cardVideo"] = "cardVideo";
811
+ })(exports.ResultAsTypes || (exports.ResultAsTypes = {}));
812
+
813
+ function Sorting(_a) {
814
+ var className = _a.className, label = _a.label, onChange = _a.onChange, options = _a.options;
815
+ return (jsxRuntime.jsxs("div", { className: cx('m-0 p-0 mb-2 border-none', className), children: [jsxRuntime.jsx(Label, { className: "text-sm", transform: exports.COPY_TRANSFORM.UPPERCASE, children: label }), jsxRuntime.jsx(FormSelect, { id: label || 'Sorting', options: options, onChange: function (o) { return onChange(o.target.value); } })] }));
816
+ }
817
+ Sorting.displayName = 'Sorting';
818
+
819
+ // import { BTN_SIZES, BTN_VARIANTS, Button, Icon } from '../../../../components';
820
+ // const itemRender = (current: number, type: string, element: React.ReactNode, ...rest: any) => {
821
+ // console.log('itemRender', rest);
822
+ // if (type === 'page') {
823
+ // return <a href={`#${current}`}>{current}</a>;
824
+ // }
825
+ // if (type === 'prev') {
826
+ // return <Button variant={BTN_VARIANTS.PRIMARY} size={BTN_SIZES.SMALL}><Icon name="mdi:chevron-left" /></Button>;
827
+ // }
828
+ // if (type === 'next') {
829
+ // return <button type="button">Next</button>;
830
+ // }
831
+ // return element;
832
+ // };
833
+ function Paging(_a) {
834
+ var className = _a.className, current = _a.current, _b = _a.resultsPerPage, resultsPerPage = _b === void 0 ? 10 : _b, onChange = _a.onChange, totalPages = _a.totalPages, rest = __rest(_a, ["className", "current", "resultsPerPage", "onChange", "totalPages"]);
835
+ return (jsxRuntime.jsx(RCPagination, __assign({ current: current, onChange: onChange, simple: true, pageSize: resultsPerPage, total: totalPages * resultsPerPage, className: cx('m-0 p-0 list-none text-white', className), locale: enUsLocale, prevIcon: jsxRuntime.jsx(Icon, { name: "mdi:chevron-left" }), nextIcon: jsxRuntime.jsx(Icon, { name: "mdi:chevron-right" }) }, rest)));
836
+ }
837
+ Paging.displayName = 'Paging';
838
+
839
+ function ResultsPerPage(_a) {
840
+ var className = _a.className, onChange = _a.onChange, options = _a.options, label = _a.label, rest = __rest(_a, ["className", "onChange", "options", "label"]);
841
+ // Return nothing without options.
842
+ if (!options) {
843
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
844
+ }
845
+ return (jsxRuntime.jsxs("div", __assign({ className: cx('m-0 p-0 border-none flex items-center justify-end', className) }, rest, { children: [jsxRuntime.jsx(Label, { className: "text-sm mr-2", transform: exports.COPY_TRANSFORM.UPPERCASE, children: "Show" }), jsxRuntime.jsx(FormSelect, { id: label || 'ResultsPerPage', options: options.map(function (option) { return ({ label: option.toString(), value: option }); }), onChange: function (o) { return onChange(o.target.value); }, className: 'min-w-20' })] })));
846
+ }
847
+ ResultsPerPage.displayName = 'ResultsPerPage';
848
+
849
+ function PagingInfo(_a) {
850
+ var className = _a.className, end = _a.end, searchTerm = _a.searchTerm, start = _a.start, totalResults = _a.totalResults, rest = __rest(_a, ["className", "end", "searchTerm", "start", "totalResults"]);
851
+ return (jsxRuntime.jsxs("div", __assign({ className: cx("m-0 p-0", className) }, rest, { children: ["Showing", " ", jsxRuntime.jsxs("strong", { children: [start, " - ", end] }), " ", "out of ", jsxRuntime.jsx("strong", { children: totalResults }), searchTerm && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [" ", "for: ", jsxRuntime.jsx("em", { children: searchTerm })] }))] })));
852
+ }
853
+ PagingInfo.displayName = 'PagingInfo';
854
+
855
+ function SearchBox(_a) {
856
+ var className = _a.className, onChange = _a.onChange, onSubmit = _a.onSubmit, rest = __rest(_a, ["className", "onChange", "onSubmit"]);
857
+ console.log('SearchBox: rest', rest);
858
+ return (jsxRuntime.jsx("div", { className: cx('m-0', className), children: jsxRuntime.jsxs("form", { onSubmit: function (e) { return onSubmit(e); }, className: "flex items-center", children: [jsxRuntime.jsx("div", { className: "flex-1", children: jsxRuntime.jsx(TextInput, { name: "SearchBoxInput", type: InputType.TEXT, placeholder: "Search now....", onChange: function (e) {
859
+ var _a;
860
+ onChange((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value);
861
+ } }) }), jsxRuntime.jsx("div", { className: "pl-2", children: jsxRuntime.jsx(Button, { type: exports.BTN_TYPES.SUBMIT, variant: exports.BTN_VARIANTS.PRIMARY, children: "Search" }) })] }) }));
862
+ }
863
+ SearchBox.displayName = 'SearchBox';
864
+
865
+ // import Sidebar from "../Sidebar";
866
+ function Layout(_a) {
867
+ var className = _a.className, children = _a.children, header = _a.header, bodyContent = _a.bodyContent, bodyFooter = _a.bodyFooter, bodyHeader = _a.bodyHeader, sideContent = _a.sideContent;
868
+ var sidebarClasses = cx('hidden md:block fixed md:relative w-full h-full left-0 md:left-auto top-0 md:top-auto px-2 pb-4 md:pt-6 md:px-6 md:pb-auto md:pl-0', { 'hidden md:hidden': !sideContent });
869
+ return (jsxRuntime.jsxs("div", { className: cx('w-full flex flex-col', className), children: [jsxRuntime.jsx("div", { className: "m-auto p-4 md:py-0 md:px-6 max-w-7xl w-full", children: header }), jsxRuntime.jsxs("div", { className: cx('md:grid m-auto p-4 md:py-0 md:px-6 max-w-7xl w-full', {
870
+ 'md:grid-cols-search-layout': !sideContent,
871
+ 'md:grid-cols-search-layout-with-sidebar': sideContent,
872
+ }), children: [jsxRuntime.jsx("div", { className: sidebarClasses, children: sideContent }), jsxRuntime.jsxs("div", { className: cx('p-0 pt-2 md:p-6 md:pr-0', {
873
+ 'md:pl-0': !sideContent,
874
+ }), children: [jsxRuntime.jsx("div", { className: "flex items-center justify-between", children: bodyHeader }), jsxRuntime.jsx("div", { className: "relative", children: children || bodyContent }), jsxRuntime.jsx("div", { className: "flex items-center justify-around", children: bodyFooter })] })] })] }));
875
+ }
876
+ Layout.displayName = 'Layout';
877
+
878
+ function Results(_a) {
879
+ var children = _a.children, className = _a.className, rest = __rest(_a, ["children", "className"]);
880
+ console.log('Results: rest', rest);
881
+ return (jsxRuntime.jsx("ul", __assign({ className: cx('relative grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-4', className) }, rest, { children: children })));
882
+ }
883
+ Results.displayName = 'Results';
884
+
885
+ /*
886
+ Since Filter Values come in many different varieties, this helper
887
+ encapsulates the logic for determining how to show the label of that
888
+ filter in the UI.
889
+ */
890
+ function getFilterValueDisplay(filterValue) {
891
+ if (filterValue === undefined || filterValue === null)
892
+ return '';
893
+ if (Object.prototype.hasOwnProperty.call(filterValue, 'name'))
894
+ return filterValue.name;
895
+ return String(filterValue);
896
+ }
897
+
898
+ function getFieldType(object, type) {
899
+ if (object)
900
+ return object[type];
901
+ }
902
+ function getRaw(object) {
903
+ return getFieldType(object, 'raw');
904
+ }
905
+ function getSnippet(object) {
906
+ return getFieldType(object, 'snippet');
907
+ }
908
+ function htmlEscape(str) {
909
+ if (!str)
910
+ return '';
911
+ return String(str)
912
+ .replace(/&/g, '&amp;')
913
+ .replace(/"/g, '&quot;')
914
+ .replace(/'/g, '&#39;')
915
+ .replace(/</g, '&lt;')
916
+ .replace(/>/g, '&gt;');
917
+ }
918
+ function getEscapedField(maybeObject) {
919
+ // Fallback to raw values here, because non-string fields
920
+ // will not have a snippet fallback. Raw values MUST be html escaped.
921
+ var safeField = getSnippet(maybeObject) || htmlEscape(getRaw(maybeObject));
922
+ return Array.isArray(safeField) ? safeField.join(', ') : safeField;
923
+ }
924
+
925
+ function Result(_a) {
926
+ var className = _a.className, result = _a.result,
927
+ // onClickLink,
928
+ as = _a.as, _b = _a.cardMap, cardMap = _b === void 0 ? {
929
+ idField: { fieldName: 'uuid' },
930
+ titleField: { fieldName: 'title' },
931
+ descriptionField: { fieldName: 'description' },
932
+ imageField: { fieldName: 'image' },
933
+ } : _b;
934
+ console.log('Result', cardMap);
935
+ // Pass fields into the relevant Card.
936
+ // const fields: any = formatResult(result);
937
+ var idField = cardMap.idField, titleField = cardMap.titleField, imageField = cardMap.imageField, videoField = cardMap.videoField, descriptionField = cardMap.descriptionField, metaDataFields = cardMap.metaDataFields, cardProps = cardMap.cardProps, rest = __rest(cardMap, ["idField", "titleField", "imageField", "videoField", "descriptionField", "metaDataFields", "cardProps"]);
938
+ console.log('rest', rest);
939
+ console.log('cardProps', cardProps);
940
+ var id = idField && getEscapedField(result[idField.fieldName]);
941
+ var title = titleField && getEscapedField(result[titleField.fieldName]);
942
+ var imageUrl = imageField && getEscapedField(result[imageField.fieldName]);
943
+ var videoUrl = videoField && videoField.formatter
944
+ ? videoField.formatter(getEscapedField(result[videoField.fieldName]))
945
+ : videoField && getEscapedField(result[videoField.fieldName]);
946
+ var description = descriptionField && getEscapedField(result[descriptionField.fieldName]);
947
+ var metaData = metaDataFields &&
948
+ metaDataFields.map(function (field) {
949
+ var value = getEscapedField(result[field.fieldName]);
950
+ if (field.formatter && typeof field.formatter === 'function') {
951
+ return field.formatter(value);
952
+ }
953
+ });
954
+ // console.log('Result metaData:', metaData);
955
+ // console.log('Result', cardMap);
956
+ var resultView = function () {
957
+ var imageData = {
958
+ src: imageUrl || '',
959
+ alt: title || '',
960
+ title: title || '',
961
+ width: 500,
962
+ height: 500,
963
+ };
964
+ var cardData = {
965
+ id: id,
966
+ title: title,
967
+ image: imageData,
968
+ video: videoUrl,
969
+ description: description,
970
+ metaData: metaData,
971
+ actions: cardMap.actionsData,
972
+ onClick: cardMap.onClickLink,
973
+ };
974
+ switch (as) {
975
+ case exports.ResultAsTypes.cardMedia:
976
+ return jsxRuntime.jsx(Card, __assign({ variant: exports.CardVariant.MEDIA, data: cardData }, cardProps));
977
+ case exports.ResultAsTypes.cardVideo:
978
+ return jsxRuntime.jsx(Card, __assign({ variant: exports.CardVariant.VIDEO, data: cardData }, cardProps, { isMuted: false }));
979
+ default:
980
+ return jsxRuntime.jsx(Card, __assign({ variant: exports.CardVariant.BASIC, data: cardData }, cardProps));
981
+ }
982
+ };
983
+ return jsxRuntime.jsx("li", { className: cx('relative', className), children: resultView() });
984
+ }
985
+ Result.displayName = 'Result';
986
+
987
+ function Search(_a) {
988
+ var _b = _a.showOptions, showOptions = _b === void 0 ? [10, 25, 50] : _b, sortOptions = _a.sortOptions, _c = _a.resultAs, resultAs = _c === void 0 ? exports.ResultAsTypes.cardBasic : _c, ResultFieldMap = _a.ResultFieldMap, _d = _a.config, config = _d === void 0 ? {
989
+ filters: [],
990
+ facets: {},
991
+ searchFields: {},
992
+ resultsFields: {},
993
+ } : _d, _e = _a.facetDisplay, facetDisplay = _e === void 0 ? [] : _e, _f = _a.noSidebar, noSidebar = _f === void 0 ? false : _f, customConnector = _a.customConnector;
994
+ var connector = React.useMemo(function () {
995
+ var defaultConnector = {
996
+ host: process.env.REACT_ELASTICSEARCH_HOST,
997
+ index: process.env.REACT_ELASTICSEARCH_INDEX || '',
998
+ apiKey: process.env.REACT_ELASTICSEARCH_API_KEY,
999
+ };
1000
+ return new ElasticSearchAPIConnector(customConnector || defaultConnector);
1001
+ }, []);
1002
+ var searchConfig = React.useMemo(function () {
1003
+ return {
1004
+ debug: true,
1005
+ alwaysSearchOnInitialLoad: true,
1006
+ apiConnector: connector,
1007
+ hasA11yNotifications: true,
1008
+ searchQuery: {
1009
+ filters: config.filters || [],
1010
+ search_fields: config.searchFields || {},
1011
+ result_fields: config.resultsFields || {},
1012
+ // disjunctiveFacets: ['created'], // Make certain Facets into OR instead of AND
1013
+ facets: config.facets,
1014
+ },
1015
+ autocompleteQuery: {
1016
+ results: {
1017
+ search_fields: {
1018
+ title: {},
1019
+ description: {},
1020
+ },
1021
+ resultsPerPage: 5,
1022
+ result_fields: {
1023
+ title: {
1024
+ snippet: {
1025
+ size: 100,
1026
+ fallback: true,
1027
+ },
1028
+ },
1029
+ },
1030
+ },
1031
+ // TODO: Implement suggestions
1032
+ // suggestions: {
1033
+ // types: {
1034
+ // documents: {
1035
+ // fields: ['title'],
1036
+ // },
1037
+ // },
1038
+ // size: 4,
1039
+ // },
1040
+ },
1041
+ };
1042
+ }, [config]);
1043
+ return (jsxRuntime.jsx(reactSearchUi.SearchProvider, { config: searchConfig, children: jsxRuntime.jsx(reactSearchUi.WithSearch, { mapContextToProps: function (_a) {
1044
+ var wasSearched = _a.wasSearched;
1045
+ return ({
1046
+ wasSearched: wasSearched,
1047
+ });
1048
+ }, children: function (_a) {
1049
+ var wasSearched = _a.wasSearched;
1050
+ return (jsxRuntime.jsx("div", { className: "App", children: jsxRuntime.jsx(reactSearchUi.ErrorBoundary, { children: jsxRuntime.jsx(Layout, { header: jsxRuntime.jsx(reactSearchUi.SearchBox, { view: SearchBox }), sideContent: !noSidebar && (jsxRuntime.jsxs("div", { children: [wasSearched && jsxRuntime.jsx(reactSearchUi.Sorting, { label: 'Sort by', sortOptions: sortOptions, view: Sorting }), facetDisplay.map(function (_a) {
1051
+ var field = _a.field, label = _a.label, view = _a.view;
1052
+ return (jsxRuntime.jsx(reactSearchUi.Facet, { field: field, label: label, view: view }, field));
1053
+ })] })), bodyContent: jsxRuntime.jsx(reactSearchUi.Results, { shouldTrackClickThrough: false, resultView: function (props) { return jsxRuntime.jsx(Result, __assign({}, props, { as: resultAs, cardMap: ResultFieldMap })); }, className: "list-none p-0 m-0", view: Results }), bodyHeader: jsxRuntime.jsxs(React.Fragment, { children: [wasSearched && jsxRuntime.jsx(reactSearchUi.PagingInfo, { view: PagingInfo }), wasSearched && jsxRuntime.jsx(reactSearchUi.ResultsPerPage, { view: ResultsPerPage, options: showOptions })] }), bodyFooter: jsxRuntime.jsx(reactSearchUi.Paging, { view: Paging }), noSidebar: noSidebar }) }) }));
1054
+ } }) }));
1055
+ }
1056
+
1057
+ function SingleSelectFacet(_a) {
1058
+ var className = _a.className, label = _a.label, onChange = _a.onChange, options = _a.options;
1059
+ var selectBoxOptions = options.map(function (option) {
1060
+ return {
1061
+ value: option.value,
1062
+ label: "".concat(option.value, " (").concat(option.count, ")"),
1063
+ };
1064
+ });
1065
+ return (jsxRuntime.jsxs("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: [jsxRuntime.jsx(Label, { className: "text-sm", transform: exports.COPY_TRANSFORM.UPPERCASE, children: label }), jsxRuntime.jsx(FormSelect, { id: label, options: selectBoxOptions, onChange: function (o) { return onChange(o.target.value); } })] }));
1066
+ }
1067
+ SingleSelectFacet.displayName = 'SingleSelectFacet';
1068
+
1069
+ function SingleLinksFacet(_a) {
1070
+ var className = _a.className, label = _a.label, onRemove = _a.onRemove, onSelect = _a.onSelect, options = _a.options;
1071
+ var value = options.filter(function (o) { return o.selected; }).map(function (o) { return o.value; })[0];
1072
+ return (jsxRuntime.jsx("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Label, { className: "text-sm", transform: exports.COPY_TRANSFORM.UPPERCASE, children: label }), jsxRuntime.jsxs("ul", { className: "ul list-none p-0", children: [value && (jsxRuntime.jsxs("li", { className: "m-0 flex justify-between items-center flex-1", children: [getFilterValueDisplay(value), jsxRuntime.jsx("span", { className: "ml-1 px-1", children: jsxRuntime.jsx(Button, { onClick: function () { return onRemove(value); }, children: jsxRuntime.jsx(Icon, { name: "mdi:close" }) }) })] })), !value &&
1073
+ options.map(function (option) {
1074
+ var filterValue = getFilterValueDisplay(option.value);
1075
+ return (jsxRuntime.jsxs("li", { className: "m-0 flex justify-between", children: [jsxRuntime.jsx("a", { className: "no-underline text-sm visited:text-body-text", "data-transaction-name": "facet - ".concat(label), href: "/", onClick: function (e) {
1076
+ e.preventDefault();
1077
+ onSelect(option.value);
1078
+ }, children: jsxRuntime.jsx("label", { className: "label pl-0 leading-none text-sm", children: filterValue }) }), jsxRuntime.jsx(Copy, { as: exports.COPY_TAG.SPAN, size: exports.COPY_SIZE.SMALL, children: option.count.toLocaleString('en') })] }, filterValue));
1079
+ })] })] }) }));
1080
+ }
1081
+ SingleLinksFacet.displayName = 'SingleLinksFacet';
1082
+
1083
+ function MultiCheckboxFacet(_a) {
1084
+ var className = _a.className, label = _a.label, onMoreClick = _a.onMoreClick, onRemove = _a.onRemove, onSelect = _a.onSelect, options = _a.options, showMore = _a.showMore, showSearch = _a.showSearch, onSearch = _a.onSearch, searchPlaceholder = _a.searchPlaceholder;
1085
+ if (!options) {
1086
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: "Options required" });
1087
+ }
1088
+ return (jsxRuntime.jsxs("fieldset", { className: cx('m-0 p-0 mt-4 mb-2 border-none', className), children: [jsxRuntime.jsx(Label, { className: "text-sm", transform: exports.COPY_TRANSFORM.UPPERCASE, children: label }), showSearch && (jsxRuntime.jsx("div", { className: "mt-1", children: jsxRuntime.jsx(TextInput, { type: InputType.SEARCH, placeholder: searchPlaceholder || 'Search', onChange: function (e) {
1089
+ onSearch(e.target.value);
1090
+ } }) })), jsxRuntime.jsxs("div", { className: "my-4", children: [(options === null || options === void 0 ? void 0 : options.length) < 1 && jsxRuntime.jsx("div", { children: "No matching options" }), options === null || options === void 0 ? void 0 : options.map(function (option) {
1091
+ var checked = option.selected;
1092
+ var value = option.value;
1093
+ var filterDisplayValue = getFilterValueDisplay(value);
1094
+ return (jsxRuntime.jsxs("div", { className: "flex justify-between pb-2", children: [jsxRuntime.jsx(Checkbox, { id: "facet_".concat(label).concat(filterDisplayValue), "data-transaction-name": "facet - ".concat(label), checked: checked, onChange: function () { return (checked ? onRemove(value) : onSelect(value)); }, label: filterDisplayValue }), jsxRuntime.jsx(Copy, { as: exports.COPY_TAG.SPAN, size: exports.COPY_SIZE.SMALL, children: option.count.toLocaleString('en') })] }, filterDisplayValue));
1095
+ })] }), showMore && (jsxRuntime.jsx(Button, { size: exports.BTN_SIZES.SMALL, variant: exports.BTN_VARIANTS.TERTIARY, onClick: onMoreClick, "aria-label": "Show more options", children: "+ More" }))] }));
1096
+ }
1097
+ MultiCheckboxFacet.displayName = 'MultiCheckboxFacet';
1098
+
800
1099
  exports.Blockquote = Blockquote;
801
1100
  exports.Button = Button;
802
1101
  exports.Card = Card;
@@ -814,4 +1113,8 @@ exports.Link = Link;
814
1113
  exports.List = List;
815
1114
  exports.ListItem = ListItem;
816
1115
  exports.Loader = Loader;
1116
+ exports.MultiCheckboxFacet = MultiCheckboxFacet;
817
1117
  exports.Notice = Notice;
1118
+ exports.Search = Search;
1119
+ exports.SingleLinksFacet = SingleLinksFacet;
1120
+ exports.SingleSelectFacet = SingleSelectFacet;
@@ -2,4 +2,4 @@ import React from 'react';
2
2
  import '@elastic/eui/dist/eui_theme_light.css';
3
3
  import '@elastic/react-search-ui-views/lib/styles/styles.css';
4
4
  import { Props } from './Search.types';
5
- export default function Search({ showOptions, resultAs, ResultFieldMap, config, facetDisplay, noSidebar, }: Props): React.ReactElement;
5
+ export default function Search({ showOptions, sortOptions, resultAs, ResultFieldMap, config, facetDisplay, noSidebar, customConnector, }: Props): React.ReactElement;
@@ -13,6 +13,7 @@ interface FacetDisplay {
13
13
  export interface Props {
14
14
  custom: string;
15
15
  showOptions: number[];
16
+ sortOptions?: any[];
16
17
  resultAs: ResultAsTypes;
17
18
  ResultFieldMap?: cardMap;
18
19
  config: {
@@ -23,5 +24,10 @@ export interface Props {
23
24
  };
24
25
  facetDisplay: FacetDisplay[];
25
26
  noSidebar: boolean;
27
+ customConnector?: {
28
+ host: string;
29
+ index: string;
30
+ apiKey: string;
31
+ };
26
32
  }
27
33
  export {};
@@ -0,0 +1,6 @@
1
+ export { default as Search } from './Search';
2
+ export { default as SingleSelectFacet } from './Search/views/SingleSelectFacet';
3
+ export { default as SingleLinksFacet } from './Search/views/SingleLinksFacet';
4
+ export { default as MultiCheckboxFacet } from './Search/views/MultiCheckboxFacet';
5
+ export { ResultAsTypes } from './Search/Search.types';
6
+ export type { Props as SearchProps } from './Search/Search.types';
@@ -1 +1,2 @@
1
1
  export * from './components';
2
+ export * from './features';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4alldigital/foundation-ui--gamma",
3
- "version": "1.31.8",
3
+ "version": "1.31.10",
4
4
  "description": "Foundation UI Component library with GAMMA theme. ",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -25,7 +25,7 @@
25
25
  "publishConfig": {
26
26
  "access": "public"
27
27
  },
28
- "gitHead": "c888df3e4af003fe6acec10ccc9b5eae755eab5d",
28
+ "gitHead": "c1252ee35b5852b5399b0aaae4187eebdeeeaa92",
29
29
  "dependencies": {
30
30
  "@elastic/datemath": "^5.0.3",
31
31
  "@elastic/eui": "^94.1.0",