@legendapp/list
Version:
Legend List is a drop-in replacement for FlatList with much better performance and supporting dynamically sized items.
59 lines (50 loc) • 1.74 kB
JavaScript
;
var list = require('@legendapp/list');
var React = require('react');
var Animated = require('react-native-reanimated');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
var Animated__default = /*#__PURE__*/_interopDefault(Animated);
// src/reanimated.tsx
// src/helpers.ts
function isFunction(obj) {
return typeof obj === "function";
}
// src/useCombinedRef.ts
var useCombinedRef = (...refs) => {
const callback = React.useCallback((element) => {
for (const ref of refs) {
if (!ref) {
continue;
}
if (isFunction(ref)) {
ref(element);
} else {
ref.current = element;
}
}
}, refs);
return callback;
};
// src/reanimated.tsx
var LegendListForwardedRef = React__default.default.forwardRef(function LegendListForwardedRef2(props, ref) {
const { refLegendList, ...rest } = props;
return /* @__PURE__ */ React__default.default.createElement(
list.LegendList,
{
refScrollView: ref,
ref: (r) => {
refLegendList(r);
},
...rest
}
);
});
var AnimatedLegendListComponent = Animated__default.default.createAnimatedComponent(LegendListForwardedRef);
var AnimatedLegendList = React__default.default.forwardRef(function AnimatedLegendList2(props, ref) {
const { refScrollView, ...rest } = props;
const refLegendList = React__default.default.useRef(null);
const combinedRef = useCombinedRef(refLegendList, ref);
return /* @__PURE__ */ React__default.default.createElement(AnimatedLegendListComponent, { refLegendList: combinedRef, ref: refScrollView, ...rest });
});
exports.AnimatedLegendList = AnimatedLegendList;