@react-spectrum/tabs 3.0.0-alpha.4 → 3.0.0-nightly-641446f65-240905

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/main.js CHANGED
@@ -1,427 +1,28 @@
1
- var {
2
- useTabsState
3
- } = require("@react-stately/tabs");
1
+ var $e8d58e7e32285ba6$exports = require("./Tabs.main.js");
2
+ var $8zXxA$reactstatelycollections = require("@react-stately/collections");
4
3
 
5
- var {
6
- useTab,
7
- useTabs
8
- } = require("@react-aria/tabs");
9
4
 
10
- var {
11
- useProvider,
12
- useProviderProps
13
- } = require("@react-spectrum/provider");
14
-
15
- var {
16
- useLocale
17
- } = require("@react-aria/i18n");
18
-
19
- var {
20
- useHover
21
- } = require("@react-aria/interactions");
22
-
23
- var {
24
- Text
25
- } = require("@react-spectrum/text");
26
-
27
- var _react2 = require("react");
28
-
29
- var _react = $parcel$interopDefault(_react2);
30
-
31
- var {
32
- useCallback,
33
- useEffect,
34
- useRef,
35
- useState
36
- } = _react2;
37
-
38
- var {
39
- mergeProps,
40
- useId,
41
- useLayoutEffect,
42
- useResizeObserver
43
- } = require("@react-aria/utils");
44
-
45
- var {
46
- Item: _Item,
47
- Picker
48
- } = require("@react-spectrum/picker");
49
-
50
- var {
51
- FocusRing
52
- } = require("@react-aria/focus");
53
-
54
- var {
55
- classNames,
56
- SlotProvider,
57
- unwrapDOMRef,
58
- useDOMRef,
59
- useStyleProps,
60
- useValueEffect
61
- } = require("@react-spectrum/utils");
62
-
63
- var _babelRuntimeHelpersObjectWithoutPropertiesLoose = $parcel$interopDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
64
-
65
- var _babelRuntimeHelpersExtends = $parcel$interopDefault(require("@babel/runtime/helpers/extends"));
66
-
67
- var {
68
- Item
69
- } = require("@react-stately/collections");
70
-
71
- exports.Item = Item;
72
-
73
- require("./main.css");
74
-
75
- function $parcel$interopDefault(a) {
76
- return a && a.__esModule ? a.default : a;
5
+ function $parcel$export(e, n, v, s) {
6
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
77
7
  }
78
8
 
79
- // ASSET: /Users/govett/dev/react-spectrum-v3/node_modules/@adobe/spectrum-css-temp/components/tabs/vars.css
80
- var $a221257d7bd2e9d0c131cda7c75f4f5$exports = {};
81
- $a221257d7bd2e9d0c131cda7c75f4f5$exports = {
82
- "spectrum-TabsPanel": "_spectrum-TabsPanel_0248f",
83
- "spectrum-TabsPanel--horizontal": "_spectrum-TabsPanel--horizontal_0248f",
84
- "spectrum-TabsPanel--vertical": "_spectrum-TabsPanel--vertical_0248f",
85
- "spectrum-Tabs": "_spectrum-Tabs_0248f",
86
- "spectrum-Tabs-item": "_spectrum-Tabs-item_0248f",
87
- "is-disabled": "_is-disabled_0248f",
88
- "spectrum-Tabs-itemLabel": "_spectrum-Tabs-itemLabel_0248f",
89
- "spectrum-Icon": "_spectrum-Icon_0248f",
90
- "spectrum-Tabs-selectionIndicator": "_spectrum-Tabs-selectionIndicator_0248f",
91
- "spectrum-Tabs--horizontal": "_spectrum-Tabs--horizontal_0248f",
92
- "spectrum-Tabs--compact": "_spectrum-Tabs--compact_0248f",
93
- "spectrum-Tabs--isCollapsed": "_spectrum-Tabs--isCollapsed_0248f",
94
- "spectrum-Tabs--quiet": "_spectrum-Tabs--quiet_0248f",
95
- "spectrum-Tabs--vertical": "_spectrum-Tabs--vertical_0248f",
96
- "spectrum-TabsPanel-collapseWrapper": "_spectrum-TabsPanel-collapseWrapper_0248f",
97
- "spectrum-TabsPanel-tabs": "_spectrum-TabsPanel-tabs_0248f",
98
- "spectrum-TabsPanel-tabpanel": "_spectrum-TabsPanel-tabpanel_0248f",
99
- "focus-ring": "_focus-ring_0248f",
100
- "is-hovered": "_is-hovered_0248f",
101
- "is-selected": "_is-selected_0248f"
102
- };
103
- var $a221257d7bd2e9d0c131cda7c75f4f5$$interop$default = $parcel$interopDefault($a221257d7bd2e9d0c131cda7c75f4f5$exports);
104
-
105
- function $a016f96d614f365ec6ad3cd2df19b52$var$Tabs(props, ref) {
106
- props = useProviderProps(props);
107
-
108
- let {
109
- orientation = 'horizontal',
110
- isDisabled,
111
- isQuiet,
112
- density = 'regular',
113
- children
114
- } = props,
115
- otherProps = _babelRuntimeHelpersObjectWithoutPropertiesLoose(props, ["orientation", "isDisabled", "isQuiet", "density", "children"]);
116
-
117
- let domRef = useDOMRef(ref);
118
- let tablistRef = useRef();
119
- let wrapperRef = useRef();
120
- let state = useTabsState(props);
121
- let {
122
- direction
123
- } = useLocale();
124
- let {
125
- styleProps
126
- } = useStyleProps(otherProps);
127
- let {
128
- tabListProps,
129
- tabPanelProps
130
- } = useTabs(props, state, tablistRef);
131
- let [collapse, setCollapse] = useValueEffect(false);
132
- let [selectedTab, setSelectedTab] = useState();
133
- useEffect(() => {
134
- if (tablistRef.current) {
135
- let selectedTab = tablistRef.current.querySelector("[data-key=\"" + state.selectedKey + "\"]");
136
-
137
- if (selectedTab != null) {
138
- setSelectedTab(selectedTab);
139
- }
140
- } // collapse is in the dep array so selectedTab can be updated for TabLine positioning
141
-
142
- }, [children, state.selectedKey, collapse, tablistRef]);
143
- let checkShouldCollapse = useCallback(() => {
144
- let computeShouldCollapse = () => {
145
- if (wrapperRef.current) {
146
- let tabsComponent = wrapperRef.current;
147
- let tabs = tablistRef.current.querySelectorAll('[role="tab"]');
148
- let lastTab = tabs[tabs.length - 1];
149
- let end = direction === 'rtl' ? 'left' : 'right';
150
- let farEdgeTabList = tabsComponent.getBoundingClientRect()[end];
151
- let farEdgeLastTab = lastTab == null ? void 0 : lastTab.getBoundingClientRect()[end];
152
- let shouldCollapse = direction === 'rtl' ? farEdgeLastTab < farEdgeTabList : farEdgeTabList < farEdgeLastTab;
153
- return shouldCollapse;
154
- }
155
- };
9
+ $parcel$export(module.exports, "TabList", () => $e8d58e7e32285ba6$exports.TabList);
10
+ $parcel$export(module.exports, "TabPanels", () => $e8d58e7e32285ba6$exports.TabPanels);
11
+ $parcel$export(module.exports, "Tabs", () => $e8d58e7e32285ba6$exports.Tabs);
12
+ $parcel$export(module.exports, "Item", () => $8zXxA$reactstatelycollections.Item);
13
+ /*
14
+ * Copyright 2020 Adobe. All rights reserved.
15
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
16
+ * you may not use this file except in compliance with the License. You may obtain a copy
17
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
18
+ *
19
+ * Unless required by applicable law or agreed to in writing, software distributed under
20
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
21
+ * OF ANY KIND, either express or implied. See the License for the specific language
22
+ * governing permissions and limitations under the License.
23
+ */ /// <reference types="css-module-types" />
156
24
 
157
- if (orientation !== 'vertical') {
158
- setCollapse(function* () {
159
- // Make Tabs render in non-collapsed state
160
- yield false; // Compute if Tabs should collapse and update
161
-
162
- yield computeShouldCollapse();
163
- });
164
- }
165
- }, [tablistRef, wrapperRef, direction, orientation, setCollapse]);
166
- useEffect(() => {
167
- checkShouldCollapse();
168
- }, [children, checkShouldCollapse]);
169
- useResizeObserver({
170
- ref: wrapperRef,
171
- onResize: checkShouldCollapse
172
- }); // When the tabs are collapsed, the tabPanel should be labelled by the Picker button element.
173
-
174
- let collapsibleTabListId = useId();
175
-
176
- if (collapse && orientation !== 'vertical') {
177
- tabPanelProps['aria-labelledby'] = collapsibleTabListId;
178
- }
179
-
180
- return /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, styleProps, {
181
- ref: domRef,
182
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-TabsPanel', "spectrum-TabsPanel--" + orientation, styleProps.className)
183
- }), orientation === 'vertical' && /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$TabList, _babelRuntimeHelpersExtends({}, tabListProps, {
184
- ref: tablistRef,
185
- orientation: orientation,
186
- density: density,
187
- isQuiet: isQuiet,
188
- isDisabled: isDisabled,
189
- state: state,
190
- selectedTab: selectedTab
191
- })), orientation !== 'vertical' && /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$CollapsibleTabList, _babelRuntimeHelpersExtends({}, props, {
192
- id: collapsibleTabListId,
193
- wrapperRef: wrapperRef,
194
- collapse: collapse,
195
- tabListProps: tabListProps,
196
- state: state,
197
- selectedTab: selectedTab,
198
- ref: tablistRef
199
- })), /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, tabPanelProps, {
200
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-TabsPanel-tabpanel')
201
- }), state.selectedItem && state.selectedItem.props.children));
202
- }
203
-
204
- function Tab(props) {
205
- let {
206
- item,
207
- state,
208
- isDisabled: propsDisabled
209
- } = props;
210
- let {
211
- key,
212
- rendered
213
- } = item;
214
- let isDisabled = propsDisabled || state.disabledKeys.has(key);
215
- let ref = useRef();
216
- let {
217
- tabProps
218
- } = useTab({
219
- item,
220
- isDisabled
221
- }, state, ref);
222
- let {
223
- hoverProps,
224
- isHovered
225
- } = useHover(_babelRuntimeHelpersExtends({}, props));
226
- let isSelected = state.selectedKey === key;
227
- return /*#__PURE__*/_react.createElement(FocusRing, {
228
- focusRingClass: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'focus-ring')
229
- }, /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, mergeProps(tabProps, hoverProps), {
230
- ref: ref,
231
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Tabs-item', {
232
- 'is-selected': isSelected,
233
- 'is-disabled': isDisabled,
234
- 'is-hovered': isHovered
235
- })
236
- }), /*#__PURE__*/_react.createElement(SlotProvider, {
237
- slots: {
238
- icon: {
239
- size: 'S',
240
- UNSAFE_className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Icon')
241
- },
242
- text: {
243
- UNSAFE_className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Tabs-itemLabel')
244
- }
245
- }
246
- }, typeof rendered === 'string' ? /*#__PURE__*/_react.createElement(Text, null, rendered) : rendered)));
247
- }
248
-
249
- exports.Tab = Tab;
250
-
251
- function $a016f96d614f365ec6ad3cd2df19b52$var$TabLine(props) {
252
- let {
253
- orientation,
254
- // Is either the tab node (non-collapsed) or the picker node (collapsed)
255
- selectedTab,
256
- // selectedKey is provided so that the TabLine styles are updated when the TabPicker's width updates from a selection change
257
- selectedKey
258
- } = props;
259
- let verticalSelectionIndicatorOffset = 12;
260
- let {
261
- direction
262
- } = useLocale();
263
- let {
264
- scale
265
- } = useProvider();
266
- let [style, setStyle] = useState({
267
- width: undefined,
268
- height: undefined
269
- });
270
- useLayoutEffect(() => {
271
- if (selectedTab) {
272
- var _ref;
273
-
274
- let styleObj = {
275
- transform: undefined,
276
- width: undefined,
277
- height: undefined
278
- }; // In RTL, calculate the transform from the right edge of the tablist so that resizing the window doesn't break the Tabline position due to offsetLeft changes
279
-
280
- let offset = direction === 'rtl' ? -1 * (((_ref = selectedTab.offsetParent) == null ? void 0 : _ref.offsetWidth) - selectedTab.offsetWidth - selectedTab.offsetLeft) : selectedTab.offsetLeft;
281
- styleObj.transform = orientation === 'vertical' ? "translateY(" + (selectedTab.offsetTop + verticalSelectionIndicatorOffset / 2) + "px)" : "translateX(" + offset + "px)";
282
-
283
- if (orientation === 'horizontal') {
284
- styleObj.width = selectedTab.offsetWidth + "px";
285
- } else {
286
- styleObj.height = selectedTab.offsetHeight - verticalSelectionIndicatorOffset + "px";
287
- }
288
-
289
- setStyle(styleObj);
290
- }
291
- }, [direction, setStyle, selectedTab, orientation, scale, verticalSelectionIndicatorOffset, selectedKey]);
292
- return /*#__PURE__*/_react.createElement("div", {
293
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Tabs-selectionIndicator'),
294
- role: "presentation",
295
- style: style
296
- });
297
- }
298
-
299
- const $a016f96d614f365ec6ad3cd2df19b52$var$CollapsibleTabList = _react.forwardRef(function (props, ref) {
300
- let {
301
- tabListProps,
302
- density,
303
- isQuiet,
304
- isDisabled,
305
- state,
306
- selectedTab,
307
- wrapperRef,
308
- collapse
309
- } = props;
310
- let tabListclassName = classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-TabsPanel-tabs');
311
- return /*#__PURE__*/_react.createElement("div", {
312
- ref: wrapperRef,
313
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-TabsPanel-collapseWrapper')
314
- }, collapse && /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$TabPicker, _babelRuntimeHelpersExtends({}, props, {
315
- className: tabListclassName
316
- })), !collapse && /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$TabList, _babelRuntimeHelpersExtends({}, tabListProps, {
317
- density: density,
318
- isQuiet: isQuiet,
319
- isDisabled: isDisabled,
320
- state: state,
321
- selectedTab: selectedTab,
322
- ref: ref,
323
- orientation: "horizontal",
324
- className: tabListclassName
325
- })));
326
- });
327
-
328
- const $a016f96d614f365ec6ad3cd2df19b52$var$TabList = _react.forwardRef(function (props, ref) {
329
- let {
330
- isQuiet,
331
- density,
332
- state,
333
- isDisabled,
334
- orientation,
335
- selectedTab,
336
- className
337
- } = props,
338
- otherProps = _babelRuntimeHelpersObjectWithoutPropertiesLoose(props, ["isQuiet", "density", "state", "isDisabled", "orientation", "selectedTab", "className"]);
339
-
340
- return /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, otherProps, {
341
- ref: ref,
342
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Tabs', "spectrum-Tabs--" + orientation, {
343
- 'spectrum-Tabs--quiet': isQuiet,
344
- ['spectrum-Tabs--compact']: density === 'compact'
345
- }, className)
346
- }), [...state.collection].map(item => /*#__PURE__*/_react.createElement(Tab, {
347
- key: item.key,
348
- item: item,
349
- state: state,
350
- isDisabled: isDisabled,
351
- orientation: orientation
352
- })), /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$TabLine, {
353
- orientation: orientation,
354
- selectedTab: selectedTab
355
- }));
356
- });
357
-
358
- function $a016f96d614f365ec6ad3cd2df19b52$var$TabPicker(props) {
359
- let {
360
- isDisabled,
361
- isQuiet,
362
- state,
363
- 'aria-labelledby': ariaLabeledBy,
364
- 'aria-label': ariaLabel,
365
- density,
366
- className,
367
- id
368
- } = props;
369
- let ref = useRef();
370
- let [pickerNode, setPickerNode] = useState(null);
371
- useEffect(() => {
372
- let node = unwrapDOMRef(ref);
373
- setPickerNode(node.current);
374
- }, [ref]);
375
- let items = [...state.collection].map(item => ({
376
- rendered: item.rendered,
377
- textValue: item.textValue,
378
- id: item.key
379
- }));
380
- let pickerProps = {
381
- 'aria-labelledby': ariaLabeledBy,
382
- 'aria-label': ariaLabel
383
- }; // TODO: Figure out if tabListProps should go onto the div here, v2 doesn't do it
384
-
385
- return /*#__PURE__*/_react.createElement("div", {
386
- className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Tabs', 'spectrum-Tabs--horizontal', 'spectrum-Tabs--isCollapsed', {
387
- 'spectrum-Tabs--quiet': isQuiet,
388
- ['spectrum-Tabs--compact']: density === 'compact'
389
- }, className)
390
- }, /*#__PURE__*/_react.createElement(SlotProvider, {
391
- slots: {
392
- icon: {
393
- size: 'S',
394
- UNSAFE_className: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'spectrum-Icon')
395
- },
396
- button: {
397
- focusRingClass: classNames($a221257d7bd2e9d0c131cda7c75f4f5$$interop$default, 'focus-ring')
398
- }
399
- }
400
- }, /*#__PURE__*/_react.createElement(Picker, _babelRuntimeHelpersExtends({}, pickerProps, {
401
- id: id,
402
- items: items,
403
- ref: ref,
404
- isQuiet: true,
405
- isDisabled: isDisabled,
406
- selectedKey: state.selectedKey,
407
- disabledKeys: state.disabledKeys,
408
- onSelectionChange: state.setSelectedKey
409
- }), item => /*#__PURE__*/_react.createElement(_Item, {
410
- textValue: item.textValue
411
- }, item.rendered)), pickerNode && /*#__PURE__*/_react.createElement($a016f96d614f365ec6ad3cd2df19b52$var$TabLine, {
412
- orientation: "horizontal",
413
- selectedTab: pickerNode,
414
- selectedKey: state.selectedKey
415
- })));
416
- }
417
- /**
418
- * Tabs organize content into multiple sections and allow users to navigate between them. The content under the set of tabs should be related and form a coherent unit.
419
- */
420
- // forwardRef doesn't support generic parameters, so cast the result to the correct type
421
- // https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref
422
25
 
423
26
 
424
- const Tabs = _react.forwardRef($a016f96d614f365ec6ad3cd2df19b52$var$Tabs);
425
27
 
426
- exports.Tabs = Tabs;
427
28
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,sBAAT,CAAgCC,CAAhC,EAAmC;AACjC,SAAOA,CAAC,IAAIA,CAAC,CAACC,UAAP,GAAoBD,CAAC,CAACE,OAAtB,GAAgCF,CAAvC;AACD;;;;ACFD,2CAAiB;AACf,wBAAsB,2BADP;AAEf,oCAAkC,uCAFnB;AAGf,kCAAgC,qCAHjB;AAIf,mBAAiB,sBAJF;AAKf,wBAAsB,2BALP;AAMf,iBAAe,oBANA;AAOf,6BAA2B,gCAPZ;AAQf,mBAAiB,sBARF;AASf,sCAAoC,yCATrB;AAUf,+BAA6B,kCAVd;AAWf,4BAA0B,+BAXX;AAYf,gCAA8B,mCAZf;AAaf,0BAAwB,6BAbT;AAcf,6BAA2B,gCAdZ;AAef,wCAAsC,2CAfvB;AAgBf,6BAA2B,gCAhBZ;AAiBf,iCAA+B,oCAjBhB;AAkBf,gBAAc,mBAlBC;AAmBf,gBAAc,mBAnBC;AAoBf,iBAAe;AApBA,CAAjB;;;AC8BA,SAASG,yCAAT,CAAgCC,KAAhC,EAA6DC,GAA7D,EAA0F;AACxFD,EAAAA,KAAK,GAAGE,gBAAgB,CAACF,KAAD,CAAxB;;AACA,MAAI;AACFG,IAAAA,WAAW,GAAG,YADZ;AAEFC,IAAAA,UAFE;AAGFC,IAAAA,OAHE;AAIFC,IAAAA,OAAO,GAAG,SAJR;AAKFC,IAAAA;AALE,MAOAP,KAPJ;AAAA,MAMKQ,UANL,oDAOIR,KAPJ;;AASA,MAAIS,MAAM,GAAGC,SAAS,CAACT,GAAD,CAAtB;AACA,MAAIU,UAAU,GAAGC,MAAM,EAAvB;AACA,MAAIC,UAAU,GAAGD,MAAM,EAAvB;AACA,MAAIE,KAAK,GAAGC,YAAY,CAACf,KAAD,CAAxB;AAEA,MAAI;AAACgB,IAAAA;AAAD,MAAcC,SAAS,EAA3B;AACA,MAAI;AAACC,IAAAA;AAAD,MAAeC,aAAa,CAACX,UAAD,CAAhC;AACA,MAAI;AAACY,IAAAA,YAAD;AAAeC,IAAAA;AAAf,MAAgCC,OAAO,CAACtB,KAAD,EAAQc,KAAR,EAAeH,UAAf,CAA3C;AACA,MAAI,CAACY,QAAD,EAAWC,WAAX,IAA0BC,cAAc,CAAC,KAAD,CAA5C;AACA,MAAI,CAACC,WAAD,EAAcC,cAAd,IAAgCC,QAAQ,EAA5C;AAEAC,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIlB,UAAU,CAACmB,OAAf,EAAwB;AACtB,UAAIJ,WAAwB,GAAGf,UAAU,CAACmB,OAAX,CAAmBC,aAAnB,kBAA+CjB,KAAK,CAACkB,WAArD,SAA/B;;AAEA,UAAIN,WAAW,IAAI,IAAnB,EAAyB;AACvBC,QAAAA,cAAc,CAACD,WAAD,CAAd;AACD;AACF,KAPa,CAQd;;AACD,GATQ,EASN,CAACnB,QAAD,EAAWO,KAAK,CAACkB,WAAjB,EAA8BT,QAA9B,EAAwCZ,UAAxC,CATM,CAAT;AAWA,MAAIsB,mBAAmB,GAAGC,WAAW,CAAC,MAAM;AAC1C,QAAIC,qBAAqB,GAAG,MAAM;AAChC,UAAItB,UAAU,CAACiB,OAAf,EAAwB;AACtB,YAAIM,aAAa,GAAGvB,UAAU,CAACiB,OAA/B;AACA,YAAIO,IAAI,GAAG1B,UAAU,CAACmB,OAAX,CAAmBQ,gBAAnB,CAAoC,cAApC,CAAX;AACA,YAAIC,OAAO,GAAGF,IAAI,CAACA,IAAI,CAACG,MAAL,GAAc,CAAf,CAAlB;AAEA,YAAIC,GAAG,GAAGzB,SAAS,KAAK,KAAd,GAAsB,MAAtB,GAA+B,OAAzC;AACA,YAAI0B,cAAc,GAAGN,aAAa,CAACO,qBAAd,GAAsCF,GAAtC,CAArB;AACA,YAAIG,cAAc,GAAGL,OAAH,oBAAGA,OAAO,CAAEI,qBAAT,GAAiCF,GAAjC,CAArB;AACA,YAAII,cAAc,GAAG7B,SAAS,KAAK,KAAd,GAAsB4B,cAAc,GAAGF,cAAvC,GAAwDA,cAAc,GAAGE,cAA9F;AAEA,eAAOC,cAAP;AACD;AACF,KAbD;;AAeA,QAAI1C,WAAW,KAAK,UAApB,EAAgC;AAC9BqB,MAAAA,WAAW,CAAC,aAAa;AACvB;AACA,cAAM,KAAN,CAFuB,CAIvB;;AACA,cAAMW,qBAAqB,EAA3B;AACD,OANU,CAAX;AAOD;AACF,GAzBoC,EAyBlC,CAACxB,UAAD,EAAaE,UAAb,EAAyBG,SAAzB,EAAoCb,WAApC,EAAiDqB,WAAjD,CAzBkC,CAArC;AA2BAK,EAAAA,SAAS,CAAC,MAAM;AACdI,IAAAA,mBAAmB;AACpB,GAFQ,EAEN,CAAC1B,QAAD,EAAW0B,mBAAX,CAFM,CAAT;AAIAa,EAAAA,iBAAiB,CAAC;AAAC7C,IAAAA,GAAG,EAAEY,UAAN;AAAkBkC,IAAAA,QAAQ,EAAEd;AAA5B,GAAD,CAAjB,CAhEwF,CAkExF;;AACA,MAAIe,oBAAoB,GAAGC,KAAK,EAAhC;;AACA,MAAI1B,QAAQ,IAAIpB,WAAW,KAAK,UAAhC,EAA4C;AAC1CkB,IAAAA,aAAa,CAAC,iBAAD,CAAb,GAAmC2B,oBAAnC;AACD;;AAED,sBACE,4DACM9B,UADN;AAEE,IAAA,GAAG,EAAET,MAFP;AAGE,IAAA,SAAS,EAAEyC,UAAU,oDAEnB,oBAFmB,2BAGI/C,WAHJ,EAInBe,UAAU,CAACiC,SAJQ;AAHvB,MASGhD,WAAW,KAAK,UAAhB,iBACC,qBAAC,4CAAD,kCACMiB,YADN;AAEE,IAAA,GAAG,EAAET,UAFP;AAGE,IAAA,WAAW,EAAER,WAHf;AAIE,IAAA,OAAO,EAAEG,OAJX;AAKE,IAAA,OAAO,EAAED,OALX;AAME,IAAA,UAAU,EAAED,UANd;AAOE,IAAA,KAAK,EAAEU,KAPT;AAQE,IAAA,WAAW,EAAEY;AARf,KAVJ,EAoBGvB,WAAW,KAAK,UAAhB,iBACC,qBAAC,uDAAD,kCACMH,KADN;AAEE,IAAA,EAAE,EAAEgD,oBAFN;AAGE,IAAA,UAAU,EAAEnC,UAHd;AAIE,IAAA,QAAQ,EAAEU,QAJZ;AAKE,IAAA,YAAY,EAAEH,YALhB;AAME,IAAA,KAAK,EAAEN,KANT;AAOE,IAAA,WAAW,EAAEY,WAPf;AAQE,IAAA,GAAG,EAAEf;AARP,KArBJ,eA+BE,4DAASU,aAAT;AAAwB,IAAA,SAAS,EAAE6B,UAAU,oDAAS,6BAAT;AAA7C,MACGpC,KAAK,CAACsC,YAAN,IAAsBtC,KAAK,CAACsC,YAAN,CAAmBpD,KAAnB,CAAyBO,QADlD,CA/BF,CADF;AAqCD;;AASM,SAAS8C,GAAT,CAAgBrD,KAAhB,EAAoC;AACzC,MAAI;AAACsD,IAAAA,IAAD;AAAOxC,IAAAA,KAAP;AAAcV,IAAAA,UAAU,EAAEmD;AAA1B,MAA2CvD,KAA/C;AACA,MAAI;AAACwD,IAAAA,GAAD;AAAMC,IAAAA;AAAN,MAAkBH,IAAtB;AACA,MAAIlD,UAAU,GAAGmD,aAAa,IAAIzC,KAAK,CAAC4C,YAAN,CAAmBC,GAAnB,CAAuBH,GAAvB,CAAlC;AAEA,MAAIvD,GAAG,GAAGW,MAAM,EAAhB;AACA,MAAI;AAACgD,IAAAA;AAAD,MAAaC,MAAM,CAAC;AAACP,IAAAA,IAAD;AAAOlD,IAAAA;AAAP,GAAD,EAAqBU,KAArB,EAA4Bb,GAA5B,CAAvB;AAEA,MAAI;AAAC6D,IAAAA,UAAD;AAAaC,IAAAA;AAAb,MAA0BC,QAAQ,iCACjChE,KADiC,EAAtC;AAGA,MAAIiE,UAAU,GAAGnD,KAAK,CAACkB,WAAN,KAAsBwB,GAAvC;AAEA,sBACE,qBAAC,SAAD;AAAW,IAAA,cAAc,EAAEN,UAAU,oDAAS,YAAT;AAArC,kBACE,4DACMgB,UAAU,CAACN,QAAD,EAAWE,UAAX,CADhB;AAEE,IAAA,GAAG,EAAE7D,GAFP;AAGE,IAAA,SAAS,EAAEiD,UAAU,oDAEnB,oBAFmB,EAGnB;AACE,qBAAee,UADjB;AAEE,qBAAe7D,UAFjB;AAGE,oBAAc2D;AAHhB,KAHmB;AAHvB,mBAYE,qBAAC,YAAD;AACE,IAAA,KAAK,EAAE;AACLI,MAAAA,IAAI,EAAE;AACJC,QAAAA,IAAI,EAAE,GADF;AAEJC,QAAAA,gBAAgB,EAAEnB,UAAU,oDAAS,eAAT;AAFxB,OADD;AAKLoB,MAAAA,IAAI,EAAE;AACJD,QAAAA,gBAAgB,EAAEnB,UAAU,oDAAS,yBAAT;AADxB;AALD;AADT,KAUG,OAAOO,QAAP,KAAoB,QAApB,gBACG,qBAAC,IAAD,QAAOA,QAAP,CADH,GAEGA,QAZN,CAZF,CADF,CADF;AA+BD;;;;AAQD,SAASc,4CAAT,CAAiBvE,KAAjB,EAAsC;AACpC,MAAI;AACFG,IAAAA,WADE;AAEF;AACAuB,IAAAA,WAHE;AAIF;AACAM,IAAAA;AALE,MAMAhC,KANJ;AAQA,MAAIwE,gCAAgC,GAAG,EAAvC;AACA,MAAI;AAACxD,IAAAA;AAAD,MAAcC,SAAS,EAA3B;AACA,MAAI;AAACwD,IAAAA;AAAD,MAAUC,WAAW,EAAzB;AAEA,MAAI,CAACC,KAAD,EAAQC,QAAR,IAAoBhD,QAAQ,CAAC;AAC/BiD,IAAAA,KAAK,EAAEC,SADwB;AAE/BC,IAAAA,MAAM,EAAED;AAFuB,GAAD,CAAhC;AAKAE,EAAAA,eAAe,CAAC,MAAM;AACpB,QAAItD,WAAJ,EAAiB;AAAA;;AACf,UAAIuD,QAAQ,GAAG;AAACC,QAAAA,SAAS,EAAEJ,SAAZ;AAAuBD,QAAAA,KAAK,EAAEC,SAA9B;AAAyCC,QAAAA,MAAM,EAAED;AAAjD,OAAf,CADe,CAEf;;AACA,UAAIK,MAAM,GAAGnE,SAAS,KAAK,KAAd,GAAsB,CAAC,CAAD,IAAM,SAACU,WAAW,CAAC0D,YAAb,0BAA2CC,WAA3C,IAAyD3D,WAAW,CAAC2D,WAArE,GAAmF3D,WAAW,CAAC4D,UAArG,CAAtB,GAAyI5D,WAAW,CAAC4D,UAAlK;AACAL,MAAAA,QAAQ,CAACC,SAAT,GAAqB/E,WAAW,KAAK,UAAhB,oBACHuB,WAAW,CAAC6D,SAAZ,GAAwBf,gCAAgC,GAAG,CADxD,4BAEHW,MAFG,QAArB;;AAIA,UAAIhF,WAAW,KAAK,YAApB,EAAkC;AAChC8E,QAAAA,QAAQ,CAACJ,KAAT,GAAoBnD,WAAW,CAAC2D,WAAhC;AACD,OAFD,MAEO;AACLJ,QAAAA,QAAQ,CAACF,MAAT,GAAqBrD,WAAW,CAAC8D,YAAZ,GAA2BhB,gCAAhD;AACD;;AACDI,MAAAA,QAAQ,CAACK,QAAD,CAAR;AACD;AAEF,GAjBc,EAiBZ,CAACjE,SAAD,EAAY4D,QAAZ,EAAsBlD,WAAtB,EAAmCvB,WAAnC,EAAgDsE,KAAhD,EAAuDD,gCAAvD,EAAyFxC,WAAzF,CAjBY,CAAf;AAmBA,sBAAO;AAAK,IAAA,SAAS,EAAEkB,UAAU,oDAAS,kCAAT,CAA1B;AAAwE,IAAA,IAAI,EAAC,cAA7E;AAA4F,IAAA,KAAK,EAAEyB;AAAnG,IAAP;AACD;;AASD,MAAMc,uDAAkB,GAAGC,MAAK,CAACC,UAAN,CAAiB,UAAc3F,KAAd,EAAiDC,GAAjD,EAAwF;AAClI,MAAI;AACFmB,IAAAA,YADE;AAEFd,IAAAA,OAFE;AAGFD,IAAAA,OAHE;AAIFD,IAAAA,UAJE;AAKFU,IAAAA,KALE;AAMFY,IAAAA,WANE;AAOFb,IAAAA,UAPE;AAQFU,IAAAA;AARE,MASAvB,KATJ;AAWA,MAAI4F,gBAAgB,GAAG1C,UAAU,oDAAS,yBAAT,CAAjC;AAEA,sBACE;AACE,IAAA,GAAG,EAAErC,UADP;AAEE,IAAA,SAAS,EAAEqC,UAAU,oDAEnB,oCAFmB;AAFvB,KAMG3B,QAAQ,iBAAI,qBAAC,8CAAD,kCAAevB,KAAf;AAAsB,IAAA,SAAS,EAAE4F;AAAjC,KANf,EAOG,CAACrE,QAAD,iBACC,qBAAC,4CAAD,kCACMH,YADN;AAEE,IAAA,OAAO,EAAEd,OAFX;AAGE,IAAA,OAAO,EAAED,OAHX;AAIE,IAAA,UAAU,EAAED,UAJd;AAKE,IAAA,KAAK,EAAEU,KALT;AAME,IAAA,WAAW,EAAEY,WANf;AAOE,IAAA,GAAG,EAAEzB,GAPP;AAQE,IAAA,WAAW,EAAC,YARd;AASE,IAAA,SAAS,EAAE2F;AATb,KARJ,CADF;AAsBD,CApC0B,CAA3B;;AAgDA,MAAMC,4CAAO,GAAGH,MAAK,CAACC,UAAN,CAAiB,UAAc3F,KAAd,EAAsCC,GAAtC,EAA6E;AAC5G,MAAI;AACFI,IAAAA,OADE;AAEFC,IAAAA,OAFE;AAGFQ,IAAAA,KAHE;AAIFV,IAAAA,UAJE;AAKFD,IAAAA,WALE;AAMFuB,IAAAA,WANE;AAOFyB,IAAAA;AAPE,MASAnD,KATJ;AAAA,MAQKQ,UARL,oDASIR,KATJ;;AAWA,sBACE,4DACMQ,UADN;AAEE,IAAA,GAAG,EAAEP,GAFP;AAGE,IAAA,SAAS,EAAEiD,UAAU,oDAEnB,eAFmB,sBAGD/C,WAHC,EAInB;AACE,8BAAwBE,OAD1B;AAEE,OAAC,wBAAD,GAA4BC,OAAO,KAAK;AAF1C,KAJmB,EAQnB6C,SARmB;AAHvB,MAaG,CAAC,GAAGrC,KAAK,CAACgF,UAAV,EAAsBC,GAAtB,CAA2BzC,IAAD,iBACzB,qBAAC,GAAD;AAAK,IAAA,GAAG,EAAEA,IAAI,CAACE,GAAf;AAAoB,IAAA,IAAI,EAAEF,IAA1B;AAAgC,IAAA,KAAK,EAAExC,KAAvC;AAA8C,IAAA,UAAU,EAAEV,UAA1D;AAAsE,IAAA,WAAW,EAAED;AAAnF,IADD,CAbH,eAgBE,qBAAC,4CAAD;AAAS,IAAA,WAAW,EAAEA,WAAtB;AAAmC,IAAA,WAAW,EAAEuB;AAAhD,IAhBF,CADF;AAoBD,CAhCe,CAAhB;;AAwCA,SAASsE,8CAAT,CAAsBhG,KAAtB,EAAgD;AAC9C,MAAI;AACFI,IAAAA,UADE;AAEFC,IAAAA,OAFE;AAGFS,IAAAA,KAHE;AAIF,uBAAmBmF,aAJjB;AAKF,kBAAcC,SALZ;AAMF5F,IAAAA,OANE;AAOF6C,IAAAA,SAPE;AAQFgD,IAAAA;AARE,MASAnG,KATJ;AAWA,MAAIC,GAAG,GAAGW,MAAM,EAAhB;AACA,MAAI,CAACwF,UAAD,EAAaC,aAAb,IAA8BzE,QAAQ,CAAC,IAAD,CAA1C;AAEAC,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIyE,IAAI,GAAGC,YAAY,CAACtG,GAAD,CAAvB;AACAoG,IAAAA,aAAa,CAACC,IAAI,CAACxE,OAAN,CAAb;AACD,GAHQ,EAGN,CAAC7B,GAAD,CAHM,CAAT;AAKA,MAAIuG,KAAK,GAAG,CAAC,GAAG1F,KAAK,CAACgF,UAAV,EAAsBC,GAAtB,CAA2BzC,IAAD,KAAW;AAC/CG,IAAAA,QAAQ,EAAEH,IAAI,CAACG,QADgC;AAE/CgD,IAAAA,SAAS,EAAEnD,IAAI,CAACmD,SAF+B;AAG/CN,IAAAA,EAAE,EAAE7C,IAAI,CAACE;AAHsC,GAAX,CAA1B,CAAZ;AAMA,MAAIkD,WAAW,GAAG;AAChB,uBAAmBT,aADH;AAEhB,kBAAcC;AAFE,GAAlB,CA1B8C,CA+B9C;;AACA,sBACE;AACE,IAAA,SAAS,EAAEhD,UAAU,oDAEnB,eAFmB,EAGnB,2BAHmB,EAInB,4BAJmB,EAKnB;AACE,8BAAwB7C,OAD1B;AAEE,OAAC,wBAAD,GAA4BC,OAAO,KAAK;AAF1C,KALmB,EASnB6C,SATmB;AADvB,kBAYE,qBAAC,YAAD;AACE,IAAA,KAAK,EAAE;AACLgB,MAAAA,IAAI,EAAE;AACJC,QAAAA,IAAI,EAAE,GADF;AAEJC,QAAAA,gBAAgB,EAAEnB,UAAU,oDAAS,eAAT;AAFxB,OADD;AAKLyD,MAAAA,MAAM,EAAE;AACNC,QAAAA,cAAc,EAAE1D,UAAU,oDAAS,YAAT;AADpB;AALH;AADT,kBAUE,qBAAC,MAAD,kCACMwD,WADN;AAEE,IAAA,EAAE,EAAEP,EAFN;AAGE,IAAA,KAAK,EAAEK,KAHT;AAIE,IAAA,GAAG,EAAEvG,GAJP;AAKE,IAAA,OAAO,MALT;AAME,IAAA,UAAU,EAAEG,UANd;AAOE,IAAA,WAAW,EAAEU,KAAK,CAACkB,WAPrB;AAQE,IAAA,YAAY,EAAElB,KAAK,CAAC4C,YARtB;AASE,IAAA,iBAAiB,EAAE5C,KAAK,CAAC+F;AAT3B,MAUGvD,IAAI,iBAAI,qBAAC,KAAD;AAAM,IAAA,SAAS,EAAEA,IAAI,CAACmD;AAAtB,KAAkCnD,IAAI,CAACG,QAAvC,CAVX,CAVF,EAsBG2C,UAAU,iBAAI,qBAAC,4CAAD;AAAS,IAAA,WAAW,EAAC,YAArB;AAAkC,IAAA,WAAW,EAAEA,UAA/C;AAA2D,IAAA,WAAW,EAAEtF,KAAK,CAACkB;AAA9E,IAtBjB,CAZF,CADF;AAuCD;AAED;;;AAGA;AACA;;;AACA,MAAM8E,IAAK,GAAGpB,MAAK,CAACC,UAAN,CAAiB5F,yCAAjB,CAAd","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/@adobe/spectrum-css-temp/components/tabs/vars.css","./packages/@react-spectrum/tabs/src/Tabs.tsx"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, unwrapDOMRef, useDOMRef, useStyleProps, useValueEffect} from '@react-spectrum/utils';\nimport {DOMProps, DOMRef, Node, Orientation} from '@react-types/shared';\nimport {FocusRing} from '@react-aria/focus';\nimport {Item, Picker} from '@react-spectrum/picker';\nimport {mergeProps, useId, useLayoutEffect} from '@react-aria/utils';\nimport React, {HTMLAttributes, Key, MutableRefObject, ReactElement, useCallback, useEffect, useRef, useState} from 'react';\nimport {SingleSelectListState} from '@react-stately/list';\nimport {SpectrumPickerProps} from '@react-types/select';\nimport {SpectrumTabsProps} from '@react-types/tabs';\nimport styles from '@adobe/spectrum-css-temp/components/tabs/vars.css';\nimport {Text} from '@react-spectrum/text';\nimport {useHover} from '@react-aria/interactions';\nimport {useLocale} from '@react-aria/i18n';\nimport {useProvider, useProviderProps} from '@react-spectrum/provider';\nimport {useResizeObserver} from '@react-aria/utils';\nimport {useTab, useTabs} from '@react-aria/tabs';\nimport {useTabsState} from '@react-stately/tabs';\n\nfunction Tabs<T extends object>(props: SpectrumTabsProps<T>, ref: DOMRef<HTMLDivElement>) {\n props = useProviderProps(props);\n let {\n orientation = 'horizontal' as Orientation,\n isDisabled,\n isQuiet,\n density = 'regular',\n children,\n ...otherProps\n } = props;\n\n let domRef = useDOMRef(ref);\n let tablistRef = useRef<HTMLDivElement>();\n let wrapperRef = useRef<HTMLDivElement>();\n let state = useTabsState(props);\n\n let {direction} = useLocale();\n let {styleProps} = useStyleProps(otherProps);\n let {tabListProps, tabPanelProps} = useTabs(props, state, tablistRef);\n let [collapse, setCollapse] = useValueEffect(false);\n let [selectedTab, setSelectedTab] = useState<HTMLElement>();\n\n useEffect(() => {\n if (tablistRef.current) {\n let selectedTab: HTMLElement = tablistRef.current.querySelector(`[data-key=\"${state.selectedKey}\"]`);\n\n if (selectedTab != null) {\n setSelectedTab(selectedTab);\n }\n }\n // collapse is in the dep array so selectedTab can be updated for TabLine positioning\n }, [children, state.selectedKey, collapse, tablistRef]);\n\n let checkShouldCollapse = useCallback(() => {\n let computeShouldCollapse = () => {\n if (wrapperRef.current) {\n let tabsComponent = wrapperRef.current;\n let tabs = tablistRef.current.querySelectorAll('[role=\"tab\"]');\n let lastTab = tabs[tabs.length - 1];\n\n let end = direction === 'rtl' ? 'left' : 'right';\n let farEdgeTabList = tabsComponent.getBoundingClientRect()[end];\n let farEdgeLastTab = lastTab?.getBoundingClientRect()[end];\n let shouldCollapse = direction === 'rtl' ? farEdgeLastTab < farEdgeTabList : farEdgeTabList < farEdgeLastTab;\n\n return shouldCollapse;\n }\n };\n\n if (orientation !== 'vertical') {\n setCollapse(function* () {\n // Make Tabs render in non-collapsed state\n yield false;\n\n // Compute if Tabs should collapse and update\n yield computeShouldCollapse();\n });\n }\n }, [tablistRef, wrapperRef, direction, orientation, setCollapse]);\n\n useEffect(() => {\n checkShouldCollapse();\n }, [children, checkShouldCollapse]);\n\n useResizeObserver({ref: wrapperRef, onResize: checkShouldCollapse});\n\n // When the tabs are collapsed, the tabPanel should be labelled by the Picker button element.\n let collapsibleTabListId = useId();\n if (collapse && orientation !== 'vertical') {\n tabPanelProps['aria-labelledby'] = collapsibleTabListId;\n }\n\n return (\n <div\n {...styleProps}\n ref={domRef}\n className={classNames(\n styles,\n 'spectrum-TabsPanel',\n `spectrum-TabsPanel--${orientation}`,\n styleProps.className\n )}>\n {orientation === 'vertical' &&\n <TabList\n {...tabListProps}\n ref={tablistRef}\n orientation={orientation}\n density={density}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n state={state}\n selectedTab={selectedTab} />\n }\n {orientation !== 'vertical' &&\n <CollapsibleTabList\n {...props}\n id={collapsibleTabListId}\n wrapperRef={wrapperRef}\n collapse={collapse}\n tabListProps={tabListProps}\n state={state}\n selectedTab={selectedTab}\n ref={tablistRef} />\n }\n <div {...tabPanelProps} className={classNames(styles, 'spectrum-TabsPanel-tabpanel')}>\n {state.selectedItem && state.selectedItem.props.children}\n </div>\n </div>\n );\n}\n\ninterface TabProps<T> extends DOMProps {\n item: Node<T>,\n state: SingleSelectListState<T>,\n isDisabled?: boolean,\n orientation?: Orientation\n}\n\nexport function Tab<T>(props: TabProps<T>) {\n let {item, state, isDisabled: propsDisabled} = props;\n let {key, rendered} = item;\n let isDisabled = propsDisabled || state.disabledKeys.has(key);\n\n let ref = useRef<HTMLDivElement>();\n let {tabProps} = useTab({item, isDisabled}, state, ref);\n\n let {hoverProps, isHovered} = useHover({\n ...props\n });\n let isSelected = state.selectedKey === key;\n\n return (\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <div\n {...mergeProps(tabProps, hoverProps)}\n ref={ref}\n className={classNames(\n styles,\n 'spectrum-Tabs-item',\n {\n 'is-selected': isSelected,\n 'is-disabled': isDisabled,\n 'is-hovered': isHovered\n }\n )}>\n <SlotProvider\n slots={{\n icon: {\n size: 'S',\n UNSAFE_className: classNames(styles, 'spectrum-Icon')\n },\n text: {\n UNSAFE_className: classNames(styles, 'spectrum-Tabs-itemLabel')\n }\n }}>\n {typeof rendered === 'string'\n ? <Text>{rendered}</Text>\n : rendered}\n </SlotProvider>\n </div>\n </FocusRing>\n );\n}\n\ninterface TabLineProps {\n orientation?: Orientation,\n selectedTab?: HTMLElement,\n selectedKey?: Key\n}\n\nfunction TabLine(props: TabLineProps) {\n let {\n orientation,\n // Is either the tab node (non-collapsed) or the picker node (collapsed)\n selectedTab,\n // selectedKey is provided so that the TabLine styles are updated when the TabPicker's width updates from a selection change\n selectedKey\n } = props;\n\n let verticalSelectionIndicatorOffset = 12;\n let {direction} = useLocale();\n let {scale} = useProvider();\n\n let [style, setStyle] = useState({\n width: undefined,\n height: undefined\n });\n\n useLayoutEffect(() => {\n if (selectedTab) {\n let styleObj = {transform: undefined, width: undefined, height: undefined};\n // In RTL, calculate the transform from the right edge of the tablist so that resizing the window doesn't break the Tabline position due to offsetLeft changes\n let offset = direction === 'rtl' ? -1 * ((selectedTab.offsetParent as HTMLElement)?.offsetWidth - selectedTab.offsetWidth - selectedTab.offsetLeft) : selectedTab.offsetLeft;\n styleObj.transform = orientation === 'vertical'\n ? `translateY(${selectedTab.offsetTop + verticalSelectionIndicatorOffset / 2}px)`\n : `translateX(${offset}px)`;\n\n if (orientation === 'horizontal') {\n styleObj.width = `${selectedTab.offsetWidth}px`;\n } else {\n styleObj.height = `${selectedTab.offsetHeight - verticalSelectionIndicatorOffset}px`;\n }\n setStyle(styleObj);\n }\n\n }, [direction, setStyle, selectedTab, orientation, scale, verticalSelectionIndicatorOffset, selectedKey]);\n\n return <div className={classNames(styles, 'spectrum-Tabs-selectionIndicator')} role=\"presentation\" style={style} />;\n}\n\ninterface CollapsibleTabListProps<T> extends TabListProps<T>, TabPickerProps<T> {\n tabListProps?: HTMLAttributes<HTMLElement>,\n wrapperRef: MutableRefObject<HTMLDivElement>,\n collapse?: boolean,\n tabListclassName?: string\n}\n\nconst CollapsibleTabList = React.forwardRef(function <T> (props: CollapsibleTabListProps<T>, ref: MutableRefObject<HTMLDivElement>) {\n let {\n tabListProps,\n density,\n isQuiet,\n isDisabled,\n state,\n selectedTab,\n wrapperRef,\n collapse\n } = props;\n\n let tabListclassName = classNames(styles, 'spectrum-TabsPanel-tabs');\n\n return (\n <div\n ref={wrapperRef}\n className={classNames(\n styles,\n 'spectrum-TabsPanel-collapseWrapper'\n )}>\n {collapse && <TabPicker {...props} className={tabListclassName} />}\n {!collapse && (\n <TabList\n {...tabListProps}\n density={density}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n state={state}\n selectedTab={selectedTab}\n ref={ref}\n orientation=\"horizontal\"\n className={tabListclassName} />\n )}\n </div>\n );\n});\n\ninterface TabListProps<T> {\n isQuiet?: boolean,\n density?: 'compact' | 'regular',\n isDisabled?: boolean,\n orientation?: Orientation,\n state: SingleSelectListState<T>,\n selectedTab: HTMLElement,\n className?: string\n}\n\nconst TabList = React.forwardRef(function <T> (props: TabListProps<T>, ref: MutableRefObject<HTMLDivElement>) {\n let {\n isQuiet,\n density,\n state,\n isDisabled,\n orientation,\n selectedTab,\n className,\n ...otherProps\n } = props;\n\n return (\n <div\n {...otherProps}\n ref={ref}\n className={classNames(\n styles,\n 'spectrum-Tabs',\n `spectrum-Tabs--${orientation}`,\n {\n 'spectrum-Tabs--quiet': isQuiet,\n ['spectrum-Tabs--compact']: density === 'compact'\n },\n className\n )}>\n {[...state.collection].map((item) => (\n <Tab key={item.key} item={item} state={state} isDisabled={isDisabled} orientation={orientation} />\n ))}\n <TabLine orientation={orientation} selectedTab={selectedTab} />\n </div>\n );\n});\n\ninterface TabPickerProps<T> extends SpectrumPickerProps<T> {\n density?: 'compact' | 'regular',\n state: SingleSelectListState<T>,\n className?: string\n}\n\nfunction TabPicker<T>(props: TabPickerProps<T>) {\n let {\n isDisabled,\n isQuiet,\n state,\n 'aria-labelledby': ariaLabeledBy,\n 'aria-label': ariaLabel,\n density,\n className,\n id\n } = props;\n\n let ref = useRef();\n let [pickerNode, setPickerNode] = useState(null);\n\n useEffect(() => {\n let node = unwrapDOMRef(ref);\n setPickerNode(node.current);\n }, [ref]);\n\n let items = [...state.collection].map((item) => ({\n rendered: item.rendered,\n textValue: item.textValue,\n id: item.key\n }));\n\n let pickerProps = {\n 'aria-labelledby': ariaLabeledBy,\n 'aria-label': ariaLabel\n };\n\n // TODO: Figure out if tabListProps should go onto the div here, v2 doesn't do it\n return (\n <div\n className={classNames(\n styles,\n 'spectrum-Tabs',\n 'spectrum-Tabs--horizontal',\n 'spectrum-Tabs--isCollapsed',\n {\n 'spectrum-Tabs--quiet': isQuiet,\n ['spectrum-Tabs--compact']: density === 'compact'\n },\n className\n )}>\n <SlotProvider\n slots={{\n icon: {\n size: 'S',\n UNSAFE_className: classNames(styles, 'spectrum-Icon')\n },\n button: {\n focusRingClass: classNames(styles, 'focus-ring')\n }\n }}>\n <Picker\n {...pickerProps}\n id={id}\n items={items}\n ref={ref}\n isQuiet\n isDisabled={isDisabled}\n selectedKey={state.selectedKey}\n disabledKeys={state.disabledKeys}\n onSelectionChange={state.setSelectedKey}>\n {item => <Item textValue={item.textValue}>{item.rendered}</Item>}\n </Picker>\n {pickerNode && <TabLine orientation=\"horizontal\" selectedTab={pickerNode} selectedKey={state.selectedKey} />}\n </SlotProvider>\n </div>\n );\n}\n\n/**\n * Tabs organize content into multiple sections and allow users to navigate between them. The content under the set of tabs should be related and form a coherent unit.\n */\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Tabs = React.forwardRef(Tabs) as <T>(props: SpectrumTabsProps<T> & {ref?: DOMRef<HTMLDivElement>}) => ReactElement;\nexport {_Tabs as Tabs};\n"],"names":["$parcel$interopDefault","a","__esModule","default","Tabs","props","ref","useProviderProps","orientation","isDisabled","isQuiet","density","children","otherProps","domRef","useDOMRef","tablistRef","useRef","wrapperRef","state","useTabsState","direction","useLocale","styleProps","useStyleProps","tabListProps","tabPanelProps","useTabs","collapse","setCollapse","useValueEffect","selectedTab","setSelectedTab","useState","useEffect","current","querySelector","selectedKey","checkShouldCollapse","useCallback","computeShouldCollapse","tabsComponent","tabs","querySelectorAll","lastTab","length","end","farEdgeTabList","getBoundingClientRect","farEdgeLastTab","shouldCollapse","useResizeObserver","onResize","collapsibleTabListId","useId","classNames","className","selectedItem","Tab","item","propsDisabled","key","rendered","disabledKeys","has","tabProps","useTab","hoverProps","isHovered","useHover","isSelected","mergeProps","icon","size","UNSAFE_className","text","TabLine","verticalSelectionIndicatorOffset","scale","useProvider","style","setStyle","width","undefined","height","useLayoutEffect","styleObj","transform","offset","offsetParent","offsetWidth","offsetLeft","offsetTop","offsetHeight","CollapsibleTabList","React","forwardRef","tabListclassName","TabList","collection","map","TabPicker","ariaLabeledBy","ariaLabel","id","pickerNode","setPickerNode","node","unwrapDOMRef","items","textValue","pickerProps","button","focusRingClass","setSelectedKey","_Tabs"],"version":3,"file":"main.js.map"}
1
+ {"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;CAUC,GAED,0CAA0C","sources":["packages/@react-spectrum/tabs/src/index.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {TabList, TabPanels, Tabs} from './Tabs';\nexport {Item} from '@react-stately/collections';\nexport type {SpectrumTabsProps, SpectrumTabListProps, SpectrumTabPanelsProps} from '@react-types/tabs';\n"],"names":[],"version":3,"file":"main.js.map"}