@athoscommerce/snap-store-mobx 1.0.0

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/dist/cjs/Abstract/AbstractStore.d.ts +17 -0
  4. package/dist/cjs/Abstract/AbstractStore.d.ts.map +1 -0
  5. package/dist/cjs/Abstract/AbstractStore.js +28 -0
  6. package/dist/cjs/Autocomplete/AutocompleteStore.d.ts +40 -0
  7. package/dist/cjs/Autocomplete/AutocompleteStore.d.ts.map +1 -0
  8. package/dist/cjs/Autocomplete/AutocompleteStore.js +246 -0
  9. package/dist/cjs/Autocomplete/Stores/AutocompleteFacetStore.d.ts +13 -0
  10. package/dist/cjs/Autocomplete/Stores/AutocompleteFacetStore.d.ts.map +1 -0
  11. package/dist/cjs/Autocomplete/Stores/AutocompleteFacetStore.js +67 -0
  12. package/dist/cjs/Autocomplete/Stores/AutocompleteHistoryStore.d.ts +19 -0
  13. package/dist/cjs/Autocomplete/Stores/AutocompleteHistoryStore.d.ts.map +1 -0
  14. package/dist/cjs/Autocomplete/Stores/AutocompleteHistoryStore.js +57 -0
  15. package/dist/cjs/Autocomplete/Stores/AutocompleteQueryStore.d.ts +25 -0
  16. package/dist/cjs/Autocomplete/Stores/AutocompleteQueryStore.d.ts.map +1 -0
  17. package/dist/cjs/Autocomplete/Stores/AutocompleteQueryStore.js +34 -0
  18. package/dist/cjs/Autocomplete/Stores/AutocompleteStateStore.d.ts +29 -0
  19. package/dist/cjs/Autocomplete/Stores/AutocompleteStateStore.d.ts.map +1 -0
  20. package/dist/cjs/Autocomplete/Stores/AutocompleteStateStore.js +54 -0
  21. package/dist/cjs/Autocomplete/Stores/AutocompleteTermStore.d.ts +47 -0
  22. package/dist/cjs/Autocomplete/Stores/AutocompleteTermStore.d.ts.map +1 -0
  23. package/dist/cjs/Autocomplete/Stores/AutocompleteTermStore.js +102 -0
  24. package/dist/cjs/Autocomplete/Stores/AutocompleteTrendingStore.d.ts +20 -0
  25. package/dist/cjs/Autocomplete/Stores/AutocompleteTrendingStore.d.ts.map +1 -0
  26. package/dist/cjs/Autocomplete/Stores/AutocompleteTrendingStore.js +58 -0
  27. package/dist/cjs/Autocomplete/Stores/index.d.ts +7 -0
  28. package/dist/cjs/Autocomplete/Stores/index.d.ts.map +1 -0
  29. package/dist/cjs/Autocomplete/Stores/index.js +16 -0
  30. package/dist/cjs/Cart/CartStore.d.ts +15 -0
  31. package/dist/cjs/Cart/CartStore.d.ts.map +1 -0
  32. package/dist/cjs/Cart/CartStore.js +109 -0
  33. package/dist/cjs/Finder/FinderStore.d.ts +27 -0
  34. package/dist/cjs/Finder/FinderStore.d.ts.map +1 -0
  35. package/dist/cjs/Finder/FinderStore.js +156 -0
  36. package/dist/cjs/Finder/Stores/FinderSelectionStore.d.ts +73 -0
  37. package/dist/cjs/Finder/Stores/FinderSelectionStore.d.ts.map +1 -0
  38. package/dist/cjs/Finder/Stores/FinderSelectionStore.js +320 -0
  39. package/dist/cjs/Finder/Stores/index.d.ts +2 -0
  40. package/dist/cjs/Finder/Stores/index.d.ts.map +1 -0
  41. package/dist/cjs/Finder/Stores/index.js +5 -0
  42. package/dist/cjs/Meta/MetaStore.d.ts +20 -0
  43. package/dist/cjs/Meta/MetaStore.d.ts.map +1 -0
  44. package/dist/cjs/Meta/MetaStore.js +55 -0
  45. package/dist/cjs/Recommendation/RecommendationStore.d.ts +19 -0
  46. package/dist/cjs/Recommendation/RecommendationStore.d.ts.map +1 -0
  47. package/dist/cjs/Recommendation/RecommendationStore.js +97 -0
  48. package/dist/cjs/Recommendation/Stores/RecommendationProfileStore.d.ts +15 -0
  49. package/dist/cjs/Recommendation/Stores/RecommendationProfileStore.d.ts.map +1 -0
  50. package/dist/cjs/Recommendation/Stores/RecommendationProfileStore.js +30 -0
  51. package/dist/cjs/Recommendation/Stores/index.d.ts +2 -0
  52. package/dist/cjs/Recommendation/Stores/index.d.ts.map +1 -0
  53. package/dist/cjs/Recommendation/Stores/index.js +5 -0
  54. package/dist/cjs/Search/SearchStore.d.ts +27 -0
  55. package/dist/cjs/Search/SearchStore.d.ts.map +1 -0
  56. package/dist/cjs/Search/SearchStore.js +125 -0
  57. package/dist/cjs/Search/Stores/SearchFacetStore.d.ts +89 -0
  58. package/dist/cjs/Search/Stores/SearchFacetStore.d.ts.map +1 -0
  59. package/dist/cjs/Search/Stores/SearchFacetStore.js +368 -0
  60. package/dist/cjs/Search/Stores/SearchFilterStore.d.ts +44 -0
  61. package/dist/cjs/Search/Stores/SearchFilterStore.d.ts.map +1 -0
  62. package/dist/cjs/Search/Stores/SearchFilterStore.js +102 -0
  63. package/dist/cjs/Search/Stores/SearchHistoryStore.d.ts +20 -0
  64. package/dist/cjs/Search/Stores/SearchHistoryStore.d.ts.map +1 -0
  65. package/dist/cjs/Search/Stores/SearchHistoryStore.js +106 -0
  66. package/dist/cjs/Search/Stores/SearchMerchandisingStore.d.ts +36 -0
  67. package/dist/cjs/Search/Stores/SearchMerchandisingStore.d.ts.map +1 -0
  68. package/dist/cjs/Search/Stores/SearchMerchandisingStore.js +90 -0
  69. package/dist/cjs/Search/Stores/SearchPaginationStore.d.ts +57 -0
  70. package/dist/cjs/Search/Stores/SearchPaginationStore.d.ts.map +1 -0
  71. package/dist/cjs/Search/Stores/SearchPaginationStore.js +212 -0
  72. package/dist/cjs/Search/Stores/SearchQueryStore.d.ts +23 -0
  73. package/dist/cjs/Search/Stores/SearchQueryStore.d.ts.map +1 -0
  74. package/dist/cjs/Search/Stores/SearchQueryStore.js +41 -0
  75. package/dist/cjs/Search/Stores/SearchResultStore.d.ts +175 -0
  76. package/dist/cjs/Search/Stores/SearchResultStore.d.ts.map +1 -0
  77. package/dist/cjs/Search/Stores/SearchResultStore.js +749 -0
  78. package/dist/cjs/Search/Stores/SearchSortingStore.d.ts +32 -0
  79. package/dist/cjs/Search/Stores/SearchSortingStore.d.ts.map +1 -0
  80. package/dist/cjs/Search/Stores/SearchSortingStore.js +77 -0
  81. package/dist/cjs/Search/Stores/index.d.ts +9 -0
  82. package/dist/cjs/Search/Stores/index.d.ts.map +1 -0
  83. package/dist/cjs/Search/Stores/index.js +30 -0
  84. package/dist/cjs/Storage/StorageStore.d.ts +27 -0
  85. package/dist/cjs/Storage/StorageStore.d.ts.map +1 -0
  86. package/dist/cjs/Storage/StorageStore.js +176 -0
  87. package/dist/cjs/index.d.ts +12 -0
  88. package/dist/cjs/index.d.ts.map +1 -0
  89. package/dist/cjs/index.js +37 -0
  90. package/dist/cjs/types.d.ts +170 -0
  91. package/dist/cjs/types.d.ts.map +1 -0
  92. package/dist/cjs/types.js +9 -0
  93. package/dist/esm/Abstract/AbstractStore.d.ts +17 -0
  94. package/dist/esm/Abstract/AbstractStore.d.ts.map +1 -0
  95. package/dist/esm/Abstract/AbstractStore.js +22 -0
  96. package/dist/esm/Autocomplete/AutocompleteStore.d.ts +40 -0
  97. package/dist/esm/Autocomplete/AutocompleteStore.d.ts.map +1 -0
  98. package/dist/esm/Autocomplete/AutocompleteStore.js +210 -0
  99. package/dist/esm/Autocomplete/Stores/AutocompleteFacetStore.d.ts +13 -0
  100. package/dist/esm/Autocomplete/Stores/AutocompleteFacetStore.d.ts.map +1 -0
  101. package/dist/esm/Autocomplete/Stores/AutocompleteFacetStore.js +35 -0
  102. package/dist/esm/Autocomplete/Stores/AutocompleteHistoryStore.d.ts +19 -0
  103. package/dist/esm/Autocomplete/Stores/AutocompleteHistoryStore.d.ts.map +1 -0
  104. package/dist/esm/Autocomplete/Stores/AutocompleteHistoryStore.js +27 -0
  105. package/dist/esm/Autocomplete/Stores/AutocompleteQueryStore.d.ts +25 -0
  106. package/dist/esm/Autocomplete/Stores/AutocompleteQueryStore.d.ts.map +1 -0
  107. package/dist/esm/Autocomplete/Stores/AutocompleteQueryStore.js +28 -0
  108. package/dist/esm/Autocomplete/Stores/AutocompleteStateStore.d.ts +29 -0
  109. package/dist/esm/Autocomplete/Stores/AutocompleteStateStore.d.ts.map +1 -0
  110. package/dist/esm/Autocomplete/Stores/AutocompleteStateStore.js +42 -0
  111. package/dist/esm/Autocomplete/Stores/AutocompleteTermStore.d.ts +47 -0
  112. package/dist/esm/Autocomplete/Stores/AutocompleteTermStore.d.ts.map +1 -0
  113. package/dist/esm/Autocomplete/Stores/AutocompleteTermStore.js +56 -0
  114. package/dist/esm/Autocomplete/Stores/AutocompleteTrendingStore.d.ts +20 -0
  115. package/dist/esm/Autocomplete/Stores/AutocompleteTrendingStore.d.ts.map +1 -0
  116. package/dist/esm/Autocomplete/Stores/AutocompleteTrendingStore.js +27 -0
  117. package/dist/esm/Autocomplete/Stores/index.d.ts +7 -0
  118. package/dist/esm/Autocomplete/Stores/index.d.ts.map +1 -0
  119. package/dist/esm/Autocomplete/Stores/index.js +6 -0
  120. package/dist/esm/Cart/CartStore.d.ts +15 -0
  121. package/dist/esm/Cart/CartStore.d.ts.map +1 -0
  122. package/dist/esm/Cart/CartStore.js +74 -0
  123. package/dist/esm/Finder/FinderStore.d.ts +27 -0
  124. package/dist/esm/Finder/FinderStore.d.ts.map +1 -0
  125. package/dist/esm/Finder/FinderStore.js +118 -0
  126. package/dist/esm/Finder/Stores/FinderSelectionStore.d.ts +73 -0
  127. package/dist/esm/Finder/Stores/FinderSelectionStore.d.ts.map +1 -0
  128. package/dist/esm/Finder/Stores/FinderSelectionStore.js +258 -0
  129. package/dist/esm/Finder/Stores/index.d.ts +2 -0
  130. package/dist/esm/Finder/Stores/index.d.ts.map +1 -0
  131. package/dist/esm/Finder/Stores/index.js +1 -0
  132. package/dist/esm/Meta/MetaStore.d.ts +20 -0
  133. package/dist/esm/Meta/MetaStore.d.ts.map +1 -0
  134. package/dist/esm/Meta/MetaStore.js +45 -0
  135. package/dist/esm/Recommendation/RecommendationStore.d.ts +19 -0
  136. package/dist/esm/Recommendation/RecommendationStore.d.ts.map +1 -0
  137. package/dist/esm/Recommendation/RecommendationStore.js +71 -0
  138. package/dist/esm/Recommendation/Stores/RecommendationProfileStore.d.ts +15 -0
  139. package/dist/esm/Recommendation/Stores/RecommendationProfileStore.d.ts.map +1 -0
  140. package/dist/esm/Recommendation/Stores/RecommendationProfileStore.js +25 -0
  141. package/dist/esm/Recommendation/Stores/index.d.ts +2 -0
  142. package/dist/esm/Recommendation/Stores/index.d.ts.map +1 -0
  143. package/dist/esm/Recommendation/Stores/index.js +1 -0
  144. package/dist/esm/Search/SearchStore.d.ts +27 -0
  145. package/dist/esm/Search/SearchStore.d.ts.map +1 -0
  146. package/dist/esm/Search/SearchStore.js +102 -0
  147. package/dist/esm/Search/Stores/SearchFacetStore.d.ts +89 -0
  148. package/dist/esm/Search/Stores/SearchFacetStore.d.ts.map +1 -0
  149. package/dist/esm/Search/Stores/SearchFacetStore.js +292 -0
  150. package/dist/esm/Search/Stores/SearchFilterStore.d.ts +44 -0
  151. package/dist/esm/Search/Stores/SearchFilterStore.d.ts.map +1 -0
  152. package/dist/esm/Search/Stores/SearchFilterStore.js +70 -0
  153. package/dist/esm/Search/Stores/SearchHistoryStore.d.ts +20 -0
  154. package/dist/esm/Search/Stores/SearchHistoryStore.d.ts.map +1 -0
  155. package/dist/esm/Search/Stores/SearchHistoryStore.js +85 -0
  156. package/dist/esm/Search/Stores/SearchMerchandisingStore.d.ts +36 -0
  157. package/dist/esm/Search/Stores/SearchMerchandisingStore.d.ts.map +1 -0
  158. package/dist/esm/Search/Stores/SearchMerchandisingStore.js +61 -0
  159. package/dist/esm/Search/Stores/SearchPaginationStore.d.ts +57 -0
  160. package/dist/esm/Search/Stores/SearchPaginationStore.d.ts.map +1 -0
  161. package/dist/esm/Search/Stores/SearchPaginationStore.js +163 -0
  162. package/dist/esm/Search/Stores/SearchQueryStore.d.ts +23 -0
  163. package/dist/esm/Search/Stores/SearchQueryStore.d.ts.map +1 -0
  164. package/dist/esm/Search/Stores/SearchQueryStore.js +33 -0
  165. package/dist/esm/Search/Stores/SearchResultStore.d.ts +175 -0
  166. package/dist/esm/Search/Stores/SearchResultStore.d.ts.map +1 -0
  167. package/dist/esm/Search/Stores/SearchResultStore.js +648 -0
  168. package/dist/esm/Search/Stores/SearchSortingStore.d.ts +32 -0
  169. package/dist/esm/Search/Stores/SearchSortingStore.d.ts.map +1 -0
  170. package/dist/esm/Search/Stores/SearchSortingStore.js +67 -0
  171. package/dist/esm/Search/Stores/index.d.ts +9 -0
  172. package/dist/esm/Search/Stores/index.d.ts.map +1 -0
  173. package/dist/esm/Search/Stores/index.js +8 -0
  174. package/dist/esm/Storage/StorageStore.d.ts +27 -0
  175. package/dist/esm/Storage/StorageStore.d.ts.map +1 -0
  176. package/dist/esm/Storage/StorageStore.js +169 -0
  177. package/dist/esm/index.d.ts +12 -0
  178. package/dist/esm/index.d.ts.map +1 -0
  179. package/dist/esm/index.js +11 -0
  180. package/dist/esm/types.d.ts +170 -0
  181. package/dist/esm/types.d.ts.map +1 -0
  182. package/dist/esm/types.js +6 -0
  183. package/package.json +35 -0
@@ -0,0 +1,2 @@
1
+ export { RecommendationProfileStore } from './RecommendationProfileStore';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Recommendation/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecommendationProfileStore = void 0;
4
+ var RecommendationProfileStore_1 = require("./RecommendationProfileStore");
5
+ Object.defineProperty(exports, "RecommendationProfileStore", { enumerable: true, get: function () { return RecommendationProfileStore_1.RecommendationProfileStore; } });
@@ -0,0 +1,27 @@
1
+ import type { SearchResponseModel, MetaResponseModel } from '@athoscommerce/snapi-types';
2
+ import type { SearchStoreConfig, StoreServices } from '../types';
3
+ import { SearchMerchandisingStore, SearchFacetStore, SearchFilterStore, SearchResultStore, SearchPaginationStore, SearchSortingStore, SearchQueryStore, SearchHistoryStore } from './Stores';
4
+ import { AbstractStore } from '../Abstract/AbstractStore';
5
+ import { StorageStore } from '../Storage/StorageStore';
6
+ import { MetaStore } from '../Meta/MetaStore';
7
+ export declare class SearchStore extends AbstractStore<SearchStoreConfig> {
8
+ private previousSearch?;
9
+ services: StoreServices;
10
+ meta?: MetaStore;
11
+ merchandising: SearchMerchandisingStore;
12
+ search: SearchQueryStore;
13
+ facets: SearchFacetStore;
14
+ filters: SearchFilterStore;
15
+ results: SearchResultStore;
16
+ pagination: SearchPaginationStore;
17
+ sorting: SearchSortingStore;
18
+ storage: StorageStore;
19
+ history: SearchHistoryStore;
20
+ constructor(config: SearchStoreConfig, services: StoreServices);
21
+ reset(): void;
22
+ update(data?: {
23
+ meta?: MetaResponseModel;
24
+ search?: SearchResponseModel;
25
+ }): void;
26
+ }
27
+ //# sourceMappingURL=SearchStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchStore.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IAChE,QAAgB,cAAc,CAAC,CAAsB;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,gBAAgB,CAAC;IAC1B,MAAM,EAAG,gBAAgB,CAAC;IAC1B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IA6BvD,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,IAAI;CA6EtF"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SearchStore = void 0;
19
+ var mobx_1 = require("mobx");
20
+ var Stores_1 = require("./Stores");
21
+ var AbstractStore_1 = require("../Abstract/AbstractStore");
22
+ var StorageStore_1 = require("../Storage/StorageStore");
23
+ var MetaStore_1 = require("../Meta/MetaStore");
24
+ var SearchStore = /** @class */ (function (_super) {
25
+ __extends(SearchStore, _super);
26
+ function SearchStore(config, services) {
27
+ var _a;
28
+ var _this = _super.call(this, config) || this;
29
+ if (typeof services != 'object' || typeof ((_a = services.urlManager) === null || _a === void 0 ? void 0 : _a.subscribe) != 'function') {
30
+ throw new Error("Invalid service 'urlManager' passed to SearchStore. Missing \"subscribe\" function.");
31
+ }
32
+ _this.services = services;
33
+ _this.storage = new StorageStore_1.StorageStore();
34
+ _this.history = new Stores_1.SearchHistoryStore({
35
+ services: _this.services,
36
+ config: _this.config,
37
+ });
38
+ _this.update();
39
+ (0, mobx_1.makeObservable)(_this, {
40
+ search: mobx_1.observable,
41
+ merchandising: mobx_1.observable,
42
+ facets: mobx_1.observable,
43
+ filters: mobx_1.observable,
44
+ results: mobx_1.observable,
45
+ pagination: mobx_1.observable,
46
+ sorting: mobx_1.observable,
47
+ });
48
+ return _this;
49
+ }
50
+ SearchStore.prototype.reset = function () {
51
+ this.update();
52
+ };
53
+ SearchStore.prototype.update = function (data) {
54
+ var _a = data || {}, meta = _a.meta, search = _a.search;
55
+ this.meta = new MetaStore_1.MetaStore({
56
+ data: {
57
+ meta: meta,
58
+ },
59
+ });
60
+ this.merchandising = new Stores_1.SearchMerchandisingStore({
61
+ data: {
62
+ search: search,
63
+ },
64
+ });
65
+ this.search = new Stores_1.SearchQueryStore({
66
+ services: this.services,
67
+ data: {
68
+ search: search,
69
+ },
70
+ });
71
+ this.facets = new Stores_1.SearchFacetStore({
72
+ config: this.config,
73
+ services: this.services,
74
+ stores: {
75
+ storage: this.storage,
76
+ },
77
+ data: {
78
+ search: search,
79
+ meta: this.meta.data,
80
+ },
81
+ });
82
+ this.filters = new Stores_1.SearchFilterStore({
83
+ config: this.config,
84
+ services: this.services,
85
+ data: {
86
+ search: search,
87
+ meta: this.meta.data,
88
+ },
89
+ });
90
+ this.results = new Stores_1.SearchResultStore({
91
+ config: this.config,
92
+ state: {
93
+ loaded: this.loaded,
94
+ },
95
+ stores: {
96
+ // previousResults: this.results,
97
+ },
98
+ data: {
99
+ previousSearch: this.previousSearch,
100
+ search: search,
101
+ meta: this.meta.data,
102
+ },
103
+ });
104
+ this.pagination = new Stores_1.SearchPaginationStore({
105
+ config: this.config,
106
+ services: this.services,
107
+ data: {
108
+ search: search,
109
+ meta: this.meta.data,
110
+ },
111
+ });
112
+ this.sorting = new Stores_1.SearchSortingStore({
113
+ services: this.services,
114
+ data: {
115
+ search: search,
116
+ meta: this.meta.data,
117
+ },
118
+ });
119
+ this.error = undefined;
120
+ this.loaded = Boolean(search === null || search === void 0 ? void 0 : search.pagination);
121
+ this.previousSearch = search;
122
+ };
123
+ return SearchStore;
124
+ }(AbstractStore_1.AbstractStore));
125
+ exports.SearchStore = SearchStore;
@@ -0,0 +1,89 @@
1
+ import type { UrlManager } from '@athoscommerce/snap-url-manager';
2
+ import type { StorageStore } from '../../Storage/StorageStore';
3
+ import type { AutocompleteStoreConfig, SearchStoreConfig, StoreServices, FacetStoreConfig } from '../../types';
4
+ import type { MetaResponseModelFacet, MetaResponseModelFacetSlider, MetaResponseModelFacetValueMultipleEnum, MetaResponseModelFacetHierarchyAllOf, SearchResponseModelFacetRange, SearchResponseModelFacetValue, SearchResponseModelFacetValueAllOfValues, SearchRequestModelFilterRangeAllOfValue, SearchResponseModel, MetaResponseModel } from '@athoscommerce/snapi-types';
5
+ export type SearchFacetStoreConfig = {
6
+ config: SearchStoreConfig | AutocompleteStoreConfig;
7
+ stores: {
8
+ storage: StorageStore;
9
+ };
10
+ services: StoreServices;
11
+ data: {
12
+ search?: SearchResponseModel;
13
+ meta: MetaResponseModel;
14
+ };
15
+ };
16
+ export declare class SearchFacetStore extends Array {
17
+ static get [Symbol.species](): ArrayConstructor;
18
+ constructor(params: SearchFacetStoreConfig);
19
+ }
20
+ export declare class Facet {
21
+ services: StoreServices;
22
+ type: 'range' | 'value' | 'range-buckets';
23
+ field: string;
24
+ filtered: boolean;
25
+ custom: {};
26
+ collapsed: boolean;
27
+ display: string;
28
+ label: string;
29
+ storage: StorageStore;
30
+ constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetValue | SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
31
+ get clear(): {
32
+ url: UrlManager;
33
+ };
34
+ toggleCollapse(): void;
35
+ }
36
+ export declare class RangeFacet extends Facet {
37
+ step?: number;
38
+ range?: SearchRequestModelFilterRangeAllOfValue;
39
+ active?: SearchRequestModelFilterRangeAllOfValue;
40
+ formatSeparator: string;
41
+ formatValue: string;
42
+ constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacetSlider, config: FacetStoreConfig);
43
+ get filteredCount(): number;
44
+ }
45
+ export declare class ValueFacet extends Facet {
46
+ values: Array<FacetHierarchyValue | FacetValue | FacetRangeValue | undefined>;
47
+ search: {
48
+ input: string;
49
+ };
50
+ multiple: MetaResponseModelFacetValueMultipleEnum;
51
+ overflow: {
52
+ enabled: boolean;
53
+ limited: boolean;
54
+ limit: number;
55
+ remaining: number | undefined;
56
+ setLimit: (limit: number) => void;
57
+ toggle: (val?: boolean) => void;
58
+ calculate: () => void;
59
+ };
60
+ constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetValue, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
61
+ get filteredCount(): number;
62
+ get refinedValues(): (FacetHierarchyValue | FacetValue | FacetRangeValue | undefined)[];
63
+ }
64
+ export declare class FacetValue {
65
+ label: string;
66
+ count: number;
67
+ filtered: boolean;
68
+ value: string;
69
+ custom: object;
70
+ url: UrlManager;
71
+ preview?: () => void;
72
+ constructor(services: StoreServices, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
73
+ }
74
+ export declare class FacetHierarchyValue extends FacetValue {
75
+ level: number;
76
+ history: boolean;
77
+ constructor(services: StoreServices, facet: ValueFacet & MetaResponseModelFacetHierarchyAllOf, value: SearchResponseModelFacetValueAllOfValues, filteredValues: SearchResponseModelFacetValueAllOfValues[]);
78
+ }
79
+ export declare class FacetRangeValue {
80
+ label: string;
81
+ count: number;
82
+ filtered: boolean;
83
+ low: number;
84
+ high: number;
85
+ custom: object;
86
+ url: UrlManager;
87
+ constructor(services: StoreServices, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
88
+ }
89
+ //# sourceMappingURL=SearchFacetStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchFacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchFacetStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.FacetRangeValue = exports.FacetHierarchyValue = exports.FacetValue = exports.ValueFacet = exports.RangeFacet = exports.Facet = exports.SearchFacetStore = void 0;
33
+ var deepmerge_1 = __importDefault(require("deepmerge"));
34
+ var mobx_1 = require("mobx");
35
+ var SearchFacetStore = /** @class */ (function (_super) {
36
+ __extends(SearchFacetStore, _super);
37
+ function SearchFacetStore(params) {
38
+ var config = (params === null || params === void 0 ? void 0 : params.config) || {};
39
+ var _a = params || {}, services = _a.services, stores = _a.stores, data = _a.data;
40
+ var _b = data || {}, search = _b.search, meta = _b.meta;
41
+ var _c = search || {}, facets = _c.facets, merchandising = _c.merchandising, pagination = _c.pagination;
42
+ var storage = (stores || {}).storage;
43
+ var facetsArr = (facets === null || facets === void 0 ? void 0 : facets.filter(function (facet) {
44
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
45
+ var facetMeta = facet.field && meta.facets && meta.facets[facet.field];
46
+ // exclude facets that have no meta data
47
+ if (!facetMeta)
48
+ return false;
49
+ // exclude facets that have mismatched meta data
50
+ if ((facetMeta.display == 'slider' && facet.type !== 'range') || (facet.type == 'range' && facetMeta.display !== 'slider')) {
51
+ return false;
52
+ }
53
+ // trim facets - remove facets that have no use
54
+ var facetConfig = ((_b = (_a = config.settings) === null || _a === void 0 ? void 0 : _a.facets) === null || _b === void 0 ? void 0 : _b.fields) && facet.field && ((_d = (_c = config.settings) === null || _c === void 0 ? void 0 : _c.facets) === null || _d === void 0 ? void 0 : _d.fields[facet.field]);
55
+ var shouldTrim = typeof (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.trim) == 'boolean' ? facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.trim : (_f = (_e = config.settings) === null || _e === void 0 ? void 0 : _e.facets) === null || _f === void 0 ? void 0 : _f.trim;
56
+ if (shouldTrim) {
57
+ if (facet.type === 'range' &&
58
+ ((_g = facet === null || facet === void 0 ? void 0 : facet.range) === null || _g === void 0 ? void 0 : _g.low) == ((_h = facet === null || facet === void 0 ? void 0 : facet.range) === null || _h === void 0 ? void 0 : _h.high)) {
59
+ return false;
60
+ }
61
+ else if (((_j = facet.values) === null || _j === void 0 ? void 0 : _j.length) == 0) {
62
+ return false;
63
+ }
64
+ else if (!facet.filtered && ((_k = facet.values) === null || _k === void 0 ? void 0 : _k.length) == 1) {
65
+ if ((_l = merchandising === null || merchandising === void 0 ? void 0 : merchandising.content) === null || _l === void 0 ? void 0 : _l.inline) {
66
+ return facet.values[0].count + ((_m = merchandising.content) === null || _m === void 0 ? void 0 : _m.inline.length) != pagination.totalResults;
67
+ }
68
+ else {
69
+ return facet.values[0].count != pagination.totalResults;
70
+ }
71
+ }
72
+ }
73
+ return true;
74
+ }).map(function (facet) {
75
+ var _a, _b, _c, _d, _e;
76
+ var facetMeta = facet.field && meta.facets && meta.facets[facet.field];
77
+ var facetConfig = (0, deepmerge_1.default)(__assign(__assign({}, (_a = config.settings) === null || _a === void 0 ? void 0 : _a.facets), { fields: undefined }), (((_c = (_b = config.settings) === null || _b === void 0 ? void 0 : _b.facets) === null || _c === void 0 ? void 0 : _c.fields) && facet.field && ((_e = (_d = config.settings) === null || _d === void 0 ? void 0 : _d.facets) === null || _e === void 0 ? void 0 : _e.fields[facet.field])) || {});
78
+ delete facetConfig.fields;
79
+ switch (facet.type) {
80
+ case 'range':
81
+ return new RangeFacet(services, storage, facet, facetMeta || {}, facetConfig);
82
+ case 'value':
83
+ case 'range-buckets':
84
+ default:
85
+ return new ValueFacet(services, storage, facet, facetMeta || {}, facetConfig);
86
+ }
87
+ })) || [];
88
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
89
+ // @ts-ignore
90
+ return _super.apply(this, facetsArr) || this;
91
+ }
92
+ Object.defineProperty(SearchFacetStore, Symbol.species, {
93
+ get: function () {
94
+ return Array;
95
+ },
96
+ enumerable: false,
97
+ configurable: true
98
+ });
99
+ return SearchFacetStore;
100
+ }(Array));
101
+ exports.SearchFacetStore = SearchFacetStore;
102
+ var Facet = /** @class */ (function () {
103
+ function Facet(services, storage, facet, facetMeta, config) {
104
+ this.filtered = false;
105
+ this.custom = {};
106
+ this.collapsed = false;
107
+ this.display = '';
108
+ this.label = '';
109
+ this.services = services;
110
+ this.storage = storage;
111
+ Object.assign(this, facetMeta, facet);
112
+ (0, mobx_1.makeObservable)(this, {
113
+ type: mobx_1.observable,
114
+ field: mobx_1.observable,
115
+ filtered: mobx_1.observable,
116
+ custom: mobx_1.observable,
117
+ collapsed: mobx_1.observable,
118
+ display: mobx_1.observable,
119
+ label: mobx_1.observable,
120
+ clear: mobx_1.computed,
121
+ toggleCollapse: mobx_1.action,
122
+ });
123
+ var collapseData = this.storage.get("facets.".concat(this.field, ".collapsed"));
124
+ this.collapsed = collapseData !== null && collapseData !== void 0 ? collapseData : this.collapsed;
125
+ if (this.filtered && this.collapsed && typeof collapseData == 'undefined' && config.autoOpenActive) {
126
+ this.toggleCollapse();
127
+ }
128
+ }
129
+ Object.defineProperty(Facet.prototype, "clear", {
130
+ get: function () {
131
+ return {
132
+ url: this.services.urlManager.remove('page').remove("filter.".concat(this.field)),
133
+ };
134
+ },
135
+ enumerable: false,
136
+ configurable: true
137
+ });
138
+ Facet.prototype.toggleCollapse = function () {
139
+ this.collapsed = !this.collapsed;
140
+ this.storage.set("facets.".concat(this.field, ".collapsed"), this.collapsed);
141
+ };
142
+ return Facet;
143
+ }());
144
+ exports.Facet = Facet;
145
+ var RangeFacet = /** @class */ (function (_super) {
146
+ __extends(RangeFacet, _super);
147
+ function RangeFacet(services, storage, facet, facetMeta, config) {
148
+ var _a, _b;
149
+ var _this = _super.call(this, services, storage, facet, facetMeta, config) || this;
150
+ _this.range = {
151
+ low: 0,
152
+ high: 0,
153
+ };
154
+ _this.active = {
155
+ low: 0,
156
+ high: 0,
157
+ };
158
+ _this.step = facet === null || facet === void 0 ? void 0 : facet.step;
159
+ var storedRange = config.storeRange && _this.storage.get("facets.".concat(_this.field, ".range"));
160
+ if (storedRange && facet.filtered && (((_a = facet.range) === null || _a === void 0 ? void 0 : _a.low) > storedRange.low || ((_b = facet.range) === null || _b === void 0 ? void 0 : _b.high) < storedRange.high)) {
161
+ // range from API has shrunk
162
+ _this.range = _this.storage.get("facets.".concat(_this.field, ".range"));
163
+ }
164
+ else {
165
+ _this.storage.set("facets.".concat(_this.field, ".range"), facet.range);
166
+ _this.range = facet.range;
167
+ }
168
+ // TODO: Fix api
169
+ // needed when API returns no active (only seems to be when range.low == range.high)
170
+ _this.active = facet.active || facet.range;
171
+ _this.formatSeparator = (facetMeta === null || facetMeta === void 0 ? void 0 : facetMeta.formatSeparator) || '-';
172
+ _this.formatValue = (facetMeta === null || facetMeta === void 0 ? void 0 : facetMeta.formatValue) || '%01.2f';
173
+ (0, mobx_1.makeObservable)(_this, {
174
+ step: mobx_1.observable,
175
+ range: mobx_1.observable,
176
+ active: mobx_1.observable,
177
+ formatSeparator: mobx_1.observable,
178
+ formatValue: mobx_1.observable,
179
+ });
180
+ return _this;
181
+ }
182
+ Object.defineProperty(RangeFacet.prototype, "filteredCount", {
183
+ get: function () {
184
+ return Number(this.filtered);
185
+ },
186
+ enumerable: false,
187
+ configurable: true
188
+ });
189
+ return RangeFacet;
190
+ }(Facet));
191
+ exports.RangeFacet = RangeFacet;
192
+ var ValueFacet = /** @class */ (function (_super) {
193
+ __extends(ValueFacet, _super);
194
+ function ValueFacet(services, storage, facet, facetMeta, config) {
195
+ var _this = _super.call(this, services, storage, facet, facetMeta, config) || this;
196
+ _this.values = [];
197
+ _this.search = {
198
+ input: '',
199
+ };
200
+ _this.overflow = {
201
+ enabled: false,
202
+ limited: true,
203
+ limit: 0,
204
+ remaining: undefined,
205
+ setLimit: function (limit) {
206
+ if (limit != this.limit) {
207
+ this.enabled = true;
208
+ this.limit = limit;
209
+ this.calculate();
210
+ }
211
+ },
212
+ toggle: function (val) {
213
+ if (typeof val != 'undefined') {
214
+ _this.overflow.limited = val;
215
+ }
216
+ else {
217
+ _this.overflow.limited = !_this.overflow.limited;
218
+ }
219
+ _this.storage.set("facets.".concat(_this.field, ".overflow.limited"), _this.overflow.limited);
220
+ _this.overflow.calculate();
221
+ },
222
+ calculate: function () {
223
+ if (_this.overflow.limit > 0) {
224
+ var remaining = _this.values.length - _this.overflow.limit;
225
+ if (remaining > 0 && !_this.search.input) {
226
+ _this.overflow.enabled = true;
227
+ if (_this.overflow.limited) {
228
+ _this.overflow.remaining = remaining;
229
+ }
230
+ else {
231
+ _this.overflow.remaining = 0;
232
+ }
233
+ }
234
+ else {
235
+ _this.overflow.enabled = false;
236
+ }
237
+ }
238
+ },
239
+ };
240
+ _this.multiple = _this.multiple;
241
+ _this.values =
242
+ (facet.values &&
243
+ facet.values.map(function (value) {
244
+ var _a, _b;
245
+ switch (facet.type) {
246
+ case 'value':
247
+ if (facetMeta.display === 'hierarchy') {
248
+ var filteredValues = ((_a = facet === null || facet === void 0 ? void 0 : facet.values) === null || _a === void 0 ? void 0 : _a.filter(function (value) { return value.filtered; })) || [];
249
+ return new FacetHierarchyValue(services, _this, value, filteredValues);
250
+ }
251
+ else {
252
+ // converting values to strings to ensure UrlManager state matches state created from URL
253
+ value.value = (_b = value === null || value === void 0 ? void 0 : value.value) === null || _b === void 0 ? void 0 : _b.toString();
254
+ return new FacetValue(services, _this, value);
255
+ }
256
+ case 'range-buckets':
257
+ return new FacetRangeValue(services, _this, value);
258
+ }
259
+ })) ||
260
+ [];
261
+ if (config.pinFiltered && facetMeta.display !== 'hierarchy') {
262
+ _this.values.sort(function (a, b) { return Number(b.filtered) - Number(a.filtered); });
263
+ }
264
+ var overflowLimitedState = _this.storage.get("facets.".concat(_this.field, ".overflow.limited"));
265
+ if (typeof overflowLimitedState != 'undefined') {
266
+ _this.overflow.toggle(overflowLimitedState);
267
+ }
268
+ (0, mobx_1.makeObservable)(_this, {
269
+ values: mobx_1.observable,
270
+ search: mobx_1.observable,
271
+ multiple: mobx_1.observable,
272
+ overflow: mobx_1.observable,
273
+ refinedValues: mobx_1.computed,
274
+ });
275
+ (0, mobx_1.reaction)(function () { return _this.search.input; }, function () {
276
+ _this.overflow.calculate();
277
+ });
278
+ return _this;
279
+ }
280
+ Object.defineProperty(ValueFacet.prototype, "filteredCount", {
281
+ get: function () {
282
+ return this.values.filter(function (value) { return value === null || value === void 0 ? void 0 : value.filtered; }).length;
283
+ },
284
+ enumerable: false,
285
+ configurable: true
286
+ });
287
+ Object.defineProperty(ValueFacet.prototype, "refinedValues", {
288
+ get: function () {
289
+ var values = this.values || [];
290
+ if (this.search.input) {
291
+ var search_1 = new RegExp(escapeRegExp(this.search.input), 'i');
292
+ values = this.values.filter(function (value) { return String((value === null || value === void 0 ? void 0 : value.label) || '').match(search_1); });
293
+ }
294
+ if (this.overflow.enabled && this.overflow.limited) {
295
+ values = values.slice(0, this.overflow.limit);
296
+ }
297
+ return values;
298
+ },
299
+ enumerable: false,
300
+ configurable: true
301
+ });
302
+ return ValueFacet;
303
+ }(Facet));
304
+ exports.ValueFacet = ValueFacet;
305
+ var FacetValue = /** @class */ (function () {
306
+ function FacetValue(services, facet, value) {
307
+ Object.assign(this, value);
308
+ if (this.filtered) {
309
+ this.url = services.urlManager.remove('page').remove("filter.".concat(facet.field), value.value);
310
+ }
311
+ else {
312
+ var valueUrl = services.urlManager.remove('page');
313
+ if (facet.multiple == 'single') {
314
+ valueUrl = valueUrl === null || valueUrl === void 0 ? void 0 : valueUrl.remove("filter.".concat(facet.field));
315
+ }
316
+ this.url = valueUrl === null || valueUrl === void 0 ? void 0 : valueUrl.merge("filter.".concat(facet.field), value.value);
317
+ }
318
+ }
319
+ return FacetValue;
320
+ }());
321
+ exports.FacetValue = FacetValue;
322
+ var FacetHierarchyValue = /** @class */ (function (_super) {
323
+ __extends(FacetHierarchyValue, _super);
324
+ function FacetHierarchyValue(services, facet, value, filteredValues) {
325
+ var _a;
326
+ var _this = _super.call(this, services, facet, value) || this;
327
+ _this.level = 0;
328
+ _this.history = false;
329
+ if (value.value && facet.hierarchyDelimiter) {
330
+ _this.level = value.value.split(facet.hierarchyDelimiter).length;
331
+ }
332
+ if (facet.filtered && (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length)) {
333
+ var filteredLevel = (facet === null || facet === void 0 ? void 0 : facet.hierarchyDelimiter) && ((_a = filteredValues[0].value) === null || _a === void 0 ? void 0 : _a.split(facet.hierarchyDelimiter).length);
334
+ if (filteredLevel && _this.level <= filteredLevel) {
335
+ _this.history = true;
336
+ }
337
+ }
338
+ if (value.value) {
339
+ _this.url = services.urlManager.remove('page').set("filter.".concat(facet.field), value.value);
340
+ }
341
+ else {
342
+ _this.url = services.urlManager.remove('page').remove("filter.".concat(facet.field));
343
+ }
344
+ return _this;
345
+ }
346
+ return FacetHierarchyValue;
347
+ }(FacetValue));
348
+ exports.FacetHierarchyValue = FacetHierarchyValue;
349
+ var FacetRangeValue = /** @class */ (function () {
350
+ function FacetRangeValue(services, facet, value) {
351
+ Object.assign(this, value);
352
+ if (this.filtered) {
353
+ this.url = services.urlManager.remove('page').remove("filter.".concat(facet.field), [{ low: this.low, high: this.high }]);
354
+ }
355
+ else {
356
+ var valueUrl = services.urlManager.remove('page');
357
+ if (facet.multiple == 'single') {
358
+ valueUrl = valueUrl === null || valueUrl === void 0 ? void 0 : valueUrl.remove("filter.".concat(facet.field));
359
+ }
360
+ this.url = valueUrl === null || valueUrl === void 0 ? void 0 : valueUrl.merge("filter.".concat(facet.field), [{ low: this.low, high: this.high }]);
361
+ }
362
+ }
363
+ return FacetRangeValue;
364
+ }());
365
+ exports.FacetRangeValue = FacetRangeValue;
366
+ function escapeRegExp(string) {
367
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
368
+ }