@rescui/select 0.18.1-RUI-297-Add-react-compiler-to-the-packages-build-dbbefd7b8.10 → 0.18.1-RUI-297-Add-react-compiler-to-the-packages-build-8aaaed4be.39

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 (40) hide show
  1. package/lib/_virtual/check-outline.js +294 -63
  2. package/lib/_virtual/close-outline.js +294 -63
  3. package/lib/_virtual/down-outline.js +294 -63
  4. package/lib/_virtual/index.css.js +12 -12
  5. package/lib/_virtual/loading-outline.js +310 -79
  6. package/lib/hooks/use-a11y.js +121 -33
  7. package/lib/hooks/use-actual-size-from-css.js +46 -17
  8. package/lib/hooks/use-focus.js +54 -10
  9. package/lib/hooks/use-hover.js +54 -10
  10. package/lib/hooks/use-label-focus.js +45 -15
  11. package/lib/hooks/use-multi-handlers.js +114 -36
  12. package/lib/hooks/use-no-memo-getter.d.ts +5 -0
  13. package/lib/hooks/use-no-memo-getter.js +15 -0
  14. package/lib/hooks/use-options.d.ts +2 -1
  15. package/lib/hooks/use-options.js +92 -56
  16. package/lib/hooks/use-primary-contrast-css-var-transfer.js +43 -16
  17. package/lib/hooks/use-safe-id.d.ts +3 -5
  18. package/lib/hooks/use-safe-id.js +7 -12
  19. package/lib/index.css +229 -189
  20. package/lib/multiselect.js +533 -158
  21. package/lib/native-select.js +412 -116
  22. package/lib/parts/form-trigger-wrapper.js +159 -39
  23. package/lib/parts/hidden-select.js +105 -29
  24. package/lib/parts/icons.js +164 -44
  25. package/lib/parts/list-box.js +294 -72
  26. package/lib/parts/multi-trigger.js +106 -43
  27. package/lib/parts/native-select-options-with-groups.js +154 -52
  28. package/lib/parts/popup-content.d.ts +2 -2
  29. package/lib/parts/popup-content.js +145 -45
  30. package/lib/public-api.p.css +5 -0
  31. package/lib/public-api.pcss +5 -0
  32. package/lib/select-basic.js +456 -136
  33. package/lib/select-searchable.js +435 -142
  34. package/lib/select.js +228 -56
  35. package/lib/styles/common.p.module.css.js +29 -29
  36. package/lib/styles/form-trigger.p.module.css.js +12 -12
  37. package/lib/styles/list-box.p.module.css.js +13 -13
  38. package/lib/types.d.ts +5 -0
  39. package/lib/utils/get-text-from-nodes.js +1 -1
  40. package/package.json +9 -8
@@ -1,6 +1,9 @@
1
- import React, { useRef } from 'react';
1
+ import _extends from '@babel/runtime-corejs3/helpers/esm/extends';
2
+ import { c } from 'react-compiler-runtime';
3
+ import React from 'react';
2
4
  import cn from 'classnames';
3
5
  import styles from '../styles/list-box.p.module.css.js';
6
+ import { useNoMemoGetter } from '../hooks/use-no-memo-getter.js';
4
7
  import { calculateMaxHeightByItems } from '../utils/calculate-max-height-by-items.js';
5
8
  import { getRealItemsCnt } from '../utils/get-real-items-cnt.js';
6
9
  import { getTextFromNodes } from '../utils/get-text-from-nodes.js';
@@ -15,13 +18,12 @@ const MODE_STYLES = {
15
18
  rock: styles.rock
16
19
  };
17
20
 
18
- function Option(_ref) {
19
- let {
21
+ function Option(t0) {
22
+ const $ = c(12);
23
+ const {
20
24
  item,
21
25
  state
22
- } = _ref;
23
- // Get props for the option element
24
- const ref = useRef(null);
26
+ } = t0;
25
27
  const {
26
28
  selectedMap,
27
29
  getItemProps,
@@ -31,90 +33,310 @@ function Option(_ref) {
31
33
  const isSelected = selectedMap.has(item.key);
32
34
  const isHighlighted = highlightedIndex === item.index;
33
35
  const isDisabled = item.disabled;
34
- return /*#__PURE__*/React.createElement("li", { ...getItemProps({
35
- item,
36
- index,
37
- 'aria-selected': isSelected,
38
- 'tab-index': isHighlighted ? 0 : -1,
39
- ref
40
- }),
41
- className: cn(styles.item, isSelected && styles.selected, isDisabled && styles.disabled),
42
- "data-rs-internal": "select-list-box__item",
43
- "data-focused": isHighlighted,
44
- "data-test": `select-options-list__item_${item.key}`
45
- }, /*#__PURE__*/React.createElement("span", null, item.label), /*#__PURE__*/React.createElement(CheckOutlineIcon, {
46
- "data-rs-internal": "select-list-box__check-icon",
47
- className: cn(styles.checkIcon, isSelected && styles.visible)
48
- }));
36
+ const itemProps = useNoMemoGetter(getItemProps, {
37
+ item,
38
+ index,
39
+ "aria-selected": isSelected,
40
+ "tab-index": isHighlighted ? 0 : -1
41
+ });
42
+ const t1 = cn(styles.item, isSelected && styles.selected, isDisabled && styles.disabled);
43
+ const t2 = "select-list-box__item";
44
+ const t3 = `select-options-list__item_${item.key}`;
45
+ let t4;
46
+
47
+ if ($[0] !== item.label) {
48
+ t4 = /*#__PURE__*/React.createElement("span", null, item.label);
49
+ $[0] = item.label;
50
+ $[1] = t4;
51
+ } else {
52
+ t4 = $[1];
53
+ }
54
+
55
+ const T0 = CheckOutlineIcon;
56
+ const t5 = "select-list-box__check-icon";
57
+ const t6 = cn(styles.checkIcon, isSelected && styles.visible);
58
+ let t7;
59
+
60
+ if ($[2] !== T0 || $[3] !== t6) {
61
+ t7 = /*#__PURE__*/React.createElement(T0, {
62
+ "data-rs-internal": t5,
63
+ className: t6
64
+ });
65
+ $[2] = T0;
66
+ $[3] = t6;
67
+ $[4] = t7;
68
+ } else {
69
+ t7 = $[4];
70
+ }
71
+
72
+ let t8;
73
+
74
+ if ($[5] !== isHighlighted || $[6] !== itemProps || $[7] !== t1 || $[8] !== t3 || $[9] !== t4 || $[10] !== t7) {
75
+ t8 = /*#__PURE__*/React.createElement("li", _extends({}, itemProps, {
76
+ className: t1,
77
+ "data-rs-internal": t2,
78
+ "data-focused": isHighlighted,
79
+ "data-test": t3
80
+ }), t4, t7);
81
+ $[5] = isHighlighted;
82
+ $[6] = itemProps;
83
+ $[7] = t1;
84
+ $[8] = t3;
85
+ $[9] = t4;
86
+ $[10] = t7;
87
+ $[11] = t8;
88
+ } else {
89
+ t8 = $[11];
90
+ }
91
+
92
+ return t8;
49
93
  }
50
94
 
51
- function ListBoxGroup(_ref2) {
52
- let {
95
+ function ListBoxGroup(t0) {
96
+ const $ = c(23);
97
+ const {
53
98
  item,
54
99
  isFirst,
55
100
  state
56
- } = _ref2;
101
+ } = t0;
57
102
  const hasHeading = item.label !== null && item.label !== undefined;
58
- const hasDivider = !isFirst && !hasHeading; // If the section is not the first, add a divider for visual separation
59
-
60
- return /*#__PURE__*/React.createElement(React.Fragment, null, hasDivider && /*#__PURE__*/React.createElement("hr", {
61
- className: styles.divider
62
- }), /*#__PURE__*/React.createElement("li", {
63
- role: "presentation"
64
- }, hasHeading && /*#__PURE__*/React.createElement("span", {
65
- className: styles.groupHeader,
66
- role: "presentation",
67
- "data-rs-internal": "select-list-box__group-header"
68
- }, item.label), /*#__PURE__*/React.createElement("ul", {
69
- role: "group",
70
- "aria-label": hasHeading ? getTextFromNodes(item.label) : undefined,
71
- style: {
103
+ const hasDivider = !isFirst && !hasHeading;
104
+ let t1;
105
+
106
+ if ($[0] !== hasDivider) {
107
+ t1 = hasDivider && /*#__PURE__*/React.createElement("hr", {
108
+ className: styles.divider
109
+ });
110
+ $[0] = hasDivider;
111
+ $[1] = t1;
112
+ } else {
113
+ t1 = $[1];
114
+ }
115
+
116
+ let t2;
117
+
118
+ if ($[2] !== hasHeading || $[3] !== item.label) {
119
+ t2 = hasHeading && /*#__PURE__*/React.createElement("span", {
120
+ className: styles.groupHeader,
121
+ role: "presentation",
122
+ "data-rs-internal": "select-list-box__group-header"
123
+ }, item.label);
124
+ $[2] = hasHeading;
125
+ $[3] = item.label;
126
+ $[4] = t2;
127
+ } else {
128
+ t2 = $[4];
129
+ }
130
+
131
+ let t3;
132
+
133
+ if ($[5] !== hasHeading || $[6] !== item.label) {
134
+ t3 = hasHeading ? getTextFromNodes(item.label) : undefined;
135
+ $[5] = hasHeading;
136
+ $[6] = item.label;
137
+ $[7] = t3;
138
+ } else {
139
+ t3 = $[7];
140
+ }
141
+
142
+ let t4;
143
+
144
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
145
+ t4 = {
72
146
  padding: 0,
73
- listStyle: 'none'
147
+ listStyle: "none"
148
+ };
149
+ $[8] = t4;
150
+ } else {
151
+ t4 = $[8];
152
+ }
153
+
154
+ let t5;
155
+
156
+ if ($[9] !== item.options || $[10] !== state) {
157
+ let t6;
158
+
159
+ if ($[12] !== state) {
160
+ t6 = option => /*#__PURE__*/React.createElement(Option, {
161
+ key: option.key,
162
+ item: option,
163
+ state: state
164
+ });
165
+
166
+ $[12] = state;
167
+ $[13] = t6;
168
+ } else {
169
+ t6 = $[13];
74
170
  }
75
- }, item.options.map(option => /*#__PURE__*/React.createElement(Option, {
76
- key: option.key,
77
- item: option,
78
- state: state
79
- })))));
171
+
172
+ t5 = item.options.map(t6);
173
+ $[9] = item.options;
174
+ $[10] = state;
175
+ $[11] = t5;
176
+ } else {
177
+ t5 = $[11];
178
+ }
179
+
180
+ let t6;
181
+
182
+ if ($[14] !== t3 || $[15] !== t5) {
183
+ t6 = /*#__PURE__*/React.createElement("ul", {
184
+ role: "group",
185
+ "aria-label": t3,
186
+ style: t4
187
+ }, t5);
188
+ $[14] = t3;
189
+ $[15] = t5;
190
+ $[16] = t6;
191
+ } else {
192
+ t6 = $[16];
193
+ }
194
+
195
+ let t7;
196
+
197
+ if ($[17] !== t2 || $[18] !== t6) {
198
+ t7 = /*#__PURE__*/React.createElement("li", {
199
+ role: "presentation"
200
+ }, t2, t6);
201
+ $[17] = t2;
202
+ $[18] = t6;
203
+ $[19] = t7;
204
+ } else {
205
+ t7 = $[19];
206
+ }
207
+
208
+ let t8;
209
+
210
+ if ($[20] !== t1 || $[21] !== t7) {
211
+ t8 = /*#__PURE__*/React.createElement(React.Fragment, null, t1, t7);
212
+ $[20] = t1;
213
+ $[21] = t7;
214
+ $[22] = t8;
215
+ } else {
216
+ t8 = $[22];
217
+ }
218
+
219
+ return t8;
80
220
  }
81
221
 
82
- function ListBox(_ref3) {
83
- let {
222
+ function ListBox(t0) {
223
+ const $ = c(26);
224
+ const {
84
225
  state,
85
226
  items,
86
227
  size,
87
228
  mode,
88
- maxVisibleItems = 5,
229
+ maxVisibleItems: t1,
89
230
  emptyListMessage,
90
- isPrimaryContrast = false
91
- } = _ref3;
231
+ isPrimaryContrast: t2
232
+ } = t0;
233
+ const maxVisibleItems = t1 === undefined ? 5 : t1;
234
+ const isPrimaryContrast = t2 === undefined ? false : t2;
92
235
  const {
93
236
  menuProps
94
237
  } = state;
95
- const firstGroupKey = items.find(item => item.type === 'group')?.key;
96
- const itemsCount = getRealItemsCnt(items);
97
- return /*#__PURE__*/React.createElement("ul", { ...menuProps,
98
- className: cn(styles.listBox, SIZE_STYLES[size], MODE_STYLES[mode]),
99
- style: {
100
- '--_rs-select-list-box-max-height-by-items': calculateMaxHeightByItems(itemsCount, maxVisibleItems),
101
- '--rs-select-contrast-primary': isPrimaryContrast ? '1' : '0'
102
- },
103
- "data-rs-internal": "select-list-box",
104
- "data-test": "select-options-list"
105
- }, itemsCount === 0 ? /*#__PURE__*/React.createElement("li", {
106
- className: cn(styles.item, styles.disabled),
107
- "data-rs-internal": "select-list-box__item"
108
- }, /*#__PURE__*/React.createElement("span", null, emptyListMessage)) : items.map(item => item.type === 'group' ? /*#__PURE__*/React.createElement(ListBoxGroup, {
109
- key: item.key,
110
- item: item,
111
- state: state,
112
- isFirst: item.key === firstGroupKey
113
- }) : /*#__PURE__*/React.createElement(Option, {
114
- key: item.key,
115
- item: item,
116
- state: state
117
- })));
238
+ const firstGroupKey = items.find(_temp)?.key;
239
+ let itemsCount;
240
+ let t3;
241
+ let t4;
242
+ let t5;
243
+
244
+ if ($[0] !== items || $[1] !== maxVisibleItems || $[2] !== menuProps || $[3] !== mode || $[4] !== size) {
245
+ itemsCount = getRealItemsCnt(items);
246
+ t4 = menuProps;
247
+ const t6 = SIZE_STYLES[size];
248
+ const t7 = MODE_STYLES[mode];
249
+
250
+ if ($[9] !== t6 || $[10] !== t7) {
251
+ t5 = cn(styles.listBox, t6, t7);
252
+ $[9] = t6;
253
+ $[10] = t7;
254
+ $[11] = t5;
255
+ } else {
256
+ t5 = $[11];
257
+ }
258
+
259
+ t3 = calculateMaxHeightByItems(itemsCount, maxVisibleItems);
260
+ $[0] = items;
261
+ $[1] = maxVisibleItems;
262
+ $[2] = menuProps;
263
+ $[3] = mode;
264
+ $[4] = size;
265
+ $[5] = itemsCount;
266
+ $[6] = t3;
267
+ $[7] = t4;
268
+ $[8] = t5;
269
+ } else {
270
+ itemsCount = $[5];
271
+ t3 = $[6];
272
+ t4 = $[7];
273
+ t5 = $[8];
274
+ }
275
+
276
+ const t6 = isPrimaryContrast ? "1" : "0";
277
+ let t7;
278
+
279
+ if ($[12] !== t3 || $[13] !== t6) {
280
+ t7 = {
281
+ "--_rs-select-list-box-max-height-by-items": t3,
282
+ "--rs-select-contrast-primary": t6
283
+ };
284
+ $[12] = t3;
285
+ $[13] = t6;
286
+ $[14] = t7;
287
+ } else {
288
+ t7 = $[14];
289
+ }
290
+
291
+ let t8;
292
+
293
+ if ($[15] !== emptyListMessage || $[16] !== firstGroupKey || $[17] !== items || $[18] !== itemsCount || $[19] !== state) {
294
+ t8 = itemsCount === 0 ? /*#__PURE__*/React.createElement("li", {
295
+ className: cn(styles.item, styles.disabled),
296
+ "data-rs-internal": "select-list-box__item"
297
+ }, /*#__PURE__*/React.createElement("span", null, emptyListMessage)) : items.map(item_0 => item_0.type === "group" ? /*#__PURE__*/React.createElement(ListBoxGroup, {
298
+ key: item_0.key,
299
+ item: item_0,
300
+ state: state,
301
+ isFirst: item_0.key === firstGroupKey
302
+ }) : /*#__PURE__*/React.createElement(Option, {
303
+ key: item_0.key,
304
+ item: item_0,
305
+ state: state
306
+ }));
307
+ $[15] = emptyListMessage;
308
+ $[16] = firstGroupKey;
309
+ $[17] = items;
310
+ $[18] = itemsCount;
311
+ $[19] = state;
312
+ $[20] = t8;
313
+ } else {
314
+ t8 = $[20];
315
+ }
316
+
317
+ let t9;
318
+
319
+ if ($[21] !== t4 || $[22] !== t5 || $[23] !== t7 || $[24] !== t8) {
320
+ t9 = /*#__PURE__*/React.createElement("ul", _extends({}, t4, {
321
+ className: t5,
322
+ style: t7,
323
+ "data-rs-internal": "select-list-box",
324
+ "data-test": "select-options-list"
325
+ }), t8);
326
+ $[21] = t4;
327
+ $[22] = t5;
328
+ $[23] = t7;
329
+ $[24] = t8;
330
+ $[25] = t9;
331
+ } else {
332
+ t9 = $[25];
333
+ }
334
+
335
+ return t9;
336
+ }
337
+
338
+ function _temp(item) {
339
+ return item.type === "group";
118
340
  }
119
341
 
120
342
  export { ListBox };
@@ -1,3 +1,5 @@
1
+ import _extends from '@babel/runtime-corejs3/helpers/esm/extends';
2
+ import { c } from 'react-compiler-runtime';
1
3
  import React from 'react';
2
4
  import cn from 'classnames';
3
5
  import { RemovableTag, Tag } from '@rescui/tag';
@@ -6,8 +8,9 @@ import { getTextFromNodes } from '../utils/get-text-from-nodes.js';
6
8
  import { getOptionValue } from '../utils/get-option-value.js';
7
9
  import Foldable from './foldable.js';
8
10
 
9
- function MultiTrigger(_ref) {
10
- let {
11
+ function MultiTrigger(t0) {
12
+ const $ = c(16);
13
+ const {
11
14
  selectedItems,
12
15
  valueProps,
13
16
  isSingleLine,
@@ -15,56 +18,116 @@ function MultiTrigger(_ref) {
15
18
  placeholder,
16
19
  triggerRef,
17
20
  removeSelectedItem
18
- } = _ref;
21
+ } = t0;
19
22
  const hasValue = selectedItems.length > 0;
20
23
 
21
24
  if (!hasValue) {
22
- return /*#__PURE__*/React.createElement("div", { ...valueProps,
23
- className: cn(styles.triggerText, styles.labelNotSelected),
24
- "data-test": 'multiselect__trigger_content'
25
- }, placeholder);
25
+ let t1;
26
+
27
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
28
+ t1 = cn(styles.triggerText, styles.labelNotSelected);
29
+ $[0] = t1;
30
+ } else {
31
+ t1 = $[0];
32
+ }
33
+
34
+ let t2;
35
+
36
+ if ($[1] !== placeholder || $[2] !== valueProps) {
37
+ t2 = /*#__PURE__*/React.createElement("div", _extends({}, valueProps, {
38
+ className: t1,
39
+ "data-test": "multiselect__trigger_content"
40
+ }), placeholder);
41
+ $[1] = placeholder;
42
+ $[2] = valueProps;
43
+ $[3] = t2;
44
+ } else {
45
+ t2 = $[3];
46
+ }
47
+
48
+ return t2;
26
49
  }
27
50
 
28
- const tags = selectedItems.map(option => {
29
- const key = getOptionValue(option);
30
- return /*#__PURE__*/React.createElement(RemovableTag, {
31
- key: key,
32
- tabIndex: -1,
33
- "data-test": `selected-tag-${key}`,
34
- className: styles.tag,
35
- disabled: isDisabled,
36
- onRemoveClick: () => {
37
- removeSelectedItem(option);
38
- triggerRef.current?.focus({
39
- focusVisible: false
40
- });
41
- },
42
- "data-rs-internal": "select-trigger__removable-tag",
43
- wrap: !isSingleLine,
44
- "aria-label": getTextFromNodes(option.label),
45
- onFocus: e => {
46
- if (e.target.getAttribute('tabindex') === '-1') {
51
+ let t1;
52
+
53
+ if ($[4] !== isDisabled || $[5] !== isSingleLine || $[6] !== removeSelectedItem || $[7] !== selectedItems || $[8] !== triggerRef) {
54
+ t1 = selectedItems.map(option => {
55
+ const key = getOptionValue(option);
56
+ return /*#__PURE__*/React.createElement(RemovableTag, {
57
+ key: key,
58
+ tabIndex: -1,
59
+ "data-test": `selected-tag-${key}`,
60
+ className: styles.tag,
61
+ disabled: isDisabled,
62
+ onRemoveClick: () => {
63
+ removeSelectedItem(option);
47
64
  triggerRef.current?.focus({
48
65
  focusVisible: false
49
66
  });
67
+ },
68
+ "data-rs-internal": "select-trigger__removable-tag",
69
+ wrap: !isSingleLine,
70
+ "aria-label": getTextFromNodes(option.label),
71
+ onFocus: e => {
72
+ if (e.target.getAttribute("tabindex") === "-1") {
73
+ triggerRef.current?.focus({
74
+ focusVisible: false
75
+ });
76
+ }
50
77
  }
51
- }
52
- }, option.label);
53
- });
54
- return /*#__PURE__*/React.createElement("div", { ...valueProps,
55
- className: styles.multi,
56
- "data-test": "multiselect__trigger_content"
57
- }, isSingleLine ? /*#__PURE__*/React.createElement(Foldable, {
58
- className: styles.tagsContainer,
59
- renderHiddenCounter: (n, ref) => /*#__PURE__*/React.createElement(Tag, {
60
- className: cn(styles.tag, styles.filledTag),
61
- key: "+",
62
- ref: ref,
63
- "data-rs-internal": "select-trigger__tag"
64
- }, "+", n)
65
- }, tags) : /*#__PURE__*/React.createElement("div", {
66
- className: styles.tagsContainer
67
- }, tags));
78
+ }, option.label);
79
+ });
80
+ $[4] = isDisabled;
81
+ $[5] = isSingleLine;
82
+ $[6] = removeSelectedItem;
83
+ $[7] = selectedItems;
84
+ $[8] = triggerRef;
85
+ $[9] = t1;
86
+ } else {
87
+ t1 = $[9];
88
+ }
89
+
90
+ const tags = t1;
91
+ let t2;
92
+
93
+ if ($[10] !== isSingleLine || $[11] !== tags) {
94
+ t2 = isSingleLine ? /*#__PURE__*/React.createElement(Foldable, {
95
+ className: styles.tagsContainer,
96
+ renderHiddenCounter: _temp
97
+ }, tags) : /*#__PURE__*/React.createElement("div", {
98
+ className: styles.tagsContainer
99
+ }, tags);
100
+ $[10] = isSingleLine;
101
+ $[11] = tags;
102
+ $[12] = t2;
103
+ } else {
104
+ t2 = $[12];
105
+ }
106
+
107
+ let t3;
108
+
109
+ if ($[13] !== t2 || $[14] !== valueProps) {
110
+ t3 = /*#__PURE__*/React.createElement("div", _extends({}, valueProps, {
111
+ className: styles.multi,
112
+ "data-test": "multiselect__trigger_content"
113
+ }), t2);
114
+ $[13] = t2;
115
+ $[14] = valueProps;
116
+ $[15] = t3;
117
+ } else {
118
+ t3 = $[15];
119
+ }
120
+
121
+ return t3;
122
+ }
123
+
124
+ function _temp(n, ref) {
125
+ return /*#__PURE__*/React.createElement(Tag, {
126
+ className: cn(styles.tag, styles.filledTag),
127
+ key: "+",
128
+ ref: ref,
129
+ "data-rs-internal": "select-trigger__tag"
130
+ }, "+", n);
68
131
  }
69
132
 
70
133
  export { MultiTrigger };