@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,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lock = exports.AutocompleteStateStore = void 0;
4
+ var mobx_1 = require("mobx");
5
+ var AutocompleteStateStore = /** @class */ (function () {
6
+ function AutocompleteStateStore(params) {
7
+ this.focusedInput = undefined;
8
+ this.input = undefined;
9
+ this.source = 'input';
10
+ var services = (params || {}).services;
11
+ this.locks = {
12
+ terms: new Lock(false),
13
+ facets: new Lock(false),
14
+ };
15
+ this.url = services.urlManager;
16
+ (0, mobx_1.makeObservable)(this, {
17
+ focusedInput: mobx_1.observable,
18
+ locks: mobx_1.observable,
19
+ input: mobx_1.observable,
20
+ reset: mobx_1.action,
21
+ });
22
+ }
23
+ AutocompleteStateStore.prototype.reset = function () {
24
+ this.input = undefined;
25
+ this.locks.terms.reset();
26
+ this.locks.facets.reset();
27
+ };
28
+ return AutocompleteStateStore;
29
+ }());
30
+ exports.AutocompleteStateStore = AutocompleteStateStore;
31
+ var Lock = /** @class */ (function () {
32
+ function Lock(state) {
33
+ if (state === void 0) { state = false; }
34
+ this.state = this.startState = state;
35
+ }
36
+ Lock.prototype.reset = function () {
37
+ this.state = this.startState;
38
+ };
39
+ Object.defineProperty(Lock.prototype, "locked", {
40
+ get: function () {
41
+ return this.state;
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ Lock.prototype.lock = function () {
47
+ this.state = true;
48
+ };
49
+ Lock.prototype.unlock = function () {
50
+ this.state = false;
51
+ };
52
+ return Lock;
53
+ }());
54
+ exports.Lock = Lock;
@@ -0,0 +1,47 @@
1
+ import type { UrlManager } from '@athoscommerce/snap-url-manager';
2
+ import type { AutocompleteStoreConfig, StoreServices } from '../../types';
3
+ import { AutocompleteStateStore } from './AutocompleteStateStore';
4
+ import { AutocompleteResponseModel, AutocompleteRequestModelSearchSourceEnum } from '@athoscommerce/snapi-types';
5
+ type AutocompleteTermStoreConfig = Omit<TermData, 'data' | 'type'> & {
6
+ config: AutocompleteStoreConfig;
7
+ data: {
8
+ autocomplete: AutocompleteResponseModel;
9
+ };
10
+ functions: {
11
+ resetTerms: () => void;
12
+ };
13
+ state: {
14
+ rootState: AutocompleteStateStore;
15
+ };
16
+ };
17
+ export declare class AutocompleteTermStore extends Array<Term> {
18
+ static get [Symbol.species](): ArrayConstructor;
19
+ constructor(params: AutocompleteTermStoreConfig);
20
+ }
21
+ export type TermData = {
22
+ services: StoreServices;
23
+ functions: {
24
+ resetTerms: () => void;
25
+ };
26
+ state: {
27
+ rootState: AutocompleteStateStore;
28
+ };
29
+ data: {
30
+ term: {
31
+ active: boolean;
32
+ value: string;
33
+ };
34
+ terms: Term[];
35
+ };
36
+ type: AutocompleteRequestModelSearchSourceEnum;
37
+ };
38
+ export declare class Term {
39
+ active: boolean;
40
+ value: string;
41
+ preview: () => void;
42
+ url: UrlManager;
43
+ type: AutocompleteRequestModelSearchSourceEnum;
44
+ constructor(params: TermData);
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=AutocompleteTermStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteTermStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/AutocompleteTermStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAC;AAEjH,KAAK,2BAA2B,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACpE,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,EAAE;QACL,YAAY,EAAE,yBAAyB,CAAC;KACxC,CAAC;IACF,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,IAAI,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACN,SAAS,EAAE,sBAAsB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,KAAK,CAAC,IAAI,CAAC;IACrD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,2BAA2B;CAkC/C;AAED,MAAM,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,IAAI,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACN,SAAS,EAAE,sBAAsB,CAAC;KAClC,CAAC;IACF,IAAI,EAAE;QACL,IAAI,EAAE;YACL,MAAM,EAAE,OAAO,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACd,CAAC;QACF,KAAK,EAAE,IAAI,EAAE,CAAC;KACd,CAAC;IACF,IAAI,EAAE,wCAAwC,CAAC;CAC/C,CAAC;AAEF,qBAAa,IAAI;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;IAChB,IAAI,EAAE,wCAAwC,CAAC;gBAE1C,MAAM,EAAE,QAAQ;CA4B5B"}
@@ -0,0 +1,102 @@
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
29
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
30
+ if (ar || !(i in from)) {
31
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
32
+ ar[i] = from[i];
33
+ }
34
+ }
35
+ return to.concat(ar || Array.prototype.slice.call(from));
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.Term = exports.AutocompleteTermStore = void 0;
39
+ var mobx_1 = require("mobx");
40
+ var AutocompleteTermStore = /** @class */ (function (_super) {
41
+ __extends(AutocompleteTermStore, _super);
42
+ function AutocompleteTermStore(params) {
43
+ var data = (params || {}).data;
44
+ var _a = (data === null || data === void 0 ? void 0 : data.autocomplete) || {}, autocomplete = _a.autocomplete, search = _a.search;
45
+ var suggestions = __spreadArray([], ((autocomplete === null || autocomplete === void 0 ? void 0 : autocomplete.alternatives) ? autocomplete.alternatives : []).map(function (term) { return term.text; }), true);
46
+ if ((autocomplete === null || autocomplete === void 0 ? void 0 : autocomplete.correctedQuery) && (search === null || search === void 0 ? void 0 : search.query) && autocomplete.correctedQuery.toLowerCase() != search.query.toLowerCase()) {
47
+ // the query was corrected
48
+ suggestions.unshift(autocomplete.correctedQuery);
49
+ }
50
+ (search === null || search === void 0 ? void 0 : search.query) && suggestions.unshift(search.query);
51
+ var terms = [];
52
+ suggestions.map(function (term, index) {
53
+ return terms.push(new Term(__assign(__assign({}, params), { data: {
54
+ term: {
55
+ active: index === 0,
56
+ value: term,
57
+ },
58
+ terms: terms,
59
+ }, functions: params.functions, state: params.state, type: 'suggested' })));
60
+ });
61
+ return _super.apply(this, terms) || this;
62
+ }
63
+ Object.defineProperty(AutocompleteTermStore, Symbol.species, {
64
+ get: function () {
65
+ return Array;
66
+ },
67
+ enumerable: false,
68
+ configurable: true
69
+ });
70
+ return AutocompleteTermStore;
71
+ }(Array));
72
+ exports.AutocompleteTermStore = AutocompleteTermStore;
73
+ var Term = /** @class */ (function () {
74
+ function Term(params) {
75
+ var _this = this;
76
+ var _a;
77
+ var _b = params || {}, services = _b.services, functions = _b.functions, state = _b.state, data = _b.data, type = _b.type;
78
+ var _c = data || {}, term = _c.term, terms = _c.terms;
79
+ this.active = term === null || term === void 0 ? void 0 : term.active;
80
+ this.value = term === null || term === void 0 ? void 0 : term.value;
81
+ this.type = type;
82
+ this.url = (_a = services === null || services === void 0 ? void 0 : services.urlManager) === null || _a === void 0 ? void 0 : _a.set({ query: this.value });
83
+ this.preview = function () {
84
+ var _a;
85
+ functions.resetTerms();
86
+ terms.map(function (term) {
87
+ term.active = false;
88
+ });
89
+ state.rootState.source = type;
90
+ _this.active = true;
91
+ state.rootState.locks.terms.lock();
92
+ state.rootState.locks.facets.unlock();
93
+ (_a = _this.url) === null || _a === void 0 ? void 0 : _a.set({ query: _this.value }).go();
94
+ };
95
+ (0, mobx_1.makeObservable)(this, {
96
+ active: mobx_1.observable,
97
+ value: mobx_1.observable,
98
+ });
99
+ }
100
+ return Term;
101
+ }());
102
+ exports.Term = Term;
@@ -0,0 +1,20 @@
1
+ import { TrendingResponseModel } from '@athoscommerce/snap-client';
2
+ import { Term, TermData } from './AutocompleteTermStore';
3
+ import { AutocompleteStateStore } from './AutocompleteStateStore';
4
+ type AutocompleteTrendingStoreConfig = Omit<TermData, 'data' | 'type'> & {
5
+ data: {
6
+ trending: TrendingResponseModel;
7
+ };
8
+ functions: {
9
+ resetTerms: () => void;
10
+ };
11
+ state: {
12
+ rootState: AutocompleteStateStore;
13
+ };
14
+ };
15
+ export declare class AutocompleteTrendingStore extends Array<Term> {
16
+ static get [Symbol.species](): ArrayConstructor;
17
+ constructor(params: AutocompleteTrendingStoreConfig);
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=AutocompleteTrendingStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteTrendingStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/AutocompleteTrendingStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,KAAK,+BAA+B,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACxE,IAAI,EAAE;QACL,QAAQ,EAAE,qBAAqB,CAAC;KAChC,CAAC;IACF,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,IAAI,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACN,SAAS,EAAE,sBAAsB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,qBAAa,yBAA0B,SAAQ,KAAK,CAAC,IAAI,CAAC;IACzD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,+BAA+B;CAwBnD"}
@@ -0,0 +1,58 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.AutocompleteTrendingStore = void 0;
30
+ var AutocompleteTermStore_1 = require("./AutocompleteTermStore");
31
+ var AutocompleteTrendingStore = /** @class */ (function (_super) {
32
+ __extends(AutocompleteTrendingStore, _super);
33
+ function AutocompleteTrendingStore(params) {
34
+ var _a;
35
+ var terms = [];
36
+ var data = (params || {}).data;
37
+ var trending = ((data === null || data === void 0 ? void 0 : data.trending) || {}).trending;
38
+ (_a = trending === null || trending === void 0 ? void 0 : trending.queries) === null || _a === void 0 ? void 0 : _a.map(function (term) {
39
+ terms.push(new AutocompleteTermStore_1.Term(__assign(__assign({}, params), { data: {
40
+ term: {
41
+ active: false,
42
+ value: term.searchQuery,
43
+ },
44
+ terms: terms,
45
+ }, functions: params.functions, state: params.state, type: 'popular' })));
46
+ });
47
+ return _super.apply(this, terms) || this;
48
+ }
49
+ Object.defineProperty(AutocompleteTrendingStore, Symbol.species, {
50
+ get: function () {
51
+ return Array;
52
+ },
53
+ enumerable: false,
54
+ configurable: true
55
+ });
56
+ return AutocompleteTrendingStore;
57
+ }(Array));
58
+ exports.AutocompleteTrendingStore = AutocompleteTrendingStore;
@@ -0,0 +1,7 @@
1
+ export { AutocompleteFacetStore } from './AutocompleteFacetStore';
2
+ export { AutocompleteQueryStore } from './AutocompleteQueryStore';
3
+ export { AutocompleteStateStore } from './AutocompleteStateStore';
4
+ export { AutocompleteTermStore, Term } from './AutocompleteTermStore';
5
+ export { AutocompleteTrendingStore } from './AutocompleteTrendingStore';
6
+ export { AutocompleteHistoryStore } from './AutocompleteHistoryStore';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutocompleteHistoryStore = exports.AutocompleteTrendingStore = exports.Term = exports.AutocompleteTermStore = exports.AutocompleteStateStore = exports.AutocompleteQueryStore = exports.AutocompleteFacetStore = void 0;
4
+ var AutocompleteFacetStore_1 = require("./AutocompleteFacetStore");
5
+ Object.defineProperty(exports, "AutocompleteFacetStore", { enumerable: true, get: function () { return AutocompleteFacetStore_1.AutocompleteFacetStore; } });
6
+ var AutocompleteQueryStore_1 = require("./AutocompleteQueryStore");
7
+ Object.defineProperty(exports, "AutocompleteQueryStore", { enumerable: true, get: function () { return AutocompleteQueryStore_1.AutocompleteQueryStore; } });
8
+ var AutocompleteStateStore_1 = require("./AutocompleteStateStore");
9
+ Object.defineProperty(exports, "AutocompleteStateStore", { enumerable: true, get: function () { return AutocompleteStateStore_1.AutocompleteStateStore; } });
10
+ var AutocompleteTermStore_1 = require("./AutocompleteTermStore");
11
+ Object.defineProperty(exports, "AutocompleteTermStore", { enumerable: true, get: function () { return AutocompleteTermStore_1.AutocompleteTermStore; } });
12
+ Object.defineProperty(exports, "Term", { enumerable: true, get: function () { return AutocompleteTermStore_1.Term; } });
13
+ var AutocompleteTrendingStore_1 = require("./AutocompleteTrendingStore");
14
+ Object.defineProperty(exports, "AutocompleteTrendingStore", { enumerable: true, get: function () { return AutocompleteTrendingStore_1.AutocompleteTrendingStore; } });
15
+ var AutocompleteHistoryStore_1 = require("./AutocompleteHistoryStore");
16
+ Object.defineProperty(exports, "AutocompleteHistoryStore", { enumerable: true, get: function () { return AutocompleteHistoryStore_1.AutocompleteHistoryStore; } });
@@ -0,0 +1,15 @@
1
+ import type { Middleware } from '@athoscommerce/snap-event-manager';
2
+ import type { Product } from '../Search/Stores';
3
+ export declare class CartStore {
4
+ items: Product[];
5
+ private eventManager;
6
+ constructor();
7
+ on<T>(event: string, ...func: Middleware<T>[]): void;
8
+ get count(): number;
9
+ get price(): number;
10
+ get msrp(): number;
11
+ addItems(items: Product[]): void;
12
+ removeItems(items: Product[]): void;
13
+ reset(): void;
14
+ }
15
+ //# sourceMappingURL=CartStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartStore.d.ts","sourceRoot":"","sources":["../../../src/Cart/CartStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,SAAS;IACd,KAAK,EAAE,OAAO,EAAE,CAAM;IAC7B,OAAO,CAAC,YAAY,CAAC;;IAYd,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAI3D,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED,IAAI,KAAK,IAAI,MAAM,CAOlB;IAED,IAAI,IAAI,IAAI,MAAM,CAUjB;IAEM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAahC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAsBnC,KAAK,IAAI,IAAI;CAIpB"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CartStore = void 0;
13
+ var mobx_1 = require("mobx");
14
+ var snap_event_manager_1 = require("@athoscommerce/snap-event-manager");
15
+ var CartStore = /** @class */ (function () {
16
+ function CartStore() {
17
+ this.items = [];
18
+ (0, mobx_1.makeObservable)(this, {
19
+ items: mobx_1.observable,
20
+ price: mobx_1.computed,
21
+ count: mobx_1.computed,
22
+ msrp: mobx_1.computed,
23
+ });
24
+ this.eventManager = new snap_event_manager_1.EventManager();
25
+ }
26
+ CartStore.prototype.on = function (event) {
27
+ var _a;
28
+ var func = [];
29
+ for (var _i = 1; _i < arguments.length; _i++) {
30
+ func[_i - 1] = arguments[_i];
31
+ }
32
+ (_a = this.eventManager).on.apply(_a, __spreadArray([event], func, false));
33
+ };
34
+ Object.defineProperty(CartStore.prototype, "count", {
35
+ get: function () {
36
+ var count = 0;
37
+ this.items.forEach(function (item) {
38
+ count += item.quantity;
39
+ });
40
+ return count;
41
+ },
42
+ enumerable: false,
43
+ configurable: true
44
+ });
45
+ Object.defineProperty(CartStore.prototype, "price", {
46
+ get: function () {
47
+ var newPrice = 0;
48
+ this.items.forEach(function (item) {
49
+ var _a;
50
+ // account for string prices, and floating 0s.
51
+ newPrice = (newPrice * 100 + +(+((((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.price) || 0) * 100) * item.quantity)) / 100 || 0;
52
+ });
53
+ return newPrice;
54
+ },
55
+ enumerable: false,
56
+ configurable: true
57
+ });
58
+ Object.defineProperty(CartStore.prototype, "msrp", {
59
+ get: function () {
60
+ var newPrice = 0;
61
+ this.items.forEach(function (item) {
62
+ var _a, _b;
63
+ // account for string prices, and floating 0s.
64
+ newPrice =
65
+ (newPrice * 100 +
66
+ +((+((((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.msrp) || 0) * 100) || +((((_b = item.display.mappings.core) === null || _b === void 0 ? void 0 : _b.price) || 0) * 100) || 0) * item.quantity)) /
67
+ 100 || 0;
68
+ });
69
+ return newPrice;
70
+ },
71
+ enumerable: false,
72
+ configurable: true
73
+ });
74
+ CartStore.prototype.addItems = function (items) {
75
+ var _this = this;
76
+ items.forEach(function (item) {
77
+ var idx = _this.items.findIndex(function (result) { return result.id == item.id; });
78
+ //is it in the items list?
79
+ if (idx == -1) {
80
+ _this.items.push(item);
81
+ }
82
+ });
83
+ this.eventManager.fire('addItems', { cart: this, items: items });
84
+ };
85
+ CartStore.prototype.removeItems = function (items) {
86
+ var _this = this;
87
+ var newIds = __spreadArray([], this.items, true);
88
+ items.forEach(function (item) {
89
+ var idx = newIds.findIndex(function (result) { return result.id == item.id; });
90
+ //is it in the selected items?
91
+ if (idx > -1) {
92
+ // remove it entirely
93
+ newIds.splice(idx, 1);
94
+ // when emptied fire empty event
95
+ if (newIds.length == 0) {
96
+ _this.eventManager.fire('emptied', { cart: _this });
97
+ }
98
+ }
99
+ });
100
+ this.items = newIds;
101
+ this.eventManager.fire('removeItems', { cart: this, items: items });
102
+ };
103
+ CartStore.prototype.reset = function () {
104
+ this.items = [];
105
+ this.eventManager.fire('reset', { cart: this });
106
+ };
107
+ return CartStore;
108
+ }());
109
+ exports.CartStore = CartStore;
@@ -0,0 +1,27 @@
1
+ import type { SearchResponseModel, MetaResponseModel } from '@athoscommerce/snapi-types';
2
+ import { AbstractStore } from '../Abstract/AbstractStore';
3
+ import { SearchPaginationStore } from '../Search/Stores';
4
+ import { StorageStore } from '../Storage/StorageStore';
5
+ import { FinderSelectionStore } from './Stores';
6
+ import type { FinderStoreConfig, StoreServices, SelectedSelection } from '../types';
7
+ import { UrlManager } from '@athoscommerce/snap-url-manager';
8
+ import { MetaStore } from '../Meta/MetaStore';
9
+ export declare class FinderStore extends AbstractStore<FinderStoreConfig> {
10
+ services: StoreServices;
11
+ meta?: MetaStore;
12
+ storage: StorageStore;
13
+ persistedStorage: StorageStore;
14
+ pagination: SearchPaginationStore;
15
+ selections: FinderSelectionStore;
16
+ persisted: boolean;
17
+ constructor(config: FinderStoreConfig, services: StoreServices);
18
+ setService(name: keyof StoreServices, service: UrlManager): void;
19
+ save: () => void;
20
+ reset: () => void;
21
+ loadPersisted(): void;
22
+ update(data?: {
23
+ meta?: MetaResponseModel;
24
+ search?: SearchResponseModel;
25
+ }, selectedSelections?: SelectedSelection[]): void;
26
+ }
27
+ //# sourceMappingURL=FinderStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FinderStore.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACzD,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAG,YAAY,CAAC;IAChC,UAAU,EAAG,qBAAqB,CAAC;IACnC,UAAU,EAAG,oBAAoB,CAAC;IAClC,SAAS,EAAE,OAAO,CAAS;gBAEtB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IA0BvD,UAAU,CAAC,IAAI,EAAE,MAAM,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAQhE,IAAI,EAAE,MAAM,IAAI,CAAY;IAE5B,KAAK,QAAO,IAAI,CAWrB;IAEK,aAAa,IAAI,IAAI;IAyBrB,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,EAAE,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI;CAsDhI"}
@@ -0,0 +1,156 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FinderStore = void 0;
30
+ var mobx_1 = require("mobx");
31
+ var AbstractStore_1 = require("../Abstract/AbstractStore");
32
+ var Stores_1 = require("../Search/Stores");
33
+ var StorageStore_1 = require("../Storage/StorageStore");
34
+ var Stores_2 = require("./Stores");
35
+ var MetaStore_1 = require("../Meta/MetaStore");
36
+ var FinderStore = /** @class */ (function (_super) {
37
+ __extends(FinderStore, _super);
38
+ function FinderStore(config, services) {
39
+ var _a, _b;
40
+ var _this = _super.call(this, config) || this;
41
+ _this.persisted = false;
42
+ // providing access to response data without exposing it
43
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
44
+ _this.save = function () { };
45
+ _this.reset = function () {
46
+ var _a, _b;
47
+ if ((_a = _this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) {
48
+ (_b = _this.persistedStorage) === null || _b === void 0 ? void 0 : _b.clear();
49
+ _this.persisted = false;
50
+ }
51
+ if (_this.services.urlManager.state.filter) {
52
+ _this.storage.clear();
53
+ _this.selections = [];
54
+ _this.loaded = false;
55
+ }
56
+ };
57
+ if (typeof services != 'object' || typeof ((_a = services.urlManager) === null || _a === void 0 ? void 0 : _a.subscribe) != 'function') {
58
+ throw new Error("Invalid service 'urlManager' passed to AutocompleteStore. Missing \"subscribe\" function.");
59
+ }
60
+ _this.services = services;
61
+ if ((_b = _this.config.persist) === null || _b === void 0 ? void 0 : _b.enabled) {
62
+ _this.persistedStorage = new StorageStore_1.StorageStore({
63
+ type: 'local',
64
+ key: "athos-".concat(_this.config.id, "-persisted"),
65
+ });
66
+ }
67
+ _this.storage = new StorageStore_1.StorageStore();
68
+ _this.update();
69
+ (0, mobx_1.makeObservable)(_this, {
70
+ selections: mobx_1.observable,
71
+ pagination: mobx_1.observable,
72
+ });
73
+ return _this;
74
+ }
75
+ FinderStore.prototype.setService = function (name, service) {
76
+ if (this.services[name] && service) {
77
+ this.services[name] = service;
78
+ }
79
+ };
80
+ FinderStore.prototype.loadPersisted = function () {
81
+ var _a;
82
+ if (((_a = this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) && this.persistedStorage) {
83
+ var date = this.persistedStorage.get('date');
84
+ var data = this.persistedStorage.get('data');
85
+ var config = this.persistedStorage.get('config');
86
+ var selections = this.persistedStorage.get('selections');
87
+ var isExpired = this.config.persist.expiration && Date.now() - date > this.config.persist.expiration;
88
+ if (data && selections.filter(function (selection) { return selection.selected; }).length) {
89
+ // stringify config without middleware and plugins (they may be using variable data)
90
+ var stringifiedPersistedConfig = JSON.stringify(__assign(__assign({}, config), { plugins: [], middleware: {} }));
91
+ var stringifiedConfig = JSON.stringify(__assign(__assign({}, this.config), { plugins: [], middleware: {} }));
92
+ // if the config has not changed and the data is not expired then persist
93
+ if (stringifiedPersistedConfig === stringifiedConfig && !isExpired) {
94
+ this.update(data, selections);
95
+ this.persisted = true;
96
+ this.services.urlManager.go();
97
+ }
98
+ else {
99
+ this.reset();
100
+ }
101
+ }
102
+ }
103
+ };
104
+ FinderStore.prototype.update = function (data, selectedSelections) {
105
+ var _this = this;
106
+ var _a = data || {}, meta = _a.meta, search = _a.search;
107
+ this.error = undefined;
108
+ this.loaded = !!(search === null || search === void 0 ? void 0 : search.pagination);
109
+ this.meta = new MetaStore_1.MetaStore({
110
+ data: { meta: meta || {} },
111
+ });
112
+ this.pagination = new Stores_1.SearchPaginationStore({
113
+ config: this.config,
114
+ services: this.services,
115
+ data: {
116
+ search: search,
117
+ meta: this.meta.data,
118
+ },
119
+ });
120
+ this.selections = new Stores_2.FinderSelectionStore({
121
+ config: this.config,
122
+ services: this.services,
123
+ stores: {
124
+ storage: this.storage,
125
+ },
126
+ state: {
127
+ persisted: this.persisted,
128
+ },
129
+ data: {
130
+ search: search,
131
+ meta: this.meta.data,
132
+ selections: selectedSelections || [],
133
+ },
134
+ });
135
+ // providing access to response data without exposing it
136
+ this.save = function () {
137
+ var _a, _b;
138
+ if (((_a = _this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) && _this.persistedStorage && ((_b = _this === null || _this === void 0 ? void 0 : _this.selections) === null || _b === void 0 ? void 0 : _b.filter(function (selection) { return selection.selected; }).length)) {
139
+ _this.persistedStorage.set('config', _this.config);
140
+ _this.persistedStorage.set('data', data);
141
+ _this.persistedStorage.set('date', Date.now());
142
+ _this.persistedStorage.set('selections', _this.selections.map(function (selection) {
143
+ return {
144
+ selected: selection.selected,
145
+ data: selection.data,
146
+ facet: selection.facet,
147
+ };
148
+ }));
149
+ }
150
+ };
151
+ this.error = undefined;
152
+ this.loaded = Boolean(search === null || search === void 0 ? void 0 : search.pagination);
153
+ };
154
+ return FinderStore;
155
+ }(AbstractStore_1.AbstractStore));
156
+ exports.FinderStore = FinderStore;