react-native-gesture-handler 2.6.1 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. package/lib/commonjs/RNGestureHandlerModule.macos.js +2 -4
  2. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  3. package/lib/commonjs/components/GestureComponents.js +6 -4
  4. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  5. package/lib/commonjs/components/Swipeable.js +4 -4
  6. package/lib/commonjs/components/Swipeable.js.map +1 -1
  7. package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
  8. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  9. package/lib/commonjs/utils.js +10 -6
  10. package/lib/commonjs/utils.js.map +1 -1
  11. package/lib/commonjs/web/handlers/GestureHandler.js +48 -0
  12. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  13. package/lib/module/RNGestureHandlerModule.macos.js +2 -4
  14. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  15. package/lib/module/components/GestureComponents.js +6 -4
  16. package/lib/module/components/GestureComponents.js.map +1 -1
  17. package/lib/module/components/Swipeable.js +4 -4
  18. package/lib/module/components/Swipeable.js.map +1 -1
  19. package/lib/module/handlers/gestures/GestureDetector.js +5 -3
  20. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  21. package/lib/module/utils.js +7 -6
  22. package/lib/module/utils.js.map +1 -1
  23. package/lib/module/web/handlers/GestureHandler.js +48 -0
  24. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  25. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  26. package/lib/typescript/components/Swipeable.d.ts +3 -3
  27. package/lib/typescript/utils.d.ts +4 -0
  28. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  29. package/package.json +1 -1
  30. package/src/RNGestureHandlerModule.macos.ts +3 -3
  31. package/src/components/GestureComponents.tsx +12 -16
  32. package/src/components/Swipeable.tsx +11 -7
  33. package/src/handlers/gestures/GestureDetector.tsx +8 -3
  34. package/src/utils.ts +6 -6
  35. package/src/web/handlers/GestureHandler.ts +59 -0
@@ -154,6 +154,10 @@ class GestureHandler {
154
154
  return;
155
155
  }
156
156
 
157
+ if (this.tracker.getTrackedPointersCount() > 0 && (newState === _State.State.END || newState === _State.State.CANCELLED || newState === _State.State.FAILED)) {
158
+ this.cancelTouches();
159
+ }
160
+
157
161
  const oldState = this.currentState;
158
162
  this.currentState = newState;
159
163
 
@@ -487,6 +491,50 @@ class GestureHandler {
487
491
  };
488
492
  }
489
493
 
494
+ cancelTouches() {
495
+ const rect = this.view.getBoundingClientRect();
496
+ const all = [];
497
+ const changed = [];
498
+ const trackerData = this.tracker.getData();
499
+
500
+ if (trackerData.size === 0) {
501
+ return;
502
+ }
503
+
504
+ trackerData.forEach((element, key) => {
505
+ const id = this.tracker.getMappedTouchEventId(key);
506
+ all.push({
507
+ id: id,
508
+ x: element.lastX - rect.left,
509
+ y: element.lastY - rect.top,
510
+ absoluteX: element.lastX,
511
+ absoluteY: element.lastY
512
+ });
513
+ changed.push({
514
+ id: id,
515
+ x: element.lastX - rect.left,
516
+ y: element.lastY - rect.top,
517
+ absoluteX: element.lastX,
518
+ absoluteY: element.lastY
519
+ });
520
+ });
521
+ const cancelEvent = {
522
+ nativeEvent: {
523
+ handlerTag: this.handlerTag,
524
+ state: this.currentState,
525
+ eventType: _interfaces.TouchEventType.CANCELLED,
526
+ changedTouches: changed,
527
+ allTouches: all,
528
+ numberOfTouches: all.length
529
+ },
530
+ timeStamp: Date.now()
531
+ };
532
+ const {
533
+ onGestureHandlerEvent
534
+ } = this.propsRef.current;
535
+ invokeNullableMethod(onGestureHandlerEvent, cancelEvent);
536
+ }
537
+
490
538
  transformNativeEvent() {
491
539
  return {};
492
540
  } //
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","style","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","config","needsPointerData","sendTouchEvent","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","getTrackedPointersCount","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","updateGestureConfig","props","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isPointerInBounds","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","setShouldCancelWhenOutside","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = (findNodeHandle(this.ref) as unknown) as HTMLElement;\n this.view.style['touchAction'] = 'none';\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined = this.transformTouchEvent(\n event\n );\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const {\n onGestureHandlerEvent,\n onGestureHandlerStateChange,\n }: PropsRef = this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
1
+ {"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","style","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","END","CANCELLED","FAILED","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","cursor","cancel","activate","_force","end","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","config","needsPointerData","sendTouchEvent","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isPointerInBounds","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","setShouldCancelWhenOutside","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AAYA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEe,MAAeA,cAAf,CAA8B;AAiB3C;AAOOC,EAAAA,WAAW,GAAG;AAAA,2CAvBiB,IAuBjB;;AAAA,0CAtBWC,aAAMC,YAsBjB;;AAAA,sDApBgB,KAoBhB;;AAAA;;AAAA,qCAlBD,KAkBC;;AAAA;;AAAA;;AAAA;;AAAA,oCAbM;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAaN;;AAAA;;AAAA,2CAVqB,EAUrB;;AAAA,qCATe,IAAIC,uBAAJ,EASf;;AAAA,6CANO,CAMP;;AAAA,sCALA,KAKA;;AAAA,oCAJF,KAIE;;AAAA,iDAHW,KAGX;;AAAA,yCAFgBC,wBAAYC,IAE5B;;AAAA,uCA0UF,CAACC,QAAD,EAAkBC,QAAlB,KAA4C;AAC7D,YAAM;AACJC,QAAAA,qBADI;AAEJC,QAAAA;AAFI,UAGQ,KAAKC,QAAL,CAAcC,OAH5B;AAKA,YAAMC,WAAwB,GAAG,KAAKC,kBAAL,CAC/BP,QAD+B,EAE/BC,QAF+B,CAAjC,CAN6D,CAW7D;AACA;AACA;AACA;;AAEA,UAAI,KAAKO,aAAL,KAAuBR,QAA3B,EAAqC;AACnC,aAAKQ,aAAL,GAAqBR,QAArB;AACAS,QAAAA,oBAAoB,CAACN,2BAAD,EAA8BG,WAA9B,CAApB;AACD;;AACD,UAAI,KAAKI,YAAL,KAAsBhB,aAAMiB,MAAhC,EAAwC;AACtCL,QAAAA,WAAW,CAACM,WAAZ,CAAwBX,QAAxB,GAAmCY,SAAnC;AACAJ,QAAAA,oBAAoB,CAACP,qBAAD,EAAwBI,WAAxB,CAApB;AACD;AACF,KAlWoB;;AACnB,SAAKQ,2BAAL,GAAmC,KAAnC;AACD,GA1B0C,CA4B3C;AACA;AACA;;;AAEUC,EAAAA,IAAI,CAACC,GAAD,EAAcZ,QAAd,EAAkD;AAC9D,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKY,GAAL,GAAWA,GAAX;AAEA,SAAKN,YAAL,GAAoBhB,aAAMC,YAA1B;AAEA,SAAKsB,OAAL;AACA,SAAKC,eAAL,CAAqB,IAAIC,4BAAJ,CAAwB,KAAKC,IAA7B,CAArB;AACA,SAAKF,eAAL,CAAqB,IAAIG,0BAAJ,CAAsB,KAAKD,IAA3B,CAArB;AACD;;AAEOH,EAAAA,OAAO,GAAG;AAChB,QAAI,CAAC,KAAKD,GAAV,EAAe;AACb,YAAM,IAAIM,KAAJ,CACH,wCAAuC,KAAKC,UAAW,EADpD,CAAN;AAGD;;AAED,SAAKH,IAAL,GAAa,iCAAe,KAAKJ,GAApB,CAAb;AACA,SAAKI,IAAL,CAAUI,KAAV,CAAgB,aAAhB,IAAiC,MAAjC;AACA,SAAKJ,IAAL,CAAUI,KAAV,CAAgB,kBAAhB,IAAsC,MAAtC;AACA,SAAKJ,IAAL,CAAUI,KAAV,CAAgB,YAAhB,IAAgC,MAAhC,CAVgB,CAYhB;;AACA,SAAKJ,IAAL,CAAUI,KAAV,CAAgB,oBAAhB,IAAwC,MAAxC;AACD;;AAEON,EAAAA,eAAe,CAACO,OAAD,EAA8B;AACnDA,IAAAA,OAAO,CAACC,gBAAR,CAAyB,KAAKC,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAAzB;AACAH,IAAAA,OAAO,CAACI,eAAR,CAAwB,KAAKC,YAAL,CAAkBF,IAAlB,CAAuB,IAAvB,CAAxB;AACAH,IAAAA,OAAO,CAACM,cAAR,CAAuB,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CAAvB;AACAH,IAAAA,OAAO,CAACQ,kBAAR,CAA2B,KAAKC,eAAL,CAAqBN,IAArB,CAA0B,IAA1B,CAA3B;AACAH,IAAAA,OAAO,CAACU,gBAAR,CAAyB,KAAKC,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB,CAAzB;AACAH,IAAAA,OAAO,CAACY,iBAAR,CAA0B,KAAKC,cAAL,CAAoBV,IAApB,CAAyB,IAAzB,CAA1B;AACAH,IAAAA,OAAO,CAACc,eAAR,CAAwB,KAAKC,YAAL,CAAkBZ,IAAlB,CAAuB,IAAvB,CAAxB;AACAH,IAAAA,OAAO,CAACgB,kBAAR,CAA2B,KAAKC,eAAL,CAAqBd,IAArB,CAA0B,IAA1B,CAA3B;AACAH,IAAAA,OAAO,CAACkB,uBAAR,CAAgC,KAAKC,oBAAL,CAA0BhB,IAA1B,CAA+B,IAA/B,CAAhC;AACAH,IAAAA,OAAO,CAACoB,YAAR;AAEA,SAAKC,aAAL,CAAmBC,IAAnB,CAAwBtB,OAAxB;AACD,GAxE0C,CA0E3C;AACA;AACA;;;AAEUuB,EAAAA,QAAQ,GAAS,CAAE;;AACnBC,EAAAA,OAAO,GAAS,CAAE;;AAClBC,EAAAA,aAAa,GAAS,CAAE;;AAE3BC,EAAAA,KAAK,GAAS;AACnB,SAAKC,OAAL,CAAaC,YAAb;AACA,SAAKJ,OAAL;AACA,SAAKC,aAAL;AACA,SAAKJ,aAAL,CAAmBQ,OAAnB,CAA4B7B,OAAD,IACzBA,OAAO,CAAC8B,YAAR,EADF;AAGA,SAAK7C,YAAL,GAAoBhB,aAAMC,YAA1B;AACD,GA1F0C,CA4F3C;AACA;AACA;;;AAEO6D,EAAAA,WAAW,CAACxD,QAAD,EAAkByD,cAAlB,EAA4C;AAC5D,QAAI,KAAK/C,YAAL,KAAsBV,QAA1B,EAAoC;AAClC;AACD;;AAED,QACE,KAAKoD,OAAL,CAAaM,uBAAb,KAAyC,CAAzC,KACC1D,QAAQ,KAAKN,aAAMiE,GAAnB,IACC3D,QAAQ,KAAKN,aAAMkE,SADpB,IAEC5D,QAAQ,KAAKN,aAAMmE,MAHrB,CADF,EAKE;AACA,WAAKC,aAAL;AACD;;AAED,UAAM7D,QAAQ,GAAG,KAAKS,YAAtB;AACA,SAAKA,YAAL,GAAoBV,QAApB;;AAEA+D,wCAA2BC,WAA3B,GAAyCC,oBAAzC,CACE,IADF,EAEEjE,QAFF,EAGEC,QAHF,EAIEwD,cAJF;;AAOA,SAAKS,aAAL,CAAmBlE,QAAnB,EAA6BC,QAA7B;AACD;;AAESiE,EAAAA,aAAa,CAACC,SAAD,EAAmBC,SAAnB,EAA2C,CAAE;;AAE7DC,EAAAA,KAAK,GAAS;AACnB,QAAI,CAAC,KAAKC,YAAL,EAAL,EAA0B;AACxB;AACD;;AAED,QAAI,KAAK5D,YAAL,KAAsBhB,aAAMC,YAAhC,EAA8C;AAC5C,WAAK6D,WAAL,CAAiB9D,aAAM6E,KAAvB;AACD;AACF;AAED;AACF;AACA;;;AACSC,EAAAA,IAAI,CAACf,cAAD,EAAiC;AAC1C,QACE,KAAK/C,YAAL,KAAsBhB,aAAMiB,MAA5B,IACA,KAAKD,YAAL,KAAsBhB,aAAM6E,KAF9B,EAGE;AACA,WAAKf,WAAL,CAAiB9D,aAAMmE,MAAvB,EAA+BJ,cAA/B;AACA,WAAKrC,IAAL,CAAUI,KAAV,CAAgBiD,MAAhB,GAAyB,MAAzB;AACD;;AAED,SAAKvB,aAAL;AACD;AAED;AACF;AACA;;;AACSwB,EAAAA,MAAM,CAACjB,cAAD,EAAiC;AAC5C,QACE,KAAK/C,YAAL,KAAsBhB,aAAMiB,MAA5B,IACA,KAAKD,YAAL,KAAsBhB,aAAMC,YAD5B,IAEA,KAAKe,YAAL,KAAsBhB,aAAM6E,KAH9B,EAIE;AACA,WAAKvB,QAAL;AACA,WAAKQ,WAAL,CAAiB9D,aAAMkE,SAAvB,EAAkCH,cAAlC;AACA,WAAKrC,IAAL,CAAUI,KAAV,CAAgBiD,MAAhB,GAAyB,MAAzB;AACD;AACF;;AAEME,EAAAA,QAAQ,CAACC,MAAM,GAAG,KAAV,EAAiB;AAC9B,QACE,KAAKlE,YAAL,KAAsBhB,aAAMC,YAA5B,IACA,KAAKe,YAAL,KAAsBhB,aAAM6E,KAF9B,EAGE;AACA,WAAKf,WAAL,CAAiB9D,aAAMiB,MAAvB;AACA,WAAKS,IAAL,CAAUI,KAAV,CAAgBiD,MAAhB,GAAyB,MAAzB;AACD;AACF;;AAEMI,EAAAA,GAAG,GAAG;AACX,QACE,KAAKnE,YAAL,KAAsBhB,aAAM6E,KAA5B,IACA,KAAK7D,YAAL,KAAsBhB,aAAMiB,MAF9B,EAGE;AACA,WAAK6C,WAAL,CAAiB9D,aAAMiE,GAAvB;AACA,WAAKvC,IAAL,CAAUI,KAAV,CAAgBiD,MAAhB,GAAyB,MAAzB;AACD;;AAED,SAAKvB,aAAL;AACD,GAzL0C,CA2L3C;AACA;AACA;;;AAEO4B,EAAAA,UAAU,GAAY;AAC3B,WAAO,KAAKC,QAAZ;AACD;;AACMC,EAAAA,WAAW,CAACC,KAAD,EAAuB;AACvC,SAAKF,QAAL,GAAgBE,KAAhB;AACD;;AAEMC,EAAAA,QAAQ,GAAY;AACzB,WAAO,KAAKC,MAAZ;AACD;;AACMC,EAAAA,SAAS,CAACH,KAAD,EAAuB;AACrC,SAAKE,MAAL,GAAcF,KAAd;AACD;;AAEMI,EAAAA,sBAAsB,GAAY;AACvC,WAAO,KAAKC,mBAAZ;AACD;;AACMC,EAAAA,sBAAsB,CAACN,KAAD,EAAuB;AAClD,SAAKK,mBAAL,GAA2BL,KAA3B;AACD;;AAEMO,EAAAA,kBAAkB,GAAW;AAClC,WAAO,KAAKC,eAAZ;AACD;;AACMC,EAAAA,kBAAkB,CAACT,KAAD,EAAsB;AAC7C,SAAKQ,eAAL,GAAuBR,KAAvB;AACD;;AAEMU,EAAAA,2BAA2B,CAACC,OAAD,EAAmC;AACnE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmB7B,WAAnB,GAAiC2B,2BAAjC,CACL,IADK,EAELC,OAFK,CAAP;AAID;;AAEME,EAAAA,6BAA6B,CAACF,OAAD,EAAmC;AACrE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmB7B,WAAnB,GAAiC+B,oCAAjC,CACL,IADK,EAELH,OAFK,CAAP;AAID;;AAEMI,EAAAA,6BAA6B,CAACJ,OAAD,EAAmC;AACrE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,IAAP;AACD;;AAED,WAAOC,4BAAmB7B,WAAnB,GAAiCgC,6BAAjC,CACL,IADK,EAELJ,OAFK,CAAP;AAID;;AAEMK,EAAAA,wBAAwB,CAACL,OAAD,EAAmC;AAChE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmB7B,WAAnB,GAAiCkC,0BAAjC,CACL,IADK,EAELN,OAFK,CAAP;AAID,GArQ0C,CAuQ3C;AACA;AACA;;;AAEUjE,EAAAA,aAAa,CAACwE,KAAD,EAA4B;AACjDpC,wCAA2BC,WAA3B,GAAyCoC,yBAAzC,CAAmE,IAAnE;;AACA,SAAKC,WAAL,GAAmBF,KAAK,CAACE,WAAzB;;AAEA,QAAI,KAAKA,WAAL,KAAqBvG,wBAAYwG,KAArC,EAA4C;AAC1CvC,0CAA2BC,WAA3B,GAAyCuC,yBAAzC,CAAmE,IAAnE;AACD;;AAED,QAAI,KAAKC,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF,GAtR0C,CAuR3C;;;AACUrE,EAAAA,YAAY,CAACqE,KAAD,EAA4B;AAChD,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACSnE,EAAAA,WAAW,CAACmE,KAAD,EAA4B;AAC/C,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF,GAjS0C,CAkS3C;;;AACUjE,EAAAA,eAAe,CAACiE,KAAD,EAA4B;AACnD,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACS/D,EAAAA,aAAa,CAAC+D,KAAD,EAA4B;AACjD,SAAKQ,kBAAL,CAAwB,KAAxB;;AACA,QAAI,KAAKH,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACS3D,EAAAA,YAAY,CAAC2D,KAAD,EAA4B;AAChD,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACS7D,EAAAA,cAAc,CAAC6D,KAAD,EAA4B;AAClD,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACSzD,EAAAA,eAAe,CAACyD,KAAD,EAA4B;AACnD,QAAI,KAAKK,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACSvD,EAAAA,oBAAoB,CAACuD,KAAD,EAA4B;AACxD,SAAKQ,kBAAL,CAAwB,IAAxB;;AACA,QAAI,KAAKH,MAAL,CAAYC,gBAAhB,EAAkC;AAChC,WAAKC,cAAL,CAAoBP,KAApB;AACD;AACF;;AACOQ,EAAAA,kBAAkB,CAACC,GAAD,EAAqB;AAC7C,QACE,KAAKhH,OAAL,IACA,KAAKuF,MADL,KAEC,CAACyB,GAAD,IAASA,GAAG,IAAI,CAAC,KAAKC,wBAFvB,CADF,EAIE;AACA,WAAKC,SAAL,CAAe,KAAKpG,YAApB,EAAkC,KAAKA,YAAvC;AACD;AACF;;AAEMgG,EAAAA,cAAc,CAACP,KAAD,EAA4B;AAC/C,QAAI,CAAC,KAAKvG,OAAV,EAAmB;AACjB;AACD;;AAED,UAAM;AAAEM,MAAAA;AAAF,QAAsC,KAAKE,QAAL,CACzCC,OADH;AAGA,UAAM0G,UAAwC,GAAG,KAAKC,mBAAL,CAC/Cb,KAD+C,CAAjD;;AAIA,QAAIY,UAAJ,EAAgB;AACdtG,MAAAA,oBAAoB,CAACP,qBAAD,EAAwB6G,UAAxB,CAApB;AACD;AACF,GA5V0C,CA8V3C;AACA;AACA;;;AA4BQxG,EAAAA,kBAAkB,CAACP,QAAD,EAAkBC,QAAlB,EAAgD;AACxE,WAAO;AACLW,MAAAA,WAAW,EAAE;AACXqG,QAAAA,gBAAgB,EAAE,KAAK7D,OAAL,CAAaM,uBAAb,EADP;AAEXwD,QAAAA,KAAK,EAAElH,QAFI;AAGXmH,QAAAA,aAAa,EAAE,8BAAkB,KAAK/F,IAAvB,EAA6B;AAC1CgG,UAAAA,CAAC,EAAE,KAAKhE,OAAL,CAAaiE,WAAb,EADuC;AAE1CC,UAAAA,CAAC,EAAE,KAAKlE,OAAL,CAAamE,WAAb;AAFuC,SAA7B,CAHJ;AAOX,WAAG,KAAKC,oBAAL,EAPQ;AAQXjG,QAAAA,UAAU,EAAE,KAAKA,UARN;AASXkG,QAAAA,MAAM,EAAE,KAAKzG,GATF;AAUXf,QAAAA,QAAQ,EAAED,QAAQ,KAAKC,QAAb,GAAwBA,QAAxB,GAAmCY;AAVlC,OADR;AAaL6G,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AAbN,KAAP;AAeD;;AAEOZ,EAAAA,mBAAmB,CACzBb,KADyB,EAEK;AAAA;;AAC9B,UAAM0B,IAAI,GAAG,KAAKzG,IAAL,CAAU0G,qBAAV,EAAb;AAEA,UAAMC,GAAkB,GAAG,EAA3B;AACA,UAAMC,OAAsB,GAAG,EAA/B;AAEA,UAAMC,WAAW,GAAG,KAAK7E,OAAL,CAAa8E,OAAb,EAApB,CAN8B,CAQ9B;AACA;AACA;AACA;;AACA,QAAID,WAAW,CAACE,IAAZ,KAAqB,CAArB,IAA0B,CAACF,WAAW,CAACG,GAAZ,CAAgBjC,KAAK,CAACkC,SAAtB,CAA/B,EAAiE;AAC/D;AACD;;AAEDJ,IAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,YAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAR,MAAAA,GAAG,CAAChF,IAAJ,CAAS;AACPyF,QAAAA,EAAE,EAAEA,EADG;AAEPpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFjB;AAGPrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHjB;AAIPC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJZ;AAKPK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALZ,OAAT;AAOD,KAVD,EAhB8B,CA4B9B;AACA;;AACA,QAAIzC,KAAK,CAAC6C,SAAN,KAAoBC,uBAAWC,MAAnC,EAA2C;AACzClB,MAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,QAAAA,EAAE,EAAE,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCtC,KAAK,CAACkC,SAAzC,CADO;AAEXjB,QAAAA,CAAC,EAAEjB,KAAK,CAACiB,CAAN,GAAUS,IAAI,CAACc,IAFP;AAGXrB,QAAAA,CAAC,EAAEnB,KAAK,CAACmB,CAAN,GAAUO,IAAI,CAACgB,GAHP;AAIXC,QAAAA,SAAS,EAAE3C,KAAK,CAACiB,CAJN;AAKX2B,QAAAA,SAAS,EAAE5C,KAAK,CAACmB;AALN,OAAb;AAOD,KARD,MAQO;AACLW,MAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,cAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAP,QAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,UAAAA,EAAE,EAAEA,EADO;AAEXpB,UAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFb;AAGXrB,UAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHb;AAIXC,UAAAA,SAAS,EAAER,OAAO,CAACI,KAJR;AAKXK,UAAAA,SAAS,EAAET,OAAO,CAACM;AALR,SAAb;AAOD,OAVD;AAWD;;AAED,QAAII,SAAyB,GAAGG,2BAAexJ,YAA/C;;AAEA,YAAQwG,KAAK,CAAC6C,SAAd;AACE,WAAKC,uBAAWG,IAAhB;AACA,WAAKH,uBAAWI,uBAAhB;AACEL,QAAAA,SAAS,GAAGG,2BAAeC,IAA3B;AACA;;AACF,WAAKH,uBAAWK,EAAhB;AACA,WAAKL,uBAAWM,qBAAhB;AACEP,QAAAA,SAAS,GAAGG,2BAAeG,EAA3B;AACA;;AACF,WAAKL,uBAAWO,IAAhB;AACER,QAAAA,SAAS,GAAGG,2BAAeK,IAA3B;AACA;;AACF,WAAKP,uBAAWC,MAAhB;AACEF,QAAAA,SAAS,GAAGG,2BAAevF,SAA3B;AACA;AAdJ,KAtD8B,CAuE9B;AACA;AACA;;;AACA,QAAI6F,eAAuB,GAAG1B,GAAG,CAAC2B,MAAlC;;AAEA,QACEvD,KAAK,CAAC6C,SAAN,KAAoBC,uBAAWK,EAA/B,IACAnD,KAAK,CAAC6C,SAAN,KAAoBC,uBAAWM,qBAFjC,EAGE;AACA,QAAEE,eAAF;AACD;;AAED,WAAO;AACL7I,MAAAA,WAAW,EAAE;AACXW,QAAAA,UAAU,EAAE,KAAKA,UADN;AAEX2F,QAAAA,KAAK,EAAE,KAAKxG,YAFD;AAGXsI,QAAAA,SAAS,2BAAE7C,KAAK,CAACwD,cAAR,yEAA0BX,SAHxB;AAIXY,QAAAA,cAAc,EAAE5B,OAJL;AAKX6B,QAAAA,UAAU,EAAE9B,GALD;AAMX0B,QAAAA,eAAe,EAAEA;AANN,OADR;AASL/B,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AATN,KAAP;AAWD;;AAEO9D,EAAAA,aAAa,GAAS;AAC5B,UAAM+D,IAAI,GAAG,KAAKzG,IAAL,CAAU0G,qBAAV,EAAb;AAEA,UAAMC,GAAkB,GAAG,EAA3B;AACA,UAAMC,OAAsB,GAAG,EAA/B;AAEA,UAAMC,WAAW,GAAG,KAAK7E,OAAL,CAAa8E,OAAb,EAApB;;AAEA,QAAID,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;AAC1B;AACD;;AAEDF,IAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,YAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAR,MAAAA,GAAG,CAAChF,IAAJ,CAAS;AACPyF,QAAAA,EAAE,EAAEA,EADG;AAEPpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFjB;AAGPrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHjB;AAIPC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJZ;AAKPK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALZ,OAAT;AAQAZ,MAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,QAAAA,EAAE,EAAEA,EADO;AAEXpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFb;AAGXrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHb;AAIXC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJR;AAKXK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALR,OAAb;AAOD,KAlBD;AAoBA,UAAMkB,WAA6B,GAAG;AACpClJ,MAAAA,WAAW,EAAE;AACXW,QAAAA,UAAU,EAAE,KAAKA,UADN;AAEX2F,QAAAA,KAAK,EAAE,KAAKxG,YAFD;AAGXsI,QAAAA,SAAS,EAAEG,2BAAevF,SAHf;AAIXgG,QAAAA,cAAc,EAAE5B,OAJL;AAKX6B,QAAAA,UAAU,EAAE9B,GALD;AAMX0B,QAAAA,eAAe,EAAE1B,GAAG,CAAC2B;AANV,OADuB;AASpChC,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AATyB,KAAtC;AAYA,UAAM;AAAE1H,MAAAA;AAAF,QAAsC,KAAKE,QAAL,CACzCC,OADH;AAGAI,IAAAA,oBAAoB,CAACP,qBAAD,EAAwB4J,WAAxB,CAApB;AACD;;AAEStC,EAAAA,oBAAoB,GAAG;AAC/B,WAAO,EAAP;AACD,GApiB0C,CAsiB3C;AACA;AACA;;;AAEOuC,EAAAA,mBAAmB,CAAC;AAAEnK,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGoK;AAArB,GAAD,EAA6C;AACrE,SAAKxD,MAAL,GAAc;AAAE5G,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGoK;AAAvB,KAAd;AACA,SAAKpK,OAAL,GAAeA,OAAf;AACA,SAAKqK,gBAAL;;AAEA,QAAI,KAAKrK,OAAT,EAAkB;AAChB;AACD;;AAED,YAAQ,KAAKc,YAAb;AACE,WAAKhB,aAAMiB,MAAX;AACE,aAAK6D,IAAL,CAAU,IAAV;AACA;;AACF,WAAK9E,aAAMC,YAAX;AACEoE,4CAA2BC,WAA3B,GAAyCkG,6BAAzC,CACE,IADF;;AAGA;;AACF;AACE,aAAKxF,MAAL,CAAY,IAAZ;AACA;AAXJ;AAaD;;AAESyF,EAAAA,6BAA6B,CAACC,SAAD,EAA4B;AACjE,SAAK,MAAM7B,GAAX,IAAkB,KAAK/B,MAAvB,EAA+B;AAC7B,UAAI4D,SAAS,CAACC,OAAV,CAAkB9B,GAAlB,KAA0B,CAA9B,EAAiC;AAC/B,aAAKzH,2BAAL,GAAmC,IAAnC;AACD;AACF;AACF;;AAEOmJ,EAAAA,gBAAgB,GAAS;AAC/B,QAAI,CAAC,KAAKzD,MAAL,CAAY8D,OAAjB,EAA0B;AACxB;AACD;;AAED,QACE,KAAK9D,MAAL,CAAY8D,OAAZ,CAAoB3B,IAApB,KAA6B9H,SAA7B,IACA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBC,KAApB,KAA8B1J,SAD9B,IAEA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBE,KAApB,KAA8B3J,SAHhC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,qEADI,CAAN;AAGD;;AAED,QACE,KAAKkF,MAAL,CAAY8D,OAAZ,CAAoBE,KAApB,KAA8B3J,SAA9B,IACA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoB3B,IAApB,KAA6B9H,SAD7B,IAEA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBC,KAApB,KAA8B1J,SAHhC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,8EADI,CAAN;AAGD;;AAED,QACE,KAAKkF,MAAL,CAAY8D,OAAZ,CAAoBG,MAApB,KAA+B5J,SAA/B,IACA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBzB,GAApB,KAA4BhI,SAD5B,IAEA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBI,MAApB,KAA+B7J,SAHjC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,sEADI,CAAN;AAGD;;AAED,QACE,KAAKkF,MAAL,CAAY8D,OAAZ,CAAoBG,MAApB,KAA+B5J,SAA/B,IACA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBzB,GAApB,KAA4BhI,SAD5B,IAEA,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBI,MAApB,KAA+B7J,SAHjC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,+EADI,CAAN;AAGD;AACF;;AAEOgD,EAAAA,YAAY,GAAY;AAC9B,QAAI,CAAC,KAAKkC,MAAL,CAAY8D,OAAjB,EAA0B;AACxB,aAAO,IAAP;AACD;;AAED,UAAME,KAAK,GAAG,KAAKpJ,IAAL,CAAU0G,qBAAV,GAAkC0C,KAAhD;AACA,UAAMC,MAAM,GAAG,KAAKrJ,IAAL,CAAU0G,qBAAV,GAAkC2C,MAAjD;AAEA,QAAI9B,IAAI,GAAG,CAAX;AACA,QAAIE,GAAG,GAAG,CAAV;AACA,QAAI0B,KAAa,GAAGC,KAApB;AACA,QAAIE,MAAc,GAAGD,MAArB;;AAEA,QAAI,KAAKjE,MAAL,CAAY8D,OAAZ,CAAoBK,UAApB,KAAmC9J,SAAvC,EAAkD;AAChD8H,MAAAA,IAAI,IAAI,KAAKnC,MAAL,CAAY8D,OAAZ,CAAoBK,UAA5B;AACAJ,MAAAA,KAAK,IAAI,KAAK/D,MAAL,CAAY8D,OAAZ,CAAoBK,UAA7B;AACD;;AAED,QAAI,KAAKnE,MAAL,CAAY8D,OAAZ,CAAoBM,QAApB,KAAiC/J,SAArC,EAAgD;AAC9CgI,MAAAA,GAAG,IAAI,KAAKrC,MAAL,CAAY8D,OAAZ,CAAoBM,QAA3B;AACAF,MAAAA,MAAM,IAAI,KAAKlE,MAAL,CAAY8D,OAAZ,CAAoBM,QAA9B;AACD;;AAED,QAAI,KAAKpE,MAAL,CAAY8D,OAAZ,CAAoB3B,IAApB,KAA6B9H,SAAjC,EAA4C;AAC1C8H,MAAAA,IAAI,GAAG,CAAC,KAAKnC,MAAL,CAAY8D,OAAZ,CAAoB3B,IAA5B;AACD;;AAED,QAAI,KAAKnC,MAAL,CAAY8D,OAAZ,CAAoBC,KAApB,KAA8B1J,SAAlC,EAA6C;AAC3C0J,MAAAA,KAAK,GAAGC,KAAK,GAAG,KAAKhE,MAAL,CAAY8D,OAAZ,CAAoBC,KAApC;AACD;;AAED,QAAI,KAAK/D,MAAL,CAAY8D,OAAZ,CAAoBzB,GAApB,KAA4BhI,SAAhC,EAA2C;AACzCgI,MAAAA,GAAG,GAAG,CAAC,KAAKrC,MAAL,CAAY8D,OAAZ,CAAoBzB,GAA3B;AACD;;AAED,QAAI,KAAKrC,MAAL,CAAY8D,OAAZ,CAAoBI,MAApB,KAA+B7J,SAAnC,EAA8C;AAC5C6J,MAAAA,MAAM,GAAGF,KAAK,GAAG,KAAKhE,MAAL,CAAY8D,OAAZ,CAAoBI,MAArC;AACD;;AACD,QAAI,KAAKlE,MAAL,CAAY8D,OAAZ,CAAoBE,KAApB,KAA8B3J,SAAlC,EAA6C;AAC3C,UAAI,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoB3B,IAApB,KAA6B9H,SAAjC,EAA4C;AAC1C0J,QAAAA,KAAK,GAAG5B,IAAI,GAAG,KAAKnC,MAAL,CAAY8D,OAAZ,CAAoBE,KAAnC;AACD,OAFD,MAEO,IAAI,KAAKhE,MAAL,CAAY8D,OAAZ,CAAoBC,KAApB,KAA8B1J,SAAlC,EAA6C;AAClD8H,QAAAA,IAAI,GAAG4B,KAAK,GAAG,KAAK/D,MAAL,CAAY8D,OAAZ,CAAoBE,KAAnC;AACD;AACF;;AAED,QAAI,KAAKhE,MAAL,CAAY8D,OAAZ,CAAoBG,MAApB,KAA+B5J,SAAnC,EAA8C;AAC5C,UAAI,KAAK2F,MAAL,CAAY8D,OAAZ,CAAoBzB,GAApB,KAA4BhI,SAAhC,EAA2C;AACzC6J,QAAAA,MAAM,GAAG7B,GAAG,GAAG,KAAKrC,MAAL,CAAY8D,OAAZ,CAAoBG,MAAnC;AACD,OAFD,MAEO,IAAI,KAAKjE,MAAL,CAAY8D,OAAZ,CAAoBI,MAApB,KAA+B7J,SAAnC,EAA8C;AACnDgI,QAAAA,GAAG,GAAG6B,MAAM,GAAG,KAAKlE,MAAL,CAAY8D,OAAZ,CAAoBG,MAAnC;AACD;AACF;;AAED,UAAM5C,IAAa,GAAG,KAAKzG,IAAL,CAAU0G,qBAAV,EAAtB;AACA,UAAM+C,OAAe,GAAG,KAAKzH,OAAL,CAAa0H,QAAb,KAA0BjD,IAAI,CAACc,IAAvD;AACA,UAAMoC,OAAe,GAAG,KAAK3H,OAAL,CAAa4H,QAAb,KAA0BnD,IAAI,CAACgB,GAAvD;;AAEA,QACEgC,OAAO,IAAIlC,IAAX,IACAkC,OAAO,IAAIN,KADX,IAEAQ,OAAO,IAAIlC,GAFX,IAGAkC,OAAO,IAAIL,MAJb,EAKE;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEMO,EAAAA,iBAAiB,CAAC;AAAE7D,IAAAA,CAAF;AAAKE,IAAAA;AAAL,GAAD,EAA8C;AACpE,UAAMO,IAAa,GAAG,KAAKzG,IAAL,CAAU0G,qBAAV,EAAtB;AAEA,WACEV,CAAC,IAAIS,IAAI,CAACc,IAAV,IAAkBvB,CAAC,IAAIS,IAAI,CAAC0C,KAA5B,IAAqCjD,CAAC,IAAIO,IAAI,CAACgB,GAA/C,IAAsDvB,CAAC,IAAIO,IAAI,CAAC6C,MADlE;AAGD;;AAESQ,EAAAA,WAAW,GAAS,CAAE,CArsBW,CAusB3C;AACA;AACA;;;AAEOC,EAAAA,MAAM,GAAW;AACtB,WAAO,KAAK5J,UAAZ;AACD;;AACM6J,EAAAA,MAAM,CAACC,GAAD,EAAoB;AAC/B,SAAK9J,UAAL,GAAkB8J,GAAlB;AACD;;AAESC,EAAAA,SAAS,GAAG;AACpB,WAAO,KAAK9E,MAAZ;AACD;;AAEM+E,EAAAA,6BAA6B,GAAY;AAC9C,UAAM,IAAIjK,KAAJ,CAAU,yDAAV,CAAN;AACD;;AAEMkK,EAAAA,OAAO,GAAgB;AAC5B,WAAO,KAAKpK,IAAZ;AACD;;AAEMqK,EAAAA,gBAAgB,GAAmB;AACxC,WAAO,KAAK3I,aAAZ;AACD;;AAEM4I,EAAAA,UAAU,GAAmB;AAClC,WAAO,KAAKtI,OAAZ;AACD;;AAEMuI,EAAAA,oBAAoB,GAAa;AACtC,WAAO,KAAKvI,OAAL,CAAauI,oBAAb,EAAP;AACD;;AAEMC,EAAAA,QAAQ,GAAU;AACvB,WAAO,KAAKlL,YAAZ;AACD;;AAEMmL,EAAAA,SAAS,GAAY;AAC1B,WAAO,KAAKjM,OAAZ;AACD;;AAESkM,EAAAA,0BAA0B,CAACC,YAAD,EAAwB;AAC1D,SAAKlF,wBAAL,GAAgCkF,YAAhC;AACD;;AACSC,EAAAA,0BAA0B,GAAY;AAC9C,WAAO,KAAKnF,wBAAZ;AACD;;AAEMoF,EAAAA,cAAc,GAAgB;AACnC,WAAO,KAAK5F,WAAZ;AACD;;AA3vB0C;;;;AA8vB7C,SAAS5F,oBAAT,CACEyL,MADF,EAKE/F,KALF,EAMQ;AACN,MAAI,CAAC+F,MAAL,EAAa;AACX;AACD;;AAED,MAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC;AAChCA,IAAAA,MAAM,CAAC/F,KAAD,CAAN;AACA;AACD;;AAED,MAAI,kBAAkB+F,MAAlB,IAA4B,OAAOA,MAAM,CAACC,YAAd,KAA+B,UAA/D,EAA2E;AACzE,UAAMvG,OAAO,GAAGsG,MAAM,CAACC,YAAP,EAAhB;;AACA1L,IAAAA,oBAAoB,CAACmF,OAAD,EAAUO,KAAV,CAApB;AACA;AACD;;AAED,MAAI,EAAE,kBAAkB+F,MAApB,CAAJ,EAAiC;AAC/B;AACD;;AAED,QAAM;AAAEE,IAAAA;AAAF,MAAiBF,MAAM,CAACG,YAA9B;;AACA,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcH,UAAd,CAAL,EAAgC;AAC9B;AACD;;AAED,OAAK,MAAM,CAACI,KAAD,EAAQ,CAACjE,GAAD,EAAMtD,KAAN,CAAR,CAAX,IAAoCmH,UAAU,CAACK,OAAX,EAApC,EAA0D;AACxD,QAAI,EAAElE,GAAG,IAAIpC,KAAK,CAACvF,WAAf,CAAJ,EAAiC;AAC/B;AACD,KAHuD,CAKxD;;;AACA,UAAM8L,WAAW,GAAGvG,KAAK,CAACvF,WAAN,CAAkB2H,GAAlB,CAApB,CANwD,CAQxD;;AACA,QAAItD,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAE0H,QAAX,EAAqB;AACnB;AACA;AACA1H,MAAAA,KAAK,CAAC0H,QAAN,CAAeD,WAAf;AACD,KAJD,MAIO;AACL;AACAR,MAAAA,MAAM,CAACG,YAAP,CAAoBD,UAApB,CAA+BI,KAA/B,IAAwC,CAACjE,GAAD,EAAMmE,WAAN,CAAxC;AACD;AACF;;AAED;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = (findNodeHandle(this.ref) as unknown) as HTMLElement;\n this.view.style['touchAction'] = 'none';\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n (newState === State.END ||\n newState === State.CANCELLED ||\n newState === State.FAILED)\n ) {\n this.cancelTouches();\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined = this.transformTouchEvent(\n event\n );\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const {\n onGestureHandlerEvent,\n onGestureHandlerStateChange,\n }: PropsRef = this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
@@ -39,12 +39,10 @@ export const HammerGestures = {
39
39
  FlingGestureHandler: HammerFlingGestureHandler
40
40
  };
41
41
  export default {
42
- handleSetJSResponder(tag, blockNativeResponder) {
43
- console.warn('handleSetJSResponder: ', tag, blockNativeResponder);
42
+ handleSetJSResponder(_tag, _blockNativeResponder) {// NO-OP
44
43
  },
45
44
 
46
- handleClearJSResponder() {
47
- console.warn('handleClearJSResponder: ');
45
+ handleClearJSResponder() {// NO-OP
48
46
  },
49
47
 
50
48
  createGestureHandler(handlerName, handlerTag, config) {
@@ -1 +1 @@
1
- {"version":3,"sources":["RNGestureHandlerModule.macos.ts"],"names":["isExperimentalWebImplementationEnabled","InteractionManager","NodeManager","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","NativeViewGestureHandler","ManualGestureHandler","HammerNodeManager","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","Gestures","HammerGestures","handleSetJSResponder","tag","blockNativeResponder","console","warn","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","getInstance","configureInteractions","getHandler","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"AACA,SAASA,sCAAT,QAAuD,uCAAvD,C,CAEA;;AACA,OAAOC,kBAAP,MAA+B,gCAA/B;AACA,OAAOC,WAAP,MAAwB,yBAAxB;AACA,OAAOC,iBAAP,MAA8B,kCAA9B;AACA,OAAOC,iBAAP,MAA8B,kCAA9B;AACA,OAAOC,uBAAP,MAAoC,wCAApC;AACA,OAAOC,mBAAP,MAAgC,oCAAhC;AACA,OAAOC,sBAAP,MAAmC,uCAAnC;AACA,OAAOC,mBAAP,MAAgC,oCAAhC;AACA,OAAOC,wBAAP,MAAqC,yCAArC;AACA,OAAOC,oBAAP,MAAiC,qCAAjC,C,CAEA;;AACA,OAAO,KAAKC,iBAAZ,MAAmC,0BAAnC;AACA,OAAOC,8BAAP,MAA2C,uCAA3C;AACA,OAAOC,uBAAP,MAAoC,gCAApC;AACA,OAAOC,uBAAP,MAAoC,gCAApC;AACA,OAAOC,6BAAP,MAA0C,sCAA1C;AACA,OAAOC,yBAAP,MAAsC,kCAAtC;AACA,OAAOC,4BAAP,MAAyC,qCAAzC;AACA,OAAOC,yBAAP,MAAsC,kCAAtC;AAGA,OAAO,MAAMC,QAAQ,GAAG;AACtBV,EAAAA,wBADsB;AAEtBN,EAAAA,iBAFsB;AAGtBC,EAAAA,iBAHsB;AAItBC,EAAAA,uBAJsB;AAKtBC,EAAAA,mBALsB;AAMtBC,EAAAA,sBANsB;AAOtBC,EAAAA,mBAPsB;AAQtBE,EAAAA;AARsB,CAAjB;AAWP,OAAO,MAAMU,cAAc,GAAG;AAC5BX,EAAAA,wBAAwB,EAAEG,8BADE;AAE5BT,EAAAA,iBAAiB,EAAEU,uBAFS;AAG5BT,EAAAA,iBAAiB,EAAEU,uBAHS;AAI5BT,EAAAA,uBAAuB,EAAEU,6BAJG;AAK5BT,EAAAA,mBAAmB,EAAEU,yBALO;AAM5BT,EAAAA,sBAAsB,EAAEU,4BANI;AAO5BT,EAAAA,mBAAmB,EAAEU;AAPO,CAAvB;AAUP,eAAe;AACbG,EAAAA,oBAAoB,CAACC,GAAD,EAAcC,oBAAd,EAA6C;AAC/DC,IAAAA,OAAO,CAACC,IAAR,CAAa,wBAAb,EAAuCH,GAAvC,EAA4CC,oBAA5C;AACD,GAHY;;AAIbG,EAAAA,sBAAsB,GAAG;AACvBF,IAAAA,OAAO,CAACC,IAAR,CAAa,0BAAb;AACD,GANY;;AAObE,EAAAA,oBAAoB,CAClBC,WADkB,EAElBC,UAFkB,EAGlBC,MAHkB,EAIlB;AACA,QAAI9B,sCAAsC,EAA1C,EAA8C;AAC5C,UAAI,EAAE4B,WAAW,IAAIT,QAAjB,CAAJ,EAAgC;AAC9B,cAAM,IAAIY,KAAJ,CACH,iCAAgCH,WAAY,2BADzC,CAAN;AAGD;;AAED,YAAMI,YAAY,GAAGb,QAAQ,CAACS,WAAD,CAA7B;AACA1B,MAAAA,WAAW,CAACyB,oBAAZ,CAAiCE,UAAjC,EAA6C,IAAIG,YAAJ,EAA7C;AACA/B,MAAAA,kBAAkB,CAACgC,WAAnB,GAAiCC,qBAAjC,CACEhC,WAAW,CAACiC,UAAZ,CAAuBN,UAAvB,CADF,EAEGC,MAFH;AAID,KAbD,MAaO;AACL,UAAI,EAAEF,WAAW,IAAIR,cAAjB,CAAJ,EAAsC;AACpC,cAAM,IAAIW,KAAJ,CACH,iCAAgCH,WAAY,2BADzC,CAAN;AAGD,OALI,CAOL;AACA;;;AACA,YAAMI,YAAY,GAAGZ,cAAc,CAACQ,WAAD,CAAnC,CATK,CAUL;;AACAjB,MAAAA,iBAAiB,CAACgB,oBAAlB,CAAuCE,UAAvC,EAAmD,IAAIG,YAAJ,EAAnD;AACD;;AAED,SAAKI,oBAAL,CAA0BP,UAA1B,EAAuCC,MAAvC;AACD,GAxCY;;AAyCbO,EAAAA,oBAAoB,CAClBR,UADkB,EAElBS,OAFkB,EAGlBC,WAHkB,EAIlBC,QAJkB,EAKlB;AACA,QAAIxC,sCAAsC,EAA1C,EAA8C;AAC5CE,MAAAA,WAAW,CAACiC,UAAZ,CAAuBN,UAAvB,EAAmCY,IAAnC,CAAwCH,OAAxC,EAAiDE,QAAjD;AACD,KAFD,MAEO;AACL7B,MAAAA,iBAAiB,CAACwB,UAAlB,CAA6BN,UAA7B,EAAyCa,OAAzC,CAAiDJ,OAAjD,EAA0DE,QAA1D;AACD;AACF,GApDY;;AAqDbJ,EAAAA,oBAAoB,CAACP,UAAD,EAAqBc,SAArB,EAAwC;AAC1D,QAAI3C,sCAAsC,EAA1C,EAA8C;AAC5CE,MAAAA,WAAW,CAACiC,UAAZ,CAAuBN,UAAvB,EAAmCe,mBAAnC,CAAuDD,SAAvD;AAEA1C,MAAAA,kBAAkB,CAACgC,WAAnB,GAAiCC,qBAAjC,CACEhC,WAAW,CAACiC,UAAZ,CAAuBN,UAAvB,CADF,EAEEc,SAFF;AAID,KAPD,MAOO;AACLhC,MAAAA,iBAAiB,CAACwB,UAAlB,CAA6BN,UAA7B,EAAyCe,mBAAzC,CAA6DD,SAA7D;AACD;AACF,GAhEY;;AAiEbE,EAAAA,qBAAqB,CAAChB,UAAD,EAAqB;AACxC,QAAI7B,sCAAsC,EAA1C,EAA8C;AAC5C,aAAOE,WAAW,CAACiC,UAAZ,CAAuBN,UAAvB,CAAP;AACD,KAFD,MAEO;AACL,aAAOlB,iBAAiB,CAACwB,UAAlB,CAA6BN,UAA7B,CAAP;AACD;AACF,GAvEY;;AAwEbiB,EAAAA,kBAAkB,CAACjB,UAAD,EAAqB;AACrC,QAAI7B,sCAAsC,EAA1C,EAA8C;AAC5CE,MAAAA,WAAW,CAAC4C,kBAAZ,CAA+BjB,UAA/B;AACD,KAFD,MAEO;AACLlB,MAAAA,iBAAiB,CAACmC,kBAAlB,CAAqCjB,UAArC;AACD;AACF,GA9EY;;AA+Eb;AACAkB,EAAAA,eAAe,GAAG,CAAE;;AAhFP,CAAf","sourcesContent":["import { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(tag: number, blockNativeResponder: boolean) {\n console.warn('handleSetJSResponder: ', tag, blockNativeResponder);\n },\n handleClearJSResponder() {\n console.warn('handleClearJSResponder: ');\n },\n createGestureHandler<T>(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n (config as unknown) as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, (config as unknown) as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n newView: number,\n _actionType: ActionType,\n propsRef: React.RefObject<unknown>\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]}
1
+ {"version":3,"sources":["RNGestureHandlerModule.macos.ts"],"names":["isExperimentalWebImplementationEnabled","InteractionManager","NodeManager","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","NativeViewGestureHandler","ManualGestureHandler","HammerNodeManager","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","Gestures","HammerGestures","handleSetJSResponder","_tag","_blockNativeResponder","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","getInstance","configureInteractions","getHandler","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {\n // NO-OP\n },\n handleClearJSResponder() {\n // NO-OP\n },\n createGestureHandler<T>(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n (config as unknown) as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, (config as unknown) as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n newView: number,\n _actionType: ActionType,\n propsRef: React.RefObject<unknown>\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]}
@@ -26,9 +26,10 @@ export const ScrollView = /*#__PURE__*/React.forwardRef((props, ref) => {
26
26
  ref: ref,
27
27
  waitFor: [...toArray(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef] // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
28
28
  ,
29
- refreshControl: refreshControl ? /*#__PURE__*/React.createElement(RefreshControl, _extends({}, refreshControl.props, {
29
+ refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, {
30
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
30
31
  ref: refreshControlGestureRef
31
- })) : refreshControl
32
+ }) : undefined
32
33
  }));
33
34
  }); // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
34
35
  // include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
@@ -79,9 +80,10 @@ export const FlatList = /*#__PURE__*/React.forwardRef((props, ref) => {
79
80
  waitFor: [...toArray(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef]
80
81
  })) // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
81
82
  ,
82
- refreshControl: refreshControl ? /*#__PURE__*/React.createElement(RefreshControl, _extends({}, refreshControl.props, {
83
+ refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, {
84
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
83
85
  ref: refreshControlGestureRef
84
- })) : refreshControl
86
+ }) : undefined
85
87
  }))
86
88
  );
87
89
  }); // eslint-disable-next-line @typescript-eslint/no-redeclare
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureComponents.tsx"],"names":["React","ScrollView","RNScrollView","Switch","RNSwitch","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","RNFlatList","RefreshControl","RNRefreshControl","createNativeWrapper","nativeViewProps","toArray","disallowInterruption","shouldCancelWhenOutside","GHScrollView","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","shouldActivateOnStart","flatListProps","scrollViewProps","propName","value","Object","entries","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n <GHScrollView\n {...rest}\n // @ts-ignore `ref` exists on `GHScrollView`\n ref={ref}\n waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl ? (\n <RefreshControl\n {...refreshControl.props}\n ref={refreshControlGestureRef}\n />\n ) : (\n refreshControl\n )\n }\n />\n );\n});\n// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren<RNDrawerLayoutAndroidProps>\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n <RNFlatList\n ref={ref}\n {...flatListProps}\n renderScrollComponent={(scrollProps) => (\n <ScrollView\n {...{\n ...scrollProps,\n ...scrollViewProps,\n waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],\n }}\n />\n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl ? (\n <RefreshControl\n {...refreshControl.props}\n ref={refreshControlGestureRef}\n />\n ) : (\n refreshControl\n )\n }\n />\n );\n}) as <ItemT = any>(\n props: PropsWithChildren<\n RNFlatListProps<ItemT> &\n RefAttributes<FlatList<ItemT>> &\n NativeViewGestureHandlerProps\n >,\n ref: ForwardedRef<FlatList<ItemT>>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;\n"]}
1
+ {"version":3,"sources":["GestureComponents.tsx"],"names":["React","ScrollView","RNScrollView","Switch","RNSwitch","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","RNFlatList","RefreshControl","RNRefreshControl","createNativeWrapper","nativeViewProps","toArray","disallowInterruption","shouldCancelWhenOutside","GHScrollView","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","cloneElement","undefined","shouldActivateOnStart","flatListProps","scrollViewProps","propName","value","Object","entries","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n <GHScrollView\n {...rest}\n // @ts-ignore `ref` exists on `GHScrollView`\n ref={ref}\n waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n});\n// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren<RNDrawerLayoutAndroidProps>\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n <RNFlatList\n ref={ref}\n {...flatListProps}\n renderScrollComponent={(scrollProps) => (\n <ScrollView\n {...{\n ...scrollProps,\n ...scrollViewProps,\n waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],\n }}\n />\n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n}) as <ItemT = any>(\n props: PropsWithChildren<\n RNFlatListProps<ItemT> &\n RefAttributes<FlatList<ItemT>> &\n NativeViewGestureHandlerProps\n >,\n ref: ForwardedRef<FlatList<ItemT>>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;\n"]}
@@ -159,17 +159,17 @@ export default class Swipeable extends Component {
159
159
  var _this$props$onSwipeab, _this$props, _this$props$onSwipeab2, _this$props2;
160
160
 
161
161
  (_this$props$onSwipeab = (_this$props = this.props).onSwipeableLeftOpen) === null || _this$props$onSwipeab === void 0 ? void 0 : _this$props$onSwipeab.call(_this$props);
162
- (_this$props$onSwipeab2 = (_this$props2 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab2 === void 0 ? void 0 : _this$props$onSwipeab2.call(_this$props2, 'left');
162
+ (_this$props$onSwipeab2 = (_this$props2 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab2 === void 0 ? void 0 : _this$props$onSwipeab2.call(_this$props2, 'left', this);
163
163
  } else if (toValue < 0) {
164
164
  var _this$props$onSwipeab3, _this$props3, _this$props$onSwipeab4, _this$props4;
165
165
 
166
166
  (_this$props$onSwipeab3 = (_this$props3 = this.props).onSwipeableRightOpen) === null || _this$props$onSwipeab3 === void 0 ? void 0 : _this$props$onSwipeab3.call(_this$props3);
167
- (_this$props$onSwipeab4 = (_this$props4 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab4 === void 0 ? void 0 : _this$props$onSwipeab4.call(_this$props4, 'right');
167
+ (_this$props$onSwipeab4 = (_this$props4 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab4 === void 0 ? void 0 : _this$props$onSwipeab4.call(_this$props4, 'right', this);
168
168
  } else {
169
169
  var _this$props$onSwipeab5, _this$props5;
170
170
 
171
171
  const closingDirection = fromValue > 0 ? 'left' : 'right';
172
- (_this$props$onSwipeab5 = (_this$props5 = this.props).onSwipeableClose) === null || _this$props$onSwipeab5 === void 0 ? void 0 : _this$props$onSwipeab5.call(_this$props5, closingDirection);
172
+ (_this$props$onSwipeab5 = (_this$props5 = this.props).onSwipeableClose) === null || _this$props$onSwipeab5 === void 0 ? void 0 : _this$props$onSwipeab5.call(_this$props5, closingDirection, this);
173
173
  }
174
174
  }
175
175
  });
@@ -301,7 +301,7 @@ export default class Swipeable extends Component {
301
301
  translateX: this.rightActionTranslate
302
302
  }]
303
303
  }]
304
- }, renderRightActions(this.showRightAction, this.transX), /*#__PURE__*/React.createElement(View, {
304
+ }, renderRightActions(this.showRightAction, this.transX, this), /*#__PURE__*/React.createElement(View, {
305
305
  onLayout: ({
306
306
  nativeEvent
307
307
  }) => this.setState({
@@ -1 +1 @@
1
- {"version":3,"sources":["Swipeable.tsx"],"names":["React","Component","Animated","StyleSheet","View","I18nManager","PanGestureHandler","TapGestureHandler","State","DRAG_TOSS","Swipeable","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","create","overflow","absoluteFillObject","flexDirection","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\nexport interface SwipeableProps\n extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (direction: 'left' | 'right') => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: Animated.AnimatedInterpolation,\n dragAnimatedValue: Animated.AnimatedInterpolation\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: Animated.AnimatedInterpolation,\n dragAnimatedValue: Animated.AnimatedInterpolation\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record<string, unknown>;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent<PanGestureHandlerEventPayload>\n ) => void;\n private transX?: Animated.AnimatedInterpolation;\n private showLeftAction?: Animated.AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: Animated.AnimatedInterpolation;\n private showRightAction?: Animated.AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: Animated.AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const {\n overshootLeft = leftWidth > 0,\n overshootRight = rightWidth > 0,\n } = props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n render() {\n const { rowState } = this.state;\n const { children, renderLeftActions, renderRightActions } = this.props;\n\n const left = renderLeftActions && (\n <Animated.View\n style={[\n styles.leftActions,\n // all those and below parameters can have ! since they are all\n // asigned in constructor in `updateAnimatedEvent` but TS cannot spot\n // it for some reason\n { transform: [{ translateX: this.leftActionTranslate! }] },\n ]}>\n {renderLeftActions(this.showLeftAction!, this.transX!)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n const right = renderRightActions && (\n <Animated.View\n style={[\n styles.rightActions,\n { transform: [{ translateX: this.rightActionTranslate! }] },\n ]}>\n {renderRightActions(this.showRightAction!, this.transX!)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n return (\n <PanGestureHandler\n activeOffsetX={[-10, 10]}\n {...this.props}\n onGestureEvent={this.onGestureEvent}\n onHandlerStateChange={this.onHandlerStateChange}>\n <Animated.View\n onLayout={this.onRowLayout}\n style={[styles.container, this.props.containerStyle]}>\n {left}\n {right}\n <TapGestureHandler\n enabled={rowState !== 0}\n onHandlerStateChange={this.onTapHandlerStateChange}>\n <Animated.View\n pointerEvents={rowState === 0 ? 'auto' : 'box-only'}\n style={[\n {\n transform: [{ translateX: this.transX! }],\n },\n this.props.childrenContainerStyle,\n ]}>\n {children}\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </PanGestureHandler>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]}
1
+ {"version":3,"sources":["Swipeable.tsx"],"names":["React","Component","Animated","StyleSheet","View","I18nManager","PanGestureHandler","TapGestureHandler","State","DRAG_TOSS","Swipeable","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","create","overflow","absoluteFillObject","flexDirection","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\nexport interface SwipeableProps\n extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: Swipeable\n ) => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: Animated.AnimatedInterpolation,\n dragAnimatedValue: Animated.AnimatedInterpolation\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: Animated.AnimatedInterpolation,\n dragAnimatedValue: Animated.AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record<string, unknown>;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent<PanGestureHandlerEventPayload>\n ) => void;\n private transX?: Animated.AnimatedInterpolation;\n private showLeftAction?: Animated.AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: Animated.AnimatedInterpolation;\n private showRightAction?: Animated.AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: Animated.AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const {\n overshootLeft = leftWidth > 0,\n overshootRight = rightWidth > 0,\n } = props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left', this);\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right', this);\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection, this);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n render() {\n const { rowState } = this.state;\n const { children, renderLeftActions, renderRightActions } = this.props;\n\n const left = renderLeftActions && (\n <Animated.View\n style={[\n styles.leftActions,\n // all those and below parameters can have ! since they are all\n // asigned in constructor in `updateAnimatedEvent` but TS cannot spot\n // it for some reason\n { transform: [{ translateX: this.leftActionTranslate! }] },\n ]}>\n {renderLeftActions(this.showLeftAction!, this.transX!)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n const right = renderRightActions && (\n <Animated.View\n style={[\n styles.rightActions,\n { transform: [{ translateX: this.rightActionTranslate! }] },\n ]}>\n {renderRightActions(this.showRightAction!, this.transX!, this)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n return (\n <PanGestureHandler\n activeOffsetX={[-10, 10]}\n {...this.props}\n onGestureEvent={this.onGestureEvent}\n onHandlerStateChange={this.onHandlerStateChange}>\n <Animated.View\n onLayout={this.onRowLayout}\n style={[styles.container, this.props.containerStyle]}>\n {left}\n {right}\n <TapGestureHandler\n enabled={rowState !== 0}\n onHandlerStateChange={this.onTapHandlerStateChange}>\n <Animated.View\n pointerEvents={rowState === 0 ? 'auto' : 'box-only'}\n style={[\n {\n transform: [{ translateX: this.transX! }],\n },\n this.props.childrenContainerStyle,\n ]}>\n {children}\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </PanGestureHandler>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]}