@semcore/select 17.3.0-prerelease.0 → 17.4.0-prerelease.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/lib/cjs/InputSearch.js +6 -6
  3. package/lib/cjs/Select.js +8 -8
  4. package/lib/cjs/components/AutoSuggest/AutoSuggest.js +506 -0
  5. package/lib/cjs/components/AutoSuggest/AutoSuggest.js.map +1 -0
  6. package/lib/cjs/components/AutoSuggest/AutoSuggest.type.js +2 -0
  7. package/lib/cjs/components/AutoSuggest/AutoSuggest.type.js.map +1 -0
  8. package/lib/cjs/components/AutoSuggest/Highlight.js +49 -0
  9. package/lib/cjs/components/AutoSuggest/Highlight.js.map +1 -0
  10. package/lib/cjs/index.d.js.map +1 -1
  11. package/lib/cjs/index.js +9 -1
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/translations/en.json +2 -1
  14. package/lib/es6/InputSearch.js +6 -6
  15. package/lib/es6/Select.js +8 -8
  16. package/lib/es6/components/AutoSuggest/AutoSuggest.js +504 -0
  17. package/lib/es6/components/AutoSuggest/AutoSuggest.js.map +1 -0
  18. package/lib/es6/components/AutoSuggest/AutoSuggest.type.js +2 -0
  19. package/lib/es6/components/AutoSuggest/AutoSuggest.type.js.map +1 -0
  20. package/lib/es6/components/AutoSuggest/Highlight.js +42 -0
  21. package/lib/es6/components/AutoSuggest/Highlight.js.map +1 -0
  22. package/lib/es6/index.d.js.map +1 -1
  23. package/lib/es6/index.js +1 -0
  24. package/lib/es6/index.js.map +1 -1
  25. package/lib/es6/translations/en.json +2 -1
  26. package/lib/esm/InputSearch.mjs +7 -7
  27. package/lib/esm/Select.mjs +9 -9
  28. package/lib/esm/components/AutoSuggest/AutoSuggest.mjs +500 -0
  29. package/lib/esm/components/AutoSuggest/Highlight.mjs +44 -0
  30. package/lib/esm/index.mjs +2 -0
  31. package/lib/esm/translations/en.json.mjs +2 -1
  32. package/lib/types/components/AutoSuggest/AutoSuggest.d.ts +2 -0
  33. package/lib/types/components/AutoSuggest/AutoSuggest.type.d.ts +126 -0
  34. package/lib/types/components/AutoSuggest/Highlight.d.ts +7 -0
  35. package/lib/types/index.d.ts +6 -3
  36. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +87 -0
  37. package/package.json +15 -14
@@ -0,0 +1,504 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { assignProps as _assignProps6 } from "@semcore/core";
3
+ import { assignProps as _assignProps5 } from "@semcore/core";
4
+ import { assignProps as _assignProps4 } from "@semcore/core";
5
+ import { assignProps as _assignProps3 } from "@semcore/core";
6
+ import { assignProps as _assignProps2 } from "@semcore/core";
7
+ import { assignProps as _assignProps } from "@semcore/core";
8
+ import { Component, createComponent, Root } from '@semcore/core';
9
+ import i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';
10
+ import { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';
11
+ import { forkRef } from '@semcore/core/lib/utils/ref';
12
+ import uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';
13
+ import { isFocusInside } from '@semcore/core/lib/utils/use/useFocusLock';
14
+ import { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';
15
+ import Input from '@semcore/input';
16
+ import Spin from '@semcore/spin';
17
+ import React from 'react';
18
+ import { Highlight } from './Highlight';
19
+ // todo Brauer Ilia: change to ../../Select after rewriting to ts
20
+ import Select from '../../index';
21
+ import { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';
22
+ class AutoSuggestRoot extends Component {
23
+ constructor(...args) {
24
+ super(...args);
25
+ _defineProperty(this, "abortController", void 0);
26
+ _defineProperty(this, "changeDebounce", null);
27
+ _defineProperty(this, "triggerRef", /*#__PURE__*/React.createRef());
28
+ _defineProperty(this, "popperRef", /*#__PURE__*/React.createRef());
29
+ _defineProperty(this, "state", {
30
+ isVisible: false,
31
+ highlightedIndex: -1,
32
+ suggestions: Array.isArray(this.props.suggestions) ? this.props.suggestions : [],
33
+ openOnChanges: true,
34
+ isLoading: false
35
+ });
36
+ _defineProperty(this, "handleChange", (value, event) => {
37
+ this.handlers.value(value, event);
38
+ if (this.changeDebounce) {
39
+ clearTimeout(this.changeDebounce);
40
+ }
41
+ if (this.abortController) {
42
+ this.abortController.abort();
43
+ }
44
+ if (value !== this.asProps.value) {
45
+ const {
46
+ suggestions,
47
+ duration
48
+ } = this.asProps;
49
+ if (value === '') {
50
+ this.setState({
51
+ isLoading: false
52
+ });
53
+ setTimeout(() => {
54
+ if (document.activeElement === this.triggerRef.current) {
55
+ this.setState({
56
+ suggestions: [],
57
+ isVisible: true
58
+ });
59
+ }
60
+ }, Number(duration)); // wait for closing and then clear suggestions.
61
+ return;
62
+ }
63
+ if (!Array.isArray(suggestions) && this.state.openOnChanges) {
64
+ this.setState({
65
+ isLoading: true,
66
+ isVisible: true
67
+ });
68
+ }
69
+ this.changeDebounce = setTimeout(async () => {
70
+ const {
71
+ openOnChanges
72
+ } = this.state;
73
+ if (Array.isArray(suggestions)) {
74
+ const filteredSuggestions = value === '' ? [] : suggestions.filter(s => s.toLowerCase().includes(value.toLowerCase()));
75
+ this.setState({
76
+ suggestions: filteredSuggestions,
77
+ isVisible: filteredSuggestions.length > 0 && openOnChanges
78
+ });
79
+ } else {
80
+ this.abortController = new AbortController();
81
+ const abortSignal = this.abortController.signal;
82
+ const filteredSuggestions = await suggestions(value, abortSignal);
83
+ if (!this.abortController.signal.aborted) {
84
+ this.setState({
85
+ suggestions: filteredSuggestions,
86
+ isLoading: false,
87
+ isVisible: filteredSuggestions.length > 0 && openOnChanges
88
+ });
89
+ }
90
+ }
91
+ }, 300);
92
+ }
93
+ });
94
+ _defineProperty(this, "handleChangeVisible", isVisible => {
95
+ this.setState({
96
+ isVisible
97
+ });
98
+ });
99
+ _defineProperty(this, "handleChangeHighlightedIndex", index => {
100
+ this.setState({
101
+ highlightedIndex: index ?? -1
102
+ });
103
+ });
104
+ _defineProperty(this, "handleKeyDown", e => {
105
+ if (!e.key.startsWith('Arrow')) {
106
+ this.setState({
107
+ highlightedIndex: -1
108
+ });
109
+ }
110
+ if (e.key === 'Escape') {
111
+ this.setState({
112
+ openOnChanges: false,
113
+ isLoading: false
114
+ });
115
+ this.abortController?.abort();
116
+ }
117
+ const {
118
+ value
119
+ } = this.asProps;
120
+ const {
121
+ isVisible,
122
+ suggestions
123
+ } = this.state;
124
+ if (!isVisible) {
125
+ const filteredSuggestions = suggestions.filter(s => {
126
+ return value !== '' && s.toLowerCase().includes(value.toLowerCase());
127
+ });
128
+ if (e.key === 'ArrowDown') {
129
+ this.setState({
130
+ suggestions: filteredSuggestions,
131
+ highlightedIndex: 0
132
+ });
133
+ }
134
+ if (e.key === 'ArrowUp') {
135
+ this.setState({
136
+ suggestions: filteredSuggestions,
137
+ highlightedIndex: filteredSuggestions.length - 1
138
+ });
139
+ }
140
+ if (e.key === 'Enter') {
141
+ this.setState({
142
+ suggestions: filteredSuggestions,
143
+ highlightedIndex: -1,
144
+ isVisible: true,
145
+ openOnChanges: true
146
+ });
147
+ }
148
+ }
149
+ });
150
+ _defineProperty(this, "handleChangeSelect", (value, e) => {
151
+ this.handlers.value(value, e);
152
+ });
153
+ _defineProperty(this, "handleFocus", () => {
154
+ const {
155
+ value,
156
+ statusItemPlaceholder
157
+ } = this.asProps;
158
+ const {
159
+ suggestions
160
+ } = this.state;
161
+ this.setState({
162
+ openOnChanges: true,
163
+ isVisible: statusItemPlaceholder === '' ? value !== '' : true,
164
+ suggestions: suggestions.filter(s => {
165
+ return value !== '' && s.toLowerCase().includes(value.toLowerCase());
166
+ }),
167
+ highlightedIndex: -1
168
+ });
169
+ });
170
+ _defineProperty(this, "handleBlur", () => {
171
+ setTimeout(() => {
172
+ const popperElement = this.popperRef.current;
173
+ if (!popperElement || !isFocusInside(popperElement)) {
174
+ this.handleChangeVisible(false);
175
+ }
176
+ });
177
+ });
178
+ }
179
+ uncontrolledProps() {
180
+ return {
181
+ value: null
182
+ };
183
+ }
184
+ componentDidMount() {
185
+ const {
186
+ value,
187
+ suggestions
188
+ } = this.asProps;
189
+ if (value && !Array.isArray(suggestions)) {
190
+ this.changeDebounce = setTimeout(async () => {
191
+ this.abortController = new AbortController();
192
+ const abortSignal = this.abortController.signal;
193
+ const filteredSuggestions = await suggestions(value, abortSignal);
194
+ if (!this.abortController.signal.aborted) {
195
+ this.setState({
196
+ suggestions: filteredSuggestions,
197
+ isLoading: false
198
+ });
199
+ this.changeDebounce = null;
200
+ }
201
+ });
202
+ }
203
+ }
204
+ get id() {
205
+ const {
206
+ uid,
207
+ id
208
+ } = this.asProps;
209
+ return id ?? `${uid}_autosuggest-trigger`;
210
+ }
211
+ get isStartTypingState() {
212
+ const {
213
+ suggestions
214
+ } = this.state;
215
+ const {
216
+ statusItemPlaceholder,
217
+ value
218
+ } = this.asProps;
219
+ return value === '' && statusItemPlaceholder !== '' && suggestions.length === 0;
220
+ }
221
+ get isAriaExpanded() {
222
+ const {
223
+ isVisible,
224
+ isLoading,
225
+ suggestions
226
+ } = this.state;
227
+ return isVisible && suggestions.length > 0 && !isLoading && !this.isStartTypingState;
228
+ }
229
+ get isVisiblePopper() {
230
+ const {
231
+ isVisible,
232
+ isLoading,
233
+ suggestions
234
+ } = this.state;
235
+ return isVisible && (suggestions.length > 0 || isLoading || this.isStartTypingState);
236
+ }
237
+ get neighborLocation() {
238
+ const {
239
+ addonLeft: AddonLeft,
240
+ addonRight: AddonRight
241
+ } = this.asProps;
242
+ let neighborLocation = undefined;
243
+ if (AddonLeft && AddonRight) {
244
+ neighborLocation = 'both';
245
+ } else if (AddonLeft) {
246
+ neighborLocation = 'left';
247
+ } else if (AddonRight) {
248
+ neighborLocation = 'right';
249
+ }
250
+ return neighborLocation;
251
+ }
252
+ getTriggerProps() {
253
+ const {
254
+ size,
255
+ getI18nText,
256
+ neighborLocation,
257
+ addonLeft,
258
+ addonRight,
259
+ uid
260
+ } = this.asProps;
261
+ const {
262
+ isLoading
263
+ } = this.state;
264
+ return {
265
+ 'tag': Input,
266
+ 'onFocus': this.handleFocus,
267
+ 'onBlur': this.handleBlur,
268
+ 'aria-haspopup': 'listbox',
269
+ 'aria-expanded': this.isAriaExpanded ? 'true' : 'false',
270
+ 'aria-controls': `igc-${uid}-list`,
271
+ isLoading,
272
+ size,
273
+ getI18nText,
274
+ neighborLocation,
275
+ addonLeft,
276
+ addonRight
277
+ };
278
+ }
279
+ getTriggerValueProps() {
280
+ const {
281
+ value,
282
+ forwardRef,
283
+ autoComplete,
284
+ role,
285
+ onChange,
286
+ ref,
287
+ id,
288
+ ...props
289
+ } = this.asProps;
290
+ return {
291
+ autoComplete: 'off',
292
+ onChange: this.handleChange,
293
+ onKeyDown: this.handleKeyDown,
294
+ role: 'combobox',
295
+ value,
296
+ ref: forwardRef ? forkRef(forwardRef, this.triggerRef) : this.triggerRef,
297
+ id: this.id,
298
+ ...props,
299
+ neighborLocation: this.neighborLocation
300
+ };
301
+ }
302
+ getPopperProps() {
303
+ return {
304
+ 'aria-labelledby': this.id,
305
+ 'ref': this.popperRef
306
+ };
307
+ }
308
+ getPopperLoadingStateProps() {
309
+ const {
310
+ isLoading
311
+ } = this.state;
312
+ return {
313
+ isLoading
314
+ };
315
+ }
316
+ getPopperStartTypingStateProps() {
317
+ const {
318
+ getI18nText,
319
+ statusItemPlaceholder
320
+ } = this.asProps;
321
+ const {
322
+ isLoading
323
+ } = this.state;
324
+ return {
325
+ isLoading,
326
+ isStartTypingState: this.isStartTypingState,
327
+ children: statusItemPlaceholder ?? getI18nText('AutoSuggest.Popper.placeholderText')
328
+ };
329
+ }
330
+ getPopperListProps() {
331
+ const {
332
+ value
333
+ } = this.asProps;
334
+ const {
335
+ isLoading,
336
+ suggestions
337
+ } = this.state;
338
+ const triggerElement = this.triggerRef.current;
339
+ return {
340
+ value,
341
+ isLoading,
342
+ suggestions,
343
+ 'isStartTypingState': this.isStartTypingState,
344
+ 'aria-label': getAccessibleName(triggerElement)
345
+ };
346
+ }
347
+ getPopperSuggestionItemProps(_, index) {
348
+ const {
349
+ suggestions
350
+ } = this.state;
351
+ const {
352
+ value
353
+ } = this.asProps;
354
+ const option = suggestions[index];
355
+ return {
356
+ value: option,
357
+ selected: false,
358
+ onClick: e => this.handleChangeSelect(option, e),
359
+ children: /*#__PURE__*/React.createElement(Highlight, {
360
+ highlight: value
361
+ }, option)
362
+ };
363
+ }
364
+ render() {
365
+ var _ref = this.asProps;
366
+ const {
367
+ highlightedIndex
368
+ } = this.state;
369
+ return /*#__PURE__*/React.createElement(Select, _assignProps({
370
+ "interaction": 'none',
371
+ "visible": this.isVisiblePopper,
372
+ "onVisibleChange": this.handleChangeVisible,
373
+ "highlightedIndex": highlightedIndex,
374
+ "onHighlightedIndexChange": this.handleChangeHighlightedIndex
375
+ }, _ref));
376
+ }
377
+ }
378
+ _defineProperty(AutoSuggestRoot, "displayName", 'AutoSuggest');
379
+ _defineProperty(AutoSuggestRoot, "defaultProps", () => {
380
+ return {
381
+ defaultValue: '',
382
+ placeholder: '',
383
+ children: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AutoSuggest.Trigger, null), /*#__PURE__*/React.createElement(AutoSuggest.Popper, null))
384
+ };
385
+ });
386
+ _defineProperty(AutoSuggestRoot, "enhance", [uniqueIDEnhancement(), i18nEnhance(localizedMessages), cssVariableEnhance({
387
+ variable: '--intergalactic-duration-popper',
388
+ fallback: '200',
389
+ map: v => Number.parseInt(v, 10).toString(),
390
+ prop: 'duration'
391
+ })]);
392
+ class TriggerRoot extends Component {
393
+ render() {
394
+ var _ref2 = this.asProps;
395
+ const {
396
+ isLoading,
397
+ size,
398
+ addonLeft: AddonLeft,
399
+ addonRight: AddonRight,
400
+ Children
401
+ } = this.asProps;
402
+ return /*#__PURE__*/React.createElement(Select.Trigger, _assignProps2({}, _ref2), AddonLeft ? /*#__PURE__*/React.createElement(Input.Addon, {
403
+ pl: size === 'l' ? 3 : 2
404
+ }, /*#__PURE__*/React.createElement(AddonLeft, null)) : null, /*#__PURE__*/React.createElement(Children, null), AddonRight ? /*#__PURE__*/React.createElement(Input.Addon, {
405
+ pr: isLoading ? undefined : size === 'l' ? 3 : 2
406
+ }, /*#__PURE__*/React.createElement(AddonRight, null)) : null, isLoading && /*#__PURE__*/React.createElement(Input.Addon, {
407
+ pr: size === 'l' ? 3 : 2
408
+ }, /*#__PURE__*/React.createElement(Spin, {
409
+ size: size === 'l' ? 's' : 'xs'
410
+ })));
411
+ }
412
+ }
413
+ _defineProperty(TriggerRoot, "displayName", 'Trigger');
414
+ _defineProperty(TriggerRoot, "defaultProps", () => {
415
+ return {
416
+ children: /*#__PURE__*/React.createElement(AutoSuggest.Trigger.Value, null)
417
+ };
418
+ });
419
+ class ValueRoot extends Component {
420
+ render() {
421
+ var _ref3 = this.asProps;
422
+ return /*#__PURE__*/React.createElement(Input.Value, _assignProps3({}, _ref3));
423
+ }
424
+ }
425
+ _defineProperty(ValueRoot, "displayName", 'Value');
426
+ class PopperRoot extends Component {
427
+ render() {
428
+ var _ref4 = this.asProps;
429
+ return /*#__PURE__*/React.createElement(Select.Popper, _assignProps4({}, _ref4));
430
+ }
431
+ }
432
+ _defineProperty(PopperRoot, "defaultProps", () => {
433
+ return {
434
+ children: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AutoSuggest.Popper.LoadingState, {
435
+ itemsCount: 0
436
+ }), /*#__PURE__*/React.createElement(AutoSuggest.Popper.StartTypingState, {
437
+ itemsCount: 0
438
+ }), /*#__PURE__*/React.createElement(AutoSuggest.Popper.List, null))
439
+ };
440
+ });
441
+ function LoadingStateRoot(props) {
442
+ const {
443
+ Children,
444
+ isLoading,
445
+ children
446
+ } = props;
447
+ if (!isLoading) return null;
448
+ return children === undefined ? /*#__PURE__*/React.createElement(Select.StatusItem, {
449
+ state: "loading",
450
+ itemsCount: 0
451
+ }) : /*#__PURE__*/React.createElement(Select.StatusItem, {
452
+ state: "loading",
453
+ itemsCount: 0
454
+ }, /*#__PURE__*/React.createElement(Children, null));
455
+ }
456
+ function StartTypingStateRoot(props) {
457
+ const {
458
+ Children,
459
+ isLoading,
460
+ isStartTypingState
461
+ } = props;
462
+ if (isLoading || !isStartTypingState) return null;
463
+ return /*#__PURE__*/React.createElement(Select.StatusItem, {
464
+ itemsCount: 0
465
+ }, /*#__PURE__*/React.createElement(Children, null));
466
+ }
467
+ class ListRoot extends Component {
468
+ render() {
469
+ var _ref5 = this.asProps;
470
+ const {
471
+ suggestions,
472
+ isLoading,
473
+ isStartTypingState,
474
+ Children
475
+ } = this.asProps;
476
+ if (isLoading || isStartTypingState) return null;
477
+ return /*#__PURE__*/React.createElement(Select.List, _assignProps5({}, _ref5), suggestions.map(option => /*#__PURE__*/React.createElement(Children, {
478
+ key: option
479
+ })));
480
+ }
481
+ }
482
+ _defineProperty(ListRoot, "defaultProps", () => {
483
+ return {
484
+ children: /*#__PURE__*/React.createElement(AutoSuggest.Popper.SuggestionItem, {
485
+ itemsCount: 0
486
+ })
487
+ };
488
+ });
489
+ function SuggestionItemRoot() {
490
+ var _ref6 = arguments[0];
491
+ return /*#__PURE__*/React.createElement(Select.Option, _assignProps6({}, _ref6));
492
+ }
493
+ export const AutoSuggest = createComponent(AutoSuggestRoot, {
494
+ Trigger: [TriggerRoot, {
495
+ Value: ValueRoot
496
+ }],
497
+ Popper: [PopperRoot, {
498
+ LoadingState: LoadingStateRoot,
499
+ StartTypingState: StartTypingStateRoot,
500
+ List: ListRoot,
501
+ SuggestionItem: SuggestionItemRoot
502
+ }]
503
+ });
504
+ //# sourceMappingURL=AutoSuggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoSuggest.js","names":["Component","createComponent","Root","i18nEnhance","getAccessibleName","forkRef","uniqueIDEnhancement","isFocusInside","cssVariableEnhance","Input","Spin","React","Highlight","Select","localizedMessages","AutoSuggestRoot","constructor","args","_defineProperty","createRef","isVisible","highlightedIndex","suggestions","Array","isArray","props","openOnChanges","isLoading","value","event","handlers","changeDebounce","clearTimeout","abortController","abort","asProps","duration","setState","setTimeout","document","activeElement","triggerRef","current","Number","state","filteredSuggestions","filter","s","toLowerCase","includes","length","AbortController","abortSignal","signal","aborted","index","e","key","startsWith","statusItemPlaceholder","popperElement","popperRef","handleChangeVisible","uncontrolledProps","componentDidMount","id","uid","isStartTypingState","isAriaExpanded","isVisiblePopper","neighborLocation","addonLeft","AddonLeft","addonRight","AddonRight","undefined","getTriggerProps","size","getI18nText","handleFocus","handleBlur","getTriggerValueProps","forwardRef","autoComplete","role","onChange","ref","handleChange","onKeyDown","handleKeyDown","getPopperProps","getPopperLoadingStateProps","getPopperStartTypingStateProps","children","getPopperListProps","triggerElement","getPopperSuggestionItemProps","_","option","selected","onClick","handleChangeSelect","createElement","highlight","render","_ref","_assignProps","handleChangeHighlightedIndex","defaultValue","placeholder","Fragment","AutoSuggest","Trigger","Popper","variable","fallback","map","v","parseInt","toString","prop","TriggerRoot","_ref2","Children","_assignProps2","Addon","pl","pr","Value","ValueRoot","_ref3","_assignProps3","PopperRoot","_ref4","_assignProps4","LoadingState","itemsCount","StartTypingState","List","LoadingStateRoot","StatusItem","StartTypingStateRoot","ListRoot","_ref5","_assignProps5","SuggestionItem","SuggestionItemRoot","_ref6","arguments[0]","Option","_assignProps6"],"sources":["../../../../src/components/AutoSuggest/AutoSuggest.tsx"],"sourcesContent":["import type { NeighborItemProps } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { Component, createComponent, Root } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport { isFocusInside } from '@semcore/core/lib/utils/use/useFocusLock';\nimport { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';\nimport Input from '@semcore/input';\nimport Spin from '@semcore/spin';\nimport React from 'react';\n\nimport type { NSAutoSuggest } from './AutoSuggest.type';\nimport { Highlight } from './Highlight';\n// todo Brauer Ilia: change to ../../Select after rewriting to ts\nimport Select from '../../index';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass AutoSuggestRoot extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSAutoSuggest.Component>,\n typeof AutoSuggestRoot.enhance,\n NSAutoSuggest.Handlers,\n {},\n NSAutoSuggest.State,\n NSAutoSuggest.DefaultProps\n> {\n static displayName = 'AutoSuggest';\n\n static defaultProps = (): NSAutoSuggest.DefaultProps => {\n return {\n defaultValue: '',\n placeholder: '',\n children: (\n <>\n <AutoSuggest.Trigger />\n <AutoSuggest.Popper />\n </>\n ),\n };\n };\n\n static enhance = [\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n cssVariableEnhance({\n variable: '--intergalactic-duration-popper',\n fallback: '200',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'duration',\n }),\n ] as const;\n\n private abortController: AbortController | undefined;\n private changeDebounce: ReturnType<typeof setTimeout> | null = null;\n private triggerRef = React.createRef<HTMLElement>();\n private popperRef = React.createRef<HTMLElement>();\n\n state: NSAutoSuggest.State = {\n isVisible: false,\n highlightedIndex: -1,\n suggestions: Array.isArray(this.props.suggestions) ? this.props.suggestions : [],\n openOnChanges: true,\n isLoading: false,\n };\n\n protected uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n componentDidMount(): void {\n const { value, suggestions } = this.asProps;\n\n if (value && !Array.isArray(suggestions)) {\n this.changeDebounce = setTimeout(async () => {\n this.abortController = new AbortController();\n const abortSignal = this.abortController.signal;\n\n const filteredSuggestions = await suggestions(value, abortSignal);\n\n if (!this.abortController.signal.aborted) {\n this.setState({ suggestions: filteredSuggestions, isLoading: false });\n this.changeDebounce = null;\n }\n });\n }\n }\n\n get id() {\n const { uid, id } = this.asProps;\n\n return id ?? `${uid}_autosuggest-trigger`;\n }\n\n get isStartTypingState() {\n const { suggestions } = this.state;\n const { statusItemPlaceholder, value } = this.asProps;\n\n return value === '' && statusItemPlaceholder !== '' && suggestions.length === 0;\n }\n\n get isAriaExpanded() {\n const { isVisible, isLoading, suggestions } = this.state;\n\n return isVisible && suggestions.length > 0 && !isLoading && !this.isStartTypingState;\n }\n\n get isVisiblePopper() {\n const { isVisible, isLoading, suggestions } = this.state;\n\n return isVisible && (suggestions.length > 0 || isLoading || this.isStartTypingState);\n }\n\n get neighborLocation(): NeighborItemProps['neighborLocation'] {\n const {\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n } = this.asProps;\n\n let neighborLocation: NeighborItemProps['neighborLocation'] = undefined;\n\n if (AddonLeft && AddonRight) {\n neighborLocation = 'both';\n } else if (AddonLeft) {\n neighborLocation = 'left';\n } else if (AddonRight) {\n neighborLocation = 'right';\n }\n\n return neighborLocation;\n }\n\n getTriggerProps(): NSAutoSuggest.Trigger.InnerProps {\n const { size, getI18nText, neighborLocation, addonLeft, addonRight, uid } = this.asProps;\n const { isLoading } = this.state;\n\n return {\n 'tag': Input,\n 'onFocus': this.handleFocus,\n 'onBlur': this.handleBlur,\n 'aria-haspopup': 'listbox',\n 'aria-expanded': this.isAriaExpanded ? 'true' : 'false',\n 'aria-controls': `igc-${uid}-list`,\n isLoading,\n size,\n getI18nText,\n neighborLocation,\n addonLeft,\n addonRight,\n };\n }\n\n getTriggerValueProps(): NSAutoSuggest.Trigger.Value.InnerProps {\n const { value, forwardRef, autoComplete, role, onChange, ref, id, ...props } = this.asProps;\n\n return {\n autoComplete: 'off',\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n role: 'combobox',\n value,\n ref: forwardRef ? forkRef(forwardRef, this.triggerRef) : this.triggerRef,\n id: this.id,\n ...props,\n neighborLocation: this.neighborLocation,\n };\n }\n\n getPopperProps(): NSAutoSuggest.Popper.InnerProps {\n return {\n 'aria-labelledby': this.id,\n 'ref': this.popperRef,\n };\n }\n\n getPopperLoadingStateProps(): NSAutoSuggest.Popper.LoadingState.InnerProps {\n const { isLoading } = this.state;\n\n return {\n isLoading,\n };\n }\n\n getPopperStartTypingStateProps(): NSAutoSuggest.Popper.StartTypingState.InnerProps {\n const { getI18nText, statusItemPlaceholder } = this.asProps;\n const { isLoading } = this.state;\n\n return {\n isLoading,\n isStartTypingState: this.isStartTypingState,\n children: statusItemPlaceholder ?? getI18nText('AutoSuggest.Popper.placeholderText'),\n };\n }\n\n getPopperListProps(): NSAutoSuggest.Popper.List.InnerProps {\n const { value } = this.asProps;\n const { isLoading, suggestions } = this.state;\n\n const triggerElement = this.triggerRef.current;\n\n return {\n value,\n isLoading,\n suggestions,\n 'isStartTypingState': this.isStartTypingState,\n 'aria-label': getAccessibleName(triggerElement),\n };\n }\n\n getPopperSuggestionItemProps(_: never, index: number): NSAutoSuggest.Popper.SuggestionItem.InnerProps {\n const { suggestions } = this.state;\n const { value } = this.asProps;\n\n const option = suggestions[index];\n\n return {\n value: option,\n selected: false,\n onClick: (e: React.SyntheticEvent) => this.handleChangeSelect(option, e),\n children: (\n <Highlight highlight={value}>{option}</Highlight>\n ),\n };\n }\n\n handleChange = (value: string, event: React.SyntheticEvent) => {\n this.handlers.value(value, event);\n\n if (this.changeDebounce) {\n clearTimeout(this.changeDebounce);\n }\n if (this.abortController) {\n this.abortController.abort();\n }\n\n if (value !== this.asProps.value) {\n const { suggestions, duration } = this.asProps;\n\n if (value === '') {\n this.setState({ isLoading: false });\n\n setTimeout(() => {\n if (document.activeElement === this.triggerRef.current) {\n this.setState({ suggestions: [], isVisible: true });\n }\n }, Number(duration)); // wait for closing and then clear suggestions.\n return;\n }\n\n if (!Array.isArray(suggestions) && this.state.openOnChanges) {\n this.setState({ isLoading: true, isVisible: true });\n }\n\n this.changeDebounce = setTimeout(async () => {\n const { openOnChanges } = this.state;\n\n if (Array.isArray(suggestions)) {\n const filteredSuggestions = value === '' ? [] : suggestions.filter((s) => s.toLowerCase().includes(value.toLowerCase()));\n\n this.setState({ suggestions: filteredSuggestions, isVisible: filteredSuggestions.length > 0 && openOnChanges });\n } else {\n this.abortController = new AbortController();\n const abortSignal = this.abortController.signal;\n\n const filteredSuggestions = await suggestions(value, abortSignal);\n\n if (!this.abortController.signal.aborted) {\n this.setState({ suggestions: filteredSuggestions, isLoading: false, isVisible: filteredSuggestions.length > 0 && openOnChanges });\n }\n }\n }, 300);\n }\n };\n\n handleChangeVisible = (isVisible: boolean) => {\n this.setState({ isVisible });\n };\n\n handleChangeHighlightedIndex = (index: number | null) => {\n this.setState({ highlightedIndex: index ?? -1 });\n };\n\n handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!e.key.startsWith('Arrow')) {\n this.setState({ highlightedIndex: -1 });\n }\n\n if (e.key === 'Escape') {\n this.setState({ openOnChanges: false, isLoading: false });\n this.abortController?.abort();\n }\n\n const { value } = this.asProps;\n const { isVisible, suggestions } = this.state;\n\n if (!isVisible) {\n const filteredSuggestions = suggestions.filter((s) => {\n return value !== '' && s.toLowerCase().includes(value.toLowerCase());\n });\n\n if (e.key === 'ArrowDown') {\n this.setState({\n suggestions: filteredSuggestions,\n highlightedIndex: 0,\n });\n }\n if (e.key === 'ArrowUp') {\n this.setState({\n suggestions: filteredSuggestions,\n highlightedIndex: filteredSuggestions.length - 1,\n });\n }\n if (e.key === 'Enter') {\n this.setState({\n suggestions: filteredSuggestions,\n highlightedIndex: -1,\n isVisible: true,\n openOnChanges: true,\n });\n }\n }\n };\n\n handleChangeSelect = (value: string, e: React.SyntheticEvent) => {\n this.handlers.value(value, e);\n };\n\n handleFocus = () => {\n const { value, statusItemPlaceholder } = this.asProps;\n const { suggestions } = this.state;\n this.setState({\n openOnChanges: true,\n isVisible: statusItemPlaceholder === '' ? value !== '' : true,\n suggestions: suggestions.filter((s) => {\n return value !== '' && s.toLowerCase().includes(value.toLowerCase());\n }),\n highlightedIndex: -1,\n });\n };\n\n handleBlur = () => {\n setTimeout(() => {\n const popperElement = this.popperRef.current;\n\n if (!popperElement || !isFocusInside(popperElement)) {\n this.handleChangeVisible(false);\n }\n });\n };\n\n render() {\n const { highlightedIndex } = this.state;\n\n return (\n <Root\n render={Select}\n interaction='none'\n visible={this.isVisiblePopper}\n onVisibleChange={this.handleChangeVisible}\n highlightedIndex={highlightedIndex}\n onHighlightedIndexChange={this.handleChangeHighlightedIndex}\n />\n );\n }\n}\n\nclass TriggerRoot extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Trigger.Component, typeof AutoSuggestRoot, 'Trigger'>\n> {\n static displayName = 'Trigger';\n\n static defaultProps = () => {\n return {\n children: (\n <AutoSuggest.Trigger.Value />\n ),\n };\n };\n\n render() {\n const {\n isLoading,\n size,\n addonLeft: AddonLeft,\n addonRight: AddonRight,\n Children,\n } = this.asProps;\n\n return (\n <Root render={Select.Trigger}>\n {AddonLeft\n ? (\n <Input.Addon pl={size === 'l' ? 3 : 2}>\n <AddonLeft />\n </Input.Addon>\n )\n : null}\n <Children />\n {AddonRight\n ? (\n <Input.Addon pr={isLoading ? undefined : (size === 'l' ? 3 : 2)}>\n <AddonRight />\n </Input.Addon>\n )\n : null}\n {isLoading && (\n <Input.Addon pr={size === 'l' ? 3 : 2}>\n <Spin size={size === 'l' ? 's' : 'xs'} />\n </Input.Addon>\n )}\n </Root>\n );\n }\n}\n\nclass ValueRoot extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Trigger.Value.Component, typeof AutoSuggestRoot, 'TriggerValue'>\n> {\n static displayName = 'Value';\n\n render() {\n return (\n <Root render={Input.Value} />\n );\n }\n}\n\nclass PopperRoot extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Popper.Component, typeof AutoSuggestRoot, 'Popper'>\n> {\n static defaultProps = () => {\n return {\n children: (\n <>\n <AutoSuggest.Popper.LoadingState itemsCount={0} />\n <AutoSuggest.Popper.StartTypingState itemsCount={0} />\n <AutoSuggest.Popper.List />\n </>\n ),\n };\n };\n\n render() {\n return (\n <Root render={Select.Popper} />\n );\n }\n}\n\nfunction LoadingStateRoot(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Popper.LoadingState.Component, typeof AutoSuggestRoot, 'PopperLoadingState'>,\n) {\n const { Children, isLoading, children } = props;\n\n if (!isLoading) return null;\n\n return children === undefined\n ? (<Select.StatusItem state='loading' itemsCount={0} />)\n : (\n <Select.StatusItem state='loading' itemsCount={0}>\n <Children />\n </Select.StatusItem>\n );\n}\n\nfunction StartTypingStateRoot(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Popper.StartTypingState.Component, typeof AutoSuggestRoot, 'PopperStartTypingState'>,\n) {\n const { Children, isLoading, isStartTypingState } = props;\n\n if (isLoading || !isStartTypingState) return null;\n\n return (\n <Select.StatusItem itemsCount={0}>\n <Children />\n </Select.StatusItem>\n );\n}\n\nclass ListRoot extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSAutoSuggest.Popper.List.Component, typeof AutoSuggestRoot, 'PopperList'>\n> {\n static defaultProps = () => {\n return {\n children: (<AutoSuggest.Popper.SuggestionItem itemsCount={0} />),\n };\n };\n\n render() {\n const { suggestions, isLoading, isStartTypingState, Children } = this.asProps;\n\n if (isLoading || isStartTypingState) return null;\n\n return (\n <Root render={Select.List}>\n {suggestions.map((option) => (\n <Children key={option} />\n ))}\n </Root>\n );\n }\n}\n\nfunction SuggestionItemRoot() {\n return (\n <Root render={Select.Option} />\n );\n}\n\nexport const AutoSuggest = createComponent<NSAutoSuggest.Component, typeof AutoSuggestRoot>(AutoSuggestRoot, {\n Trigger: [TriggerRoot, { Value: ValueRoot }],\n Popper: [PopperRoot, {\n LoadingState: LoadingStateRoot,\n StartTypingState: StartTypingStateRoot,\n List: ListRoot,\n SuggestionItem: SuggestionItemRoot,\n }],\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AutoSuggest.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoSuggest.type.js","names":[],"sources":["../../../../src/components/AutoSuggest/AutoSuggest.type.ts"],"sourcesContent":["import type { NeighborItemProps } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport type Dropdown from '@semcore/dropdown';\nimport type { DropdownTriggerProps } from '@semcore/dropdown';\nimport type { InputValueProps, InputProps } from '@semcore/input';\nimport type Input from '@semcore/input';\nimport type React from 'react';\n\nimport type Select from '../../index';\n\ndeclare namespace NSAutoSuggest {\n type Suggestion = string;\n\n type Props = InputValueProps & {\n /**\n * List of suggestions or async function to load suggestions.\n */\n suggestions: Suggestion[] | ((value: string, signal: AbortSignal) => Promise<Suggestion[]>);\n /**\n * Placeholder in popper for init state.\n * Set an empty string to hide init state.\n */\n statusItemPlaceholder?: string;\n /** Tag for the left Addon */\n addonLeft?: React.ElementType;\n /** Tag for the right Addon */\n addonRight?: React.ElementType;\n };\n\n type State = {\n isVisible: boolean;\n highlightedIndex: number;\n suggestions: Suggestion[];\n openOnChanges: boolean;\n isLoading: boolean;\n };\n\n type DefaultProps = {\n defaultValue: string;\n placeholder: string;\n children: React.ReactNode;\n };\n\n type Handlers = {\n value: null;\n };\n\n namespace Trigger {\n type Props = {};\n\n type InnerProps = {\n 'tag': typeof Input;\n 'onFocus': () => void;\n 'onBlur': () => void;\n 'aria-haspopup': 'listbox';\n 'aria-expanded': 'true' | 'false';\n 'aria-controls': string;\n 'addonLeft'?: React.ElementType;\n 'addonRight'?: React.ElementType;\n 'isLoading': NSAutoSuggest.State['isLoading'];\n 'size': NSAutoSuggest.Props['size'];\n 'getI18nText': (str: string) => string;\n 'neighborLocation': NeighborItemProps['neighborLocation'];\n };\n\n namespace Value {\n type Props = {};\n\n type InnerProps = {\n id: string;\n neighborLocation: NeighborItemProps['neighborLocation'];\n value: string;\n role: 'combobox';\n onChange: (value: string, e: React.SyntheticEvent) => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n autoComplete: 'off';\n ref?: React.Ref<any>;\n };\n\n type Component = Intergalactic.Component<typeof Input.Value, Props>;\n }\n\n type Component = Intergalactic.Component<typeof Dropdown.Trigger & typeof Input, DropdownTriggerProps & InputProps> & {\n Value: Value.Component;\n };\n }\n namespace Popper {\n type Props = {};\n\n type InnerProps = {\n 'aria-labelledby': string;\n 'ref': React.RefObject<HTMLElement>;\n };\n\n namespace LoadingState {\n type InnerProps = {\n isLoading: boolean;\n };\n\n type Component = Intergalactic.Component<typeof Dropdown.StatusItem>;\n }\n namespace StartTypingState {\n type InnerProps = {\n isLoading: boolean;\n isStartTypingState: boolean;\n children: string;\n };\n\n type Component = Intergalactic.Component<typeof Dropdown.StatusItem>;\n }\n namespace List {\n type InnerProps = {\n 'value': string;\n 'isLoading': boolean;\n 'suggestions': Suggestion[];\n 'isStartTypingState': boolean;\n 'aria-label': string;\n };\n\n type Component = Intergalactic.Component<typeof Select.List>;\n }\n namespace SuggestionItem {\n type InnerProps = {\n value: Suggestion;\n selected: false;\n onClick: (e: React.SyntheticEvent) => void;\n children: React.ReactNode;\n };\n\n type Component = Intergalactic.Component<typeof Dropdown.StatusItem>;\n }\n\n type Component = Intergalactic.Component<typeof Select.Popper, Props> & {\n LoadingState: LoadingState.Component;\n StartTypingState: StartTypingState.Component;\n List: List.Component;\n SuggestionItem: SuggestionItem.Component;\n };\n }\n\n type Component = Intergalactic.Component<typeof Input, Props> & {\n Trigger: Trigger.Component;\n Popper: Popper.Component;\n };\n}\n\nexport {\n NSAutoSuggest,\n};\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ export function Highlight({
3
+ highlight,
4
+ children
5
+ }) {
6
+ const ref = React.useRef(null);
7
+ React.useEffect(() => {
8
+ const child = document.createElement('span');
9
+ if (highlight) {
10
+ const regexp = new RegExp(RegExp.escape(highlight.toLowerCase()), 'ig');
11
+ const results = [...children.matchAll(regexp)];
12
+ let cursor = 0;
13
+ for (const result of results) {
14
+ const foundStr = result[0];
15
+ const index = result.index;
16
+ const before = children.slice(cursor, index);
17
+ const bold = children.slice(index, index + foundStr.length);
18
+ cursor = index + foundStr.length;
19
+ const beforeNode = document.createTextNode(before);
20
+ const boldNode = document.createElement('strong');
21
+ boldNode.textContent = bold;
22
+ child.appendChild(beforeNode);
23
+ child.appendChild(boldNode);
24
+ }
25
+ if (cursor < children.length) {
26
+ const after = children.slice(cursor);
27
+ const afterNode = document.createTextNode(after);
28
+ child.appendChild(afterNode);
29
+ }
30
+ } else {
31
+ child.textContent = children;
32
+ }
33
+ ref.current?.appendChild(child);
34
+ return () => {
35
+ child.remove();
36
+ };
37
+ }, [highlight, children]);
38
+ return /*#__PURE__*/React.createElement("span", {
39
+ ref: ref
40
+ });
41
+ }
42
+ //# sourceMappingURL=Highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Highlight.js","names":["React","Highlight","highlight","children","ref","useRef","useEffect","child","document","createElement","regexp","RegExp","escape","toLowerCase","results","matchAll","cursor","result","foundStr","index","before","slice","bold","length","beforeNode","createTextNode","boldNode","textContent","appendChild","after","afterNode","current","remove"],"sources":["../../../../src/components/AutoSuggest/Highlight.tsx"],"sourcesContent":["import React from 'react';\n\ntype HighlightProps = {\n highlight: string;\n children: string;\n};\n\nexport function Highlight({ highlight, children }: HighlightProps) {\n const ref = React.useRef<HTMLSpanElement | null>(null);\n\n React.useEffect(() => {\n const child = document.createElement('span');\n\n if (highlight) {\n const regexp = new RegExp(RegExp.escape(highlight.toLowerCase()), 'ig');\n const results = [...children.matchAll(regexp)];\n\n let cursor = 0;\n\n for (const result of results) {\n const foundStr = result[0];\n const index = result.index;\n\n const before = children.slice(cursor, index);\n const bold = children.slice(index, index + foundStr.length);\n\n cursor = index + foundStr.length;\n\n const beforeNode = document.createTextNode(before);\n const boldNode = document.createElement('strong');\n boldNode.textContent = bold;\n\n child.appendChild(beforeNode);\n child.appendChild(boldNode);\n }\n\n if (cursor < children.length) {\n const after = children.slice(cursor);\n const afterNode = document.createTextNode(after);\n child.appendChild(afterNode);\n }\n } else {\n child.textContent = children;\n }\n\n ref.current?.appendChild(child);\n\n return () => {\n child.remove();\n };\n }, [highlight, children]);\n\n return <span ref={ref} />;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAOzB,OAAO,SAASC,SAASA,CAAC;EAAEC,SAAS;EAAEC;AAAyB,CAAC,EAAE;EACjE,MAAMC,GAAG,GAAGJ,KAAK,CAACK,MAAM,CAAyB,IAAI,CAAC;EAEtDL,KAAK,CAACM,SAAS,CAAC,MAAM;IACpB,MAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IAE5C,IAAIP,SAAS,EAAE;MACb,MAAMQ,MAAM,GAAG,IAAIC,MAAM,CAACA,MAAM,CAACC,MAAM,CAACV,SAAS,CAACW,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;MACvE,MAAMC,OAAO,GAAG,CAAC,GAAGX,QAAQ,CAACY,QAAQ,CAACL,MAAM,CAAC,CAAC;MAE9C,IAAIM,MAAM,GAAG,CAAC;MAEd,KAAK,MAAMC,MAAM,IAAIH,OAAO,EAAE;QAC5B,MAAMI,QAAQ,GAAGD,MAAM,CAAC,CAAC,CAAC;QAC1B,MAAME,KAAK,GAAGF,MAAM,CAACE,KAAK;QAE1B,MAAMC,MAAM,GAAGjB,QAAQ,CAACkB,KAAK,CAACL,MAAM,EAAEG,KAAK,CAAC;QAC5C,MAAMG,IAAI,GAAGnB,QAAQ,CAACkB,KAAK,CAACF,KAAK,EAAEA,KAAK,GAAGD,QAAQ,CAACK,MAAM,CAAC;QAE3DP,MAAM,GAAGG,KAAK,GAAGD,QAAQ,CAACK,MAAM;QAEhC,MAAMC,UAAU,GAAGhB,QAAQ,CAACiB,cAAc,CAACL,MAAM,CAAC;QAClD,MAAMM,QAAQ,GAAGlB,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QACjDiB,QAAQ,CAACC,WAAW,GAAGL,IAAI;QAE3Bf,KAAK,CAACqB,WAAW,CAACJ,UAAU,CAAC;QAC7BjB,KAAK,CAACqB,WAAW,CAACF,QAAQ,CAAC;MAC7B;MAEA,IAAIV,MAAM,GAAGb,QAAQ,CAACoB,MAAM,EAAE;QAC5B,MAAMM,KAAK,GAAG1B,QAAQ,CAACkB,KAAK,CAACL,MAAM,CAAC;QACpC,MAAMc,SAAS,GAAGtB,QAAQ,CAACiB,cAAc,CAACI,KAAK,CAAC;QAChDtB,KAAK,CAACqB,WAAW,CAACE,SAAS,CAAC;MAC9B;IACF,CAAC,MAAM;MACLvB,KAAK,CAACoB,WAAW,GAAGxB,QAAQ;IAC9B;IAEAC,GAAG,CAAC2B,OAAO,EAAEH,WAAW,CAACrB,KAAK,CAAC;IAE/B,OAAO,MAAM;MACXA,KAAK,CAACyB,MAAM,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAAC9B,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAEzB,oBAAOH,KAAA,CAAAS,aAAA;IAAML,GAAG,EAAEA;EAAI,CAAE,CAAC;AAC3B","ignoreList":[]}