@searchspring/snap-store-mobx 0.20.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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -0
  3. package/dist/cjs/Abstract/AbstractStore.d.ts +18 -0
  4. package/dist/cjs/Abstract/AbstractStore.d.ts.map +1 -0
  5. package/dist/cjs/Abstract/AbstractStore.js +31 -0
  6. package/dist/cjs/Autocomplete/AutocompleteStore.d.ts +32 -0
  7. package/dist/cjs/Autocomplete/AutocompleteStore.d.ts.map +1 -0
  8. package/dist/cjs/Autocomplete/AutocompleteStore.js +121 -0
  9. package/dist/cjs/Autocomplete/Stores/FacetStore.d.ts +9 -0
  10. package/dist/cjs/Autocomplete/Stores/FacetStore.d.ts.map +1 -0
  11. package/dist/cjs/Autocomplete/Stores/FacetStore.js +69 -0
  12. package/dist/cjs/Autocomplete/Stores/QueryStore.d.ts +15 -0
  13. package/dist/cjs/Autocomplete/Stores/QueryStore.d.ts.map +1 -0
  14. package/dist/cjs/Autocomplete/Stores/QueryStore.js +30 -0
  15. package/dist/cjs/Autocomplete/Stores/StateStore.d.ts +23 -0
  16. package/dist/cjs/Autocomplete/Stores/StateStore.d.ts.map +1 -0
  17. package/dist/cjs/Autocomplete/Stores/StateStore.js +52 -0
  18. package/dist/cjs/Autocomplete/Stores/TermStore.d.ts +19 -0
  19. package/dist/cjs/Autocomplete/Stores/TermStore.d.ts.map +1 -0
  20. package/dist/cjs/Autocomplete/Stores/TermStore.js +86 -0
  21. package/dist/cjs/Autocomplete/Stores/TrendingStore.d.ts +7 -0
  22. package/dist/cjs/Autocomplete/Stores/TrendingStore.d.ts.map +1 -0
  23. package/dist/cjs/Autocomplete/Stores/TrendingStore.js +44 -0
  24. package/dist/cjs/Autocomplete/Stores/index.d.ts +6 -0
  25. package/dist/cjs/Autocomplete/Stores/index.d.ts.map +1 -0
  26. package/dist/cjs/Autocomplete/Stores/index.js +13 -0
  27. package/dist/cjs/Finder/FinderStore.d.ts +21 -0
  28. package/dist/cjs/Finder/FinderStore.d.ts.map +1 -0
  29. package/dist/cjs/Finder/FinderStore.js +56 -0
  30. package/dist/cjs/Finder/Stores/SelectionStore.d.ts +8 -0
  31. package/dist/cjs/Finder/Stores/SelectionStore.d.ts.map +1 -0
  32. package/dist/cjs/Finder/Stores/SelectionStore.js +232 -0
  33. package/dist/cjs/Finder/Stores/index.d.ts +2 -0
  34. package/dist/cjs/Finder/Stores/index.d.ts.map +1 -0
  35. package/dist/cjs/Finder/Stores/index.js +5 -0
  36. package/dist/cjs/Recommendation/RecommendationStore.d.ts +14 -0
  37. package/dist/cjs/Recommendation/RecommendationStore.d.ts.map +1 -0
  38. package/dist/cjs/Recommendation/RecommendationStore.js +51 -0
  39. package/dist/cjs/Recommendation/Stores/ProfileStore.d.ts +8 -0
  40. package/dist/cjs/Recommendation/Stores/ProfileStore.d.ts.map +1 -0
  41. package/dist/cjs/Recommendation/Stores/ProfileStore.js +22 -0
  42. package/dist/cjs/Recommendation/Stores/index.d.ts +2 -0
  43. package/dist/cjs/Recommendation/Stores/index.d.ts.map +1 -0
  44. package/dist/cjs/Recommendation/Stores/index.js +5 -0
  45. package/dist/cjs/Search/SearchStore.d.ts +26 -0
  46. package/dist/cjs/Search/SearchStore.d.ts.map +1 -0
  47. package/dist/cjs/Search/SearchStore.js +61 -0
  48. package/dist/cjs/Search/Stores/FacetStore.d.ts +8 -0
  49. package/dist/cjs/Search/Stores/FacetStore.d.ts.map +1 -0
  50. package/dist/cjs/Search/Stores/FacetStore.js +317 -0
  51. package/dist/cjs/Search/Stores/FilterStore.d.ts +7 -0
  52. package/dist/cjs/Search/Stores/FilterStore.d.ts.map +1 -0
  53. package/dist/cjs/Search/Stores/FilterStore.js +100 -0
  54. package/dist/cjs/Search/Stores/MerchandisingStore.d.ts +20 -0
  55. package/dist/cjs/Search/Stores/MerchandisingStore.d.ts.map +1 -0
  56. package/dist/cjs/Search/Stores/MerchandisingStore.js +59 -0
  57. package/dist/cjs/Search/Stores/PaginationStore.d.ts +40 -0
  58. package/dist/cjs/Search/Stores/PaginationStore.d.ts.map +1 -0
  59. package/dist/cjs/Search/Stores/PaginationStore.js +190 -0
  60. package/dist/cjs/Search/Stores/QueryStore.d.ts +16 -0
  61. package/dist/cjs/Search/Stores/QueryStore.d.ts.map +1 -0
  62. package/dist/cjs/Search/Stores/QueryStore.js +34 -0
  63. package/dist/cjs/Search/Stores/ResultStore.d.ts +7 -0
  64. package/dist/cjs/Search/Stores/ResultStore.d.ts.map +1 -0
  65. package/dist/cjs/Search/Stores/ResultStore.js +156 -0
  66. package/dist/cjs/Search/Stores/SortingStore.d.ts +21 -0
  67. package/dist/cjs/Search/Stores/SortingStore.d.ts.map +1 -0
  68. package/dist/cjs/Search/Stores/SortingStore.js +75 -0
  69. package/dist/cjs/Search/Stores/index.d.ts +8 -0
  70. package/dist/cjs/Search/Stores/index.d.ts.map +1 -0
  71. package/dist/cjs/Search/Stores/index.js +17 -0
  72. package/dist/cjs/Storage/StorageStore.d.ts +25 -0
  73. package/dist/cjs/Storage/StorageStore.d.ts.map +1 -0
  74. package/dist/cjs/Storage/StorageStore.js +130 -0
  75. package/dist/cjs/index.d.ts +8 -0
  76. package/dist/cjs/index.d.ts.map +1 -0
  77. package/dist/cjs/index.js +27 -0
  78. package/dist/cjs/types.d.ts +81 -0
  79. package/dist/cjs/types.d.ts.map +1 -0
  80. package/dist/cjs/types.js +9 -0
  81. package/dist/esm/Abstract/AbstractStore.d.ts +18 -0
  82. package/dist/esm/Abstract/AbstractStore.d.ts.map +1 -0
  83. package/dist/esm/Abstract/AbstractStore.js +25 -0
  84. package/dist/esm/Autocomplete/AutocompleteStore.d.ts +32 -0
  85. package/dist/esm/Autocomplete/AutocompleteStore.d.ts.map +1 -0
  86. package/dist/esm/Autocomplete/AutocompleteStore.js +94 -0
  87. package/dist/esm/Autocomplete/Stores/FacetStore.d.ts +9 -0
  88. package/dist/esm/Autocomplete/Stores/FacetStore.d.ts.map +1 -0
  89. package/dist/esm/Autocomplete/Stores/FacetStore.js +29 -0
  90. package/dist/esm/Autocomplete/Stores/QueryStore.d.ts +15 -0
  91. package/dist/esm/Autocomplete/Stores/QueryStore.d.ts.map +1 -0
  92. package/dist/esm/Autocomplete/Stores/QueryStore.js +24 -0
  93. package/dist/esm/Autocomplete/Stores/StateStore.d.ts +23 -0
  94. package/dist/esm/Autocomplete/Stores/StateStore.d.ts.map +1 -0
  95. package/dist/esm/Autocomplete/Stores/StateStore.js +40 -0
  96. package/dist/esm/Autocomplete/Stores/TermStore.d.ts +19 -0
  97. package/dist/esm/Autocomplete/Stores/TermStore.d.ts.map +1 -0
  98. package/dist/esm/Autocomplete/Stores/TermStore.js +42 -0
  99. package/dist/esm/Autocomplete/Stores/TrendingStore.d.ts +7 -0
  100. package/dist/esm/Autocomplete/Stores/TrendingStore.d.ts.map +1 -0
  101. package/dist/esm/Autocomplete/Stores/TrendingStore.js +16 -0
  102. package/dist/esm/Autocomplete/Stores/index.d.ts +6 -0
  103. package/dist/esm/Autocomplete/Stores/index.d.ts.map +1 -0
  104. package/dist/esm/Autocomplete/Stores/index.js +5 -0
  105. package/dist/esm/Finder/FinderStore.d.ts +21 -0
  106. package/dist/esm/Finder/FinderStore.d.ts.map +1 -0
  107. package/dist/esm/Finder/FinderStore.js +33 -0
  108. package/dist/esm/Finder/Stores/SelectionStore.d.ts +8 -0
  109. package/dist/esm/Finder/Stores/SelectionStore.d.ts.map +1 -0
  110. package/dist/esm/Finder/Stores/SelectionStore.js +171 -0
  111. package/dist/esm/Finder/Stores/index.d.ts +2 -0
  112. package/dist/esm/Finder/Stores/index.d.ts.map +1 -0
  113. package/dist/esm/Finder/Stores/index.js +1 -0
  114. package/dist/esm/Recommendation/RecommendationStore.d.ts +14 -0
  115. package/dist/esm/Recommendation/RecommendationStore.d.ts.map +1 -0
  116. package/dist/esm/Recommendation/RecommendationStore.js +28 -0
  117. package/dist/esm/Recommendation/Stores/ProfileStore.d.ts +8 -0
  118. package/dist/esm/Recommendation/Stores/ProfileStore.d.ts.map +1 -0
  119. package/dist/esm/Recommendation/Stores/ProfileStore.js +17 -0
  120. package/dist/esm/Recommendation/Stores/index.d.ts +2 -0
  121. package/dist/esm/Recommendation/Stores/index.d.ts.map +1 -0
  122. package/dist/esm/Recommendation/Stores/index.js +1 -0
  123. package/dist/esm/Search/SearchStore.d.ts +26 -0
  124. package/dist/esm/Search/SearchStore.d.ts.map +1 -0
  125. package/dist/esm/Search/SearchStore.js +38 -0
  126. package/dist/esm/Search/Stores/FacetStore.d.ts +8 -0
  127. package/dist/esm/Search/Stores/FacetStore.d.ts.map +1 -0
  128. package/dist/esm/Search/Stores/FacetStore.js +264 -0
  129. package/dist/esm/Search/Stores/FilterStore.d.ts +7 -0
  130. package/dist/esm/Search/Stores/FilterStore.d.ts.map +1 -0
  131. package/dist/esm/Search/Stores/FilterStore.js +68 -0
  132. package/dist/esm/Search/Stores/MerchandisingStore.d.ts +20 -0
  133. package/dist/esm/Search/Stores/MerchandisingStore.d.ts.map +1 -0
  134. package/dist/esm/Search/Stores/MerchandisingStore.js +32 -0
  135. package/dist/esm/Search/Stores/PaginationStore.d.ts +40 -0
  136. package/dist/esm/Search/Stores/PaginationStore.d.ts.map +1 -0
  137. package/dist/esm/Search/Stores/PaginationStore.js +148 -0
  138. package/dist/esm/Search/Stores/QueryStore.d.ts +16 -0
  139. package/dist/esm/Search/Stores/QueryStore.d.ts.map +1 -0
  140. package/dist/esm/Search/Stores/QueryStore.js +28 -0
  141. package/dist/esm/Search/Stores/ResultStore.d.ts +7 -0
  142. package/dist/esm/Search/Stores/ResultStore.d.ts.map +1 -0
  143. package/dist/esm/Search/Stores/ResultStore.js +117 -0
  144. package/dist/esm/Search/Stores/SortingStore.d.ts +21 -0
  145. package/dist/esm/Search/Stores/SortingStore.d.ts.map +1 -0
  146. package/dist/esm/Search/Stores/SortingStore.js +65 -0
  147. package/dist/esm/Search/Stores/index.d.ts +8 -0
  148. package/dist/esm/Search/Stores/index.d.ts.map +1 -0
  149. package/dist/esm/Search/Stores/index.js +7 -0
  150. package/dist/esm/Storage/StorageStore.d.ts +25 -0
  151. package/dist/esm/Storage/StorageStore.d.ts.map +1 -0
  152. package/dist/esm/Storage/StorageStore.js +123 -0
  153. package/dist/esm/index.d.ts +8 -0
  154. package/dist/esm/index.d.ts.map +1 -0
  155. package/dist/esm/index.js +7 -0
  156. package/dist/esm/types.d.ts +81 -0
  157. package/dist/esm/types.d.ts.map +1 -0
  158. package/dist/esm/types.js +6 -0
  159. package/package.json +34 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageType = exports.StorageStore = void 0;
4
+ var snap_toolbox_1 = require("@searchspring/snap-toolbox");
5
+ var utils = {
6
+ cookies: snap_toolbox_1.cookies,
7
+ };
8
+ var StorageStore = /** @class */ (function () {
9
+ function StorageStore(config) {
10
+ var _a, _b;
11
+ this.type = null;
12
+ this.expiration = 31536000000; // one year (ms)
13
+ this.sameSite = undefined;
14
+ this.key = 'ss-storage';
15
+ this.state = {};
16
+ if (config) {
17
+ if (config.key.trim() !== '') {
18
+ this.key = config.key.trim();
19
+ }
20
+ if ((_a = config === null || config === void 0 ? void 0 : config.cookie) === null || _a === void 0 ? void 0 : _a.expiration) {
21
+ this.expiration = config.cookie.expiration;
22
+ }
23
+ if ((_b = config === null || config === void 0 ? void 0 : config.cookie) === null || _b === void 0 ? void 0 : _b.sameSite) {
24
+ this.sameSite = config.cookie.sameSite;
25
+ }
26
+ switch (config.type) {
27
+ case StorageType.SESSION:
28
+ this.type = snap_toolbox_1.featureFlags.storage ? config.type : null;
29
+ if (this.type) {
30
+ this.state = JSON.parse(window.sessionStorage.getItem(this.key) || '{}');
31
+ window.sessionStorage.setItem(this.key, JSON.stringify(this.state));
32
+ }
33
+ break;
34
+ case StorageType.LOCAL:
35
+ this.type = snap_toolbox_1.featureFlags.storage ? config.type : null;
36
+ if (this.type && !window.localStorage.getItem(this.key)) {
37
+ this.state = JSON.parse(window.localStorage.getItem(this.key) || '{}');
38
+ window.localStorage.setItem(this.key, JSON.stringify(this.state));
39
+ }
40
+ break;
41
+ case StorageType.COOKIE:
42
+ if (snap_toolbox_1.featureFlags.cookies) {
43
+ this.type = config.type;
44
+ var data = utils.cookies.get(this.key);
45
+ if (data) {
46
+ this.state = JSON.parse(data);
47
+ }
48
+ }
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ StorageStore.prototype.set = function (path, value) {
54
+ var paths = path === null || path === void 0 ? void 0 : path.split('.');
55
+ var location = this.state;
56
+ paths === null || paths === void 0 ? void 0 : paths.forEach(function (p, i) {
57
+ var leaf = i == paths.length - 1;
58
+ if (leaf) {
59
+ location[p] = value;
60
+ }
61
+ else {
62
+ location = location[p] = location[p] || {};
63
+ }
64
+ });
65
+ switch (this.type) {
66
+ case StorageType.SESSION:
67
+ window.sessionStorage.setItem(this.key, JSON.stringify(this.state));
68
+ break;
69
+ case StorageType.LOCAL:
70
+ window.localStorage.setItem(this.key, JSON.stringify(this.state));
71
+ break;
72
+ case StorageType.COOKIE:
73
+ utils.cookies.set(this.key, JSON.stringify(this.state), this.sameSite, this.expiration);
74
+ break;
75
+ }
76
+ };
77
+ StorageStore.prototype.get = function (path) {
78
+ switch (this.type) {
79
+ case StorageType.SESSION:
80
+ this.state = JSON.parse(window.sessionStorage.getItem(this.key)) || {};
81
+ break;
82
+ case StorageType.LOCAL:
83
+ this.state = JSON.parse(window.localStorage.getItem(this.key)) || {};
84
+ break;
85
+ case StorageType.COOKIE:
86
+ var data = utils.cookies.get(this.key);
87
+ if (data) {
88
+ this.state = JSON.parse(data) || {};
89
+ }
90
+ break;
91
+ }
92
+ var paths = path === null || path === void 0 ? void 0 : path.split('.');
93
+ if (!(paths === null || paths === void 0 ? void 0 : paths.length))
94
+ return undefined;
95
+ var value = this.state;
96
+ for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {
97
+ var p = paths_1[_i];
98
+ if (value && typeof value[p] != 'undefined') {
99
+ value = value[p];
100
+ }
101
+ else {
102
+ value = undefined;
103
+ break;
104
+ }
105
+ }
106
+ return value;
107
+ };
108
+ StorageStore.prototype.clear = function () {
109
+ switch (this.type) {
110
+ case StorageType.SESSION:
111
+ window.sessionStorage.removeItem(this.key);
112
+ break;
113
+ case StorageType.LOCAL:
114
+ window.localStorage.removeItem(this.key);
115
+ break;
116
+ case StorageType.COOKIE:
117
+ utils.cookies.unset(this.key);
118
+ break;
119
+ }
120
+ this.state = {};
121
+ };
122
+ return StorageStore;
123
+ }());
124
+ exports.StorageStore = StorageStore;
125
+ var StorageType;
126
+ (function (StorageType) {
127
+ StorageType["SESSION"] = "session";
128
+ StorageType["LOCAL"] = "local";
129
+ StorageType["COOKIE"] = "cookie";
130
+ })(StorageType = exports.StorageType || (exports.StorageType = {}));
@@ -0,0 +1,8 @@
1
+ export { AbstractStore } from './Abstract/AbstractStore';
2
+ export { AutocompleteStore } from './Autocomplete/AutocompleteStore';
3
+ export { FinderStore } from './Finder/FinderStore';
4
+ export { SearchStore } from './Search/SearchStore';
5
+ export { RecommendationStore } from './Recommendation/RecommendationStore';
6
+ export { StorageStore, StorageConfig, StorageType } from './Storage/StorageStore';
7
+ export * from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAElF,cAAc,SAAS,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.StorageType = exports.StorageStore = exports.RecommendationStore = exports.SearchStore = exports.FinderStore = exports.AutocompleteStore = exports.AbstractStore = void 0;
14
+ var AbstractStore_1 = require("./Abstract/AbstractStore");
15
+ Object.defineProperty(exports, "AbstractStore", { enumerable: true, get: function () { return AbstractStore_1.AbstractStore; } });
16
+ var AutocompleteStore_1 = require("./Autocomplete/AutocompleteStore");
17
+ Object.defineProperty(exports, "AutocompleteStore", { enumerable: true, get: function () { return AutocompleteStore_1.AutocompleteStore; } });
18
+ var FinderStore_1 = require("./Finder/FinderStore");
19
+ Object.defineProperty(exports, "FinderStore", { enumerable: true, get: function () { return FinderStore_1.FinderStore; } });
20
+ var SearchStore_1 = require("./Search/SearchStore");
21
+ Object.defineProperty(exports, "SearchStore", { enumerable: true, get: function () { return SearchStore_1.SearchStore; } });
22
+ var RecommendationStore_1 = require("./Recommendation/RecommendationStore");
23
+ Object.defineProperty(exports, "RecommendationStore", { enumerable: true, get: function () { return RecommendationStore_1.RecommendationStore; } });
24
+ var StorageStore_1 = require("./Storage/StorageStore");
25
+ Object.defineProperty(exports, "StorageStore", { enumerable: true, get: function () { return StorageStore_1.StorageStore; } });
26
+ Object.defineProperty(exports, "StorageType", { enumerable: true, get: function () { return StorageStore_1.StorageType; } });
27
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,81 @@
1
+ import type { UrlManager } from '@searchspring/snap-url-manager';
2
+ export declare type StoreConfig = {
3
+ id: string;
4
+ [any: string]: unknown;
5
+ };
6
+ export declare type SearchStoreConfig = StoreConfig & {
7
+ globals?: {
8
+ personalization?: {
9
+ disabled: boolean;
10
+ };
11
+ [any: string]: unknown;
12
+ };
13
+ settings?: {
14
+ redirects?: {
15
+ merchandising?: boolean;
16
+ singleResult?: boolean;
17
+ };
18
+ facets?: {
19
+ trim?: boolean;
20
+ pinFiltered?: boolean;
21
+ };
22
+ infinite?: {
23
+ backfill?: number;
24
+ };
25
+ };
26
+ };
27
+ export declare type FinderStoreConfig = StoreConfig & {
28
+ globals?: any;
29
+ url?: string;
30
+ fields: FinderFieldConfig[];
31
+ };
32
+ export declare type FinderFieldConfig = {
33
+ field: string;
34
+ label?: string;
35
+ levels?: string[];
36
+ };
37
+ export declare type AutocompleteStoreConfig = StoreConfig & {
38
+ globals?: {
39
+ personalization?: {
40
+ disabled: boolean;
41
+ };
42
+ search?: {
43
+ [any: string]: unknown;
44
+ query?: {
45
+ [any: string]: unknown;
46
+ spellCorrection?: boolean;
47
+ };
48
+ };
49
+ [any: string]: unknown;
50
+ };
51
+ selector: string;
52
+ action?: string;
53
+ settings?: {
54
+ initializeFromUrl?: boolean;
55
+ syncInputs?: boolean;
56
+ facets?: {
57
+ trim?: boolean;
58
+ pinFiltered?: boolean;
59
+ };
60
+ trending?: {
61
+ limit: number;
62
+ };
63
+ };
64
+ };
65
+ export declare type RecommendationStoreConfig = StoreConfig & {
66
+ globals?: any;
67
+ tag: string;
68
+ branch?: string;
69
+ realtime?: boolean;
70
+ batched?: boolean;
71
+ };
72
+ export declare type StoreConfigs = SearchStoreConfig | AutocompleteStoreConfig | FinderStoreConfig | RecommendationStoreConfig;
73
+ export declare type StoreServices = {
74
+ urlManager?: UrlManager;
75
+ };
76
+ export declare enum ErrorType {
77
+ WARNING = "warning",
78
+ INFO = "info",
79
+ ERROR = "error"
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGjE,oBAAY,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAGF,oBAAY,iBAAiB,GAAG,WAAW,GAAG;IAC7C,OAAO,CAAC,EAAE;QACT,eAAe,CAAC,EAAE;YACjB,QAAQ,EAAE,OAAO,CAAC;SAClB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,EAAE;QACV,SAAS,CAAC,EAAE;YACX,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,YAAY,CAAC,EAAE,OAAO,CAAC;SACvB,CAAC;QACF,MAAM,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,WAAW,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC;QACF,QAAQ,CAAC,EAAE;YACV,QAAQ,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACF,CAAC;CACF,CAAC;AAGF,oBAAY,iBAAiB,GAAG,WAAW,GAAG;IAC7C,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAGF,oBAAY,uBAAuB,GAAG,WAAW,GAAG;IACnD,OAAO,CAAC,EAAE;QACT,eAAe,CAAC,EAAE;YACjB,QAAQ,EAAE,OAAO,CAAC;SAClB,CAAC;QACF,MAAM,CAAC,EAAE;YACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;YACvB,KAAK,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;gBACvB,eAAe,CAAC,EAAE,OAAO,CAAC;aAC1B,CAAC;SACF,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACV,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,MAAM,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,WAAW,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC;QACF,QAAQ,CAAC,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;SACd,CAAC;KACF,CAAC;CACF,CAAC;AAGF,oBAAY,yBAAyB,GAAG,WAAW,GAAG;IACrD,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,YAAY,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,yBAAyB,CAAC;AAEvH,oBAAY,aAAa,GAAG;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,oBAAY,SAAS;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;CACf"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorType = void 0;
4
+ var ErrorType;
5
+ (function (ErrorType) {
6
+ ErrorType["WARNING"] = "warning";
7
+ ErrorType["INFO"] = "info";
8
+ ErrorType["ERROR"] = "error";
9
+ })(ErrorType = exports.ErrorType || (exports.ErrorType = {}));
@@ -0,0 +1,18 @@
1
+ import type { StoreConfigs, ErrorType } from '../types';
2
+ export declare abstract class AbstractStore {
3
+ protected controller: any;
4
+ custom: {};
5
+ loading: boolean;
6
+ loaded: boolean;
7
+ error: {
8
+ code?: number;
9
+ type: ErrorType;
10
+ message: string;
11
+ };
12
+ config: StoreConfigs;
13
+ constructor(config: StoreConfigs);
14
+ setConfig(newConfig: StoreConfigs): void;
15
+ abstract update(data: any): void;
16
+ toJSON(thing?: this): this;
17
+ }
18
+ //# sourceMappingURL=AbstractStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractStore.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAOxD,8BAAsB,aAAa;IAClC,SAAS,CAAC,UAAU,MAAC;IACd,MAAM,KAAM;IACZ,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,KAAK,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,SAAS,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACK,MAAM,EAAE,YAAY,CAAC;gBAEhB,MAAM,EAAE,YAAY;IAUhC,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAIxC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAA,GAAG,IAAI;IAE3B,MAAM,CAAC,KAAK,OAAO;CAInB"}
@@ -0,0 +1,25 @@
1
+ import { makeObservable, observable, toJS, configure } from 'mobx';
2
+ configure({
3
+ // useProxies: "never", // for IE 11 (es5) support
4
+ enforceActions: 'never',
5
+ });
6
+ export class AbstractStore {
7
+ constructor(config) {
8
+ this.custom = {};
9
+ this.loading = false;
10
+ this.loaded = false;
11
+ this.config = config;
12
+ makeObservable(this, {
13
+ custom: observable,
14
+ loading: observable,
15
+ loaded: observable,
16
+ });
17
+ }
18
+ setConfig(newConfig) {
19
+ this.config = newConfig;
20
+ }
21
+ toJSON(thing = this) {
22
+ // TODO: make this work better
23
+ return toJS(thing);
24
+ }
25
+ }
@@ -0,0 +1,32 @@
1
+ import type { AutocompleteResponseModel, MetaResponseModel } from '@searchspring/snapi-types';
2
+ import { AbstractStore } from '../Abstract/AbstractStore';
3
+ import { FilterStore, ResultStore, MerchandisingStore, PaginationStore, SortingStore } from '../Search/Stores';
4
+ import { StorageStore } from '../Storage/StorageStore';
5
+ import type { AutocompleteStoreConfig, StoreServices } from '../types';
6
+ import { StateStore, TermStore, QueryStore, FacetStore, TrendingStore } from './Stores';
7
+ export declare class AutocompleteStore extends AbstractStore {
8
+ config: AutocompleteStoreConfig;
9
+ services: StoreServices;
10
+ meta: MetaResponseModel;
11
+ merchandising: MerchandisingStore;
12
+ search: QueryStore;
13
+ terms: TermStore;
14
+ facets: FacetStore;
15
+ filters: FilterStore;
16
+ results: ResultStore;
17
+ pagination: PaginationStore;
18
+ sorting: SortingStore;
19
+ state: StateStore;
20
+ storage: StorageStore;
21
+ trending: TrendingStore;
22
+ constructor(config: AutocompleteStoreConfig, services: StoreServices);
23
+ reset(): void;
24
+ resetTrending(): void;
25
+ resetTerms(): void;
26
+ setService(name: any, service: any): void;
27
+ updateTrendingTerms(data: any): void;
28
+ update(data: AutocompleteResponseModel & {
29
+ meta: MetaResponseModel;
30
+ }): void;
31
+ }
32
+ //# sourceMappingURL=AutocompleteStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteStore.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxF,qBAAa,iBAAkB,SAAQ,aAAa;IACnD,MAAM,EAAE,uBAAuB,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAM;IAE7B,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,aAAa,CAAC;gBAEZ,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa;IA4BpE,KAAK,IAAI,IAAI;IAMb,aAAa,IAAI,IAAI;IAQrB,UAAU,IAAI,IAAI;IAQlB,UAAU,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,GAAG,IAAI;IAS/B,mBAAmB,CAAC,IAAI,KAAA,GAAG,IAAI;IAW/B,MAAM,CAAC,IAAI,EAAE,yBAAyB,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;CA8C3E"}
@@ -0,0 +1,94 @@
1
+ import { makeObservable, observable } from 'mobx';
2
+ import { AbstractStore } from '../Abstract/AbstractStore';
3
+ import { FilterStore, ResultStore, MerchandisingStore, PaginationStore, SortingStore } from '../Search/Stores';
4
+ import { StorageStore } from '../Storage/StorageStore';
5
+ import { StateStore, TermStore, QueryStore, FacetStore, TrendingStore } from './Stores';
6
+ export class AutocompleteStore extends AbstractStore {
7
+ constructor(config, services) {
8
+ super(config);
9
+ this.meta = {};
10
+ if (typeof services != 'object' || typeof services.urlManager?.subscribe != 'function') {
11
+ throw new Error(`Invalid service 'urlManager' passed to AutocompleteStore. Missing "subscribe" function.`);
12
+ }
13
+ this.services = services;
14
+ this.state = new StateStore(services);
15
+ this.storage = new StorageStore();
16
+ this.trending = [];
17
+ this.reset();
18
+ makeObservable(this, {
19
+ state: observable,
20
+ search: observable,
21
+ terms: observable,
22
+ facets: observable,
23
+ filters: observable,
24
+ merchandising: observable,
25
+ results: observable,
26
+ pagination: observable,
27
+ sorting: observable,
28
+ });
29
+ }
30
+ reset() {
31
+ this.state.reset();
32
+ this.update({ meta: this.meta });
33
+ this.resetTrending();
34
+ }
35
+ resetTrending() {
36
+ if (this.trending?.length) {
37
+ this.trending.forEach((term) => {
38
+ term.active = false;
39
+ });
40
+ }
41
+ }
42
+ resetTerms() {
43
+ if (this.terms?.length > 0) {
44
+ this.terms.forEach((term) => {
45
+ term.active = false;
46
+ });
47
+ }
48
+ }
49
+ setService(name, service) {
50
+ if (this.services[name] && service) {
51
+ this.services[name] = service;
52
+ if (name === 'urlManager') {
53
+ this.state.url = service;
54
+ }
55
+ }
56
+ }
57
+ updateTrendingTerms(data) {
58
+ this.trending = new TrendingStore(this.services, data.trending, () => {
59
+ this.resetTerms();
60
+ }, this.state);
61
+ }
62
+ update(data) {
63
+ this.error = undefined;
64
+ this.loaded = !!data.pagination;
65
+ this.meta = data.meta;
66
+ // set the query to match the actual queried term and not the input query
67
+ if (data.search) {
68
+ this.state.url = this.services.urlManager = this.services.urlManager.set('query', data.search.query);
69
+ }
70
+ // only run if we want to update the terms (not locked)
71
+ if (!this.state.locks.terms.locked) {
72
+ this.terms = new TermStore(this.services, data.autocomplete, data.pagination, () => {
73
+ this.resetTrending();
74
+ }, this.state);
75
+ // only lock if there was data
76
+ data.autocomplete && this.state.locks.terms.lock();
77
+ }
78
+ this.merchandising = new MerchandisingStore(this.services, data.merchandising);
79
+ this.search = new QueryStore(this.services, data.autocomplete, data.search);
80
+ // only run if we want to update the facets (not locked)
81
+ if (!this.state.locks.facets.locked) {
82
+ this.facets = new FacetStore(this.config, this.services, this.storage, data.facets, data.pagination, this.meta, this.state);
83
+ }
84
+ this.filters = new FilterStore(this.services, data.filters, this.meta);
85
+ this.results = new ResultStore(this.config, this.services, data.results, data.pagination, data.merchandising);
86
+ if ((this.results.length === 0 && !this.trending.filter((term) => term.active).length) || this.terms.filter((term) => term.active).length) {
87
+ // if a trending term was selected and then a subsequent search yields no results, reset trending terms to remove active state
88
+ // OR if any terms are active, also reset to ensure only a single term or trending term is active
89
+ this.resetTrending();
90
+ }
91
+ this.pagination = new PaginationStore(this.config, this.services, data.pagination);
92
+ this.sorting = new SortingStore(this.services, data.sorting, data.search, this.meta);
93
+ }
94
+ }
@@ -0,0 +1,9 @@
1
+ import type { StorageStore } from '../../Storage/StorageStore';
2
+ import type { StateStore } from './StateStore';
3
+ import type { AutocompleteStoreConfig, SearchStoreConfig, StoreServices } from '../../types';
4
+ import type { SearchResponseModelFacet, SearchResponseModelPagination, MetaResponseModel } from '@searchspring/snapi-types';
5
+ export declare class FacetStore extends Array {
6
+ static get [Symbol.species](): ArrayConstructor;
7
+ constructor(config: SearchStoreConfig | AutocompleteStoreConfig, services: StoreServices, storage: StorageStore, facetsData: SearchResponseModelFacet[], paginationData: SearchResponseModelPagination, meta: MetaResponseModel, rootState: StateStore);
8
+ }
9
+ //# sourceMappingURL=FacetStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/FacetStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE5H,qBAAa,UAAW,SAAQ,KAAK;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAGA,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,EACnD,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,wBAAwB,EAAE,EACtC,cAAc,EAAE,6BAA6B,EAC7C,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,UAAU;CA2BtB"}
@@ -0,0 +1,29 @@
1
+ import { FacetStore as SearchFacetStore } from '../../Search/Stores';
2
+ export class FacetStore extends Array {
3
+ static get [Symbol.species]() {
4
+ return Array;
5
+ }
6
+ constructor(config, services, storage, facetsData, paginationData, meta, rootState) {
7
+ // allow for only a singular facet option selection at a time
8
+ const alteredServices = { ...services, urlManager: services.urlManager.remove('filter') };
9
+ const facets = new SearchFacetStore(config, alteredServices, storage, facetsData, paginationData, meta);
10
+ // mutate facet values to add 'preview' function
11
+ facets.forEach((facet) => {
12
+ facet.values?.forEach((value) => {
13
+ value.preview = () => {
14
+ facets.map((facet) => {
15
+ facet.filtered = false;
16
+ facet.values?.map((value) => {
17
+ value.filtered = false;
18
+ });
19
+ });
20
+ facet.filtered = true;
21
+ value.filtered = true;
22
+ rootState.locks.facets.lock();
23
+ value.url.go();
24
+ };
25
+ });
26
+ });
27
+ super(...facets);
28
+ }
29
+ }
@@ -0,0 +1,15 @@
1
+ import type { UrlManager } from '@searchspring/snap-url-manager';
2
+ import type { SearchResponseModelSearch, AutocompleteResponseModelAllOfAutocomplete } from '@searchspring/snapi-types';
3
+ import type { StoreServices } from '../../types';
4
+ export declare class QueryStore {
5
+ query: Query;
6
+ originalQuery: Query;
7
+ constructor(services: StoreServices, autocomplete: AutocompleteResponseModelAllOfAutocomplete, search: SearchResponseModelSearch);
8
+ }
9
+ declare class Query {
10
+ string: string;
11
+ url: UrlManager;
12
+ constructor(urlManager: any, query: any);
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=QueryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/QueryStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,0CAA0C,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,UAAU;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,KAAK,CAAC;gBAET,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,0CAA0C,EAAE,MAAM,EAAE,yBAAyB;CAehI;AAMD,cAAM,KAAK;IACV,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;gBAEJ,UAAU,KAAA,EAAE,KAAK,KAAA;CAS7B"}
@@ -0,0 +1,24 @@
1
+ import { observable, makeObservable } from 'mobx';
2
+ export class QueryStore {
3
+ constructor(services, autocomplete, search) {
4
+ const observables = {};
5
+ if (search?.query) {
6
+ this.query = new Query(services.urlManager, search.query);
7
+ observables.query = observable;
8
+ }
9
+ if (autocomplete?.correctedQuery) {
10
+ this.originalQuery = new Query(services.urlManager, autocomplete.query);
11
+ observables.originalQuery = observable;
12
+ }
13
+ makeObservable(this, observables);
14
+ }
15
+ }
16
+ class Query {
17
+ constructor(urlManager, query) {
18
+ this.string = query;
19
+ this.url = urlManager.set({ query: this.string });
20
+ makeObservable(this, {
21
+ string: observable,
22
+ });
23
+ }
24
+ }
@@ -0,0 +1,23 @@
1
+ import type { UrlManager } from '@searchspring/snap-url-manager';
2
+ import type { StoreServices } from '../../types';
3
+ export declare class StateStore {
4
+ locks: {
5
+ terms: Lock;
6
+ facets: Lock;
7
+ };
8
+ focusedInput: HTMLInputElement;
9
+ input: string;
10
+ url: UrlManager;
11
+ constructor(services: StoreServices);
12
+ reset(): void;
13
+ }
14
+ export declare class Lock {
15
+ private state;
16
+ private startState;
17
+ constructor(state?: boolean);
18
+ reset(): void;
19
+ get locked(): boolean;
20
+ lock(): void;
21
+ unlock(): void;
22
+ }
23
+ //# sourceMappingURL=StateStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/StateStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,UAAU;IACtB,KAAK,EAAE;QACN,KAAK,EAAE,IAAI,CAAC;QACZ,MAAM,EAAE,IAAI,CAAC;KACb,CAAC;IACF,YAAY,EAAE,gBAAgB,CAAa;IAC3C,KAAK,SAAM;IACX,GAAG,EAAE,UAAU,CAAC;gBAEJ,QAAQ,EAAE,aAAa;IAgBnC,KAAK,IAAI,IAAI;CAKb;AAED,qBAAa,IAAI;IAChB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,UAAU,CAAU;gBAEhB,KAAK,UAAQ;IAIzB,KAAK,IAAI,IAAI;IAIb,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;CAGd"}
@@ -0,0 +1,40 @@
1
+ import { observable, action, makeObservable } from 'mobx';
2
+ export class StateStore {
3
+ constructor(services) {
4
+ this.focusedInput = undefined;
5
+ this.input = '';
6
+ this.locks = {
7
+ terms: new Lock(false),
8
+ facets: new Lock(false),
9
+ };
10
+ this.url = services.urlManager;
11
+ makeObservable(this, {
12
+ focusedInput: observable,
13
+ locks: observable,
14
+ input: observable,
15
+ reset: action,
16
+ });
17
+ }
18
+ reset() {
19
+ this.input = '';
20
+ this.locks.terms.reset();
21
+ this.locks.facets.reset();
22
+ }
23
+ }
24
+ export class Lock {
25
+ constructor(state = false) {
26
+ this.state = this.startState = state;
27
+ }
28
+ reset() {
29
+ this.state = this.startState;
30
+ }
31
+ get locked() {
32
+ return this.state;
33
+ }
34
+ lock() {
35
+ this.state = true;
36
+ }
37
+ unlock() {
38
+ this.state = false;
39
+ }
40
+ }
@@ -0,0 +1,19 @@
1
+ import type { UrlManager } from '@searchspring/snap-url-manager';
2
+ import type { StateStore } from './StateStore';
3
+ import type { StoreServices } from '../../types';
4
+ import type { AutocompleteResponseModelAllOfAutocomplete, SearchResponseModelPagination } from '@searchspring/snapi-types';
5
+ export declare class TermStore extends Array {
6
+ static get [Symbol.species](): ArrayConstructor;
7
+ constructor(services: StoreServices, autocomplete: AutocompleteResponseModelAllOfAutocomplete, paginationData: SearchResponseModelPagination, resetTerms: () => void, rootState: StateStore);
8
+ }
9
+ export declare class Term {
10
+ active: boolean;
11
+ value: string;
12
+ preview: () => void;
13
+ url: UrlManager;
14
+ constructor(services: StoreServices, term: {
15
+ active: boolean;
16
+ value: string;
17
+ }, terms: Term[], resetTerms: () => void, rootState: StateStore);
18
+ }
19
+ //# sourceMappingURL=TermStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TermStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/TermStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,0CAA0C,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAE3H,qBAAa,SAAU,SAAQ,KAAK;IACnC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAGA,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,0CAA0C,EACxD,cAAc,EAAE,6BAA6B,EAC7C,UAAU,EAAE,MAAM,IAAI,EACtB,SAAS,EAAE,UAAU;CA6BtB;AAED,qBAAa,IAAI;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;gBAEJ,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,UAAU;CAwB3I"}