@unifiedsoftware/react-ui 1.0.14 → 1.0.16

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/index.js CHANGED
@@ -75,7 +75,9 @@ __export(src_exports, {
75
75
  MenuItem: () => MenuItem_default,
76
76
  MenuSubmenu: () => MenuSubmenu_default,
77
77
  MenuValueContext: () => MenuValueContext_default,
78
+ MultiSelect: () => MultiSelect_default,
78
79
  Portal: () => Portal_default,
80
+ Select: () => Select_default,
79
81
  Tab: () => Tab,
80
82
  Tabs: () => Tabs,
81
83
  Toolbar: () => Toolbar_default,
@@ -1175,20 +1177,563 @@ var Toolbar = (props) => {
1175
1177
  };
1176
1178
  var Toolbar_default = Toolbar;
1177
1179
 
1178
- // src/hooks/useLocalStorage.tsx
1180
+ // src/components/Select/SelectClient.tsx
1181
+ var import_kendo_data_query = require("@progress/kendo-data-query");
1182
+ var import_kendo_react_dropdowns = require("@progress/kendo-react-dropdowns");
1183
+ var import_react26 = require("react");
1184
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1185
+ var SelectClient = ({
1186
+ value: valueProp,
1187
+ data: propData,
1188
+ filter: filterProp,
1189
+ keyField: keyField2 = "key",
1190
+ textField: textField3 = "text",
1191
+ placeholder,
1192
+ virtual,
1193
+ filterable,
1194
+ disabled,
1195
+ loading,
1196
+ className,
1197
+ onChange,
1198
+ onFilterChange
1199
+ }) => {
1200
+ const [value, setValue] = (0, import_react26.useState)(valueProp);
1201
+ const [filter, setFilter] = (0, import_react26.useState)(filterProp);
1202
+ const handleChange = (event) => {
1203
+ const value2 = event.target.value || null;
1204
+ if (valueProp !== void 0) {
1205
+ onChange(value2);
1206
+ } else {
1207
+ setValue(value2);
1208
+ }
1209
+ };
1210
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1211
+ const filteredData = (0, import_react26.useRef)([]);
1212
+ const [state, setState] = (0, import_react26.useState)({
1213
+ skip: 0,
1214
+ total: propData.total,
1215
+ subsetData: propData.items.slice(0, pageSize3)
1216
+ });
1217
+ const handleFilterChange = (event) => {
1218
+ if (pageSize3) {
1219
+ filteredData.current = (0, import_kendo_data_query.filterBy)(propData.items.slice(), event.filter);
1220
+ const data = filteredData.current.slice(0, pageSize3);
1221
+ setState({
1222
+ subsetData: data,
1223
+ skip: 0,
1224
+ total: filteredData.current.length
1225
+ });
1226
+ }
1227
+ const filter2 = event.filter.value;
1228
+ if (filterProp !== void 0) {
1229
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1230
+ } else {
1231
+ setFilter(filter2);
1232
+ }
1233
+ };
1234
+ const handlePageChange = (event) => {
1235
+ if (pageSize3) {
1236
+ const skip = event.page.skip;
1237
+ const take = event.page.take;
1238
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1239
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1240
+ }
1241
+ };
1242
+ (0, import_react26.useEffect)(() => {
1243
+ if (valueProp !== void 0) {
1244
+ setValue(valueProp);
1245
+ }
1246
+ }, [valueProp]);
1247
+ (0, import_react26.useEffect)(() => {
1248
+ setFilter(filterProp);
1249
+ }, [filterProp]);
1250
+ (0, import_react26.useEffect)(() => {
1251
+ if (pageSize3) {
1252
+ filteredData.current = propData.items.slice();
1253
+ }
1254
+ }, [propData]);
1255
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1256
+ import_kendo_react_dropdowns.ComboBox,
1257
+ {
1258
+ value,
1259
+ data: pageSize3 ? state.subsetData : propData.items,
1260
+ placeholder,
1261
+ dataItemKey: keyField2,
1262
+ textField: textField3,
1263
+ filterable,
1264
+ filter,
1265
+ virtual: pageSize3 ? {
1266
+ total: state.total,
1267
+ pageSize: pageSize3,
1268
+ skip: state.skip
1269
+ } : void 0,
1270
+ disabled,
1271
+ loading,
1272
+ className,
1273
+ onChange: handleChange,
1274
+ onFilterChange: handleFilterChange,
1275
+ onPageChange: handlePageChange
1276
+ }
1277
+ );
1278
+ };
1279
+ var SelectClient_default = SelectClient;
1280
+
1281
+ // src/components/Select/SelectServer.tsx
1282
+ var import_kendo_react_dropdowns2 = require("@progress/kendo-react-dropdowns");
1283
+ var import_react27 = require("react");
1284
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1285
+ var textField = "ContactName";
1286
+ var emptyItem = { [textField]: "loading ...", CustomerID: 0 };
1287
+ var pageSize = 10;
1288
+ var loadingData = [];
1289
+ while (loadingData.length < pageSize) {
1290
+ loadingData.push(__spreadValues({}, emptyItem));
1291
+ }
1292
+ var SelectServer = ({
1293
+ data: dataProp,
1294
+ value: valueProp,
1295
+ keyField: keyField2 = "key",
1296
+ textField: textField3 = "text",
1297
+ placeholder,
1298
+ virtual,
1299
+ filterable,
1300
+ filter: filterProp = "",
1301
+ disabled,
1302
+ loading,
1303
+ className,
1304
+ onChange,
1305
+ onDataChange,
1306
+ onFilterChange,
1307
+ getData,
1308
+ renderItem
1309
+ }) => {
1310
+ var _a;
1311
+ const dataCaching = (0, import_react27.useRef)([]);
1312
+ const pendingRequest = (0, import_react27.useRef)();
1313
+ const requestStarted = (0, import_react27.useRef)(false);
1314
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1315
+ const [loadingData3, setLoadingData] = (0, import_react27.useState)([]);
1316
+ const [data, setData] = (0, import_react27.useState)(dataProp.items);
1317
+ const [total, setTotal] = (0, import_react27.useState)(0);
1318
+ const [value, setValue] = (0, import_react27.useState)(valueProp);
1319
+ const [filter, setFilter] = (0, import_react27.useState)(filterProp);
1320
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1321
+ const skipRef = (0, import_react27.useRef)(0);
1322
+ const resetCach = () => {
1323
+ dataCaching.current.length = 0;
1324
+ };
1325
+ const requestData = (0, import_react27.useCallback)((state) => {
1326
+ const { skip } = state;
1327
+ if (requestStarted.current) {
1328
+ clearTimeout(pendingRequest.current);
1329
+ pendingRequest.current = setTimeout(() => {
1330
+ requestData(state);
1331
+ }, 50);
1332
+ return;
1333
+ }
1334
+ requestStarted.current = true;
1335
+ getData(state).then(({ items, total: total2 }) => {
1336
+ items.forEach((item, index) => {
1337
+ dataCaching.current[index + skip] = item;
1338
+ });
1339
+ if (skip === skipRef.current) {
1340
+ setData(items);
1341
+ setTotal(total2);
1342
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1343
+ }
1344
+ requestStarted.current = false;
1345
+ }).catch(() => {
1346
+ requestStarted.current = false;
1347
+ });
1348
+ }, []);
1349
+ const handleFilterChange = (0, import_react27.useCallback)((event) => {
1350
+ const filter2 = event.filter.value;
1351
+ if (filterProp !== void 0) {
1352
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1353
+ } else {
1354
+ setFilter(filter2);
1355
+ }
1356
+ resetCach();
1357
+ requestData({ skip: 0, filter: filter2 });
1358
+ setData(loadingData3);
1359
+ skipRef.current = 0;
1360
+ }, []);
1361
+ const shouldRequestData = (0, import_react27.useCallback)((skip) => {
1362
+ for (let i = 0; i < pageSize3; i++) {
1363
+ if (!dataCaching.current[skip + i]) {
1364
+ return true;
1365
+ }
1366
+ }
1367
+ return false;
1368
+ }, []);
1369
+ const getCachedData = (0, import_react27.useCallback)((skip) => {
1370
+ const data2 = [];
1371
+ for (let i = 0; i < pageSize3; i++) {
1372
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1373
+ }
1374
+ return data2;
1375
+ }, []);
1376
+ const pageChange = (0, import_react27.useCallback)(
1377
+ (event) => {
1378
+ if (filter !== void 0) {
1379
+ const newSkip = event.page.skip;
1380
+ if (shouldRequestData(newSkip)) {
1381
+ requestData({ skip: newSkip, filter });
1382
+ }
1383
+ const data2 = getCachedData(newSkip);
1384
+ setData(data2);
1385
+ skipRef.current = newSkip;
1386
+ }
1387
+ },
1388
+ [getCachedData, requestData, shouldRequestData, filter]
1389
+ );
1390
+ const handleChange = (0, import_react27.useCallback)((event) => {
1391
+ const value2 = event.target.value;
1392
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1393
+ return;
1394
+ }
1395
+ if (valueProp !== void 0) {
1396
+ onChange(value2);
1397
+ } else {
1398
+ setValue(value2);
1399
+ }
1400
+ }, []);
1401
+ const handleItemRender = (li, itemProps) => {
1402
+ const itemChildren = renderItem == null ? void 0 : renderItem(itemProps.dataItem);
1403
+ if (!itemChildren)
1404
+ return (0, import_react27.cloneElement)(li, li.props);
1405
+ return (0, import_react27.cloneElement)(li, li.props, itemChildren);
1406
+ };
1407
+ (0, import_react27.useEffect)(() => {
1408
+ const pageSize4 = 10;
1409
+ const loadingData4 = [];
1410
+ while (loadingData4.length < pageSize4) {
1411
+ loadingData4.push(emptyItem3);
1412
+ }
1413
+ setLoadingData(loadingData4);
1414
+ }, []);
1415
+ (0, import_react27.useEffect)(() => {
1416
+ if (valueProp !== void 0) {
1417
+ setValue(valueProp);
1418
+ }
1419
+ }, [valueProp]);
1420
+ (0, import_react27.useEffect)(() => {
1421
+ if (filterProp !== void 0) {
1422
+ setFilter(filterProp);
1423
+ }
1424
+ }, [filterProp]);
1425
+ (0, import_react27.useEffect)(() => {
1426
+ requestData({ skip: 0, filter });
1427
+ return () => {
1428
+ resetCach();
1429
+ };
1430
+ }, [filter, requestData]);
1431
+ (0, import_react27.useEffect)(() => {
1432
+ setData(dataProp.items);
1433
+ }, [dataProp]);
1434
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1435
+ import_kendo_react_dropdowns2.ComboBox,
1436
+ {
1437
+ data,
1438
+ value,
1439
+ placeholder,
1440
+ dataItemKey: keyField2,
1441
+ textField: textField3,
1442
+ filterable,
1443
+ onFilterChange: handleFilterChange,
1444
+ virtual: {
1445
+ pageSize: pageSize3,
1446
+ skip: skipRef.current,
1447
+ total
1448
+ },
1449
+ disabled,
1450
+ loading,
1451
+ className,
1452
+ onChange: handleChange,
1453
+ onPageChange: pageChange,
1454
+ itemRender: handleItemRender
1455
+ }
1456
+ );
1457
+ };
1458
+ var SelectServer_default = SelectServer;
1459
+
1460
+ // src/components/Select/Select.tsx
1461
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1462
+ var Select = (props) => {
1463
+ return props.filterMode === "client" ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectServer_default, __spreadValues({}, props));
1464
+ };
1465
+ var Select_default = Select;
1466
+
1467
+ // src/components/MultiSelect/MultiSelectClient.tsx
1468
+ var import_kendo_data_query2 = require("@progress/kendo-data-query");
1469
+ var import_kendo_react_dropdowns3 = require("@progress/kendo-react-dropdowns");
1179
1470
  var import_react28 = require("react");
1471
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1472
+ var textField2 = "text";
1473
+ var keyField = "key";
1474
+ var emptyItem2 = { [textField2]: "loading ...", [keyField]: 0 };
1475
+ var pageSize2 = 10;
1476
+ var loadingData2 = [];
1477
+ while (loadingData2.length < pageSize2) {
1478
+ loadingData2.push(__spreadValues({}, emptyItem2));
1479
+ }
1480
+ var SelectClient2 = ({
1481
+ data: dataProp,
1482
+ value: valueProp,
1483
+ keyField: keyField2 = "key",
1484
+ textField: textField3 = "text",
1485
+ placeholder,
1486
+ virtual,
1487
+ filterable,
1488
+ filter: filterProp,
1489
+ disabled,
1490
+ loading,
1491
+ className,
1492
+ onChange,
1493
+ onFilterChange
1494
+ }) => {
1495
+ const [value, setValue] = (0, import_react28.useState)(valueProp);
1496
+ const [filter, setFilter] = (0, import_react28.useState)(filterProp);
1497
+ const handleChange = (event) => {
1498
+ onChange(event.target.value);
1499
+ };
1500
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1501
+ const filteredData = (0, import_react28.useRef)([]);
1502
+ const [state, setState] = (0, import_react28.useState)({
1503
+ skip: 0,
1504
+ total: dataProp.total,
1505
+ subsetData: dataProp.items.slice(0, pageSize3)
1506
+ });
1507
+ const handleFilterChange = (event) => {
1508
+ if (pageSize3) {
1509
+ filteredData.current = (0, import_kendo_data_query2.filterBy)(dataProp.items.slice(), event.filter);
1510
+ const data = filteredData.current.slice(0, pageSize3);
1511
+ setState({
1512
+ subsetData: data,
1513
+ skip: 0,
1514
+ total: filteredData.current.length
1515
+ });
1516
+ }
1517
+ onFilterChange == null ? void 0 : onFilterChange(event.filter.value);
1518
+ };
1519
+ const pageChange = (event) => {
1520
+ if (pageSize3) {
1521
+ const skip = event.page.skip;
1522
+ const take = event.page.take;
1523
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1524
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1525
+ }
1526
+ };
1527
+ (0, import_react28.useEffect)(() => {
1528
+ setValue(valueProp);
1529
+ }, [valueProp]);
1530
+ (0, import_react28.useEffect)(() => {
1531
+ setFilter(filterProp);
1532
+ }, [filterProp]);
1533
+ (0, import_react28.useEffect)(() => {
1534
+ if (pageSize3) {
1535
+ filteredData.current = dataProp.items.slice();
1536
+ }
1537
+ }, [dataProp]);
1538
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1539
+ import_kendo_react_dropdowns3.MultiSelect,
1540
+ {
1541
+ value,
1542
+ data: pageSize3 ? state.subsetData : dataProp.items,
1543
+ placeholder,
1544
+ dataItemKey: keyField2,
1545
+ textField: textField3,
1546
+ filterable,
1547
+ filter,
1548
+ virtual: pageSize3 ? {
1549
+ total: state.total,
1550
+ pageSize: pageSize3,
1551
+ skip: state.skip
1552
+ } : void 0,
1553
+ disabled,
1554
+ loading,
1555
+ className,
1556
+ onChange: handleChange,
1557
+ onFilterChange: handleFilterChange,
1558
+ onPageChange: pageChange
1559
+ }
1560
+ );
1561
+ };
1562
+ var MultiSelectClient_default = SelectClient2;
1563
+
1564
+ // src/components/MultiSelect/MultiSelectServer.tsx
1565
+ var import_kendo_react_dropdowns4 = require("@progress/kendo-react-dropdowns");
1566
+ var import_react29 = require("react");
1567
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1568
+ var MultiSelectServer = ({
1569
+ data: dataProp,
1570
+ value: valueProp,
1571
+ keyField: keyField2 = "key",
1572
+ textField: textField3 = "text",
1573
+ placeholder,
1574
+ virtual,
1575
+ filterable,
1576
+ filter: filterProp = "",
1577
+ disabled,
1578
+ loading,
1579
+ className,
1580
+ onDataChange,
1581
+ onChange,
1582
+ onFilterChange,
1583
+ getData
1584
+ }) => {
1585
+ var _a;
1586
+ const dataCaching = (0, import_react29.useRef)([]);
1587
+ const pendingRequest = (0, import_react29.useRef)();
1588
+ const requestStarted = (0, import_react29.useRef)(false);
1589
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1590
+ const [loadingData3, setLoadingData] = (0, import_react29.useState)([]);
1591
+ const [data, setData] = (0, import_react29.useState)(dataProp.items);
1592
+ const [total, setTotal] = (0, import_react29.useState)(0);
1593
+ const [value, setValue] = (0, import_react29.useState)(valueProp);
1594
+ const [filter, setFilter] = (0, import_react29.useState)(filterProp);
1595
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1596
+ const skipRef = (0, import_react29.useRef)(0);
1597
+ const resetCach = () => {
1598
+ dataCaching.current.length = 0;
1599
+ };
1600
+ const requestData = (0, import_react29.useCallback)((state) => {
1601
+ if (requestStarted.current) {
1602
+ clearTimeout(pendingRequest.current);
1603
+ pendingRequest.current = setTimeout(() => {
1604
+ requestData(state);
1605
+ }, 50);
1606
+ return;
1607
+ }
1608
+ requestStarted.current = true;
1609
+ getData(state).then(({ items, total: total2 }) => {
1610
+ const { skip } = state;
1611
+ items.forEach((item, index) => {
1612
+ dataCaching.current[index + skip] = item;
1613
+ });
1614
+ if (skip === skipRef.current) {
1615
+ setData(items);
1616
+ setTotal(total2);
1617
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1618
+ }
1619
+ requestStarted.current = false;
1620
+ }).catch(() => {
1621
+ requestStarted.current = false;
1622
+ });
1623
+ }, []);
1624
+ const handleFilterChange = (0, import_react29.useCallback)((event) => {
1625
+ const filter2 = event.filter.value;
1626
+ resetCach();
1627
+ requestData({ skip: 0, filter: filter2 });
1628
+ setData(loadingData3);
1629
+ skipRef.current = 0;
1630
+ setFilter(filter2);
1631
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1632
+ }, []);
1633
+ const shouldRequestData = (0, import_react29.useCallback)((skip) => {
1634
+ for (let i = 0; i < pageSize3; i++) {
1635
+ if (!dataCaching.current[skip + i]) {
1636
+ return true;
1637
+ }
1638
+ }
1639
+ return false;
1640
+ }, []);
1641
+ const getCachedData = (0, import_react29.useCallback)((skip) => {
1642
+ const data2 = [];
1643
+ for (let i = 0; i < pageSize3; i++) {
1644
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1645
+ }
1646
+ return data2;
1647
+ }, []);
1648
+ const pageChange = (0, import_react29.useCallback)(
1649
+ (event) => {
1650
+ const newSkip = event.page.skip;
1651
+ if (shouldRequestData(newSkip)) {
1652
+ requestData({ skip: newSkip, filter });
1653
+ }
1654
+ const data2 = getCachedData(newSkip);
1655
+ setData(data2);
1656
+ skipRef.current = newSkip;
1657
+ },
1658
+ [getCachedData, requestData, shouldRequestData, filter]
1659
+ );
1660
+ const handleChange = (0, import_react29.useCallback)((event) => {
1661
+ const value2 = event.target.value;
1662
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1663
+ return;
1664
+ }
1665
+ setValue(value2);
1666
+ onChange(value2);
1667
+ }, []);
1668
+ (0, import_react29.useEffect)(() => {
1669
+ const pageSize4 = 10;
1670
+ const loadingData4 = [];
1671
+ while (loadingData4.length < pageSize4) {
1672
+ loadingData4.push(emptyItem3);
1673
+ }
1674
+ setLoadingData(loadingData4);
1675
+ }, []);
1676
+ (0, import_react29.useEffect)(() => {
1677
+ setData(dataProp.items);
1678
+ }, [dataProp]);
1679
+ (0, import_react29.useEffect)(() => {
1680
+ setValue(valueProp);
1681
+ }, [valueProp]);
1682
+ (0, import_react29.useEffect)(() => {
1683
+ setFilter(filterProp);
1684
+ }, [filterProp]);
1685
+ (0, import_react29.useEffect)(() => {
1686
+ requestData({ skip: 0, filter });
1687
+ return () => {
1688
+ resetCach();
1689
+ };
1690
+ }, [filter, requestData]);
1691
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1692
+ import_kendo_react_dropdowns4.MultiSelect,
1693
+ {
1694
+ data,
1695
+ value,
1696
+ placeholder,
1697
+ dataItemKey: keyField2,
1698
+ textField: textField3,
1699
+ filterable,
1700
+ onFilterChange: handleFilterChange,
1701
+ virtual: {
1702
+ pageSize: pageSize3,
1703
+ skip: skipRef.current,
1704
+ total
1705
+ },
1706
+ disabled,
1707
+ loading,
1708
+ className,
1709
+ onChange: handleChange,
1710
+ onPageChange: pageChange
1711
+ }
1712
+ );
1713
+ };
1714
+ var MultiSelectServer_default = MultiSelectServer;
1715
+
1716
+ // src/components/MultiSelect/MultiSelect.tsx
1717
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1718
+ var MultiSelect3 = (props) => {
1719
+ return props.filterMode === "client" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MultiSelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MultiSelectServer_default, __spreadValues({}, props));
1720
+ };
1721
+ var MultiSelect_default = MultiSelect3;
1722
+
1723
+ // src/hooks/useLocalStorage.tsx
1724
+ var import_react32 = require("react");
1180
1725
 
1181
1726
  // src/hooks/useEventListener.tsx
1182
- var import_react27 = require("react");
1727
+ var import_react31 = require("react");
1183
1728
 
1184
1729
  // src/hooks/useIsomorphicLayoutEffect.tsx
1185
- var import_react26 = require("react");
1186
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react26.useLayoutEffect : import_react26.useEffect;
1730
+ var import_react30 = require("react");
1731
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react30.useLayoutEffect : import_react30.useEffect;
1187
1732
  var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
1188
1733
 
1189
1734
  // src/hooks/useEventListener.tsx
1190
1735
  function useEventListener(handler) {
1191
- const savedHandler = (0, import_react27.useRef)(handler);
1736
+ const savedHandler = (0, import_react31.useRef)(handler);
1192
1737
  useIsomorphicLayoutEffect_default(() => {
1193
1738
  savedHandler.current = handler;
1194
1739
  }, [handler]);
@@ -1197,7 +1742,7 @@ var useEventListener_default = useEventListener;
1197
1742
 
1198
1743
  // src/hooks/useLocalStorage.tsx
1199
1744
  function useLocalStorage(key, initialValue) {
1200
- const readValue = (0, import_react28.useCallback)(() => {
1745
+ const readValue = (0, import_react32.useCallback)(() => {
1201
1746
  if (typeof window === "undefined") {
1202
1747
  return initialValue;
1203
1748
  }
@@ -1209,8 +1754,8 @@ function useLocalStorage(key, initialValue) {
1209
1754
  return initialValue;
1210
1755
  }
1211
1756
  }, [initialValue, key]);
1212
- const [storedValue, setStoredValue] = (0, import_react28.useState)(readValue);
1213
- const setValue = (0, import_react28.useCallback)(
1757
+ const [storedValue, setStoredValue] = (0, import_react32.useState)(readValue);
1758
+ const setValue = (0, import_react32.useCallback)(
1214
1759
  (value) => {
1215
1760
  if (typeof window == "undefined") {
1216
1761
  console.warn(`Tried setting localStorage key \u201C${key}\u201D even though environment is not a client`);
@@ -1226,10 +1771,10 @@ function useLocalStorage(key, initialValue) {
1226
1771
  },
1227
1772
  [key, storedValue]
1228
1773
  );
1229
- (0, import_react28.useEffect)(() => {
1774
+ (0, import_react32.useEffect)(() => {
1230
1775
  setStoredValue(readValue());
1231
1776
  }, []);
1232
- const handleStorageChange = (0, import_react28.useCallback)(() => {
1777
+ const handleStorageChange = (0, import_react32.useCallback)(() => {
1233
1778
  setStoredValue(readValue());
1234
1779
  }, [readValue]);
1235
1780
  useEventListener_default("storage", handleStorageChange);
@@ -1240,28 +1785,27 @@ function parseJSON(value) {
1240
1785
  try {
1241
1786
  return value === "undefined" ? void 0 : JSON.parse(value != null ? value : "");
1242
1787
  } catch (e) {
1243
- console.log("parsing error on", { value });
1244
1788
  return void 0;
1245
1789
  }
1246
1790
  }
1247
1791
 
1248
1792
  // src/hooks/usePrevious.tsx
1249
- var import_react29 = require("react");
1793
+ var import_react33 = require("react");
1250
1794
  var usePrevious = (value) => {
1251
- const ref = (0, import_react29.useRef)();
1252
- (0, import_react29.useEffect)(() => {
1795
+ const ref = (0, import_react33.useRef)();
1796
+ (0, import_react33.useEffect)(() => {
1253
1797
  ref.current = value;
1254
1798
  });
1255
1799
  return ref.current;
1256
1800
  };
1257
1801
 
1258
1802
  // src/hooks/useStep.tsx
1259
- var import_react30 = require("react");
1803
+ var import_react34 = require("react");
1260
1804
  var useStep = (maxStep) => {
1261
- const [currentStep, setCurrentStep] = (0, import_react30.useState)(1);
1262
- const canGoToNextStep = (0, import_react30.useMemo)(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
1263
- const canGoToPrevStep = (0, import_react30.useMemo)(() => currentStep - 1 >= 1, [currentStep]);
1264
- const setStep = (0, import_react30.useCallback)(
1805
+ const [currentStep, setCurrentStep] = (0, import_react34.useState)(1);
1806
+ const canGoToNextStep = (0, import_react34.useMemo)(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
1807
+ const canGoToPrevStep = (0, import_react34.useMemo)(() => currentStep - 1 >= 1, [currentStep]);
1808
+ const setStep = (0, import_react34.useCallback)(
1265
1809
  (step) => {
1266
1810
  const newStep = step instanceof Function ? step(currentStep) : step;
1267
1811
  if (newStep >= 1 && newStep <= maxStep) {
@@ -1272,17 +1816,17 @@ var useStep = (maxStep) => {
1272
1816
  },
1273
1817
  [maxStep, currentStep]
1274
1818
  );
1275
- const goToNextStep = (0, import_react30.useCallback)(() => {
1819
+ const goToNextStep = (0, import_react34.useCallback)(() => {
1276
1820
  if (canGoToNextStep) {
1277
1821
  setCurrentStep((step) => step + 1);
1278
1822
  }
1279
1823
  }, [canGoToNextStep]);
1280
- const goToPrevStep = (0, import_react30.useCallback)(() => {
1824
+ const goToPrevStep = (0, import_react34.useCallback)(() => {
1281
1825
  if (canGoToPrevStep) {
1282
1826
  setCurrentStep((step) => step - 1);
1283
1827
  }
1284
1828
  }, [canGoToPrevStep]);
1285
- const reset = (0, import_react30.useCallback)(() => {
1829
+ const reset = (0, import_react34.useCallback)(() => {
1286
1830
  setCurrentStep(1);
1287
1831
  }, []);
1288
1832
  return [
@@ -1315,7 +1859,9 @@ var useStep = (maxStep) => {
1315
1859
  MenuItem,
1316
1860
  MenuSubmenu,
1317
1861
  MenuValueContext,
1862
+ MultiSelect,
1318
1863
  Portal,
1864
+ Select,
1319
1865
  Tab,
1320
1866
  Tabs,
1321
1867
  Toolbar,