react-aptor
Version:
React API connector
39 lines (34 loc) • 1.36 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["react-aptor"] = {}, global.react));
})(this, (function (exports, react) { 'use strict';
function useAptor(ref, configuration, deps) {
if (deps === void 0) {
deps = [];
}
var _useState = react.useState(null),
instance = _useState[0],
setInstance = _useState[1];
var domRef = react.useRef(null);
var instantiate = configuration.instantiate,
destroy = configuration.destroy,
getAPI = configuration.getAPI,
params = configuration.params;
react.useEffect(function () {
var instanceReference = instantiate(domRef.current, params);
setInstance(instanceReference);
return function () {
if (destroy) destroy(instanceReference, params);
};
}, deps);
var api = react.useMemo(function () {
return getAPI(instance, params);
}, [instance]);
react.useImperativeHandle(ref, api, [api]);
return domRef;
}
exports["default"] = useAptor;
exports.useAptor = useAptor;
Object.defineProperty(exports, '__esModule', { value: true });
}));