import {hiprint} from 'sv-print';
// 或 import { hiprint } from "@sv-print/hiprint"

export default function (options) {
  // 注意: 这里的 context 是 内部回调的.  
  // 上面的 options 才是我们自己 传的 参数
  var addElementTypes = function (context) {
    // 移除 旧的 testModule "元素"类型, 以避免重复
    context.removePrintElementTypes("testModule");
    // 添加 testModule "元素"类型
    context.addPrintElementTypes("testModule", [
      // PrintElementTypeGroup 分组 可添加多个
      new hiprint.PrintElementTypeGroup("常规", [
        {
          tid: "testModule.text", // 唯一 key
          type: "text", // 元素类型
          title: "文本", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: options.title || "文本", // 标题, "拖进设计器才会显示"
            hideTitle: true, // 隐藏标题, "拖进设计器才会显示, 优先级高于 options 的, "无法彻底删除"
            styler: `function(value, options, target,templateData,paperNo,rootData){ return { wordBreak:'normal', whiteSpace:'normal' }; }`
          },
        },
        {
          tid: "testModule.longText", // 唯一 key
          type: "longText", // 元素类型
          title: "长文本", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: options.title || "长文本", // 标题, "拖进设计器才会显示"
            width: 120, // 宽度
            hideTitle: true, // 隐藏标题, "拖进设计器才会显示, 优先级高于 options 的, "无法彻底删除"
            styler: `function(value, options, target,templateData,paperNo,rootData){ return { wordBreak:'normal', whiteSpace:'normal' }; }`
          },
        },
        {
          tid: "testModule.image", // 唯一 key
          type: "image", // 元素类型
          title: "图片", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: options.title || "图片", // 标题, "拖进设计器才会显示"
            width: 50, // 宽度
            height: 50, // 高度
            hideTitle: true, // 隐藏标题, "拖进设计器才会显示, 优先级高于 options 的, "无法彻底删除"
          },
        },
        {
          "title": "表格",
          "tid": "testModule.table",
          "type": "table",
          "editable": true,
          "columnDisplayEditable": true,
          "columnDisplayIndexEditable": true,
          "columnTitleEditable": true,
          "columnResizable": true,
          "columnAlignEditable": true,
          "columns": [
            [
              {
                  "id": 4,
                  "width": 85.25,
                  "rowspan": 1,
                  "colspan": 1,
                  "checked": true
              },
              {
                  "id": 5,
                  "width": 85.25,
                  "rowspan": 1,
                  "colspan": 1,
                  "checked": true
              }
            ]
          ],
          "groupFields": [],
          "isEnableEditField": true,
          "isEnableContextMenu": true,
          "isEnableInsertRow": true,
          "isEnableDeleteRow": true,
          "isEnableInsertColumn": true,
          "isEnableDeleteColumn": true,
          "isEnableMergeCell": true,
          "columnObj": {
            "4": {
                "id": 4,
                "width": 85.25,
                "rowspan": 1,
                "colspan": 1,
                "checked": true
            },
            "5": {
                "id": 5,
                "width": 85.25,
                "rowspan": 1,
                "colspan": 1,
                "checked": true
            }
          },
          "options": {
            "hideTitle": true,
          }
        },
        {
            "title": "html",
            "tid": "testModule.html",
            "type": "html",
            "options": {
              "hideTitle": true,
              "formatter": "function(data, options) {\n                return '<div style=\"height:50pt;width:50pt;background:red;border-radius: 50%;\"></div>';\n              }"
            }
        },
        {
            "title": "分页符",
            "tid": "testModule.pageBreak",
            "type": "text",
            "options": {
              "hideTitle": true,
              "color": "#ff0000",
              "textAlign": "center",
              "pageBreak": true,
              "showInPage": "none"
            }
        }
      ]),
      new hiprint.PrintElementTypeGroup("条码二维码", [
         {
          "title": "barcode",
          "tid": "testModule.barcode",
          "type": "text",
          "options": {
            "textType": "barcode",
            "width": 100,
            "height": 30,
            "hideTitle": true,
            "testData": "1234567890"
          }
        },
        {
          "title": "qrcode",
          "tid": "testModule.qrcode",
          "type": "text",
          "options": {
            "textType": "qrcode",
            "width": 50,
            "height": 50,
            "hideTitle": true
          }
        },
        {
          "title": "条码",
          "tid": "testModule.barcode(bwip)",
          "type": "barcode",
          "options": {
            "width": 100,
            "height": 30,
            "textAlign": "center",
            "hideTitle": true,
            "fontSize": "6pt",
          }
        },
        {
          "title": "二维码",
          "tid": "testModule.qrcode(bwip)",
          "type": "qrcode",
          "options": {
            "width": 50,
            "height": 50,
            "textAlign": "center",
            "hideTitle": true
          }
        }
      ]),
      // 辅助元素分组, 可添加多个
      new hiprint.PrintElementTypeGroup("辅助", [
        {
          "title": "横线",
          "tid": "testModule.hline",
          "type": "hline",
          "options": {
            "hideTitle": true
          }
        },
        {
          "title": "竖线",
          "tid": "testModule.vline",
          "type": "vline",
          "options": {
            "hideTitle": true
          }
        },
        {
          "title": "矩形",
          "tid": "testModule.rect",
          "type": "rect",
          "options": {
            "hideTitle": true
          }
        },
        {
          "title": "椭圆",
          "tid": "testModule.oval",
          "type": "oval",
          "options": {
            "hideTitle": true
          }
        },
      ]),
    ]);
  };
  return {
    addElementTypes: addElementTypes,
  };
};