import { Node } from "../../tiptap/Utils";
import { nodeInputRule, wrappingInputRule } from "../../commands";

const KUN_ICON_INPUT_REGEX = /kun-icon/;

export default class KunIconP extends Node {
  get name() {
    return "iconp";
  }

  get schema() {
    return {
      inline: true,
      group: "inline",
      draggable: true,
      attrs: {
        src: {
          default: "icon",
        },
      },
      toDOM: (node) => {
        console.log("node", node);
        return ["img", node.attrs, 0];
      },
      parseDOM: [
        {
          tag: "img[src1]",
          getAttrs: (dom) => {
            return {
              type: dom.getAttribute("type"),
            };
          },
        },
      ],
    };
  }

  // get schema() {
  //   return {
  //     // content: "inline*",
  //     group: "inline",
  //     inline: true,
  //     // group: "block",
  //     // defining: true,
  //     draggable: false,
  //     attrs: {
  //       iconType: {
  //         default: "comment",
  //       },
  //       iconWidth: {
  //         default: 16,
  //       },
  //       iconHeight: {
  //         default: 16,
  //       },
  //     },
  //     // parseDOM: [
  //     //   { tag: "kun-icon" },
  //     // ],
  //     parseDOM: [{
  //       tag: "kun-icon",
  //       getAttrs: (dom) => {
  //         const type = dom.getAttribute("iconType");
  //         if (type != null) {
  //           return {
  //             iconType: type,
  //           };
  //         }
  //         return false;
  //       },
  //     }],
  //     toDOM: (node) => ["kun-icon", {...node.attrs,
  //       iconType: "content",
  //       iconWidth: 18,
  //       iconHeight: 18,
  //     }, 0],
  //   };
  // }

  commands({ type }) {
    console.log("commands iconp");
    console.log(`commands iconp ${type}`, type);
    return (attrs) => (state, dispatch) => {
      const { selection } = state;
      const position = selection.$cursor ? selection.$cursor.pos : selection.$to.pos;
      const node = type.create(attrs);
      const transaction = state.tr.insert(position, node);
      dispatch(transaction);
    };
  }
}
