react-instantsearch-core 6.38.1 → 6.38.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +9 -1
- package/dist/cjs/connectors/connectAutoComplete.js +14 -33
- package/dist/cjs/connectors/connectBreadcrumb.js +9 -22
- package/dist/cjs/connectors/connectConfigure.js +17 -26
- package/dist/cjs/connectors/connectConfigureRelatedItems.js +20 -33
- package/dist/cjs/connectors/connectCurrentRefinements.js +6 -13
- package/dist/cjs/connectors/connectDynamicWidgets.js +2 -13
- package/dist/cjs/connectors/connectGeoSearch.js +15 -34
- package/dist/cjs/connectors/connectHierarchicalMenu.js +22 -48
- package/dist/cjs/connectors/connectHighlight.js +8 -14
- package/dist/cjs/connectors/connectHitInsights.js +8 -20
- package/dist/cjs/connectors/connectHits.js +2 -11
- package/dist/cjs/connectors/connectHitsPerPage.js +8 -18
- package/dist/cjs/connectors/connectInfiniteHits.js +25 -43
- package/dist/cjs/connectors/connectMenu.js +14 -33
- package/dist/cjs/connectors/connectNumericMenu.js +24 -49
- package/dist/cjs/connectors/connectPagination.js +7 -17
- package/dist/cjs/connectors/connectPoweredBy.js +1 -5
- package/dist/cjs/connectors/connectQueryRules.js +11 -29
- package/dist/cjs/connectors/connectRange.js +33 -75
- package/dist/cjs/connectors/connectRefinementList.js +16 -34
- package/dist/cjs/connectors/connectRelevantSort.js +6 -13
- package/dist/cjs/connectors/connectScrollTo.js +6 -14
- package/dist/cjs/connectors/connectSearchBox.js +7 -17
- package/dist/cjs/connectors/connectSortBy.js +8 -18
- package/dist/cjs/connectors/connectStateResults.js +1 -6
- package/dist/cjs/connectors/connectStats.js +2 -8
- package/dist/cjs/connectors/connectToggleRefinement.js +14 -29
- package/dist/cjs/connectors/connectVoiceSearch.js +7 -24
- package/dist/cjs/core/context.js +3 -7
- package/dist/cjs/core/createConnector.js +60 -114
- package/dist/cjs/core/createInstantSearchManager.d.js +1 -0
- package/dist/cjs/core/createInstantSearchManager.js +67 -116
- package/dist/cjs/core/createStore.js +0 -1
- package/dist/cjs/core/createWidgetsManager.js +4 -7
- package/dist/cjs/core/highlight.js +11 -20
- package/dist/cjs/core/indexUtils.js +34 -77
- package/dist/cjs/core/metadata.js +7 -15
- package/dist/cjs/core/translatable.js +19 -46
- package/dist/cjs/core/utils.js +14 -52
- package/dist/cjs/core/version.js +1 -1
- package/dist/cjs/index.js +9 -44
- package/dist/cjs/types/index.js +0 -2
- package/dist/cjs/widgets/Configure.js +1 -5
- package/dist/cjs/widgets/ConfigureRelatedItems.js +1 -8
- package/dist/cjs/widgets/DynamicWidgets.js +12 -33
- package/dist/cjs/widgets/Index.js +26 -52
- package/dist/cjs/widgets/InstantSearch.js +28 -67
- package/dist/cjs/widgets/QueryRuleContext.js +1 -5
- package/dist/es/connectors/connectAutoComplete.js +11 -25
- package/dist/es/connectors/connectBreadcrumb.js +7 -13
- package/dist/es/connectors/connectConfigure.js +13 -22
- package/dist/es/connectors/connectConfigureRelatedItems.js +17 -25
- package/dist/es/connectors/connectCurrentRefinements.js +5 -7
- package/dist/es/connectors/connectDynamicWidgets.js +1 -6
- package/dist/es/connectors/connectGeoSearch.js +14 -27
- package/dist/es/connectors/connectHierarchicalMenu.js +19 -38
- package/dist/es/connectors/connectHighlight.js +7 -9
- package/dist/es/connectors/connectHitInsights.js +7 -14
- package/dist/es/connectors/connectHits.js +2 -5
- package/dist/es/connectors/connectHitsPerPage.js +5 -12
- package/dist/es/connectors/connectInfiniteHits.js +21 -31
- package/dist/es/connectors/connectMenu.js +12 -25
- package/dist/es/connectors/connectNumericMenu.js +22 -40
- package/dist/es/connectors/connectPagination.js +5 -12
- package/dist/es/connectors/connectPoweredBy.js +1 -1
- package/dist/es/connectors/connectQueryRules.js +9 -20
- package/dist/es/connectors/connectRange.js +31 -68
- package/dist/es/connectors/connectRefinementList.js +14 -24
- package/dist/es/connectors/connectRelevantSort.js +7 -8
- package/dist/es/connectors/connectScrollTo.js +6 -7
- package/dist/es/connectors/connectSearchBox.js +5 -11
- package/dist/es/connectors/connectSortBy.js +5 -12
- package/dist/es/connectors/connectStateResults.js +1 -1
- package/dist/es/connectors/connectStats.js +2 -3
- package/dist/es/connectors/connectToggleRefinement.js +12 -22
- package/dist/es/connectors/connectVoiceSearch.js +4 -16
- package/dist/es/core/context.js +3 -5
- package/dist/es/core/createConnector.js +33 -86
- package/dist/es/core/createInstantSearchManager.d.js +0 -0
- package/dist/es/core/createInstantSearchManager.js +59 -100
- package/dist/es/core/createWidgetsManager.js +4 -5
- package/dist/es/core/highlight.js +11 -17
- package/dist/es/core/indexUtils.js +27 -62
- package/dist/es/core/metadata.js +6 -8
- package/dist/es/core/translatable.js +13 -29
- package/dist/es/core/utils.js +12 -29
- package/dist/es/core/version.js +1 -1
- package/dist/es/index.js +39 -6
- package/dist/es/widgets/Configure.js +1 -0
- package/dist/es/widgets/ConfigureRelatedItems.js +0 -2
- package/dist/es/widgets/DynamicWidgets.js +9 -18
- package/dist/es/widgets/Index.js +13 -31
- package/dist/es/widgets/InstantSearch.js +13 -42
- package/dist/umd/ReactInstantSearchCore.js +507 -1078
- package/dist/umd/ReactInstantSearchCore.js.map +1 -1
- package/dist/umd/ReactInstantSearchCore.min.js +2 -2
- package/dist/umd/ReactInstantSearchCore.min.js.map +1 -1
- package/package.json +7 -5
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -11,43 +9,36 @@ exports.getIndexId = getIndexId;
|
|
|
11
9
|
exports.getResults = getResults;
|
|
12
10
|
exports.hasMultipleIndices = hasMultipleIndices;
|
|
13
11
|
exports.refineValue = refineValue;
|
|
14
|
-
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
|
|
17
12
|
var _utils = require("./utils");
|
|
18
|
-
|
|
13
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
19
14
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
|
-
|
|
21
|
-
function
|
|
22
|
-
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
18
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
23
19
|
function getIndexId(context) {
|
|
24
20
|
return hasMultipleIndices(context) ? context.multiIndexContext.targetedIndex : context.ais.mainTargetedIndex;
|
|
25
21
|
}
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line valid-jsdoc
|
|
26
24
|
/**
|
|
27
25
|
* @returns {import('algoliasearch-helper').SearchResults} results
|
|
28
26
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
27
|
function getResults(searchResults, context) {
|
|
32
28
|
if (searchResults.results) {
|
|
33
29
|
if (searchResults.results.hits) {
|
|
34
30
|
return searchResults.results;
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
var indexId = getIndexId(context);
|
|
38
|
-
|
|
39
33
|
if (searchResults.results[indexId]) {
|
|
40
34
|
return searchResults.results[indexId];
|
|
41
35
|
}
|
|
42
36
|
}
|
|
43
|
-
|
|
44
37
|
return null;
|
|
45
38
|
}
|
|
46
|
-
|
|
47
39
|
function hasMultipleIndices(context) {
|
|
48
40
|
return context && context.multiIndexContext;
|
|
49
41
|
}
|
|
50
|
-
|
|
51
42
|
function refineValue(searchState, nextRefinement, context, resetPage, namespace) {
|
|
52
43
|
if (hasMultipleIndices(context)) {
|
|
53
44
|
var indexId = getIndexId(context);
|
|
@@ -69,47 +60,40 @@ function refineValue(searchState, nextRefinement, context, resetPage, namespace)
|
|
|
69
60
|
}, true, namespace);
|
|
70
61
|
});
|
|
71
62
|
}
|
|
72
|
-
|
|
73
63
|
return namespace ? refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) : refineSingleIndex(searchState, nextRefinement, resetPage);
|
|
74
64
|
}
|
|
75
65
|
}
|
|
76
|
-
|
|
77
66
|
function refineMultiIndex(searchState, nextRefinement, indexId, resetPage) {
|
|
78
67
|
var page = resetPage ? {
|
|
79
68
|
page: 1
|
|
80
69
|
} : undefined;
|
|
81
|
-
var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, (
|
|
70
|
+
var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread(_objectSpread({}, searchState.indices[indexId]), nextRefinement), page))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, nextRefinement), page)));
|
|
82
71
|
return _objectSpread(_objectSpread({}, searchState), {}, {
|
|
83
72
|
indices: state
|
|
84
73
|
});
|
|
85
74
|
}
|
|
86
|
-
|
|
87
75
|
function refineSingleIndex(searchState, nextRefinement, resetPage) {
|
|
88
76
|
var page = resetPage ? {
|
|
89
77
|
page: 1
|
|
90
78
|
} : undefined;
|
|
91
79
|
return _objectSpread(_objectSpread(_objectSpread({}, searchState), nextRefinement), page);
|
|
92
80
|
}
|
|
93
|
-
|
|
94
81
|
function refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) {
|
|
95
82
|
var _objectSpread4;
|
|
96
|
-
|
|
97
83
|
var page = resetPage ? {
|
|
98
84
|
page: 1
|
|
99
85
|
} : undefined;
|
|
100
|
-
var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, (
|
|
86
|
+
var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, searchState.indices[indexId]), {}, (_objectSpread4 = {}, _defineProperty(_objectSpread4, namespace, _objectSpread(_objectSpread({}, searchState.indices[indexId][namespace]), nextRefinement)), _defineProperty(_objectSpread4, "page", 1), _objectSpread4)))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_defineProperty({}, namespace, nextRefinement), page)));
|
|
101
87
|
return _objectSpread(_objectSpread({}, searchState), {}, {
|
|
102
88
|
indices: state
|
|
103
89
|
});
|
|
104
90
|
}
|
|
105
|
-
|
|
106
91
|
function refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) {
|
|
107
92
|
var page = resetPage ? {
|
|
108
93
|
page: 1
|
|
109
94
|
} : undefined;
|
|
110
|
-
return _objectSpread(_objectSpread({}, searchState), {}, (
|
|
95
|
+
return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, _objectSpread(_objectSpread({}, searchState[namespace]), nextRefinement)), page);
|
|
111
96
|
}
|
|
112
|
-
|
|
113
97
|
function getNamespaceAndAttributeName(id) {
|
|
114
98
|
var parts = id.match(/^([^.]*)\.(.*)/);
|
|
115
99
|
var namespace = parts && parts[1];
|
|
@@ -119,60 +103,47 @@ function getNamespaceAndAttributeName(id) {
|
|
|
119
103
|
attributeName: attributeName
|
|
120
104
|
};
|
|
121
105
|
}
|
|
122
|
-
|
|
123
106
|
function hasRefinements(_ref) {
|
|
124
107
|
var multiIndex = _ref.multiIndex,
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
108
|
+
indexId = _ref.indexId,
|
|
109
|
+
namespace = _ref.namespace,
|
|
110
|
+
attributeName = _ref.attributeName,
|
|
111
|
+
id = _ref.id,
|
|
112
|
+
searchState = _ref.searchState;
|
|
131
113
|
if (multiIndex && namespace) {
|
|
132
114
|
return searchState.indices && searchState.indices[indexId] && searchState.indices[indexId][namespace] && Object.hasOwnProperty.call(searchState.indices[indexId][namespace], attributeName);
|
|
133
115
|
}
|
|
134
|
-
|
|
135
116
|
if (multiIndex) {
|
|
136
117
|
return searchState.indices && searchState.indices[indexId] && Object.hasOwnProperty.call(searchState.indices[indexId], id);
|
|
137
118
|
}
|
|
138
|
-
|
|
139
119
|
if (namespace) {
|
|
140
120
|
return searchState[namespace] && Object.hasOwnProperty.call(searchState[namespace], attributeName);
|
|
141
121
|
}
|
|
142
|
-
|
|
143
122
|
return Object.hasOwnProperty.call(searchState, id);
|
|
144
123
|
}
|
|
145
|
-
|
|
146
124
|
function getRefinements(_ref2) {
|
|
147
125
|
var multiIndex = _ref2.multiIndex,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
126
|
+
indexId = _ref2.indexId,
|
|
127
|
+
namespace = _ref2.namespace,
|
|
128
|
+
attributeName = _ref2.attributeName,
|
|
129
|
+
id = _ref2.id,
|
|
130
|
+
searchState = _ref2.searchState;
|
|
154
131
|
if (multiIndex && namespace) {
|
|
155
132
|
return searchState.indices[indexId][namespace][attributeName];
|
|
156
133
|
}
|
|
157
|
-
|
|
158
134
|
if (multiIndex) {
|
|
159
135
|
return searchState.indices[indexId][id];
|
|
160
136
|
}
|
|
161
|
-
|
|
162
137
|
if (namespace) {
|
|
163
138
|
return searchState[namespace][attributeName];
|
|
164
139
|
}
|
|
165
|
-
|
|
166
140
|
return searchState[id];
|
|
167
141
|
}
|
|
168
|
-
|
|
169
142
|
function getCurrentRefinementValue(props, searchState, context, id, defaultValue) {
|
|
170
143
|
var indexId = getIndexId(context);
|
|
171
|
-
|
|
172
144
|
var _getNamespaceAndAttri = getNamespaceAndAttributeName(id),
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
145
|
+
namespace = _getNamespaceAndAttri.namespace,
|
|
146
|
+
attributeName = _getNamespaceAndAttri.attributeName;
|
|
176
147
|
var multiIndex = hasMultipleIndices(context);
|
|
177
148
|
var args = {
|
|
178
149
|
multiIndex: multiIndex,
|
|
@@ -183,25 +154,19 @@ function getCurrentRefinementValue(props, searchState, context, id, defaultValue
|
|
|
183
154
|
searchState: searchState
|
|
184
155
|
};
|
|
185
156
|
var hasRefinementsValue = hasRefinements(args);
|
|
186
|
-
|
|
187
157
|
if (hasRefinementsValue) {
|
|
188
158
|
return getRefinements(args);
|
|
189
159
|
}
|
|
190
|
-
|
|
191
160
|
if (props.defaultRefinement) {
|
|
192
161
|
return props.defaultRefinement;
|
|
193
162
|
}
|
|
194
|
-
|
|
195
163
|
return defaultValue;
|
|
196
164
|
}
|
|
197
|
-
|
|
198
165
|
function cleanUpValue(searchState, context, id) {
|
|
199
166
|
var indexId = getIndexId(context);
|
|
200
|
-
|
|
201
167
|
var _getNamespaceAndAttri2 = getNamespaceAndAttributeName(id),
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
168
|
+
namespace = _getNamespaceAndAttri2.namespace,
|
|
169
|
+
attributeName = _getNamespaceAndAttri2.attributeName;
|
|
205
170
|
if (hasMultipleIndices(context) && Boolean(searchState.indices)) {
|
|
206
171
|
return cleanUpValueWithMultiIndex({
|
|
207
172
|
attribute: attributeName,
|
|
@@ -211,7 +176,6 @@ function cleanUpValue(searchState, context, id) {
|
|
|
211
176
|
namespace: namespace
|
|
212
177
|
});
|
|
213
178
|
}
|
|
214
|
-
|
|
215
179
|
return cleanUpValueWithSingleIndex({
|
|
216
180
|
attribute: attributeName,
|
|
217
181
|
searchState: searchState,
|
|
@@ -219,39 +183,32 @@ function cleanUpValue(searchState, context, id) {
|
|
|
219
183
|
namespace: namespace
|
|
220
184
|
});
|
|
221
185
|
}
|
|
222
|
-
|
|
223
186
|
function cleanUpValueWithSingleIndex(_ref3) {
|
|
224
187
|
var searchState = _ref3.searchState,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
188
|
+
id = _ref3.id,
|
|
189
|
+
namespace = _ref3.namespace,
|
|
190
|
+
attribute = _ref3.attribute;
|
|
229
191
|
if (namespace) {
|
|
230
|
-
return _objectSpread(_objectSpread({}, searchState), {}, (
|
|
192
|
+
return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, (0, _utils.omit)(searchState[namespace], [attribute])));
|
|
231
193
|
}
|
|
232
|
-
|
|
233
194
|
return (0, _utils.omit)(searchState, [id]);
|
|
234
195
|
}
|
|
235
|
-
|
|
236
196
|
function cleanUpValueWithMultiIndex(_ref4) {
|
|
237
197
|
var searchState = _ref4.searchState,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
198
|
+
indexId = _ref4.indexId,
|
|
199
|
+
id = _ref4.id,
|
|
200
|
+
namespace = _ref4.namespace,
|
|
201
|
+
attribute = _ref4.attribute;
|
|
242
202
|
var indexSearchState = searchState.indices[indexId];
|
|
243
|
-
|
|
244
203
|
if (namespace && indexSearchState) {
|
|
245
204
|
return _objectSpread(_objectSpread({}, searchState), {}, {
|
|
246
|
-
indices: _objectSpread(_objectSpread({}, searchState.indices), {}, (
|
|
205
|
+
indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, indexSearchState), {}, _defineProperty({}, namespace, (0, _utils.omit)(indexSearchState[namespace], [attribute])))))
|
|
247
206
|
});
|
|
248
207
|
}
|
|
249
|
-
|
|
250
208
|
if (indexSearchState) {
|
|
251
209
|
return _objectSpread(_objectSpread({}, searchState), {}, {
|
|
252
|
-
indices: _objectSpread(_objectSpread({}, searchState.indices), {}, (
|
|
210
|
+
indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, (0, _utils.omit)(indexSearchState, [id])))
|
|
253
211
|
});
|
|
254
212
|
}
|
|
255
|
-
|
|
256
213
|
return searchState;
|
|
257
214
|
}
|
|
@@ -1,32 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.getMetadataPayload = getMetadataPayload;
|
|
9
7
|
exports.injectMetadata = injectMetadata;
|
|
10
8
|
exports.isMetadataEnabled = isMetadataEnabled;
|
|
11
|
-
|
|
12
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
9
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
14
10
|
function isMetadataEnabled() {
|
|
15
|
-
return (typeof window === "undefined" ? "undefined" : (
|
|
11
|
+
return (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && _typeof(window.navigator) === 'object' && typeof window.navigator.userAgent === 'string' && window.navigator.userAgent.includes('Algolia Crawler') && _typeof(window.document) === 'object';
|
|
16
12
|
}
|
|
17
|
-
|
|
18
13
|
function getMetadataPayload(widgets, searchClient) {
|
|
19
14
|
var internalProps = ['contextValue', 'indexContextValue'];
|
|
20
15
|
var widgetsPayload = widgets.map(function (_ref) {
|
|
21
16
|
var props = _ref.props,
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
constructor = _ref.constructor;
|
|
24
18
|
var _ref2 = constructor._connectorDesc || {},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
_ref2$defaultProps = _ref2.defaultProps,
|
|
20
|
+
defaultProps = _ref2$defaultProps === void 0 ? {} : _ref2$defaultProps,
|
|
21
|
+
_ref2$displayName = _ref2.displayName,
|
|
22
|
+
displayName = _ref2$displayName === void 0 ? constructor.displayName : _ref2$displayName;
|
|
30
23
|
return {
|
|
31
24
|
displayName: displayName,
|
|
32
25
|
$$type: constructor.$$type,
|
|
@@ -43,7 +36,6 @@ function getMetadataPayload(widgets, searchClient) {
|
|
|
43
36
|
widgets: widgetsPayload
|
|
44
37
|
};
|
|
45
38
|
}
|
|
46
|
-
|
|
47
39
|
function injectMetadata(widgets, searchClient) {
|
|
48
40
|
var payloadContainer = document.createElement('meta');
|
|
49
41
|
var refNode = document.querySelector('head');
|
|
@@ -1,104 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
3
|
Object.defineProperty(exports, "__esModule", {
|
|
8
4
|
value: true
|
|
9
5
|
});
|
|
10
6
|
exports.default = translatable;
|
|
11
|
-
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
29
|
-
|
|
30
8
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
-
|
|
32
9
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
-
|
|
34
|
-
function
|
|
35
|
-
|
|
10
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
12
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
13
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
14
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
15
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
16
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
17
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
18
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
19
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
36
20
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
|
-
|
|
21
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
22
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
24
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
38
25
|
var withKeysPropType = function withKeysPropType(keys) {
|
|
39
26
|
return function (props, propName, componentName) {
|
|
40
27
|
var prop = props[propName];
|
|
41
|
-
|
|
42
28
|
if (prop) {
|
|
43
29
|
// eslint-disable-next-line no-restricted-syntax
|
|
44
30
|
for (var _i = 0, _Object$keys = Object.keys(prop); _i < _Object$keys.length; _i++) {
|
|
45
31
|
var key = _Object$keys[_i];
|
|
46
|
-
|
|
47
32
|
if (keys.indexOf(key) === -1) {
|
|
48
33
|
return new Error("Unknown `".concat(propName, "` key `").concat(key, "`. Check the render method ") + "of `".concat(componentName, "`."));
|
|
49
34
|
}
|
|
50
35
|
}
|
|
51
36
|
}
|
|
52
|
-
|
|
53
37
|
return undefined;
|
|
54
38
|
};
|
|
55
39
|
};
|
|
56
|
-
|
|
57
40
|
function translatable(defaultTranslations) {
|
|
58
41
|
return function (Composed) {
|
|
59
42
|
var Translatable = /*#__PURE__*/function (_Component) {
|
|
60
|
-
(
|
|
61
|
-
|
|
43
|
+
_inherits(Translatable, _Component);
|
|
62
44
|
var _super = _createSuper(Translatable);
|
|
63
|
-
|
|
64
45
|
function Translatable() {
|
|
65
46
|
var _this;
|
|
66
|
-
|
|
67
|
-
(0, _classCallCheck2.default)(this, Translatable);
|
|
68
|
-
|
|
47
|
+
_classCallCheck(this, Translatable);
|
|
69
48
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
70
49
|
args[_key] = arguments[_key];
|
|
71
50
|
}
|
|
72
|
-
|
|
73
51
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
74
|
-
(
|
|
52
|
+
_defineProperty(_assertThisInitialized(_this), "translate", function (key) {
|
|
75
53
|
var translations = _this.props.translations;
|
|
76
54
|
var translation = translations && translations.hasOwnProperty(key) ? translations[key] : defaultTranslations[key];
|
|
77
|
-
|
|
78
55
|
if (typeof translation === 'function') {
|
|
79
56
|
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
80
57
|
params[_key2 - 1] = arguments[_key2];
|
|
81
58
|
}
|
|
82
|
-
|
|
83
59
|
return translation.apply(void 0, params);
|
|
84
60
|
}
|
|
85
|
-
|
|
86
61
|
return translation;
|
|
87
62
|
});
|
|
88
63
|
return _this;
|
|
89
64
|
}
|
|
90
|
-
|
|
91
|
-
(0, _createClass2.default)(Translatable, [{
|
|
65
|
+
_createClass(Translatable, [{
|
|
92
66
|
key: "render",
|
|
93
67
|
value: function render() {
|
|
94
|
-
return /*#__PURE__*/_react.default.createElement(Composed, (
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(Composed, _extends({
|
|
95
69
|
translate: this.translate
|
|
96
70
|
}, this.props));
|
|
97
71
|
}
|
|
98
72
|
}]);
|
|
99
73
|
return Translatable;
|
|
100
74
|
}(_react.Component);
|
|
101
|
-
|
|
102
75
|
var name = Composed.displayName || Composed.name || 'UnknownComponent';
|
|
103
76
|
Translatable.displayName = "Translatable(".concat(name, ")");
|
|
104
77
|
Translatable.propTypes = {
|
package/dist/cjs/core/utils.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -16,67 +14,51 @@ exports.objectHasKeys = objectHasKeys;
|
|
|
16
14
|
exports.omit = omit;
|
|
17
15
|
exports.shallowEqual = exports.removeEmptyKey = exports.removeEmptyArraysFromObject = void 0;
|
|
18
16
|
exports.unescapeFacetValue = unescapeFacetValue;
|
|
19
|
-
|
|
20
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
23
|
-
|
|
24
17
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
|
-
function
|
|
27
|
-
|
|
18
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
21
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
22
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
28
23
|
// From https://github.com/reactjs/react-redux/blob/master/src/utils/shallowEqual.js
|
|
29
24
|
var shallowEqual = function shallowEqual(objA, objB) {
|
|
30
25
|
if (objA === objB) {
|
|
31
26
|
return true;
|
|
32
27
|
}
|
|
33
|
-
|
|
34
28
|
var keysA = Object.keys(objA);
|
|
35
29
|
var keysB = Object.keys(objB);
|
|
36
|
-
|
|
37
30
|
if (keysA.length !== keysB.length) {
|
|
38
31
|
return false;
|
|
39
|
-
}
|
|
40
|
-
|
|
32
|
+
}
|
|
41
33
|
|
|
34
|
+
// Test for A's keys different from B.
|
|
42
35
|
var hasOwn = Object.prototype.hasOwnProperty;
|
|
43
|
-
|
|
44
36
|
for (var i = 0; i < keysA.length; i++) {
|
|
45
37
|
if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {
|
|
46
38
|
return false;
|
|
47
39
|
}
|
|
48
40
|
}
|
|
49
|
-
|
|
50
41
|
return true;
|
|
51
42
|
};
|
|
52
|
-
|
|
53
43
|
exports.shallowEqual = shallowEqual;
|
|
54
|
-
|
|
55
44
|
var getDisplayName = function getDisplayName(Component) {
|
|
56
45
|
return Component.displayName || Component.name || 'UnknownComponent';
|
|
57
46
|
};
|
|
58
|
-
|
|
59
47
|
exports.getDisplayName = getDisplayName;
|
|
60
48
|
var resolved = Promise.resolve();
|
|
61
|
-
|
|
62
49
|
var defer = function defer(f) {
|
|
63
50
|
resolved.then(f);
|
|
64
51
|
};
|
|
65
|
-
|
|
66
52
|
exports.defer = defer;
|
|
67
|
-
|
|
68
53
|
var isPlainObject = function isPlainObject(value) {
|
|
69
|
-
return (
|
|
54
|
+
return _typeof(value) === 'object' && value !== null && !Array.isArray(value);
|
|
70
55
|
};
|
|
71
|
-
|
|
72
56
|
var removeEmptyKey = function removeEmptyKey(obj) {
|
|
73
57
|
Object.keys(obj).forEach(function (key) {
|
|
74
58
|
var value = obj[key];
|
|
75
|
-
|
|
76
59
|
if (!isPlainObject(value)) {
|
|
77
60
|
return;
|
|
78
61
|
}
|
|
79
|
-
|
|
80
62
|
if (!objectHasKeys(value)) {
|
|
81
63
|
delete obj[key];
|
|
82
64
|
} else {
|
|
@@ -85,22 +67,17 @@ var removeEmptyKey = function removeEmptyKey(obj) {
|
|
|
85
67
|
});
|
|
86
68
|
return obj;
|
|
87
69
|
};
|
|
88
|
-
|
|
89
70
|
exports.removeEmptyKey = removeEmptyKey;
|
|
90
|
-
|
|
91
71
|
var removeEmptyArraysFromObject = function removeEmptyArraysFromObject(obj) {
|
|
92
72
|
Object.keys(obj).forEach(function (key) {
|
|
93
73
|
var value = obj[key];
|
|
94
|
-
|
|
95
74
|
if (Array.isArray(value) && value.length === 0) {
|
|
96
75
|
delete obj[key];
|
|
97
76
|
}
|
|
98
77
|
});
|
|
99
78
|
return obj;
|
|
100
79
|
};
|
|
101
|
-
|
|
102
80
|
exports.removeEmptyArraysFromObject = removeEmptyArraysFromObject;
|
|
103
|
-
|
|
104
81
|
function addAbsolutePositions(hits, hitsPerPage, page) {
|
|
105
82
|
return hits.map(function (hit, index) {
|
|
106
83
|
return _objectSpread(_objectSpread({}, hit), {}, {
|
|
@@ -108,59 +85,49 @@ function addAbsolutePositions(hits, hitsPerPage, page) {
|
|
|
108
85
|
});
|
|
109
86
|
});
|
|
110
87
|
}
|
|
111
|
-
|
|
112
88
|
function addQueryID(hits, queryID) {
|
|
113
89
|
if (!queryID) {
|
|
114
90
|
return hits;
|
|
115
91
|
}
|
|
116
|
-
|
|
117
92
|
return hits.map(function (hit) {
|
|
118
93
|
return _objectSpread(_objectSpread({}, hit), {}, {
|
|
119
94
|
__queryID: queryID
|
|
120
95
|
});
|
|
121
96
|
});
|
|
122
97
|
}
|
|
123
|
-
|
|
124
98
|
function find(array, comparator) {
|
|
125
99
|
if (!Array.isArray(array)) {
|
|
126
100
|
return undefined;
|
|
127
101
|
}
|
|
128
|
-
|
|
129
102
|
for (var i = 0; i < array.length; i++) {
|
|
130
103
|
if (comparator(array[i])) {
|
|
131
104
|
return array[i];
|
|
132
105
|
}
|
|
133
106
|
}
|
|
134
|
-
|
|
135
107
|
return undefined;
|
|
136
108
|
}
|
|
137
|
-
|
|
138
109
|
function objectHasKeys(object) {
|
|
139
110
|
return object && Object.keys(object).length > 0;
|
|
140
|
-
}
|
|
141
|
-
|
|
111
|
+
}
|
|
142
112
|
|
|
113
|
+
// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620
|
|
143
114
|
function omit(source, excluded) {
|
|
144
115
|
if (source === null || source === undefined) {
|
|
145
116
|
return {};
|
|
146
117
|
}
|
|
147
|
-
|
|
148
118
|
var target = {};
|
|
149
119
|
var sourceKeys = Object.keys(source);
|
|
150
|
-
|
|
151
120
|
for (var i = 0; i < sourceKeys.length; i++) {
|
|
152
|
-
var
|
|
153
|
-
|
|
154
|
-
if (excluded.indexOf(_key) >= 0) {
|
|
121
|
+
var key = sourceKeys[i];
|
|
122
|
+
if (excluded.indexOf(key) >= 0) {
|
|
155
123
|
// eslint-disable-next-line no-continue
|
|
156
124
|
continue;
|
|
157
125
|
}
|
|
158
|
-
|
|
159
|
-
target[_key] = source[_key];
|
|
126
|
+
target[key] = source[key];
|
|
160
127
|
}
|
|
161
|
-
|
|
162
128
|
return target;
|
|
163
129
|
}
|
|
130
|
+
|
|
164
131
|
/**
|
|
165
132
|
* Retrieve the value at a path of the object:
|
|
166
133
|
*
|
|
@@ -178,20 +145,15 @@ function omit(source, excluded) {
|
|
|
178
145
|
* @param object Source object to query
|
|
179
146
|
* @param path either an array of properties, or a string form of the properties, separated by .
|
|
180
147
|
*/
|
|
181
|
-
|
|
182
|
-
|
|
183
148
|
var getPropertyByPath = function getPropertyByPath(object, path) {
|
|
184
149
|
return (Array.isArray(path) ? path : path.replace(/\[(\d+)]/g, '.$1').split('.')).reduce(function (current, key) {
|
|
185
150
|
return current ? current[key] : undefined;
|
|
186
151
|
}, object);
|
|
187
152
|
};
|
|
188
|
-
|
|
189
153
|
exports.getPropertyByPath = getPropertyByPath;
|
|
190
|
-
|
|
191
154
|
function getObjectType(object) {
|
|
192
155
|
return Object.prototype.toString.call(object).slice(8, -1);
|
|
193
156
|
}
|
|
194
|
-
|
|
195
157
|
function unescapeFacetValue(value) {
|
|
196
158
|
return value.replace(/^\\-/, '-');
|
|
197
159
|
}
|
package/dist/cjs/core/version.js
CHANGED