@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.
@@ -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 in Object(iter)) return Array.from(iter); }
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>({ initialTags, getTagsSubscribers, transformSource, onChange, }?: CreateTagsPluginParams<TItem, TTag>): AutocompletePlugin<Tag<TTag>, TagsPluginData<TTag>>;
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 _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
12
- _ref$initialTags = _ref.initialTags,
13
- initialTags = _ref$initialTags === void 0 ? [] : _ref$initialTags,
14
- _ref$getTagsSubscribe = _ref.getTagsSubscribers,
15
- getTagsSubscribers = _ref$getTagsSubscribe === void 0 ? function () {
16
- return [];
17
- } : _ref$getTagsSubscribe,
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 (_ref3) {
46
- var source = _ref3.source,
47
- item = _ref3.item;
48
- var subscriber = subscribers.find(function (_ref4) {
49
- var sourceId = _ref4.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 (_ref5) {
60
- var prevTags = _ref5.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(_ref6) {
75
- var state = _ref6.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(_ref7) {
83
- var item = _ref7.item;
76
+ onSelect: function onSelect(_ref5) {
77
+ var item = _ref5.item;
84
78
  item.remove();
85
79
  },
86
80
  templates: {
87
- item: function item(_ref8) {
88
- var item = _ref8.item,
89
- createElement = _ref8.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
  }
@@ -0,0 +1 @@
1
+ export {};
package/dist/theme.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-plugin-tags 1.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
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
  }
@@ -1,2 +1,2 @@
1
- /*! @algolia/autocomplete-plugin-tags 1.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
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.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
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['@algolia/autocomplete-plugin-tags'] = {}));
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
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
29
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
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 in Object(iter)) return Array.from(iter);
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 _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
161
- _ref$initialTags = _ref.initialTags,
162
- initialTags = _ref$initialTags === void 0 ? [] : _ref$initialTags,
163
- _ref$getTagsSubscribe = _ref.getTagsSubscribers,
164
- getTagsSubscribers = _ref$getTagsSubscribe === void 0 ? function () {
165
- return [];
166
- } : _ref$getTagsSubscribe,
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 (_ref3) {
195
- var source = _ref3.source,
196
- item = _ref3.item;
197
- var subscriber = subscribers.find(function (_ref4) {
198
- var sourceId = _ref4.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 (_ref5) {
209
- var prevTags = _ref5.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(_ref6) {
224
- var state = _ref6.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(_ref7) {
232
- var item = _ref7.item;
229
+ onSelect: function onSelect(_ref5) {
230
+ var item = _ref5.item;
233
231
  item.remove();
234
232
  },
235
233
  templates: {
236
- item: function item(_ref8) {
237
- var item = _ref8.item,
238
- createElement = _ref8.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.4.0 | 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,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function r(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 n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(r){t(e,r,o[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))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 i=function(){};function u(e){var t=e.initialTags,r={current:i(void 0===t?[]:t)},a=[];function i(e){return e.map((function(e){var t=n(n({},e),{},{remove:function(){var e=r.current.slice();r.current=r.current.filter((function(e){return t!==e})),a.forEach((function(t){return t({prevTags:e,tags:r.current})}))}});return t}))}return{get:function(){return r.current},set:function(e){var t=r.current.slice();r.current=i(e),a.forEach((function(e){return e({prevTags:t,tags:r.current})}))},add:function(e){var t,n=r.current.slice();(t=r.current).push.apply(t,o(i(e))),a.forEach((function(e){return e({prevTags:n,tags:r.current})}))},onChange:function(e){a.push(e)}}}e.createTagsPlugin=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.initialTags,r=void 0===t?[]:t,o=e.getTagsSubscribers,a=void 0===o?function(){return[]}:o,c=e.transformSource,s=void 0===c?function(e){return e.source}:c,f=e.onChange,g=void 0===f?i:f,l=u({initialTags:r}),p={setTags:l.set,addTags:l.add};return{subscribe:function(e){var t=e.setContext,r=e.onSelect,o=e.setIsOpen,i=e.refresh,u=a();t({tagsPlugin:n(n({},p),{},{tags:l.get()})}),r((function(e){var t=e.source,r=e.item,n=u.find((function(e){return e.sourceId===t.sourceId}));n&&l.add([n.getTag({item:r})])})),l.onChange((function(r){var a=r.prevTags;t({tagsPlugin:n(n({},p),{},{tags:l.get()})}),o(!0),g(n(n({},e),{},{prevTags:a,tags:l.get()})),i()}))},getSources:function(e){var t=e.state;return[s({source:{sourceId:"tagsPlugin",getItems:function(){return l.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:n(n({},p),{},{get tags(){return l.get()}})}},Object.defineProperty(e,"__esModule",{value:!0})}));
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.0",
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.4.0",
40
- "@algolia/autocomplete-js": "1.4.0",
41
- "@algolia/autocomplete-shared": "1.4.0"
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
  }