@chayns-components/swipeable-wrapper 5.0.0-beta.441 → 5.0.0-beta.443

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.
@@ -1,61 +1,53 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _chaynsApi = require("chayns-api");
8
- var _framerMotion = require("framer-motion");
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _threshold = require("../../utils/threshold");
11
- var _SwipeableAction = _interopRequireWildcard(require("./swipeable-action/SwipeableAction"));
12
- var _SwipeableWrapper = require("./SwipeableWrapper.styles");
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
1
+ import { vibrate } from 'chayns-api';
2
+ import { animate, useMotionValue } from 'framer-motion';
3
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { calcThreshold } from '../../utils/threshold';
5
+ import SwipeableAction, { SWIPEABLE_ACTION_WIDTH } from './swipeable-action/SwipeableAction';
6
+ import { StyledMotionSwipeableWrapper, StyledSwipeableWrapperContent } from './SwipeableWrapper.styles';
15
7
  const SwipeableWrapper = _ref => {
16
8
  let {
17
9
  children,
18
10
  leftActions = [],
19
11
  rightActions = []
20
12
  } = _ref;
21
- const [leftThreshold, setLeftThreshold] = (0, _react.useState)((0, _threshold.calcThreshold)({
13
+ const [leftThreshold, setLeftThreshold] = useState(calcThreshold({
22
14
  actionCount: leftActions.length,
23
15
  direction: 'left',
24
16
  width: window.innerWidth
25
17
  }));
26
- const [rightThreshold, setRightThreshold] = (0, _react.useState)((0, _threshold.calcThreshold)({
18
+ const [rightThreshold, setRightThreshold] = useState(calcThreshold({
27
19
  actionCount: rightActions.length,
28
20
  direction: 'right',
29
21
  width: window.innerWidth
30
22
  }));
31
- const swipeableWrapperRef = (0, _react.useRef)(null);
32
- const listItemXOffset = (0, _framerMotion.useMotionValue)(0);
33
- const close = (0, _react.useCallback)(() => {
34
- void (0, _framerMotion.animate)(listItemXOffset, 0);
23
+ const swipeableWrapperRef = useRef(null);
24
+ const listItemXOffset = useMotionValue(0);
25
+ const close = useCallback(() => {
26
+ void animate(listItemXOffset, 0);
35
27
  }, [listItemXOffset]);
36
- const open = (0, _react.useCallback)(direction => {
28
+ const open = useCallback(direction => {
37
29
  switch (direction) {
38
30
  case 'left':
39
- void (0, _framerMotion.animate)(listItemXOffset, _SwipeableAction.SWIPEABLE_ACTION_WIDTH * leftActions.length);
31
+ void animate(listItemXOffset, SWIPEABLE_ACTION_WIDTH * leftActions.length);
40
32
  break;
41
33
  case 'right':
42
- void (0, _framerMotion.animate)(listItemXOffset, -_SwipeableAction.SWIPEABLE_ACTION_WIDTH * rightActions.length);
34
+ void animate(listItemXOffset, -SWIPEABLE_ACTION_WIDTH * rightActions.length);
43
35
  break;
44
36
  default:
45
37
  break;
46
38
  }
47
39
  }, [leftActions.length, listItemXOffset, rightActions.length]);
48
- (0, _react.useEffect)(() => {
40
+ useEffect(() => {
49
41
  const width = swipeableWrapperRef.current?.parentElement?.offsetWidth;
50
42
 
51
43
  // This check was deliberately chosen because a width of 0 is also not permitted.
52
44
  if (width) {
53
- setLeftThreshold((0, _threshold.calcThreshold)({
45
+ setLeftThreshold(calcThreshold({
54
46
  actionCount: leftActions.length,
55
47
  direction: 'left',
56
48
  width
57
49
  }));
58
- setRightThreshold((0, _threshold.calcThreshold)({
50
+ setRightThreshold(calcThreshold({
59
51
  actionCount: rightActions.length,
60
52
  direction: 'right',
61
53
  width
@@ -64,7 +56,7 @@ const SwipeableWrapper = _ref => {
64
56
  }, [leftActions.length, rightActions.length]);
65
57
 
66
58
  // Close an opened menu when anything outside it is tapped
67
- (0, _react.useEffect)(() => {
59
+ useEffect(() => {
68
60
  function closeCallback(event) {
69
61
  const eventTarget = event.target;
70
62
 
@@ -82,25 +74,25 @@ const SwipeableWrapper = _ref => {
82
74
  }, [close]);
83
75
 
84
76
  // Vibrate when the threshold is passed
85
- (0, _react.useEffect)(() => listItemXOffset.onChange(newValue => {
77
+ useEffect(() => listItemXOffset.onChange(newValue => {
86
78
  const previous = listItemXOffset.getPrevious();
87
79
  const hasCrossedLeftThreshold = previous < leftThreshold && newValue >= leftThreshold || previous > leftThreshold && newValue <= leftThreshold;
88
80
  const hasCrossedRightThreshold = previous < rightThreshold && newValue >= rightThreshold || previous > rightThreshold && newValue <= rightThreshold;
89
81
  if (hasCrossedLeftThreshold || hasCrossedRightThreshold) {
90
- void (0, _chaynsApi.vibrate)({
82
+ void vibrate({
91
83
  iOSFeedbackVibration: 6,
92
84
  pattern: [150]
93
85
  });
94
86
  }
95
87
  }), [leftThreshold, listItemXOffset, rightThreshold]);
96
- const handlePan = (0, _react.useCallback)((_, info) => {
88
+ const handlePan = useCallback((_, info) => {
97
89
  const currentXOffset = listItemXOffset.get();
98
90
  const dampingFactor = info.offset.x > 0 && leftActions.length > 0 || info.offset.x < 0 && rightActions.length > 0 || currentXOffset > 0 && info.delta.x < 0 || currentXOffset < 0 && info.delta.x > 0 ? 1 : 0.75 / (Math.abs(info.offset.x) / 9);
99
91
  if (Math.abs(info.offset.x) > 30 || currentXOffset > 0) {
100
92
  listItemXOffset.set(currentXOffset + info.delta.x * dampingFactor);
101
93
  }
102
94
  }, [leftActions.length, listItemXOffset, rightActions.length]);
103
- const handlePanEnd = (0, _react.useCallback)(() => {
95
+ const handlePanEnd = useCallback(() => {
104
96
  const offset = listItemXOffset.get();
105
97
  if (offset > leftThreshold) {
106
98
  leftActions[0]?.action();
@@ -121,23 +113,23 @@ const SwipeableWrapper = _ref => {
121
113
  // eslint-disable-next-line default-case
122
114
  switch (state) {
123
115
  case 'left-open':
124
- if (offset < _SwipeableAction.SWIPEABLE_ACTION_WIDTH) {
116
+ if (offset < SWIPEABLE_ACTION_WIDTH) {
125
117
  close();
126
118
  } else {
127
119
  open('left');
128
120
  }
129
121
  break;
130
122
  case 'right-open':
131
- if (offset > -_SwipeableAction.SWIPEABLE_ACTION_WIDTH) {
123
+ if (offset > -SWIPEABLE_ACTION_WIDTH) {
132
124
  close();
133
125
  } else {
134
126
  open('right');
135
127
  }
136
128
  break;
137
129
  case 'closed':
138
- if (offset > _SwipeableAction.SWIPEABLE_ACTION_WIDTH) {
130
+ if (offset > SWIPEABLE_ACTION_WIDTH) {
139
131
  open('left');
140
- } else if (offset < -_SwipeableAction.SWIPEABLE_ACTION_WIDTH) {
132
+ } else if (offset < -SWIPEABLE_ACTION_WIDTH) {
141
133
  open('right');
142
134
  } else {
143
135
  close();
@@ -145,7 +137,7 @@ const SwipeableWrapper = _ref => {
145
137
  }
146
138
  }
147
139
  }, [close, leftActions, leftThreshold, listItemXOffset, open, rightActions, rightThreshold]);
148
- const leftActionElements = (0, _react.useMemo)(() => Array.from(leftActions).reverse().map((item, index) => /*#__PURE__*/_react.default.createElement(_SwipeableAction.default, {
140
+ const leftActionElements = useMemo(() => Array.from(leftActions).reverse().map((item, index) => /*#__PURE__*/React.createElement(SwipeableAction, {
149
141
  activationThreshold: leftThreshold,
150
142
  close: close,
151
143
  index: index,
@@ -155,7 +147,7 @@ const SwipeableWrapper = _ref => {
155
147
  position: "left",
156
148
  totalActionCount: leftActions.length
157
149
  })), [close, leftActions, leftThreshold, listItemXOffset]);
158
- const rightActionElements = (0, _react.useMemo)(() => rightActions.map((item, index) => /*#__PURE__*/_react.default.createElement(_SwipeableAction.default, {
150
+ const rightActionElements = useMemo(() => rightActions.map((item, index) => /*#__PURE__*/React.createElement(SwipeableAction, {
159
151
  activationThreshold: rightThreshold,
160
152
  close: close,
161
153
  index: index,
@@ -165,15 +157,15 @@ const SwipeableWrapper = _ref => {
165
157
  position: "right",
166
158
  totalActionCount: rightActions.length
167
159
  })), [close, rightActions, rightThreshold, listItemXOffset]);
168
- return /*#__PURE__*/_react.default.createElement(_SwipeableWrapper.StyledMotionSwipeableWrapper, {
160
+ return /*#__PURE__*/React.createElement(StyledMotionSwipeableWrapper, {
169
161
  onPan: handlePan,
170
162
  onPanEnd: handlePanEnd,
171
163
  ref: swipeableWrapperRef,
172
164
  style: {
173
165
  x: listItemXOffset
174
166
  }
175
- }, leftActionElements, /*#__PURE__*/_react.default.createElement(_SwipeableWrapper.StyledSwipeableWrapperContent, null, children), rightActionElements);
167
+ }, leftActionElements, /*#__PURE__*/React.createElement(StyledSwipeableWrapperContent, null, children), rightActionElements);
176
168
  };
177
169
  SwipeableWrapper.displayName = 'SwipeableWrapper';
178
- var _default = exports.default = SwipeableWrapper;
170
+ export default SwipeableWrapper;
179
171
  //# sourceMappingURL=SwipeableWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwipeableWrapper.js","names":["_chaynsApi","require","_framerMotion","_react","_interopRequireWildcard","_threshold","_SwipeableAction","_SwipeableWrapper","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","SwipeableWrapper","_ref","children","leftActions","rightActions","leftThreshold","setLeftThreshold","useState","calcThreshold","actionCount","length","direction","width","window","innerWidth","rightThreshold","setRightThreshold","swipeableWrapperRef","useRef","listItemXOffset","useMotionValue","close","useCallback","animate","open","SWIPEABLE_ACTION_WIDTH","useEffect","current","parentElement","offsetWidth","closeCallback","event","eventTarget","target","contains","document","addEventListener","removeEventListener","onChange","newValue","previous","getPrevious","hasCrossedLeftThreshold","hasCrossedRightThreshold","vibrate","iOSFeedbackVibration","pattern","handlePan","_","info","currentXOffset","dampingFactor","offset","x","delta","Math","abs","handlePanEnd","action","state","leftActionElements","useMemo","Array","from","reverse","map","item","index","createElement","activationThreshold","key","position","totalActionCount","rightActionElements","StyledMotionSwipeableWrapper","onPan","onPanEnd","ref","style","StyledSwipeableWrapperContent","displayName","_default","exports"],"sources":["../../../src/components/swipeable-wrapper/SwipeableWrapper.tsx"],"sourcesContent":["import { vibrate } from 'chayns-api';\nimport { animate, PanInfo, useMotionValue } from 'framer-motion';\nimport React, {\n CSSProperties,\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { calcThreshold } from '../../utils/threshold';\nimport SwipeableAction, { SWIPEABLE_ACTION_WIDTH } from './swipeable-action/SwipeableAction';\nimport {\n StyledMotionSwipeableWrapper,\n StyledSwipeableWrapperContent,\n} from './SwipeableWrapper.styles';\n\nexport type SwipeableActionItem = {\n action: VoidFunction;\n backgroundColor: CSSProperties['backgroundColor'];\n color: CSSProperties['color'];\n text?: ReactNode;\n icon: ReactNode;\n key: string;\n};\n\nexport type SwipeableWrapperProps = {\n /**\n * The content of the Swipeable item.\n */\n children: ReactNode;\n /**\n * The left-side actions, ordered from the left to the right.\n */\n leftActions?: SwipeableActionItem[];\n /**\n * The right-side actions, ordered from left to the right.\n */\n rightActions?: SwipeableActionItem[];\n};\n\nconst SwipeableWrapper: FC<SwipeableWrapperProps> = ({\n children,\n leftActions = [],\n rightActions = [],\n}) => {\n const [leftThreshold, setLeftThreshold] = useState(\n calcThreshold({\n actionCount: leftActions.length,\n direction: 'left',\n width: window.innerWidth,\n }),\n );\n\n const [rightThreshold, setRightThreshold] = useState(\n calcThreshold({\n actionCount: rightActions.length,\n direction: 'right',\n width: window.innerWidth,\n }),\n );\n\n const swipeableWrapperRef = useRef<HTMLDivElement | null>(null);\n\n const listItemXOffset = useMotionValue(0);\n\n const close = useCallback(() => {\n void animate(listItemXOffset, 0);\n }, [listItemXOffset]);\n\n const open = useCallback(\n (direction: 'left' | 'right') => {\n switch (direction) {\n case 'left':\n void animate(listItemXOffset, SWIPEABLE_ACTION_WIDTH * leftActions.length);\n break;\n case 'right':\n void animate(listItemXOffset, -SWIPEABLE_ACTION_WIDTH * rightActions.length);\n break;\n default:\n break;\n }\n },\n [leftActions.length, listItemXOffset, rightActions.length],\n );\n\n useEffect(() => {\n const width = swipeableWrapperRef.current?.parentElement?.offsetWidth;\n\n // This check was deliberately chosen because a width of 0 is also not permitted.\n if (width) {\n setLeftThreshold(\n calcThreshold({\n actionCount: leftActions.length,\n direction: 'left',\n width,\n }),\n );\n\n setRightThreshold(\n calcThreshold({\n actionCount: rightActions.length,\n direction: 'right',\n width,\n }),\n );\n }\n }, [leftActions.length, rightActions.length]);\n\n // Close an opened menu when anything outside it is tapped\n useEffect(() => {\n function closeCallback(event: MouseEvent | TouchEvent) {\n const eventTarget = event.target;\n\n // @ts-expect-error: Pretty sure that the event target is always a Node.\n if (eventTarget && !swipeableWrapperRef.current?.contains(eventTarget)) {\n close();\n }\n }\n\n document.addEventListener('mousedown', closeCallback);\n document.addEventListener('touchstart', closeCallback);\n\n return () => {\n document.removeEventListener('mousedown', closeCallback);\n document.removeEventListener('touchstart', closeCallback);\n };\n }, [close]);\n\n // Vibrate when the threshold is passed\n useEffect(\n () =>\n listItemXOffset.onChange((newValue: number) => {\n const previous = listItemXOffset.getPrevious();\n\n const hasCrossedLeftThreshold =\n (previous < leftThreshold && newValue >= leftThreshold) ||\n (previous > leftThreshold && newValue <= leftThreshold);\n\n const hasCrossedRightThreshold =\n (previous < rightThreshold && newValue >= rightThreshold) ||\n (previous > rightThreshold && newValue <= rightThreshold);\n\n if (hasCrossedLeftThreshold || hasCrossedRightThreshold) {\n void vibrate({ iOSFeedbackVibration: 6, pattern: [150] });\n }\n }),\n [leftThreshold, listItemXOffset, rightThreshold],\n );\n\n const handlePan = useCallback(\n (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {\n const currentXOffset = listItemXOffset.get();\n\n const dampingFactor =\n (info.offset.x > 0 && leftActions.length > 0) ||\n (info.offset.x < 0 && rightActions.length > 0) ||\n (currentXOffset > 0 && info.delta.x < 0) ||\n (currentXOffset < 0 && info.delta.x > 0)\n ? 1\n : 0.75 / (Math.abs(info.offset.x) / 9);\n\n if (Math.abs(info.offset.x) > 30 || currentXOffset > 0) {\n listItemXOffset.set(currentXOffset + info.delta.x * dampingFactor);\n }\n },\n [leftActions.length, listItemXOffset, rightActions.length],\n );\n\n const handlePanEnd = useCallback(() => {\n const offset = listItemXOffset.get();\n\n if (offset > leftThreshold) {\n leftActions[0]?.action();\n close();\n } else if (offset < rightThreshold) {\n rightActions[rightActions.length - 1]?.action();\n close();\n } else {\n let state: 'left-open' | 'right-open' | 'closed';\n\n if (offset > 2) {\n state = 'left-open';\n } else if (offset < -2) {\n state = 'right-open';\n } else {\n state = 'closed';\n }\n\n // eslint-disable-next-line default-case\n switch (state) {\n case 'left-open':\n if (offset < SWIPEABLE_ACTION_WIDTH) {\n close();\n } else {\n open('left');\n }\n break;\n case 'right-open':\n if (offset > -SWIPEABLE_ACTION_WIDTH) {\n close();\n } else {\n open('right');\n }\n break;\n case 'closed':\n if (offset > SWIPEABLE_ACTION_WIDTH) {\n open('left');\n } else if (offset < -SWIPEABLE_ACTION_WIDTH) {\n open('right');\n } else {\n close();\n }\n }\n }\n }, [close, leftActions, leftThreshold, listItemXOffset, open, rightActions, rightThreshold]);\n\n const leftActionElements = useMemo(\n () =>\n Array.from(leftActions)\n .reverse()\n .map((item, index) => (\n <SwipeableAction\n activationThreshold={leftThreshold}\n close={close}\n index={index}\n item={item}\n key={item.key}\n listItemXOffset={listItemXOffset}\n position=\"left\"\n totalActionCount={leftActions.length}\n />\n )),\n [close, leftActions, leftThreshold, listItemXOffset],\n );\n\n const rightActionElements = useMemo(\n () =>\n rightActions.map((item, index) => (\n <SwipeableAction\n activationThreshold={rightThreshold}\n close={close}\n index={index}\n item={item}\n key={item.key}\n listItemXOffset={listItemXOffset}\n position=\"right\"\n totalActionCount={rightActions.length}\n />\n )),\n [close, rightActions, rightThreshold, listItemXOffset],\n );\n\n return (\n <StyledMotionSwipeableWrapper\n onPan={handlePan}\n onPanEnd={handlePanEnd}\n ref={swipeableWrapperRef}\n style={{ x: listItemXOffset }}\n >\n {leftActionElements}\n <StyledSwipeableWrapperContent>{children}</StyledSwipeableWrapperContent>\n {rightActionElements}\n </StyledMotionSwipeableWrapper>\n );\n};\n\nSwipeableWrapper.displayName = 'SwipeableWrapper';\n\nexport default SwipeableWrapper;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SwipeableWrapper.js","names":["vibrate","animate","useMotionValue","React","useCallback","useEffect","useMemo","useRef","useState","calcThreshold","SwipeableAction","SWIPEABLE_ACTION_WIDTH","StyledMotionSwipeableWrapper","StyledSwipeableWrapperContent","SwipeableWrapper","_ref","children","leftActions","rightActions","leftThreshold","setLeftThreshold","actionCount","length","direction","width","window","innerWidth","rightThreshold","setRightThreshold","swipeableWrapperRef","listItemXOffset","close","open","current","parentElement","offsetWidth","closeCallback","event","eventTarget","target","contains","document","addEventListener","removeEventListener","onChange","newValue","previous","getPrevious","hasCrossedLeftThreshold","hasCrossedRightThreshold","iOSFeedbackVibration","pattern","handlePan","_","info","currentXOffset","get","dampingFactor","offset","x","delta","Math","abs","set","handlePanEnd","action","state","leftActionElements","Array","from","reverse","map","item","index","createElement","activationThreshold","key","position","totalActionCount","rightActionElements","onPan","onPanEnd","ref","style","displayName"],"sources":["../../../src/components/swipeable-wrapper/SwipeableWrapper.tsx"],"sourcesContent":["import { vibrate } from 'chayns-api';\nimport { animate, PanInfo, useMotionValue } from 'framer-motion';\nimport React, {\n CSSProperties,\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { calcThreshold } from '../../utils/threshold';\nimport SwipeableAction, { SWIPEABLE_ACTION_WIDTH } from './swipeable-action/SwipeableAction';\nimport {\n StyledMotionSwipeableWrapper,\n StyledSwipeableWrapperContent,\n} from './SwipeableWrapper.styles';\n\nexport type SwipeableActionItem = {\n action: VoidFunction;\n backgroundColor: CSSProperties['backgroundColor'];\n color: CSSProperties['color'];\n text?: ReactNode;\n icon: ReactNode;\n key: string;\n};\n\nexport type SwipeableWrapperProps = {\n /**\n * The content of the Swipeable item.\n */\n children: ReactNode;\n /**\n * The left-side actions, ordered from the left to the right.\n */\n leftActions?: SwipeableActionItem[];\n /**\n * The right-side actions, ordered from left to the right.\n */\n rightActions?: SwipeableActionItem[];\n};\n\nconst SwipeableWrapper: FC<SwipeableWrapperProps> = ({\n children,\n leftActions = [],\n rightActions = [],\n}) => {\n const [leftThreshold, setLeftThreshold] = useState(\n calcThreshold({\n actionCount: leftActions.length,\n direction: 'left',\n width: window.innerWidth,\n }),\n );\n\n const [rightThreshold, setRightThreshold] = useState(\n calcThreshold({\n actionCount: rightActions.length,\n direction: 'right',\n width: window.innerWidth,\n }),\n );\n\n const swipeableWrapperRef = useRef<HTMLDivElement | null>(null);\n\n const listItemXOffset = useMotionValue(0);\n\n const close = useCallback(() => {\n void animate(listItemXOffset, 0);\n }, [listItemXOffset]);\n\n const open = useCallback(\n (direction: 'left' | 'right') => {\n switch (direction) {\n case 'left':\n void animate(listItemXOffset, SWIPEABLE_ACTION_WIDTH * leftActions.length);\n break;\n case 'right':\n void animate(listItemXOffset, -SWIPEABLE_ACTION_WIDTH * rightActions.length);\n break;\n default:\n break;\n }\n },\n [leftActions.length, listItemXOffset, rightActions.length],\n );\n\n useEffect(() => {\n const width = swipeableWrapperRef.current?.parentElement?.offsetWidth;\n\n // This check was deliberately chosen because a width of 0 is also not permitted.\n if (width) {\n setLeftThreshold(\n calcThreshold({\n actionCount: leftActions.length,\n direction: 'left',\n width,\n }),\n );\n\n setRightThreshold(\n calcThreshold({\n actionCount: rightActions.length,\n direction: 'right',\n width,\n }),\n );\n }\n }, [leftActions.length, rightActions.length]);\n\n // Close an opened menu when anything outside it is tapped\n useEffect(() => {\n function closeCallback(event: MouseEvent | TouchEvent) {\n const eventTarget = event.target;\n\n // @ts-expect-error: Pretty sure that the event target is always a Node.\n if (eventTarget && !swipeableWrapperRef.current?.contains(eventTarget)) {\n close();\n }\n }\n\n document.addEventListener('mousedown', closeCallback);\n document.addEventListener('touchstart', closeCallback);\n\n return () => {\n document.removeEventListener('mousedown', closeCallback);\n document.removeEventListener('touchstart', closeCallback);\n };\n }, [close]);\n\n // Vibrate when the threshold is passed\n useEffect(\n () =>\n listItemXOffset.onChange((newValue: number) => {\n const previous = listItemXOffset.getPrevious();\n\n const hasCrossedLeftThreshold =\n (previous < leftThreshold && newValue >= leftThreshold) ||\n (previous > leftThreshold && newValue <= leftThreshold);\n\n const hasCrossedRightThreshold =\n (previous < rightThreshold && newValue >= rightThreshold) ||\n (previous > rightThreshold && newValue <= rightThreshold);\n\n if (hasCrossedLeftThreshold || hasCrossedRightThreshold) {\n void vibrate({ iOSFeedbackVibration: 6, pattern: [150] });\n }\n }),\n [leftThreshold, listItemXOffset, rightThreshold],\n );\n\n const handlePan = useCallback(\n (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {\n const currentXOffset = listItemXOffset.get();\n\n const dampingFactor =\n (info.offset.x > 0 && leftActions.length > 0) ||\n (info.offset.x < 0 && rightActions.length > 0) ||\n (currentXOffset > 0 && info.delta.x < 0) ||\n (currentXOffset < 0 && info.delta.x > 0)\n ? 1\n : 0.75 / (Math.abs(info.offset.x) / 9);\n\n if (Math.abs(info.offset.x) > 30 || currentXOffset > 0) {\n listItemXOffset.set(currentXOffset + info.delta.x * dampingFactor);\n }\n },\n [leftActions.length, listItemXOffset, rightActions.length],\n );\n\n const handlePanEnd = useCallback(() => {\n const offset = listItemXOffset.get();\n\n if (offset > leftThreshold) {\n leftActions[0]?.action();\n close();\n } else if (offset < rightThreshold) {\n rightActions[rightActions.length - 1]?.action();\n close();\n } else {\n let state: 'left-open' | 'right-open' | 'closed';\n\n if (offset > 2) {\n state = 'left-open';\n } else if (offset < -2) {\n state = 'right-open';\n } else {\n state = 'closed';\n }\n\n // eslint-disable-next-line default-case\n switch (state) {\n case 'left-open':\n if (offset < SWIPEABLE_ACTION_WIDTH) {\n close();\n } else {\n open('left');\n }\n break;\n case 'right-open':\n if (offset > -SWIPEABLE_ACTION_WIDTH) {\n close();\n } else {\n open('right');\n }\n break;\n case 'closed':\n if (offset > SWIPEABLE_ACTION_WIDTH) {\n open('left');\n } else if (offset < -SWIPEABLE_ACTION_WIDTH) {\n open('right');\n } else {\n close();\n }\n }\n }\n }, [close, leftActions, leftThreshold, listItemXOffset, open, rightActions, rightThreshold]);\n\n const leftActionElements = useMemo(\n () =>\n Array.from(leftActions)\n .reverse()\n .map((item, index) => (\n <SwipeableAction\n activationThreshold={leftThreshold}\n close={close}\n index={index}\n item={item}\n key={item.key}\n listItemXOffset={listItemXOffset}\n position=\"left\"\n totalActionCount={leftActions.length}\n />\n )),\n [close, leftActions, leftThreshold, listItemXOffset],\n );\n\n const rightActionElements = useMemo(\n () =>\n rightActions.map((item, index) => (\n <SwipeableAction\n activationThreshold={rightThreshold}\n close={close}\n index={index}\n item={item}\n key={item.key}\n listItemXOffset={listItemXOffset}\n position=\"right\"\n totalActionCount={rightActions.length}\n />\n )),\n [close, rightActions, rightThreshold, listItemXOffset],\n );\n\n return (\n <StyledMotionSwipeableWrapper\n onPan={handlePan}\n onPanEnd={handlePanEnd}\n ref={swipeableWrapperRef}\n style={{ x: listItemXOffset }}\n >\n {leftActionElements}\n <StyledSwipeableWrapperContent>{children}</StyledSwipeableWrapperContent>\n {rightActionElements}\n </StyledMotionSwipeableWrapper>\n );\n};\n\nSwipeableWrapper.displayName = 'SwipeableWrapper';\n\nexport default SwipeableWrapper;\n"],"mappings":"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"}
@@ -1,18 +1,11 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.StyledSwipeableWrapperContent = exports.StyledMotionSwipeableWrapper = void 0;
7
- var _framerMotion = require("framer-motion");
8
- var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- const StyledMotionSwipeableWrapper = exports.StyledMotionSwipeableWrapper = (0, _styledComponents.default)(_framerMotion.motion.div)`
1
+ import { motion } from 'framer-motion';
2
+ import styled from 'styled-components';
3
+ export const StyledMotionSwipeableWrapper = styled(motion.div)`
11
4
  position: relative;
12
5
  touch-action: pan-y;
13
6
  user-select: none;
14
7
  `;
15
- const StyledSwipeableWrapperContent = exports.StyledSwipeableWrapperContent = _styledComponents.default.div`
8
+ export const StyledSwipeableWrapperContent = styled.div`
16
9
  overflow: hidden;
17
10
  width: 100%;
18
11
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"SwipeableWrapper.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","obj","__esModule","default","StyledMotionSwipeableWrapper","exports","styled","motion","div","StyledSwipeableWrapperContent"],"sources":["../../../src/components/swipeable-wrapper/SwipeableWrapper.styles.ts"],"sourcesContent":["import type { FramerMotionBugFix } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledMotionSwipeableWrapper = styled(motion.div)<FramerMotionBugFix>`\n position: relative;\n touch-action: pan-y;\n user-select: none;\n`;\n\nexport const StyledSwipeableWrapperContent = styled.div`\n overflow: hidden;\n width: 100%;\n`;\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEhC,MAAMG,4BAA4B,GAAAC,OAAA,CAAAD,4BAAA,GAAG,IAAAE,yBAAM,EAACC,oBAAM,CAACC,GAAG,CAAsB;AACnF;AACA;AACA;AACA,CAAC;AAEM,MAAMC,6BAA6B,GAAAJ,OAAA,CAAAI,6BAAA,GAAGH,yBAAM,CAACE,GAAI;AACxD;AACA;AACA,CAAC"}
1
+ {"version":3,"file":"SwipeableWrapper.styles.js","names":["motion","styled","StyledMotionSwipeableWrapper","div","StyledSwipeableWrapperContent"],"sources":["../../../src/components/swipeable-wrapper/SwipeableWrapper.styles.ts"],"sourcesContent":["import type { FramerMotionBugFix } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledMotionSwipeableWrapper = styled(motion.div)<FramerMotionBugFix>`\n position: relative;\n touch-action: pan-y;\n user-select: none;\n`;\n\nexport const StyledSwipeableWrapperContent = styled.div`\n overflow: hidden;\n width: 100%;\n`;\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,4BAA4B,GAAGD,MAAM,CAACD,MAAM,CAACG,GAAG,CAAsB;AACnF;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,6BAA6B,GAAGH,MAAM,CAACE,GAAI;AACxD;AACA;AACA,CAAC"}
@@ -1,15 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.SWIPEABLE_ACTION_WIDTH = void 0;
7
- var _framerMotion = require("framer-motion");
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _SwipeableAction = require("./SwipeableAction.styles");
10
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
- const SWIPEABLE_ACTION_WIDTH = exports.SWIPEABLE_ACTION_WIDTH = 72;
1
+ import { useSpring, useTransform } from 'framer-motion';
2
+ import React, { useEffect } from 'react';
3
+ import { StyledMotionSwipeableAction, StyledSwipeableActionButton } from './SwipeableAction.styles';
4
+ export const SWIPEABLE_ACTION_WIDTH = 72;
13
5
  const SwipeableAction = _ref => {
14
6
  let {
15
7
  activationThreshold,
@@ -29,7 +21,7 @@ const SwipeableAction = _ref => {
29
21
  * By default, the action sticks to the content of the swipeable item. This
30
22
  * makes it move outwards to reveal the inner items.
31
23
  */
32
- const actionOffset = (0, _framerMotion.useTransform)(listItemXOffset, newValue => {
24
+ const actionOffset = useTransform(listItemXOffset, newValue => {
33
25
  const maxOffset = SWIPEABLE_ACTION_WIDTH * index;
34
26
  const fractionalOffset = -newValue / totalActionCount * index;
35
27
  switch (position) {
@@ -46,7 +38,7 @@ const SwipeableAction = _ref => {
46
38
  * Brings the item in again if past the threshold. Only relevant for
47
39
  * outermost items.
48
40
  */
49
- const actionOverlayOffset = (0, _framerMotion.useSpring)(0, {
41
+ const actionOverlayOffset = useSpring(0, {
50
42
  bounce: 0
51
43
  });
52
44
 
@@ -54,7 +46,7 @@ const SwipeableAction = _ref => {
54
46
  * Combines the two values above to create the correct X transform that has
55
47
  * to be applied to the action.
56
48
  */
57
- const actionX = (0, _framerMotion.useTransform)([actionOffset, actionOverlayOffset], _ref2 => {
49
+ const actionX = useTransform([actionOffset, actionOverlayOffset], _ref2 => {
58
50
  let [x, y] = _ref2;
59
51
  if (position === 'left') {
60
52
  return Math.min((x ?? 0) + (y ?? 0), 0);
@@ -63,7 +55,7 @@ const SwipeableAction = _ref => {
63
55
  });
64
56
 
65
57
  // Animate to the middle after passing threshold if outermost item
66
- (0, _react.useEffect)(() => {
58
+ useEffect(() => {
67
59
  const isOuterMost = index === totalActionCount - 1;
68
60
  if (!isOuterMost) return undefined;
69
61
  return listItemXOffset.onChange(newValue => {
@@ -87,18 +79,18 @@ const SwipeableAction = _ref => {
87
79
  }
88
80
  });
89
81
  }, [actionOverlayOffset, activationThreshold, index, listItemXOffset, position, totalActionCount]);
90
- return /*#__PURE__*/_react.default.createElement(_SwipeableAction.StyledMotionSwipeableAction, {
82
+ return /*#__PURE__*/React.createElement(StyledMotionSwipeableAction, {
91
83
  backgroundColor: item.backgroundColor,
92
84
  position: position,
93
85
  style: {
94
86
  x: actionX
95
87
  }
96
- }, /*#__PURE__*/_react.default.createElement(_SwipeableAction.StyledSwipeableActionButton, {
88
+ }, /*#__PURE__*/React.createElement(StyledSwipeableActionButton, {
97
89
  color: item.color,
98
90
  onClick: handleButtonClick,
99
91
  width: `${SWIPEABLE_ACTION_WIDTH}px`
100
92
  }, item.icon, item.text));
101
93
  };
102
94
  SwipeableAction.displayName = 'SwipeableAction';
103
- var _default = exports.default = SwipeableAction;
95
+ export default SwipeableAction;
104
96
  //# sourceMappingURL=SwipeableAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwipeableAction.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_SwipeableAction","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","SWIPEABLE_ACTION_WIDTH","exports","SwipeableAction","_ref","activationThreshold","close","index","item","listItemXOffset","position","totalActionCount","handleButtonClick","action","actionOffset","useTransform","newValue","maxOffset","fractionalOffset","Math","max","min","actionOverlayOffset","useSpring","bounce","actionX","_ref2","x","y","useEffect","isOuterMost","undefined","onChange","lastValue","getPrevious","createElement","StyledMotionSwipeableAction","backgroundColor","style","StyledSwipeableActionButton","color","onClick","width","icon","text","displayName","_default"],"sources":["../../../../src/components/swipeable-wrapper/swipeable-action/SwipeableAction.tsx"],"sourcesContent":["import { MotionValue, useSpring, useTransform } from 'framer-motion';\nimport React, { FC, useEffect } from 'react';\nimport type { SwipeableActionItem } from '../SwipeableWrapper';\nimport { StyledMotionSwipeableAction, StyledSwipeableActionButton } from './SwipeableAction.styles';\n\nexport const SWIPEABLE_ACTION_WIDTH = 72;\n\nexport type SwipeableActionProps = {\n activationThreshold: number;\n close: VoidFunction;\n index: number;\n item: SwipeableActionItem;\n listItemXOffset: MotionValue<number>;\n position: 'left' | 'right';\n totalActionCount: number;\n};\n\nconst SwipeableAction: FC<SwipeableActionProps> = ({\n activationThreshold,\n close,\n index,\n item,\n listItemXOffset,\n position,\n totalActionCount,\n}) => {\n const handleButtonClick = () => {\n item.action();\n close();\n };\n\n /**\n * By default, the action sticks to the content of the swipeable item. This\n * makes it move outwards to reveal the inner items.\n */\n const actionOffset = useTransform(listItemXOffset, (newValue) => {\n const maxOffset = SWIPEABLE_ACTION_WIDTH * index;\n const fractionalOffset = (-newValue / totalActionCount) * index;\n\n switch (position) {\n case 'left':\n return Math.max(-maxOffset, fractionalOffset);\n case 'right':\n return Math.min(maxOffset, fractionalOffset);\n default:\n return 0;\n }\n });\n\n /**\n * Brings the item in again if past the threshold. Only relevant for\n * outermost items.\n */\n const actionOverlayOffset = useSpring(0, {\n bounce: 0,\n }) as MotionValue<number>;\n\n /**\n * Combines the two values above to create the correct X transform that has\n * to be applied to the action.\n */\n const actionX = useTransform<number, number>([actionOffset, actionOverlayOffset], ([x, y]) => {\n if (position === 'left') {\n return Math.min((x ?? 0) + (y ?? 0), 0);\n }\n\n return Math.max((x ?? 0) + (y ?? 0), 0);\n });\n\n // Animate to the middle after passing threshold if outermost item\n useEffect(() => {\n const isOuterMost = index === totalActionCount - 1;\n\n if (!isOuterMost) return undefined;\n\n return listItemXOffset.onChange((newValue) => {\n const lastValue = listItemXOffset.getPrevious();\n\n // eslint-disable-next-line default-case\n switch (position) {\n case 'left':\n if (newValue > activationThreshold && lastValue <= activationThreshold) {\n actionOverlayOffset.set(SWIPEABLE_ACTION_WIDTH * index);\n } else if (newValue < activationThreshold && lastValue >= activationThreshold) {\n actionOverlayOffset.set(0);\n }\n break;\n case 'right':\n if (newValue < activationThreshold && lastValue >= activationThreshold) {\n actionOverlayOffset.set(SWIPEABLE_ACTION_WIDTH * -1 * index);\n } else if (newValue > activationThreshold && lastValue <= activationThreshold) {\n actionOverlayOffset.set(0);\n }\n }\n });\n }, [\n actionOverlayOffset,\n activationThreshold,\n index,\n listItemXOffset,\n position,\n totalActionCount,\n ]);\n\n return (\n <StyledMotionSwipeableAction\n backgroundColor={item.backgroundColor}\n position={position}\n style={{ x: actionX }}\n >\n <StyledSwipeableActionButton\n color={item.color}\n onClick={handleButtonClick}\n width={`${SWIPEABLE_ACTION_WIDTH}px`}\n >\n {item.icon}\n {item.text}\n </StyledSwipeableActionButton>\n </StyledMotionSwipeableAction>\n );\n};\n\nSwipeableAction.displayName = 'SwipeableAction';\n\nexport default SwipeableAction;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SwipeableAction.js","names":["useSpring","useTransform","React","useEffect","StyledMotionSwipeableAction","StyledSwipeableActionButton","SWIPEABLE_ACTION_WIDTH","SwipeableAction","_ref","activationThreshold","close","index","item","listItemXOffset","position","totalActionCount","handleButtonClick","action","actionOffset","newValue","maxOffset","fractionalOffset","Math","max","min","actionOverlayOffset","bounce","actionX","_ref2","x","y","isOuterMost","undefined","onChange","lastValue","getPrevious","set","createElement","backgroundColor","style","color","onClick","width","icon","text","displayName"],"sources":["../../../../src/components/swipeable-wrapper/swipeable-action/SwipeableAction.tsx"],"sourcesContent":["import { MotionValue, useSpring, useTransform } from 'framer-motion';\nimport React, { FC, useEffect } from 'react';\nimport type { SwipeableActionItem } from '../SwipeableWrapper';\nimport { StyledMotionSwipeableAction, StyledSwipeableActionButton } from './SwipeableAction.styles';\n\nexport const SWIPEABLE_ACTION_WIDTH = 72;\n\nexport type SwipeableActionProps = {\n activationThreshold: number;\n close: VoidFunction;\n index: number;\n item: SwipeableActionItem;\n listItemXOffset: MotionValue<number>;\n position: 'left' | 'right';\n totalActionCount: number;\n};\n\nconst SwipeableAction: FC<SwipeableActionProps> = ({\n activationThreshold,\n close,\n index,\n item,\n listItemXOffset,\n position,\n totalActionCount,\n}) => {\n const handleButtonClick = () => {\n item.action();\n close();\n };\n\n /**\n * By default, the action sticks to the content of the swipeable item. This\n * makes it move outwards to reveal the inner items.\n */\n const actionOffset = useTransform(listItemXOffset, (newValue) => {\n const maxOffset = SWIPEABLE_ACTION_WIDTH * index;\n const fractionalOffset = (-newValue / totalActionCount) * index;\n\n switch (position) {\n case 'left':\n return Math.max(-maxOffset, fractionalOffset);\n case 'right':\n return Math.min(maxOffset, fractionalOffset);\n default:\n return 0;\n }\n });\n\n /**\n * Brings the item in again if past the threshold. Only relevant for\n * outermost items.\n */\n const actionOverlayOffset = useSpring(0, {\n bounce: 0,\n }) as MotionValue<number>;\n\n /**\n * Combines the two values above to create the correct X transform that has\n * to be applied to the action.\n */\n const actionX = useTransform<number, number>([actionOffset, actionOverlayOffset], ([x, y]) => {\n if (position === 'left') {\n return Math.min((x ?? 0) + (y ?? 0), 0);\n }\n\n return Math.max((x ?? 0) + (y ?? 0), 0);\n });\n\n // Animate to the middle after passing threshold if outermost item\n useEffect(() => {\n const isOuterMost = index === totalActionCount - 1;\n\n if (!isOuterMost) return undefined;\n\n return listItemXOffset.onChange((newValue) => {\n const lastValue = listItemXOffset.getPrevious();\n\n // eslint-disable-next-line default-case\n switch (position) {\n case 'left':\n if (newValue > activationThreshold && lastValue <= activationThreshold) {\n actionOverlayOffset.set(SWIPEABLE_ACTION_WIDTH * index);\n } else if (newValue < activationThreshold && lastValue >= activationThreshold) {\n actionOverlayOffset.set(0);\n }\n break;\n case 'right':\n if (newValue < activationThreshold && lastValue >= activationThreshold) {\n actionOverlayOffset.set(SWIPEABLE_ACTION_WIDTH * -1 * index);\n } else if (newValue > activationThreshold && lastValue <= activationThreshold) {\n actionOverlayOffset.set(0);\n }\n }\n });\n }, [\n actionOverlayOffset,\n activationThreshold,\n index,\n listItemXOffset,\n position,\n totalActionCount,\n ]);\n\n return (\n <StyledMotionSwipeableAction\n backgroundColor={item.backgroundColor}\n position={position}\n style={{ x: actionX }}\n >\n <StyledSwipeableActionButton\n color={item.color}\n onClick={handleButtonClick}\n width={`${SWIPEABLE_ACTION_WIDTH}px`}\n >\n {item.icon}\n {item.text}\n </StyledSwipeableActionButton>\n </StyledMotionSwipeableAction>\n );\n};\n\nSwipeableAction.displayName = 'SwipeableAction';\n\nexport default SwipeableAction;\n"],"mappings":"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"}
@@ -1,14 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.StyledSwipeableActionButton = exports.StyledMotionSwipeableAction = void 0;
7
- var _framerMotion = require("framer-motion");
8
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
- const StyledMotionSwipeableAction = exports.StyledMotionSwipeableAction = (0, _styledComponents.default)(_framerMotion.motion.div)`
1
+ import { motion } from 'framer-motion';
2
+ import styled, { css } from 'styled-components';
3
+ export const StyledMotionSwipeableAction = styled(motion.div)`
12
4
  background-color: ${_ref => {
13
5
  let {
14
6
  backgroundColor
@@ -26,18 +18,18 @@ const StyledMotionSwipeableAction = exports.StyledMotionSwipeableAction = (0, _s
26
18
  position
27
19
  } = _ref2;
28
20
  if (position === 'left') {
29
- return (0, _styledComponents.css)`
21
+ return css`
30
22
  justify-content: flex-end;
31
23
  right: 100%;
32
24
  `;
33
25
  }
34
- return (0, _styledComponents.css)`
26
+ return css`
35
27
  justify-content: flex-start;
36
28
  left: 100%;
37
29
  `;
38
30
  }}
39
31
  `;
40
- const StyledSwipeableActionButton = exports.StyledSwipeableActionButton = _styledComponents.default.button`
32
+ export const StyledSwipeableActionButton = styled.button`
41
33
  align-items: center;
42
34
  appearance: none;
43
35
  background: none;
@@ -1 +1 @@
1
- {"version":3,"file":"SwipeableAction.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","StyledMotionSwipeableAction","exports","styled","motion","div","_ref","backgroundColor","_ref2","position","css","StyledSwipeableActionButton","button","_ref3","color","_ref4","width"],"sources":["../../../../src/components/swipeable-wrapper/swipeable-action/SwipeableAction.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport type { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport type { SwipeableActionItem } from '../SwipeableWrapper';\nimport type { SwipeableActionProps } from './SwipeableAction';\n\ntype StyledSwipeableActionProps = Pick<SwipeableActionProps, 'position'> &\n Pick<SwipeableActionItem, 'backgroundColor'>;\n\nexport const StyledMotionSwipeableAction = styled(motion.div)<StyledSwipeableActionProps>`\n background-color: ${({ backgroundColor }) => backgroundColor};\n display: flex;\n height: 100%;\n position: absolute;\n top: 0;\n width: 200vw;\n\n ${({ position }) => {\n if (position === 'left') {\n return css`\n justify-content: flex-end;\n right: 100%;\n `;\n }\n return css`\n justify-content: flex-start;\n left: 100%;\n `;\n }}\n`;\n\ntype StyledSwipeableActionButtonsProps = Pick<SwipeableActionItem, 'color'> & {\n width: CSSProperties['width'];\n};\n\nexport const StyledSwipeableActionButton = styled.button<StyledSwipeableActionButtonsProps>`\n align-items: center;\n appearance: none;\n background: none;\n box-shadow: none;\n color: ${({ color }) => color};\n display: flex;\n flex-direction: column;\n font-size: 88%;\n gap: 4px;\n height: 100%;\n justify-content: center;\n margin: 0;\n padding: 0;\n width: ${({ width }) => width};\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAOzC,MAAMY,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,IAAAE,yBAAM,EAACC,oBAAM,CAACC,GAAG,CAA8B;AAC1F,wBAAwBC,IAAA;EAAA,IAAC;IAAEC;EAAgB,CAAC,GAAAD,IAAA;EAAA,OAAKC,eAAe;AAAA,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,KAAA,IAAkB;EAAA,IAAjB;IAAEC;EAAS,CAAC,GAAAD,KAAA;EACX,IAAIC,QAAQ,KAAK,MAAM,EAAE;IACrB,OAAO,IAAAC,qBAAG,CAAC;AACvB;AACA;AACA,aAAa;EACL;EACA,OAAO,IAAAA,qBAAG,CAAC;AACnB;AACA;AACA,SAAS;AACL,CAAE;AACN,CAAC;AAMM,MAAMC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,GAAGR,yBAAM,CAACS,MAA0C;AAC5F;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK;AAAA,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK;AAAA,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"SwipeableAction.styles.js","names":["motion","styled","css","StyledMotionSwipeableAction","div","_ref","backgroundColor","_ref2","position","StyledSwipeableActionButton","button","_ref3","color","_ref4","width"],"sources":["../../../../src/components/swipeable-wrapper/swipeable-action/SwipeableAction.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport type { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport type { SwipeableActionItem } from '../SwipeableWrapper';\nimport type { SwipeableActionProps } from './SwipeableAction';\n\ntype StyledSwipeableActionProps = Pick<SwipeableActionProps, 'position'> &\n Pick<SwipeableActionItem, 'backgroundColor'>;\n\nexport const StyledMotionSwipeableAction = styled(motion.div)<StyledSwipeableActionProps>`\n background-color: ${({ backgroundColor }) => backgroundColor};\n display: flex;\n height: 100%;\n position: absolute;\n top: 0;\n width: 200vw;\n\n ${({ position }) => {\n if (position === 'left') {\n return css`\n justify-content: flex-end;\n right: 100%;\n `;\n }\n return css`\n justify-content: flex-start;\n left: 100%;\n `;\n }}\n`;\n\ntype StyledSwipeableActionButtonsProps = Pick<SwipeableActionItem, 'color'> & {\n width: CSSProperties['width'];\n};\n\nexport const StyledSwipeableActionButton = styled.button<StyledSwipeableActionButtonsProps>`\n align-items: center;\n appearance: none;\n background: none;\n box-shadow: none;\n color: ${({ color }) => color};\n display: flex;\n flex-direction: column;\n font-size: 88%;\n gap: 4px;\n height: 100%;\n justify-content: center;\n margin: 0;\n padding: 0;\n width: ${({ width }) => width};\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AAEtC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAO/C,OAAO,MAAMC,2BAA2B,GAAGF,MAAM,CAACD,MAAM,CAACI,GAAG,CAA8B;AAC1F,wBAAwBC,IAAA;EAAA,IAAC;IAAEC;EAAgB,CAAC,GAAAD,IAAA;EAAA,OAAKC,eAAe;AAAA,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,KAAA,IAAkB;EAAA,IAAjB;IAAEC;EAAS,CAAC,GAAAD,KAAA;EACX,IAAIC,QAAQ,KAAK,MAAM,EAAE;IACrB,OAAON,GAAI;AACvB;AACA;AACA,aAAa;EACL;EACA,OAAOA,GAAI;AACnB;AACA;AACA,SAAS;AACL,CAAE;AACN,CAAC;AAMD,OAAO,MAAMO,2BAA2B,GAAGR,MAAM,CAACS,MAA0C;AAC5F;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK;AAAA,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK;AAAA,CAAC;AAClC,CAAC"}
package/lib/index.js CHANGED
@@ -1,14 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "SwipeableWrapper", {
7
- enumerable: true,
8
- get: function () {
9
- return _SwipeableWrapper.default;
10
- }
11
- });
12
- var _SwipeableWrapper = _interopRequireDefault(require("./components/swipeable-wrapper/SwipeableWrapper"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1
+ export { default as SwipeableWrapper } from './components/swipeable-wrapper/SwipeableWrapper';
14
2
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_SwipeableWrapper","_interopRequireDefault","require","obj","__esModule","default"],"sources":["../src/index.ts"],"sourcesContent":["export { default as SwipeableWrapper } from './components/swipeable-wrapper/SwipeableWrapper';\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8F,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
1
+ {"version":3,"file":"index.js","names":["default","SwipeableWrapper"],"sources":["../src/index.ts"],"sourcesContent":["export { default as SwipeableWrapper } from './components/swipeable-wrapper/SwipeableWrapper';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,gBAAgB,QAAQ,iDAAiD"}
@@ -1,17 +1,10 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.calcThreshold = void 0;
7
- var _SwipeableAction = require("../components/swipeable-wrapper/swipeable-action/SwipeableAction");
8
- const calcThreshold = _ref => {
1
+ import { SWIPEABLE_ACTION_WIDTH } from '../components/swipeable-wrapper/swipeable-action/SwipeableAction';
2
+ export const calcThreshold = _ref => {
9
3
  let {
10
4
  actionCount,
11
5
  direction,
12
6
  width
13
7
  } = _ref;
14
- return Math.max(width / 2, _SwipeableAction.SWIPEABLE_ACTION_WIDTH * actionCount) * (direction === 'left' ? 1 : -1);
8
+ return Math.max(width / 2, SWIPEABLE_ACTION_WIDTH * actionCount) * (direction === 'left' ? 1 : -1);
15
9
  };
16
- exports.calcThreshold = calcThreshold;
17
10
  //# sourceMappingURL=threshold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"threshold.js","names":["_SwipeableAction","require","calcThreshold","_ref","actionCount","direction","width","Math","max","SWIPEABLE_ACTION_WIDTH","exports"],"sources":["../../src/utils/threshold.ts"],"sourcesContent":["import { SWIPEABLE_ACTION_WIDTH } from '../components/swipeable-wrapper/swipeable-action/SwipeableAction';\n\ninterface CalcThresholdOptions {\n actionCount: number;\n direction: 'left' | 'right';\n width: number;\n}\n\nexport const calcThreshold = ({ actionCount, direction, width }: CalcThresholdOptions) =>\n Math.max(width / 2, SWIPEABLE_ACTION_WIDTH * actionCount) * (direction === 'left' ? 1 : -1);\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAQO,MAAMC,aAAa,GAAGC,IAAA;EAAA,IAAC;IAAEC,WAAW;IAAEC,SAAS;IAAEC;EAA4B,CAAC,GAAAH,IAAA;EAAA,OACjFI,IAAI,CAACC,GAAG,CAACF,KAAK,GAAG,CAAC,EAAEG,uCAAsB,GAAGL,WAAW,CAAC,IAAIC,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA;AAACK,OAAA,CAAAR,aAAA,GAAAA,aAAA"}
1
+ {"version":3,"file":"threshold.js","names":["SWIPEABLE_ACTION_WIDTH","calcThreshold","_ref","actionCount","direction","width","Math","max"],"sources":["../../src/utils/threshold.ts"],"sourcesContent":["import { SWIPEABLE_ACTION_WIDTH } from '../components/swipeable-wrapper/swipeable-action/SwipeableAction';\n\ninterface CalcThresholdOptions {\n actionCount: number;\n direction: 'left' | 'right';\n width: number;\n}\n\nexport const calcThreshold = ({ actionCount, direction, width }: CalcThresholdOptions) =>\n Math.max(width / 2, SWIPEABLE_ACTION_WIDTH * actionCount) * (direction === 'left' ? 1 : -1);\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,kEAAkE;AAQzG,OAAO,MAAMC,aAAa,GAAGC,IAAA;EAAA,IAAC;IAAEC,WAAW;IAAEC,SAAS;IAAEC;EAA4B,CAAC,GAAAH,IAAA;EAAA,OACjFI,IAAI,CAACC,GAAG,CAACF,KAAK,GAAG,CAAC,EAAEL,sBAAsB,GAAGG,WAAW,CAAC,IAAIC,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/swipeable-wrapper",
3
- "version": "5.0.0-beta.441",
3
+ "version": "5.0.0-beta.443",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "keywords": [
6
6
  "chayns",
@@ -33,24 +33,24 @@
33
33
  "url": "https://github.com/TobitSoftware/chayns-components/issues"
34
34
  },
35
35
  "devDependencies": {
36
- "@babel/cli": "^7.23.4",
37
- "@babel/core": "^7.23.7",
38
- "@babel/preset-env": "^7.23.8",
36
+ "@babel/cli": "^7.23.9",
37
+ "@babel/core": "^7.23.9",
38
+ "@babel/preset-env": "^7.23.9",
39
39
  "@babel/preset-react": "^7.23.3",
40
40
  "@babel/preset-typescript": "^7.23.3",
41
- "@types/react": "^18.2.48",
42
- "@types/react-dom": "^18.2.18",
41
+ "@types/react": "^18.2.55",
42
+ "@types/react-dom": "^18.2.19",
43
43
  "@types/styled-components": "^5.1.34",
44
- "@types/uuid": "^9.0.7",
44
+ "@types/uuid": "^9.0.8",
45
45
  "babel-loader": "^9.1.3",
46
- "lerna": "^8.0.2",
46
+ "lerna": "^8.1.2",
47
47
  "react": "^18.2.0",
48
48
  "react-dom": "^18.2.0",
49
49
  "styled-components": "^6.1.8",
50
50
  "typescript": "^5.3.3"
51
51
  },
52
52
  "dependencies": {
53
- "@chayns-components/core": "^5.0.0-beta.441"
53
+ "@chayns-components/core": "^5.0.0-beta.443"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "chayns-api": ">=1.0.50",
@@ -62,5 +62,5 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "gitHead": "d9b7d5cebd42707113634c1d54151306f6236d8f"
65
+ "gitHead": "3f3e8b424de86b8597fd4670766a496a767ee1ba"
66
66
  }