import _extends from "@babel/runtime/helpers/esm/extends";
import Overlay from "../../overlay";
import { context } from "./context";
import { mount } from "../../utils/functional";
import { removeNode } from "../../utils/dom/node";
export var OverlayConfig = {
  zIndex: Number,
  className: String,
  customStyle: String | Object
};
var defaultConfig = {
  className: "",
  customStyle: {}
};

function mountOverlay(vm) {
  return mount(Overlay, {
    on: {
      // close popup when overlay clicked & closeOnClickOverlay is true
      click: function click() {
        vm.$emit("click-overlay");

        if (vm.closeOnClickOverlay) {
          if (vm.onClickOverlay) {
            vm.onClickOverlay();
          } else {
            vm.close();
          }
        }
      }
    }
  });
}

export function updateOverlay(vm) {
  var item = context.find(vm);

  if (item) {
    var el = vm.$el;
    var config = item.config,
        overlay = item.overlay;

    if (el && el.parentNode) {
      el.parentNode.insertBefore(overlay.$el, el);
    }

    _extends(overlay, defaultConfig, config, {
      show: true
    });
  }
}
export function openOverlay(vm, config) {
  var item = context.find(vm);

  if (item) {
    item.config = config;
  } else {
    var overlay = mountOverlay(vm);
    context.stack.push({
      vm: vm,
      config: config,
      overlay: overlay
    });
  }

  updateOverlay(vm);
}
export function closeOverlay(vm) {
  var item = context.find(vm);

  if (item) {
    item.overlay.show = false;
  }
}
export function removeOverlay(vm) {
  var item = context.find(vm);

  if (item) {
    removeNode(item.overlay.$el);
  }
}