{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport findNodeHandleRN from \"react-native-web/dist/exports/findNodeHandle\";\nimport { handlerIDToTag } from \"./handlersRegistry\";\nimport { toArray } from \"../utils\";\nimport RNGestureHandlerModule from \"../RNGestureHandlerModule\";\nvar commonProps = ['id', 'enabled', 'shouldCancelWhenOutside', 'hitSlop', 'cancelsTouchesInView', 'userSelect'];\nvar componentInteractionProps = ['waitFor', 'simultaneousHandlers'];\nexport var baseGestureHandlerProps = [].concat(commonProps, componentInteractionProps, ['onBegan', 'onFailed', 'onCancelled', 'onActivated', 'onEnded', 'onGestureEvent', 'onHandlerStateChange']);\nexport var baseGestureHandlerWithMonitorProps = [].concat(commonProps, ['needsPointerData', 'manualActivation']);\nfunction isConfigParam(param, name) {\n return param !== undefined && (param !== Object(param) || !('__isNative' in param)) && name !== 'onHandlerStateChange' && name !== 'onGestureEvent';\n}\nexport function filterConfig(props, validProps) {\n var defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var filteredConfig = _objectSpread({}, defaults);\n for (var key of validProps) {\n var value = props[key];\n if (isConfigParam(value, key)) {\n if (key === 'simultaneousHandlers' || key === 'waitFor') {\n value = transformIntoHandlerTags(props[key]);\n } else if (key === 'hitSlop' && typeof value !== 'object') {\n value = {\n top: value,\n left: value,\n bottom: value,\n right: value\n };\n }\n filteredConfig[key] = value;\n }\n }\n return filteredConfig;\n}\nfunction transformIntoHandlerTags(handlerIDs) {\n handlerIDs = toArray(handlerIDs);\n if (Platform.OS === 'web') {\n return handlerIDs.map(function (_ref) {\n var current = _ref.current;\n return current;\n }).filter(function (handle) {\n return handle;\n });\n }\n return handlerIDs.map(function (handlerID) {\n var _handlerID$current;\n return handlerIDToTag[handlerID] || ((_handlerID$current = handlerID.current) === null || _handlerID$current === void 0 ? void 0 : _handlerID$current.handlerTag) || -1;\n }).filter(function (handlerTag) {\n return handlerTag > 0;\n });\n}\nexport function findNodeHandle(node) {\n if (Platform.OS === 'web') {\n return node;\n }\n return findNodeHandleRN(node);\n}\nvar scheduledFlushOperationsId = null;\nexport function scheduleFlushOperations() {\n if (scheduledFlushOperationsId === null) {\n scheduledFlushOperationsId = requestAnimationFrame(function () {\n RNGestureHandlerModule.flushOperations();\n scheduledFlushOperationsId = null;\n });\n }\n}","map":{"version":3,"sources":["gestureHandlerCommon.ts"],"names":["handlerIDToTag","toArray","RNGestureHandlerModule","commonProps","componentInteractionProps","baseGestureHandlerProps","baseGestureHandlerWithMonitorProps","isConfigParam","param","name","undefined","Object","filterConfig","props","validProps","defaults","filteredConfig","key","value","transformIntoHandlerTags","top","left","bottom","right","handlerIDs","Platform","OS","map","current","filter","handle","handlerID","handlerTag","findNodeHandle","node","findNodeHandleRN","scheduledFlushOperationsId","scheduleFlushOperations","requestAnimationFrame","flushOperations"],"mappings":"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","sourcesContent":["// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class.\n// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof\n// e.g. React.createRef -> React.createRef.\n// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.\nimport * as React from 'react';\nimport { Platform, findNodeHandle as findNodeHandleRN } from 'react-native';\n\nimport { State } from '../State';\nimport { TouchEventType } from '../TouchEventType';\nimport { ValueOf } from '../typeUtils';\nimport { handlerIDToTag } from './handlersRegistry';\nimport { toArray } from '../utils';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\n\nconst commonProps = [\n 'id',\n 'enabled',\n 'shouldCancelWhenOutside',\n 'hitSlop',\n 'cancelsTouchesInView',\n 'userSelect',\n] as const;\n\nconst componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const;\n\nexport const baseGestureHandlerProps = [\n ...commonProps,\n ...componentInteractionProps,\n 'onBegan',\n 'onFailed',\n 'onCancelled',\n 'onActivated',\n 'onEnded',\n 'onGestureEvent',\n 'onHandlerStateChange',\n] as const;\n\nexport const baseGestureHandlerWithMonitorProps = [\n ...commonProps,\n 'needsPointerData',\n 'manualActivation',\n];\n\nexport interface GestureEventPayload {\n handlerTag: number;\n numberOfPointers: number;\n state: ValueOf;\n}\nexport interface HandlerStateChangeEventPayload extends GestureEventPayload {\n oldState: ValueOf;\n}\n\nexport type HitSlop =\n | number\n | Partial<\n Record<\n 'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal',\n number\n >\n >\n | Record<'width' | 'left', number>\n | Record<'width' | 'right', number>\n | Record<'height' | 'top', number>\n | Record<'height' | 'bottom', number>;\n\nexport type UserSelect = 'none' | 'auto' | 'text';\n\n//TODO(TS) events in handlers\n\nexport interface GestureEvent> {\n nativeEvent: Readonly;\n}\nexport interface HandlerStateChangeEvent<\n ExtraEventPayloadT = Record\n> {\n nativeEvent: Readonly;\n}\n\nexport type TouchData = {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\n\nexport type GestureTouchEvent = {\n handlerTag: number;\n numberOfTouches: number;\n state: ValueOf;\n eventType: TouchEventType;\n allTouches: TouchData[];\n changedTouches: TouchData[];\n};\n\nexport type GestureUpdateEvent> =\n GestureEventPayload & GestureEventPayloadT;\n\nexport type GestureStateChangeEvent<\n GestureStateChangeEventPayloadT = Record\n> = HandlerStateChangeEventPayload & GestureStateChangeEventPayloadT;\n\nexport type CommonGestureConfig = {\n enabled?: boolean;\n shouldCancelWhenOutside?: boolean;\n hitSlop?: HitSlop;\n userSelect?: UserSelect;\n};\n\n// Events payloads are types instead of interfaces due to TS limitation.\n// See https://github.com/microsoft/TypeScript/issues/15300 for more info.\nexport type BaseGestureHandlerProps<\n ExtraEventPayloadT extends Record = Record\n> = CommonGestureConfig & {\n id?: string;\n waitFor?: React.Ref | React.Ref[];\n simultaneousHandlers?: React.Ref | React.Ref[];\n testID?: string;\n cancelsTouchesInView?: boolean;\n // TODO(TS) - fix event types\n onBegan?: (event: HandlerStateChangeEvent) => void;\n onFailed?: (event: HandlerStateChangeEvent) => void;\n onCancelled?: (event: HandlerStateChangeEvent) => void;\n onActivated?: (event: HandlerStateChangeEvent) => void;\n onEnded?: (event: HandlerStateChangeEvent) => void;\n\n //TODO(TS) consider using NativeSyntheticEvent\n onGestureEvent?: (event: GestureEvent) => void;\n onHandlerStateChange?: (\n event: HandlerStateChangeEvent\n ) => void;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n};\n\nfunction isConfigParam(param: unknown, name: string) {\n // param !== Object(param) returns false if `param` is a function\n // or an object and returns true if `param` is null\n return (\n param !== undefined &&\n (param !== Object(param) ||\n !('__isNative' in (param as Record))) &&\n name !== 'onHandlerStateChange' &&\n name !== 'onGestureEvent'\n );\n}\n\nexport function filterConfig(\n props: Record,\n validProps: string[],\n defaults: Record = {}\n) {\n const filteredConfig = { ...defaults };\n for (const key of validProps) {\n let value = props[key];\n if (isConfigParam(value, key)) {\n if (key === 'simultaneousHandlers' || key === 'waitFor') {\n value = transformIntoHandlerTags(props[key]);\n } else if (key === 'hitSlop' && typeof value !== 'object') {\n value = { top: value, left: value, bottom: value, right: value };\n }\n filteredConfig[key] = value;\n }\n }\n return filteredConfig;\n}\n\nfunction transformIntoHandlerTags(handlerIDs: any) {\n handlerIDs = toArray(handlerIDs);\n\n if (Platform.OS === 'web') {\n return handlerIDs\n .map(({ current }: { current: any }) => current)\n .filter((handle: any) => handle);\n }\n // converts handler string IDs into their numeric tags\n return handlerIDs\n .map(\n (handlerID: any) =>\n handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1\n )\n .filter((handlerTag: number) => handlerTag > 0);\n}\n\nexport function findNodeHandle(\n node: null | number | React.Component | React.ComponentClass\n): null | number | React.Component | React.ComponentClass {\n if (Platform.OS === 'web') {\n return node;\n }\n return findNodeHandleRN(node);\n}\n\nlet scheduledFlushOperationsId: ReturnType<\n typeof requestAnimationFrame\n> | null = null;\n\nexport function scheduleFlushOperations() {\n if (scheduledFlushOperationsId === null) {\n scheduledFlushOperationsId = requestAnimationFrame(() => {\n RNGestureHandlerModule.flushOperations();\n\n scheduledFlushOperationsId = null;\n });\n }\n}\n"]},"metadata":{},"sourceType":"module"}