import E from 'wangeditor';
import { fetch, apis } from '@/utils/request';

export default (elm, config) => {
  const editor = new E(elm);

  // 取消自动 focus
  editor.config.focus = false;

  // 触发 change
  // editor.config.onchange = onchange;

  editor.config.zIndex = 100;

  // 自定义图片上传
  editor.config.uploadImgMaxLength = 1;
  editor.config.customUploadImg = (files, insert)=> {
    if (!files.length) return
    
    const data = new FormData()
    data.append('file', files[0])

    fetch(apis.image.upload)({data}).then(insert)
  }
  // editor.config.customUploadImg = (files, insert) => {
  //   if (!files.length) return;

  //   uploadImage(files[0]).then(insert);
  // };

  // 扩展预览按钮
  // editor.menus.extend('previewMenu', PreviewMenu)
  // PreviewMenu.preview = (html) => setPreview(true)

  // 配置菜单
  editor.config.menus = [
    'head', // 标题
    'bold', // 粗体
    // 'fontSize', // 字号
    // 'fontName', // 字体
    'italic', // 斜体
    'underline', // 下划线
    // 'strikeThrough', // 删除线
    // 'foreColor', // 文字颜色
    'backColor', // 背景颜色
    'list', // 列表
    'justify', // 对齐方式
    'quote', // 引用
    'image', // 插入图片
    'undo', // 撤销
    'redo', // 重复
    // 'previewMenu'
  ];

  // 过滤 word 字符
  editor.config.pasteFilterStyle = false;
  editor.config.pasteTextHandle = (ctt) => {
    const regs = [
      /<!--\[if [\s\S]*?endif\]-->/gi,
      /<[a-zA-Z0-9]+:[^>]+>[^>]*<\/[a-zA-Z0-9]+:[^>]+>/gi,
      /<[a-zA-Z0-9]+:[^>]+\/>/gi,
      /<style>[\s\S]*?<\/style>/gi,
      new RegExp('\u2029', 'ig'), // 替换word分隔符 序号 8233
    ];

    return regs.reduce((acc, reg) => {
      return acc.replace(reg, '');
    }, ctt);
  };

  Object.assign(editor.config, config || {})

  editor.create();
  // editor.$textElem.attr('contenteditable', props.contenteditable !== false);
  return {
    editor,
    updateHtml: (html) => editor.txt.html(html)
  };
}
