@commonsku/styles 1.16.2 → 1.16.4

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
@@ -1328,16 +1328,18 @@ var themeOptions = {
1328
1328
  },
1329
1329
  };
1330
1330
  function getColor(color, def) {
1331
+ var _a;
1331
1332
  if (!color) {
1332
1333
  return '';
1333
1334
  }
1334
- return ___default.get(colors, color, ___default.get(colors, def || '', def));
1335
+ return (_a = ___default.get(colors, color, ___default.get(colors, def || '', def))) !== null && _a !== void 0 ? _a : '';
1335
1336
  }
1336
1337
  function getFontStyle(value, def) {
1338
+ var _a;
1337
1339
  if (!value) {
1338
1340
  return '';
1339
1341
  }
1340
- return ___default.get(fontStyles, value, ___default.get(fontStyles, def || '', def));
1342
+ return (_a = ___default.get(fontStyles, value, ___default.get(fontStyles, def || '', def))) !== null && _a !== void 0 ? _a : '';
1341
1343
  }
1342
1344
  function getThemeColor(props, color, fallbackColor) {
1343
1345
  return getThemeProperty(props, 'colors', color, fallbackColor);
@@ -1353,6 +1355,7 @@ function getThemeFontFamily(props, fallbackValue) {
1353
1355
  return getThemeProperty(props, 'fontFamily', fallbackValue);
1354
1356
  }
1355
1357
  function getThemeProperty(props, prop, value, fallbackValue) {
1358
+ var _a, _b;
1356
1359
  if (___default.get(props, "theme.".concat(prop), null)) {
1357
1360
  if (___default.isObject(props.theme[prop]) && ___default.get(props.theme, "".concat(prop, ".").concat(value), null)) {
1358
1361
  return ___default.get(props.theme, "".concat(prop, ".").concat(value), null);
@@ -1362,7 +1365,7 @@ function getThemeProperty(props, prop, value, fallbackValue) {
1362
1365
  }
1363
1366
  }
1364
1367
  else if (___default.get(themeOptions, "".concat(prop, ".").concat(value), null)) {
1365
- return ___default.get(themeOptions, "".concat(prop, ".").concat(value), null);
1368
+ return (_a = ___default.get(themeOptions, "".concat(prop, ".").concat(value))) !== null && _a !== void 0 ? _a : '';
1366
1369
  }
1367
1370
  switch (prop) {
1368
1371
  case 'fontStyles':
@@ -1372,7 +1375,7 @@ function getThemeProperty(props, prop, value, fallbackValue) {
1372
1375
  case 'colors':
1373
1376
  return getColor(value, fallbackValue);
1374
1377
  case 'fontFamily':
1375
- return ___default.get(themeOptions.fontFamilies, "".concat(value, ".fontFamily"), fallbackValue || themeOptions.fontFamily);
1378
+ return (_b = ___default.get(themeOptions.fontFamilies, "".concat(value, ".fontFamily"), fallbackValue || themeOptions.fontFamily)) !== null && _b !== void 0 ? _b : '';
1376
1379
  default:
1377
1380
  return '';
1378
1381
  }
@@ -3422,6 +3425,241 @@ var THSorted = function (_a) {
3422
3425
  };
3423
3426
  var templateObject_1$m, templateObject_2$d, templateObject_3$6, templateObject_4$5, templateObject_5$5, templateObject_6$4, templateObject_7$2, templateObject_8$1, templateObject_9;
3424
3427
 
3428
+ var useClickOutside = function (props) {
3429
+ var ref = props.ref, _a = props.eventType, eventType = _a === void 0 ? 'mousedown' : _a, onClick = props.onClick, onCleanup = props.onCleanup;
3430
+ React.useEffect(function () {
3431
+ function handleClickOutside(e) {
3432
+ console.log('handleClickOutside');
3433
+ if (ref.current && !ref.current.contains(e.target)) {
3434
+ console.log('click outside');
3435
+ onClick && onClick(e);
3436
+ }
3437
+ }
3438
+ document.addEventListener(eventType, handleClickOutside);
3439
+ return function () {
3440
+ document.removeEventListener(eventType, handleClickOutside);
3441
+ onCleanup && onCleanup();
3442
+ };
3443
+ }, []);
3444
+ };
3445
+
3446
+ var QUERY = '(prefers-reduced-motion: no-preference)';
3447
+ var isRenderingOnServer = typeof window$1 === 'undefined';
3448
+ var getInitialState = function () {
3449
+ // For our initial server render, we won't know if the user
3450
+ // prefers reduced motion, but it doesn't matter. This value
3451
+ // will be overwritten on the client, before any animations
3452
+ // occur.
3453
+ return isRenderingOnServer ? true : !window$1.matchMedia(QUERY).matches;
3454
+ };
3455
+ var usePrefersReducedMotion = function () {
3456
+ var _a = React__default.useState(getInitialState), prefersReducedMotion = _a[0], setPrefersReducedMotion = _a[1];
3457
+ React__default.useEffect(function () {
3458
+ var mediaQueryList = window$1.matchMedia(QUERY);
3459
+ var listener = function (event) {
3460
+ setPrefersReducedMotion(!event.matches);
3461
+ };
3462
+ mediaQueryList.addListener(listener);
3463
+ return function () {
3464
+ mediaQueryList.removeListener(listener);
3465
+ };
3466
+ }, []);
3467
+ return prefersReducedMotion;
3468
+ };
3469
+
3470
+ var useRandomInterval = function (callback, minDelay, maxDelay) {
3471
+ var timeoutId = React__default.useRef(null);
3472
+ var savedCallback = React__default.useRef(callback);
3473
+ React__default.useEffect(function () {
3474
+ savedCallback.current = callback;
3475
+ });
3476
+ React__default.useEffect(function () {
3477
+ var isEnabled = typeof minDelay === 'number' && typeof maxDelay === 'number';
3478
+ if (isEnabled) {
3479
+ var handleTick_1 = function () {
3480
+ var nextTickAt = random(minDelay, maxDelay);
3481
+ timeoutId.current = setTimeout(function () {
3482
+ savedCallback.current();
3483
+ handleTick_1();
3484
+ }, nextTickAt);
3485
+ };
3486
+ handleTick_1();
3487
+ }
3488
+ return function () {
3489
+ if (!!timeoutId.current) {
3490
+ clearTimeout(timeoutId.current);
3491
+ }
3492
+ };
3493
+ }, [minDelay, maxDelay]);
3494
+ var cancel = React__default.useCallback(function () {
3495
+ if (!!timeoutId.current) {
3496
+ clearTimeout(timeoutId.current);
3497
+ }
3498
+ }, []);
3499
+ return cancel;
3500
+ };
3501
+
3502
+ var today = new Date();
3503
+ var getDatesBetween = function (startDt, endDt) {
3504
+ var result = [];
3505
+ var currentDt = startDt;
3506
+ while (currentDt <= endDt) {
3507
+ result.push(currentDt);
3508
+ currentDt = dateFns.addDays(currentDt, 1);
3509
+ }
3510
+ return result;
3511
+ };
3512
+ var useCalendar = function (_a) {
3513
+ var onChangeWeek = _a.onChangeWeek, onChangeMonth = _a.onChangeMonth;
3514
+ var _b = React.useState(today), currentMonth = _b[0], setCurrentMonth = _b[1];
3515
+ var _c = React.useState(dateFns.getWeek(currentMonth)), currentWeek = _c[0], setCurrentWeek = _c[1];
3516
+ var _d = React.useState(today), selectedDate = _d[0], setSelectedDate = _d[1];
3517
+ var changeMonth = function (action) {
3518
+ var dt = currentMonth;
3519
+ if (action === "prev") {
3520
+ dt = dateFns.subMonths(currentMonth, 1);
3521
+ }
3522
+ else if (action === "next") {
3523
+ dt = dateFns.addMonths(currentMonth, 1);
3524
+ }
3525
+ else if (action === "reset") {
3526
+ dt = today;
3527
+ }
3528
+ setCurrentMonth(dt);
3529
+ onChangeMonth && onChangeMonth({
3530
+ action: action,
3531
+ date: dt,
3532
+ month: dateFns.getMonth(dt),
3533
+ year: dateFns.getYear(dt),
3534
+ });
3535
+ };
3536
+ var changeWeek = function (action, value) {
3537
+ var dt = currentMonth;
3538
+ if (action === "prev") {
3539
+ dt = dateFns.subWeeks(currentMonth, 1);
3540
+ }
3541
+ else if (action === "next") {
3542
+ dt = dateFns.addWeeks(currentMonth, 1);
3543
+ }
3544
+ else if (action === "reset") {
3545
+ dt = today;
3546
+ }
3547
+ else if (action === "custom" && value) {
3548
+ dt = value;
3549
+ }
3550
+ setCurrentMonth(dt);
3551
+ var week = dateFns.getWeek(dt);
3552
+ setCurrentWeek(week);
3553
+ onChangeWeek && onChangeWeek({
3554
+ action: action,
3555
+ date: dt,
3556
+ week: week,
3557
+ month: dateFns.getMonth(dt),
3558
+ year: dateFns.getYear(dt),
3559
+ });
3560
+ };
3561
+ var changeDate = function (value) {
3562
+ setCurrentMonth(value);
3563
+ var week = dateFns.getWeek(value);
3564
+ setCurrentWeek(week);
3565
+ onChangeWeek && onChangeWeek({
3566
+ action: 'change-date',
3567
+ date: value,
3568
+ week: week,
3569
+ month: dateFns.getMonth(value),
3570
+ year: dateFns.getYear(value),
3571
+ });
3572
+ };
3573
+ var onClickDay = function (day) {
3574
+ if (dateFns.isSameDay(day, selectedDate)) {
3575
+ setSelectedDate(today);
3576
+ }
3577
+ else {
3578
+ setSelectedDate(day);
3579
+ }
3580
+ };
3581
+ // reset to today's date
3582
+ var resetToToday = function () {
3583
+ setSelectedDate(today);
3584
+ changeWeek('reset');
3585
+ };
3586
+ var onNextWeek = function () { return changeWeek("next"); };
3587
+ var onPrevWeek = function () { return changeWeek("prev"); };
3588
+ var onNextMonth = function () { return changeMonth("next"); };
3589
+ var onPrevMonth = function () { return changeMonth("prev"); };
3590
+ return {
3591
+ currentMonth: currentMonth,
3592
+ currentWeek: currentWeek,
3593
+ selectedDate: selectedDate,
3594
+ setSelectedDate: setSelectedDate,
3595
+ setCurrentWeek: setCurrentWeek,
3596
+ setCurrentMonth: setCurrentMonth,
3597
+ onClickDay: onClickDay,
3598
+ onNextWeek: onNextWeek,
3599
+ onPrevWeek: onPrevWeek,
3600
+ onNextMonth: onNextMonth,
3601
+ onPrevMonth: onPrevMonth,
3602
+ changeWeek: changeWeek,
3603
+ changeDate: changeDate,
3604
+ getDatesBetween: getDatesBetween,
3605
+ onReset: resetToToday,
3606
+ };
3607
+ };
3608
+
3609
+ var useWindowSize = function () {
3610
+ var _a = React.useState([0, 0]), size = _a[0], setSize = _a[1]; // [width, height]
3611
+ React.useEffect(function () {
3612
+ function updateSize() {
3613
+ setSize([window.innerWidth, window.innerHeight]);
3614
+ }
3615
+ window.addEventListener('resize', updateSize);
3616
+ updateSize();
3617
+ return function () { return window.removeEventListener('resize', updateSize); };
3618
+ }, []);
3619
+ return size;
3620
+ };
3621
+
3622
+ function useLongPress(callback, ms) {
3623
+ if (callback === void 0) { callback = function () { }; }
3624
+ if (ms === void 0) { ms = 300; }
3625
+ var _a = React.useState(false), startLongPress = _a[0], setStartLongPress = _a[1];
3626
+ React.useEffect(function () {
3627
+ var timeoutId = null;
3628
+ if (startLongPress) {
3629
+ timeoutId = setTimeout(callback, ms);
3630
+ }
3631
+ else {
3632
+ if (timeoutId !== undefined && timeoutId !== null) {
3633
+ clearTimeout(timeoutId);
3634
+ }
3635
+ }
3636
+ return function () {
3637
+ if (timeoutId !== undefined && timeoutId !== null) {
3638
+ clearTimeout(timeoutId);
3639
+ }
3640
+ };
3641
+ }, [callback, ms, startLongPress]);
3642
+ var start = React.useCallback(function () {
3643
+ setStartLongPress(true);
3644
+ }, []);
3645
+ var stop = React.useCallback(function () {
3646
+ setStartLongPress(false);
3647
+ }, []);
3648
+ return {
3649
+ onMouseDown: start,
3650
+ onMouseUp: stop,
3651
+ onMouseLeave: stop,
3652
+ onTouchStart: start,
3653
+ onTouchEnd: stop,
3654
+ };
3655
+ }
3656
+
3657
+ var useFallbackRef = function (forwardedRef) {
3658
+ var localRef = React.useRef(null);
3659
+ React.useImperativeHandle(forwardedRef, function () { return localRef.current; });
3660
+ return localRef;
3661
+ };
3662
+
3425
3663
  var Overlay = styled__default.div(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n &&& {\n position: fixed;\n top: 0px;\n bottom: 0px;\n left: 0px;\n right: 0px;\n background: rgba(42, 56, 63, 0.45);\n display: flex;\n z-index: ", ";\n margin-left: auto;\n margin-right: auto;\n }\n"], ["\n &&& {\n position: fixed;\n top: 0px;\n bottom: 0px;\n left: 0px;\n right: 0px;\n background: rgba(42, 56, 63, 0.45);\n display: flex;\n z-index: ", ";\n margin-left: auto;\n margin-right: auto;\n }\n"])), function (p) { return p.zIndex || 999; });
3426
3664
  var PopupWindow = styled__default.div(templateObject_2$e || (templateObject_2$e = __makeTemplateObject(["\n &&& {\n width: ", ";\n height: ", "; \n margin: 0 !important;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: fixed;\n ", "\n overflow-y: hidden;\n display: block;\n z-index: ", ";\n\n padding: ", ";\n border: 1px solid #CCD5DA;\n background-color: #fefefe;\n border-radius: 3px;\n\n &:last-child {\n margin-bottom: 0;\n }\n .popup-content {\n overflow-y: auto;\n height: 90%;\n }\n ", "\n ", "\n }\n"], ["\n &&& {\n width: ", ";\n height: ", "; \n margin: 0 !important;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: fixed;\n ", "\n overflow-y: hidden;\n display: block;\n z-index: ", ";\n\n padding: ", ";\n border: 1px solid #CCD5DA;\n background-color: #fefefe;\n border-radius: 3px;\n\n &:last-child {\n margin-bottom: 0;\n }\n .popup-content {\n overflow-y: auto;\n height: 90%;\n }\n ", "\n ", "\n }\n"])), function (props) { var _a; return (_a = props.width) !== null && _a !== void 0 ? _a : '90%'; }, function (props) { var _a; return (_a = props.height) !== null && _a !== void 0 ? _a : '75%'; }, function (props) { return props.height ? '' : 'max-height: 700px;'; }, function (p) { return p.zIndex || 1006; }, function (props) { var _a; return (_a = props.padding) !== null && _a !== void 0 ? _a : '1rem'; }, SharedStyles, SizerCss);
3427
3665
  var PopupHeader = styled__default.div(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject(["\n &&& {\n position: sticky;\n top: 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background: white;\n padding: 3px;\n z-index: 99;\n .title {\n font-size: 1.8rem;\n font-weight: 500;\n text-align: left;\n align-self: center;\n padding-top: 3px;\n padding-left: 3px;\n border-bottom: none;\n font-family: \"skufont-demibold\",sans-serif;\n color: #123952;\n }\n ", "\n ", "\n }\n"], ["\n &&& {\n position: sticky;\n top: 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background: white;\n padding: 3px;\n z-index: 99;\n .title {\n font-size: 1.8rem;\n font-weight: 500;\n text-align: left;\n align-self: center;\n padding-top: 3px;\n padding-left: 3px;\n border-bottom: none;\n font-family: \"skufont-demibold\",sans-serif;\n color: #123952;\n }\n ", "\n ", "\n }\n"])), SharedStyles, SizerCss);
@@ -3437,18 +3675,16 @@ var PopupContainer = function (_a) {
3437
3675
  }, []);
3438
3676
  return ReactDOM.createPortal(children, ref.current);
3439
3677
  };
3440
- var Popup = function (_a) {
3678
+ var Popup = React__default.forwardRef(function (_a, forwardedRef) {
3441
3679
  var header = _a.header, _b = _a.noHeader, noHeader = _b === void 0 ? false : _b, title = _a.title, controls = _a.controls, children = _a.children, onClose = _a.onClose, _c = _a.noCloseButton, noCloseButton = _c === void 0 ? false : _c, _d = _a.closeOnEsc, closeOnEsc = _d === void 0 ? true : _d, _e = _a.closeOnClickOutside, closeOnClickOutside = _e === void 0 ? false : _e, overlayZIndex = _a.overlayZIndex, props = __rest(_a, ["header", "noHeader", "title", "controls", "children", "onClose", "noCloseButton", "closeOnEsc", "closeOnClickOutside", "overlayZIndex"]);
3442
- var ref = React__default.useRef(null);
3443
- /* there is a bug where this closes popup involuntarily
3444
- const handleClick = (e: Event) => {
3445
- // @ts-ignore
3446
- if (ref.current?.contains(e.target)) {
3447
- return;
3448
- }
3449
- onClose && onClose();
3450
- };
3451
- */
3680
+ var ref = useFallbackRef(forwardedRef);
3681
+ useClickOutside({
3682
+ ref: ref,
3683
+ onClick: function (e) {
3684
+ closeOnClickOutside && onClose && onClose(e);
3685
+ },
3686
+ onCleanup: onClose,
3687
+ });
3452
3688
  React.useEffect(function () {
3453
3689
  var handleKeyDown = function (e) {
3454
3690
  // @ts-ignore
@@ -3476,7 +3712,7 @@ var Popup = function (_a) {
3476
3712
  React__default.createElement(Col, { style: { textAlign: 'right', alignSelf: 'center' } }, noCloseButton ? null :
3477
3713
  controls || React__default.createElement(Button, { onClick: onClose }, "Close")))),
3478
3714
  React__default.createElement("div", { className: "popup-content" }, children))));
3479
- };
3715
+ });
3480
3716
  var ShowPopup = function (_a) {
3481
3717
  var _b = _a.autoOpen, autoOpen = _b === void 0 ? false : _b, PopupComponent = _a.popup, render = _a.render, _c = _a.closeOnEsc, closeOnEsc = _c === void 0 ? true : _c, _d = _a.closeOnClickOutside, closeOnClickOutside = _d === void 0 ? false : _d, props = __rest(_a, ["autoOpen", "popup", "render", "closeOnEsc", "closeOnClickOutside"]);
3482
3718
  var _e = React.useState(autoOpen), showPopup = _e[0], setShowPopup = _e[1];
@@ -3753,10 +3989,10 @@ var Tabs = /** @class */ (function (_super) {
3753
3989
  };
3754
3990
  Tabs.prototype.render = function () {
3755
3991
  var _this = this;
3756
- var _a = this.props, tabs = _a.tabs, size = _a.size, props = __rest(_a, ["tabs", "size"]);
3992
+ var _a = this.props, tabs = _a.tabs, size = _a.size, padded = _a.padded, props = __rest(_a, ["tabs", "size", "padded"]);
3757
3993
  var selectedTab = this.getTab(tabs, this.state.selectedTabIndex);
3758
3994
  return React__default.createElement("div", __assign({}, props),
3759
- React__default.createElement(TabBar, { padded: this.props.padded === true }, tabs.map(function (tab, index) { return React__default.createElement(Tab, { key: index, size: size, className: index === _this.state.selectedTabIndex ? 'selected' : '', selected: index === _this.state.selectedTabIndex, onClick: function (e) {
3995
+ React__default.createElement(TabBar, { padded: padded === true }, tabs.map(function (tab, index) { return React__default.createElement(Tab, { key: index, size: size, className: index === _this.state.selectedTabIndex ? 'selected' : '', selected: index === _this.state.selectedTabIndex, onClick: function (e) {
3760
3996
  _this.setState({ selectedTabIndex: index });
3761
3997
  var callback = tabs[index].onClick;
3762
3998
  if (callback) {
@@ -4794,217 +5030,6 @@ function HeadlessTable(_a) {
4794
5030
  }
4795
5031
  var templateObject_1$B, templateObject_2$p, templateObject_3$h;
4796
5032
 
4797
- var QUERY = '(prefers-reduced-motion: no-preference)';
4798
- var isRenderingOnServer = typeof window$1 === 'undefined';
4799
- var getInitialState = function () {
4800
- // For our initial server render, we won't know if the user
4801
- // prefers reduced motion, but it doesn't matter. This value
4802
- // will be overwritten on the client, before any animations
4803
- // occur.
4804
- return isRenderingOnServer ? true : !window$1.matchMedia(QUERY).matches;
4805
- };
4806
- var usePrefersReducedMotion = function () {
4807
- var _a = React__default.useState(getInitialState), prefersReducedMotion = _a[0], setPrefersReducedMotion = _a[1];
4808
- React__default.useEffect(function () {
4809
- var mediaQueryList = window$1.matchMedia(QUERY);
4810
- var listener = function (event) {
4811
- setPrefersReducedMotion(!event.matches);
4812
- };
4813
- mediaQueryList.addListener(listener);
4814
- return function () {
4815
- mediaQueryList.removeListener(listener);
4816
- };
4817
- }, []);
4818
- return prefersReducedMotion;
4819
- };
4820
-
4821
- var useRandomInterval = function (callback, minDelay, maxDelay) {
4822
- var timeoutId = React__default.useRef(null);
4823
- var savedCallback = React__default.useRef(callback);
4824
- React__default.useEffect(function () {
4825
- savedCallback.current = callback;
4826
- });
4827
- React__default.useEffect(function () {
4828
- var isEnabled = typeof minDelay === 'number' && typeof maxDelay === 'number';
4829
- if (isEnabled) {
4830
- var handleTick_1 = function () {
4831
- var nextTickAt = random(minDelay, maxDelay);
4832
- timeoutId.current = setTimeout(function () {
4833
- savedCallback.current();
4834
- handleTick_1();
4835
- }, nextTickAt);
4836
- };
4837
- handleTick_1();
4838
- }
4839
- return function () {
4840
- if (!!timeoutId.current) {
4841
- clearTimeout(timeoutId.current);
4842
- }
4843
- };
4844
- }, [minDelay, maxDelay]);
4845
- var cancel = React__default.useCallback(function () {
4846
- if (!!timeoutId.current) {
4847
- clearTimeout(timeoutId.current);
4848
- }
4849
- }, []);
4850
- return cancel;
4851
- };
4852
-
4853
- var today = new Date();
4854
- var getDatesBetween = function (startDt, endDt) {
4855
- var result = [];
4856
- var currentDt = startDt;
4857
- while (currentDt <= endDt) {
4858
- result.push(currentDt);
4859
- currentDt = dateFns.addDays(currentDt, 1);
4860
- }
4861
- return result;
4862
- };
4863
- var useCalendar = function (_a) {
4864
- var onChangeWeek = _a.onChangeWeek, onChangeMonth = _a.onChangeMonth;
4865
- var _b = React.useState(today), currentMonth = _b[0], setCurrentMonth = _b[1];
4866
- var _c = React.useState(dateFns.getWeek(currentMonth)), currentWeek = _c[0], setCurrentWeek = _c[1];
4867
- var _d = React.useState(today), selectedDate = _d[0], setSelectedDate = _d[1];
4868
- var changeMonth = function (action) {
4869
- var dt = currentMonth;
4870
- if (action === "prev") {
4871
- dt = dateFns.subMonths(currentMonth, 1);
4872
- }
4873
- else if (action === "next") {
4874
- dt = dateFns.addMonths(currentMonth, 1);
4875
- }
4876
- else if (action === "reset") {
4877
- dt = today;
4878
- }
4879
- setCurrentMonth(dt);
4880
- onChangeMonth && onChangeMonth({
4881
- action: action,
4882
- date: dt,
4883
- month: dateFns.getMonth(dt),
4884
- year: dateFns.getYear(dt),
4885
- });
4886
- };
4887
- var changeWeek = function (action, value) {
4888
- var dt = currentMonth;
4889
- if (action === "prev") {
4890
- dt = dateFns.subWeeks(currentMonth, 1);
4891
- }
4892
- else if (action === "next") {
4893
- dt = dateFns.addWeeks(currentMonth, 1);
4894
- }
4895
- else if (action === "reset") {
4896
- dt = today;
4897
- }
4898
- else if (action === "custom" && value) {
4899
- dt = value;
4900
- }
4901
- setCurrentMonth(dt);
4902
- var week = dateFns.getWeek(dt);
4903
- setCurrentWeek(week);
4904
- onChangeWeek && onChangeWeek({
4905
- action: action,
4906
- date: dt,
4907
- week: week,
4908
- month: dateFns.getMonth(dt),
4909
- year: dateFns.getYear(dt),
4910
- });
4911
- };
4912
- var changeDate = function (value) {
4913
- setCurrentMonth(value);
4914
- var week = dateFns.getWeek(value);
4915
- setCurrentWeek(week);
4916
- onChangeWeek && onChangeWeek({
4917
- action: 'change-date',
4918
- date: value,
4919
- week: week,
4920
- month: dateFns.getMonth(value),
4921
- year: dateFns.getYear(value),
4922
- });
4923
- };
4924
- var onClickDay = function (day) {
4925
- if (dateFns.isSameDay(day, selectedDate)) {
4926
- setSelectedDate(today);
4927
- }
4928
- else {
4929
- setSelectedDate(day);
4930
- }
4931
- };
4932
- // reset to today's date
4933
- var resetToToday = function () {
4934
- setSelectedDate(today);
4935
- changeWeek('reset');
4936
- };
4937
- var onNextWeek = function () { return changeWeek("next"); };
4938
- var onPrevWeek = function () { return changeWeek("prev"); };
4939
- var onNextMonth = function () { return changeMonth("next"); };
4940
- var onPrevMonth = function () { return changeMonth("prev"); };
4941
- return {
4942
- currentMonth: currentMonth,
4943
- currentWeek: currentWeek,
4944
- selectedDate: selectedDate,
4945
- setSelectedDate: setSelectedDate,
4946
- setCurrentWeek: setCurrentWeek,
4947
- setCurrentMonth: setCurrentMonth,
4948
- onClickDay: onClickDay,
4949
- onNextWeek: onNextWeek,
4950
- onPrevWeek: onPrevWeek,
4951
- onNextMonth: onNextMonth,
4952
- onPrevMonth: onPrevMonth,
4953
- changeWeek: changeWeek,
4954
- changeDate: changeDate,
4955
- getDatesBetween: getDatesBetween,
4956
- onReset: resetToToday,
4957
- };
4958
- };
4959
-
4960
- var useWindowSize = function () {
4961
- var _a = React.useState([0, 0]), size = _a[0], setSize = _a[1]; // [width, height]
4962
- React.useEffect(function () {
4963
- function updateSize() {
4964
- setSize([window.innerWidth, window.innerHeight]);
4965
- }
4966
- window.addEventListener('resize', updateSize);
4967
- updateSize();
4968
- return function () { return window.removeEventListener('resize', updateSize); };
4969
- }, []);
4970
- return size;
4971
- };
4972
-
4973
- function useLongPress(callback, ms) {
4974
- if (callback === void 0) { callback = function () { }; }
4975
- if (ms === void 0) { ms = 300; }
4976
- var _a = React.useState(false), startLongPress = _a[0], setStartLongPress = _a[1];
4977
- React.useEffect(function () {
4978
- var timeoutId = null;
4979
- if (startLongPress) {
4980
- timeoutId = setTimeout(callback, ms);
4981
- }
4982
- else {
4983
- if (timeoutId !== undefined && timeoutId !== null) {
4984
- clearTimeout(timeoutId);
4985
- }
4986
- }
4987
- return function () {
4988
- if (timeoutId !== undefined && timeoutId !== null) {
4989
- clearTimeout(timeoutId);
4990
- }
4991
- };
4992
- }, [callback, ms, startLongPress]);
4993
- var start = React.useCallback(function () {
4994
- setStartLongPress(true);
4995
- }, []);
4996
- var stop = React.useCallback(function () {
4997
- setStartLongPress(false);
4998
- }, []);
4999
- return {
5000
- onMouseDown: start,
5001
- onMouseUp: stop,
5002
- onMouseLeave: stop,
5003
- onTouchStart: start,
5004
- onTouchEnd: stop,
5005
- };
5006
- }
5007
-
5008
5033
  /*
5009
5034
  Code from https://www.joshwcomeau.com/react/animated-sparkles-in-react/
5010
5035
  Check out his site. It's awesome