@doist/reactist 33.1.0 → 33.2.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/CHANGELOG.md +12 -0
- package/dist/reactist.cjs.development.js +378 -144
- package/dist/reactist.cjs.development.js.map +1 -1
- package/dist/reactist.cjs.production.min.js +1 -1
- package/dist/reactist.cjs.production.min.js.map +1 -1
- package/es/checkbox-field/checkbox-field.js.map +1 -1
- package/es/components/color-picker/deprecated-button/deprecated-button.js +0 -5
- package/es/components/color-picker/deprecated-button/deprecated-button.js.map +1 -1
- package/es/components/color-picker/deprecated-dropdown/dropdown.js +5 -4
- package/es/components/color-picker/deprecated-dropdown/dropdown.js.map +1 -1
- package/es/icons/alert-icon.js.map +1 -1
- package/es/icons/banner-icon.js.map +1 -1
- package/es/icons/close-icon.js.map +1 -1
- package/es/icons/password-hidden-icon.js.map +1 -1
- package/es/icons/password-visible-icon.js.map +1 -1
- package/es/select-field/select-field.js.map +1 -1
- package/es/stack/stack.js +3 -1
- package/es/stack/stack.js.map +1 -1
- package/es/tabs/tabs.js +354 -125
- package/es/tabs/tabs.js.map +1 -1
- package/es/text-area/text-area.js.map +1 -1
- package/es/toast/use-toasts.js +1 -1
- package/es/toast/use-toasts.js.map +1 -1
- package/es/tooltip/tooltip.js +6 -2
- package/es/tooltip/tooltip.js.map +1 -1
- package/es/utils/common-helpers.js +11 -6
- package/es/utils/common-helpers.js.map +1 -1
- package/es/utils/polymorphism.js.map +1 -1
- package/lib/checkbox-field/checkbox-field.d.ts +1 -0
- package/lib/checkbox-field/checkbox-field.js.map +1 -1
- package/lib/components/color-picker/deprecated-button/deprecated-button.js +0 -5
- package/lib/components/color-picker/deprecated-button/deprecated-button.js.map +1 -1
- package/lib/components/color-picker/deprecated-dropdown/dropdown.d.ts +5 -3
- package/lib/components/color-picker/deprecated-dropdown/dropdown.js +5 -5
- package/lib/components/color-picker/deprecated-dropdown/dropdown.js.map +1 -1
- package/lib/components/icons/ThreeDotsIcon.svg.d.ts +3 -9
- package/lib/icons/alert-icon.d.ts +2 -2
- package/lib/icons/alert-icon.js.map +1 -1
- package/lib/icons/banner-icon.d.ts +2 -2
- package/lib/icons/banner-icon.js.map +1 -1
- package/lib/icons/close-icon.d.ts +2 -2
- package/lib/icons/close-icon.js.map +1 -1
- package/lib/icons/password-hidden-icon.d.ts +2 -2
- package/lib/icons/password-hidden-icon.js.map +1 -1
- package/lib/icons/password-visible-icon.d.ts +2 -2
- package/lib/icons/password-visible-icon.js.map +1 -1
- package/lib/modal/modal-stories-components.d.ts +10 -9
- package/lib/select-field/select-field.js.map +1 -1
- package/lib/stack/stack.js +3 -1
- package/lib/stack/stack.js.map +1 -1
- package/lib/tabs/tabs.js +353 -124
- package/lib/tabs/tabs.js.map +1 -1
- package/lib/text-area/text-area.js.map +1 -1
- package/lib/toast/use-toasts.js +1 -1
- package/lib/toast/use-toasts.js.map +1 -1
- package/lib/tooltip/tooltip.d.ts +2 -1
- package/lib/tooltip/tooltip.js +6 -2
- package/lib/tooltip/tooltip.js.map +1 -1
- package/lib/utils/common-helpers.js +11 -6
- package/lib/utils/common-helpers.js.map +1 -1
- package/lib/utils/polymorphism.d.ts +1 -2
- package/lib/utils/polymorphism.js.map +1 -1
- package/lib/utils/storybook-helper.d.ts +4 -3
- package/package.json +23 -11
- /package/styles/{stack.css → divider.css} +0 -0
package/lib/tabs/tabs.js
CHANGED
|
@@ -39,27 +39,60 @@ const TabsContext = /*#__PURE__*/React__namespace.createContext(null);
|
|
|
39
39
|
/**
|
|
40
40
|
* Used to group components that compose a set of tabs. There can only be one active tab within the same `<Tabs>` group.
|
|
41
41
|
*/
|
|
42
|
-
function Tabs({
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
variant = 'neutral',
|
|
47
|
-
onSelectedIdChange
|
|
48
|
-
}) {
|
|
49
|
-
const tabStore = react.useTabStore({
|
|
50
|
-
defaultSelectedId,
|
|
42
|
+
function Tabs(t0) {
|
|
43
|
+
const $ = reactCompilerRuntime.c(11);
|
|
44
|
+
const {
|
|
45
|
+
children,
|
|
51
46
|
selectedId,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
defaultSelectedId,
|
|
48
|
+
variant: t1,
|
|
49
|
+
onSelectedIdChange
|
|
50
|
+
} = t0;
|
|
51
|
+
const variant = t1 === undefined ? "neutral" : t1;
|
|
52
|
+
let t2;
|
|
53
|
+
if ($[0] !== defaultSelectedId || $[1] !== onSelectedIdChange || $[2] !== selectedId) {
|
|
54
|
+
t2 = {
|
|
55
|
+
defaultSelectedId,
|
|
56
|
+
selectedId,
|
|
57
|
+
setSelectedId: onSelectedIdChange
|
|
58
|
+
};
|
|
59
|
+
$[0] = defaultSelectedId;
|
|
60
|
+
$[1] = onSelectedIdChange;
|
|
61
|
+
$[2] = selectedId;
|
|
62
|
+
$[3] = t2;
|
|
63
|
+
} else {
|
|
64
|
+
t2 = $[3];
|
|
65
|
+
}
|
|
66
|
+
const tabStore = react.useTabStore(t2);
|
|
67
|
+
const actualSelectedId = react.useStoreState(tabStore, "selectedId");
|
|
68
|
+
const t3 = selectedId ?? actualSelectedId ?? null;
|
|
69
|
+
let t4;
|
|
70
|
+
if ($[4] !== t3 || $[5] !== tabStore || $[6] !== variant) {
|
|
71
|
+
t4 = {
|
|
72
|
+
tabStore,
|
|
73
|
+
variant,
|
|
74
|
+
selectedId: t3
|
|
75
|
+
};
|
|
76
|
+
$[4] = t3;
|
|
77
|
+
$[5] = tabStore;
|
|
78
|
+
$[6] = variant;
|
|
79
|
+
$[7] = t4;
|
|
80
|
+
} else {
|
|
81
|
+
t4 = $[7];
|
|
82
|
+
}
|
|
83
|
+
const memoizedTabState = t4;
|
|
84
|
+
let t5;
|
|
85
|
+
if ($[8] !== children || $[9] !== memoizedTabState) {
|
|
86
|
+
t5 = /*#__PURE__*/React__namespace.createElement(TabsContext.Provider, {
|
|
87
|
+
value: memoizedTabState
|
|
88
|
+
}, children);
|
|
89
|
+
$[8] = children;
|
|
90
|
+
$[9] = memoizedTabState;
|
|
91
|
+
$[10] = t5;
|
|
92
|
+
} else {
|
|
93
|
+
t5 = $[10];
|
|
94
|
+
}
|
|
95
|
+
return t5;
|
|
63
96
|
}
|
|
64
97
|
/**
|
|
65
98
|
* Represents the individual tab elements within the group. Each `<Tab>` must have a corresponding `<TabPanel>` component.
|
|
@@ -121,64 +154,133 @@ const Tab = /*#__PURE__*/React__namespace.forwardRef(function Tab(t0, ref) {
|
|
|
121
154
|
/**
|
|
122
155
|
* A component used to group `<Tab>` elements together.
|
|
123
156
|
*/
|
|
124
|
-
function TabList({
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
157
|
+
function TabList(t0) {
|
|
158
|
+
const $ = reactCompilerRuntime.c(44);
|
|
159
|
+
let children;
|
|
160
|
+
let exceptionallySetClassName;
|
|
161
|
+
let props;
|
|
162
|
+
let space;
|
|
163
|
+
let t1;
|
|
164
|
+
let t2;
|
|
165
|
+
if ($[0] !== t0) {
|
|
166
|
+
({
|
|
167
|
+
children,
|
|
168
|
+
space,
|
|
169
|
+
width: t1,
|
|
170
|
+
align: t2,
|
|
171
|
+
exceptionallySetClassName,
|
|
172
|
+
...props
|
|
173
|
+
} = t0);
|
|
174
|
+
$[0] = t0;
|
|
175
|
+
$[1] = children;
|
|
176
|
+
$[2] = exceptionallySetClassName;
|
|
177
|
+
$[3] = props;
|
|
178
|
+
$[4] = space;
|
|
179
|
+
$[5] = t1;
|
|
180
|
+
$[6] = t2;
|
|
181
|
+
} else {
|
|
182
|
+
children = $[1];
|
|
183
|
+
exceptionallySetClassName = $[2];
|
|
184
|
+
props = $[3];
|
|
185
|
+
space = $[4];
|
|
186
|
+
t1 = $[5];
|
|
187
|
+
t2 = $[6];
|
|
188
|
+
}
|
|
189
|
+
const width = t1 === undefined ? "maxContent" : t1;
|
|
190
|
+
const align = t2 === undefined ? "start" : t2;
|
|
132
191
|
const tabListRef = React__namespace.useRef(null);
|
|
133
192
|
const tabListPrevWidthRef = React__namespace.useRef(0);
|
|
134
193
|
const tabContextValue = React__namespace.useContext(TabsContext);
|
|
135
194
|
const [selectedTabElement, setSelectedTabElement] = React__namespace.useState(null);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
let animationFrameId = null;
|
|
159
|
-
const tabListObserver = new ResizeObserver(([entry]) => {
|
|
160
|
-
const width_0 = entry?.contentRect.width;
|
|
161
|
-
if (width_0 && tabListPrevWidthRef.current !== width_0) {
|
|
162
|
-
tabListPrevWidthRef.current = width_0;
|
|
163
|
-
if (animationFrameId !== null) {
|
|
164
|
-
cancelAnimationFrame(animationFrameId);
|
|
165
|
-
}
|
|
166
|
-
animationFrameId = requestAnimationFrame(() => {
|
|
167
|
-
updateSelectedTabPosition();
|
|
168
|
-
animationFrameId = null;
|
|
195
|
+
let t3;
|
|
196
|
+
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
197
|
+
t3 = {};
|
|
198
|
+
$[7] = t3;
|
|
199
|
+
} else {
|
|
200
|
+
t3 = $[7];
|
|
201
|
+
}
|
|
202
|
+
const [selectedTabStyle, setSelectedTabStyle] = React__namespace.useState(t3);
|
|
203
|
+
const selectedId = react.useStoreState(tabContextValue?.tabStore, "selectedId");
|
|
204
|
+
let t4;
|
|
205
|
+
if ($[8] !== selectedId) {
|
|
206
|
+
t4 = function updateSelectedTabPositionCallback() {
|
|
207
|
+
if (!selectedId || !tabListRef.current) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const tabs = tabListRef.current.querySelectorAll("[role=\"tab\"]");
|
|
211
|
+
const selectedTab = Array.from(tabs).find(tab => tab.getAttribute("id") === selectedId);
|
|
212
|
+
if (selectedTab) {
|
|
213
|
+
setSelectedTabElement(selectedTab);
|
|
214
|
+
setSelectedTabStyle({
|
|
215
|
+
left: `${selectedTab.offsetLeft}px`,
|
|
216
|
+
width: `${selectedTab.offsetWidth}px`
|
|
169
217
|
});
|
|
170
218
|
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
219
|
+
};
|
|
220
|
+
$[8] = selectedId;
|
|
221
|
+
$[9] = t4;
|
|
222
|
+
} else {
|
|
223
|
+
t4 = $[9];
|
|
224
|
+
}
|
|
225
|
+
const updateSelectedTabPosition = t4;
|
|
226
|
+
let t5;
|
|
227
|
+
if ($[10] !== updateSelectedTabPosition) {
|
|
228
|
+
t5 = function updateSelectedTabPositionOnTabChange() {
|
|
229
|
+
updateSelectedTabPosition();
|
|
230
|
+
};
|
|
231
|
+
$[10] = updateSelectedTabPosition;
|
|
232
|
+
$[11] = t5;
|
|
233
|
+
} else {
|
|
234
|
+
t5 = $[11];
|
|
235
|
+
}
|
|
236
|
+
let t6;
|
|
237
|
+
if ($[12] !== selectedId || $[13] !== updateSelectedTabPosition) {
|
|
238
|
+
t6 = [selectedId, updateSelectedTabPosition];
|
|
239
|
+
$[12] = selectedId;
|
|
240
|
+
$[13] = updateSelectedTabPosition;
|
|
241
|
+
$[14] = t6;
|
|
242
|
+
} else {
|
|
243
|
+
t6 = $[14];
|
|
244
|
+
}
|
|
245
|
+
React__namespace.useEffect(t5, t6);
|
|
246
|
+
let t7;
|
|
247
|
+
let t8;
|
|
248
|
+
if ($[15] !== updateSelectedTabPosition) {
|
|
249
|
+
t7 = function observeTabListWidthChange() {
|
|
250
|
+
let animationFrameId = null;
|
|
251
|
+
const tabListObserver = new ResizeObserver(t9 => {
|
|
252
|
+
const [entry] = t9;
|
|
253
|
+
const width_0 = entry?.contentRect.width;
|
|
254
|
+
if (width_0 && tabListPrevWidthRef.current !== width_0) {
|
|
255
|
+
tabListPrevWidthRef.current = width_0;
|
|
256
|
+
if (animationFrameId !== null) {
|
|
257
|
+
cancelAnimationFrame(animationFrameId);
|
|
258
|
+
}
|
|
259
|
+
animationFrameId = requestAnimationFrame(() => {
|
|
260
|
+
updateSelectedTabPosition();
|
|
261
|
+
animationFrameId = null;
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
if (tabListRef.current) {
|
|
266
|
+
tabListObserver.observe(tabListRef.current);
|
|
178
267
|
}
|
|
179
|
-
|
|
268
|
+
return function cleanupResizeObserver() {
|
|
269
|
+
if (animationFrameId) {
|
|
270
|
+
cancelAnimationFrame(animationFrameId);
|
|
271
|
+
}
|
|
272
|
+
tabListObserver.disconnect();
|
|
273
|
+
};
|
|
180
274
|
};
|
|
181
|
-
|
|
275
|
+
t8 = [updateSelectedTabPosition];
|
|
276
|
+
$[15] = updateSelectedTabPosition;
|
|
277
|
+
$[16] = t7;
|
|
278
|
+
$[17] = t8;
|
|
279
|
+
} else {
|
|
280
|
+
t7 = $[16];
|
|
281
|
+
t8 = $[17];
|
|
282
|
+
}
|
|
283
|
+
React__namespace.useEffect(t7, t8);
|
|
182
284
|
if (!tabContextValue) {
|
|
183
285
|
return null;
|
|
184
286
|
}
|
|
@@ -186,83 +288,210 @@ function TabList({
|
|
|
186
288
|
tabStore,
|
|
187
289
|
variant
|
|
188
290
|
} = tabContextValue;
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
291
|
+
let t9;
|
|
292
|
+
if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
|
|
293
|
+
t9 = {
|
|
294
|
+
start: "flexStart",
|
|
295
|
+
end: "flexEnd",
|
|
296
|
+
center: "center"
|
|
297
|
+
};
|
|
298
|
+
$[18] = t9;
|
|
299
|
+
} else {
|
|
300
|
+
t9 = $[18];
|
|
301
|
+
}
|
|
302
|
+
const justifyContentAlignMap = t9;
|
|
303
|
+
const t10 = width === "full" ? "center" : justifyContentAlignMap[align];
|
|
304
|
+
let t11;
|
|
305
|
+
if ($[19] !== exceptionallySetClassName || $[20] !== width) {
|
|
306
|
+
t11 = /*#__PURE__*/React__namespace.createElement(box.Box, {
|
|
307
|
+
position: "relative",
|
|
308
|
+
width: width,
|
|
309
|
+
className: exceptionallySetClassName
|
|
310
|
+
});
|
|
311
|
+
$[19] = exceptionallySetClassName;
|
|
312
|
+
$[20] = width;
|
|
313
|
+
$[21] = t11;
|
|
314
|
+
} else {
|
|
315
|
+
t11 = $[21];
|
|
316
|
+
}
|
|
317
|
+
const t12 = tabs_module["default"][`track-${variant}`];
|
|
318
|
+
let t13;
|
|
319
|
+
if ($[22] !== t12) {
|
|
320
|
+
t13 = /*#__PURE__*/React__namespace.createElement(box.Box, {
|
|
321
|
+
className: [tabs_module["default"].track, t12]
|
|
322
|
+
});
|
|
323
|
+
$[22] = t12;
|
|
324
|
+
$[23] = t13;
|
|
325
|
+
} else {
|
|
326
|
+
t13 = $[23];
|
|
327
|
+
}
|
|
328
|
+
let t14;
|
|
329
|
+
if ($[24] !== selectedTabElement || $[25] !== selectedTabStyle || $[26] !== variant) {
|
|
330
|
+
t14 = selectedTabElement ? /*#__PURE__*/React__namespace.createElement(box.Box, {
|
|
213
331
|
className: [tabs_module["default"].selected, tabs_module["default"][`selected-${variant}`]],
|
|
214
332
|
style: selectedTabStyle
|
|
215
|
-
}) : null
|
|
333
|
+
}) : null;
|
|
334
|
+
$[24] = selectedTabElement;
|
|
335
|
+
$[25] = selectedTabStyle;
|
|
336
|
+
$[26] = variant;
|
|
337
|
+
$[27] = t14;
|
|
338
|
+
} else {
|
|
339
|
+
t14 = $[27];
|
|
340
|
+
}
|
|
341
|
+
const t15 = width === "full" ? tabs_module["default"].fullTabList : null;
|
|
342
|
+
let t16;
|
|
343
|
+
if ($[28] !== t15) {
|
|
344
|
+
t16 = classNames__default["default"](t15);
|
|
345
|
+
$[28] = t15;
|
|
346
|
+
$[29] = t16;
|
|
347
|
+
} else {
|
|
348
|
+
t16 = $[29];
|
|
349
|
+
}
|
|
350
|
+
let t17;
|
|
351
|
+
if ($[30] !== children || $[31] !== space || $[32] !== t16) {
|
|
352
|
+
t17 = /*#__PURE__*/React__namespace.createElement(inline.Inline, {
|
|
216
353
|
space: space,
|
|
217
|
-
exceptionallySetClassName:
|
|
218
|
-
}, children)
|
|
219
|
-
|
|
354
|
+
exceptionallySetClassName: t16
|
|
355
|
+
}, children);
|
|
356
|
+
$[30] = children;
|
|
357
|
+
$[31] = space;
|
|
358
|
+
$[32] = t16;
|
|
359
|
+
$[33] = t17;
|
|
360
|
+
} else {
|
|
361
|
+
t17 = $[33];
|
|
362
|
+
}
|
|
363
|
+
let t18;
|
|
364
|
+
if ($[34] !== props || $[35] !== t11 || $[36] !== t13 || $[37] !== t14 || $[38] !== t17 || $[39] !== tabStore) {
|
|
365
|
+
t18 = /*#__PURE__*/React__namespace.createElement(react.TabList, _extends__default["default"]({
|
|
366
|
+
store: tabStore,
|
|
367
|
+
render: t11,
|
|
368
|
+
ref: tabListRef
|
|
369
|
+
}, props), t13, t14, t17);
|
|
370
|
+
$[34] = props;
|
|
371
|
+
$[35] = t11;
|
|
372
|
+
$[36] = t13;
|
|
373
|
+
$[37] = t14;
|
|
374
|
+
$[38] = t17;
|
|
375
|
+
$[39] = tabStore;
|
|
376
|
+
$[40] = t18;
|
|
377
|
+
} else {
|
|
378
|
+
t18 = $[40];
|
|
379
|
+
}
|
|
380
|
+
let t19;
|
|
381
|
+
if ($[41] !== t10 || $[42] !== t18) {
|
|
382
|
+
t19 = /*#__PURE__*/React__namespace.createElement(box.Box, {
|
|
383
|
+
display: "flex",
|
|
384
|
+
justifyContent: t10
|
|
385
|
+
}, t18);
|
|
386
|
+
$[41] = t10;
|
|
387
|
+
$[42] = t18;
|
|
388
|
+
$[43] = t19;
|
|
389
|
+
} else {
|
|
390
|
+
t19 = $[43];
|
|
391
|
+
}
|
|
392
|
+
return t19;
|
|
220
393
|
}
|
|
221
394
|
/**
|
|
222
395
|
* Used to define the content to be rendered when a tab is active. Each `<TabPanel>` must have a
|
|
223
396
|
* corresponding `<Tab>` component.
|
|
224
397
|
*/
|
|
225
|
-
const TabPanel = /*#__PURE__*/React__namespace.forwardRef(function TabPanel({
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
398
|
+
const TabPanel = /*#__PURE__*/React__namespace.forwardRef(function TabPanel(t0, ref) {
|
|
399
|
+
const $ = reactCompilerRuntime.c(16);
|
|
400
|
+
let children;
|
|
401
|
+
let id;
|
|
402
|
+
let props;
|
|
403
|
+
let t1;
|
|
404
|
+
if ($[0] !== t0) {
|
|
405
|
+
({
|
|
406
|
+
children,
|
|
407
|
+
id,
|
|
408
|
+
renderMode: t1,
|
|
409
|
+
...props
|
|
410
|
+
} = t0);
|
|
411
|
+
$[0] = t0;
|
|
412
|
+
$[1] = children;
|
|
413
|
+
$[2] = id;
|
|
414
|
+
$[3] = props;
|
|
415
|
+
$[4] = t1;
|
|
416
|
+
} else {
|
|
417
|
+
children = $[1];
|
|
418
|
+
id = $[2];
|
|
419
|
+
props = $[3];
|
|
420
|
+
t1 = $[4];
|
|
421
|
+
}
|
|
422
|
+
const renderMode = t1 === undefined ? "always" : t1;
|
|
231
423
|
const tabContextValue = React__namespace.useContext(TabsContext);
|
|
232
424
|
const [tabRendered, setTabRendered] = React__namespace.useState(false);
|
|
233
|
-
const selectedId = tabContextValue?.tabStore
|
|
425
|
+
const selectedId = react.useStoreState(tabContextValue?.tabStore, "selectedId");
|
|
234
426
|
const tabIsActive = selectedId === id;
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
427
|
+
let t2;
|
|
428
|
+
let t3;
|
|
429
|
+
if ($[5] !== tabIsActive || $[6] !== tabRendered) {
|
|
430
|
+
t2 = function trackTabRenderedState() {
|
|
431
|
+
if (!tabRendered && tabIsActive) {
|
|
432
|
+
setTabRendered(true);
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
t3 = [tabRendered, tabIsActive];
|
|
436
|
+
$[5] = tabIsActive;
|
|
437
|
+
$[6] = tabRendered;
|
|
438
|
+
$[7] = t2;
|
|
439
|
+
$[8] = t3;
|
|
440
|
+
} else {
|
|
441
|
+
t2 = $[7];
|
|
442
|
+
t3 = $[8];
|
|
443
|
+
}
|
|
444
|
+
React__namespace.useEffect(t2, t3);
|
|
241
445
|
if (!tabContextValue) {
|
|
242
446
|
return null;
|
|
243
447
|
}
|
|
244
448
|
const {
|
|
245
449
|
tabStore
|
|
246
450
|
} = tabContextValue;
|
|
247
|
-
const shouldRender = renderMode ===
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
451
|
+
const shouldRender = renderMode === "always" || renderMode === "active" && tabIsActive || renderMode === "lazy" && (tabIsActive || tabRendered);
|
|
452
|
+
let t4;
|
|
453
|
+
if ($[9] !== children || $[10] !== id || $[11] !== props || $[12] !== ref || $[13] !== shouldRender || $[14] !== tabStore) {
|
|
454
|
+
t4 = shouldRender ? /*#__PURE__*/React__namespace.createElement(react.TabPanel, _extends__default["default"]({}, props, {
|
|
455
|
+
tabId: id,
|
|
456
|
+
store: tabStore,
|
|
457
|
+
ref: ref
|
|
458
|
+
}), children) : null;
|
|
459
|
+
$[9] = children;
|
|
460
|
+
$[10] = id;
|
|
461
|
+
$[11] = props;
|
|
462
|
+
$[12] = ref;
|
|
463
|
+
$[13] = shouldRender;
|
|
464
|
+
$[14] = tabStore;
|
|
465
|
+
$[15] = t4;
|
|
466
|
+
} else {
|
|
467
|
+
t4 = $[15];
|
|
468
|
+
}
|
|
469
|
+
return t4;
|
|
253
470
|
});
|
|
254
471
|
/**
|
|
255
472
|
* Allows content to be rendered based on the current tab being selected while outside of the
|
|
256
473
|
* TabPanel component. Can be placed freely within the main `<Tabs>` component.
|
|
257
474
|
*/
|
|
258
|
-
function TabAwareSlot({
|
|
259
|
-
|
|
260
|
-
|
|
475
|
+
function TabAwareSlot(t0) {
|
|
476
|
+
const $ = reactCompilerRuntime.c(4);
|
|
477
|
+
const {
|
|
478
|
+
children
|
|
479
|
+
} = t0;
|
|
261
480
|
const tabContextValue = React__namespace.useContext(TabsContext);
|
|
262
|
-
const selectedId = tabContextValue?.tabStore
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
481
|
+
const selectedId = react.useStoreState(tabContextValue?.tabStore, "selectedId");
|
|
482
|
+
let t1;
|
|
483
|
+
if ($[0] !== children || $[1] !== selectedId || $[2] !== tabContextValue) {
|
|
484
|
+
t1 = tabContextValue ? children({
|
|
485
|
+
selectedId
|
|
486
|
+
}) : null;
|
|
487
|
+
$[0] = children;
|
|
488
|
+
$[1] = selectedId;
|
|
489
|
+
$[2] = tabContextValue;
|
|
490
|
+
$[3] = t1;
|
|
491
|
+
} else {
|
|
492
|
+
t1 = $[3];
|
|
493
|
+
}
|
|
494
|
+
return t1;
|
|
266
495
|
}
|
|
267
496
|
|
|
268
497
|
exports.Tab = Tab;
|
package/lib/tabs/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport {\n Tab as BaseTab,\n TabList as BaseTabList,\n TabPanel as BaseTabPanel,\n useTabStore,\n} from '@ariakit/react'\nimport classNames from 'classnames'\n\nimport { Box } from '../box'\nimport { Inline } from '../inline'\n\nimport styles from './tabs.module.css'\n\nimport type {\n TabPanelProps as BaseTabPanelProps,\n TabProps as BaseTabProps,\n TabStore,\n} from '@ariakit/react'\nimport type { BoxJustifyContent } from '../box'\nimport type { ObfuscatedClassName, Space } from '../utils/common-types'\n\ntype TabsContextValue = Required<Pick<TabsProps, 'variant'>> & {\n tabStore: TabStore\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\n\ninterface TabsProps {\n /**\n * The `<Tabs>` component must be composed from a `<TabList>` and corresponding `<TabPanel>`\n * components\n */\n children: React.ReactNode\n\n /**\n * Determines the look and feel of the tabs\n */\n variant?: 'themed' | 'neutral'\n\n /**\n * The id of the selected tab. Assigning a value makes this a controlled component\n */\n selectedId?: string | null\n\n /**\n * The tab to initially select. This can be used if the component should not\n * be a controlled component but needs to have a tab selected\n */\n defaultSelectedId?: string | null\n\n /**\n * Called with the tab id when a tab is selected\n */\n onSelectedIdChange?: (selectedId: string | null | undefined) => void\n}\n\n/**\n * Used to group components that compose a set of tabs. There can only be one active tab within the same `<Tabs>` group.\n */\nfunction Tabs({\n children,\n selectedId,\n defaultSelectedId,\n variant = 'neutral',\n onSelectedIdChange,\n}: TabsProps): React.ReactElement {\n const tabStore = useTabStore({\n defaultSelectedId,\n selectedId,\n setSelectedId: onSelectedIdChange,\n })\n const actualSelectedId = tabStore.useState('selectedId')\n\n const memoizedTabState = React.useMemo(\n () => ({ tabStore, variant, selectedId: selectedId ?? actualSelectedId ?? null }),\n [variant, tabStore, selectedId, actualSelectedId],\n )\n return <TabsContext.Provider value={memoizedTabState}>{children}</TabsContext.Provider>\n}\n\ninterface TabProps\n extends ObfuscatedClassName,\n Omit<BaseTabProps, 'store' | 'className' | 'children' | 'id'> {\n /**\n * The content to render inside of the tab button\n */\n children: React.ReactNode\n\n /**\n * The tab's identifier. This must match its corresponding `<TabPanel>`'s id\n */\n id: string\n\n /**\n * Defines wether or not the tab is disabled.\n */\n disabled?: boolean\n}\n\n/**\n * Represents the individual tab elements within the group. Each `<Tab>` must have a corresponding `<TabPanel>` component.\n */\nconst Tab = React.forwardRef<HTMLButtonElement, TabProps>(function Tab(\n { children, id, disabled, exceptionallySetClassName, render, onClick },\n ref,\n): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n if (!tabContextValue) return null\n\n const { variant, tabStore } = tabContextValue\n const className = classNames(exceptionallySetClassName, styles.tab, styles[`tab-${variant}`])\n\n return (\n <BaseTab\n id={id}\n ref={ref}\n disabled={disabled}\n store={tabStore}\n render={render}\n className={className}\n onClick={onClick}\n >\n {children}\n </BaseTab>\n )\n})\n\ntype TabListProps = (\n | {\n /** Labels the tab list for assistive technologies. This must be provided if `aria-labelledby` is omitted. */\n 'aria-label': string\n }\n | {\n /**\n * One or more element IDs used to label the tab list for assistive technologies. Required if\n * `aria-label` is omitted.\n */\n 'aria-labelledby': string\n }\n | {\n /**\n * For cases where multiple instances of the tab list exists, the duplicates may be marked as aria-hidden\n */\n 'aria-hidden': boolean\n }\n) & {\n /**\n * A list of `<Tab>` elements\n */\n children: React.ReactNode\n\n /**\n * Controls the spacing between tabs\n */\n space?: Space\n\n /**\n * The width of the tab list.\n *\n * - `'maxContent'`: Each tab will be as wide as its content.\n * - `'full'`: Each tab will be as wide as the tab list.\n *\n * @default 'maxContent'\n */\n width?: 'maxContent' | 'full'\n\n /**\n * How to align the tabs within the tab list.\n *\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end'\n} & ObfuscatedClassName\n\n/**\n * A component used to group `<Tab>` elements together.\n */\nfunction TabList({\n children,\n space,\n width = 'maxContent',\n align = 'start',\n exceptionallySetClassName,\n ...props\n}: TabListProps): React.ReactElement | null {\n const tabListRef = React.useRef<HTMLDivElement | null>(null)\n const tabListPrevWidthRef = React.useRef(0)\n\n const tabContextValue = React.useContext(TabsContext)\n\n const [selectedTabElement, setSelectedTabElement] = React.useState<HTMLElement | null>(null)\n const [selectedTabStyle, setSelectedTabStyle] = React.useState<React.CSSProperties>({})\n\n const selectedId = tabContextValue?.tabStore.useState('selectedId')\n\n const updateSelectedTabPosition = React.useCallback(\n function updateSelectedTabPositionCallback() {\n if (!selectedId || !tabListRef.current) {\n return\n }\n\n const tabs = tabListRef.current.querySelectorAll('[role=\"tab\"]')\n\n const selectedTab = Array.from(tabs).find(\n (tab) => tab.getAttribute('id') === selectedId,\n ) as HTMLElement | undefined\n\n if (selectedTab) {\n setSelectedTabElement(selectedTab)\n setSelectedTabStyle({\n left: `${selectedTab.offsetLeft}px`,\n width: `${selectedTab.offsetWidth}px`,\n })\n }\n },\n [selectedId],\n )\n\n React.useEffect(\n function updateSelectedTabPositionOnTabChange() {\n updateSelectedTabPosition()\n },\n // `selectedId` is a dependency to ensure the effect runs when the selected tab changes\n [selectedId, updateSelectedTabPosition],\n )\n\n React.useEffect(\n function observeTabListWidthChange() {\n let animationFrameId: number | null = null\n\n const tabListObserver = new ResizeObserver(([entry]) => {\n const width = entry?.contentRect.width\n\n if (width && tabListPrevWidthRef.current !== width) {\n tabListPrevWidthRef.current = width\n\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId)\n }\n\n animationFrameId = requestAnimationFrame(() => {\n updateSelectedTabPosition()\n animationFrameId = null\n })\n }\n })\n\n if (tabListRef.current) {\n tabListObserver.observe(tabListRef.current)\n }\n\n return function cleanupResizeObserver() {\n if (animationFrameId) {\n cancelAnimationFrame(animationFrameId)\n }\n\n tabListObserver.disconnect()\n }\n },\n [updateSelectedTabPosition],\n )\n\n if (!tabContextValue) {\n return null\n }\n\n const { tabStore, variant } = tabContextValue\n\n const justifyContentAlignMap: Record<typeof align, BoxJustifyContent> = {\n start: 'flexStart',\n end: 'flexEnd',\n center: 'center',\n }\n\n return (\n // This extra <Box> not only provides alignment for the tabs, but also prevents <Inline>'s\n // negative margins from collapsing when used in a flex container which will render the\n // track with the wrong height\n <Box\n display=\"flex\"\n justifyContent={width === 'full' ? 'center' : justifyContentAlignMap[align]}\n >\n <BaseTabList\n store={tabStore}\n render={\n <Box position=\"relative\" width={width} className={exceptionallySetClassName} />\n }\n ref={tabListRef}\n {...props}\n >\n <Box className={[styles.track, styles[`track-${variant}`]]} />\n {selectedTabElement ? (\n <Box\n className={[styles.selected, styles[`selected-${variant}`]]}\n style={selectedTabStyle}\n />\n ) : null}\n <Inline\n space={space}\n exceptionallySetClassName={classNames(\n width === 'full' ? styles.fullTabList : null,\n )}\n >\n {children}\n </Inline>\n </BaseTabList>\n </Box>\n )\n}\n\ninterface TabPanelProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Pick<BaseTabPanelProps, 'render'> {\n /** The content to be rendered inside the tab */\n children?: React.ReactNode\n\n /** The tabPanel's identifier. This must match its corresponding `<Tab>`'s id */\n id: string\n\n /**\n * By default, the tab panel's content is always rendered even when they are not active. This\n * behaviour can be changed to 'active', which renders only when the tab is active, and 'lazy',\n * meaning while inactive tab panels will not be rendered initially, they will remain mounted\n * once they are active until the entire Tabs tree is unmounted.\n */\n renderMode?: 'always' | 'active' | 'lazy'\n}\n\n/**\n * Used to define the content to be rendered when a tab is active. Each `<TabPanel>` must have a\n * corresponding `<Tab>` component.\n */\nconst TabPanel = React.forwardRef<HTMLDivElement, TabPanelProps>(function TabPanel(\n { children, id, renderMode = 'always', ...props },\n ref,\n): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n const [tabRendered, setTabRendered] = React.useState(false)\n const selectedId = tabContextValue?.tabStore.useState('selectedId')\n const tabIsActive = selectedId === id\n\n React.useEffect(\n function trackTabRenderedState() {\n if (!tabRendered && tabIsActive) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setTabRendered(true)\n }\n },\n [tabRendered, tabIsActive],\n )\n\n if (!tabContextValue) {\n return null\n }\n\n const { tabStore } = tabContextValue\n const shouldRender =\n renderMode === 'always' ||\n (renderMode === 'active' && tabIsActive) ||\n (renderMode === 'lazy' && (tabIsActive || tabRendered))\n\n return shouldRender ? (\n <BaseTabPanel {...props} tabId={id} store={tabStore} ref={ref}>\n {children}\n </BaseTabPanel>\n ) : null\n})\n\ntype TabAwareSlotProps = {\n /**\n * Render prop used to provide the content to be rendered inside the slot. The render prop will\n * be called with the current `selectedId`\n */\n children: (provided: { selectedId?: string | null }) => React.ReactElement | null\n}\n\n/**\n * Allows content to be rendered based on the current tab being selected while outside of the\n * TabPanel component. Can be placed freely within the main `<Tabs>` component.\n */\nfunction TabAwareSlot({ children }: TabAwareSlotProps): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n const selectedId = tabContextValue?.tabStore.useState('selectedId')\n return tabContextValue ? children({ selectedId }) : null\n}\n\nexport { Tab, TabAwareSlot, TabList, TabPanel, Tabs }\n"],"names":["TabsContext","React","createContext","Tabs","children","selectedId","defaultSelectedId","variant","onSelectedIdChange","tabStore","useTabStore","setSelectedId","actualSelectedId","useState","memoizedTabState","useMemo","createElement","Provider","value","Tab","forwardRef","t0","ref","$","_c","id","disabled","exceptionallySetClassName","render","onClick","tabContextValue","useContext","t1","styles","t2","classNames","tab","className","t3","BaseTab","TabList","space","width","align","props","tabListRef","useRef","tabListPrevWidthRef","selectedTabElement","setSelectedTabElement","selectedTabStyle","setSelectedTabStyle","updateSelectedTabPosition","useCallback","updateSelectedTabPositionCallback","current","tabs","querySelectorAll","selectedTab","Array","from","find","getAttribute","left","offsetLeft","offsetWidth","useEffect","updateSelectedTabPositionOnTabChange","observeTabListWidthChange","animationFrameId","tabListObserver","ResizeObserver","entry","contentRect","cancelAnimationFrame","requestAnimationFrame","observe","cleanupResizeObserver","disconnect","justifyContentAlignMap","start","end","center","Box","display","justifyContent","BaseTabList","_extends","store","position","track","selected","style","Inline","fullTabList","TabPanel","renderMode","tabRendered","setTabRendered","tabIsActive","trackTabRenderedState","shouldRender","BaseTabPanel","tabId","TabAwareSlot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport {\n Tab as BaseTab,\n TabList as BaseTabList,\n TabPanel as BaseTabPanel,\n useStoreState,\n useTabStore,\n} from '@ariakit/react'\nimport classNames from 'classnames'\n\nimport { Box } from '../box'\nimport { Inline } from '../inline'\n\nimport styles from './tabs.module.css'\n\nimport type {\n TabPanelProps as BaseTabPanelProps,\n TabProps as BaseTabProps,\n TabStore,\n} from '@ariakit/react'\nimport type { BoxJustifyContent } from '../box'\nimport type { ObfuscatedClassName, Space } from '../utils/common-types'\n\ntype TabsContextValue = Required<Pick<TabsProps, 'variant'>> & {\n tabStore: TabStore\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\n\ninterface TabsProps {\n /**\n * The `<Tabs>` component must be composed from a `<TabList>` and corresponding `<TabPanel>`\n * components\n */\n children: React.ReactNode\n\n /**\n * Determines the look and feel of the tabs\n */\n variant?: 'themed' | 'neutral'\n\n /**\n * The id of the selected tab. Assigning a value makes this a controlled component\n */\n selectedId?: string | null\n\n /**\n * The tab to initially select. This can be used if the component should not\n * be a controlled component but needs to have a tab selected\n */\n defaultSelectedId?: string | null\n\n /**\n * Called with the tab id when a tab is selected\n */\n onSelectedIdChange?: (selectedId: string | null | undefined) => void\n}\n\n/**\n * Used to group components that compose a set of tabs. There can only be one active tab within the same `<Tabs>` group.\n */\nfunction Tabs({\n children,\n selectedId,\n defaultSelectedId,\n variant = 'neutral',\n onSelectedIdChange,\n}: TabsProps): React.ReactElement {\n const tabStore = useTabStore({\n defaultSelectedId,\n selectedId,\n setSelectedId: onSelectedIdChange,\n })\n const actualSelectedId = useStoreState(tabStore, 'selectedId')\n\n const memoizedTabState = React.useMemo(\n () => ({ tabStore, variant, selectedId: selectedId ?? actualSelectedId ?? null }),\n [variant, tabStore, selectedId, actualSelectedId],\n )\n return <TabsContext.Provider value={memoizedTabState}>{children}</TabsContext.Provider>\n}\n\ninterface TabProps\n extends ObfuscatedClassName,\n Omit<BaseTabProps, 'store' | 'className' | 'children' | 'id'> {\n /**\n * The content to render inside of the tab button\n */\n children: React.ReactNode\n\n /**\n * The tab's identifier. This must match its corresponding `<TabPanel>`'s id\n */\n id: string\n\n /**\n * Defines wether or not the tab is disabled.\n */\n disabled?: boolean\n}\n\n/**\n * Represents the individual tab elements within the group. Each `<Tab>` must have a corresponding `<TabPanel>` component.\n */\nconst Tab = React.forwardRef<HTMLButtonElement, TabProps>(function Tab(\n { children, id, disabled, exceptionallySetClassName, render, onClick },\n ref,\n): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n if (!tabContextValue) return null\n\n const { variant, tabStore } = tabContextValue\n const className = classNames(exceptionallySetClassName, styles.tab, styles[`tab-${variant}`])\n\n return (\n <BaseTab\n id={id}\n ref={ref}\n disabled={disabled}\n store={tabStore}\n render={render}\n className={className}\n onClick={onClick}\n >\n {children}\n </BaseTab>\n )\n})\n\ntype TabListProps = (\n | {\n /** Labels the tab list for assistive technologies. This must be provided if `aria-labelledby` is omitted. */\n 'aria-label': string\n }\n | {\n /**\n * One or more element IDs used to label the tab list for assistive technologies. Required if\n * `aria-label` is omitted.\n */\n 'aria-labelledby': string\n }\n | {\n /**\n * For cases where multiple instances of the tab list exists, the duplicates may be marked as aria-hidden\n */\n 'aria-hidden': boolean\n }\n) & {\n /**\n * A list of `<Tab>` elements\n */\n children: React.ReactNode\n\n /**\n * Controls the spacing between tabs\n */\n space?: Space\n\n /**\n * The width of the tab list.\n *\n * - `'maxContent'`: Each tab will be as wide as its content.\n * - `'full'`: Each tab will be as wide as the tab list.\n *\n * @default 'maxContent'\n */\n width?: 'maxContent' | 'full'\n\n /**\n * How to align the tabs within the tab list.\n *\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end'\n} & ObfuscatedClassName\n\n/**\n * A component used to group `<Tab>` elements together.\n */\nfunction TabList({\n children,\n space,\n width = 'maxContent',\n align = 'start',\n exceptionallySetClassName,\n ...props\n}: TabListProps): React.ReactElement | null {\n const tabListRef = React.useRef<HTMLDivElement | null>(null)\n const tabListPrevWidthRef = React.useRef(0)\n\n const tabContextValue = React.useContext(TabsContext)\n\n const [selectedTabElement, setSelectedTabElement] = React.useState<HTMLElement | null>(null)\n const [selectedTabStyle, setSelectedTabStyle] = React.useState<React.CSSProperties>({})\n\n const selectedId = useStoreState(tabContextValue?.tabStore, 'selectedId')\n\n const updateSelectedTabPosition = React.useCallback(\n function updateSelectedTabPositionCallback() {\n if (!selectedId || !tabListRef.current) {\n return\n }\n\n const tabs = tabListRef.current.querySelectorAll('[role=\"tab\"]')\n\n const selectedTab = Array.from(tabs).find(\n (tab) => tab.getAttribute('id') === selectedId,\n ) as HTMLElement | undefined\n\n if (selectedTab) {\n setSelectedTabElement(selectedTab)\n setSelectedTabStyle({\n left: `${selectedTab.offsetLeft}px`,\n width: `${selectedTab.offsetWidth}px`,\n })\n }\n },\n [selectedId],\n )\n\n React.useEffect(\n function updateSelectedTabPositionOnTabChange() {\n updateSelectedTabPosition()\n },\n // `selectedId` is a dependency to ensure the effect runs when the selected tab changes\n [selectedId, updateSelectedTabPosition],\n )\n\n React.useEffect(\n function observeTabListWidthChange() {\n let animationFrameId: number | null = null\n\n const tabListObserver = new ResizeObserver(([entry]) => {\n const width = entry?.contentRect.width\n\n if (width && tabListPrevWidthRef.current !== width) {\n tabListPrevWidthRef.current = width\n\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId)\n }\n\n animationFrameId = requestAnimationFrame(() => {\n updateSelectedTabPosition()\n animationFrameId = null\n })\n }\n })\n\n if (tabListRef.current) {\n tabListObserver.observe(tabListRef.current)\n }\n\n return function cleanupResizeObserver() {\n if (animationFrameId) {\n cancelAnimationFrame(animationFrameId)\n }\n\n tabListObserver.disconnect()\n }\n },\n [updateSelectedTabPosition],\n )\n\n if (!tabContextValue) {\n return null\n }\n\n const { tabStore, variant } = tabContextValue\n\n const justifyContentAlignMap: Record<typeof align, BoxJustifyContent> = {\n start: 'flexStart',\n end: 'flexEnd',\n center: 'center',\n }\n\n return (\n // This extra <Box> not only provides alignment for the tabs, but also prevents <Inline>'s\n // negative margins from collapsing when used in a flex container which will render the\n // track with the wrong height\n <Box\n display=\"flex\"\n justifyContent={width === 'full' ? 'center' : justifyContentAlignMap[align]}\n >\n <BaseTabList\n store={tabStore}\n render={\n <Box position=\"relative\" width={width} className={exceptionallySetClassName} />\n }\n ref={tabListRef}\n {...props}\n >\n <Box className={[styles.track, styles[`track-${variant}`]]} />\n {selectedTabElement ? (\n <Box\n className={[styles.selected, styles[`selected-${variant}`]]}\n style={selectedTabStyle}\n />\n ) : null}\n <Inline\n space={space}\n exceptionallySetClassName={classNames(\n width === 'full' ? styles.fullTabList : null,\n )}\n >\n {children}\n </Inline>\n </BaseTabList>\n </Box>\n )\n}\n\ninterface TabPanelProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Pick<BaseTabPanelProps, 'render'> {\n /** The content to be rendered inside the tab */\n children?: React.ReactNode\n\n /** The tabPanel's identifier. This must match its corresponding `<Tab>`'s id */\n id: string\n\n /**\n * By default, the tab panel's content is always rendered even when they are not active. This\n * behaviour can be changed to 'active', which renders only when the tab is active, and 'lazy',\n * meaning while inactive tab panels will not be rendered initially, they will remain mounted\n * once they are active until the entire Tabs tree is unmounted.\n */\n renderMode?: 'always' | 'active' | 'lazy'\n}\n\n/**\n * Used to define the content to be rendered when a tab is active. Each `<TabPanel>` must have a\n * corresponding `<Tab>` component.\n */\nconst TabPanel = React.forwardRef<HTMLDivElement, TabPanelProps>(function TabPanel(\n { children, id, renderMode = 'always', ...props },\n ref,\n): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n const [tabRendered, setTabRendered] = React.useState(false)\n const selectedId = useStoreState(tabContextValue?.tabStore, 'selectedId')\n const tabIsActive = selectedId === id\n\n React.useEffect(\n function trackTabRenderedState() {\n if (!tabRendered && tabIsActive) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setTabRendered(true)\n }\n },\n [tabRendered, tabIsActive],\n )\n\n if (!tabContextValue) {\n return null\n }\n\n const { tabStore } = tabContextValue\n const shouldRender =\n renderMode === 'always' ||\n (renderMode === 'active' && tabIsActive) ||\n (renderMode === 'lazy' && (tabIsActive || tabRendered))\n\n return shouldRender ? (\n <BaseTabPanel {...props} tabId={id} store={tabStore} ref={ref}>\n {children}\n </BaseTabPanel>\n ) : null\n})\n\ntype TabAwareSlotProps = {\n /**\n * Render prop used to provide the content to be rendered inside the slot. The render prop will\n * be called with the current `selectedId`\n */\n children: (provided: { selectedId?: string | null }) => React.ReactElement | null\n}\n\n/**\n * Allows content to be rendered based on the current tab being selected while outside of the\n * TabPanel component. Can be placed freely within the main `<Tabs>` component.\n */\nfunction TabAwareSlot({ children }: TabAwareSlotProps): React.ReactElement | null {\n const tabContextValue = React.useContext(TabsContext)\n const selectedId = useStoreState(tabContextValue?.tabStore, 'selectedId')\n return tabContextValue ? children({ selectedId }) : null\n}\n\nexport { Tab, TabAwareSlot, TabList, TabPanel, Tabs }\n"],"names":["TabsContext","React","createContext","Tabs","t0","$","_c","children","selectedId","defaultSelectedId","variant","t1","onSelectedIdChange","undefined","t2","setSelectedId","tabStore","useTabStore","actualSelectedId","useStoreState","t3","t4","memoizedTabState","t5","createElement","Provider","Tab","forwardRef","ref","id","disabled","exceptionallySetClassName","render","onClick","tabContextValue","useContext","styles","classNames","tab","className","BaseTab","TabList","props","space","width","align","tabListRef","useRef","tabListPrevWidthRef","selectedTabElement","setSelectedTabElement","useState","Symbol","for","selectedTabStyle","setSelectedTabStyle","updateSelectedTabPositionCallback","current","tabs","querySelectorAll","selectedTab","Array","from","find","getAttribute","left","offsetLeft","offsetWidth","updateSelectedTabPosition","updateSelectedTabPositionOnTabChange","t6","useEffect","t7","t8","observeTabListWidthChange","animationFrameId","tabListObserver","ResizeObserver","t9","entry","width_0","contentRect","cancelAnimationFrame","requestAnimationFrame","observe","cleanupResizeObserver","disconnect","start","end","center","justifyContentAlignMap","t10","t11","Box","position","t12","t13","track","t14","selected","t15","fullTabList","t16","t17","Inline","t18","BaseTabList","_extends","t19","display","justifyContent","TabPanel","renderMode","tabRendered","setTabRendered","tabIsActive","trackTabRenderedState","shouldRender","BaseTabPanel","TabAwareSlot"],"mappings":"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"}
|