@tamagui/select 3.0.0-beta.924.1 → 3.0.1

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 (106) hide show
  1. package/dist/cjs/Select.cjs +23 -25
  2. package/dist/cjs/Select.native.cjs +27 -26
  3. package/dist/cjs/Select.native.js +27 -26
  4. package/dist/cjs/Select.native.js.map +1 -1
  5. package/dist/cjs/SelectImpl.cjs +67 -63
  6. package/dist/cjs/SelectItem.cjs +49 -60
  7. package/dist/cjs/SelectItem.native.cjs +51 -79
  8. package/dist/cjs/SelectItem.native.js +51 -79
  9. package/dist/cjs/SelectItem.native.js.map +1 -1
  10. package/dist/cjs/SelectScrollButton.cjs +9 -25
  11. package/dist/cjs/SelectTrigger.cjs +22 -5
  12. package/dist/cjs/SelectTrigger.native.cjs +15 -5
  13. package/dist/cjs/SelectTrigger.native.js +15 -5
  14. package/dist/cjs/SelectTrigger.native.js.map +1 -1
  15. package/dist/cjs/SelectViewport.cjs +29 -32
  16. package/dist/cjs/SelectViewport.native.cjs +2 -2
  17. package/dist/cjs/SelectViewport.native.js +2 -2
  18. package/dist/cjs/SelectViewport.native.js.map +1 -1
  19. package/dist/cjs/selectionController.cjs +15 -5
  20. package/dist/cjs/selectionController.native.cjs +20 -15
  21. package/dist/cjs/selectionController.native.js +20 -15
  22. package/dist/cjs/selectionController.native.js.map +1 -1
  23. package/dist/esm/Select.mjs +27 -28
  24. package/dist/esm/Select.mjs.map +1 -1
  25. package/dist/esm/Select.native.js +31 -29
  26. package/dist/esm/Select.native.js.map +1 -1
  27. package/dist/esm/SelectImpl.mjs +68 -64
  28. package/dist/esm/SelectImpl.mjs.map +1 -1
  29. package/dist/esm/SelectItem.mjs +50 -61
  30. package/dist/esm/SelectItem.mjs.map +1 -1
  31. package/dist/esm/SelectItem.native.js +52 -80
  32. package/dist/esm/SelectItem.native.js.map +1 -1
  33. package/dist/esm/SelectScrollButton.mjs +10 -26
  34. package/dist/esm/SelectScrollButton.mjs.map +1 -1
  35. package/dist/esm/SelectTrigger.mjs +16 -5
  36. package/dist/esm/SelectTrigger.mjs.map +1 -1
  37. package/dist/esm/SelectTrigger.native.js +15 -4
  38. package/dist/esm/SelectTrigger.native.js.map +1 -1
  39. package/dist/esm/SelectViewport.mjs +30 -33
  40. package/dist/esm/SelectViewport.mjs.map +1 -1
  41. package/dist/esm/SelectViewport.native.js +3 -3
  42. package/dist/esm/SelectViewport.native.js.map +1 -1
  43. package/dist/esm/selectionController.mjs +15 -5
  44. package/dist/esm/selectionController.mjs.map +1 -1
  45. package/dist/esm/selectionController.native.js +20 -15
  46. package/dist/esm/selectionController.native.js.map +1 -1
  47. package/dist/jsx/Select.mjs +27 -28
  48. package/dist/jsx/Select.mjs.map +1 -1
  49. package/dist/jsx/Select.native.cjs +27 -26
  50. package/dist/jsx/Select.native.js +27 -26
  51. package/dist/jsx/Select.native.js.map +1 -1
  52. package/dist/jsx/SelectImpl.mjs +68 -64
  53. package/dist/jsx/SelectImpl.mjs.map +1 -1
  54. package/dist/jsx/SelectItem.mjs +50 -61
  55. package/dist/jsx/SelectItem.mjs.map +1 -1
  56. package/dist/jsx/SelectItem.native.cjs +51 -79
  57. package/dist/jsx/SelectItem.native.js +51 -79
  58. package/dist/jsx/SelectItem.native.js.map +1 -1
  59. package/dist/jsx/SelectScrollButton.mjs +10 -26
  60. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  61. package/dist/jsx/SelectTrigger.mjs +16 -5
  62. package/dist/jsx/SelectTrigger.mjs.map +1 -1
  63. package/dist/jsx/SelectTrigger.native.cjs +15 -5
  64. package/dist/jsx/SelectTrigger.native.js +15 -5
  65. package/dist/jsx/SelectTrigger.native.js.map +1 -1
  66. package/dist/jsx/SelectViewport.mjs +30 -33
  67. package/dist/jsx/SelectViewport.mjs.map +1 -1
  68. package/dist/jsx/SelectViewport.native.cjs +2 -2
  69. package/dist/jsx/SelectViewport.native.js +2 -2
  70. package/dist/jsx/SelectViewport.native.js.map +1 -1
  71. package/dist/jsx/selectionController.mjs +15 -5
  72. package/dist/jsx/selectionController.mjs.map +1 -1
  73. package/dist/jsx/selectionController.native.cjs +20 -15
  74. package/dist/jsx/selectionController.native.js +20 -15
  75. package/dist/jsx/selectionController.native.js.map +1 -1
  76. package/package.json +30 -29
  77. package/src/Select.tsx +41 -41
  78. package/src/SelectImpl.tsx +107 -95
  79. package/src/SelectItem.tsx +66 -91
  80. package/src/SelectScrollButton.tsx +14 -32
  81. package/src/SelectTrigger.tsx +19 -2
  82. package/src/SelectViewport.native.tsx +4 -4
  83. package/src/SelectViewport.tsx +34 -30
  84. package/src/selectionController.ts +20 -5
  85. package/src/types.tsx +26 -22
  86. package/types/Select.d.ts +42 -81
  87. package/types/Select.d.ts.map +1 -1
  88. package/types/SelectImpl.d.ts.map +1 -1
  89. package/types/SelectItem.d.ts +3 -5
  90. package/types/SelectItem.d.ts.map +1 -1
  91. package/types/SelectItemText.d.ts +3 -5
  92. package/types/SelectItemText.d.ts.map +1 -1
  93. package/types/SelectScrollButton.d.ts +5 -9
  94. package/types/SelectScrollButton.d.ts.map +1 -1
  95. package/types/SelectScrollButton.native.d.ts +5 -9
  96. package/types/SelectScrollButton.native.d.ts.map +1 -1
  97. package/types/SelectTrigger.d.ts +3 -5
  98. package/types/SelectTrigger.d.ts.map +1 -1
  99. package/types/SelectViewport.d.ts +4 -9
  100. package/types/SelectViewport.d.ts.map +1 -1
  101. package/types/SelectViewport.native.d.ts +4 -9
  102. package/types/SelectViewport.native.d.ts.map +1 -1
  103. package/types/selectionController.d.ts +2 -0
  104. package/types/selectionController.d.ts.map +1 -1
  105. package/types/types.d.ts +30 -22
  106. package/types/types.d.ts.map +1 -1
@@ -1,7 +1,3 @@
1
- function _type_of(obj) {
2
- "@swc/helpers - typeof";
3
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
4
- }
5
1
  function getSelectLabelText(label) {
6
2
  if (typeof label === "string" || typeof label === "number") {
7
3
  return String(label);
@@ -9,7 +5,7 @@ function getSelectLabelText(label) {
9
5
  if (Array.isArray(label)) {
10
6
  return label.map(getSelectLabelText).join("");
11
7
  }
12
- if (label && (typeof label === "undefined" ? "undefined" : _type_of(label)) === "object" && "props" in label) {
8
+ if (label && typeof label === "object" && "props" in label) {
13
9
  var _label_props;
14
10
  return getSelectLabelText((_label_props = label.props) === null || _label_props === void 0 ? void 0 : _label_props.children);
15
11
  }
@@ -21,7 +17,9 @@ function createSelectItemRegistry(onChange) {
21
17
  var explicitTextValues = /* @__PURE__ */ new Map();
22
18
  var itemNodes = /* @__PURE__ */ new Map();
23
19
  var listeners = /* @__PURE__ */ new Set();
20
+ var indexByValue = null;
24
21
  var notify = function() {
22
+ indexByValue = null;
25
23
  onChange === null || onChange === void 0 ? void 0 : onChange();
26
24
  listeners.forEach(function(listener) {
27
25
  return listener();
@@ -36,8 +34,19 @@ function createSelectItemRegistry(onChange) {
36
34
  });
37
35
  };
38
36
  var getIndex = function(value) {
39
- return items.findIndex(function(item) {
40
- return item.value === value;
37
+ if (!indexByValue) {
38
+ indexByValue = /* @__PURE__ */ new Map();
39
+ items.forEach(function(item, index) {
40
+ if (!indexByValue.has(item.value)) indexByValue.set(item.value, index);
41
+ });
42
+ }
43
+ var _indexByValue_get;
44
+ return (_indexByValue_get = indexByValue.get(value)) !== null && _indexByValue_get !== void 0 ? _indexByValue_get : -1;
45
+ };
46
+ var getNodes = function() {
47
+ return items.map(function(item) {
48
+ var _itemNodes_get;
49
+ return (_itemNodes_get = itemNodes.get(item.id)) !== null && _itemNodes_get !== void 0 ? _itemNodes_get : null;
41
50
  });
42
51
  };
43
52
  var getRegisteredLabel = function(value) {
@@ -79,9 +88,6 @@ function createSelectItemRegistry(onChange) {
79
88
  if (changed) notify();
80
89
  };
81
90
  var syncNodeOrder = function() {
82
- var previousOrder = items.map(function(item) {
83
- return item.id;
84
- });
85
91
  items.sort(function(a, b) {
86
92
  var aNode = itemNodes.get(a.id);
87
93
  var bNode = itemNodes.get(b.id);
@@ -93,11 +99,6 @@ function createSelectItemRegistry(onChange) {
93
99
  if (position & 2) return 1;
94
100
  return 0;
95
101
  });
96
- if (items.some(function(item, index) {
97
- return item.id !== previousOrder[index];
98
- })) {
99
- notify();
100
- }
101
102
  };
102
103
  var registerItem = function(item) {
103
104
  var id = Symbol(item.value);
@@ -143,12 +144,15 @@ function createSelectItemRegistry(onChange) {
143
144
  notify();
144
145
  },
145
146
  setNode(node) {
147
+ var _itemNodes_get;
148
+ if (((_itemNodes_get = itemNodes.get(id)) !== null && _itemNodes_get !== void 0 ? _itemNodes_get : null) === (node !== null && node !== void 0 ? node : null)) return;
146
149
  if (node) {
147
150
  itemNodes.set(id, node);
148
151
  syncNodeOrder();
149
152
  } else {
150
153
  itemNodes.delete(id);
151
154
  }
155
+ notify();
152
156
  },
153
157
  unregister() {
154
158
  var index = items.findIndex(function(current) {
@@ -231,6 +235,7 @@ function createSelectItemRegistry(onChange) {
231
235
  getItems,
232
236
  getItem,
233
237
  getIndex,
238
+ getNodes,
234
239
  firstEnabledIndex,
235
240
  nextEnabledIndex,
236
241
  findTypeaheadIndex,
@@ -1 +1 @@
1
- {"version":3,"file":"selectionController.native.js","names":[],"sources":["esm/selectionController.native.js"],"sourcesContent":["function _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction getSelectLabelText(label) {\n if (typeof label === \"string\" || typeof label === \"number\") {\n return String(label);\n }\n if (Array.isArray(label)) {\n return label.map(getSelectLabelText).join(\"\");\n }\n if (label && (typeof label === \"undefined\" ? \"undefined\" : _type_of(label)) === \"object\" && \"props\" in label) {\n var _label_props;\n return getSelectLabelText((_label_props = label.props) === null || _label_props === void 0 ? void 0 : _label_props.children);\n }\n return \"\";\n}\nfunction createSelectItemRegistry(onChange) {\n var items = [];\n var labelRegistrations = /* @__PURE__ */ new Map();\n var explicitTextValues = /* @__PURE__ */ new Map();\n var itemNodes = /* @__PURE__ */ new Map();\n var listeners = /* @__PURE__ */ new Set();\n var notify = function() {\n onChange === null || onChange === void 0 ? void 0 : onChange();\n listeners.forEach(function(listener) {\n return listener();\n });\n };\n var getItems = function() {\n return items;\n };\n var getItem = function(value) {\n return items.find(function(item) {\n return item.value === value;\n });\n };\n var getIndex = function(value) {\n return items.findIndex(function(item) {\n return item.value === value;\n });\n };\n var getRegisteredLabel = function(value) {\n var registrations = labelRegistrations.get(value);\n if (!(registrations === null || registrations === void 0 ? void 0 : registrations.size)) return void 0;\n var values = Array.from(registrations.values());\n return values[values.length - 1];\n };\n var applyRegisteredLabel = function(value) {\n var registeredLabel = getRegisteredLabel(value);\n var changed = false;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n if (item.value !== value) continue;\n var nextLabel = registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.label;\n var nextTextValue = explicitTextValues.get(item.id) || (registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue);\n if (item.label !== nextLabel || item.textValue !== nextTextValue) {\n item.label = nextLabel;\n item.textValue = nextTextValue;\n changed = true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (changed) notify();\n };\n var syncNodeOrder = function() {\n var previousOrder = items.map(function(item) {\n return item.id;\n });\n items.sort(function(a, b) {\n var aNode = itemNodes.get(a.id);\n var bNode = itemNodes.get(b.id);\n if (!aNode || !bNode || typeof aNode.compareDocumentPosition !== \"function\") {\n return 0;\n }\n var position = aNode.compareDocumentPosition(bNode);\n if (position & 4) return -1;\n if (position & 2) return 1;\n return 0;\n });\n if (items.some(function(item, index) {\n return item.id !== previousOrder[index];\n })) {\n notify();\n }\n };\n var registerItem = function(item) {\n var id = Symbol(item.value);\n var registeredLabel = getRegisteredLabel(item.value);\n var _item_textValue;\n var registeredItem = {\n ...item,\n ...registeredLabel,\n textValue: (_item_textValue = item.textValue) !== null && _item_textValue !== void 0 ? _item_textValue : registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue,\n id\n };\n explicitTextValues.set(id, item.textValue);\n items.push(registeredItem);\n notify();\n return {\n id,\n update(next) {\n var index = items.findIndex(function(current2) {\n return current2.id === id;\n });\n if (index < 0) return;\n var current = items[index];\n if (\"textValue\" in next) {\n explicitTextValues.set(id, next.textValue);\n }\n var nextItem = {\n ...current,\n ...next\n };\n if (next.value !== void 0 && next.value !== current.value) {\n var nextLabel = getRegisteredLabel(next.value);\n nextItem.label = nextLabel === null || nextLabel === void 0 ? void 0 : nextLabel.label;\n }\n var explicitTextValue = explicitTextValues.get(id);\n nextItem.textValue = explicitTextValue || getSelectLabelText(nextItem.label) || (nextItem.label ? nextItem.value : void 0);\n var changed = Object.entries(next).some(function(param) {\n var [key, value] = param;\n return current[key] !== value;\n });\n var textValueChanged = current.textValue !== nextItem.textValue;\n if (!changed && !textValueChanged) return;\n items[index] = nextItem;\n notify();\n },\n setNode(node) {\n if (node) {\n itemNodes.set(id, node);\n syncNodeOrder();\n } else {\n itemNodes.delete(id);\n }\n },\n unregister() {\n var index = items.findIndex(function(current) {\n return current.id === id;\n });\n if (index < 0) return;\n items.splice(index, 1);\n explicitTextValues.delete(id);\n itemNodes.delete(id);\n notify();\n }\n };\n };\n var registerLabel = function(value, label, textValue) {\n var id = Symbol(value);\n var normalizedTextValue = textValue || getSelectLabelText(label) || value;\n var _labelRegistrations_get;\n var registrations = (_labelRegistrations_get = labelRegistrations.get(value)) !== null && _labelRegistrations_get !== void 0 ? _labelRegistrations_get : (function() {\n var next = /* @__PURE__ */ new Map();\n labelRegistrations.set(value, next);\n return next;\n })();\n registrations.set(id, {\n label,\n textValue: normalizedTextValue\n });\n applyRegisteredLabel(value);\n return function() {\n registrations.delete(id);\n if (!registrations.size) {\n labelRegistrations.delete(value);\n }\n applyRegisteredLabel(value);\n };\n };\n var firstEnabledIndex = function() {\n return items.findIndex(function(item) {\n return !item.disabled;\n });\n };\n var nextEnabledIndex = function(fromIndex, direction) {\n if (!items.length) return -1;\n if (fromIndex == null || fromIndex < 0 || fromIndex >= items.length) {\n if (direction === 1) return firstEnabledIndex();\n for (var index = items.length - 1; index >= 0; index--) {\n if (!items[index].disabled) return index;\n }\n return -1;\n }\n for (var offset = 1; offset <= items.length; offset++) {\n var _items_index;\n var index1 = (fromIndex + direction * offset + items.length) % items.length;\n if (!((_items_index = items[index1]) === null || _items_index === void 0 ? void 0 : _items_index.disabled)) return index1;\n }\n return -1;\n };\n var findTypeaheadIndex = function(search, fromIndex) {\n var normalizedSearch = search.trim().toLocaleLowerCase();\n if (!normalizedSearch) return -1;\n var start = fromIndex == null || fromIndex < 0 ? -1 : fromIndex;\n for (var offset = 1; offset <= items.length; offset++) {\n var index = (start + offset) % items.length;\n var item = items[index];\n var label = item.textValue || getSelectLabelText(item.label) || item.value;\n if (!item.disabled && label.toLocaleLowerCase().startsWith(normalizedSearch)) {\n return index;\n }\n }\n return -1;\n };\n return {\n subscribe(listener) {\n listeners.add(listener);\n return function() {\n listeners.delete(listener);\n };\n },\n registerItem,\n registerLabel,\n getItems,\n getItem,\n getIndex,\n firstEnabledIndex,\n nextEnabledIndex,\n findTypeaheadIndex,\n getDisabledIndices: function() {\n return items.flatMap(function(item, index) {\n return item.disabled ? [\n index\n ] : [];\n });\n },\n getTypeaheadLabels: function() {\n return items.map(function(item) {\n return item.textValue || getSelectLabelText(item.label) || item.value;\n });\n }\n };\n}\nfunction normalizeSelectSelection(mode, value) {\n if (mode === \"single\") {\n return typeof value === \"string\" ? value : \"\";\n }\n var values = Array.isArray(value) ? value : [];\n return [\n ...new Set(values)\n ];\n}\nfunction selectedValuesFromSelection(mode, value) {\n var normalized = normalizeSelectSelection(mode, value);\n return mode === \"multiple\" ? normalized : normalized ? [\n normalized\n ] : [];\n}\nfunction createSelectSelectionController(param) {\n var { mode: initialMode, value: initialValue, registry } = param;\n var mode = initialMode;\n var value = normalizeSelectSelection(mode, initialValue);\n var activeIndex = null;\n var selectedValues = function() {\n return selectedValuesFromSelection(mode, value);\n };\n var setMode = function(nextMode) {\n if (mode === nextMode) return value;\n mode = nextMode;\n value = normalizeSelectSelection(mode, value);\n return value;\n };\n var setValue = function(nextValue) {\n value = normalizeSelectSelection(mode, nextValue);\n return value;\n };\n var isSelected = function(itemValue) {\n return selectedValues().includes(itemValue);\n };\n var toggle = function(itemValue) {\n var item = registry.getItem(itemValue);\n if (!item || item.disabled) return value;\n if (mode === \"single\") {\n value = itemValue;\n return value;\n }\n var current = selectedValues();\n value = current.includes(itemValue) ? current.filter(function(currentValue) {\n return currentValue !== itemValue;\n }) : [\n ...current,\n itemValue\n ];\n return value;\n };\n var selectionAnchor = function() {\n var values = selectedValues();\n for (var index = values.length - 1; index >= 0; index--) {\n var item = registry.getItem(values[index]);\n if (item) return item;\n }\n var firstEnabledIndex = registry.firstEnabledIndex();\n return firstEnabledIndex < 0 ? void 0 : registry.getItems()[firstEnabledIndex];\n };\n var selectionAnchorIndex = function() {\n var anchor = selectionAnchor();\n return anchor ? registry.getIndex(anchor.value) : -1;\n };\n var initialActiveIndex = function() {\n var anchorIndex = selectionAnchorIndex();\n var anchor = anchorIndex < 0 ? void 0 : registry.getItems()[anchorIndex];\n return anchor && !anchor.disabled ? anchorIndex : registry.firstEnabledIndex();\n };\n var moveActive = function(direction) {\n var nextIndex = registry.nextEnabledIndex(activeIndex, direction);\n activeIndex = nextIndex < 0 ? null : nextIndex;\n return activeIndex == null ? void 0 : registry.getItems()[activeIndex];\n };\n return {\n registry,\n get mode() {\n return mode;\n },\n get value() {\n return value;\n },\n get activeIndex() {\n return activeIndex;\n },\n get activeItem() {\n return activeIndex == null ? void 0 : registry.getItems()[activeIndex];\n },\n get shouldCloseOnSelect() {\n return mode === \"single\";\n },\n setMode,\n setValue,\n isSelected,\n toggle,\n selectionAnchor,\n selectionAnchorIndex,\n initialActiveIndex,\n setActiveIndex(index) {\n activeIndex = index;\n },\n moveActive\n };\n}\nfunction getSelectListboxProps(mode) {\n return {\n role: \"listbox\",\n \"aria-multiselectable\": mode === \"multiple\" ? true : void 0\n };\n}\nfunction getSelectOptionProps(mode, selected, disabled, platform) {\n if (platform === \"native\") {\n return {\n accessibilityRole: mode === \"multiple\" ? \"checkbox\" : \"button\",\n accessibilityState: {\n selected: mode === \"single\" ? selected : void 0,\n checked: mode === \"multiple\" ? selected : void 0,\n disabled\n }\n };\n }\n return {\n role: \"option\",\n \"aria-selected\": selected,\n \"aria-disabled\": disabled || void 0\n };\n}\nexport {\n createSelectItemRegistry,\n createSelectSelectionController,\n getSelectLabelText,\n getSelectListboxProps,\n getSelectOptionProps,\n normalizeSelectSelection,\n selectedValuesFromSelection\n};\n//# sourceMappingURL=selectionController.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"selectionController.native.js","names":[],"sources":["esm/selectionController.native.js"],"sourcesContent":["function getSelectLabelText(label) {\n if (typeof label === \"string\" || typeof label === \"number\") {\n return String(label);\n }\n if (Array.isArray(label)) {\n return label.map(getSelectLabelText).join(\"\");\n }\n if (label && typeof label === \"object\" && \"props\" in label) {\n var _label_props;\n return getSelectLabelText((_label_props = label.props) === null || _label_props === void 0 ? void 0 : _label_props.children);\n }\n return \"\";\n}\nfunction createSelectItemRegistry(onChange) {\n var items = [];\n var labelRegistrations = /* @__PURE__ */ new Map();\n var explicitTextValues = /* @__PURE__ */ new Map();\n var itemNodes = /* @__PURE__ */ new Map();\n var listeners = /* @__PURE__ */ new Set();\n var indexByValue = null;\n var notify = function() {\n indexByValue = null;\n onChange === null || onChange === void 0 ? void 0 : onChange();\n listeners.forEach(function(listener) {\n return listener();\n });\n };\n var getItems = function() {\n return items;\n };\n var getItem = function(value) {\n return items.find(function(item) {\n return item.value === value;\n });\n };\n var getIndex = function(value) {\n if (!indexByValue) {\n indexByValue = /* @__PURE__ */ new Map();\n items.forEach(function(item, index) {\n if (!indexByValue.has(item.value)) indexByValue.set(item.value, index);\n });\n }\n var _indexByValue_get;\n return (_indexByValue_get = indexByValue.get(value)) !== null && _indexByValue_get !== void 0 ? _indexByValue_get : -1;\n };\n var getNodes = function() {\n return items.map(function(item) {\n var _itemNodes_get;\n return (_itemNodes_get = itemNodes.get(item.id)) !== null && _itemNodes_get !== void 0 ? _itemNodes_get : null;\n });\n };\n var getRegisteredLabel = function(value) {\n var registrations = labelRegistrations.get(value);\n if (!(registrations === null || registrations === void 0 ? void 0 : registrations.size)) return void 0;\n var values = Array.from(registrations.values());\n return values[values.length - 1];\n };\n var applyRegisteredLabel = function(value) {\n var registeredLabel = getRegisteredLabel(value);\n var changed = false;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n if (item.value !== value) continue;\n var nextLabel = registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.label;\n var nextTextValue = explicitTextValues.get(item.id) || (registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue);\n if (item.label !== nextLabel || item.textValue !== nextTextValue) {\n item.label = nextLabel;\n item.textValue = nextTextValue;\n changed = true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (changed) notify();\n };\n var syncNodeOrder = function() {\n items.sort(function(a, b) {\n var aNode = itemNodes.get(a.id);\n var bNode = itemNodes.get(b.id);\n if (!aNode || !bNode || typeof aNode.compareDocumentPosition !== \"function\") {\n return 0;\n }\n var position = aNode.compareDocumentPosition(bNode);\n if (position & 4) return -1;\n if (position & 2) return 1;\n return 0;\n });\n };\n var registerItem = function(item) {\n var id = Symbol(item.value);\n var registeredLabel = getRegisteredLabel(item.value);\n var _item_textValue;\n var registeredItem = {\n ...item,\n ...registeredLabel,\n textValue: (_item_textValue = item.textValue) !== null && _item_textValue !== void 0 ? _item_textValue : registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue,\n id\n };\n explicitTextValues.set(id, item.textValue);\n items.push(registeredItem);\n notify();\n return {\n id,\n update(next) {\n var index = items.findIndex(function(current2) {\n return current2.id === id;\n });\n if (index < 0) return;\n var current = items[index];\n if (\"textValue\" in next) {\n explicitTextValues.set(id, next.textValue);\n }\n var nextItem = {\n ...current,\n ...next\n };\n if (next.value !== void 0 && next.value !== current.value) {\n var nextLabel = getRegisteredLabel(next.value);\n nextItem.label = nextLabel === null || nextLabel === void 0 ? void 0 : nextLabel.label;\n }\n var explicitTextValue = explicitTextValues.get(id);\n nextItem.textValue = explicitTextValue || getSelectLabelText(nextItem.label) || (nextItem.label ? nextItem.value : void 0);\n var changed = Object.entries(next).some(function(param) {\n var [key, value] = param;\n return current[key] !== value;\n });\n var textValueChanged = current.textValue !== nextItem.textValue;\n if (!changed && !textValueChanged) return;\n items[index] = nextItem;\n notify();\n },\n setNode(node) {\n var _itemNodes_get;\n if (((_itemNodes_get = itemNodes.get(id)) !== null && _itemNodes_get !== void 0 ? _itemNodes_get : null) === (node !== null && node !== void 0 ? node : null)) return;\n if (node) {\n itemNodes.set(id, node);\n syncNodeOrder();\n } else {\n itemNodes.delete(id);\n }\n notify();\n },\n unregister() {\n var index = items.findIndex(function(current) {\n return current.id === id;\n });\n if (index < 0) return;\n items.splice(index, 1);\n explicitTextValues.delete(id);\n itemNodes.delete(id);\n notify();\n }\n };\n };\n var registerLabel = function(value, label, textValue) {\n var id = Symbol(value);\n var normalizedTextValue = textValue || getSelectLabelText(label) || value;\n var _labelRegistrations_get;\n var registrations = (_labelRegistrations_get = labelRegistrations.get(value)) !== null && _labelRegistrations_get !== void 0 ? _labelRegistrations_get : (function() {\n var next = /* @__PURE__ */ new Map();\n labelRegistrations.set(value, next);\n return next;\n })();\n registrations.set(id, {\n label,\n textValue: normalizedTextValue\n });\n applyRegisteredLabel(value);\n return function() {\n registrations.delete(id);\n if (!registrations.size) {\n labelRegistrations.delete(value);\n }\n applyRegisteredLabel(value);\n };\n };\n var firstEnabledIndex = function() {\n return items.findIndex(function(item) {\n return !item.disabled;\n });\n };\n var nextEnabledIndex = function(fromIndex, direction) {\n if (!items.length) return -1;\n if (fromIndex == null || fromIndex < 0 || fromIndex >= items.length) {\n if (direction === 1) return firstEnabledIndex();\n for (var index = items.length - 1; index >= 0; index--) {\n if (!items[index].disabled) return index;\n }\n return -1;\n }\n for (var offset = 1; offset <= items.length; offset++) {\n var _items_index;\n var index1 = (fromIndex + direction * offset + items.length) % items.length;\n if (!((_items_index = items[index1]) === null || _items_index === void 0 ? void 0 : _items_index.disabled)) return index1;\n }\n return -1;\n };\n var findTypeaheadIndex = function(search, fromIndex) {\n var normalizedSearch = search.trim().toLocaleLowerCase();\n if (!normalizedSearch) return -1;\n var start = fromIndex == null || fromIndex < 0 ? -1 : fromIndex;\n for (var offset = 1; offset <= items.length; offset++) {\n var index = (start + offset) % items.length;\n var item = items[index];\n var label = item.textValue || getSelectLabelText(item.label) || item.value;\n if (!item.disabled && label.toLocaleLowerCase().startsWith(normalizedSearch)) {\n return index;\n }\n }\n return -1;\n };\n return {\n subscribe(listener) {\n listeners.add(listener);\n return function() {\n listeners.delete(listener);\n };\n },\n registerItem,\n registerLabel,\n getItems,\n getItem,\n getIndex,\n getNodes,\n firstEnabledIndex,\n nextEnabledIndex,\n findTypeaheadIndex,\n getDisabledIndices: function() {\n return items.flatMap(function(item, index) {\n return item.disabled ? [\n index\n ] : [];\n });\n },\n getTypeaheadLabels: function() {\n return items.map(function(item) {\n return item.textValue || getSelectLabelText(item.label) || item.value;\n });\n }\n };\n}\nfunction normalizeSelectSelection(mode, value) {\n if (mode === \"single\") {\n return typeof value === \"string\" ? value : \"\";\n }\n var values = Array.isArray(value) ? value : [];\n return [\n ...new Set(values)\n ];\n}\nfunction selectedValuesFromSelection(mode, value) {\n var normalized = normalizeSelectSelection(mode, value);\n return mode === \"multiple\" ? normalized : normalized ? [\n normalized\n ] : [];\n}\nfunction createSelectSelectionController(param) {\n var { mode: initialMode, value: initialValue, registry } = param;\n var mode = initialMode;\n var value = normalizeSelectSelection(mode, initialValue);\n var activeIndex = null;\n var selectedValues = function() {\n return selectedValuesFromSelection(mode, value);\n };\n var setMode = function(nextMode) {\n if (mode === nextMode) return value;\n mode = nextMode;\n value = normalizeSelectSelection(mode, value);\n return value;\n };\n var setValue = function(nextValue) {\n value = normalizeSelectSelection(mode, nextValue);\n return value;\n };\n var isSelected = function(itemValue) {\n return selectedValues().includes(itemValue);\n };\n var toggle = function(itemValue) {\n var item = registry.getItem(itemValue);\n if (!item || item.disabled) return value;\n if (mode === \"single\") {\n value = itemValue;\n return value;\n }\n var current = selectedValues();\n value = current.includes(itemValue) ? current.filter(function(currentValue) {\n return currentValue !== itemValue;\n }) : [\n ...current,\n itemValue\n ];\n return value;\n };\n var selectionAnchor = function() {\n var values = selectedValues();\n for (var index = values.length - 1; index >= 0; index--) {\n var item = registry.getItem(values[index]);\n if (item) return item;\n }\n var firstEnabledIndex = registry.firstEnabledIndex();\n return firstEnabledIndex < 0 ? void 0 : registry.getItems()[firstEnabledIndex];\n };\n var selectionAnchorIndex = function() {\n var anchor = selectionAnchor();\n return anchor ? registry.getIndex(anchor.value) : -1;\n };\n var initialActiveIndex = function() {\n var anchorIndex = selectionAnchorIndex();\n var anchor = anchorIndex < 0 ? void 0 : registry.getItems()[anchorIndex];\n return anchor && !anchor.disabled ? anchorIndex : registry.firstEnabledIndex();\n };\n var moveActive = function(direction) {\n var nextIndex = registry.nextEnabledIndex(activeIndex, direction);\n activeIndex = nextIndex < 0 ? null : nextIndex;\n return activeIndex == null ? void 0 : registry.getItems()[activeIndex];\n };\n return {\n registry,\n get mode() {\n return mode;\n },\n get value() {\n return value;\n },\n get activeIndex() {\n return activeIndex;\n },\n get activeItem() {\n return activeIndex == null ? void 0 : registry.getItems()[activeIndex];\n },\n get shouldCloseOnSelect() {\n return mode === \"single\";\n },\n setMode,\n setValue,\n isSelected,\n toggle,\n selectionAnchor,\n selectionAnchorIndex,\n initialActiveIndex,\n setActiveIndex(index) {\n activeIndex = index;\n },\n moveActive\n };\n}\nfunction getSelectListboxProps(mode) {\n return {\n role: \"listbox\",\n \"aria-multiselectable\": mode === \"multiple\" ? true : void 0\n };\n}\nfunction getSelectOptionProps(mode, selected, disabled, platform) {\n if (platform === \"native\") {\n return {\n accessibilityRole: mode === \"multiple\" ? \"checkbox\" : \"button\",\n accessibilityState: {\n selected: mode === \"single\" ? selected : void 0,\n checked: mode === \"multiple\" ? selected : void 0,\n disabled\n }\n };\n }\n return {\n role: \"option\",\n \"aria-selected\": selected,\n \"aria-disabled\": disabled || void 0\n };\n}\nexport {\n createSelectItemRegistry,\n createSelectSelectionController,\n getSelectLabelText,\n getSelectListboxProps,\n getSelectOptionProps,\n normalizeSelectSelection,\n selectedValuesFromSelection\n};\n//# sourceMappingURL=selectionController.js.map\n"],"mappings":"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"}
@@ -23,6 +23,8 @@ const SelectValue = createStyledHOC(SelectValueFrame, function SelectValue2({ sc
23
23
  const itemParentContext = useSelectItemParentContext(scope);
24
24
  const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);
25
25
  const isEmptyValue = context.selectedValues.length === 0;
26
+ const [, rerender] = React.useReducer((version) => version + 1, 0);
27
+ useIsomorphicLayoutEffect(() => itemParentContext.registry.subscribe(rerender), [itemParentContext.registry]);
26
28
  const registeredValue = context.mode === "multiple" ? context.selectedValues.map((value, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index > 0 ? ", " : null, itemParentContext.registry.getItem(value)?.label ?? value] }, value)) : itemParentContext.registry.getItem(context.selectedValues[0])?.label ?? context.value;
27
29
  const children = childrenProp !== void 0 ? childrenProp : context.renderValue ? context.renderValue(context.value) : registeredValue;
28
30
  const selectValueChildren = isEmptyValue ? placeholder ?? children : children;
@@ -62,7 +64,7 @@ const SelectIndicator = createStyledHOC(SelectIndicatorFrame, function SelectInd
62
64
  const context = useSelectContext(scope);
63
65
  const [layout, setLayout] = React.useState(null);
64
66
  const rafRef = React.useRef(0);
65
- React.useLayoutEffect(() => {
67
+ useIsomorphicLayoutEffect(() => {
66
68
  const update = (index) => {
67
69
  if (typeof index !== "number") return;
68
70
  cancelAnimationFrame(rafRef.current);
@@ -161,12 +163,14 @@ function SelectRoot(props) {
161
163
  defaultProp: props.defaultOpen || false,
162
164
  onChange: props.onOpenChange
163
165
  });
166
+ const handleAdaptOpenChange = React.useCallback((nextOpen) => {
167
+ requestOpenChange(nextOpen, createChangeEventDetails(nextOpen ? "trigger-press" : "outside-press"));
168
+ }, [requestOpenChange]);
164
169
  return /* @__PURE__ */ jsx(AdaptParent, {
165
170
  scope: adaptScope,
171
+ adaptChildren: props.children,
166
172
  open,
167
- onOpenChange: React.useCallback((nextOpen) => {
168
- requestOpenChange(nextOpen, createChangeEventDetails(nextOpen ? "trigger-press" : "outside-press"));
169
- }, [requestOpenChange]),
173
+ onOpenChange: handleAdaptOpenChange,
170
174
  children: /* @__PURE__ */ jsx(SelectInner, {
171
175
  ...props,
172
176
  scope: props.scope,
@@ -233,28 +237,32 @@ function SelectInner(props) {
233
237
  controller.setValue(value);
234
238
  React.useEffect(() => {}, [props.id, requestOpenChange]);
235
239
  const activeIndexRef = React.useRef(null);
236
- const [activeIndex, setActiveIndexState] = React.useState(null);
237
240
  const [emitActiveIndex, activeIndexSubscribe] = useEmitter();
238
241
  const selectedIndexRef = React.useRef(null);
242
+ const lastPointerRef = React.useRef({
243
+ x: -1,
244
+ y: -1
245
+ });
239
246
  const listContentRef = React.useRef([]);
240
247
  const listRef = React.useRef([]);
241
248
  const [valueNode, setValueNode] = React.useState(null);
242
249
  const selectedIndex = Math.max(0, controller.selectionAnchorIndex());
243
250
  listContentRef.current = registry.getTypeaheadLabels();
244
- listRef.current.length = registry.getItems().length;
251
+ const itemNodes = registry.getNodes();
252
+ listRef.current.length = itemNodes.length;
253
+ for (let i = 0; i < itemNodes.length; i++) listRef.current[i] = itemNodes[i];
245
254
  useIsomorphicLayoutEffect(() => {
246
255
  selectedIndexRef.current = selectedIndex;
247
256
  });
248
257
  const shouldRenderWebNative = isWeb && (native === true || native === "web" || Array.isArray(native) && native.includes("web"));
249
- const setActiveIndexFast = React.useCallback((index, details) => {
250
- if (activeIndexRef.current !== index) {
251
- activeIndexRef.current = index;
252
- controller.setActiveIndex(index);
253
- if (typeof index === "number") {
254
- emitActiveIndex(index);
255
- const item = registry.getItems()[index];
256
- if (item && details) onActiveChange?.(item.value, details);
257
- }
258
+ const setActiveIndex = React.useCallback((index, details) => {
259
+ if (activeIndexRef.current === index) return;
260
+ activeIndexRef.current = index;
261
+ controller.setActiveIndex(index);
262
+ emitActiveIndex(index);
263
+ if (typeof index === "number") {
264
+ const item = registry.getItems()[index];
265
+ if (item && details) onActiveChange?.(item.value, details);
258
266
  }
259
267
  }, [
260
268
  controller,
@@ -262,10 +270,6 @@ function SelectInner(props) {
262
270
  onActiveChange,
263
271
  registry
264
272
  ]);
265
- const setActiveIndex = React.useCallback((index, details) => {
266
- setActiveIndexFast(index, details);
267
- setActiveIndexState(index);
268
- }, [setActiveIndexFast]);
269
273
  const activeDetails = React.useCallback((reason, index, event) => ({
270
274
  reason,
271
275
  event,
@@ -308,10 +312,7 @@ function SelectInner(props) {
308
312
  if (open) {
309
313
  const nextIndex = controller.initialActiveIndex();
310
314
  if (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails("list-navigation", nextIndex));
311
- } else {
312
- setActiveIndexFast(null);
313
- setActiveIndexState(null);
314
- }
315
+ } else setActiveIndex(null);
315
316
  }, [
316
317
  open,
317
318
  selectedIndex,
@@ -357,7 +358,9 @@ function SelectInner(props) {
357
358
  if (!details.isCanceled) controller.setValue(nextValue);
358
359
  }, [controller, requestValueChange]),
359
360
  shouldRenderWebNative,
360
- setActiveIndexFast,
361
+ setActiveIndex,
362
+ selectedIndex,
363
+ lastPointerRef,
361
364
  listRef,
362
365
  moveActive,
363
366
  search,
@@ -371,15 +374,12 @@ function SelectInner(props) {
371
374
  fallback: false,
372
375
  valueNode,
373
376
  onValueNodeChange: setValueNode,
374
- activeIndex,
375
377
  activeIndexRef,
376
378
  selectedIndex,
377
379
  setActiveIndex,
378
380
  value,
379
381
  mode,
380
382
  selectedValues,
381
- activeItem: activeIndex == null ? void 0 : registry.getItems()[activeIndex]?.value,
382
- selectionAnchor: controller.selectionAnchor()?.value,
383
383
  open,
384
384
  native,
385
385
  renderValue,
@@ -388,7 +388,6 @@ function SelectInner(props) {
388
388
  activeIndexRef,
389
389
  listContentRef,
390
390
  selectedIndexRef,
391
- setActiveIndexFast,
392
391
  ...props,
393
392
  open,
394
393
  value,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":[],"sources":["jsx/Select.js"],"sourcesContent":["import { Adapt, AdaptParent, useAdaptIsActive } from \"@tamagui/adapt\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { Text, View, createChangeEventDetails, createStyledContext, createStyledHOC, styled } from \"@tamagui/core\";\nimport { FocusScopeController } from \"@tamagui/focus-scope\";\nimport { withStaticProperties } from \"@tamagui/helpers\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport * as React from \"react\";\nimport { SelectItemParentProvider, SelectNativeComponentContext, SelectProvider, SelectZIndexContext, useSelectContext, useSelectItemParentContext } from \"./context\";\nimport { SelectContent } from \"./SelectContent\";\nimport { SelectInlineImpl } from \"./SelectImpl\";\nimport { SelectItem, useSelectItemContext } from \"./SelectItem\";\nimport { SelectItemText } from \"./SelectItemText\";\nimport { SelectScrollDownButton, SelectScrollUpButton } from \"./SelectScrollButton\";\nimport { SelectTrigger } from \"./SelectTrigger\";\nimport { SelectViewport } from \"./SelectViewport\";\nimport { createSelectItemRegistry, createSelectSelectionController, selectedValuesFromSelection } from \"./selectionController\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst SelectValueFrame = styled(Text, { displayName: \"SelectValue\" });\nconst SelectValue = createStyledHOC(SelectValueFrame, function SelectValue2({ scope, children: childrenProp, placeholder, ...props }, forwardedRef) {\n\tconst context = useSelectContext(scope);\n\tconst itemParentContext = useSelectItemParentContext(scope);\n\tconst composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n\tconst isEmptyValue = context.selectedValues.length === 0;\n\tconst registeredValue = context.mode === \"multiple\" ? context.selectedValues.map((value, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index > 0 ? \", \" : null, itemParentContext.registry.getItem(value)?.label ?? value] }, value)) : itemParentContext.registry.getItem(context.selectedValues[0])?.label ?? context.value;\n\tconst children = childrenProp !== void 0 ? childrenProp : context.renderValue ? context.renderValue(context.value) : registeredValue;\n\tconst selectValueChildren = isEmptyValue ? placeholder ?? children : children;\n\treturn /* @__PURE__ */ jsx(SelectValueFrame, {\n\t\tpointerEvents: \"none\",\n\t\tref: composedRefs,\n\t\t...props,\n\t\tchildren: selectValueChildren\n\t});\n});\nconst SelectIcon = styled(View, {\n\tdisplayName: \"SelectIcon\",\n\t\"aria-hidden\": true\n});\nconst SelectItemIndicatorFrame = styled(View, { displayName: \"SelectItemIndicator\" });\nconst SelectItemIndicator = createStyledHOC(SelectItemIndicatorFrame, function SelectItemIndicator2(props, forwardedRef) {\n\tconst { scope, ...itemIndicatorProps } = props;\n\tconst context = useSelectItemParentContext(scope);\n\tconst itemContext = useSelectItemContext(scope);\n\tif (context.shouldRenderWebNative) return null;\n\treturn itemContext.isSelected ? /* @__PURE__ */ jsx(SelectItemIndicatorFrame, {\n\t\t\"aria-hidden\": true,\n\t\t...itemIndicatorProps,\n\t\tref: forwardedRef\n\t}) : null;\n});\nconst SelectIndicatorFrame = styled(View, {\n\tdisplayName: \"SelectIndicator\",\n\tposition: \"absolute\",\n\ttop: 0,\n\tleft: 0,\n\tpointerEvents: \"none\",\n\tzIndex: 10\n});\nconst SelectIndicator = createStyledHOC(SelectIndicatorFrame, function SelectIndicator2({ scope, ...props }, forwardedRef) {\n\tconst itemContext = useSelectItemParentContext(scope);\n\tconst context = useSelectContext(scope);\n\tconst [layout, setLayout] = React.useState(null);\n\tconst rafRef = React.useRef(0);\n\tReact.useLayoutEffect(() => {\n\t\tconst update = (index) => {\n\t\t\tif (typeof index !== \"number\") return;\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\tconst node = itemContext.listRef?.current?.[index];\n\t\t\t\tif (node) setLayout({\n\t\t\t\t\twidth: Math.round(node.offsetWidth),\n\t\t\t\t\theight: Math.round(node.offsetHeight),\n\t\t\t\t\tx: Math.round(node.offsetLeft),\n\t\t\t\t\ty: Math.round(node.offsetTop)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tif (context.open && context.activeIndexRef.current !== null) update(context.activeIndexRef.current);\n\t\treturn itemContext.activeIndexSubscribe(update);\n\t}, [context.open, itemContext.listRef]);\n\tif (!layout) return null;\n\treturn /* @__PURE__ */ jsx(SelectIndicatorFrame, {\n\t\tref: forwardedRef,\n\t\t...props,\n\t\twidth: layout.width,\n\t\theight: layout.height,\n\t\tx: layout.x,\n\t\ty: layout.y\n\t});\n});\nconst GROUP_NAME = \"SelectGroup\";\nconst { Provider: SelectGroupContextProvider, useStyledContext: useSelectGroupContext } = createStyledContext({ id: \"\" }, \"SelectGroup\");\nconst SelectGroupFrame = styled(View, { displayName: GROUP_NAME });\nconst NativeSelect = styled(Text, {\n\tdisplayName: \"NativeSelect\",\n\trender: \"select\"\n});\nconst SelectGroup = createStyledHOC(SelectGroupFrame, (props, forwardedRef) => {\n\tconst { scope, ...groupProps } = props;\n\tconst groupId = React.useId();\n\tconst context = useSelectContext(scope);\n\tconst itemParentContext = useSelectItemParentContext(scope);\n\tconst StyledNativeSelect = React.useContext(SelectNativeComponentContext);\n\tconst nativeSelectRef = React.useRef(null);\n\tconst content = (() => {\n\t\tif (itemParentContext.shouldRenderWebNative) return /* @__PURE__ */ jsx(NativeSelect, {\n\t\t\t...StyledNativeSelect && {\n\t\t\t\trender: StyledNativeSelect,\n\t\t\t\tsize: itemParentContext.size,\n\t\t\t\tstyle: { appearance: \"none\" }\n\t\t\t},\n\t\t\t...groupProps,\n\t\t\tvalue: context.value,\n\t\t\tmultiple: context.mode === \"multiple\",\n\t\t\tname: itemParentContext.name,\n\t\t\tform: itemParentContext.form,\n\t\t\tid: itemParentContext.id,\n\t\t\tonChange: ((event) => {\n\t\t\t\tconst value = context.mode === \"multiple\" ? Array.from(event.currentTarget.selectedOptions, (option) => option.value) : event.currentTarget.value;\n\t\t\t\titemParentContext.changeNativeValue(value, event.nativeEvent);\n\t\t\t}),\n\t\t\tref: nativeSelectRef,\n\t\t\tchildren: props.children\n\t\t});\n\t\treturn /* @__PURE__ */ jsx(SelectGroupFrame, {\n\t\t\trole: \"group\",\n\t\t\t\"aria-labelledby\": groupId,\n\t\t\t...groupProps,\n\t\t\tref: forwardedRef\n\t\t});\n\t})();\n\treturn /* @__PURE__ */ jsx(SelectGroupContextProvider, {\n\t\tscope,\n\t\tid: groupId || \"\",\n\t\tchildren: content\n\t});\n});\nSelectGroup.displayName = GROUP_NAME;\nconst SelectLabelFrame = styled(Text, { displayName: \"SelectLabel\" });\nconst SelectLabel = createStyledHOC(SelectLabelFrame, (props, forwardedRef) => {\n\tconst { scope, ...labelProps } = props;\n\tconst context = useSelectItemParentContext(scope);\n\tconst groupContext = useSelectGroupContext(scope);\n\tif (context.shouldRenderWebNative) return null;\n\treturn /* @__PURE__ */ jsx(SelectLabelFrame, {\n\t\trender: \"div\",\n\t\tid: groupContext.id,\n\t\t...labelProps,\n\t\tref: forwardedRef\n\t});\n});\nconst SelectSeparator = styled(View, { displayName: \"SelectSeparator\" });\nconst SelectSheetImpl = (props) => {\n\treturn /* @__PURE__ */ jsx(Fragment, { children: props.children });\n};\nfunction SelectRoot(props) {\n\tconst adaptScope = `AdaptSelect${props.scope || \"\"}`;\n\tconst [open, requestOpenChange] = useControllableState({\n\t\tprop: props.open,\n\t\tdefaultProp: props.defaultOpen || false,\n\t\tonChange: props.onOpenChange\n\t});\n\treturn /* @__PURE__ */ jsx(AdaptParent, {\n\t\tscope: adaptScope,\n\t\topen,\n\t\tonOpenChange: React.useCallback((nextOpen) => {\n\t\t\trequestOpenChange(nextOpen, createChangeEventDetails(nextOpen ? \"trigger-press\" : \"outside-press\"));\n\t\t}, [requestOpenChange]),\n\t\tchildren: /* @__PURE__ */ jsx(SelectInner, {\n\t\t\t...props,\n\t\t\tscope: props.scope,\n\t\t\tadaptScope,\n\t\t\topen,\n\t\t\trequestOpenChange\n\t\t})\n\t});\n}\nconst Select = withStaticProperties(SelectRoot, {\n\tRoot: SelectRoot,\n\tAdapt,\n\tContent: SelectContent,\n\tGroup: SelectGroup,\n\tIcon: SelectIcon,\n\tItem: SelectItem,\n\tItemIndicator: SelectItemIndicator,\n\tItemText: SelectItemText,\n\tLabel: SelectLabel,\n\tScrollDownButton: SelectScrollDownButton,\n\tScrollUpButton: SelectScrollUpButton,\n\tSeparator: SelectSeparator,\n\tTrigger: SelectTrigger,\n\tValue: SelectValue,\n\tViewport: SelectViewport,\n\tIndicator: SelectIndicator,\n\tFocusScope: FocusScopeController\n});\nfunction useEmitter() {\n\tconst listenersRef = React.useRef(/* @__PURE__ */ new Set());\n\treturn [React.useCallback((value) => {\n\t\tlistenersRef.current.forEach((l) => l(value));\n\t}, []), React.useCallback((listener) => {\n\t\tlistenersRef.current.add(listener);\n\t\treturn () => {\n\t\t\tlistenersRef.current.delete(listener);\n\t\t};\n\t}, [])];\n}\nfunction SelectInner(props) {\n\tconst { scope = \"\", adaptScope, native, children, open, requestOpenChange, defaultOpen: _defaultOpen, onOpenChange: _onOpenChange, value: valueProp, defaultValue, onValueChange, multiple = false, name, form, disablePreventBodyScroll, size: sizeProp = true, onActiveChange, dir, id, renderValue, lazyMount, zIndex } = props;\n\tconst SelectImpl = useAdaptIsActive(adaptScope) ? SelectSheetImpl : SelectInlineImpl;\n\tconst mode = multiple ? \"multiple\" : \"single\";\n\tconst [valueState, requestValueChange] = useControllableState({\n\t\tprop: valueProp,\n\t\tdefaultProp: defaultValue ?? (mode === \"multiple\" ? [] : \"\"),\n\t\tonChange: onValueChange,\n\t\ttransition: true\n\t});\n\tconst value = React.useMemo(() => mode === \"multiple\" ? selectedValuesFromSelection(mode, valueState) : typeof valueState === \"string\" ? valueState : \"\", [mode, valueState]);\n\tconst selectedValues = React.useMemo(() => selectedValuesFromSelection(mode, value), [mode, value]);\n\tconst [, rerenderRegistry] = React.useReducer((version) => version + 1, 0);\n\tconst registryRef = React.useRef(null);\n\tif (!registryRef.current) registryRef.current = createSelectItemRegistry(rerenderRegistry);\n\tconst registry = registryRef.current;\n\tconst controllerRef = React.useRef(null);\n\tif (!controllerRef.current) controllerRef.current = createSelectSelectionController({\n\t\tmode,\n\t\tvalue,\n\t\tregistry\n\t});\n\tconst controller = controllerRef.current;\n\tcontroller.setMode(mode);\n\tcontroller.setValue(value);\n\tReact.useEffect(() => {}, [props.id, requestOpenChange]);\n\tconst activeIndexRef = React.useRef(null);\n\tconst [activeIndex, setActiveIndexState] = React.useState(null);\n\tconst [emitActiveIndex, activeIndexSubscribe] = useEmitter();\n\tconst selectedIndexRef = React.useRef(null);\n\tconst listContentRef = React.useRef([]);\n\tconst listRef = React.useRef([]);\n\tconst [valueNode, setValueNode] = React.useState(null);\n\tconst selectedIndex = Math.max(0, controller.selectionAnchorIndex());\n\tlistContentRef.current = registry.getTypeaheadLabels();\n\tlistRef.current.length = registry.getItems().length;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tselectedIndexRef.current = selectedIndex;\n\t});\n\tconst shouldRenderWebNative = isWeb && (native === true || native === \"web\" || Array.isArray(native) && native.includes(\"web\"));\n\tconst setActiveIndexFast = React.useCallback((index, details) => {\n\t\tif (activeIndexRef.current !== index) {\n\t\t\tactiveIndexRef.current = index;\n\t\t\tcontroller.setActiveIndex(index);\n\t\t\tif (typeof index === \"number\") {\n\t\t\t\temitActiveIndex(index);\n\t\t\t\tconst item = registry.getItems()[index];\n\t\t\t\tif (item && details) onActiveChange?.(item.value, details);\n\t\t\t}\n\t\t}\n\t}, [\n\t\tcontroller,\n\t\temitActiveIndex,\n\t\tonActiveChange,\n\t\tregistry\n\t]);\n\tconst setActiveIndex = React.useCallback((index, details) => {\n\t\tsetActiveIndexFast(index, details);\n\t\tsetActiveIndexState(index);\n\t}, [setActiveIndexFast]);\n\tconst activeDetails = React.useCallback((reason, index, event) => ({\n\t\treason,\n\t\tevent,\n\t\ttrigger: void 0,\n\t\tindex\n\t}), []);\n\tconst moveActive = React.useCallback((direction, event) => {\n\t\tconst nextIndex = registry.nextEnabledIndex(activeIndexRef.current, direction);\n\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"keyboard\", nextIndex, event));\n\t}, [\n\t\tactiveDetails,\n\t\tregistry,\n\t\tsetActiveIndex\n\t]);\n\tconst typeaheadRef = React.useRef({\n\t\ttext: \"\",\n\t\ttimeout: null\n\t});\n\tconst search = React.useCallback((text, event) => {\n\t\tclearTimeout(typeaheadRef.current.timeout);\n\t\ttypeaheadRef.current.text += text;\n\t\tlet nextIndex = registry.findTypeaheadIndex(typeaheadRef.current.text, activeIndexRef.current);\n\t\tif (nextIndex < 0 && typeaheadRef.current.text.length > 1) {\n\t\t\ttypeaheadRef.current.text = text;\n\t\t\tnextIndex = registry.findTypeaheadIndex(text, activeIndexRef.current);\n\t\t}\n\t\ttypeaheadRef.current.timeout = setTimeout(() => {\n\t\t\ttypeaheadRef.current.text = \"\";\n\t\t}, 750);\n\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"keyboard\", nextIndex, event));\n\t}, [\n\t\tactiveDetails,\n\t\tregistry,\n\t\tsetActiveIndex\n\t]);\n\tReact.useEffect(() => {\n\t\treturn () => clearTimeout(typeaheadRef.current.timeout);\n\t}, []);\n\tReact.useEffect(() => {\n\t\tif (open) {\n\t\t\tconst nextIndex = controller.initialActiveIndex();\n\t\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"list-navigation\", nextIndex));\n\t\t} else {\n\t\t\tsetActiveIndexFast(null);\n\t\t\tsetActiveIndexState(null);\n\t\t}\n\t}, [\n\t\topen,\n\t\tselectedIndex,\n\t\tregistry.getItems().length\n\t]);\n\tconst content = /* @__PURE__ */ jsxs(SelectItemParentProvider, {\n\t\tscopeName: scope,\n\t\tscope,\n\t\tadaptScope,\n\t\tmode,\n\t\tselectedValues,\n\t\tregistry,\n\t\tsize: sizeProp,\n\t\tactiveIndexSubscribe,\n\t\tactiveIndexRef,\n\t\trequestOpenChange,\n\t\tid,\n\t\tname,\n\t\tform,\n\t\tselectValue: React.useCallback((nextItemValue, details) => {\n\t\t\tconst item = registry.getItem(nextItemValue);\n\t\t\tif (!item || item.disabled) return;\n\t\t\tcontroller.setMode(mode);\n\t\t\tcontroller.setValue(value);\n\t\t\tconst previousValue = controller.value;\n\t\t\trequestValueChange(controller.toggle(nextItemValue), details);\n\t\t\tif (details.isCanceled) {\n\t\t\t\tcontroller.setValue(previousValue);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (controller.shouldCloseOnSelect) requestOpenChange(false, createChangeEventDetails(details.reason === \"keyboard\" ? \"keyboard\" : \"item-press\", details.event, details.trigger));\n\t\t}, [\n\t\t\tcontroller,\n\t\t\tmode,\n\t\t\tregistry,\n\t\t\trequestOpenChange,\n\t\t\trequestValueChange,\n\t\t\tvalue\n\t\t]),\n\t\tchangeNativeValue: React.useCallback((nextValue, event) => {\n\t\t\tconst details = createChangeEventDetails(\"native-change\", event);\n\t\t\trequestValueChange(nextValue, details);\n\t\t\tif (!details.isCanceled) controller.setValue(nextValue);\n\t\t}, [controller, requestValueChange]),\n\t\tshouldRenderWebNative,\n\t\tsetActiveIndexFast,\n\t\tlistRef,\n\t\tmoveActive,\n\t\tsearch,\n\t\tchildren: [/* @__PURE__ */ jsx(SelectProvider, {\n\t\t\tscope,\n\t\t\tscopeName: scope,\n\t\t\tadaptScope,\n\t\t\tdisablePreventBodyScroll,\n\t\t\tdir,\n\t\t\tblockSelection: false,\n\t\t\tfallback: false,\n\t\t\tvalueNode,\n\t\t\tonValueNodeChange: setValueNode,\n\t\t\tactiveIndex,\n\t\t\tactiveIndexRef,\n\t\t\tselectedIndex,\n\t\t\tsetActiveIndex,\n\t\t\tvalue,\n\t\t\tmode,\n\t\t\tselectedValues,\n\t\t\tactiveItem: activeIndex == null ? void 0 : registry.getItems()[activeIndex]?.value,\n\t\t\tselectionAnchor: controller.selectionAnchor()?.value,\n\t\t\topen,\n\t\t\tnative,\n\t\t\trenderValue,\n\t\t\tlazyMount,\n\t\t\tchildren: shouldRenderWebNative ? children : /* @__PURE__ */ jsx(SelectImpl, {\n\t\t\t\tactiveIndexRef,\n\t\t\t\tlistContentRef,\n\t\t\t\tselectedIndexRef,\n\t\t\t\tsetActiveIndexFast,\n\t\t\t\t...props,\n\t\t\t\topen,\n\t\t\t\tvalue,\n\t\t\t\tchildren\n\t\t\t})\n\t\t}), isWeb && !shouldRenderWebNative && name ? (mode === \"multiple\" ? selectedValues : [value]).map((inputValue) => /* @__PURE__ */ jsx(\"input\", {\n\t\t\ttype: \"hidden\",\n\t\t\tname,\n\t\t\tform,\n\t\t\tvalue: inputValue\n\t\t}, inputValue)) : null]\n\t});\n\tif (zIndex !== void 0) return /* @__PURE__ */ jsx(SelectZIndexContext.Provider, {\n\t\tvalue: zIndex,\n\t\tchildren: content\n\t});\n\treturn content;\n}\n\nexport { Select, SelectGroup, SelectGroupFrame, SelectIcon, SelectIndicator, SelectIndicatorFrame, SelectItemIndicator, SelectItemIndicatorFrame, SelectLabel, SelectLabelFrame, SelectRoot, SelectSeparator, SelectValue, SelectValueFrame };"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":[],"sources":["jsx/Select.js"],"sourcesContent":["import { Adapt, AdaptParent, useAdaptIsActive } from \"@tamagui/adapt\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { Text, View, createChangeEventDetails, createStyledContext, createStyledHOC, styled } from \"@tamagui/core\";\nimport { FocusScopeController } from \"@tamagui/focus-scope\";\nimport { withStaticProperties } from \"@tamagui/helpers\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport * as React from \"react\";\nimport { SelectItemParentProvider, SelectNativeComponentContext, SelectProvider, SelectZIndexContext, useSelectContext, useSelectItemParentContext } from \"./context\";\nimport { SelectContent } from \"./SelectContent\";\nimport { SelectInlineImpl } from \"./SelectImpl\";\nimport { SelectItem, useSelectItemContext } from \"./SelectItem\";\nimport { SelectItemText } from \"./SelectItemText\";\nimport { SelectScrollDownButton, SelectScrollUpButton } from \"./SelectScrollButton\";\nimport { SelectTrigger } from \"./SelectTrigger\";\nimport { SelectViewport } from \"./SelectViewport\";\nimport { createSelectItemRegistry, createSelectSelectionController, selectedValuesFromSelection } from \"./selectionController\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst SelectValueFrame = styled(Text, { displayName: \"SelectValue\" });\nconst SelectValue = createStyledHOC(SelectValueFrame, function SelectValue2({ scope, children: childrenProp, placeholder, ...props }, forwardedRef) {\n\tconst context = useSelectContext(scope);\n\tconst itemParentContext = useSelectItemParentContext(scope);\n\tconst composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n\tconst isEmptyValue = context.selectedValues.length === 0;\n\tconst [, rerender] = React.useReducer((version) => version + 1, 0);\n\tuseIsomorphicLayoutEffect(() => itemParentContext.registry.subscribe(rerender), [itemParentContext.registry]);\n\tconst registeredValue = context.mode === \"multiple\" ? context.selectedValues.map((value, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index > 0 ? \", \" : null, itemParentContext.registry.getItem(value)?.label ?? value] }, value)) : itemParentContext.registry.getItem(context.selectedValues[0])?.label ?? context.value;\n\tconst children = childrenProp !== void 0 ? childrenProp : context.renderValue ? context.renderValue(context.value) : registeredValue;\n\tconst selectValueChildren = isEmptyValue ? placeholder ?? children : children;\n\treturn /* @__PURE__ */ jsx(SelectValueFrame, {\n\t\tpointerEvents: \"none\",\n\t\tref: composedRefs,\n\t\t...props,\n\t\tchildren: selectValueChildren\n\t});\n});\nconst SelectIcon = styled(View, {\n\tdisplayName: \"SelectIcon\",\n\t\"aria-hidden\": true\n});\nconst SelectItemIndicatorFrame = styled(View, { displayName: \"SelectItemIndicator\" });\nconst SelectItemIndicator = createStyledHOC(SelectItemIndicatorFrame, function SelectItemIndicator2(props, forwardedRef) {\n\tconst { scope, ...itemIndicatorProps } = props;\n\tconst context = useSelectItemParentContext(scope);\n\tconst itemContext = useSelectItemContext(scope);\n\tif (context.shouldRenderWebNative) return null;\n\treturn itemContext.isSelected ? /* @__PURE__ */ jsx(SelectItemIndicatorFrame, {\n\t\t\"aria-hidden\": true,\n\t\t...itemIndicatorProps,\n\t\tref: forwardedRef\n\t}) : null;\n});\nconst SelectIndicatorFrame = styled(View, {\n\tdisplayName: \"SelectIndicator\",\n\tposition: \"absolute\",\n\ttop: 0,\n\tleft: 0,\n\tpointerEvents: \"none\",\n\tzIndex: 10\n});\nconst SelectIndicator = createStyledHOC(SelectIndicatorFrame, function SelectIndicator2({ scope, ...props }, forwardedRef) {\n\tconst itemContext = useSelectItemParentContext(scope);\n\tconst context = useSelectContext(scope);\n\tconst [layout, setLayout] = React.useState(null);\n\tconst rafRef = React.useRef(0);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst update = (index) => {\n\t\t\tif (typeof index !== \"number\") return;\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\tconst node = itemContext.listRef?.current?.[index];\n\t\t\t\tif (node) setLayout({\n\t\t\t\t\twidth: Math.round(node.offsetWidth),\n\t\t\t\t\theight: Math.round(node.offsetHeight),\n\t\t\t\t\tx: Math.round(node.offsetLeft),\n\t\t\t\t\ty: Math.round(node.offsetTop)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tif (context.open && context.activeIndexRef.current !== null) update(context.activeIndexRef.current);\n\t\treturn itemContext.activeIndexSubscribe(update);\n\t}, [context.open, itemContext.listRef]);\n\tif (!layout) return null;\n\treturn /* @__PURE__ */ jsx(SelectIndicatorFrame, {\n\t\tref: forwardedRef,\n\t\t...props,\n\t\twidth: layout.width,\n\t\theight: layout.height,\n\t\tx: layout.x,\n\t\ty: layout.y\n\t});\n});\nconst GROUP_NAME = \"SelectGroup\";\nconst { Provider: SelectGroupContextProvider, useStyledContext: useSelectGroupContext } = createStyledContext({ id: \"\" }, \"SelectGroup\");\nconst SelectGroupFrame = styled(View, { displayName: GROUP_NAME });\nconst NativeSelect = styled(Text, {\n\tdisplayName: \"NativeSelect\",\n\trender: \"select\"\n});\nconst SelectGroup = createStyledHOC(SelectGroupFrame, (props, forwardedRef) => {\n\tconst { scope, ...groupProps } = props;\n\tconst groupId = React.useId();\n\tconst context = useSelectContext(scope);\n\tconst itemParentContext = useSelectItemParentContext(scope);\n\tconst StyledNativeSelect = React.useContext(SelectNativeComponentContext);\n\tconst nativeSelectRef = React.useRef(null);\n\tconst content = (() => {\n\t\tif (itemParentContext.shouldRenderWebNative) return /* @__PURE__ */ jsx(NativeSelect, {\n\t\t\t...StyledNativeSelect && {\n\t\t\t\trender: StyledNativeSelect,\n\t\t\t\tsize: itemParentContext.size,\n\t\t\t\tstyle: { appearance: \"none\" }\n\t\t\t},\n\t\t\t...groupProps,\n\t\t\tvalue: context.value,\n\t\t\tmultiple: context.mode === \"multiple\",\n\t\t\tname: itemParentContext.name,\n\t\t\tform: itemParentContext.form,\n\t\t\tid: itemParentContext.id,\n\t\t\tonChange: ((event) => {\n\t\t\t\tconst value = context.mode === \"multiple\" ? Array.from(event.currentTarget.selectedOptions, (option) => option.value) : event.currentTarget.value;\n\t\t\t\titemParentContext.changeNativeValue(value, event.nativeEvent);\n\t\t\t}),\n\t\t\tref: nativeSelectRef,\n\t\t\tchildren: props.children\n\t\t});\n\t\treturn /* @__PURE__ */ jsx(SelectGroupFrame, {\n\t\t\trole: \"group\",\n\t\t\t\"aria-labelledby\": groupId,\n\t\t\t...groupProps,\n\t\t\tref: forwardedRef\n\t\t});\n\t})();\n\treturn /* @__PURE__ */ jsx(SelectGroupContextProvider, {\n\t\tscope,\n\t\tid: groupId || \"\",\n\t\tchildren: content\n\t});\n});\nSelectGroup.displayName = GROUP_NAME;\nconst SelectLabelFrame = styled(Text, { displayName: \"SelectLabel\" });\nconst SelectLabel = createStyledHOC(SelectLabelFrame, (props, forwardedRef) => {\n\tconst { scope, ...labelProps } = props;\n\tconst context = useSelectItemParentContext(scope);\n\tconst groupContext = useSelectGroupContext(scope);\n\tif (context.shouldRenderWebNative) return null;\n\treturn /* @__PURE__ */ jsx(SelectLabelFrame, {\n\t\trender: \"div\",\n\t\tid: groupContext.id,\n\t\t...labelProps,\n\t\tref: forwardedRef\n\t});\n});\nconst SelectSeparator = styled(View, { displayName: \"SelectSeparator\" });\nconst SelectSheetImpl = (props) => {\n\treturn /* @__PURE__ */ jsx(Fragment, { children: props.children });\n};\nfunction SelectRoot(props) {\n\tconst adaptScope = `AdaptSelect${props.scope || \"\"}`;\n\tconst [open, requestOpenChange] = useControllableState({\n\t\tprop: props.open,\n\t\tdefaultProp: props.defaultOpen || false,\n\t\tonChange: props.onOpenChange\n\t});\n\tconst handleAdaptOpenChange = React.useCallback((nextOpen) => {\n\t\trequestOpenChange(nextOpen, createChangeEventDetails(nextOpen ? \"trigger-press\" : \"outside-press\"));\n\t}, [requestOpenChange]);\n\treturn /* @__PURE__ */ jsx(AdaptParent, {\n\t\tscope: adaptScope,\n\t\tadaptChildren: props.children,\n\t\topen,\n\t\tonOpenChange: handleAdaptOpenChange,\n\t\tchildren: /* @__PURE__ */ jsx(SelectInner, {\n\t\t\t...props,\n\t\t\tscope: props.scope,\n\t\t\tadaptScope,\n\t\t\topen,\n\t\t\trequestOpenChange\n\t\t})\n\t});\n}\nconst Select = withStaticProperties(SelectRoot, {\n\tRoot: SelectRoot,\n\tAdapt,\n\tContent: SelectContent,\n\tGroup: SelectGroup,\n\tIcon: SelectIcon,\n\tItem: SelectItem,\n\tItemIndicator: SelectItemIndicator,\n\tItemText: SelectItemText,\n\tLabel: SelectLabel,\n\tScrollDownButton: SelectScrollDownButton,\n\tScrollUpButton: SelectScrollUpButton,\n\tSeparator: SelectSeparator,\n\tTrigger: SelectTrigger,\n\tValue: SelectValue,\n\tViewport: SelectViewport,\n\tIndicator: SelectIndicator,\n\tFocusScope: FocusScopeController\n});\nfunction useEmitter() {\n\tconst listenersRef = React.useRef(/* @__PURE__ */ new Set());\n\treturn [React.useCallback((value) => {\n\t\tlistenersRef.current.forEach((l) => l(value));\n\t}, []), React.useCallback((listener) => {\n\t\tlistenersRef.current.add(listener);\n\t\treturn () => {\n\t\t\tlistenersRef.current.delete(listener);\n\t\t};\n\t}, [])];\n}\nfunction SelectInner(props) {\n\tconst { scope = \"\", adaptScope, native, children, open, requestOpenChange, defaultOpen: _defaultOpen, onOpenChange: _onOpenChange, value: valueProp, defaultValue, onValueChange, multiple = false, name, form, disablePreventBodyScroll, size: sizeProp = true, onActiveChange, dir, id, renderValue, lazyMount, zIndex } = props;\n\tconst SelectImpl = useAdaptIsActive(adaptScope) ? SelectSheetImpl : SelectInlineImpl;\n\tconst mode = multiple ? \"multiple\" : \"single\";\n\tconst [valueState, requestValueChange] = useControllableState({\n\t\tprop: valueProp,\n\t\tdefaultProp: defaultValue ?? (mode === \"multiple\" ? [] : \"\"),\n\t\tonChange: onValueChange,\n\t\ttransition: true\n\t});\n\tconst value = React.useMemo(() => mode === \"multiple\" ? selectedValuesFromSelection(mode, valueState) : typeof valueState === \"string\" ? valueState : \"\", [mode, valueState]);\n\tconst selectedValues = React.useMemo(() => selectedValuesFromSelection(mode, value), [mode, value]);\n\tconst [, rerenderRegistry] = React.useReducer((version) => version + 1, 0);\n\tconst registryRef = React.useRef(null);\n\tif (!registryRef.current) registryRef.current = createSelectItemRegistry(rerenderRegistry);\n\tconst registry = registryRef.current;\n\tconst controllerRef = React.useRef(null);\n\tif (!controllerRef.current) controllerRef.current = createSelectSelectionController({\n\t\tmode,\n\t\tvalue,\n\t\tregistry\n\t});\n\tconst controller = controllerRef.current;\n\tcontroller.setMode(mode);\n\tcontroller.setValue(value);\n\tReact.useEffect(() => {}, [props.id, requestOpenChange]);\n\tconst activeIndexRef = React.useRef(null);\n\tconst [emitActiveIndex, activeIndexSubscribe] = useEmitter();\n\tconst selectedIndexRef = React.useRef(null);\n\tconst lastPointerRef = React.useRef({\n\t\tx: -1,\n\t\ty: -1\n\t});\n\tconst listContentRef = React.useRef([]);\n\tconst listRef = React.useRef([]);\n\tconst [valueNode, setValueNode] = React.useState(null);\n\tconst selectedIndex = Math.max(0, controller.selectionAnchorIndex());\n\tlistContentRef.current = registry.getTypeaheadLabels();\n\tconst itemNodes = registry.getNodes();\n\tlistRef.current.length = itemNodes.length;\n\tfor (let i = 0; i < itemNodes.length; i++) listRef.current[i] = itemNodes[i];\n\tuseIsomorphicLayoutEffect(() => {\n\t\tselectedIndexRef.current = selectedIndex;\n\t});\n\tconst shouldRenderWebNative = isWeb && (native === true || native === \"web\" || Array.isArray(native) && native.includes(\"web\"));\n\tconst setActiveIndex = React.useCallback((index, details) => {\n\t\tif (activeIndexRef.current === index) return;\n\t\tactiveIndexRef.current = index;\n\t\tcontroller.setActiveIndex(index);\n\t\temitActiveIndex(index);\n\t\tif (typeof index === \"number\") {\n\t\t\tconst item = registry.getItems()[index];\n\t\t\tif (item && details) onActiveChange?.(item.value, details);\n\t\t}\n\t}, [\n\t\tcontroller,\n\t\temitActiveIndex,\n\t\tonActiveChange,\n\t\tregistry\n\t]);\n\tconst activeDetails = React.useCallback((reason, index, event) => ({\n\t\treason,\n\t\tevent,\n\t\ttrigger: void 0,\n\t\tindex\n\t}), []);\n\tconst moveActive = React.useCallback((direction, event) => {\n\t\tconst nextIndex = registry.nextEnabledIndex(activeIndexRef.current, direction);\n\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"keyboard\", nextIndex, event));\n\t}, [\n\t\tactiveDetails,\n\t\tregistry,\n\t\tsetActiveIndex\n\t]);\n\tconst typeaheadRef = React.useRef({\n\t\ttext: \"\",\n\t\ttimeout: null\n\t});\n\tconst search = React.useCallback((text, event) => {\n\t\tclearTimeout(typeaheadRef.current.timeout);\n\t\ttypeaheadRef.current.text += text;\n\t\tlet nextIndex = registry.findTypeaheadIndex(typeaheadRef.current.text, activeIndexRef.current);\n\t\tif (nextIndex < 0 && typeaheadRef.current.text.length > 1) {\n\t\t\ttypeaheadRef.current.text = text;\n\t\t\tnextIndex = registry.findTypeaheadIndex(text, activeIndexRef.current);\n\t\t}\n\t\ttypeaheadRef.current.timeout = setTimeout(() => {\n\t\t\ttypeaheadRef.current.text = \"\";\n\t\t}, 750);\n\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"keyboard\", nextIndex, event));\n\t}, [\n\t\tactiveDetails,\n\t\tregistry,\n\t\tsetActiveIndex\n\t]);\n\tReact.useEffect(() => {\n\t\treturn () => clearTimeout(typeaheadRef.current.timeout);\n\t}, []);\n\tReact.useEffect(() => {\n\t\tif (open) {\n\t\t\tconst nextIndex = controller.initialActiveIndex();\n\t\t\tif (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails(\"list-navigation\", nextIndex));\n\t\t} else setActiveIndex(null);\n\t}, [\n\t\topen,\n\t\tselectedIndex,\n\t\tregistry.getItems().length\n\t]);\n\tconst content = /* @__PURE__ */ jsxs(SelectItemParentProvider, {\n\t\tscopeName: scope,\n\t\tscope,\n\t\tadaptScope,\n\t\tmode,\n\t\tselectedValues,\n\t\tregistry,\n\t\tsize: sizeProp,\n\t\tactiveIndexSubscribe,\n\t\tactiveIndexRef,\n\t\trequestOpenChange,\n\t\tid,\n\t\tname,\n\t\tform,\n\t\tselectValue: React.useCallback((nextItemValue, details) => {\n\t\t\tconst item = registry.getItem(nextItemValue);\n\t\t\tif (!item || item.disabled) return;\n\t\t\tcontroller.setMode(mode);\n\t\t\tcontroller.setValue(value);\n\t\t\tconst previousValue = controller.value;\n\t\t\trequestValueChange(controller.toggle(nextItemValue), details);\n\t\t\tif (details.isCanceled) {\n\t\t\t\tcontroller.setValue(previousValue);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (controller.shouldCloseOnSelect) requestOpenChange(false, createChangeEventDetails(details.reason === \"keyboard\" ? \"keyboard\" : \"item-press\", details.event, details.trigger));\n\t\t}, [\n\t\t\tcontroller,\n\t\t\tmode,\n\t\t\tregistry,\n\t\t\trequestOpenChange,\n\t\t\trequestValueChange,\n\t\t\tvalue\n\t\t]),\n\t\tchangeNativeValue: React.useCallback((nextValue, event) => {\n\t\t\tconst details = createChangeEventDetails(\"native-change\", event);\n\t\t\trequestValueChange(nextValue, details);\n\t\t\tif (!details.isCanceled) controller.setValue(nextValue);\n\t\t}, [controller, requestValueChange]),\n\t\tshouldRenderWebNative,\n\t\tsetActiveIndex,\n\t\tselectedIndex,\n\t\tlastPointerRef,\n\t\tlistRef,\n\t\tmoveActive,\n\t\tsearch,\n\t\tchildren: [/* @__PURE__ */ jsx(SelectProvider, {\n\t\t\tscope,\n\t\t\tscopeName: scope,\n\t\t\tadaptScope,\n\t\t\tdisablePreventBodyScroll,\n\t\t\tdir,\n\t\t\tblockSelection: false,\n\t\t\tfallback: false,\n\t\t\tvalueNode,\n\t\t\tonValueNodeChange: setValueNode,\n\t\t\tactiveIndexRef,\n\t\t\tselectedIndex,\n\t\t\tsetActiveIndex,\n\t\t\tvalue,\n\t\t\tmode,\n\t\t\tselectedValues,\n\t\t\topen,\n\t\t\tnative,\n\t\t\trenderValue,\n\t\t\tlazyMount,\n\t\t\tchildren: shouldRenderWebNative ? children : /* @__PURE__ */ jsx(SelectImpl, {\n\t\t\t\tactiveIndexRef,\n\t\t\t\tlistContentRef,\n\t\t\t\tselectedIndexRef,\n\t\t\t\t...props,\n\t\t\t\topen,\n\t\t\t\tvalue,\n\t\t\t\tchildren\n\t\t\t})\n\t\t}), isWeb && !shouldRenderWebNative && name ? (mode === \"multiple\" ? selectedValues : [value]).map((inputValue) => /* @__PURE__ */ jsx(\"input\", {\n\t\t\ttype: \"hidden\",\n\t\t\tname,\n\t\t\tform,\n\t\t\tvalue: inputValue\n\t\t}, inputValue)) : null]\n\t});\n\tif (zIndex !== void 0) return /* @__PURE__ */ jsx(SelectZIndexContext.Provider, {\n\t\tvalue: zIndex,\n\t\tchildren: content\n\t});\n\treturn content;\n}\n\nexport { Select, SelectGroup, SelectGroupFrame, SelectIcon, SelectIndicator, SelectIndicatorFrame, SelectItemIndicator, SelectItemIndicatorFrame, SelectLabel, SelectLabelFrame, SelectRoot, SelectSeparator, SelectValue, SelectValueFrame };"],"mappings":"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"}
@@ -71,6 +71,12 @@ var SelectValue = (0, import_core.createStyledHOC)(SelectValueFrame, function Se
71
71
  var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
72
72
  var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, context.onValueNodeChange);
73
73
  var isEmptyValue = context.selectedValues.length === 0;
74
+ var [, rerender] = React.useReducer(function(version) {
75
+ return version + 1;
76
+ }, 0);
77
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
78
+ return itemParentContext.registry.subscribe(rerender);
79
+ }, [itemParentContext.registry]);
74
80
  var _itemParentContext_registry_getItem_label;
75
81
  var registeredValue = context.mode === "multiple" ? context.selectedValues.map(function(value, index) {
76
82
  var _itemParentContext_registry_getItem2;
@@ -116,7 +122,7 @@ var SelectIndicator = (0, import_core.createStyledHOC)(SelectIndicatorFrame, fun
116
122
  var context = (0, import_context.useSelectContext)(scope);
117
123
  var [layout, setLayout] = React.useState(null);
118
124
  var rafRef = React.useRef(0);
119
- React.useLayoutEffect(function() {
125
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
120
126
  var update = function(index) {
121
127
  if (typeof index !== "number") return;
122
128
  cancelAnimationFrame(rafRef.current);
@@ -223,6 +229,7 @@ function SelectRoot(props) {
223
229
  }, [requestOpenChange]);
224
230
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptParent, {
225
231
  scope: adaptScope,
232
+ adaptChildren: props.children,
226
233
  open,
227
234
  onOpenChange: handleAdaptOpenChange,
228
235
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectInner, {
@@ -267,7 +274,6 @@ function useEmitter() {
267
274
  }, [])];
268
275
  }
269
276
  function SelectInner(props) {
270
- var _registry_getItems_activeIndex, _controller_selectionAnchor;
271
277
  var { scope = "", adaptScope, native, children, open, requestOpenChange, defaultOpen: _defaultOpen, onOpenChange: _onOpenChange, value: valueProp, defaultValue, onValueChange, multiple = false, name, form, disablePreventBodyScroll, size: sizeProp = true, onActiveChange, dir, id, renderValue, lazyMount, zIndex } = props;
272
278
  var SelectImpl = (0, import_adapt.useAdaptIsActive)(adaptScope) ? SelectSheetImpl : import_SelectImpl.SelectInlineImpl;
273
279
  var mode = multiple ? "multiple" : "single";
@@ -310,28 +316,32 @@ function SelectInner(props) {
310
316
  });
311
317
  }, [props.id, requestOpenChange]);
312
318
  var activeIndexRef = React.useRef(null);
313
- var [activeIndex, setActiveIndexState] = React.useState(null);
314
319
  var [emitActiveIndex, activeIndexSubscribe] = useEmitter();
315
320
  var selectedIndexRef = React.useRef(null);
321
+ var lastPointerRef = React.useRef({
322
+ x: -1,
323
+ y: -1
324
+ });
316
325
  var listContentRef = React.useRef([]);
317
326
  var listRef = React.useRef([]);
318
327
  var [valueNode, setValueNode] = React.useState(null);
319
328
  var selectedIndex = Math.max(0, controller.selectionAnchorIndex());
320
329
  listContentRef.current = registry.getTypeaheadLabels();
321
- listRef.current.length = registry.getItems().length;
330
+ var itemNodes = registry.getNodes();
331
+ listRef.current.length = itemNodes.length;
332
+ for (var i = 0; i < itemNodes.length; i++) listRef.current[i] = itemNodes[i];
322
333
  (0, import_constants.useIsomorphicLayoutEffect)(function() {
323
334
  selectedIndexRef.current = selectedIndex;
324
335
  });
325
336
  var shouldRenderWebNative = import_constants.isWeb && (native === true || native === "web" || Array.isArray(native) && native.includes("web"));
326
- var setActiveIndexFast = React.useCallback(function(index, details) {
327
- if (activeIndexRef.current !== index) {
328
- activeIndexRef.current = index;
329
- controller.setActiveIndex(index);
330
- if (typeof index === "number") {
331
- emitActiveIndex(index);
332
- var item = registry.getItems()[index];
333
- if (item && details) onActiveChange === null || onActiveChange === void 0 || onActiveChange(item.value, details);
334
- }
337
+ var setActiveIndex = React.useCallback(function(index, details) {
338
+ if (activeIndexRef.current === index) return;
339
+ activeIndexRef.current = index;
340
+ controller.setActiveIndex(index);
341
+ emitActiveIndex(index);
342
+ if (typeof index === "number") {
343
+ var item = registry.getItems()[index];
344
+ if (item && details) onActiveChange === null || onActiveChange === void 0 || onActiveChange(item.value, details);
335
345
  }
336
346
  }, [
337
347
  controller,
@@ -339,10 +349,6 @@ function SelectInner(props) {
339
349
  onActiveChange,
340
350
  registry
341
351
  ]);
342
- var setActiveIndex = React.useCallback(function(index, details) {
343
- setActiveIndexFast(index, details);
344
- setActiveIndexState(index);
345
- }, [setActiveIndexFast]);
346
352
  var activeDetails = React.useCallback(function(reason, index, event) {
347
353
  return {
348
354
  reason,
@@ -389,10 +395,7 @@ function SelectInner(props) {
389
395
  if (open) {
390
396
  var nextIndex = controller.initialActiveIndex();
391
397
  if (nextIndex >= 0) setActiveIndex(nextIndex, activeDetails("list-navigation", nextIndex));
392
- } else {
393
- setActiveIndexFast(null);
394
- setActiveIndexState(null);
395
- }
398
+ } else setActiveIndex(null);
396
399
  }, [
397
400
  open,
398
401
  selectedIndex,
@@ -440,7 +443,9 @@ function SelectInner(props) {
440
443
  selectValue,
441
444
  changeNativeValue,
442
445
  shouldRenderWebNative,
443
- setActiveIndexFast,
446
+ setActiveIndex,
447
+ selectedIndex,
448
+ lastPointerRef,
444
449
  listRef,
445
450
  moveActive,
446
451
  search,
@@ -454,15 +459,12 @@ function SelectInner(props) {
454
459
  fallback: false,
455
460
  valueNode,
456
461
  onValueNodeChange: setValueNode,
457
- activeIndex,
458
462
  activeIndexRef,
459
463
  selectedIndex,
460
464
  setActiveIndex,
461
465
  value,
462
466
  mode,
463
467
  selectedValues,
464
- activeItem: activeIndex == null ? void 0 : (_registry_getItems_activeIndex = registry.getItems()[activeIndex]) === null || _registry_getItems_activeIndex === void 0 ? void 0 : _registry_getItems_activeIndex.value,
465
- selectionAnchor: (_controller_selectionAnchor = controller.selectionAnchor()) === null || _controller_selectionAnchor === void 0 ? void 0 : _controller_selectionAnchor.value,
466
468
  open,
467
469
  native,
468
470
  renderValue,
@@ -471,7 +473,6 @@ function SelectInner(props) {
471
473
  activeIndexRef,
472
474
  listContentRef,
473
475
  selectedIndexRef,
474
- setActiveIndexFast,
475
476
  ...props,
476
477
  open,
477
478
  value,