react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
68 lines (55 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.makeViewDescriptorsSet = makeViewDescriptorsSet;
exports.makeViewsRefSet = makeViewsRefSet;
var _react = require("react");
var _core = require("./core");
function makeViewDescriptorsSet() {
const sharableViewDescriptors = (0, _core.makeMutable)([]);
const data = {
sharableViewDescriptors,
add: item => {
sharableViewDescriptors.modify(descriptors => {
'worklet';
const index = descriptors.findIndex(descriptor => descriptor.tag === item.tag);
if (index !== -1) {
descriptors[index] = item;
} else {
descriptors.push(item);
}
return descriptors;
});
},
remove: viewTag => {
sharableViewDescriptors.modify(descriptors => {
'worklet';
const index = descriptors.findIndex(descriptor => descriptor.tag === viewTag);
if (index !== -1) {
descriptors.splice(index, 1);
}
return descriptors;
});
}
};
return data;
}
function makeViewsRefSet() {
const ref = (0, _react.useRef)(null);
if (ref.current === null) {
const data = {
items: new Set(),
add: item => {
if (data.items.has(item)) return;
data.items.add(item);
},
remove: item => {
data.items.delete(item);
}
};
ref.current = data;
}
return ref.current;
}
//# sourceMappingURL=ViewDescriptorsSet.js.map