@constructor-io/constructorio-ui-autocomplete 1.1.6

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.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -0
  3. package/lib/.DS_Store +0 -0
  4. package/lib/cjs/components/Autocomplete/Autocomplete.css +110 -0
  5. package/lib/cjs/components/Autocomplete/AutocompleteResults/AutocompleteResults.js +22 -0
  6. package/lib/cjs/components/Autocomplete/AutocompleteResults/AutocompleteResults.js.map +1 -0
  7. package/lib/cjs/components/Autocomplete/CioAutocomplete/CioAutocomplete.js +18 -0
  8. package/lib/cjs/components/Autocomplete/CioAutocomplete/CioAutocomplete.js.map +1 -0
  9. package/lib/cjs/components/Autocomplete/CioAutocompleteProvider.js +15 -0
  10. package/lib/cjs/components/Autocomplete/CioAutocompleteProvider.js.map +1 -0
  11. package/lib/cjs/components/Autocomplete/SearchInput/SearchInput.js +30 -0
  12. package/lib/cjs/components/Autocomplete/SearchInput/SearchInput.js.map +1 -0
  13. package/lib/cjs/components/Autocomplete/SectionItem/SectionItem.js +22 -0
  14. package/lib/cjs/components/Autocomplete/SectionItem/SectionItem.js.map +1 -0
  15. package/lib/cjs/components/Autocomplete/SectionItemsList/SectionItemsList.js +22 -0
  16. package/lib/cjs/components/Autocomplete/SectionItemsList/SectionItemsList.js.map +1 -0
  17. package/lib/cjs/constants.js +163 -0
  18. package/lib/cjs/constants.js.map +1 -0
  19. package/lib/cjs/hooks/useCioAutocomplete.js +107 -0
  20. package/lib/cjs/hooks/useCioAutocomplete.js.map +1 -0
  21. package/lib/cjs/hooks/useCioClient.js +22 -0
  22. package/lib/cjs/hooks/useCioClient.js.map +1 -0
  23. package/lib/cjs/hooks/useDebounce.js +24 -0
  24. package/lib/cjs/hooks/useDebounce.js.map +1 -0
  25. package/lib/cjs/hooks/useDebouncedFetchSections.js +35 -0
  26. package/lib/cjs/hooks/useDebouncedFetchSections.js.map +1 -0
  27. package/lib/cjs/hooks/useDownShift.js +37 -0
  28. package/lib/cjs/hooks/useDownShift.js.map +1 -0
  29. package/lib/cjs/hooks/useFetchRecommendationPod.js +30 -0
  30. package/lib/cjs/hooks/useFetchRecommendationPod.js.map +1 -0
  31. package/lib/cjs/hooks/usePrevious.js +12 -0
  32. package/lib/cjs/hooks/usePrevious.js.map +1 -0
  33. package/lib/cjs/index.js +16 -0
  34. package/lib/cjs/index.js.map +1 -0
  35. package/lib/cjs/stories/Autocomplete/argTypes.js +65 -0
  36. package/lib/cjs/stories/Autocomplete/argTypes.js.map +1 -0
  37. package/lib/cjs/typeGuards.js +10 -0
  38. package/lib/cjs/typeGuards.js.map +1 -0
  39. package/lib/cjs/types.js +3 -0
  40. package/lib/cjs/types.js.map +1 -0
  41. package/lib/cjs/utils.js +72 -0
  42. package/lib/cjs/utils.js.map +1 -0
  43. package/lib/mjs/components/Autocomplete/Autocomplete.css +110 -0
  44. package/lib/mjs/components/Autocomplete/AutocompleteResults/AutocompleteResults.js +21 -0
  45. package/lib/mjs/components/Autocomplete/AutocompleteResults/AutocompleteResults.js.map +1 -0
  46. package/lib/mjs/components/Autocomplete/CioAutocomplete/CioAutocomplete.js +15 -0
  47. package/lib/mjs/components/Autocomplete/CioAutocomplete/CioAutocomplete.js.map +1 -0
  48. package/lib/mjs/components/Autocomplete/CioAutocompleteProvider.js +10 -0
  49. package/lib/mjs/components/Autocomplete/CioAutocompleteProvider.js.map +1 -0
  50. package/lib/mjs/components/Autocomplete/SearchInput/SearchInput.js +27 -0
  51. package/lib/mjs/components/Autocomplete/SearchInput/SearchInput.js.map +1 -0
  52. package/lib/mjs/components/Autocomplete/SectionItem/SectionItem.js +18 -0
  53. package/lib/mjs/components/Autocomplete/SectionItem/SectionItem.js.map +1 -0
  54. package/lib/mjs/components/Autocomplete/SectionItemsList/SectionItemsList.js +15 -0
  55. package/lib/mjs/components/Autocomplete/SectionItemsList/SectionItemsList.js.map +1 -0
  56. package/lib/mjs/constants.js +160 -0
  57. package/lib/mjs/constants.js.map +1 -0
  58. package/lib/mjs/hooks/useCioAutocomplete.js +118 -0
  59. package/lib/mjs/hooks/useCioAutocomplete.js.map +1 -0
  60. package/lib/mjs/hooks/useCioClient.js +20 -0
  61. package/lib/mjs/hooks/useCioClient.js.map +1 -0
  62. package/lib/mjs/hooks/useDebounce.js +22 -0
  63. package/lib/mjs/hooks/useDebounce.js.map +1 -0
  64. package/lib/mjs/hooks/useDebouncedFetchSections.js +41 -0
  65. package/lib/mjs/hooks/useDebouncedFetchSections.js.map +1 -0
  66. package/lib/mjs/hooks/useDownShift.js +33 -0
  67. package/lib/mjs/hooks/useDownShift.js.map +1 -0
  68. package/lib/mjs/hooks/useFetchRecommendationPod.js +27 -0
  69. package/lib/mjs/hooks/useFetchRecommendationPod.js.map +1 -0
  70. package/lib/mjs/hooks/usePrevious.js +10 -0
  71. package/lib/mjs/hooks/usePrevious.js.map +1 -0
  72. package/lib/mjs/index.js +7 -0
  73. package/lib/mjs/index.js.map +1 -0
  74. package/lib/mjs/stories/Autocomplete/argTypes.js +62 -0
  75. package/lib/mjs/stories/Autocomplete/argTypes.js.map +1 -0
  76. package/lib/mjs/typeGuards.js +6 -0
  77. package/lib/mjs/typeGuards.js.map +1 -0
  78. package/lib/mjs/types.js +2 -0
  79. package/lib/mjs/types.js.map +1 -0
  80. package/lib/mjs/utils.js +58 -0
  81. package/lib/mjs/utils.js.map +1 -0
  82. package/lib/types/components/Autocomplete/AutocompleteResults/AutocompleteResults.d.ts +11 -0
  83. package/lib/types/components/Autocomplete/CioAutocomplete/CioAutocomplete.d.ts +3 -0
  84. package/lib/types/components/Autocomplete/CioAutocompleteProvider.d.ts +28 -0
  85. package/lib/types/components/Autocomplete/SearchInput/SearchInput.d.ts +7 -0
  86. package/lib/types/components/Autocomplete/SectionItem/SectionItem.d.ts +10 -0
  87. package/lib/types/components/Autocomplete/SectionItemsList/SectionItemsList.d.ts +12 -0
  88. package/lib/types/constants.d.ts +23 -0
  89. package/lib/types/hooks/useCioAutocomplete.d.ts +29 -0
  90. package/lib/types/hooks/useCioClient.d.ts +15 -0
  91. package/lib/types/hooks/useDebounce.d.ts +2 -0
  92. package/lib/types/hooks/useDebouncedFetchSections.d.ts +4 -0
  93. package/lib/types/hooks/useDownShift.d.ts +16 -0
  94. package/lib/types/hooks/useFetchRecommendationPod.d.ts +4 -0
  95. package/lib/types/hooks/usePrevious.d.ts +2 -0
  96. package/lib/types/index.d.ts +6 -0
  97. package/lib/types/stories/Autocomplete/argTypes.d.ts +62 -0
  98. package/lib/types/typeGuards.d.ts +2 -0
  99. package/lib/types/types.d.ts +131 -0
  100. package/lib/types/utils.d.ts +24 -0
  101. package/package.json +88 -0
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultSections = void 0;
4
+ const react_1 = require("react");
5
+ const useCioClient_1 = require("./useCioClient");
6
+ const useDownShift_1 = require("./useDownShift");
7
+ const useDebouncedFetchSections_1 = require("./useDebouncedFetchSections");
8
+ const useFetchRecommendationPod_1 = require("./useFetchRecommendationPod");
9
+ const usePrevious_1 = require("./usePrevious");
10
+ const utils_1 = require("../utils");
11
+ exports.defaultSections = [
12
+ {
13
+ identifier: 'Search Suggestions',
14
+ type: 'autocomplete'
15
+ },
16
+ {
17
+ identifier: 'Products',
18
+ type: 'autocomplete'
19
+ }
20
+ ];
21
+ const useCioAutocomplete = (options) => {
22
+ const defaultPlaceholder = 'What can we help you find today?';
23
+ const { onSubmit, onChange, openOnFocus, apiKey, cioJsClient, placeholder = defaultPlaceholder, sections = exports.defaultSections, zeroStateSections, autocompleteClassName = 'cio-autocomplete' } = options;
24
+ const [query, setQuery] = (0, react_1.useState)('');
25
+ const previousQuery = (0, usePrevious_1.default)(query);
26
+ const cioClient = (0, useCioClient_1.default)({ apiKey, cioJsClient });
27
+ const zeroStateSectionsActive = !query.length && zeroStateSections;
28
+ let activeSections = zeroStateSectionsActive ? zeroStateSections : sections;
29
+ if (sections && !Array.isArray(sections)) {
30
+ // eslint-disable-next-line
31
+ console.error('useCioAutocomplete expects sections to reference an array of section configuration objects');
32
+ activeSections = [];
33
+ }
34
+ if (zeroStateSections && !Array.isArray(zeroStateSections)) {
35
+ // eslint-disable-next-line
36
+ console.error('useCioAutocomplete expects zeroStateSections to reference an array of section configuration objects');
37
+ activeSections = [];
38
+ }
39
+ const autocompleteSections = activeSections === null || activeSections === void 0 ? void 0 : activeSections.filter((config) => config.type === 'autocomplete' || !config.type);
40
+ const recommendationsSections = activeSections === null || activeSections === void 0 ? void 0 : activeSections.filter((config) => config.type === 'recommendations');
41
+ const autocompleteResults = (0, useDebouncedFetchSections_1.default)(query, cioClient, autocompleteSections);
42
+ const recommendationsResults = (0, useFetchRecommendationPod_1.default)(cioClient, recommendationsSections);
43
+ const sectionResults = Object.assign(Object.assign({}, autocompleteResults), recommendationsResults);
44
+ const activeSectionsWithData = [];
45
+ activeSections === null || activeSections === void 0 ? void 0 : activeSections.forEach((config) => {
46
+ const { identifier, data: customData } = config;
47
+ const data = sectionResults[identifier] || customData;
48
+ if (data && data !== undefined) {
49
+ activeSectionsWithData.push(Object.assign(Object.assign({}, config), { data }));
50
+ }
51
+ });
52
+ const items = [];
53
+ activeSectionsWithData === null || activeSectionsWithData === void 0 ? void 0 : activeSectionsWithData.forEach((config) => {
54
+ if (config === null || config === void 0 ? void 0 : config.data) {
55
+ items.push(...config.data);
56
+ }
57
+ });
58
+ const downshift = (0, useDownShift_1.default)({ setQuery, onChange, items, onSubmit, cioClient, previousQuery });
59
+ const { isOpen, getMenuProps, getLabelProps, openMenu, closeMenu } = downshift;
60
+ return {
61
+ query,
62
+ sections: activeSectionsWithData,
63
+ isOpen: isOpen && (items === null || items === void 0 ? void 0 : items.length) > 0,
64
+ getMenuProps: () => (Object.assign(Object.assign({}, getMenuProps()), { className: 'cio-results', 'data-testid': 'cio-results' })),
65
+ getLabelProps,
66
+ openMenu,
67
+ closeMenu,
68
+ getItemProps: ({ item, index = 0, sectionIdentifier = 'Products' }) => {
69
+ const indexOffset = (0, utils_1.getIndexOffset)({
70
+ activeSections: activeSectionsWithData,
71
+ sectionIdentifier
72
+ });
73
+ const sectionItemTestId = `cio-item-${sectionIdentifier.replace(' ', '')}`;
74
+ return Object.assign(Object.assign({}, downshift.getItemProps({ item, index: index + indexOffset })), { className: `cio-item ${sectionItemTestId}`, 'data-testid': sectionItemTestId });
75
+ },
76
+ getInputProps: () => (Object.assign(Object.assign({}, downshift.getInputProps()), { value: query, onFocus: () => {
77
+ var _a;
78
+ if (options.onFocus) {
79
+ options.onFocus();
80
+ }
81
+ if (zeroStateSectionsActive && openOnFocus !== false) {
82
+ downshift.openMenu();
83
+ }
84
+ if (query === null || query === void 0 ? void 0 : query.length) {
85
+ downshift.openMenu();
86
+ }
87
+ (_a = cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker) === null || _a === void 0 ? void 0 : _a.trackInputFocus();
88
+ }, className: 'cio-input', 'data-testid': 'cio-input', placeholder })),
89
+ getFormProps: () => ({
90
+ onSubmit: (event) => {
91
+ event.preventDefault();
92
+ if (onSubmit) {
93
+ onSubmit({ query });
94
+ }
95
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackSearchSubmit(query, { original_query: query });
96
+ return { query };
97
+ },
98
+ className: 'cio-form',
99
+ 'data-testid': 'cio-form'
100
+ }),
101
+ setQuery,
102
+ cioClient,
103
+ autocompleteClassName
104
+ };
105
+ };
106
+ exports.default = useCioAutocomplete;
107
+ //# sourceMappingURL=useCioAutocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCioAutocomplete.js","sourceRoot":"","sources":["../../../src/hooks/useCioAutocomplete.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,iDAA+D;AAC/D,iDAA0C;AAC1C,2EAAmE;AAOnE,2EAAoE;AACpE,+CAAwC;AACxC,oCAA0C;AAE7B,QAAA,eAAe,GAA2B;IACrD;QACE,UAAU,EAAE,oBAAoB;QAChC,IAAI,EAAE,cAAc;KACrB;IACD;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,cAAc;KACrB;CACF,CAAC;AAIF,MAAM,kBAAkB,GAAG,CAAC,OAAkC,EAAE,EAAE;IAChE,MAAM,kBAAkB,GAAG,kCAAkC,CAAC;IAC9D,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EACN,WAAW,EACX,WAAW,GAAG,kBAAkB,EAChC,QAAQ,GAAG,uBAAe,EAC1B,iBAAiB,EACjB,qBAAqB,GAAG,kBAAkB,EAC3C,GAAG,OAAO,CAAC;IAEZ,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAA,qBAAW,EAAC,KAAK,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAA,sBAAY,EAAC,EAAE,MAAM,EAAE,WAAW,EAAqB,CAAC,CAAC;IAE3E,MAAM,uBAAuB,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC;IAEnE,IAAI,cAAc,GAAG,uBAAuB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5E,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxC,2BAA2B;QAC3B,OAAO,CAAC,KAAK,CACX,4FAA4F,CAC7F,CAAC;QACF,cAAc,GAAG,EAAE,CAAC;KACrB;IAED,IAAI,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;QAC1D,2BAA2B;QAC3B,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,cAAc,GAAG,EAAE,CAAC;KACrB;IAED,MAAM,oBAAoB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CACjD,CAAC,MAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,MAAM,CAAC,IAAI,CACjF,CAAC;IACF,MAAM,uBAAuB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CACpD,CAAC,MAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAC3B,CAAC;IAE3C,MAAM,mBAAmB,GAAG,IAAA,mCAAwB,EAAC,KAAK,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC7F,MAAM,sBAAsB,GAAG,IAAA,mCAAyB,EAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAC7F,MAAM,cAAc,mCAAQ,mBAAmB,GAAK,sBAAsB,CAAE,CAAC;IAE7E,MAAM,sBAAsB,GAA2B,EAAE,CAAC;IAE1D,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACjC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAChD,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;QAEtD,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;YAC9B,sBAAsB,CAAC,IAAI,iCAAM,MAAM,KAAE,IAAI,IAAG,CAAC;SAClD;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,OAAO,CAAC,CAAC,MAA4B,EAAE,EAAE;QAC/D,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;YAChB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,sBAAY,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAClG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAE/E,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,MAAM,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC;QACnC,YAAY,EAAE,GAAG,EAAE,CAAC,iCACf,YAAY,EAAE,KACjB,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,aAAa,IAC5B;QACF,aAAa;QACb,QAAQ;QACR,SAAS;QACT,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,iBAAiB,GAAG,UAAU,EAAE,EAAE,EAAE;YACpE,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC;gBACjC,cAAc,EAAE,sBAAsB;gBACtC,iBAAiB;aAClB,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,YAAY,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YAE3E,uCACK,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,EAAE,CAAC,KAC/D,SAAS,EAAE,YAAY,iBAAiB,EAAE,EAC1C,aAAa,EAAE,iBAAiB,IAChC;QACJ,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,iCAChB,SAAS,CAAC,aAAa,EAAE,KAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;;gBACZ,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,OAAO,CAAC,OAAO,EAAE,CAAC;iBACnB;gBACD,IAAI,uBAAuB,IAAI,WAAW,KAAK,KAAK,EAAE;oBACpD,SAAS,CAAC,QAAQ,EAAE,CAAC;iBACtB;gBACD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;oBACjB,SAAS,CAAC,QAAQ,EAAE,CAAC;iBACtB;gBACD,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,eAAe,EAAE,CAAC;YACxC,CAAC,EACD,SAAS,EAAE,WAAW,EACtB,aAAa,EAAE,WAAW,EAC1B,WAAW,IACX;QACF,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;YACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;iBACrB;gBACD,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC;YACD,SAAS,EAAE,UAAU;YACrB,aAAa,EAAE,UAAU;SAC1B,CAAC;QACF,QAAQ;QACR,SAAS;QACT,qBAAqB;KACtB,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const constructorio_client_javascript_1 = require("@constructor-io/constructorio-client-javascript");
5
+ const useCioClient = ({ apiKey, cioJsClient }) => {
6
+ const [cioClient, setCioClient] = (0, react_1.useState)(cioJsClient);
7
+ (0, react_1.useEffect)(() => {
8
+ if (apiKey && !cioJsClient) {
9
+ const client = new constructorio_client_javascript_1.default({
10
+ apiKey,
11
+ sendTrackingEvents: true
12
+ });
13
+ setCioClient(client);
14
+ }
15
+ else if (cioJsClient) {
16
+ setCioClient(cioJsClient);
17
+ }
18
+ }, [apiKey, cioJsClient]);
19
+ return cioClient;
20
+ };
21
+ exports.default = useCioClient;
22
+ //# sourceMappingURL=useCioClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCioClient.js","sourceRoot":"","sources":["../../../src/hooks/useCioClient.ts"],"names":[],"mappings":";;AAAA,iCAA4C;AAC5C,qGAAkF;AAuBlF,MAAM,YAAY,GAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;IAC7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IAExD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,yCAAmB,CAAC;gBACrC,MAAM;gBACN,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAC;YAEH,YAAY,CAAC,MAAM,CAAC,CAAC;SACtB;aAAM,IAAI,WAAW,EAAE;YACtB,YAAY,CAAC,WAAW,CAAC,CAAC;SAC3B;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1B,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ // adapted from: https://usehooks.com/useDebounce/
5
+ const useDebounce = (value, delay = 250) => {
6
+ // State and setters for debounced value
7
+ const [debouncedValue, setDebouncedValue] = (0, react_1.useState)(value);
8
+ (0, react_1.useEffect)(() => {
9
+ // Update debounced value after delay
10
+ const handler = setTimeout(() => {
11
+ setDebouncedValue(value);
12
+ }, delay);
13
+ // Cancel the timeout if value changes (also on delay change or unmount)
14
+ // This is how we prevent debounced value from updating if value is changed ...
15
+ // .. within the delay period. Timeout gets cleared and restarted.
16
+ return () => {
17
+ clearTimeout(handler);
18
+ };
19
+ }, [value, delay] // Only re-call effect if value or delay changes
20
+ );
21
+ return debouncedValue;
22
+ };
23
+ exports.default = useDebounce;
24
+ //# sourceMappingURL=useDebounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../../src/hooks/useDebounce.ts"],"names":[],"mappings":";;AAAA,iCAA4C;AAE5C,kDAAkD;AAClD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE;IACjD,wCAAwC;IACxC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5D,IAAA,iBAAS,EACP,GAAG,EAAE;QACH,qCAAqC;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,wEAAwE;QACxE,+EAA+E;QAC/E,kEAAkE;QAClE,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,gDAAgD;KAChE,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const useDebounce_1 = require("./useDebounce");
5
+ const autocompleteParameters = {
6
+ resultsPerSection: {}
7
+ // numResults: 8,
8
+ // hiddenFields: [],
9
+ // filters: {},
10
+ // variationsMap: {}
11
+ };
12
+ const useDebouncedFetchSection = (query, cioClient, autocompleteSections) => {
13
+ const [sectionsData, setSectionsData] = (0, react_1.useState)({});
14
+ const debouncedSearchTerm = (0, useDebounce_1.default)(query);
15
+ if (autocompleteSections) {
16
+ autocompleteParameters.resultsPerSection = autocompleteSections.reduce((acc, sectionConfig) => (Object.assign(Object.assign({}, acc), { [sectionConfig.identifier]: (sectionConfig === null || sectionConfig === void 0 ? void 0 : sectionConfig.numResults) || 8 })), {});
17
+ }
18
+ (0, react_1.useEffect)(() => {
19
+ if (debouncedSearchTerm) {
20
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.autocomplete.getAutocompleteResults(debouncedSearchTerm, autocompleteParameters).then((response) => {
21
+ const newSectionsData = {};
22
+ Object.keys(response.sections).forEach((section) => {
23
+ newSectionsData[section] = response.sections[section].map((item) => (Object.assign(Object.assign({}, item), { section })));
24
+ });
25
+ setSectionsData(newSectionsData);
26
+ });
27
+ }
28
+ else if (!debouncedSearchTerm) {
29
+ setSectionsData({});
30
+ }
31
+ }, [debouncedSearchTerm, cioClient]);
32
+ return sectionsData;
33
+ };
34
+ exports.default = useDebouncedFetchSection;
35
+ //# sourceMappingURL=useDebouncedFetchSections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebouncedFetchSections.js","sourceRoot":"","sources":["../../../src/hooks/useDebouncedFetchSections.ts"],"names":[],"mappings":";;AAAA,iCAA4C;AAE5C,+CAAwC;AAaxC,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB,EAAE,EAAE;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,eAAe;IACf,oBAAoB;CACM,CAAC;AAE7B,MAAM,wBAAwB,GAAG,CAC/B,KAAa,EACb,SAA+B,EAC/B,oBAA6C,EAC7C,EAAE;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAA6B,EAAE,CAAC,CAAC;IACjF,MAAM,mBAAmB,GAAG,IAAA,qBAAW,EAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,oBAAoB,EAAE;QACxB,sBAAsB,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CACpE,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,iCACnB,GAAG,KACN,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,KAAI,CAAC,IAC1D,EACF,EAAE,CACH,CAAC;KACH;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,mBAAmB,EAAE;YACvB,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,CACpB,sBAAsB,CAAC,mBAAmB,EAAE,sBAAsB,EAClE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,MAAM,eAAe,GAA+B,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE;oBACzD,eAAe,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAC/D,IAAI,KACP,OAAO,IACP,CAAC,CAAC;gBACN,CAAC,CAAC,CAAC;gBACH,eAAe,CAAC,eAAe,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;SACN;aAAM,IAAI,CAAC,mBAAmB,EAAE;YAC/B,eAAe,CAAC,EAAE,CAAC,CAAC;SACrB;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;IAErC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const downshift_1 = require("downshift");
5
+ let idCounter = 0;
6
+ const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = '', onChange }) => (0, downshift_1.useCombobox)({
7
+ id: `cio-autocomplete-${idCounter++}`,
8
+ items,
9
+ itemToString: (item) => (item === null || item === void 0 ? void 0 : item.value) || '',
10
+ onInputValueChange: ({ inputValue = '' }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
11
+ setQuery(inputValue);
12
+ if (onChange) {
13
+ onChange(inputValue);
14
+ }
15
+ }),
16
+ onSelectedItemChange({ selectedItem }) {
17
+ var _a;
18
+ if (selectedItem) {
19
+ setQuery(selectedItem.value || '');
20
+ if (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value) {
21
+ if (onSubmit)
22
+ onSubmit({ item: selectedItem, originalQuery: previousQuery });
23
+ if (!((_a = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.data) === null || _a === void 0 ? void 0 : _a.url)) {
24
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackSearchSubmit(selectedItem.value, {
25
+ original_query: previousQuery
26
+ });
27
+ }
28
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackAutocompleteSelect(selectedItem.value, {
29
+ original_query: previousQuery,
30
+ section: selectedItem.section
31
+ });
32
+ }
33
+ }
34
+ }
35
+ });
36
+ exports.default = useDownShift;
37
+ //# sourceMappingURL=useDownShift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDownShift.js","sourceRoot":"","sources":["../../../src/hooks/useDownShift.ts"],"names":[],"mappings":";;;AAAA,yCAAgE;AAIhE,IAAI,SAAS,GAAG,CAAC,CAAC;AAelB,MAAM,YAAY,GAAiB,CAAC,EAClC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,aAAa,GAAG,EAAE,EAClB,QAAQ,EACT,EAAE,EAAE,CACH,IAAA,uBAAW,EAAC;IACV,EAAE,EAAE,oBAAoB,SAAS,EAAE,EAAE;IACrC,KAAK;IACL,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,EAAE;IACzC,kBAAkB,EAAE,CAAO,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE;QAChD,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrB,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,UAAU,CAAC,CAAC;SACtB;IACH,CAAC,CAAA;IACD,oBAAoB,CAAC,EAAE,YAAY,EAAE;;QACnC,IAAI,YAAY,EAAE;YAChB,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnC,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,EAAE;gBACvB,IAAI,QAAQ;oBAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC7E,IAAI,CAAC,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,0CAAE,GAAG,CAAA,EAAE;oBAC5B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,EAAE;wBACvD,cAAc,EAAE,aAAa;qBAC9B,CAAC,CAAC;iBACJ;gBACD,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC7D,cAAc,EAAE,aAAa;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B,CAAC,CAAC;aACJ;SACF;IACH,CAAC;CACF,CAAC,CAAC;AAEL,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = require("react");
5
+ const useFetchRecommendationPod = (cioClient, recommendationPods) => {
6
+ const [recommendationResults, setRecommendationResults] = (0, react_1.useState)({});
7
+ (0, react_1.useEffect)(() => {
8
+ if (!cioClient || !Array.isArray(recommendationPods) || recommendationPods.length === 0)
9
+ return;
10
+ const fetchRecommendationResults = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
11
+ const responses = yield Promise.all(recommendationPods.map((_a) => {
12
+ var { identifier: podId } = _a, parameters = tslib_1.__rest(_a, ["identifier"]);
13
+ return cioClient.recommendations.getRecommendations(podId, parameters);
14
+ }));
15
+ const recommendationPodResults = {};
16
+ responses.forEach(({ response }) => {
17
+ const { pod, results } = response;
18
+ if (pod === null || pod === void 0 ? void 0 : pod.id) {
19
+ recommendationPodResults[pod.id] = results === null || results === void 0 ? void 0 : results.map((item) => (Object.assign(Object.assign({}, item), { section: pod.id })));
20
+ }
21
+ });
22
+ setRecommendationResults(recommendationPodResults);
23
+ });
24
+ fetchRecommendationResults();
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ }, [cioClient]);
27
+ return recommendationResults;
28
+ };
29
+ exports.default = useFetchRecommendationPod;
30
+ //# sourceMappingURL=useFetchRecommendationPod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchRecommendationPod.js","sourceRoot":"","sources":["../../../src/hooks/useFetchRecommendationPod.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAI5C,MAAM,yBAAyB,GAAG,CAChC,SAA0C,EAC1C,kBAAyD,EACzD,EAAE;IACF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAChE,EAAE,CACH,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChG,MAAM,0BAA0B,GAAG,GAAS,EAAE;YAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAoC,EAAE,EAAE;oBAAxC,EAAE,UAAU,EAAE,KAAK,OAAiB,EAAZ,UAAU,sBAAlC,cAAoC,CAAF;gBACxD,OAAA,SAAS,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;aAAA,CAChE,CACF,CAAC;YACF,MAAM,wBAAwB,GAAG,EAAE,CAAC;YAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACjC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;gBAClC,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,EAAE;oBACX,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,iCAC3D,IAAI,KACP,OAAO,EAAE,GAAG,CAAC,EAAE,IACf,CAAC,CAAC;iBACL;YACH,CAAC,CAAC,CAAC;YAEH,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC;QACF,0BAA0B,EAAE,CAAC;QAC7B,uDAAuD;IACzD,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const usePrevious = (value) => {
5
+ const ref = (0, react_1.useRef)();
6
+ (0, react_1.useEffect)(() => {
7
+ ref.current = value; // assign the value of ref to the argument
8
+ }, [value]); // this code will run when the value of 'value' changes
9
+ return ref.current; // in the end, return the current ref value.
10
+ };
11
+ exports.default = usePrevious;
12
+ //# sourceMappingURL=usePrevious.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePrevious.js","sourceRoot":"","sources":["../../../src/hooks/usePrevious.ts"],"names":[],"mappings":";;AAAA,iCAA0C;AAE1C,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,IAAA,cAAM,GAAU,CAAC;IAC7B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,0CAA0C;IACjE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,uDAAuD;IACpE,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,4CAA4C;AAClE,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCioAutocomplete = exports.SectionItemsList = exports.SectionItem = exports.SearchInput = exports.CioAutocomplete = exports.AutocompleteResults = void 0;
4
+ var AutocompleteResults_1 = require("./components/Autocomplete/AutocompleteResults/AutocompleteResults");
5
+ Object.defineProperty(exports, "AutocompleteResults", { enumerable: true, get: function () { return AutocompleteResults_1.default; } });
6
+ var CioAutocomplete_1 = require("./components/Autocomplete/CioAutocomplete/CioAutocomplete");
7
+ Object.defineProperty(exports, "CioAutocomplete", { enumerable: true, get: function () { return CioAutocomplete_1.default; } });
8
+ var SearchInput_1 = require("./components/Autocomplete/SearchInput/SearchInput");
9
+ Object.defineProperty(exports, "SearchInput", { enumerable: true, get: function () { return SearchInput_1.default; } });
10
+ var SectionItem_1 = require("./components/Autocomplete/SectionItem/SectionItem");
11
+ Object.defineProperty(exports, "SectionItem", { enumerable: true, get: function () { return SectionItem_1.default; } });
12
+ var SectionItemsList_1 = require("./components/Autocomplete/SectionItemsList/SectionItemsList");
13
+ Object.defineProperty(exports, "SectionItemsList", { enumerable: true, get: function () { return SectionItemsList_1.default; } });
14
+ var useCioAutocomplete_1 = require("./hooks/useCioAutocomplete");
15
+ Object.defineProperty(exports, "useCioAutocomplete", { enumerable: true, get: function () { return useCioAutocomplete_1.default; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yGAAmH;AAA1G,0HAAA,OAAO,OAAuB;AACvC,6FAAuG;AAA9F,kHAAA,OAAO,OAAmB;AACnC,iFAA2F;AAAlF,0GAAA,OAAO,OAAe;AAC/B,iFAA2F;AAAlF,0GAAA,OAAO,OAAe;AAC/B,gGAA0G;AAAjG,oHAAA,OAAO,OAAoB;AACpC,iEAA2E;AAAlE,wHAAA,OAAO,OAAsB"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.argTypes = void 0;
4
+ // eslint-disable-next-line
5
+ exports.argTypes = {
6
+ placeholder: {
7
+ description: 'Search input placeholder',
8
+ table: {
9
+ type: {
10
+ summary: 'string'
11
+ }
12
+ },
13
+ control: {
14
+ type: 'text'
15
+ }
16
+ },
17
+ apiKey: {
18
+ type: { name: 'string' },
19
+ description: 'Your constructor API key',
20
+ table: {
21
+ type: {
22
+ summary: 'string'
23
+ }
24
+ },
25
+ control: {
26
+ type: 'text'
27
+ }
28
+ },
29
+ onSubmit: {
30
+ type: {
31
+ name: 'function'
32
+ },
33
+ description: `On search submit callback function`,
34
+ table: {
35
+ type: {
36
+ summary: 'Function'
37
+ }
38
+ },
39
+ control: null
40
+ },
41
+ onFocus: {
42
+ type: {
43
+ name: 'function'
44
+ },
45
+ description: `On focus callback function`,
46
+ table: {
47
+ type: {
48
+ summary: 'Function'
49
+ }
50
+ },
51
+ control: null
52
+ },
53
+ openOnFocus: {
54
+ description: 'Open results on focus',
55
+ table: {
56
+ type: {
57
+ summary: 'boolean'
58
+ }
59
+ },
60
+ control: {
61
+ type: 'boolean'
62
+ }
63
+ }
64
+ };
65
+ //# sourceMappingURL=argTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argTypes.js","sourceRoot":"","sources":["../../../../src/stories/Autocomplete/argTypes.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AACd,QAAA,QAAQ,GAAG;IACtB,WAAW,EAAE;QACX,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;aAClB;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;SACb;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;aAClB;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;SACb;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU;SACjB;QACD,WAAW,EAAE,oCAAoC;QACjD,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU;SACjB;QACD,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE,IAAI;KACd;IACD,WAAW,EAAE;QACX,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS;aACnB;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isProduct = void 0;
4
+ // Type Guard
5
+ // eslint-disable-next-line
6
+ function isProduct(item) {
7
+ return item.data.image_url !== undefined;
8
+ }
9
+ exports.isProduct = isProduct;
10
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":";;;AAEA,aAAa;AACb,2BAA2B;AAC3B,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAQ,IAAgB,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AACxD,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disableStoryActions = exports.stringify = exports.getStoryParams = exports.sleep = exports.clearConstructorRequests = exports.isTrackingRequestSent = exports.camelToStartCase = exports.getIndexOffset = void 0;
4
+ const getIndexOffset = ({ activeSections, sectionIdentifier }) => {
5
+ let indexOffset = 0;
6
+ if (sectionIdentifier) {
7
+ activeSections.find((config) => {
8
+ var _a;
9
+ if ((config === null || config === void 0 ? void 0 : config.identifier) === sectionIdentifier)
10
+ return true; // break out of loop
11
+ indexOffset += ((_a = config === null || config === void 0 ? void 0 : config.data) === null || _a === void 0 ? void 0 : _a.length) || 0;
12
+ return false; // continue
13
+ });
14
+ }
15
+ return indexOffset;
16
+ };
17
+ exports.getIndexOffset = getIndexOffset;
18
+ const camelToStartCase = (camelCaseString) => camelCaseString
19
+ // insert a space before all caps
20
+ .replace(/([A-Z])/g, ' $1')
21
+ // uppercase the first character
22
+ .replace(/^./, (str) => str.toUpperCase());
23
+ exports.camelToStartCase = camelToStartCase;
24
+ function isTrackingRequestSent(trackingRequestUrl) {
25
+ var _a, _b;
26
+ // eslint-disable-next-line
27
+ const trackingRequestsQueue = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a._constructorio_requests;
28
+ return (trackingRequestsQueue &&
29
+ ((_b = JSON.parse(trackingRequestsQueue)) === null || _b === void 0 ? void 0 : _b.some((request) => { var _a; return (_a = request === null || request === void 0 ? void 0 : request.url) === null || _a === void 0 ? void 0 : _a.includes(trackingRequestUrl); })));
30
+ }
31
+ exports.isTrackingRequestSent = isTrackingRequestSent;
32
+ function clearConstructorRequests() {
33
+ var _a;
34
+ // eslint-disable-next-line
35
+ if ((_a = window.localStorage) === null || _a === void 0 ? void 0 : _a._constructorio_requests) {
36
+ window.localStorage.removeItem('_constructorio_requests');
37
+ }
38
+ }
39
+ exports.clearConstructorRequests = clearConstructorRequests;
40
+ // Function to emulate pausing between interactions
41
+ function sleep(ms) {
42
+ // eslint-disable-next-line
43
+ return new Promise((resolve) => setTimeout(resolve, ms));
44
+ }
45
+ exports.sleep = sleep;
46
+ // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
47
+ const getStoryParams = (storyCode, templateCode, importCode) => {
48
+ const code = `
49
+ ${importCode}
50
+ ${storyCode}
51
+ ${templateCode}
52
+ `;
53
+ return {
54
+ docs: {
55
+ source: {
56
+ code,
57
+ language: 'jsx',
58
+ format: true,
59
+ type: 'code'
60
+ }
61
+ }
62
+ };
63
+ };
64
+ exports.getStoryParams = getStoryParams;
65
+ const stringify = (obj) => JSON.stringify(obj, null, ' ');
66
+ exports.stringify = stringify;
67
+ const disableStoryActions = (story) => {
68
+ // eslint-disable-next-line
69
+ story.parameters.actions = { argTypesRegex: null };
70
+ };
71
+ exports.disableStoryActions = disableStoryActions;
72
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAOO,MAAM,cAAc,GAAmB,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,EAAE,EAAE;IACtF,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,iBAAiB,EAAE;QACrB,cAAc,CAAC,IAAI,CAAC,CAAC,MAA4B,EAAE,EAAE;;YACnD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,MAAK,iBAAiB;gBAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;YAC/E,WAAW,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,MAAM,KAAI,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,WAAW;QAC3B,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB;AAIK,MAAM,gBAAgB,GAAqB,CAAC,eAAe,EAAE,EAAE,CACpE,eAAe;IACb,iCAAiC;KAChC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,gCAAgC;KAC/B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AALlC,QAAA,gBAAgB,oBAKkB;AAE/C,SAAgB,qBAAqB,CAAC,kBAAkB;;IACtD,2BAA2B;IAC3B,MAAM,qBAAqB,GAAG,MAAA,MAAM,CAAC,YAAY,0CAAE,uBAAuB,CAAC;IAE3E,OAAO,CACL,qBAAqB;SACrB,MAAA,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,0CAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,0CAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA,EAAA,CAAC,CAAA,CACjG,CAAC;AACJ,CAAC;AARD,sDAQC;AAED,SAAgB,wBAAwB;;IACtC,2BAA2B;IAC3B,IAAI,MAAA,MAAM,CAAC,YAAY,0CAAE,uBAAuB,EAAE;QAChD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;KAC3D;AACH,CAAC;AALD,4DAKC;AAED,mDAAmD;AACnD,SAAgB,KAAK,CAAC,EAAE;IACtB,2BAA2B;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAHD,sBAGC;AACD,mFAAmF;AAC5E,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE;IACpE,MAAM,IAAI,GAAG;EACb,UAAU;EACV,SAAS;EACT,YAAY;CACb,CAAC;IAEA,OAAO;QACL,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN,IAAI;gBACJ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEK,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAArD,QAAA,SAAS,aAA4C;AAE3D,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,EAAE;IAC3C,2BAA2B;IAC3B,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
@@ -0,0 +1,110 @@
1
+ /* Autosuggest Container */
2
+ .cio-autocomplete {
3
+ position: relative;
4
+ height: 2rem;
5
+ padding: 20px;
6
+ font-family: Arial, Helvetica, sans-serif;
7
+ }
8
+
9
+ /* Autosuggest Form */
10
+ .cio-autocomplete .cio-form {
11
+ position: relative;
12
+ height: 100%;
13
+ width: 24rem;
14
+ }
15
+
16
+ .cio-autocomplete .cio-input {
17
+ width: 100%;
18
+ height: 100%;
19
+ border: 1px solid gray;
20
+ padding: 0 10px;
21
+ border-radius: 3px;
22
+ font-size: 1rem;
23
+ }
24
+
25
+ .cio-autocomplete .cio-submit-btn,
26
+ .cio-autocomplete .cio-clear-btn {
27
+ position: absolute;
28
+ top: 1px;
29
+ bottom: -1px;
30
+ right: -21px;
31
+ cursor: pointer;
32
+ }
33
+
34
+ .cio-autocomplete button:disabled {
35
+ cursor: not-allowed;
36
+ }
37
+
38
+ .cio-autocomplete .cio-submit-btn {
39
+ right: -21px;
40
+ }
41
+
42
+ .cio-autocomplete .cio-clear-btn {
43
+ right: 10px;
44
+ }
45
+
46
+ .cio-autocomplete .cio-icon {
47
+ display: flex;
48
+ justify-content: center;
49
+ }
50
+
51
+ /* Autosuggest Results */
52
+ .cio-autocomplete .cio-results {
53
+ position: absolute;
54
+ background-color: white;
55
+ gap: 20px;
56
+ padding-left: 0px;
57
+ list-style: none;
58
+ display: flex;
59
+ flex-direction: row;
60
+ z-index: 1000;
61
+ margin-top: 5px;
62
+ }
63
+
64
+ .cio-autocomplete .cio-sectionName {
65
+ margin: 15px 0;
66
+ font-size: 1rem;
67
+ }
68
+
69
+ .cio-autocomplete .cio-section-items {
70
+ padding: 0;
71
+ }
72
+
73
+ .cio-autocomplete .cio-item-SearchSuggestions {
74
+ flex-direction: column;
75
+ min-width: 160px;
76
+ }
77
+
78
+ .cio-autocomplete .cio-item {
79
+ flex: 1;
80
+ display: flex;
81
+ flex-direction: column;
82
+ cursor: pointer;
83
+ list-style: none;
84
+ padding: 5px;
85
+ border-bottom: 3px solid transparent;
86
+ }
87
+
88
+ .cio-autocomplete .cio-item[aria-selected='true'] {
89
+ background-color: hsl(0, 0%, 90%);
90
+ border-radius: 4px;
91
+ }
92
+
93
+ .cio-autocomplete .Products .cio-item {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ width: 25%;
97
+ height: 140px;
98
+ padding: 5px 0;
99
+ }
100
+
101
+ .cio-autocomplete .cio-item p {
102
+ margin: 0;
103
+ overflow: hidden;
104
+ }
105
+
106
+ .cio-autocomplete .cio-item img {
107
+ width: 100%;
108
+ max-width: 100px;
109
+ max-height: 100px;
110
+ }
@@ -0,0 +1,21 @@
1
+ import React, { useContext } from 'react';
2
+ import { CioAutocompleteContext } from '../CioAutocompleteProvider';
3
+ import SectionItemsList from '../SectionItemsList/SectionItemsList';
4
+ const DefaultRenderResults = ({ sections }) => sections?.map((section) => (React.createElement(SectionItemsList, { section: section, key: section.identifier })));
5
+ export default function AutocompleteResults(props) {
6
+ const { children = DefaultRenderResults } = props;
7
+ const { sections, isOpen, getMenuProps, getItemProps } = useContext(CioAutocompleteContext);
8
+ const hasResults = sections && sections.some((section) => section?.data?.length);
9
+ let content;
10
+ if (isOpen && hasResults) {
11
+ content = typeof children === 'function' ? children({ sections, getItemProps }) : children;
12
+ }
13
+ else {
14
+ content = null;
15
+ }
16
+ const menuProps = {
17
+ ...getMenuProps()
18
+ };
19
+ return React.createElement("ul", { ...menuProps }, content);
20
+ }
21
+ //# sourceMappingURL=AutocompleteResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteResults.js","sourceRoot":"","sources":["../../../../../src/components/Autocomplete/AutocompleteResults/AutocompleteResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,UAAU,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAWpE,MAAM,oBAAoB,GAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC3D,QAAQ,EAAE,GAAG,CAAC,CAAC,OAA6B,EAAE,EAAE,CAAC,CAC/C,oBAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,GAAI,CAChE,CAAC,CAAC;AAEL,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAA+B;IACzE,MAAM,EAAE,QAAQ,GAAG,oBAAoB,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAE5F,MAAM,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC;IACZ,IAAI,MAAM,IAAI,UAAU,EAAE;QACxB,OAAO,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC5F;SAAM;QACL,OAAO,GAAG,IAAI,CAAC;KAChB;IAED,MAAM,SAAS,GAAG;QAChB,GAAG,YAAY,EAAE;KAClB,CAAC;IAEF,OAAO,+BAAQ,SAAS,IAAG,OAAO,CAAM,CAAC;AAC3C,CAAC"}