'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var react = require('react');

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;
