@algolia/autocomplete-plugin-tags 1.4.0 → 1.5.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/dist/esm/createTags.js +2 -2
- package/dist/esm/createTagsPlugin.d.ts +1 -1
- package/dist/esm/createTagsPlugin.js +39 -30
- package/dist/esm/types/Tag.js +1 -0
- package/dist/theme.css +1 -1
- package/dist/theme.min.css +1 -1
- package/dist/umd/index.development.js +65 -52
- package/dist/umd/index.development.js.map +1 -1
- package/dist/umd/index.production.js +2 -2
- package/dist/umd/index.production.js.map +1 -1
- package/package.json +4 -4
package/dist/esm/createTags.js
CHANGED
|
@@ -4,13 +4,13 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
4
4
|
|
|
5
5
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
6
|
|
|
7
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator
|
|
7
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
8
8
|
|
|
9
9
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
10
10
|
|
|
11
11
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
12
12
|
|
|
13
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
14
14
|
|
|
15
15
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
16
|
|
|
@@ -60,5 +60,5 @@ export declare type CreateTagsPluginParams<TItem extends BaseItem, TTag extends
|
|
|
60
60
|
*/
|
|
61
61
|
onChange?(params: OnChangeParams<TTag>): void;
|
|
62
62
|
};
|
|
63
|
-
export declare function createTagsPlugin<TItem extends BaseItem, TTag extends DefaultTagType = DefaultTagType>(
|
|
63
|
+
export declare function createTagsPlugin<TItem extends BaseItem, TTag extends DefaultTagType = DefaultTagType>(options?: CreateTagsPluginParams<TItem, TTag>): AutocompletePlugin<Tag<TTag>, TagsPluginData<TTag>>;
|
|
64
64
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -8,20 +8,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
8
8
|
import { noop } from '@algolia/autocomplete-shared';
|
|
9
9
|
import { createTags } from './createTags';
|
|
10
10
|
export function createTagsPlugin() {
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
getTagsSubscribers =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
_ref$transformSource = _ref.transformSource,
|
|
19
|
-
transformSource = _ref$transformSource === void 0 ? function (_ref2) {
|
|
20
|
-
var source = _ref2.source;
|
|
21
|
-
return source;
|
|
22
|
-
} : _ref$transformSource,
|
|
23
|
-
_ref$onChange = _ref.onChange,
|
|
24
|
-
onChange = _ref$onChange === void 0 ? noop : _ref$onChange;
|
|
11
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
12
|
+
|
|
13
|
+
var _getOptions = getOptions(options),
|
|
14
|
+
initialTags = _getOptions.initialTags,
|
|
15
|
+
getTagsSubscribers = _getOptions.getTagsSubscribers,
|
|
16
|
+
transformSource = _getOptions.transformSource,
|
|
17
|
+
onChange = _getOptions.onChange;
|
|
25
18
|
|
|
26
19
|
var tags = createTags({
|
|
27
20
|
initialTags: initialTags
|
|
@@ -31,6 +24,7 @@ export function createTagsPlugin() {
|
|
|
31
24
|
addTags: tags.add
|
|
32
25
|
};
|
|
33
26
|
return {
|
|
27
|
+
name: 'aa.tagsPlugin',
|
|
34
28
|
subscribe: function subscribe(params) {
|
|
35
29
|
var setContext = params.setContext,
|
|
36
30
|
onSelect = params.onSelect,
|
|
@@ -42,11 +36,11 @@ export function createTagsPlugin() {
|
|
|
42
36
|
tags: tags.get()
|
|
43
37
|
})
|
|
44
38
|
});
|
|
45
|
-
onSelect(function (
|
|
46
|
-
var source =
|
|
47
|
-
item =
|
|
48
|
-
var subscriber = subscribers.find(function (
|
|
49
|
-
var sourceId =
|
|
39
|
+
onSelect(function (_ref) {
|
|
40
|
+
var source = _ref.source,
|
|
41
|
+
item = _ref.item;
|
|
42
|
+
var subscriber = subscribers.find(function (_ref2) {
|
|
43
|
+
var sourceId = _ref2.sourceId;
|
|
50
44
|
return sourceId === source.sourceId;
|
|
51
45
|
});
|
|
52
46
|
|
|
@@ -56,8 +50,8 @@ export function createTagsPlugin() {
|
|
|
56
50
|
})]);
|
|
57
51
|
}
|
|
58
52
|
});
|
|
59
|
-
tags.onChange(function (
|
|
60
|
-
var prevTags =
|
|
53
|
+
tags.onChange(function (_ref3) {
|
|
54
|
+
var prevTags = _ref3.prevTags;
|
|
61
55
|
setContext({
|
|
62
56
|
tagsPlugin: _objectSpread(_objectSpread({}, tagsApi), {}, {
|
|
63
57
|
tags: tags.get()
|
|
@@ -71,22 +65,22 @@ export function createTagsPlugin() {
|
|
|
71
65
|
refresh();
|
|
72
66
|
});
|
|
73
67
|
},
|
|
74
|
-
getSources: function getSources(
|
|
75
|
-
var state =
|
|
68
|
+
getSources: function getSources(_ref4) {
|
|
69
|
+
var state = _ref4.state;
|
|
76
70
|
return [transformSource({
|
|
77
71
|
source: {
|
|
78
72
|
sourceId: 'tagsPlugin',
|
|
79
73
|
getItems: function getItems() {
|
|
80
74
|
return tags.get();
|
|
81
75
|
},
|
|
82
|
-
onSelect: function onSelect(
|
|
83
|
-
var item =
|
|
76
|
+
onSelect: function onSelect(_ref5) {
|
|
77
|
+
var item = _ref5.item;
|
|
84
78
|
item.remove();
|
|
85
79
|
},
|
|
86
80
|
templates: {
|
|
87
|
-
item: function item(
|
|
88
|
-
var item =
|
|
89
|
-
createElement =
|
|
81
|
+
item: function item(_ref6) {
|
|
82
|
+
var item = _ref6.item,
|
|
83
|
+
createElement = _ref6.createElement;
|
|
90
84
|
return createElement("div", {
|
|
91
85
|
className: "aa-TagsPlugin-Tag"
|
|
92
86
|
}, createElement("span", {
|
|
@@ -117,6 +111,21 @@ export function createTagsPlugin() {
|
|
|
117
111
|
return tags.get();
|
|
118
112
|
}
|
|
119
113
|
|
|
120
|
-
})
|
|
114
|
+
}),
|
|
115
|
+
__autocomplete_pluginOptions: options
|
|
121
116
|
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function getOptions(options) {
|
|
120
|
+
return _objectSpread({
|
|
121
|
+
initialTags: [],
|
|
122
|
+
getTagsSubscribers: function getTagsSubscribers() {
|
|
123
|
+
return [];
|
|
124
|
+
},
|
|
125
|
+
transformSource: function transformSource(_ref7) {
|
|
126
|
+
var source = _ref7.source;
|
|
127
|
+
return source;
|
|
128
|
+
},
|
|
129
|
+
onChange: noop
|
|
130
|
+
}, options);
|
|
122
131
|
}
|
package/dist/esm/types/Tag.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/theme.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-tags 1.
|
|
1
|
+
/*! @algolia/autocomplete-plugin-tags 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
[data-autocomplete-source-id=tagsPlugin] {
|
|
3
3
|
margin-bottom: var(--aa-spacing-half);
|
|
4
4
|
}
|
package/dist/theme.min.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-tags 1.
|
|
1
|
+
/*! @algolia/autocomplete-plugin-tags 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
[data-autocomplete-source-id=tagsPlugin]{margin-bottom:var(--aa-spacing-half)}[data-autocomplete-source-id=tagsPlugin] .aa-List{display:flex;flex-wrap:wrap;margin:calc(var(--aa-spacing-half)/2*-1)}[data-autocomplete-source-id=tagsPlugin] .aa-Item{background-color:rgba(var(--aa-selected-color-rgb),var(--aa-selected-color-alpha));margin:calc(var(--aa-spacing-half)/2);min-height:auto}[data-autocomplete-source-id=tagsPlugin] .aa-Item[aria-selected=true]{background-color:rgba(var(--aa-selected-color-rgb),.55)}.aa-TagsPlugin-Tag{align-items:center;display:flex;padding-left:var(--aa-spacing-half)}.aa-TagsPlugin-TagLabel{font-size:.8em}.aa-TagsPlugin-RemoveButton{cursor:pointer}.aa-TagsPlugin-RemoveButton svg{color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));margin:calc(var(--aa-spacing)/3);stroke-width:var(--aa-icon-stroke-width);width:calc(var(--aa-action-icon-size)/1.5)}.aa-TagsPlugin-RemoveButton:focus svg,.aa-TagsPlugin-RemoveButton:hover svg{color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}@media (hover:none) and (pointer:coarse){.aa-TagsPlugin-RemoveButton:focus,.aa-TagsPlugin-RemoveButton:hover{color:inherit}}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-tags 1.
|
|
1
|
+
/*! @algolia/autocomplete-plugin-tags 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
5
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[
|
|
6
|
-
}(this, (function (exports) { 'use strict';
|
|
7
|
-
|
|
8
|
-
function _defineProperty(obj, key, value) {
|
|
9
|
-
if (key in obj) {
|
|
10
|
-
Object.defineProperty(obj, key, {
|
|
11
|
-
value: value,
|
|
12
|
-
enumerable: true,
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: true
|
|
15
|
-
});
|
|
16
|
-
} else {
|
|
17
|
-
obj[key] = value;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return obj;
|
|
21
|
-
}
|
|
5
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@algolia/autocomplete-plugin-tags"] = {}));
|
|
6
|
+
})(this, (function (exports) { 'use strict';
|
|
22
7
|
|
|
23
8
|
function ownKeys(object, enumerableOnly) {
|
|
24
9
|
var keys = Object.keys(object);
|
|
25
10
|
|
|
26
11
|
if (Object.getOwnPropertySymbols) {
|
|
27
12
|
var symbols = Object.getOwnPropertySymbols(object);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
13
|
+
|
|
14
|
+
if (enumerableOnly) {
|
|
15
|
+
symbols = symbols.filter(function (sym) {
|
|
16
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
31
20
|
keys.push.apply(keys, symbols);
|
|
32
21
|
}
|
|
33
22
|
|
|
@@ -54,6 +43,21 @@
|
|
|
54
43
|
return target;
|
|
55
44
|
}
|
|
56
45
|
|
|
46
|
+
function _defineProperty(obj, key, value) {
|
|
47
|
+
if (key in obj) {
|
|
48
|
+
Object.defineProperty(obj, key, {
|
|
49
|
+
value: value,
|
|
50
|
+
enumerable: true,
|
|
51
|
+
configurable: true,
|
|
52
|
+
writable: true
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
obj[key] = value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return obj;
|
|
59
|
+
}
|
|
60
|
+
|
|
57
61
|
function _toConsumableArray(arr) {
|
|
58
62
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
59
63
|
}
|
|
@@ -63,7 +67,7 @@
|
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
function _iterableToArray(iter) {
|
|
66
|
-
if (typeof Symbol !== "undefined" && Symbol.iterator
|
|
70
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
function _unsupportedIterableToArray(o, minLen) {
|
|
@@ -157,20 +161,13 @@
|
|
|
157
161
|
}
|
|
158
162
|
|
|
159
163
|
function createTagsPlugin() {
|
|
160
|
-
var
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
getTagsSubscribers =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
_ref$transformSource = _ref.transformSource,
|
|
168
|
-
transformSource = _ref$transformSource === void 0 ? function (_ref2) {
|
|
169
|
-
var source = _ref2.source;
|
|
170
|
-
return source;
|
|
171
|
-
} : _ref$transformSource,
|
|
172
|
-
_ref$onChange = _ref.onChange,
|
|
173
|
-
onChange = _ref$onChange === void 0 ? noop : _ref$onChange;
|
|
164
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
165
|
+
|
|
166
|
+
var _getOptions = getOptions(options),
|
|
167
|
+
initialTags = _getOptions.initialTags,
|
|
168
|
+
getTagsSubscribers = _getOptions.getTagsSubscribers,
|
|
169
|
+
transformSource = _getOptions.transformSource,
|
|
170
|
+
onChange = _getOptions.onChange;
|
|
174
171
|
|
|
175
172
|
var tags = createTags({
|
|
176
173
|
initialTags: initialTags
|
|
@@ -180,6 +177,7 @@
|
|
|
180
177
|
addTags: tags.add
|
|
181
178
|
};
|
|
182
179
|
return {
|
|
180
|
+
name: 'aa.tagsPlugin',
|
|
183
181
|
subscribe: function subscribe(params) {
|
|
184
182
|
var setContext = params.setContext,
|
|
185
183
|
onSelect = params.onSelect,
|
|
@@ -191,11 +189,11 @@
|
|
|
191
189
|
tags: tags.get()
|
|
192
190
|
})
|
|
193
191
|
});
|
|
194
|
-
onSelect(function (
|
|
195
|
-
var source =
|
|
196
|
-
item =
|
|
197
|
-
var subscriber = subscribers.find(function (
|
|
198
|
-
var sourceId =
|
|
192
|
+
onSelect(function (_ref) {
|
|
193
|
+
var source = _ref.source,
|
|
194
|
+
item = _ref.item;
|
|
195
|
+
var subscriber = subscribers.find(function (_ref2) {
|
|
196
|
+
var sourceId = _ref2.sourceId;
|
|
199
197
|
return sourceId === source.sourceId;
|
|
200
198
|
});
|
|
201
199
|
|
|
@@ -205,8 +203,8 @@
|
|
|
205
203
|
})]);
|
|
206
204
|
}
|
|
207
205
|
});
|
|
208
|
-
tags.onChange(function (
|
|
209
|
-
var prevTags =
|
|
206
|
+
tags.onChange(function (_ref3) {
|
|
207
|
+
var prevTags = _ref3.prevTags;
|
|
210
208
|
setContext({
|
|
211
209
|
tagsPlugin: _objectSpread2(_objectSpread2({}, tagsApi), {}, {
|
|
212
210
|
tags: tags.get()
|
|
@@ -220,22 +218,22 @@
|
|
|
220
218
|
refresh();
|
|
221
219
|
});
|
|
222
220
|
},
|
|
223
|
-
getSources: function getSources(
|
|
224
|
-
var state =
|
|
221
|
+
getSources: function getSources(_ref4) {
|
|
222
|
+
var state = _ref4.state;
|
|
225
223
|
return [transformSource({
|
|
226
224
|
source: {
|
|
227
225
|
sourceId: 'tagsPlugin',
|
|
228
226
|
getItems: function getItems() {
|
|
229
227
|
return tags.get();
|
|
230
228
|
},
|
|
231
|
-
onSelect: function onSelect(
|
|
232
|
-
var item =
|
|
229
|
+
onSelect: function onSelect(_ref5) {
|
|
230
|
+
var item = _ref5.item;
|
|
233
231
|
item.remove();
|
|
234
232
|
},
|
|
235
233
|
templates: {
|
|
236
|
-
item: function item(
|
|
237
|
-
var item =
|
|
238
|
-
createElement =
|
|
234
|
+
item: function item(_ref6) {
|
|
235
|
+
var item = _ref6.item,
|
|
236
|
+
createElement = _ref6.createElement;
|
|
239
237
|
return createElement("div", {
|
|
240
238
|
className: "aa-TagsPlugin-Tag"
|
|
241
239
|
}, createElement("span", {
|
|
@@ -266,13 +264,28 @@
|
|
|
266
264
|
return tags.get();
|
|
267
265
|
}
|
|
268
266
|
|
|
269
|
-
})
|
|
267
|
+
}),
|
|
268
|
+
__autocomplete_pluginOptions: options
|
|
270
269
|
};
|
|
271
270
|
}
|
|
272
271
|
|
|
272
|
+
function getOptions(options) {
|
|
273
|
+
return _objectSpread2({
|
|
274
|
+
initialTags: [],
|
|
275
|
+
getTagsSubscribers: function getTagsSubscribers() {
|
|
276
|
+
return [];
|
|
277
|
+
},
|
|
278
|
+
transformSource: function transformSource(_ref7) {
|
|
279
|
+
var source = _ref7.source;
|
|
280
|
+
return source;
|
|
281
|
+
},
|
|
282
|
+
onChange: noop
|
|
283
|
+
}, options);
|
|
284
|
+
}
|
|
285
|
+
|
|
273
286
|
exports.createTagsPlugin = createTagsPlugin;
|
|
274
287
|
|
|
275
288
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
276
289
|
|
|
277
|
-
}))
|
|
290
|
+
}));
|
|
278
291
|
//# sourceMappingURL=index.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/noop.js","../../src/createTags.ts","../../src/createTagsPlugin.tsx"],"sourcesContent":["export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var noop = function noop() {};","import { BaseItem } from '@algolia/autocomplete-core';\nimport { createRef } from '@algolia/autocomplete-shared';\n\nimport { CreateTagsPluginParams } from './createTagsPlugin';\nimport { DefaultTagType, BaseTag, Tag } from './types';\n\nexport type OnTagsChangeParams<TTag extends DefaultTagType = DefaultTagType> = {\n prevTags: Array<Tag<TTag>>;\n tags: Array<Tag<TTag>>;\n};\n\ntype OnTagsChangeListener<TTag extends DefaultTagType = DefaultTagType> = (\n params: OnTagsChangeParams<TTag>\n) => void;\n\ntype CreateTagsParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n> = Pick<CreateTagsPluginParams<TItem, TTag>, 'initialTags'>;\n\nexport function createTags<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({ initialTags = [] }: CreateTagsParams<TItem, TTag>) {\n const tagsRef = createRef(mapToTags(initialTags));\n const onChangeListeners: Array<OnTagsChangeListener<TTag>> = [];\n\n function mapToTags<TTag extends DefaultTagType = DefaultTagType>(\n baseTags: Array<BaseTag<TTag>>\n ): Array<Tag<TTag>> {\n return baseTags.map((baseTag) => {\n const tag = {\n ...baseTag,\n remove() {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = tagsRef.current.filter(\n (tagRef) => tag !== ((tagRef as unknown) as Tag<TTag>)\n );\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n };\n\n return tag;\n });\n }\n\n return {\n get() {\n return tagsRef.current;\n },\n set(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = mapToTags(baseTags);\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n add(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current.push(...mapToTags(baseTags));\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n onChange(listener: OnTagsChangeListener<TTag>) {\n onChangeListeners.push(listener);\n },\n };\n}\n","/** @jsx createElement */\nimport { BaseItem, PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompletePlugin,\n AutocompleteSource,\n AutocompleteState,\n} from '@algolia/autocomplete-js';\nimport { noop } from '@algolia/autocomplete-shared';\n\nimport { createTags, OnTagsChangeParams } from './createTags';\nimport type { DefaultTagType, BaseTag, Tag } from './types';\n\ntype OnChangeParams<\n TTag extends DefaultTagType = DefaultTagType\n> = PluginSubscribeParams<any> & OnTagsChangeParams<TTag>;\n\ntype GetTagParams<TItem extends BaseItem> = { item: TItem };\n\ntype TagsPluginData<TTag extends DefaultTagType = DefaultTagType> = {\n /**\n * Returns the current list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-tags\n */\n tags: Array<Tag<TTag>>;\n /**\n * Adds tags to the list.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-addtags\n */\n addTags: (tags: Array<BaseTag<TTag>>) => void;\n /**\n * Sets the list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-settags\n */\n setTags: (tags: Array<BaseTag<TTag>>) => void;\n};\n\nexport type TagsApi<\n TTag extends DefaultTagType = DefaultTagType\n> = TagsPluginData<TTag>;\n\nexport type CreateTagsPluginParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType\n> = {\n /**\n * A set of initial tags to pass to the plugin.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-initialtags\n */\n initialTags?: Array<BaseTag<TTag>>;\n /**\n * A function to specify what sources the plugin should subscribe to. The plugin adds a tag when selecting an item from these sources.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-gettagssubscribers\n */\n getTagsSubscribers?(): Array<{\n sourceId: string;\n getTag(params: GetTagParams<TItem>): BaseTag<TTag>;\n }>;\n /**\n * A function to transform the returned tags source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<Tag<TTag>>;\n state: AutocompleteState<Tag<TTag>>;\n }): AutocompleteSource<Tag<TTag>> | undefined;\n /**\n * A function called when the list of tags changes.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-onchange\n */\n onChange?(params: OnChangeParams<TTag>): void;\n};\n\nexport function createTagsPlugin<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({\n initialTags = [],\n getTagsSubscribers = () => [],\n transformSource = ({ source }) => source,\n onChange = noop,\n}: CreateTagsPluginParams<TItem, TTag> = {}): AutocompletePlugin<\n Tag<TTag>,\n TagsPluginData<TTag>\n> {\n const tags = createTags({ initialTags });\n const tagsApi = { setTags: tags.set, addTags: tags.add };\n\n return {\n subscribe(params) {\n const { setContext, onSelect, setIsOpen, refresh } = params;\n const subscribers = getTagsSubscribers();\n\n setContext({ tagsPlugin: { ...tagsApi, tags: tags.get() } });\n\n onSelect(({ source, item }) => {\n const subscriber = subscribers.find(\n ({ sourceId }) => sourceId === source.sourceId\n );\n\n if (subscriber) {\n tags.add([subscriber.getTag({ item })]);\n }\n });\n\n tags.onChange(({ prevTags }) => {\n setContext({\n tagsPlugin: { ...tagsApi, tags: tags.get() },\n });\n\n setIsOpen(true);\n onChange({ ...params, prevTags, tags: tags.get() });\n refresh();\n });\n },\n getSources({ state }) {\n return [\n transformSource({\n source: {\n sourceId: 'tagsPlugin',\n getItems() {\n return tags.get();\n },\n onSelect({ item }) {\n item.remove();\n },\n templates: {\n item({ item, createElement }) {\n return (\n <div className=\"aa-TagsPlugin-Tag\">\n <span className=\"aa-TagsPlugin-TagLabel\">{item.label}</span>\n <button\n className=\"aa-TagsPlugin-RemoveButton\"\n title=\"Remove this tag\"\n >\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M18 6L6 18\"></path>\n <path d=\"M6 6L18 18\"></path>\n </svg>\n </button>\n </div>\n );\n },\n },\n },\n state: state as AutocompleteState<Tag<TTag>>,\n }),\n ];\n },\n data: {\n ...tagsApi,\n get tags() {\n return tags.get();\n },\n },\n };\n}\n"],"names":["createRef","initialValue","current","noop","createTags","initialTags","tagsRef","mapToTags","onChangeListeners","baseTags","map","baseTag","tag","remove","prevTags","slice","filter","tagRef","forEach","listener","tags","get","set","add","push","onChange","createTagsPlugin","getTagsSubscribers","transformSource","source","tagsApi","setTags","addTags","subscribe","params","setContext","onSelect","setIsOpen","refresh","subscribers","tagsPlugin","item","subscriber","find","sourceId","getTag","getSources","state","getItems","templates","createElement","label","data"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/noop.js","../../src/createTags.ts","../../src/createTagsPlugin.tsx"],"sourcesContent":["export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var noop = function noop() {};","import { BaseItem } from '@algolia/autocomplete-core';\nimport { createRef } from '@algolia/autocomplete-shared';\n\nimport { CreateTagsPluginParams } from './createTagsPlugin';\nimport { DefaultTagType, BaseTag, Tag } from './types';\n\nexport type OnTagsChangeParams<TTag extends DefaultTagType = DefaultTagType> = {\n prevTags: Array<Tag<TTag>>;\n tags: Array<Tag<TTag>>;\n};\n\ntype OnTagsChangeListener<TTag extends DefaultTagType = DefaultTagType> = (\n params: OnTagsChangeParams<TTag>\n) => void;\n\ntype CreateTagsParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n> = Pick<CreateTagsPluginParams<TItem, TTag>, 'initialTags'>;\n\nexport function createTags<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({ initialTags = [] }: CreateTagsParams<TItem, TTag>) {\n const tagsRef = createRef(mapToTags(initialTags));\n const onChangeListeners: Array<OnTagsChangeListener<TTag>> = [];\n\n function mapToTags<TTag extends DefaultTagType = DefaultTagType>(\n baseTags: Array<BaseTag<TTag>>\n ): Array<Tag<TTag>> {\n return baseTags.map((baseTag) => {\n const tag = {\n ...baseTag,\n remove() {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = tagsRef.current.filter(\n (tagRef) => tag !== ((tagRef as unknown) as Tag<TTag>)\n );\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n };\n\n return tag;\n });\n }\n\n return {\n get() {\n return tagsRef.current;\n },\n set(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = mapToTags(baseTags);\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n add(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current.push(...mapToTags(baseTags));\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n onChange(listener: OnTagsChangeListener<TTag>) {\n onChangeListeners.push(listener);\n },\n };\n}\n","/** @jsx createElement */\nimport { BaseItem, PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompletePlugin,\n AutocompleteSource,\n AutocompleteState,\n} from '@algolia/autocomplete-js';\nimport { noop } from '@algolia/autocomplete-shared';\n\nimport { createTags, OnTagsChangeParams } from './createTags';\nimport type { DefaultTagType, BaseTag, Tag } from './types';\n\ntype OnChangeParams<\n TTag extends DefaultTagType = DefaultTagType\n> = PluginSubscribeParams<any> & OnTagsChangeParams<TTag>;\n\ntype GetTagParams<TItem extends BaseItem> = { item: TItem };\n\ntype TagsPluginData<TTag extends DefaultTagType = DefaultTagType> = {\n /**\n * Returns the current list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-tags\n */\n tags: Array<Tag<TTag>>;\n /**\n * Adds tags to the list.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-addtags\n */\n addTags: (tags: Array<BaseTag<TTag>>) => void;\n /**\n * Sets the list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-settags\n */\n setTags: (tags: Array<BaseTag<TTag>>) => void;\n};\n\nexport type TagsApi<\n TTag extends DefaultTagType = DefaultTagType\n> = TagsPluginData<TTag>;\n\nexport type CreateTagsPluginParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType\n> = {\n /**\n * A set of initial tags to pass to the plugin.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-initialtags\n */\n initialTags?: Array<BaseTag<TTag>>;\n /**\n * A function to specify what sources the plugin should subscribe to. The plugin adds a tag when selecting an item from these sources.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-gettagssubscribers\n */\n getTagsSubscribers?(): Array<{\n sourceId: string;\n getTag(params: GetTagParams<TItem>): BaseTag<TTag>;\n }>;\n /**\n * A function to transform the returned tags source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<Tag<TTag>>;\n state: AutocompleteState<Tag<TTag>>;\n }): AutocompleteSource<Tag<TTag>> | undefined;\n /**\n * A function called when the list of tags changes.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-onchange\n */\n onChange?(params: OnChangeParams<TTag>): void;\n};\n\nexport function createTagsPlugin<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>(\n options: CreateTagsPluginParams<TItem, TTag> = {}\n): AutocompletePlugin<Tag<TTag>, TagsPluginData<TTag>> {\n const {\n initialTags,\n getTagsSubscribers,\n transformSource,\n onChange,\n } = getOptions(options);\n const tags = createTags({ initialTags });\n const tagsApi = { setTags: tags.set, addTags: tags.add };\n\n return {\n name: 'aa.tagsPlugin',\n subscribe(params) {\n const { setContext, onSelect, setIsOpen, refresh } = params;\n const subscribers = getTagsSubscribers();\n\n setContext({ tagsPlugin: { ...tagsApi, tags: tags.get() } });\n\n onSelect(({ source, item }) => {\n const subscriber = subscribers.find(\n ({ sourceId }) => sourceId === source.sourceId\n );\n\n if (subscriber) {\n tags.add([subscriber.getTag({ item })]);\n }\n });\n\n tags.onChange(({ prevTags }) => {\n setContext({\n tagsPlugin: { ...tagsApi, tags: tags.get() },\n });\n\n setIsOpen(true);\n onChange({ ...params, prevTags, tags: tags.get() });\n refresh();\n });\n },\n getSources({ state }) {\n return [\n transformSource({\n source: {\n sourceId: 'tagsPlugin',\n getItems() {\n return tags.get();\n },\n onSelect({ item }) {\n item.remove();\n },\n templates: {\n item({ item, createElement }) {\n return (\n <div className=\"aa-TagsPlugin-Tag\">\n <span className=\"aa-TagsPlugin-TagLabel\">{item.label}</span>\n <button\n className=\"aa-TagsPlugin-RemoveButton\"\n title=\"Remove this tag\"\n >\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M18 6L6 18\"></path>\n <path d=\"M6 6L18 18\"></path>\n </svg>\n </button>\n </div>\n );\n },\n },\n },\n state: state as AutocompleteState<Tag<TTag>>,\n }),\n ];\n },\n data: {\n ...tagsApi,\n get tags() {\n return tags.get();\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>(options: CreateTagsPluginParams<TItem, TTag>) {\n return {\n initialTags: [],\n getTagsSubscribers: () => [],\n transformSource: ({ source }) => source,\n onChange: noop,\n ...options,\n };\n}\n"],"names":["createRef","initialValue","current","noop","createTags","initialTags","tagsRef","mapToTags","onChangeListeners","baseTags","map","baseTag","tag","remove","prevTags","slice","filter","tagRef","forEach","listener","tags","get","set","add","push","onChange","createTagsPlugin","options","getOptions","getTagsSubscribers","transformSource","tagsApi","setTags","addTags","name","subscribe","params","setContext","onSelect","setIsOpen","refresh","subscribers","tagsPlugin","source","item","subscriber","find","sourceId","getTag","getSources","state","getItems","templates","createElement","label","data","__autocomplete_pluginOptions"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-tags 1.
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-tags"]={})}(this,(function(e){"use strict";function t(e,t
|
|
1
|
+
/*! @algolia/autocomplete-plugin-tags 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-tags"]={})}(this,(function(e){"use strict";function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(e){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?t(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u=function(){};function i(e){var t=e.initialTags,n={current:u(void 0===t?[]:t)},a=[];function u(e){return e.map((function(e){var t=r(r({},e),{},{remove:function(){var e=n.current.slice();n.current=n.current.filter((function(e){return t!==e})),a.forEach((function(t){return t({prevTags:e,tags:n.current})}))}});return t}))}return{get:function(){return n.current},set:function(e){var t=n.current.slice();n.current=u(e),a.forEach((function(e){return e({prevTags:t,tags:n.current})}))},add:function(e){var t,r=n.current.slice();(t=n.current).push.apply(t,o(u(e))),a.forEach((function(e){return e({prevTags:r,tags:n.current})}))},onChange:function(e){a.push(e)}}}function c(e){return r({initialTags:[],getTagsSubscribers:function(){return[]},transformSource:function(e){return e.source},onChange:u},e)}e.createTagsPlugin=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=c(e),n=t.initialTags,o=t.getTagsSubscribers,a=t.transformSource,u=t.onChange,s=i({initialTags:n}),f={setTags:s.set,addTags:s.add};return{name:"aa.tagsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,a=e.setIsOpen,i=e.refresh,c=o();t({tagsPlugin:r(r({},f),{},{tags:s.get()})}),n((function(e){var t=e.source,r=e.item,n=c.find((function(e){return e.sourceId===t.sourceId}));n&&s.add([n.getTag({item:r})])})),s.onChange((function(n){var o=n.prevTags;t({tagsPlugin:r(r({},f),{},{tags:s.get()})}),a(!0),u(r(r({},e),{},{prevTags:o,tags:s.get()})),i()}))},getSources:function(e){var t=e.state;return[a({source:{sourceId:"tagsPlugin",getItems:function(){return s.get()},onSelect:function(e){e.item.remove()},templates:{item:function(e){var t=e.item,r=e.createElement;return r("div",{className:"aa-TagsPlugin-Tag"},r("span",{className:"aa-TagsPlugin-TagLabel"},t.label),r("button",{className:"aa-TagsPlugin-RemoveButton",title:"Remove this tag"},r("svg",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24"},r("path",{d:"M18 6L6 18"}),r("path",{d:"M6 6L18 18"}))))}}},state:t})]},data:r(r({},f),{},{get tags(){return s.get()}}),__autocomplete_pluginOptions:e}},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
3
3
|
//# sourceMappingURL=index.production.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/noop.js","../../src/createTags.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../src/createTagsPlugin.tsx"],"sourcesContent":["export var noop = function noop() {};","import { BaseItem } from '@algolia/autocomplete-core';\nimport { createRef } from '@algolia/autocomplete-shared';\n\nimport { CreateTagsPluginParams } from './createTagsPlugin';\nimport { DefaultTagType, BaseTag, Tag } from './types';\n\nexport type OnTagsChangeParams<TTag extends DefaultTagType = DefaultTagType> = {\n prevTags: Array<Tag<TTag>>;\n tags: Array<Tag<TTag>>;\n};\n\ntype OnTagsChangeListener<TTag extends DefaultTagType = DefaultTagType> = (\n params: OnTagsChangeParams<TTag>\n) => void;\n\ntype CreateTagsParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n> = Pick<CreateTagsPluginParams<TItem, TTag>, 'initialTags'>;\n\nexport function createTags<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({ initialTags = [] }: CreateTagsParams<TItem, TTag>) {\n const tagsRef = createRef(mapToTags(initialTags));\n const onChangeListeners: Array<OnTagsChangeListener<TTag>> = [];\n\n function mapToTags<TTag extends DefaultTagType = DefaultTagType>(\n baseTags: Array<BaseTag<TTag>>\n ): Array<Tag<TTag>> {\n return baseTags.map((baseTag) => {\n const tag = {\n ...baseTag,\n remove() {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = tagsRef.current.filter(\n (tagRef) => tag !== ((tagRef as unknown) as Tag<TTag>)\n );\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n };\n\n return tag;\n });\n }\n\n return {\n get() {\n return tagsRef.current;\n },\n set(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = mapToTags(baseTags);\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n add(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current.push(...mapToTags(baseTags));\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n onChange(listener: OnTagsChangeListener<TTag>) {\n onChangeListeners.push(listener);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","/** @jsx createElement */\nimport { BaseItem, PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompletePlugin,\n AutocompleteSource,\n AutocompleteState,\n} from '@algolia/autocomplete-js';\nimport { noop } from '@algolia/autocomplete-shared';\n\nimport { createTags, OnTagsChangeParams } from './createTags';\nimport type { DefaultTagType, BaseTag, Tag } from './types';\n\ntype OnChangeParams<\n TTag extends DefaultTagType = DefaultTagType\n> = PluginSubscribeParams<any> & OnTagsChangeParams<TTag>;\n\ntype GetTagParams<TItem extends BaseItem> = { item: TItem };\n\ntype TagsPluginData<TTag extends DefaultTagType = DefaultTagType> = {\n /**\n * Returns the current list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-tags\n */\n tags: Array<Tag<TTag>>;\n /**\n * Adds tags to the list.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-addtags\n */\n addTags: (tags: Array<BaseTag<TTag>>) => void;\n /**\n * Sets the list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-settags\n */\n setTags: (tags: Array<BaseTag<TTag>>) => void;\n};\n\nexport type TagsApi<\n TTag extends DefaultTagType = DefaultTagType\n> = TagsPluginData<TTag>;\n\nexport type CreateTagsPluginParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType\n> = {\n /**\n * A set of initial tags to pass to the plugin.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-initialtags\n */\n initialTags?: Array<BaseTag<TTag>>;\n /**\n * A function to specify what sources the plugin should subscribe to. The plugin adds a tag when selecting an item from these sources.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-gettagssubscribers\n */\n getTagsSubscribers?(): Array<{\n sourceId: string;\n getTag(params: GetTagParams<TItem>): BaseTag<TTag>;\n }>;\n /**\n * A function to transform the returned tags source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<Tag<TTag>>;\n state: AutocompleteState<Tag<TTag>>;\n }): AutocompleteSource<Tag<TTag>> | undefined;\n /**\n * A function called when the list of tags changes.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-onchange\n */\n onChange?(params: OnChangeParams<TTag>): void;\n};\n\nexport function createTagsPlugin<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({\n initialTags = [],\n getTagsSubscribers = () => [],\n transformSource = ({ source }) => source,\n onChange = noop,\n}: CreateTagsPluginParams<TItem, TTag> = {}): AutocompletePlugin<\n Tag<TTag>,\n TagsPluginData<TTag>\n> {\n const tags = createTags({ initialTags });\n const tagsApi = { setTags: tags.set, addTags: tags.add };\n\n return {\n subscribe(params) {\n const { setContext, onSelect, setIsOpen, refresh } = params;\n const subscribers = getTagsSubscribers();\n\n setContext({ tagsPlugin: { ...tagsApi, tags: tags.get() } });\n\n onSelect(({ source, item }) => {\n const subscriber = subscribers.find(\n ({ sourceId }) => sourceId === source.sourceId\n );\n\n if (subscriber) {\n tags.add([subscriber.getTag({ item })]);\n }\n });\n\n tags.onChange(({ prevTags }) => {\n setContext({\n tagsPlugin: { ...tagsApi, tags: tags.get() },\n });\n\n setIsOpen(true);\n onChange({ ...params, prevTags, tags: tags.get() });\n refresh();\n });\n },\n getSources({ state }) {\n return [\n transformSource({\n source: {\n sourceId: 'tagsPlugin',\n getItems() {\n return tags.get();\n },\n onSelect({ item }) {\n item.remove();\n },\n templates: {\n item({ item, createElement }) {\n return (\n <div className=\"aa-TagsPlugin-Tag\">\n <span className=\"aa-TagsPlugin-TagLabel\">{item.label}</span>\n <button\n className=\"aa-TagsPlugin-RemoveButton\"\n title=\"Remove this tag\"\n >\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M18 6L6 18\"></path>\n <path d=\"M6 6L18 18\"></path>\n </svg>\n </button>\n </div>\n );\n },\n },\n },\n state: state as AutocompleteState<Tag<TTag>>,\n }),\n ];\n },\n data: {\n ...tagsApi,\n get tags() {\n return tags.get();\n },\n },\n };\n}\n"],"names":["noop","createTags","initialTags","tagsRef","current","mapToTags","onChangeListeners","baseTags","map","baseTag","tag","remove","prevTags","slice","filter","tagRef","forEach","listener","tags","get","set","add","push","onChange","getTagsSubscribers","transformSource","source","tagsApi","setTags","addTags","subscribe","params","setContext","onSelect","setIsOpen","refresh","subscribers","tagsPlugin","item","subscriber","find","sourceId","getTag","getSources","state","getItems","templates","createElement","className","label","title","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","viewBox","d","data"],"mappings":";6qDAAO,IAAIA,EAAO,aCoBX,SAASC,aAGZC,YACIC,ECvBC,CACLC,QDsBwBC,aADV,OAEVC,EAAuD,YAEpDD,EACPE,UAEOA,EAASC,KAAI,SAACC,OACbC,SACDD,OACHE,sBACQC,EAAWT,EAAQC,QAAQS,QAEjCV,EAAQC,QAAUD,EAAQC,QAAQU,QAChC,SAACC,UAAWL,IAAUK,KAExBT,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,uBAKlCM,WAIJ,CACLS,sBACShB,EAAQC,SAEjBgB,aAAIb,OACIK,EAAWT,EAAQC,QAAQS,QAEjCV,EAAQC,QAAUC,EAAUE,GAC5BD,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,cAGvCiB,aAAId,SACIK,EAAWT,EAAQC,QAAQS,WAEjCV,EAAQC,SAAQkB,eAAQjB,EAAUE,KAClCD,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,cAGvCmB,kBAASN,GACPX,EAAkBgB,KAAKL,wBEStB,wEAQkC,OAJvCf,YAAAA,aAAc,SACdsB,mBAAAA,aAAqB,iBAAM,UAC3BC,gBAAAA,aAAkB,qBAAGC,cACrBH,SAAAA,aAAWvB,IAKLkB,EAAOjB,EAAW,CAAEC,YAAAA,IACpByB,EAAU,CAAEC,QAASV,EAAKE,IAAKS,QAASX,EAAKG,WAE5C,CACLS,mBAAUC,OACAC,EAA6CD,EAA7CC,WAAYC,EAAiCF,EAAjCE,SAAUC,EAAuBH,EAAvBG,UAAWC,EAAYJ,EAAZI,QACnCC,EAAcZ,IAEpBQ,EAAW,CAAEK,kBAAiBV,OAAST,KAAMA,EAAKC,UAElDc,GAAS,gBAAGP,IAAAA,OAAQY,IAAAA,KACZC,EAAaH,EAAYI,MAC7B,qBAAGC,WAA4Bf,EAAOe,YAGpCF,GACFrB,EAAKG,IAAI,CAACkB,EAAWG,OAAO,CAAEJ,KAAAA,SAIlCpB,EAAKK,UAAS,gBAAGX,IAAAA,SACfoB,EAAW,CACTK,kBAAiBV,OAAST,KAAMA,EAAKC,UAGvCe,GAAU,GACVX,SAAcQ,OAAQnB,SAAAA,EAAUM,KAAMA,EAAKC,SAC3CgB,QAGJQ,2BAAaC,IAAAA,YACJ,CACLnB,EAAgB,CACdC,OAAQ,CACNe,SAAU,aACVI,2BACS3B,EAAKC,OAEdc,uBAAWK,KACJ3B,UAEPmC,UAAW,CACTR,qBAAOA,IAAAA,KAAMS,IAAAA,qBAETA,SAAKC,UAAU,qBACbD,UAAMC,UAAU,0BAA0BV,EAAKW,OAC/CF,YACEC,UAAU,6BACVE,MAAM,mBAENH,SACEI,KAAK,OACLC,OAAO,eACPC,cAAc,QACdC,eAAe,QACfC,YAAa,EACbC,QAAQ,aAERT,UAAMU,EAAE,eACRV,UAAMU,EAAE,qBAQtBb,MAAOA,MAIbc,YACK/B,yBAEMT,EAAKC"}
|
|
1
|
+
{"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/noop.js","../../src/createTags.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../src/createTagsPlugin.tsx"],"sourcesContent":["export var noop = function noop() {};","import { BaseItem } from '@algolia/autocomplete-core';\nimport { createRef } from '@algolia/autocomplete-shared';\n\nimport { CreateTagsPluginParams } from './createTagsPlugin';\nimport { DefaultTagType, BaseTag, Tag } from './types';\n\nexport type OnTagsChangeParams<TTag extends DefaultTagType = DefaultTagType> = {\n prevTags: Array<Tag<TTag>>;\n tags: Array<Tag<TTag>>;\n};\n\ntype OnTagsChangeListener<TTag extends DefaultTagType = DefaultTagType> = (\n params: OnTagsChangeParams<TTag>\n) => void;\n\ntype CreateTagsParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n> = Pick<CreateTagsPluginParams<TItem, TTag>, 'initialTags'>;\n\nexport function createTags<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>({ initialTags = [] }: CreateTagsParams<TItem, TTag>) {\n const tagsRef = createRef(mapToTags(initialTags));\n const onChangeListeners: Array<OnTagsChangeListener<TTag>> = [];\n\n function mapToTags<TTag extends DefaultTagType = DefaultTagType>(\n baseTags: Array<BaseTag<TTag>>\n ): Array<Tag<TTag>> {\n return baseTags.map((baseTag) => {\n const tag = {\n ...baseTag,\n remove() {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = tagsRef.current.filter(\n (tagRef) => tag !== ((tagRef as unknown) as Tag<TTag>)\n );\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n };\n\n return tag;\n });\n }\n\n return {\n get() {\n return tagsRef.current;\n },\n set(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current = mapToTags(baseTags);\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n add(baseTags: Array<BaseTag<TTag>>) {\n const prevTags = tagsRef.current.slice();\n\n tagsRef.current.push(...mapToTags(baseTags));\n onChangeListeners.forEach((listener) =>\n listener({ prevTags, tags: tagsRef.current })\n );\n },\n onChange(listener: OnTagsChangeListener<TTag>) {\n onChangeListeners.push(listener);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","/** @jsx createElement */\nimport { BaseItem, PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompletePlugin,\n AutocompleteSource,\n AutocompleteState,\n} from '@algolia/autocomplete-js';\nimport { noop } from '@algolia/autocomplete-shared';\n\nimport { createTags, OnTagsChangeParams } from './createTags';\nimport type { DefaultTagType, BaseTag, Tag } from './types';\n\ntype OnChangeParams<\n TTag extends DefaultTagType = DefaultTagType\n> = PluginSubscribeParams<any> & OnTagsChangeParams<TTag>;\n\ntype GetTagParams<TItem extends BaseItem> = { item: TItem };\n\ntype TagsPluginData<TTag extends DefaultTagType = DefaultTagType> = {\n /**\n * Returns the current list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-tags\n */\n tags: Array<Tag<TTag>>;\n /**\n * Adds tags to the list.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-addtags\n */\n addTags: (tags: Array<BaseTag<TTag>>) => void;\n /**\n * Sets the list of tags.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-settags\n */\n setTags: (tags: Array<BaseTag<TTag>>) => void;\n};\n\nexport type TagsApi<\n TTag extends DefaultTagType = DefaultTagType\n> = TagsPluginData<TTag>;\n\nexport type CreateTagsPluginParams<\n TItem extends BaseItem,\n TTag extends DefaultTagType\n> = {\n /**\n * A set of initial tags to pass to the plugin.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-initialtags\n */\n initialTags?: Array<BaseTag<TTag>>;\n /**\n * A function to specify what sources the plugin should subscribe to. The plugin adds a tag when selecting an item from these sources.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-gettagssubscribers\n */\n getTagsSubscribers?(): Array<{\n sourceId: string;\n getTag(params: GetTagParams<TItem>): BaseTag<TTag>;\n }>;\n /**\n * A function to transform the returned tags source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<Tag<TTag>>;\n state: AutocompleteState<Tag<TTag>>;\n }): AutocompleteSource<Tag<TTag>> | undefined;\n /**\n * A function called when the list of tags changes.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags/createtagsplugin/#param-onchange\n */\n onChange?(params: OnChangeParams<TTag>): void;\n};\n\nexport function createTagsPlugin<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>(\n options: CreateTagsPluginParams<TItem, TTag> = {}\n): AutocompletePlugin<Tag<TTag>, TagsPluginData<TTag>> {\n const {\n initialTags,\n getTagsSubscribers,\n transformSource,\n onChange,\n } = getOptions(options);\n const tags = createTags({ initialTags });\n const tagsApi = { setTags: tags.set, addTags: tags.add };\n\n return {\n name: 'aa.tagsPlugin',\n subscribe(params) {\n const { setContext, onSelect, setIsOpen, refresh } = params;\n const subscribers = getTagsSubscribers();\n\n setContext({ tagsPlugin: { ...tagsApi, tags: tags.get() } });\n\n onSelect(({ source, item }) => {\n const subscriber = subscribers.find(\n ({ sourceId }) => sourceId === source.sourceId\n );\n\n if (subscriber) {\n tags.add([subscriber.getTag({ item })]);\n }\n });\n\n tags.onChange(({ prevTags }) => {\n setContext({\n tagsPlugin: { ...tagsApi, tags: tags.get() },\n });\n\n setIsOpen(true);\n onChange({ ...params, prevTags, tags: tags.get() });\n refresh();\n });\n },\n getSources({ state }) {\n return [\n transformSource({\n source: {\n sourceId: 'tagsPlugin',\n getItems() {\n return tags.get();\n },\n onSelect({ item }) {\n item.remove();\n },\n templates: {\n item({ item, createElement }) {\n return (\n <div className=\"aa-TagsPlugin-Tag\">\n <span className=\"aa-TagsPlugin-TagLabel\">{item.label}</span>\n <button\n className=\"aa-TagsPlugin-RemoveButton\"\n title=\"Remove this tag\"\n >\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M18 6L6 18\"></path>\n <path d=\"M6 6L18 18\"></path>\n </svg>\n </button>\n </div>\n );\n },\n },\n },\n state: state as AutocompleteState<Tag<TTag>>,\n }),\n ];\n },\n data: {\n ...tagsApi,\n get tags() {\n return tags.get();\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<\n TItem extends BaseItem,\n TTag extends DefaultTagType = DefaultTagType\n>(options: CreateTagsPluginParams<TItem, TTag>) {\n return {\n initialTags: [],\n getTagsSubscribers: () => [],\n transformSource: ({ source }) => source,\n onChange: noop,\n ...options,\n };\n}\n"],"names":["noop","createTags","initialTags","tagsRef","current","mapToTags","onChangeListeners","baseTags","map","baseTag","tag","remove","prevTags","slice","filter","tagRef","forEach","listener","tags","get","set","add","push","onChange","getOptions","options","getTagsSubscribers","transformSource","source","tagsApi","setTags","addTags","name","subscribe","params","setContext","onSelect","setIsOpen","refresh","subscribers","tagsPlugin","item","subscriber","find","sourceId","getTag","getSources","state","getItems","templates","createElement","className","label","title","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","viewBox","d","data","__autocomplete_pluginOptions"],"mappings":";gsDAAO,IAAIA,EAAO,aCoBX,SAASC,aAGZC,YACIC,ECvBC,CACLC,QDsBwBC,aADV,OAEVC,EAAuD,YAEpDD,EACPE,UAEOA,EAASC,KAAI,SAACC,OACbC,SACDD,OACHE,sBACQC,EAAWT,EAAQC,QAAQS,QAEjCV,EAAQC,QAAUD,EAAQC,QAAQU,QAChC,SAACC,UAAWL,IAAUK,KAExBT,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,uBAKlCM,WAIJ,CACLS,sBACShB,EAAQC,SAEjBgB,aAAIb,OACIK,EAAWT,EAAQC,QAAQS,QAEjCV,EAAQC,QAAUC,EAAUE,GAC5BD,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,cAGvCiB,aAAId,SACIK,EAAWT,EAAQC,QAAQS,WAEjCV,EAAQC,SAAQkB,eAAQjB,EAAUE,KAClCD,EAAkBU,SAAQ,SAACC,UACzBA,EAAS,CAAEL,SAAAA,EAAUM,KAAMf,EAAQC,cAGvCmB,kBAASN,GACPX,EAAkBgB,KAAKL,KEuG7B,SAASO,EAGPC,aAEEvB,YAAa,GACbwB,mBAAoB,iBAAM,IAC1BC,gBAAiB,qBAAGC,QACpBL,SAAUvB,GACPyB,sBAvGA,eAILA,yDAA+C,KAO3CD,EAAWC,GAJbvB,IAAAA,YACAwB,IAAAA,mBACAC,IAAAA,gBACAJ,IAAAA,SAEIL,EAAOjB,EAAW,CAAEC,YAAAA,IACpB2B,EAAU,CAAEC,QAASZ,EAAKE,IAAKW,QAASb,EAAKG,WAE5C,CACLW,KAAM,gBACNC,mBAAUC,OACAC,EAA6CD,EAA7CC,WAAYC,EAAiCF,EAAjCE,SAAUC,EAAuBH,EAAvBG,UAAWC,EAAYJ,EAAZI,QACnCC,EAAcb,IAEpBS,EAAW,CAAEK,kBAAiBX,OAASX,KAAMA,EAAKC,UAElDiB,GAAS,gBAAGR,IAAAA,OAAQa,IAAAA,KACZC,EAAaH,EAAYI,MAC7B,qBAAGC,WAA4BhB,EAAOgB,YAGpCF,GACFxB,EAAKG,IAAI,CAACqB,EAAWG,OAAO,CAAEJ,KAAAA,SAIlCvB,EAAKK,UAAS,gBAAGX,IAAAA,SACfuB,EAAW,CACTK,kBAAiBX,OAASX,KAAMA,EAAKC,UAGvCkB,GAAU,GACVd,SAAcW,OAAQtB,SAAAA,EAAUM,KAAMA,EAAKC,SAC3CmB,QAGJQ,2BAAaC,IAAAA,YACJ,CACLpB,EAAgB,CACdC,OAAQ,CACNgB,SAAU,aACVI,2BACS9B,EAAKC,OAEdiB,uBAAWK,KACJ9B,UAEPsC,UAAW,CACTR,qBAAOA,IAAAA,KAAMS,IAAAA,qBAETA,SAAKC,UAAU,qBACbD,UAAMC,UAAU,0BAA0BV,EAAKW,OAC/CF,YACEC,UAAU,6BACVE,MAAM,mBAENH,SACEI,KAAK,OACLC,OAAO,eACPC,cAAc,QACdC,eAAe,QACfC,YAAa,EACbC,QAAQ,aAERT,UAAMU,EAAE,eACRV,UAAMU,EAAE,qBAQtBb,MAAOA,MAIbc,YACKhC,OACCX,kBACKA,EAAKC,SAGhB2C,6BAA8BrC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/autocomplete-plugin-tags",
|
|
3
3
|
"description": "A plugin to manage and display a list of tags in Algolia Autocomplete.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/algolia/autocomplete",
|
|
7
7
|
"repository": "algolia/autocomplete",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@algolia/autocomplete-core": "1.
|
|
40
|
-
"@algolia/autocomplete-js": "1.
|
|
41
|
-
"@algolia/autocomplete-shared": "1.
|
|
39
|
+
"@algolia/autocomplete-core": "1.5.2",
|
|
40
|
+
"@algolia/autocomplete-js": "1.5.2",
|
|
41
|
+
"@algolia/autocomplete-shared": "1.5.2"
|
|
42
42
|
}
|
|
43
43
|
}
|