"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var get_plugin_reference_element_exports = {};
__export(get_plugin_reference_element_exports, {
  getReferenceElement: () => getReferenceElement
});
module.exports = __toCommonJS(get_plugin_reference_element_exports);
var import_tiptap = require("./../../../tiptap/index.js");
const getFirstNodeChildElement = (selectedDOM) => {
  if (!selectedDOM || !(selectedDOM instanceof HTMLElement)) {
    return null;
  }
  const ricosNodeFirstChild = selectedDOM?.querySelector?.("[data-hook~=ricos-node]")?.firstChild ?? null;
  if (!ricosNodeFirstChild || !(ricosNodeFirstChild instanceof HTMLElement)) {
    return null;
  }
  return ricosNodeFirstChild;
};
const getReferenceElement = (toolbar, tiptapEditor) => {
  if (!toolbar) {
    return null;
  }
  const resolveReferenceElement = toolbar.getReferenceElementResolver();
  if (resolveReferenceElement) {
    return resolveReferenceElement(tiptapEditor);
  }
  const selectedDOM = tiptapEditor.view.nodeDOM(tiptapEditor.state.selection.from);
  const firstNodeChild = getFirstNodeChildElement(selectedDOM);
  if (firstNodeChild) {
    return firstNodeChild;
  }
  return {
    getBoundingClientRect: () => {
      const { state, view } = tiptapEditor;
      const { from, to } = state.selection;
      return (0, import_tiptap.posToDOMRect)(view, from, to);
    }
  };
};
//# sourceMappingURL=get-plugin-reference-element.js.map
