@shopify/react-native-skia
Version:
High-performance React Native Graphics using Skia
51 lines (46 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRectBuffer = exports.useRSXformBuffer = exports.usePointBuffer = exports.useColorBuffer = void 0;
var _react = require("react");
var _skia = require("../../skia");
var _interpolators = require("./interpolators");
var _ReanimatedProxy = _interopRequireDefault(require("./ReanimatedProxy"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const useBufferValue = (size, bufferInitializer) => {
return (0, _react.useMemo)(() => _ReanimatedProxy.default.makeMutable(new Array(size).fill(0).map(bufferInitializer)),
// eslint-disable-next-line react-hooks/exhaustive-deps
[size]);
};
const useBuffer = (size, bufferInitializer, modifier) => {
var _mod$__closure;
const values = useBufferValue(size, bufferInitializer);
const mod = modifier;
const deps = [size, ...Object.values((_mod$__closure = mod.__closure) !== null && _mod$__closure !== void 0 ? _mod$__closure : {})];
const mapperId = _ReanimatedProxy.default.startMapper(() => {
"worklet";
values.value.forEach((val, index) => {
modifier(val, index);
});
(0, _interpolators.notifyChange)(values);
}, deps);
(0, _react.useEffect)(() => {
return () => {
_ReanimatedProxy.default.stopMapper(mapperId);
};
}, [mapperId]);
return values;
};
const useRectBuffer = (size, modifier) => useBuffer(size, () => _skia.Skia.XYWHRect(0, 0, 0, 0), modifier);
// Usage for RSXform Buffer
exports.useRectBuffer = useRectBuffer;
const useRSXformBuffer = (size, modifier) => useBuffer(size, () => _skia.Skia.RSXform(1, 0, 0, 0), modifier);
// Usage for Point Buffer
exports.useRSXformBuffer = useRSXformBuffer;
const usePointBuffer = (size, modifier) => useBuffer(size, () => _skia.Skia.Point(0, 0), modifier);
// Usage for Color Buffer
exports.usePointBuffer = usePointBuffer;
const useColorBuffer = (size, modifier) => useBuffer(size, () => _skia.Skia.Color("black"), modifier);
exports.useColorBuffer = useColorBuffer;
//# sourceMappingURL=buffers.js.map