react-native-gesture-handler
Version:
Declarative API exposing native platform touch and gesture system to React Native
40 lines (30 loc) • 1.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = findNodeHandle;
var _utils = require("./web/utils");
function findNodeHandle(viewRef) {
// Old API assumes that child handler is HTMLElement.
// However, if we nest handlers, we will get ref to another handler.
// In that case, we want to recursively call findNodeHandle with new handler viewTag (which can also be ref to another handler).
if ((viewRef === null || viewRef === void 0 ? void 0 : viewRef.viewTag) !== undefined) {
return findNodeHandle(viewRef.viewTag);
}
if (viewRef instanceof Element) {
if (viewRef.style.display === 'contents') {
return findNodeHandle(viewRef.firstChild);
}
return viewRef;
}
if ((0, _utils.isRNSVGElement)(viewRef)) {
return viewRef.elementRef.current;
} // In new API, we receive ref object which `current` field points to wrapper `div` with `display: contents;`.
// We want to return the first descendant (in DFS order) that doesn't have this property.
let element = viewRef === null || viewRef === void 0 ? void 0 : viewRef.current;
while (element && element.style.display === 'contents') {
element = element.firstChild;
}
return element;
}
//# sourceMappingURL=findNodeHandle.web.js.map
;