react-native-gtkx 0.2.0-alpha.1 → 0.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/dist/adw/widgets.generated.d.ts +4 -4
- package/dist/adw/widgets.generated.js +51 -51
- package/dist/adw/widgets.generated.js.map +1 -1
- package/dist/aliases/index.d.ts +84 -0
- package/dist/aliases/index.js +208 -0
- package/dist/aliases/index.js.map +1 -0
- package/dist/animated/create-animated.d.ts +2 -0
- package/dist/animated/create-animated.js +2 -0
- package/dist/animated/create-animated.js.map +1 -1
- package/dist/animated/index.d.ts +4 -0
- package/dist/animated/index.js +6 -0
- package/dist/animated/index.js.map +1 -1
- package/dist/animated/types.d.ts +1 -0
- package/dist/animated/types.js.map +1 -1
- package/dist/animated/value-animation.js +17 -4
- package/dist/animated/value-animation.js.map +1 -1
- package/dist/animated/value-xy.d.ts +41 -0
- package/dist/animated/value-xy.js +90 -0
- package/dist/animated/value-xy.js.map +1 -0
- package/dist/animated/value.d.ts +9 -0
- package/dist/animated/value.js +30 -2
- package/dist/animated/value.js.map +1 -1
- package/dist/apis/host.gtkx.js +9 -12
- package/dist/apis/host.gtkx.js.map +1 -1
- package/dist/apis/index.d.ts +4 -2
- package/dist/apis/index.js +2 -0
- package/dist/apis/index.js.map +1 -1
- package/dist/apis/keyboard.d.ts +60 -0
- package/dist/apis/keyboard.js +63 -0
- package/dist/apis/keyboard.js.map +1 -0
- package/dist/apis/log-box.d.ts +15 -0
- package/dist/apis/log-box.js +46 -0
- package/dist/apis/log-box.js.map +1 -0
- package/dist/apis/platform.d.ts +18 -1
- package/dist/apis/platform.js.map +1 -1
- package/dist/common/icon.d.ts +23 -0
- package/dist/common/icon.js +14 -0
- package/dist/common/icon.js.map +1 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.js +25 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/widget.d.ts +1 -22
- package/dist/common/widget.js +75 -8
- package/dist/common/widget.js.map +1 -1
- package/dist/components/animated.d.ts +73 -7
- package/dist/components/animated.js +560 -45
- package/dist/components/animated.js.map +1 -1
- package/dist/components/app-registry.d.ts +26 -0
- package/dist/components/app-registry.js.map +1 -1
- package/dist/components/driven-size.d.ts +27 -0
- package/dist/components/driven-size.js +85 -0
- package/dist/components/driven-size.js.map +1 -0
- package/dist/components/find-node-handle.d.ts +11 -0
- package/dist/components/find-node-handle.js +53 -0
- package/dist/components/find-node-handle.js.map +1 -0
- package/dist/components/flat-list.d.ts +3 -2
- package/dist/components/flat-list.js.map +1 -1
- package/dist/components/frame-scheduler.d.ts +16 -0
- package/dist/components/frame-scheduler.js +37 -0
- package/dist/components/frame-scheduler.js.map +1 -0
- package/dist/components/host-node.d.ts +7 -0
- package/dist/components/host-node.js +26 -1
- package/dist/components/host-node.js.map +1 -1
- package/dist/components/image.d.ts +6 -1
- package/dist/components/image.js +15 -4
- package/dist/components/image.js.map +1 -1
- package/dist/components/index.d.ts +11 -5
- package/dist/components/index.js +7 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/measure.d.ts +63 -0
- package/dist/components/measure.js +150 -0
- package/dist/components/measure.js.map +1 -0
- package/dist/components/modal.d.ts +1 -1
- package/dist/components/press-event.d.ts +28 -0
- package/dist/components/press-event.js +46 -0
- package/dist/components/press-event.js.map +1 -0
- package/dist/components/pressable.d.ts +63 -7
- package/dist/components/pressable.js +165 -12
- package/dist/components/pressable.js.map +1 -1
- package/dist/components/rect-store.d.ts +58 -0
- package/dist/components/rect-store.js +124 -3
- package/dist/components/rect-store.js.map +1 -1
- package/dist/components/root.js +6 -1
- package/dist/components/root.js.map +1 -1
- package/dist/components/scroll-phase.d.ts +35 -0
- package/dist/components/scroll-phase.js +26 -0
- package/dist/components/scroll-phase.js.map +1 -0
- package/dist/components/scroll-view.d.ts +43 -3
- package/dist/components/scroll-view.js +386 -45
- package/dist/components/scroll-view.js.map +1 -1
- package/dist/components/text-input.js +9 -25
- package/dist/components/text-input.js.map +1 -1
- package/dist/components/text.d.ts +6 -2
- package/dist/components/text.js +68 -9
- package/dist/components/text.js.map +1 -1
- package/dist/components/use-focus.d.ts +27 -0
- package/dist/components/use-focus.js +116 -0
- package/dist/components/use-focus.js.map +1 -0
- package/dist/components/use-layout-child.d.ts +13 -1
- package/dist/components/use-layout-child.js +205 -19
- package/dist/components/use-layout-child.js.map +1 -1
- package/dist/components/view.d.ts +12 -4
- package/dist/components/view.js +25 -14
- package/dist/components/view.js.map +1 -1
- package/dist/components/virtualized-list.d.ts +45 -5
- package/dist/components/virtualized-list.js +90 -24
- package/dist/components/virtualized-list.js.map +1 -1
- package/dist/components/wheel-scroll-session.d.ts +7 -0
- package/dist/components/wheel-scroll-session.js +53 -0
- package/dist/components/wheel-scroll-session.js.map +1 -0
- package/dist/components/widget-retention.d.ts +35 -0
- package/dist/components/widget-retention.js +169 -0
- package/dist/components/widget-retention.js.map +1 -0
- package/dist/contracts.d.ts +23 -3
- package/dist/contracts.js.map +1 -1
- package/dist/dnd/context.d.ts +69 -0
- package/dist/dnd/context.js +149 -0
- package/dist/dnd/context.js.map +1 -0
- package/dist/dnd/draggable.d.ts +59 -0
- package/dist/dnd/draggable.js +149 -0
- package/dist/dnd/draggable.js.map +1 -0
- package/dist/dnd/droppable.d.ts +24 -0
- package/dist/dnd/droppable.js +74 -0
- package/dist/dnd/droppable.js.map +1 -0
- package/dist/dnd/gtk-controllers.d.ts +39 -0
- package/dist/dnd/gtk-controllers.js +110 -0
- package/dist/dnd/gtk-controllers.js.map +1 -0
- package/dist/dnd/index.d.ts +6 -0
- package/dist/dnd/index.js +31 -0
- package/dist/dnd/index.js.map +1 -0
- package/dist/dnd/order.d.ts +7 -0
- package/dist/dnd/order.js +20 -0
- package/dist/dnd/order.js.map +1 -0
- package/dist/dnd/payload.d.ts +14 -0
- package/dist/dnd/payload.js +41 -0
- package/dist/dnd/payload.js.map +1 -0
- package/dist/dnd/sortable.d.ts +49 -0
- package/dist/dnd/sortable.js +307 -0
- package/dist/dnd/sortable.js.map +1 -0
- package/dist/dnd/types.d.ts +290 -0
- package/dist/dnd/types.js +25 -0
- package/dist/dnd/types.js.map +1 -0
- package/dist/gesture-handler-compat/builder.d.ts +251 -0
- package/dist/gesture-handler-compat/builder.js +513 -0
- package/dist/gesture-handler-compat/builder.js.map +1 -0
- package/dist/gesture-handler-compat/composition.d.ts +23 -0
- package/dist/gesture-handler-compat/composition.js +111 -0
- package/dist/gesture-handler-compat/composition.js.map +1 -0
- package/dist/gesture-handler-compat/deciders.d.ts +3 -0
- package/dist/gesture-handler-compat/deciders.js +47 -0
- package/dist/gesture-handler-compat/deciders.js.map +1 -0
- package/dist/gesture-handler-compat/detector-runtime.d.ts +44 -0
- package/dist/gesture-handler-compat/detector-runtime.js +374 -0
- package/dist/gesture-handler-compat/detector-runtime.js.map +1 -0
- package/dist/gesture-handler-compat/detector.d.ts +22 -0
- package/dist/gesture-handler-compat/detector.js +104 -0
- package/dist/gesture-handler-compat/detector.js.map +1 -0
- package/dist/gesture-handler-compat/fling.d.ts +24 -0
- package/dist/gesture-handler-compat/fling.js +123 -0
- package/dist/gesture-handler-compat/fling.js.map +1 -0
- package/dist/gesture-handler-compat/force-touch.d.ts +13 -0
- package/dist/gesture-handler-compat/force-touch.js +40 -0
- package/dist/gesture-handler-compat/force-touch.js.map +1 -0
- package/dist/gesture-handler-compat/hooks.d.ts +157 -0
- package/dist/gesture-handler-compat/hooks.js +268 -0
- package/dist/gesture-handler-compat/hooks.js.map +1 -0
- package/dist/gesture-handler-compat/hover.d.ts +2 -0
- package/dist/gesture-handler-compat/hover.js +22 -0
- package/dist/gesture-handler-compat/hover.js.map +1 -0
- package/dist/gesture-handler-compat/index.d.ts +98 -0
- package/dist/gesture-handler-compat/index.js +255 -0
- package/dist/gesture-handler-compat/index.js.map +1 -0
- package/dist/gesture-handler-compat/long-press.d.ts +6 -0
- package/dist/gesture-handler-compat/long-press.js +21 -0
- package/dist/gesture-handler-compat/long-press.js.map +1 -0
- package/dist/gesture-handler-compat/manual.d.ts +2 -0
- package/dist/gesture-handler-compat/manual.js +18 -0
- package/dist/gesture-handler-compat/manual.js.map +1 -0
- package/dist/gesture-handler-compat/native.d.ts +7 -0
- package/dist/gesture-handler-compat/native.js +34 -0
- package/dist/gesture-handler-compat/native.js.map +1 -0
- package/dist/gesture-handler-compat/orchestrator.d.ts +77 -0
- package/dist/gesture-handler-compat/orchestrator.js +284 -0
- package/dist/gesture-handler-compat/orchestrator.js.map +1 -0
- package/dist/gesture-handler-compat/pan.d.ts +23 -0
- package/dist/gesture-handler-compat/pan.js +116 -0
- package/dist/gesture-handler-compat/pan.js.map +1 -0
- package/dist/gesture-handler-compat/recognizer.d.ts +268 -0
- package/dist/gesture-handler-compat/recognizer.js +1056 -0
- package/dist/gesture-handler-compat/recognizer.js.map +1 -0
- package/dist/gesture-handler-compat/relations.d.ts +43 -0
- package/dist/gesture-handler-compat/relations.js +128 -0
- package/dist/gesture-handler-compat/relations.js.map +1 -0
- package/dist/gesture-handler-compat/tap.d.ts +6 -0
- package/dist/gesture-handler-compat/tap.js +29 -0
- package/dist/gesture-handler-compat/tap.js.map +1 -0
- package/dist/gesture-handler-compat/touchpad.d.ts +41 -0
- package/dist/gesture-handler-compat/touchpad.js +64 -0
- package/dist/gesture-handler-compat/touchpad.js.map +1 -0
- package/dist/gesture-handler-compat/types.d.ts +441 -0
- package/dist/gesture-handler-compat/types.js +167 -0
- package/dist/gesture-handler-compat/types.js.map +1 -0
- package/dist/gtk/controllers.d.ts +39 -0
- package/dist/gtk/controllers.js +92 -0
- package/dist/gtk/controllers.js.map +1 -0
- package/dist/gtk/index.d.ts +3 -1
- package/dist/gtk/index.js +14 -1
- package/dist/gtk/index.js.map +1 -1
- package/dist/gtk/widgets.generated.d.ts +14 -14
- package/dist/gtk/widgets.generated.js +101 -102
- package/dist/gtk/widgets.generated.js.map +1 -1
- package/dist/gtk/window-actions.d.ts +77 -0
- package/dist/gtk/window-actions.js +193 -0
- package/dist/gtk/window-actions.js.map +1 -0
- package/dist/gtkx/bridge/geometry.d.ts +15 -0
- package/dist/gtkx/bridge/geometry.js +40 -0
- package/dist/gtkx/bridge/geometry.js.map +1 -0
- package/dist/gtkx/bridge/index.d.ts +7 -3
- package/dist/gtkx/bridge/index.js +12 -4
- package/dist/gtkx/bridge/index.js.map +1 -1
- package/dist/gtkx/bridge/slot-portal.d.ts +12 -0
- package/dist/gtkx/bridge/slot-portal.js +17 -0
- package/dist/gtkx/bridge/slot-portal.js.map +1 -0
- package/dist/gtkx/bridge/svg-node.js +10 -54
- package/dist/gtkx/bridge/svg-node.js.map +1 -1
- package/dist/gtkx/bridge/use-signal.js +2 -2
- package/dist/gtkx/bridge/use-signal.js.map +1 -1
- package/dist/gtkx/bridge/view-box.d.ts +56 -0
- package/dist/gtkx/bridge/view-box.js +394 -9
- package/dist/gtkx/bridge/view-box.js.map +1 -1
- package/dist/gtkx/bridge/widget-css.d.ts +17 -0
- package/dist/gtkx/bridge/widget-css.js +72 -0
- package/dist/gtkx/bridge/widget-css.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/driven-size.d.ts +12 -0
- package/dist/layout/driven-size.js +70 -0
- package/dist/layout/driven-size.js.map +1 -0
- package/dist/layout/engine.d.ts +17 -1
- package/dist/layout/engine.js +3 -20
- package/dist/layout/engine.js.map +1 -1
- package/dist/layout/node.d.ts +13 -0
- package/dist/layout/node.js +14 -0
- package/dist/layout/node.js.map +1 -1
- package/dist/layout/yoga.d.ts +3 -2
- package/dist/layout/yoga.js +5 -2
- package/dist/layout/yoga.js.map +1 -1
- package/dist/mcp/data/generated.d.ts +310 -91
- package/dist/mcp/data/generated.js +365 -90
- package/dist/mcp/data/generated.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/metro/index.d.ts +10 -0
- package/dist/metro/index.js +21 -12
- package/dist/metro/index.js.map +1 -1
- package/dist/navigation/sidebar.d.ts +47 -1
- package/dist/navigation/sidebar.js +77 -3
- package/dist/navigation/sidebar.js.map +1 -1
- package/dist/reanimated-compat/animated-ref.d.ts +32 -0
- package/dist/reanimated-compat/animated-ref.js +57 -0
- package/dist/reanimated-compat/animated-ref.js.map +1 -0
- package/dist/reanimated-compat/animation.d.ts +177 -0
- package/dist/reanimated-compat/animation.js +540 -0
- package/dist/reanimated-compat/animation.js.map +1 -0
- package/dist/reanimated-compat/color.d.ts +28 -0
- package/dist/reanimated-compat/color.js +249 -0
- package/dist/reanimated-compat/color.js.map +1 -0
- package/dist/reanimated-compat/decay.d.ts +39 -0
- package/dist/reanimated-compat/decay.js +96 -0
- package/dist/reanimated-compat/decay.js.map +1 -0
- package/dist/reanimated-compat/easing.d.ts +30 -0
- package/dist/reanimated-compat/easing.js +76 -0
- package/dist/reanimated-compat/easing.js.map +1 -0
- package/dist/reanimated-compat/hooks.d.ts +14 -0
- package/dist/reanimated-compat/hooks.js +217 -0
- package/dist/reanimated-compat/hooks.js.map +1 -0
- package/dist/reanimated-compat/index.d.ts +258 -0
- package/dist/reanimated-compat/index.js +464 -0
- package/dist/reanimated-compat/index.js.map +1 -0
- package/dist/reanimated-compat/interpolation.d.ts +18 -0
- package/dist/reanimated-compat/interpolation.js +122 -0
- package/dist/reanimated-compat/interpolation.js.map +1 -0
- package/dist/reanimated-compat/layout-animation-config.d.ts +43 -0
- package/dist/reanimated-compat/layout-animation-config.js +78 -0
- package/dist/reanimated-compat/layout-animation-config.js.map +1 -0
- package/dist/reanimated-compat/layout-animation-presets.d.ts +117 -0
- package/dist/reanimated-compat/layout-animation-presets.js +498 -0
- package/dist/reanimated-compat/layout-animation-presets.js.map +1 -0
- package/dist/reanimated-compat/layout-animation-runtime.d.ts +21 -0
- package/dist/reanimated-compat/layout-animation-runtime.js +311 -0
- package/dist/reanimated-compat/layout-animation-runtime.js.map +1 -0
- package/dist/reanimated-compat/layout-animation-view.d.ts +27 -0
- package/dist/reanimated-compat/layout-animation-view.js +266 -0
- package/dist/reanimated-compat/layout-animation-view.js.map +1 -0
- package/dist/reanimated-compat/layout-animation.d.ts +171 -0
- package/dist/reanimated-compat/layout-animation.js +469 -0
- package/dist/reanimated-compat/layout-animation.js.map +1 -0
- package/dist/reanimated-compat/layout-transitions.d.ts +83 -0
- package/dist/reanimated-compat/layout-transitions.js +350 -0
- package/dist/reanimated-compat/layout-transitions.js.map +1 -0
- package/dist/reanimated-compat/mutable.d.ts +29 -0
- package/dist/reanimated-compat/mutable.js +139 -0
- package/dist/reanimated-compat/mutable.js.map +1 -0
- package/dist/reanimated-compat/props.d.ts +18 -0
- package/dist/reanimated-compat/props.js +111 -0
- package/dist/reanimated-compat/props.js.map +1 -0
- package/dist/reanimated-compat/scroll-handler.d.ts +119 -0
- package/dist/reanimated-compat/scroll-handler.js +274 -0
- package/dist/reanimated-compat/scroll-handler.js.map +1 -0
- package/dist/reanimated-compat/scroll-offset.d.ts +12 -0
- package/dist/reanimated-compat/scroll-offset.js +104 -0
- package/dist/reanimated-compat/scroll-offset.js.map +1 -0
- package/dist/reanimated-compat/style.d.ts +90 -0
- package/dist/reanimated-compat/style.js +452 -0
- package/dist/reanimated-compat/style.js.map +1 -0
- package/dist/reanimated-compat/test-timers.d.ts +28 -0
- package/dist/reanimated-compat/test-timers.js +136 -0
- package/dist/reanimated-compat/test-timers.js.map +1 -0
- package/dist/reanimated-compat/threads.d.ts +13 -0
- package/dist/reanimated-compat/threads.js +41 -0
- package/dist/reanimated-compat/threads.js.map +1 -0
- package/dist/reanimated-compat/tracking.d.ts +41 -0
- package/dist/reanimated-compat/tracking.js +106 -0
- package/dist/reanimated-compat/tracking.js.map +1 -0
- package/dist/reanimated-compat/updater-animations.d.ts +36 -0
- package/dist/reanimated-compat/updater-animations.js +273 -0
- package/dist/reanimated-compat/updater-animations.js.map +1 -0
- package/dist/responder/system.d.ts +100 -0
- package/dist/responder/system.js +304 -0
- package/dist/responder/system.js.map +1 -0
- package/dist/responder/touch-history.d.ts +10 -0
- package/dist/responder/touch-history.js +78 -0
- package/dist/responder/touch-history.js.map +1 -0
- package/dist/responder/types.d.ts +63 -0
- package/dist/responder/types.js +29 -0
- package/dist/responder/types.js.map +1 -0
- package/dist/responder/use-responder.d.ts +23 -0
- package/dist/responder/use-responder.js +317 -0
- package/dist/responder/use-responder.js.map +1 -0
- package/dist/runner/host-dev.js +4 -2
- package/dist/runner/host-dev.js.map +1 -1
- package/dist/runner/host.js +6 -2
- package/dist/runner/host.js.map +1 -1
- package/dist/runner/index.js +3 -3
- package/dist/runner/index.js.map +1 -1
- package/dist/sea/gtkx-config-module.js +2 -2
- package/dist/sea/gtkx-config-module.js.map +1 -1
- package/dist/style/absolute-insets.d.ts +26 -0
- package/dist/style/absolute-insets.js +113 -0
- package/dist/style/absolute-insets.js.map +1 -0
- package/dist/style/animated-size.d.ts +25 -0
- package/dist/style/animated-size.js +225 -0
- package/dist/style/animated-size.js.map +1 -0
- package/dist/style/box-shadow.d.ts +7 -0
- package/dist/style/box-shadow.js +197 -0
- package/dist/style/box-shadow.js.map +1 -0
- package/dist/style/colors.d.ts +17 -0
- package/dist/style/colors.js +25 -6
- package/dist/style/colors.js.map +1 -1
- package/dist/style/imperative-css.d.ts +21 -0
- package/dist/style/imperative-css.js +63 -0
- package/dist/style/imperative-css.js.map +1 -0
- package/dist/style/index.d.ts +4 -1
- package/dist/style/index.js +4 -1
- package/dist/style/index.js.map +1 -1
- package/dist/style/split-style.d.ts +5 -2
- package/dist/style/split-style.js +36 -3
- package/dist/style/split-style.js.map +1 -1
- package/dist/style/text-decoration.d.ts +15 -0
- package/dist/style/text-decoration.js +26 -0
- package/dist/style/text-decoration.js.map +1 -0
- package/dist/style/visual-css.js +37 -1
- package/dist/style/visual-css.js.map +1 -1
- package/dist/svg/gradient-geometry.js +2 -5
- package/dist/svg/gradient-geometry.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unsupported-export.d.ts +8 -0
- package/dist/unsupported-export.js +66 -0
- package/dist/unsupported-export.js.map +1 -0
- package/dist/vendor/react-native/pan-responder.d.ts +102 -0
- package/dist/vendor/react-native/pan-responder.js +196 -0
- package/dist/vendor/react-native/pan-responder.js.map +1 -0
- package/dist/vendor/react-native/touch-history-math.d.ts +18 -0
- package/dist/vendor/react-native/touch-history-math.js +102 -0
- package/dist/vendor/react-native/touch-history-math.js.map +1 -0
- package/dist/vite/index.d.ts +21 -8
- package/dist/vite/index.js +127 -82
- package/dist/vite/index.js.map +1 -1
- package/dist/vitest/index.d.ts +2 -2
- package/dist/vitest/index.js.map +1 -1
- package/dist/worklets-compat/index.d.ts +4 -0
- package/dist/worklets-compat/index.js +28 -0
- package/dist/worklets-compat/index.js.map +1 -0
- package/dist/worklets-compat/surface.d.ts +110 -0
- package/dist/worklets-compat/surface.js +153 -0
- package/dist/worklets-compat/surface.js.map +1 -0
- package/package.json +25 -9
- package/types.d.ts +9 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import TouchHistoryMath from "./touch-history-math";
|
|
8
|
+
const currentCentroidXOfTouchesChangedAfter = TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;
|
|
9
|
+
const currentCentroidYOfTouchesChangedAfter = TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;
|
|
10
|
+
const previousCentroidXOfTouchesChangedAfter = TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;
|
|
11
|
+
const previousCentroidYOfTouchesChangedAfter = TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;
|
|
12
|
+
const currentCentroidX = TouchHistoryMath.currentCentroidX;
|
|
13
|
+
const currentCentroidY = TouchHistoryMath.currentCentroidY;
|
|
14
|
+
const PanResponder = {
|
|
15
|
+
_initializeGestureState(gestureState) {
|
|
16
|
+
gestureState.moveX = 0;
|
|
17
|
+
gestureState.moveY = 0;
|
|
18
|
+
gestureState.x0 = 0;
|
|
19
|
+
gestureState.y0 = 0;
|
|
20
|
+
gestureState.dx = 0;
|
|
21
|
+
gestureState.dy = 0;
|
|
22
|
+
gestureState.vx = 0;
|
|
23
|
+
gestureState.vy = 0;
|
|
24
|
+
gestureState.numberActiveTouches = 0;
|
|
25
|
+
// All `gestureState` accounts for timeStamps up until:
|
|
26
|
+
gestureState._accountsForMovesUpTo = 0;
|
|
27
|
+
},
|
|
28
|
+
/**
|
|
29
|
+
* This is nuanced and is necessary. It is incorrect to continuously take all
|
|
30
|
+
* active *and* recently moved touches, find the centroid, and track how that
|
|
31
|
+
* result changes over time. Instead, we must take all recently moved
|
|
32
|
+
* touches, and calculate how the centroid has changed just for those
|
|
33
|
+
* recently moved touches, and append that change to an accumulator. This is
|
|
34
|
+
* to (at least) handle the case where the user is moving three fingers, and
|
|
35
|
+
* then one of the fingers stops but the other two continue.
|
|
36
|
+
*
|
|
37
|
+
* This is very different than taking all of the recently moved touches and
|
|
38
|
+
* storing their centroid as `dx/dy`. For correctness, we must *accumulate
|
|
39
|
+
* changes* in the centroid of recently moved touches.
|
|
40
|
+
*
|
|
41
|
+
* There is also some nuance with how we handle multiple moved touches in a
|
|
42
|
+
* single event. With the way `ReactNativeEventEmitter` dispatches touches as
|
|
43
|
+
* individual events, multiple touches generate two 'move' events, each of
|
|
44
|
+
* them triggering `onResponderMove`. But with the way `PanResponder` works,
|
|
45
|
+
* all of the gesture inference is performed on the first dispatch, since it
|
|
46
|
+
* looks at all of the touches (even the ones for which there hasn't been a
|
|
47
|
+
* native dispatch yet). Therefore, `PanResponder` does not call
|
|
48
|
+
* `onResponderMove` passed the first dispatch. This diverges from the
|
|
49
|
+
* typical responder callback pattern (without using `PanResponder`), but
|
|
50
|
+
* avoids more dispatches than necessary.
|
|
51
|
+
*/
|
|
52
|
+
_updateGestureStateOnMove(gestureState, touchHistory) {
|
|
53
|
+
gestureState.numberActiveTouches = touchHistory.numberActiveTouches;
|
|
54
|
+
gestureState.moveX = currentCentroidXOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);
|
|
55
|
+
gestureState.moveY = currentCentroidYOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);
|
|
56
|
+
const movedAfter = gestureState._accountsForMovesUpTo;
|
|
57
|
+
const prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);
|
|
58
|
+
const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);
|
|
59
|
+
const prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);
|
|
60
|
+
const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);
|
|
61
|
+
const nextDX = gestureState.dx + (x - prevX);
|
|
62
|
+
const nextDY = gestureState.dy + (y - prevY);
|
|
63
|
+
// TODO: This must be filtered intelligently.
|
|
64
|
+
const dt = touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;
|
|
65
|
+
gestureState.vx = (nextDX - gestureState.dx) / dt;
|
|
66
|
+
gestureState.vy = (nextDY - gestureState.dy) / dt;
|
|
67
|
+
gestureState.dx = nextDX;
|
|
68
|
+
gestureState.dy = nextDY;
|
|
69
|
+
gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* @param config Enhanced versions of all of the responder callbacks that
|
|
73
|
+
* provide not only the typical `ResponderSyntheticEvent`, but also the
|
|
74
|
+
* `PanResponder` gesture state. Simply replace the word `Responder` with
|
|
75
|
+
* `PanResponder` in each of the typical `onResponder*` callbacks.
|
|
76
|
+
*/
|
|
77
|
+
create(config) {
|
|
78
|
+
const gestureState = {
|
|
79
|
+
// Useful for debugging
|
|
80
|
+
stateID: Math.random(),
|
|
81
|
+
moveX: 0,
|
|
82
|
+
moveY: 0,
|
|
83
|
+
x0: 0,
|
|
84
|
+
y0: 0,
|
|
85
|
+
dx: 0,
|
|
86
|
+
dy: 0,
|
|
87
|
+
vx: 0,
|
|
88
|
+
vy: 0,
|
|
89
|
+
numberActiveTouches: 0,
|
|
90
|
+
_accountsForMovesUpTo: 0,
|
|
91
|
+
};
|
|
92
|
+
const panHandlers = {
|
|
93
|
+
onStartShouldSetResponder(event) {
|
|
94
|
+
return config.onStartShouldSetPanResponder == null
|
|
95
|
+
? false
|
|
96
|
+
: config.onStartShouldSetPanResponder(event, gestureState);
|
|
97
|
+
},
|
|
98
|
+
onMoveShouldSetResponder(event) {
|
|
99
|
+
return config.onMoveShouldSetPanResponder == null
|
|
100
|
+
? false
|
|
101
|
+
: config.onMoveShouldSetPanResponder(event, gestureState);
|
|
102
|
+
},
|
|
103
|
+
onStartShouldSetResponderCapture(event) {
|
|
104
|
+
// TODO: Actually, we should reinitialize the state any time
|
|
105
|
+
// touches.length increases from 0 active to > 0 active.
|
|
106
|
+
if (event.nativeEvent.touches.length === 1) {
|
|
107
|
+
PanResponder._initializeGestureState(gestureState);
|
|
108
|
+
}
|
|
109
|
+
gestureState.numberActiveTouches =
|
|
110
|
+
event.touchHistory.numberActiveTouches;
|
|
111
|
+
return config.onStartShouldSetPanResponderCapture != null
|
|
112
|
+
? config.onStartShouldSetPanResponderCapture(event, gestureState)
|
|
113
|
+
: false;
|
|
114
|
+
},
|
|
115
|
+
onMoveShouldSetResponderCapture(event) {
|
|
116
|
+
const touchHistory = event.touchHistory;
|
|
117
|
+
// Responder system incorrectly dispatches should* to current responder
|
|
118
|
+
// Filter out any touch moves past the first one - we would have
|
|
119
|
+
// already processed multi-touch geometry during the first event.
|
|
120
|
+
if (gestureState._accountsForMovesUpTo ===
|
|
121
|
+
touchHistory.mostRecentTimeStamp) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
PanResponder._updateGestureStateOnMove(gestureState, touchHistory);
|
|
125
|
+
return config.onMoveShouldSetPanResponderCapture
|
|
126
|
+
? config.onMoveShouldSetPanResponderCapture(event, gestureState)
|
|
127
|
+
: false;
|
|
128
|
+
},
|
|
129
|
+
onResponderGrant(event) {
|
|
130
|
+
gestureState.x0 = currentCentroidX(event.touchHistory);
|
|
131
|
+
gestureState.y0 = currentCentroidY(event.touchHistory);
|
|
132
|
+
gestureState.dx = 0;
|
|
133
|
+
gestureState.dy = 0;
|
|
134
|
+
if (config.onPanResponderGrant) {
|
|
135
|
+
config.onPanResponderGrant(event, gestureState);
|
|
136
|
+
}
|
|
137
|
+
// TODO: t7467124 investigate if this can be removed
|
|
138
|
+
return config.onShouldBlockNativeResponder == null
|
|
139
|
+
? true
|
|
140
|
+
: config.onShouldBlockNativeResponder(event, gestureState);
|
|
141
|
+
},
|
|
142
|
+
onResponderReject(event) {
|
|
143
|
+
config.onPanResponderReject?.call(undefined, event, gestureState);
|
|
144
|
+
},
|
|
145
|
+
onResponderRelease(event) {
|
|
146
|
+
config.onPanResponderRelease?.call(undefined, event, gestureState);
|
|
147
|
+
PanResponder._initializeGestureState(gestureState);
|
|
148
|
+
},
|
|
149
|
+
onResponderStart(event) {
|
|
150
|
+
const touchHistory = event.touchHistory;
|
|
151
|
+
gestureState.numberActiveTouches = touchHistory.numberActiveTouches;
|
|
152
|
+
if (config.onPanResponderStart) {
|
|
153
|
+
config.onPanResponderStart(event, gestureState);
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
onResponderMove(event) {
|
|
157
|
+
const touchHistory = event.touchHistory;
|
|
158
|
+
// Guard against the dispatch of two touch moves when there are two
|
|
159
|
+
// simultaneously changed touches.
|
|
160
|
+
if (gestureState._accountsForMovesUpTo ===
|
|
161
|
+
touchHistory.mostRecentTimeStamp) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Filter out any touch moves past the first one - we would have
|
|
165
|
+
// already processed multi-touch geometry during the first event.
|
|
166
|
+
PanResponder._updateGestureStateOnMove(gestureState, touchHistory);
|
|
167
|
+
if (config.onPanResponderMove) {
|
|
168
|
+
config.onPanResponderMove(event, gestureState);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
onResponderEnd(event) {
|
|
172
|
+
const touchHistory = event.touchHistory;
|
|
173
|
+
gestureState.numberActiveTouches = touchHistory.numberActiveTouches;
|
|
174
|
+
config.onPanResponderEnd?.call(undefined, event, gestureState);
|
|
175
|
+
},
|
|
176
|
+
onResponderTerminate(event) {
|
|
177
|
+
config.onPanResponderTerminate?.call(undefined, event, gestureState);
|
|
178
|
+
PanResponder._initializeGestureState(gestureState);
|
|
179
|
+
},
|
|
180
|
+
onResponderTerminationRequest(event) {
|
|
181
|
+
return config.onPanResponderTerminationRequest == null
|
|
182
|
+
? true
|
|
183
|
+
: config.onPanResponderTerminationRequest(event, gestureState);
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
return {
|
|
187
|
+
panHandlers,
|
|
188
|
+
getInteractionHandle() {
|
|
189
|
+
// TODO: Deprecate and delete this method.
|
|
190
|
+
return null;
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
export default PanResponder;
|
|
196
|
+
//# sourceMappingURL=pan-responder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pan-responder.js","sourceRoot":"","sources":["../../../src/vendor/react-native/pan-responder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// VENDORED from react-native (MIT), Libraries/Interaction/PanResponder.js.\n//\n// react-native-web re-exports Meta's file directly and it works untouched,\n// because RNW reproduces the touchHistory structure PanResponder expects. We\n// reproduce the same structure (src/responder/touch-history.ts), so the\n// algorithm below is upstream's, unmodified in substance.\n//\n// We cannot re-export it the way RNW does: upstream ships Flow, and this\n// package is one tsc emit. So it is transliterated, and ONLY transliterated:\n// - Flow annotations to TypeScript (`?number` to `number | null`,\n// inexact object types to plain ones, `Readonly<{}>` kept as-is);\n// - `GestureResponderEvent` imported from our responder types instead of\n// RN's CoreEventTypes;\n// - `require` to `import`.\n//\n// The logic is deliberately untouched, comments included — especially the\n// clustered multi-touch accumulation in _updateGestureStateOnMove, which is\n// the part with no obvious specification and the reason vendoring beats\n// reimplementing.\nimport type { GestureResponderEvent } from \"../../responder/types\"\nimport TouchHistoryMath from \"./touch-history-math\"\n\nconst currentCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidXOfTouchesChangedAfter\nconst currentCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidYOfTouchesChangedAfter\nconst previousCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidXOfTouchesChangedAfter\nconst previousCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidYOfTouchesChangedAfter\nconst currentCentroidX = TouchHistoryMath.currentCentroidX\nconst currentCentroidY = TouchHistoryMath.currentCentroidY\n\nexport type PanResponderGestureState = {\n /** ID of the gestureState - persisted as long as there's a touch on screen */\n stateID: number\n /** the latest screen coordinates of the recently-moved touch */\n moveX: number\n /** the latest screen coordinates of the recently-moved touch */\n moveY: number\n /** the screen coordinates of the responder grant */\n x0: number\n /** the screen coordinates of the responder grant */\n y0: number\n /** accumulated distance of the gesture since the touch started */\n dx: number\n /** accumulated distance of the gesture since the touch started */\n dy: number\n /** current velocity of the gesture */\n vx: number\n /** current velocity of the gesture */\n vy: number\n /** Number of touches currently on screen */\n numberActiveTouches: number\n /** All `gestureState` accounts for timeStamps up until this value */\n _accountsForMovesUpTo: number\n}\n\ntype ActiveCallback = (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n) => boolean\n\ntype PassiveCallback = (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n) => unknown\n\nexport type GestureResponderHandlerMethods = {\n onMoveShouldSetResponder: (event: GestureResponderEvent) => boolean\n onMoveShouldSetResponderCapture: (event: GestureResponderEvent) => boolean\n onResponderEnd: (event: GestureResponderEvent) => void\n onResponderGrant: (event: GestureResponderEvent) => boolean\n onResponderMove: (event: GestureResponderEvent) => void\n onResponderReject: (event: GestureResponderEvent) => void\n onResponderRelease: (event: GestureResponderEvent) => void\n onResponderStart: (event: GestureResponderEvent) => void\n onResponderTerminate: (event: GestureResponderEvent) => void\n onResponderTerminationRequest: (event: GestureResponderEvent) => boolean\n onStartShouldSetResponder: (event: GestureResponderEvent) => boolean\n onStartShouldSetResponderCapture: (event: GestureResponderEvent) => boolean\n}\n\nexport type PanResponderCallbacks = Readonly<{\n onMoveShouldSetPanResponder?: ActiveCallback\n onMoveShouldSetPanResponderCapture?: ActiveCallback\n onStartShouldSetPanResponder?: ActiveCallback\n onStartShouldSetPanResponderCapture?: ActiveCallback\n onPanResponderGrant?: PassiveCallback\n onPanResponderMove?: PassiveCallback\n onPanResponderRelease?: PassiveCallback\n onPanResponderTerminate?: PassiveCallback\n onPanResponderReject?: PassiveCallback\n onPanResponderStart?: PassiveCallback\n onPanResponderEnd?: PassiveCallback\n onPanResponderTerminationRequest?: ActiveCallback\n onShouldBlockNativeResponder?: ActiveCallback\n}>\n\nconst PanResponder = {\n _initializeGestureState(gestureState: PanResponderGestureState): void {\n gestureState.moveX = 0\n gestureState.moveY = 0\n gestureState.x0 = 0\n gestureState.y0 = 0\n gestureState.dx = 0\n gestureState.dy = 0\n gestureState.vx = 0\n gestureState.vy = 0\n gestureState.numberActiveTouches = 0\n // All `gestureState` accounts for timeStamps up until:\n gestureState._accountsForMovesUpTo = 0\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove(\n gestureState: PanResponderGestureState,\n touchHistory: GestureResponderEvent[\"touchHistory\"],\n ): void {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo,\n )\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo,\n )\n const movedAfter = gestureState._accountsForMovesUpTo\n const prevX = previousCentroidXOfTouchesChangedAfter(\n touchHistory,\n movedAfter,\n )\n const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter)\n const prevY = previousCentroidYOfTouchesChangedAfter(\n touchHistory,\n movedAfter,\n )\n const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter)\n const nextDX = gestureState.dx + (x - prevX)\n const nextDY = gestureState.dy + (y - prevY)\n\n // TODO: This must be filtered intelligently.\n const dt =\n touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo\n gestureState.vx = (nextDX - gestureState.dx) / dt\n gestureState.vy = (nextDY - gestureState.dy) / dt\n\n gestureState.dx = nextDX\n gestureState.dy = nextDY\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp\n },\n\n /**\n * @param config Enhanced versions of all of the responder callbacks that\n * provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks.\n */\n create(config: PanResponderCallbacks): {\n getInteractionHandle: () => number | null\n panHandlers: GestureResponderHandlerMethods\n } {\n const gestureState: PanResponderGestureState = {\n // Useful for debugging\n stateID: Math.random(),\n moveX: 0,\n moveY: 0,\n x0: 0,\n y0: 0,\n dx: 0,\n dy: 0,\n vx: 0,\n vy: 0,\n numberActiveTouches: 0,\n _accountsForMovesUpTo: 0,\n }\n const panHandlers: GestureResponderHandlerMethods = {\n onStartShouldSetResponder(event: GestureResponderEvent): boolean {\n return config.onStartShouldSetPanResponder == null\n ? false\n : config.onStartShouldSetPanResponder(event, gestureState)\n },\n onMoveShouldSetResponder(event: GestureResponderEvent): boolean {\n return config.onMoveShouldSetPanResponder == null\n ? false\n : config.onMoveShouldSetPanResponder(event, gestureState)\n },\n onStartShouldSetResponderCapture(event: GestureResponderEvent): boolean {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (event.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState)\n }\n gestureState.numberActiveTouches =\n event.touchHistory.numberActiveTouches\n return config.onStartShouldSetPanResponderCapture != null\n ? config.onStartShouldSetPanResponderCapture(event, gestureState)\n : false\n },\n\n onMoveShouldSetResponderCapture(event: GestureResponderEvent): boolean {\n const touchHistory = event.touchHistory\n // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n if (\n gestureState._accountsForMovesUpTo ===\n touchHistory.mostRecentTimeStamp\n ) {\n return false\n }\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory)\n return config.onMoveShouldSetPanResponderCapture\n ? config.onMoveShouldSetPanResponderCapture(event, gestureState)\n : false\n },\n\n onResponderGrant(event: GestureResponderEvent): boolean {\n gestureState.x0 = currentCentroidX(event.touchHistory)\n gestureState.y0 = currentCentroidY(event.touchHistory)\n gestureState.dx = 0\n gestureState.dy = 0\n if (config.onPanResponderGrant) {\n config.onPanResponderGrant(event, gestureState)\n }\n // TODO: t7467124 investigate if this can be removed\n return config.onShouldBlockNativeResponder == null\n ? true\n : config.onShouldBlockNativeResponder(event, gestureState)\n },\n\n onResponderReject(event: GestureResponderEvent): void {\n config.onPanResponderReject?.call(undefined, event, gestureState)\n },\n\n onResponderRelease(event: GestureResponderEvent): void {\n config.onPanResponderRelease?.call(undefined, event, gestureState)\n PanResponder._initializeGestureState(gestureState)\n },\n\n onResponderStart(event: GestureResponderEvent): void {\n const touchHistory = event.touchHistory\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches\n if (config.onPanResponderStart) {\n config.onPanResponderStart(event, gestureState)\n }\n },\n\n onResponderMove(event: GestureResponderEvent): void {\n const touchHistory = event.touchHistory\n // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n if (\n gestureState._accountsForMovesUpTo ===\n touchHistory.mostRecentTimeStamp\n ) {\n return\n }\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory)\n if (config.onPanResponderMove) {\n config.onPanResponderMove(event, gestureState)\n }\n },\n\n onResponderEnd(event: GestureResponderEvent): void {\n const touchHistory = event.touchHistory\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches\n config.onPanResponderEnd?.call(undefined, event, gestureState)\n },\n\n onResponderTerminate(event: GestureResponderEvent): void {\n config.onPanResponderTerminate?.call(undefined, event, gestureState)\n PanResponder._initializeGestureState(gestureState)\n },\n\n onResponderTerminationRequest(event: GestureResponderEvent): boolean {\n return config.onPanResponderTerminationRequest == null\n ? true\n : config.onPanResponderTerminationRequest(event, gestureState)\n },\n }\n return {\n panHandlers,\n getInteractionHandle(): number | null {\n // TODO: Deprecate and delete this method.\n return null\n },\n }\n },\n}\n\nexport type PanResponderInstance = ReturnType<(typeof PanResponder)[\"create\"]>\n\nexport default PanResponder\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import type { TouchHistory } from "../../responder/types";
|
|
8
|
+
declare const TouchHistoryMath: {
|
|
9
|
+
centroidDimension: (touchHistory: TouchHistory, touchesChangedAfter: number, isXAxis: boolean, ofCurrent: boolean) => number;
|
|
10
|
+
currentCentroidXOfTouchesChangedAfter(touchHistory: TouchHistory, touchesChangedAfter: number): number;
|
|
11
|
+
currentCentroidYOfTouchesChangedAfter(touchHistory: TouchHistory, touchesChangedAfter: number): number;
|
|
12
|
+
previousCentroidXOfTouchesChangedAfter(touchHistory: TouchHistory, touchesChangedAfter: number): number;
|
|
13
|
+
previousCentroidYOfTouchesChangedAfter(touchHistory: TouchHistory, touchesChangedAfter: number): number;
|
|
14
|
+
currentCentroidX(touchHistory: TouchHistory): number;
|
|
15
|
+
currentCentroidY(touchHistory: TouchHistory): number;
|
|
16
|
+
noCentroid: number;
|
|
17
|
+
};
|
|
18
|
+
export default TouchHistoryMath;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
const noCentroid = -1;
|
|
8
|
+
/**
|
|
9
|
+
* This code is optimized and not intended to look beautiful. This allows
|
|
10
|
+
* computing of touch centroids that have moved after `touchesChangedAfter`
|
|
11
|
+
* timeStamp. You can compute the current centroid involving all touches
|
|
12
|
+
* moves after `touchesChangedAfter`, or you can compute the previous
|
|
13
|
+
* centroid of all touches that were moved after `touchesChangedAfter`.
|
|
14
|
+
*
|
|
15
|
+
* @param touchHistory Standard Responder touch track data.
|
|
16
|
+
* @param touchesChangedAfter timeStamp after which moved touches are
|
|
17
|
+
* considered "actively moving" - not just "active".
|
|
18
|
+
* @param isXAxis Consider `x` dimension vs. `y` dimension.
|
|
19
|
+
* @param ofCurrent Compute current centroid for actively moving touches vs.
|
|
20
|
+
* previous centroid of now actively moving touches.
|
|
21
|
+
* @return value of centroid in specified dimension.
|
|
22
|
+
*/
|
|
23
|
+
const centroidDimension = (touchHistory, touchesChangedAfter, isXAxis, ofCurrent) => {
|
|
24
|
+
const touchBank = touchHistory.touchBank;
|
|
25
|
+
let total = 0;
|
|
26
|
+
let count = 0;
|
|
27
|
+
const oneTouchData = touchHistory.numberActiveTouches === 1
|
|
28
|
+
? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]
|
|
29
|
+
: null;
|
|
30
|
+
if (oneTouchData !== null && oneTouchData !== undefined) {
|
|
31
|
+
if (oneTouchData.touchActive &&
|
|
32
|
+
oneTouchData.currentTimeStamp > touchesChangedAfter) {
|
|
33
|
+
total +=
|
|
34
|
+
ofCurrent && isXAxis
|
|
35
|
+
? oneTouchData.currentPageX
|
|
36
|
+
: ofCurrent && !isXAxis
|
|
37
|
+
? oneTouchData.currentPageY
|
|
38
|
+
: !ofCurrent && isXAxis
|
|
39
|
+
? oneTouchData.previousPageX
|
|
40
|
+
: oneTouchData.previousPageY;
|
|
41
|
+
count = 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
for (let i = 0; i < touchBank.length; i++) {
|
|
46
|
+
const touchTrack = touchBank[i];
|
|
47
|
+
if (touchTrack !== null &&
|
|
48
|
+
touchTrack !== undefined &&
|
|
49
|
+
touchTrack.touchActive &&
|
|
50
|
+
touchTrack.currentTimeStamp >= touchesChangedAfter) {
|
|
51
|
+
let toAdd; // Yuck, program temporarily in invalid state.
|
|
52
|
+
if (ofCurrent && isXAxis) {
|
|
53
|
+
toAdd = touchTrack.currentPageX;
|
|
54
|
+
}
|
|
55
|
+
else if (ofCurrent && !isXAxis) {
|
|
56
|
+
toAdd = touchTrack.currentPageY;
|
|
57
|
+
}
|
|
58
|
+
else if (!ofCurrent && isXAxis) {
|
|
59
|
+
toAdd = touchTrack.previousPageX;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
toAdd = touchTrack.previousPageY;
|
|
63
|
+
}
|
|
64
|
+
total += toAdd;
|
|
65
|
+
count++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return count > 0 ? total / count : noCentroid;
|
|
70
|
+
};
|
|
71
|
+
const TouchHistoryMath = {
|
|
72
|
+
centroidDimension,
|
|
73
|
+
currentCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {
|
|
74
|
+
return centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis
|
|
75
|
+
true);
|
|
76
|
+
},
|
|
77
|
+
currentCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {
|
|
78
|
+
return centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis
|
|
79
|
+
true);
|
|
80
|
+
},
|
|
81
|
+
previousCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {
|
|
82
|
+
return centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis
|
|
83
|
+
false);
|
|
84
|
+
},
|
|
85
|
+
previousCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {
|
|
86
|
+
return centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis
|
|
87
|
+
false);
|
|
88
|
+
},
|
|
89
|
+
currentCentroidX(touchHistory) {
|
|
90
|
+
return centroidDimension(touchHistory, 0, // touchesChangedAfter
|
|
91
|
+
true, // isXAxis
|
|
92
|
+
true);
|
|
93
|
+
},
|
|
94
|
+
currentCentroidY(touchHistory) {
|
|
95
|
+
return centroidDimension(touchHistory, 0, // touchesChangedAfter
|
|
96
|
+
false, // isXAxis
|
|
97
|
+
true);
|
|
98
|
+
},
|
|
99
|
+
noCentroid,
|
|
100
|
+
};
|
|
101
|
+
export default TouchHistoryMath;
|
|
102
|
+
//# sourceMappingURL=touch-history-math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"touch-history-math.js","sourceRoot":"","sources":["../../../src/vendor/react-native/touch-history-math.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,MAAM,UAAU,GAAG,CAAC,CAAC,CAAA;AAErB;;;;;;;;;;;;;;GAcG;AACH,MAAM,iBAAiB,GAAG,CACxB,YAA0B,EAC1B,mBAA2B,EAC3B,OAAgB,EAChB,SAAkB,EACV,EAAE;IACV,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACxC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,MAAM,YAAY,GAChB,YAAY,CAAC,mBAAmB,KAAK,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,wBAAwB,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAA;IAEV,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACxD,IACE,YAAY,CAAC,WAAW;YACxB,YAAY,CAAC,gBAAgB,GAAG,mBAAmB,EACnD,CAAC;YACD,KAAK;gBACH,SAAS,IAAI,OAAO;oBAClB,CAAC,CAAC,YAAY,CAAC,YAAY;oBAC3B,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO;wBACrB,CAAC,CAAC,YAAY,CAAC,YAAY;wBAC3B,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO;4BACrB,CAAC,CAAC,YAAY,CAAC,aAAa;4BAC5B,CAAC,CAAC,YAAY,CAAC,aAAa,CAAA;YACpC,KAAK,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC/B,IACE,UAAU,KAAK,IAAI;gBACnB,UAAU,KAAK,SAAS;gBACxB,UAAU,CAAC,WAAW;gBACtB,UAAU,CAAC,gBAAgB,IAAI,mBAAmB,EAClD,CAAC;gBACD,IAAI,KAAK,CAAA,CAAC,8CAA8C;gBACxD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;oBACzB,KAAK,GAAG,UAAU,CAAC,YAAY,CAAA;gBACjC,CAAC;qBAAM,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjC,KAAK,GAAG,UAAU,CAAC,YAAY,CAAA;gBACjC,CAAC;qBAAM,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE,CAAC;oBACjC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,UAAU,CAAC,aAAa,CAAA;gBAClC,CAAC;gBACD,KAAK,IAAI,KAAK,CAAA;gBACd,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IAEjB,qCAAqC,CACnC,YAA0B,EAC1B,mBAA2B;QAE3B,OAAO,iBAAiB,CACtB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EAAE,UAAU;QAChB,IAAI,CACL,CAAA;IACH,CAAC;IAED,qCAAqC,CACnC,YAA0B,EAC1B,mBAA2B;QAE3B,OAAO,iBAAiB,CACtB,YAAY,EACZ,mBAAmB,EACnB,KAAK,EAAE,UAAU;QACjB,IAAI,CACL,CAAA;IACH,CAAC;IAED,sCAAsC,CACpC,YAA0B,EAC1B,mBAA2B;QAE3B,OAAO,iBAAiB,CACtB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EAAE,UAAU;QAChB,KAAK,CACN,CAAA;IACH,CAAC;IAED,sCAAsC,CACpC,YAA0B,EAC1B,mBAA2B;QAE3B,OAAO,iBAAiB,CACtB,YAAY,EACZ,mBAAmB,EACnB,KAAK,EAAE,UAAU;QACjB,KAAK,CACN,CAAA;IACH,CAAC;IAED,gBAAgB,CAAC,YAA0B;QACzC,OAAO,iBAAiB,CACtB,YAAY,EACZ,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,UAAU;QAChB,IAAI,CACL,CAAA;IACH,CAAC;IAED,gBAAgB,CAAC,YAA0B;QACzC,OAAO,iBAAiB,CACtB,YAAY,EACZ,CAAC,EAAE,sBAAsB;QACzB,KAAK,EAAE,UAAU;QACjB,IAAI,CACL,CAAA;IACH,CAAC;IAED,UAAU;CACX,CAAA;AAED,eAAe,gBAAgB,CAAA","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// VENDORED from react-native (MIT), Libraries/Interaction/TouchHistoryMath.js.\n// Kept in this repository for the same reason react-native-web vendors\n// PanResponder: the maths are the contract, and reimplementing them would\n// mean reimplementing a subtlety we do not have the test cases for (see the\n// comment about clustered multi-touch movement in pan-responder.ts).\n//\n// Changes from upstream, and only these:\n// - Flow annotations transliterated to TypeScript;\n// - upstream annotates its own touch-history parameter with the name of the\n// const it is declaring (a self-reference Flow tolerates behind two\n// $FlowFixMe suppressions); that parameter is typed `TouchHistory` here;\n// - the trailing `as {...}` cast, which existed only to break that Flow\n// cycle, is dropped;\n// - `object.method` shorthand instead of `key: function ()`.\n//\n// Do not \"improve\" this file. Diffing it against upstream must stay trivial.\nimport type { TouchHistory } from \"../../responder/types\"\n\nconst noCentroid = -1\n\n/**\n * This code is optimized and not intended to look beautiful. This allows\n * computing of touch centroids that have moved after `touchesChangedAfter`\n * timeStamp. You can compute the current centroid involving all touches\n * moves after `touchesChangedAfter`, or you can compute the previous\n * centroid of all touches that were moved after `touchesChangedAfter`.\n *\n * @param touchHistory Standard Responder touch track data.\n * @param touchesChangedAfter timeStamp after which moved touches are\n * considered \"actively moving\" - not just \"active\".\n * @param isXAxis Consider `x` dimension vs. `y` dimension.\n * @param ofCurrent Compute current centroid for actively moving touches vs.\n * previous centroid of now actively moving touches.\n * @return value of centroid in specified dimension.\n */\nconst centroidDimension = (\n touchHistory: TouchHistory,\n touchesChangedAfter: number,\n isXAxis: boolean,\n ofCurrent: boolean,\n): number => {\n const touchBank = touchHistory.touchBank\n let total = 0\n let count = 0\n\n const oneTouchData =\n touchHistory.numberActiveTouches === 1\n ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]\n : null\n\n if (oneTouchData !== null && oneTouchData !== undefined) {\n if (\n oneTouchData.touchActive &&\n oneTouchData.currentTimeStamp > touchesChangedAfter\n ) {\n total +=\n ofCurrent && isXAxis\n ? oneTouchData.currentPageX\n : ofCurrent && !isXAxis\n ? oneTouchData.currentPageY\n : !ofCurrent && isXAxis\n ? oneTouchData.previousPageX\n : oneTouchData.previousPageY\n count = 1\n }\n } else {\n for (let i = 0; i < touchBank.length; i++) {\n const touchTrack = touchBank[i]\n if (\n touchTrack !== null &&\n touchTrack !== undefined &&\n touchTrack.touchActive &&\n touchTrack.currentTimeStamp >= touchesChangedAfter\n ) {\n let toAdd // Yuck, program temporarily in invalid state.\n if (ofCurrent && isXAxis) {\n toAdd = touchTrack.currentPageX\n } else if (ofCurrent && !isXAxis) {\n toAdd = touchTrack.currentPageY\n } else if (!ofCurrent && isXAxis) {\n toAdd = touchTrack.previousPageX\n } else {\n toAdd = touchTrack.previousPageY\n }\n total += toAdd\n count++\n }\n }\n }\n return count > 0 ? total / count : noCentroid\n}\n\nconst TouchHistoryMath = {\n centroidDimension,\n\n currentCentroidXOfTouchesChangedAfter(\n touchHistory: TouchHistory,\n touchesChangedAfter: number,\n ): number {\n return centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n true, // ofCurrent\n )\n },\n\n currentCentroidYOfTouchesChangedAfter(\n touchHistory: TouchHistory,\n touchesChangedAfter: number,\n ): number {\n return centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n true, // ofCurrent\n )\n },\n\n previousCentroidXOfTouchesChangedAfter(\n touchHistory: TouchHistory,\n touchesChangedAfter: number,\n ): number {\n return centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n false, // ofCurrent\n )\n },\n\n previousCentroidYOfTouchesChangedAfter(\n touchHistory: TouchHistory,\n touchesChangedAfter: number,\n ): number {\n return centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n false, // ofCurrent\n )\n },\n\n currentCentroidX(touchHistory: TouchHistory): number {\n return centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n true, // isXAxis\n true, // ofCurrent\n )\n },\n\n currentCentroidY(touchHistory: TouchHistory): number {\n return centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n false, // isXAxis\n true, // ofCurrent\n )\n },\n\n noCentroid,\n}\n\nexport default TouchHistoryMath\n"]}
|
package/dist/vite/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { Plugin } from "vite";
|
|
2
|
+
import { type AliasOverrides } from "../aliases/index.js";
|
|
3
|
+
export { CONFIGURABLE_ALIASES, DEFAULT_ALIASES, PLATFORM_ALIAS, } from "../aliases/index.js";
|
|
4
|
+
export type { AliasOverride, AliasOverrides, AliasPattern, AliasTable, CompiledAlias, } from "../aliases/index.js";
|
|
2
5
|
/** Options shared by the preset factory and the pure resolver helpers. */
|
|
3
6
|
export type PlatformResolutionOptions = {
|
|
4
7
|
/** Platform suffix priority, most specific first. Default: ["linux", "native"]. */
|
|
@@ -11,13 +14,14 @@ export type FileExists = (filePath: string) => boolean;
|
|
|
11
14
|
export declare const DEFAULT_PLATFORMS: readonly string[];
|
|
12
15
|
export declare const DEFAULT_EXTENSIONS: readonly string[];
|
|
13
16
|
/**
|
|
14
|
-
*
|
|
15
|
-
* `react-native
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* Applies the DEFAULT alias table (../aliases/index.ts) to one specifier:
|
|
18
|
+
* `react-native` and its subpaths onto `react-native-gtkx`, and the five
|
|
19
|
+
* package substitutions onto their compat subpaths. Returns null for every
|
|
20
|
+
* other specifier, including `react-native-gtkx` itself.
|
|
21
|
+
*
|
|
22
|
+
* Exported for tests and for apps driving vite by hand. The plugin does NOT
|
|
23
|
+
* call it — the plugin resolves through the table its own `aliases` option
|
|
24
|
+
* produced, so an app's deltas apply.
|
|
21
25
|
*/
|
|
22
26
|
export declare const rewriteReactNativeImport: (source: string) => string | null;
|
|
23
27
|
/** Splits a vite specifier into its path part and its `?query` suffix. */
|
|
@@ -48,7 +52,16 @@ export declare const platformCandidates: (base: string, options?: PlatformResolu
|
|
|
48
52
|
* import back to the default resolver.
|
|
49
53
|
*/
|
|
50
54
|
export declare const resolvePlatformSpecifier: (source: string, importer: string | undefined, exists: FileExists, options?: PlatformResolutionOptions) => string | null;
|
|
51
|
-
export type ReactNativeGtkxOptions = PlatformResolutionOptions
|
|
55
|
+
export type ReactNativeGtkxOptions = PlatformResolutionOptions & {
|
|
56
|
+
/**
|
|
57
|
+
* Deltas over the preset's package aliases, keyed by package name — a
|
|
58
|
+
* string target, a `{ pattern, replace }` rule, or `false` to drop one of
|
|
59
|
+
* ours so the real package loads. Identical semantics to the Metro
|
|
60
|
+
* preset's option of the same name: both compile the same table.
|
|
61
|
+
* Invalid entries throw here, while the config is being read.
|
|
62
|
+
*/
|
|
63
|
+
aliases?: AliasOverrides;
|
|
64
|
+
};
|
|
52
65
|
/**
|
|
53
66
|
* Vite plugin: aliases `react-native` (and subpaths) to `react-native-gtkx`
|
|
54
67
|
* and resolves Metro-style platform extensions
|