@tamagui/select 2.7.6 → 3.0.0-beta.637.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 +409 -467
- package/dist/cjs/Select.native.cjs +495 -0
- package/dist/cjs/Select.native.js +445 -492
- package/dist/cjs/Select.native.js.map +1 -1
- package/dist/cjs/SelectContent.cjs +80 -79
- package/dist/cjs/SelectContent.native.cjs +30 -0
- package/dist/cjs/SelectContent.native.js +18 -22
- package/dist/cjs/SelectContent.native.js.map +1 -1
- package/dist/cjs/SelectImpl.cjs +299 -319
- package/dist/cjs/SelectImpl.native.cjs +30 -0
- package/dist/cjs/SelectImpl.native.js +17 -24
- package/dist/cjs/SelectImpl.native.js.map +1 -1
- package/dist/cjs/SelectItem.cjs +268 -205
- package/dist/cjs/SelectItem.native.cjs +317 -0
- package/dist/cjs/SelectItem.native.js +291 -211
- package/dist/cjs/SelectItem.native.js.map +1 -1
- package/dist/cjs/SelectItemText.cjs +49 -79
- package/dist/cjs/SelectItemText.native.cjs +74 -0
- package/dist/cjs/SelectItemText.native.js +50 -79
- package/dist/cjs/SelectItemText.native.js.map +1 -1
- package/dist/cjs/SelectScrollButton.cjs +111 -130
- package/dist/cjs/SelectScrollButton.native.cjs +38 -0
- package/dist/cjs/SelectScrollButton.native.js +25 -22
- package/dist/cjs/SelectScrollButton.native.js.map +1 -1
- package/dist/cjs/SelectTrigger.cjs +69 -84
- package/dist/cjs/SelectTrigger.native.cjs +91 -0
- package/dist/cjs/SelectTrigger.native.js +71 -66
- package/dist/cjs/SelectTrigger.native.js.map +1 -1
- package/dist/cjs/SelectViewport.cjs +119 -142
- package/dist/cjs/SelectViewport.native.cjs +73 -0
- package/dist/cjs/SelectViewport.native.js +54 -50
- package/dist/cjs/SelectViewport.native.js.map +1 -1
- package/dist/cjs/constants.cjs +21 -22
- package/dist/cjs/constants.native.cjs +41 -0
- package/dist/cjs/constants.native.js +21 -21
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/context.cjs +38 -48
- package/dist/cjs/context.native.cjs +58 -0
- package/dist/cjs/context.native.js +40 -49
- package/dist/cjs/context.native.js.map +1 -1
- package/dist/cjs/index.cjs +15 -11
- package/dist/cjs/index.native.cjs +27 -0
- package/dist/cjs/index.native.js +15 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/selectionController.cjs +334 -0
- package/dist/cjs/selectionController.native.cjs +403 -0
- package/dist/cjs/selectionController.native.js +405 -0
- package/dist/cjs/selectionController.native.js.map +1 -0
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/Select.mjs +382 -443
- package/dist/esm/Select.mjs.map +1 -1
- package/dist/esm/Select.native.js +418 -469
- package/dist/esm/Select.native.js.map +1 -1
- package/dist/esm/SelectContent.mjs +67 -61
- package/dist/esm/SelectContent.mjs.map +1 -1
- package/dist/esm/SelectContent.native.js +4 -5
- package/dist/esm/SelectContent.native.js.map +1 -1
- package/dist/esm/SelectImpl.mjs +284 -294
- package/dist/esm/SelectImpl.mjs.map +1 -1
- package/dist/esm/SelectImpl.native.js +5 -8
- package/dist/esm/SelectImpl.native.js.map +1 -1
- package/dist/esm/SelectItem.mjs +252 -182
- package/dist/esm/SelectItem.mjs.map +1 -1
- package/dist/esm/SelectItem.native.js +276 -190
- package/dist/esm/SelectItem.native.js.map +1 -1
- package/dist/esm/SelectItemText.mjs +33 -55
- package/dist/esm/SelectItemText.mjs.map +1 -1
- package/dist/esm/SelectItemText.native.js +34 -56
- package/dist/esm/SelectItemText.native.js.map +1 -1
- package/dist/esm/SelectScrollButton.mjs +95 -107
- package/dist/esm/SelectScrollButton.mjs.map +1 -1
- package/dist/esm/SelectScrollButton.native.js +11 -7
- package/dist/esm/SelectScrollButton.native.js.map +1 -1
- package/dist/esm/SelectTrigger.mjs +56 -58
- package/dist/esm/SelectTrigger.mjs.map +1 -1
- package/dist/esm/SelectTrigger.native.js +54 -44
- package/dist/esm/SelectTrigger.native.js.map +1 -1
- package/dist/esm/SelectViewport.mjs +104 -119
- package/dist/esm/SelectViewport.mjs.map +1 -1
- package/dist/esm/SelectViewport.native.js +44 -39
- package/dist/esm/SelectViewport.native.js.map +1 -1
- package/dist/esm/constants.mjs +1 -0
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +1 -0
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/context.mjs +20 -28
- package/dist/esm/context.mjs.map +1 -1
- package/dist/esm/context.native.js +23 -31
- package/dist/esm/context.native.js.map +1 -1
- package/dist/esm/index.js +13 -3
- package/dist/esm/index.mjs +13 -3
- package/dist/esm/index.native.js +13 -3
- package/dist/esm/selectionController.mjs +305 -0
- package/dist/esm/selectionController.mjs.map +1 -0
- package/dist/esm/selectionController.native.js +372 -0
- package/dist/esm/selectionController.native.js.map +1 -0
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/jsx/Select.mjs +382 -443
- package/dist/jsx/Select.mjs.map +1 -1
- package/dist/jsx/Select.native.cjs +495 -0
- package/dist/jsx/Select.native.js +445 -492
- package/dist/jsx/Select.native.js.map +1 -1
- package/dist/jsx/SelectContent.mjs +67 -61
- package/dist/jsx/SelectContent.mjs.map +1 -1
- package/dist/jsx/SelectContent.native.cjs +30 -0
- package/dist/jsx/SelectContent.native.js +18 -22
- package/dist/jsx/SelectContent.native.js.map +1 -1
- package/dist/jsx/SelectImpl.mjs +284 -294
- package/dist/jsx/SelectImpl.mjs.map +1 -1
- package/dist/jsx/SelectImpl.native.cjs +30 -0
- package/dist/jsx/SelectImpl.native.js +17 -24
- package/dist/jsx/SelectImpl.native.js.map +1 -1
- package/dist/jsx/SelectItem.mjs +252 -182
- package/dist/jsx/SelectItem.mjs.map +1 -1
- package/dist/jsx/SelectItem.native.cjs +317 -0
- package/dist/jsx/SelectItem.native.js +291 -211
- package/dist/jsx/SelectItem.native.js.map +1 -1
- package/dist/jsx/SelectItemText.mjs +33 -55
- package/dist/jsx/SelectItemText.mjs.map +1 -1
- package/dist/jsx/SelectItemText.native.cjs +74 -0
- package/dist/jsx/SelectItemText.native.js +50 -79
- package/dist/jsx/SelectItemText.native.js.map +1 -1
- package/dist/jsx/SelectScrollButton.mjs +95 -107
- package/dist/jsx/SelectScrollButton.mjs.map +1 -1
- package/dist/jsx/SelectScrollButton.native.cjs +38 -0
- package/dist/jsx/SelectScrollButton.native.js +25 -22
- package/dist/jsx/SelectScrollButton.native.js.map +1 -1
- package/dist/jsx/SelectTrigger.mjs +56 -58
- package/dist/jsx/SelectTrigger.mjs.map +1 -1
- package/dist/jsx/SelectTrigger.native.cjs +91 -0
- package/dist/jsx/SelectTrigger.native.js +71 -66
- package/dist/jsx/SelectTrigger.native.js.map +1 -1
- package/dist/jsx/SelectViewport.mjs +104 -119
- package/dist/jsx/SelectViewport.mjs.map +1 -1
- package/dist/jsx/SelectViewport.native.cjs +73 -0
- package/dist/jsx/SelectViewport.native.js +54 -50
- package/dist/jsx/SelectViewport.native.js.map +1 -1
- package/dist/jsx/constants.mjs +1 -0
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/constants.native.cjs +41 -0
- package/dist/jsx/constants.native.js +21 -21
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/context.mjs +20 -28
- package/dist/jsx/context.mjs.map +1 -1
- package/dist/jsx/context.native.cjs +58 -0
- package/dist/jsx/context.native.js +40 -49
- package/dist/jsx/context.native.js.map +1 -1
- package/dist/jsx/index.js +13 -3
- package/dist/jsx/index.mjs +13 -3
- package/dist/jsx/index.native.cjs +27 -0
- package/dist/jsx/index.native.js +15 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/selectionController.mjs +305 -0
- package/dist/jsx/selectionController.mjs.map +1 -0
- package/dist/jsx/selectionController.native.cjs +403 -0
- package/dist/jsx/selectionController.native.js +405 -0
- package/dist/jsx/selectionController.native.js.map +1 -0
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.native.cjs +19 -0
- package/dist/jsx/types.native.js +10 -10
- package/dist/jsx/types.native.js.map +1 -1
- package/package.json +28 -28
- package/src/Select.tsx +457 -357
- package/src/SelectContent.tsx +46 -16
- package/src/SelectImpl.native.tsx +0 -8
- package/src/SelectImpl.tsx +87 -100
- package/src/SelectItem.tsx +282 -136
- package/src/SelectItemText.tsx +16 -33
- package/src/SelectScrollButton.native.tsx +13 -4
- package/src/SelectScrollButton.tsx +56 -41
- package/src/SelectTrigger.tsx +77 -53
- package/src/SelectViewport.native.tsx +42 -25
- package/src/SelectViewport.tsx +52 -51
- package/src/context.tsx +6 -2
- package/src/index.tsx +5 -2
- package/src/selectionController.ts +389 -0
- package/src/types.tsx +88 -45
- package/types/Select.d.ts +139 -201
- package/types/Select.d.ts.map +1 -1
- package/types/SelectContent.d.ts +1 -1
- package/types/SelectContent.d.ts.map +1 -1
- package/types/SelectContent.native.d.ts.map +1 -1
- package/types/SelectImpl.d.ts +2 -1
- package/types/SelectImpl.d.ts.map +1 -1
- package/types/SelectImpl.native.d.ts +1 -5
- package/types/SelectImpl.native.d.ts.map +1 -1
- package/types/SelectItem.d.ts +13 -16
- package/types/SelectItem.d.ts.map +1 -1
- package/types/SelectItemText.d.ts +9 -13
- package/types/SelectItemText.d.ts.map +1 -1
- package/types/SelectScrollButton.d.ts +15 -2
- package/types/SelectScrollButton.d.ts.map +1 -1
- package/types/SelectScrollButton.native.d.ts +16 -3
- package/types/SelectScrollButton.native.d.ts.map +1 -1
- package/types/SelectTrigger.d.ts +11 -23
- package/types/SelectTrigger.d.ts.map +1 -1
- package/types/SelectViewport.d.ts +11 -38
- package/types/SelectViewport.d.ts.map +1 -1
- package/types/SelectViewport.native.d.ts +15 -4
- package/types/SelectViewport.native.d.ts.map +1 -1
- package/types/context.d.ts +2 -0
- package/types/context.d.ts.map +1 -1
- package/types/index.d.ts +5 -2
- package/types/index.d.ts.map +1 -1
- package/types/selectionController.d.ts +88 -0
- package/types/selectionController.d.ts.map +1 -0
- package/types/types.d.ts +47 -37
- package/types/types.d.ts.map +1 -1
- package/dist/cjs/BubbleSelect.cjs +0 -50
- package/dist/cjs/BubbleSelect.native.js +0 -30
- package/dist/cjs/BubbleSelect.native.js.map +0 -1
- package/dist/cjs/useSelectBreakpointActive.cjs +0 -32
- package/dist/cjs/useSelectBreakpointActive.native.js +0 -35
- package/dist/cjs/useSelectBreakpointActive.native.js.map +0 -1
- package/dist/esm/BubbleSelect.mjs +0 -27
- package/dist/esm/BubbleSelect.mjs.map +0 -1
- package/dist/esm/BubbleSelect.native.js +0 -4
- package/dist/esm/BubbleSelect.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
- package/dist/esm/useSelectBreakpointActive.mjs +0 -7
- package/dist/esm/useSelectBreakpointActive.mjs.map +0 -1
- package/dist/esm/useSelectBreakpointActive.native.js +0 -7
- package/dist/esm/useSelectBreakpointActive.native.js.map +0 -1
- package/dist/jsx/BubbleSelect.mjs +0 -27
- package/dist/jsx/BubbleSelect.mjs.map +0 -1
- package/dist/jsx/BubbleSelect.native.js +0 -30
- package/dist/jsx/BubbleSelect.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
- package/dist/jsx/types.mjs.map +0 -1
- package/dist/jsx/useSelectBreakpointActive.mjs +0 -7
- package/dist/jsx/useSelectBreakpointActive.mjs.map +0 -1
- package/dist/jsx/useSelectBreakpointActive.native.js +0 -35
- package/dist/jsx/useSelectBreakpointActive.native.js.map +0 -1
- package/src/BubbleSelect.tsx +0 -50
- package/src/useSelectBreakpointActive.tsx +0 -7
- package/types/BubbleSelect.d.ts +0 -2
- package/types/BubbleSelect.d.ts.map +0 -1
- package/types/useSelectBreakpointActive.d.ts +0 -3
- package/types/useSelectBreakpointActive.d.ts.map +0 -1
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var selectionController_exports = {};
|
|
25
|
+
__export(selectionController_exports, {
|
|
26
|
+
createSelectItemRegistry: () => createSelectItemRegistry,
|
|
27
|
+
createSelectSelectionController: () => createSelectSelectionController,
|
|
28
|
+
getSelectLabelText: () => getSelectLabelText,
|
|
29
|
+
getSelectListboxProps: () => getSelectListboxProps,
|
|
30
|
+
getSelectOptionProps: () => getSelectOptionProps,
|
|
31
|
+
normalizeSelectSelection: () => normalizeSelectSelection,
|
|
32
|
+
selectedValuesFromSelection: () => selectedValuesFromSelection
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(selectionController_exports);
|
|
35
|
+
function _type_of(obj) {
|
|
36
|
+
"@swc/helpers - typeof";
|
|
37
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
38
|
+
}
|
|
39
|
+
function getSelectLabelText(label) {
|
|
40
|
+
if (typeof label === "string" || typeof label === "number") {
|
|
41
|
+
return String(label);
|
|
42
|
+
}
|
|
43
|
+
if (Array.isArray(label)) {
|
|
44
|
+
return label.map(getSelectLabelText).join("");
|
|
45
|
+
}
|
|
46
|
+
if (label && (typeof label === "undefined" ? "undefined" : _type_of(label)) === "object" && "props" in label) {
|
|
47
|
+
var _label_props;
|
|
48
|
+
return getSelectLabelText((_label_props = label.props) === null || _label_props === void 0 ? void 0 : _label_props.children);
|
|
49
|
+
}
|
|
50
|
+
return "";
|
|
51
|
+
}
|
|
52
|
+
function createSelectItemRegistry(onChange) {
|
|
53
|
+
var items = [];
|
|
54
|
+
var labelRegistrations = /* @__PURE__ */ new Map();
|
|
55
|
+
var explicitTextValues = /* @__PURE__ */ new Map();
|
|
56
|
+
var itemNodes = /* @__PURE__ */ new Map();
|
|
57
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
58
|
+
var notify = function() {
|
|
59
|
+
onChange === null || onChange === void 0 ? void 0 : onChange();
|
|
60
|
+
listeners.forEach(function(listener) {
|
|
61
|
+
return listener();
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var getItems = function() {
|
|
65
|
+
return items;
|
|
66
|
+
};
|
|
67
|
+
var getItem = function(value) {
|
|
68
|
+
return items.find(function(item) {
|
|
69
|
+
return item.value === value;
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
var getIndex = function(value) {
|
|
73
|
+
return items.findIndex(function(item) {
|
|
74
|
+
return item.value === value;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
var getRegisteredLabel = function(value) {
|
|
78
|
+
var registrations = labelRegistrations.get(value);
|
|
79
|
+
if (!(registrations === null || registrations === void 0 ? void 0 : registrations.size)) return void 0;
|
|
80
|
+
var values = Array.from(registrations.values());
|
|
81
|
+
return values[values.length - 1];
|
|
82
|
+
};
|
|
83
|
+
var applyRegisteredLabel = function(value) {
|
|
84
|
+
var registeredLabel = getRegisteredLabel(value);
|
|
85
|
+
var changed = false;
|
|
86
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
87
|
+
try {
|
|
88
|
+
for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
89
|
+
var item = _step.value;
|
|
90
|
+
if (item.value !== value) continue;
|
|
91
|
+
var nextLabel = registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.label;
|
|
92
|
+
var nextTextValue = explicitTextValues.get(item.id) || (registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue);
|
|
93
|
+
if (item.label !== nextLabel || item.textValue !== nextTextValue) {
|
|
94
|
+
item.label = nextLabel;
|
|
95
|
+
item.textValue = nextTextValue;
|
|
96
|
+
changed = true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
} catch (err) {
|
|
100
|
+
_didIteratorError = true;
|
|
101
|
+
_iteratorError = err;
|
|
102
|
+
} finally {
|
|
103
|
+
try {
|
|
104
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
105
|
+
_iterator.return();
|
|
106
|
+
}
|
|
107
|
+
} finally {
|
|
108
|
+
if (_didIteratorError) {
|
|
109
|
+
throw _iteratorError;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (changed) notify();
|
|
114
|
+
};
|
|
115
|
+
var syncNodeOrder = function() {
|
|
116
|
+
var previousOrder = items.map(function(item) {
|
|
117
|
+
return item.id;
|
|
118
|
+
});
|
|
119
|
+
items.sort(function(a, b) {
|
|
120
|
+
var aNode = itemNodes.get(a.id);
|
|
121
|
+
var bNode = itemNodes.get(b.id);
|
|
122
|
+
if (!aNode || !bNode || typeof aNode.compareDocumentPosition !== "function") {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
var position = aNode.compareDocumentPosition(bNode);
|
|
126
|
+
if (position & 4) return -1;
|
|
127
|
+
if (position & 2) return 1;
|
|
128
|
+
return 0;
|
|
129
|
+
});
|
|
130
|
+
if (items.some(function(item, index) {
|
|
131
|
+
return item.id !== previousOrder[index];
|
|
132
|
+
})) {
|
|
133
|
+
notify();
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
var registerItem = function(item) {
|
|
137
|
+
var id = Symbol(item.value);
|
|
138
|
+
var registeredLabel = getRegisteredLabel(item.value);
|
|
139
|
+
var _item_textValue;
|
|
140
|
+
var registeredItem = {
|
|
141
|
+
...item,
|
|
142
|
+
...registeredLabel,
|
|
143
|
+
textValue: (_item_textValue = item.textValue) !== null && _item_textValue !== void 0 ? _item_textValue : registeredLabel === null || registeredLabel === void 0 ? void 0 : registeredLabel.textValue,
|
|
144
|
+
id
|
|
145
|
+
};
|
|
146
|
+
explicitTextValues.set(id, item.textValue);
|
|
147
|
+
items.push(registeredItem);
|
|
148
|
+
notify();
|
|
149
|
+
return {
|
|
150
|
+
id,
|
|
151
|
+
update(next) {
|
|
152
|
+
var index = items.findIndex(function(current2) {
|
|
153
|
+
return current2.id === id;
|
|
154
|
+
});
|
|
155
|
+
if (index < 0) return;
|
|
156
|
+
var current = items[index];
|
|
157
|
+
if ("textValue" in next) {
|
|
158
|
+
explicitTextValues.set(id, next.textValue);
|
|
159
|
+
}
|
|
160
|
+
var nextItem = {
|
|
161
|
+
...current,
|
|
162
|
+
...next
|
|
163
|
+
};
|
|
164
|
+
if (next.value !== void 0 && next.value !== current.value) {
|
|
165
|
+
var nextLabel = getRegisteredLabel(next.value);
|
|
166
|
+
nextItem.label = nextLabel === null || nextLabel === void 0 ? void 0 : nextLabel.label;
|
|
167
|
+
}
|
|
168
|
+
var explicitTextValue = explicitTextValues.get(id);
|
|
169
|
+
nextItem.textValue = explicitTextValue || getSelectLabelText(nextItem.label) || (nextItem.label ? nextItem.value : void 0);
|
|
170
|
+
var changed = Object.entries(next).some(function(param) {
|
|
171
|
+
var [key, value] = param;
|
|
172
|
+
return current[key] !== value;
|
|
173
|
+
});
|
|
174
|
+
var textValueChanged = current.textValue !== nextItem.textValue;
|
|
175
|
+
if (!changed && !textValueChanged) return;
|
|
176
|
+
items[index] = nextItem;
|
|
177
|
+
notify();
|
|
178
|
+
},
|
|
179
|
+
setNode(node) {
|
|
180
|
+
if (node) {
|
|
181
|
+
itemNodes.set(id, node);
|
|
182
|
+
syncNodeOrder();
|
|
183
|
+
} else {
|
|
184
|
+
itemNodes.delete(id);
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
unregister() {
|
|
188
|
+
var index = items.findIndex(function(current) {
|
|
189
|
+
return current.id === id;
|
|
190
|
+
});
|
|
191
|
+
if (index < 0) return;
|
|
192
|
+
items.splice(index, 1);
|
|
193
|
+
explicitTextValues.delete(id);
|
|
194
|
+
itemNodes.delete(id);
|
|
195
|
+
notify();
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
var registerLabel = function(value, label, textValue) {
|
|
200
|
+
var id = Symbol(value);
|
|
201
|
+
var normalizedTextValue = textValue || getSelectLabelText(label) || value;
|
|
202
|
+
var _labelRegistrations_get;
|
|
203
|
+
var registrations = (_labelRegistrations_get = labelRegistrations.get(value)) !== null && _labelRegistrations_get !== void 0 ? _labelRegistrations_get : (function() {
|
|
204
|
+
var next = /* @__PURE__ */ new Map();
|
|
205
|
+
labelRegistrations.set(value, next);
|
|
206
|
+
return next;
|
|
207
|
+
})();
|
|
208
|
+
registrations.set(id, {
|
|
209
|
+
label,
|
|
210
|
+
textValue: normalizedTextValue
|
|
211
|
+
});
|
|
212
|
+
applyRegisteredLabel(value);
|
|
213
|
+
return function() {
|
|
214
|
+
registrations.delete(id);
|
|
215
|
+
if (!registrations.size) {
|
|
216
|
+
labelRegistrations.delete(value);
|
|
217
|
+
}
|
|
218
|
+
applyRegisteredLabel(value);
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
var firstEnabledIndex = function() {
|
|
222
|
+
return items.findIndex(function(item) {
|
|
223
|
+
return !item.disabled;
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
var nextEnabledIndex = function(fromIndex, direction) {
|
|
227
|
+
if (!items.length) return -1;
|
|
228
|
+
if (fromIndex == null || fromIndex < 0 || fromIndex >= items.length) {
|
|
229
|
+
if (direction === 1) return firstEnabledIndex();
|
|
230
|
+
for (var index = items.length - 1; index >= 0; index--) {
|
|
231
|
+
if (!items[index].disabled) return index;
|
|
232
|
+
}
|
|
233
|
+
return -1;
|
|
234
|
+
}
|
|
235
|
+
for (var offset = 1; offset <= items.length; offset++) {
|
|
236
|
+
var _items_index;
|
|
237
|
+
var index1 = (fromIndex + direction * offset + items.length) % items.length;
|
|
238
|
+
if (!((_items_index = items[index1]) === null || _items_index === void 0 ? void 0 : _items_index.disabled)) return index1;
|
|
239
|
+
}
|
|
240
|
+
return -1;
|
|
241
|
+
};
|
|
242
|
+
var findTypeaheadIndex = function(search, fromIndex) {
|
|
243
|
+
var normalizedSearch = search.trim().toLocaleLowerCase();
|
|
244
|
+
if (!normalizedSearch) return -1;
|
|
245
|
+
var start = fromIndex == null || fromIndex < 0 ? -1 : fromIndex;
|
|
246
|
+
for (var offset = 1; offset <= items.length; offset++) {
|
|
247
|
+
var index = (start + offset) % items.length;
|
|
248
|
+
var item = items[index];
|
|
249
|
+
var label = item.textValue || getSelectLabelText(item.label) || item.value;
|
|
250
|
+
if (!item.disabled && label.toLocaleLowerCase().startsWith(normalizedSearch)) {
|
|
251
|
+
return index;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return -1;
|
|
255
|
+
};
|
|
256
|
+
return {
|
|
257
|
+
subscribe(listener) {
|
|
258
|
+
listeners.add(listener);
|
|
259
|
+
return function() {
|
|
260
|
+
listeners.delete(listener);
|
|
261
|
+
};
|
|
262
|
+
},
|
|
263
|
+
registerItem,
|
|
264
|
+
registerLabel,
|
|
265
|
+
getItems,
|
|
266
|
+
getItem,
|
|
267
|
+
getIndex,
|
|
268
|
+
firstEnabledIndex,
|
|
269
|
+
nextEnabledIndex,
|
|
270
|
+
findTypeaheadIndex,
|
|
271
|
+
getDisabledIndices: function() {
|
|
272
|
+
return items.flatMap(function(item, index) {
|
|
273
|
+
return item.disabled ? [index] : [];
|
|
274
|
+
});
|
|
275
|
+
},
|
|
276
|
+
getTypeaheadLabels: function() {
|
|
277
|
+
return items.map(function(item) {
|
|
278
|
+
return item.textValue || getSelectLabelText(item.label) || item.value;
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
function normalizeSelectSelection(mode, value) {
|
|
284
|
+
if (mode === "single") {
|
|
285
|
+
return typeof value === "string" ? value : "";
|
|
286
|
+
}
|
|
287
|
+
var values = Array.isArray(value) ? value : [];
|
|
288
|
+
return [...new Set(values)];
|
|
289
|
+
}
|
|
290
|
+
function selectedValuesFromSelection(mode, value) {
|
|
291
|
+
var normalized = normalizeSelectSelection(mode, value);
|
|
292
|
+
return mode === "multiple" ? normalized : normalized ? [normalized] : [];
|
|
293
|
+
}
|
|
294
|
+
function createSelectSelectionController(param) {
|
|
295
|
+
var { mode: initialMode, value: initialValue, registry } = param;
|
|
296
|
+
var mode = initialMode;
|
|
297
|
+
var value = normalizeSelectSelection(mode, initialValue);
|
|
298
|
+
var activeIndex = null;
|
|
299
|
+
var selectedValues = function() {
|
|
300
|
+
return selectedValuesFromSelection(mode, value);
|
|
301
|
+
};
|
|
302
|
+
var setMode = function(nextMode) {
|
|
303
|
+
if (mode === nextMode) return value;
|
|
304
|
+
mode = nextMode;
|
|
305
|
+
value = normalizeSelectSelection(mode, value);
|
|
306
|
+
return value;
|
|
307
|
+
};
|
|
308
|
+
var setValue = function(nextValue) {
|
|
309
|
+
value = normalizeSelectSelection(mode, nextValue);
|
|
310
|
+
return value;
|
|
311
|
+
};
|
|
312
|
+
var isSelected = function(itemValue) {
|
|
313
|
+
return selectedValues().includes(itemValue);
|
|
314
|
+
};
|
|
315
|
+
var toggle = function(itemValue) {
|
|
316
|
+
var item = registry.getItem(itemValue);
|
|
317
|
+
if (!item || item.disabled) return value;
|
|
318
|
+
if (mode === "single") {
|
|
319
|
+
value = itemValue;
|
|
320
|
+
return value;
|
|
321
|
+
}
|
|
322
|
+
var current = selectedValues();
|
|
323
|
+
value = current.includes(itemValue) ? current.filter(function(currentValue) {
|
|
324
|
+
return currentValue !== itemValue;
|
|
325
|
+
}) : [...current, itemValue];
|
|
326
|
+
return value;
|
|
327
|
+
};
|
|
328
|
+
var selectionAnchor = function() {
|
|
329
|
+
var values = selectedValues();
|
|
330
|
+
for (var index = values.length - 1; index >= 0; index--) {
|
|
331
|
+
var item = registry.getItem(values[index]);
|
|
332
|
+
if (item) return item;
|
|
333
|
+
}
|
|
334
|
+
var firstEnabledIndex = registry.firstEnabledIndex();
|
|
335
|
+
return firstEnabledIndex < 0 ? void 0 : registry.getItems()[firstEnabledIndex];
|
|
336
|
+
};
|
|
337
|
+
var selectionAnchorIndex = function() {
|
|
338
|
+
var anchor = selectionAnchor();
|
|
339
|
+
return anchor ? registry.getIndex(anchor.value) : -1;
|
|
340
|
+
};
|
|
341
|
+
var initialActiveIndex = function() {
|
|
342
|
+
var anchorIndex = selectionAnchorIndex();
|
|
343
|
+
var anchor = anchorIndex < 0 ? void 0 : registry.getItems()[anchorIndex];
|
|
344
|
+
return anchor && !anchor.disabled ? anchorIndex : registry.firstEnabledIndex();
|
|
345
|
+
};
|
|
346
|
+
var moveActive = function(direction) {
|
|
347
|
+
var nextIndex = registry.nextEnabledIndex(activeIndex, direction);
|
|
348
|
+
activeIndex = nextIndex < 0 ? null : nextIndex;
|
|
349
|
+
return activeIndex == null ? void 0 : registry.getItems()[activeIndex];
|
|
350
|
+
};
|
|
351
|
+
return {
|
|
352
|
+
registry,
|
|
353
|
+
get mode() {
|
|
354
|
+
return mode;
|
|
355
|
+
},
|
|
356
|
+
get value() {
|
|
357
|
+
return value;
|
|
358
|
+
},
|
|
359
|
+
get activeIndex() {
|
|
360
|
+
return activeIndex;
|
|
361
|
+
},
|
|
362
|
+
get activeItem() {
|
|
363
|
+
return activeIndex == null ? void 0 : registry.getItems()[activeIndex];
|
|
364
|
+
},
|
|
365
|
+
get shouldCloseOnSelect() {
|
|
366
|
+
return mode === "single";
|
|
367
|
+
},
|
|
368
|
+
setMode,
|
|
369
|
+
setValue,
|
|
370
|
+
isSelected,
|
|
371
|
+
toggle,
|
|
372
|
+
selectionAnchor,
|
|
373
|
+
selectionAnchorIndex,
|
|
374
|
+
initialActiveIndex,
|
|
375
|
+
setActiveIndex(index) {
|
|
376
|
+
activeIndex = index;
|
|
377
|
+
},
|
|
378
|
+
moveActive
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
function getSelectListboxProps(mode) {
|
|
382
|
+
return {
|
|
383
|
+
role: "listbox",
|
|
384
|
+
"aria-multiselectable": mode === "multiple" ? true : void 0
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
function getSelectOptionProps(mode, selected, disabled, platform) {
|
|
388
|
+
if (platform === "native") {
|
|
389
|
+
return {
|
|
390
|
+
accessibilityRole: mode === "multiple" ? "checkbox" : "button",
|
|
391
|
+
accessibilityState: {
|
|
392
|
+
selected: mode === "single" ? selected : void 0,
|
|
393
|
+
checked: mode === "multiple" ? selected : void 0,
|
|
394
|
+
disabled
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
return {
|
|
399
|
+
role: "option",
|
|
400
|
+
"aria-selected": selected,
|
|
401
|
+
"aria-disabled": disabled || void 0
|
|
402
|
+
};
|
|
403
|
+
}
|