@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.
- package/dist/cjs/Select.cjs +23 -25
- package/dist/cjs/Select.native.cjs +27 -26
- package/dist/cjs/Select.native.js +27 -26
- package/dist/cjs/Select.native.js.map +1 -1
- package/dist/cjs/SelectImpl.cjs +67 -63
- package/dist/cjs/SelectItem.cjs +49 -60
- package/dist/cjs/SelectItem.native.cjs +51 -79
- package/dist/cjs/SelectItem.native.js +51 -79
- package/dist/cjs/SelectItem.native.js.map +1 -1
- package/dist/cjs/SelectScrollButton.cjs +9 -25
- package/dist/cjs/SelectTrigger.cjs +22 -5
- package/dist/cjs/SelectTrigger.native.cjs +15 -5
- package/dist/cjs/SelectTrigger.native.js +15 -5
- package/dist/cjs/SelectTrigger.native.js.map +1 -1
- package/dist/cjs/SelectViewport.cjs +29 -32
- package/dist/cjs/SelectViewport.native.cjs +2 -2
- package/dist/cjs/SelectViewport.native.js +2 -2
- package/dist/cjs/SelectViewport.native.js.map +1 -1
- package/dist/cjs/selectionController.cjs +15 -5
- package/dist/cjs/selectionController.native.cjs +20 -15
- package/dist/cjs/selectionController.native.js +20 -15
- package/dist/cjs/selectionController.native.js.map +1 -1
- package/dist/esm/Select.mjs +27 -28
- package/dist/esm/Select.mjs.map +1 -1
- package/dist/esm/Select.native.js +31 -29
- package/dist/esm/Select.native.js.map +1 -1
- package/dist/esm/SelectImpl.mjs +68 -64
- package/dist/esm/SelectImpl.mjs.map +1 -1
- package/dist/esm/SelectItem.mjs +50 -61
- package/dist/esm/SelectItem.mjs.map +1 -1
- package/dist/esm/SelectItem.native.js +52 -80
- package/dist/esm/SelectItem.native.js.map +1 -1
- package/dist/esm/SelectScrollButton.mjs +10 -26
- package/dist/esm/SelectScrollButton.mjs.map +1 -1
- package/dist/esm/SelectTrigger.mjs +16 -5
- package/dist/esm/SelectTrigger.mjs.map +1 -1
- package/dist/esm/SelectTrigger.native.js +15 -4
- package/dist/esm/SelectTrigger.native.js.map +1 -1
- package/dist/esm/SelectViewport.mjs +30 -33
- package/dist/esm/SelectViewport.mjs.map +1 -1
- package/dist/esm/SelectViewport.native.js +3 -3
- package/dist/esm/SelectViewport.native.js.map +1 -1
- package/dist/esm/selectionController.mjs +15 -5
- package/dist/esm/selectionController.mjs.map +1 -1
- package/dist/esm/selectionController.native.js +20 -15
- package/dist/esm/selectionController.native.js.map +1 -1
- package/dist/jsx/Select.mjs +27 -28
- package/dist/jsx/Select.mjs.map +1 -1
- package/dist/jsx/Select.native.cjs +27 -26
- package/dist/jsx/Select.native.js +27 -26
- package/dist/jsx/Select.native.js.map +1 -1
- package/dist/jsx/SelectImpl.mjs +68 -64
- package/dist/jsx/SelectImpl.mjs.map +1 -1
- package/dist/jsx/SelectItem.mjs +50 -61
- package/dist/jsx/SelectItem.mjs.map +1 -1
- package/dist/jsx/SelectItem.native.cjs +51 -79
- package/dist/jsx/SelectItem.native.js +51 -79
- package/dist/jsx/SelectItem.native.js.map +1 -1
- package/dist/jsx/SelectScrollButton.mjs +10 -26
- package/dist/jsx/SelectScrollButton.mjs.map +1 -1
- package/dist/jsx/SelectTrigger.mjs +16 -5
- package/dist/jsx/SelectTrigger.mjs.map +1 -1
- package/dist/jsx/SelectTrigger.native.cjs +15 -5
- package/dist/jsx/SelectTrigger.native.js +15 -5
- package/dist/jsx/SelectTrigger.native.js.map +1 -1
- package/dist/jsx/SelectViewport.mjs +30 -33
- package/dist/jsx/SelectViewport.mjs.map +1 -1
- package/dist/jsx/SelectViewport.native.cjs +2 -2
- package/dist/jsx/SelectViewport.native.js +2 -2
- package/dist/jsx/SelectViewport.native.js.map +1 -1
- package/dist/jsx/selectionController.mjs +15 -5
- package/dist/jsx/selectionController.mjs.map +1 -1
- package/dist/jsx/selectionController.native.cjs +20 -15
- package/dist/jsx/selectionController.native.js +20 -15
- package/dist/jsx/selectionController.native.js.map +1 -1
- package/package.json +30 -29
- package/src/Select.tsx +41 -41
- package/src/SelectImpl.tsx +107 -95
- package/src/SelectItem.tsx +66 -91
- package/src/SelectScrollButton.tsx +14 -32
- package/src/SelectTrigger.tsx +19 -2
- package/src/SelectViewport.native.tsx +4 -4
- package/src/SelectViewport.tsx +34 -30
- package/src/selectionController.ts +20 -5
- package/src/types.tsx +26 -22
- package/types/Select.d.ts +42 -81
- package/types/Select.d.ts.map +1 -1
- package/types/SelectImpl.d.ts.map +1 -1
- package/types/SelectItem.d.ts +3 -5
- package/types/SelectItem.d.ts.map +1 -1
- package/types/SelectItemText.d.ts +3 -5
- package/types/SelectItemText.d.ts.map +1 -1
- package/types/SelectScrollButton.d.ts +5 -9
- package/types/SelectScrollButton.d.ts.map +1 -1
- package/types/SelectScrollButton.native.d.ts +5 -9
- package/types/SelectScrollButton.native.d.ts.map +1 -1
- package/types/SelectTrigger.d.ts +3 -5
- package/types/SelectTrigger.d.ts.map +1 -1
- package/types/SelectViewport.d.ts +4 -9
- package/types/SelectViewport.d.ts.map +1 -1
- package/types/SelectViewport.native.d.ts +4 -9
- package/types/SelectViewport.native.d.ts.map +1 -1
- package/types/selectionController.d.ts +2 -0
- package/types/selectionController.d.ts.map +1 -1
- package/types/types.d.ts +30 -22
- 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 &&
|
|
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
|
-
|
|
40
|
-
|
|
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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"}
|
package/dist/jsx/Select.mjs
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
250
|
-
if (activeIndexRef.current
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
-
|
|
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,
|
package/dist/jsx/Select.mjs.map
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
327
|
-
if (activeIndexRef.current
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
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
|
-
|
|
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,
|