react-aptor
Version:
React API connector
39 lines (35 loc) • 1.14 kB
JavaScript
System.register(['react'], (function (exports) {
'use strict';
var useState, useRef, useEffect, useMemo, useImperativeHandle;
return {
setters: [function (module) {
useState = module.useState;
useRef = module.useRef;
useEffect = module.useEffect;
useMemo = module.useMemo;
useImperativeHandle = module.useImperativeHandle;
}],
execute: (function () {
exports({
default: useAptor,
useAptor: useAptor
});
function useAptor(ref, configuration, deps = []) {
const [instance, setInstance] = useState(null);
const domRef = useRef(null);
const { instantiate, destroy, getAPI, params } = configuration;
useEffect(() => {
const instanceReference = instantiate(domRef.current, params);
setInstance(instanceReference);
return () => {
if (destroy)
destroy(instanceReference, params);
};
}, deps);
const api = useMemo(() => getAPI(instance, params), [instance]);
useImperativeHandle(ref, api, [api]);
return domRef;
}
})
};
}));