{"version":3,"file":"toolbar-config.mjs","sources":["../../../../../../packages/components/editor-md/src/toolbar-config.ts"],"sourcesContent":["import {\n  BOLD_ICON,\n  CODE_ICON,\n  COLOR_ICON,\n  FILE_ICON,\n  FONT_SIZE_ICON,\n  FULLSCREEN_CONTRACT_ICON,\n  FULLSCREEN_EXPAND_ICON,\n  H1_ICON,\n  H2_ICON,\n  IMAGE_ICON,\n  ITALIC_ICON,\n  LINK_ICON,\n  LIST_CHECK_ICON,\n  LIST_ORDERED_ICON,\n  LIST_UNORDERED_ICON,\n  REDO_ICON,\n  STRIKE_ICON,\n  TABLE_ICON,\n  UNDERLINE_ICON,\n  UNDO_ICON,\n} from './icons-config'\n\nexport interface IToolbarItemConfig {\n  id: string\n  name?: string\n  exitName?: string\n  type?: 'button' | 'dropDown'\n  icon?: string\n  exitIcon?: string\n  template?: any\n  component?: any\n  shortKey?: string\n  shortKeyWithCode?: string\n  params?: { [key: string]: any }\n  handler?(editor?: any, params?: any): void\n}\n\nclass ToolBarHandler {\n  static undo = (editor: any): void => {\n    editor.undo()\n  }\n\n  static redo = (editor: any): void => {\n    editor.redo()\n  }\n\n  static bold = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n\n    editor.replaceSelection(`**${selection}**`)\n\n    editor.focus()\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 2)\n    }\n  }\n\n  static italic = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n\n    editor.replaceSelection(`*${selection}*`)\n    editor.focus()\n\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 1)\n    }\n  }\n\n  static h1 = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.focus()\n\n    if (cursor.ch !== 0) {\n      editor.setCursor(cursor.line, 0)\n      editor.replaceSelection('# ')\n    } else {\n      editor.replaceSelection(`# ${selection}`)\n    }\n  }\n\n  static h2 = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.focus()\n\n    if (cursor.ch !== 0) {\n      editor.setCursor(cursor.line, 0)\n      editor.replaceSelection('## ')\n    } else {\n      editor.replaceSelection(`## ${selection}`)\n    }\n  }\n\n  static ul = (editor: any): void => {\n    const selection = editor.getSelection()\n    editor.focus()\n    if (selection === '') {\n      editor.replaceSelection(`- ${selection}`)\n    } else {\n      const selectionText = selection.split('\\n')\n\n      for (let i = 0, len = selectionText.length; i < len; i++) {\n        selectionText[i] =\n          selectionText[i] === '' ? '' : `- ${selectionText[i]}`\n      }\n\n      editor.replaceSelection(selectionText.join('\\n'))\n    }\n  }\n\n  static ol = (editor: any): void => {\n    const selection = editor.getSelection()\n    editor.focus()\n    if (selection === '') {\n      editor.replaceSelection(`1. ${selection}`)\n    } else {\n      const selectionText = selection.split('\\n')\n\n      for (let i = 0, len = selectionText.length; i < len; i++) {\n        selectionText[i] =\n          selectionText[i] === '' ? '' : `${i + 1}. ${selectionText[i]}`\n      }\n\n      editor.replaceSelection(selectionText.join('\\n'))\n    }\n  }\n\n  static underline = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.focus()\n    editor.replaceSelection(`<ins>${selection}</ins>`)\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 5)\n    }\n  }\n\n  static strike = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.replaceSelection(`~~${selection}~~`)\n    editor.focus()\n\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 2)\n    }\n  }\n\n  static checkList = (editor: any): void => {\n    const selection = editor.getSelection()\n    editor.focus()\n    if (selection === '') {\n      editor.replaceSelection(`[ ] ${selection}`)\n    } else {\n      const selectionText = selection.split('\\n')\n\n      for (let i = 0, len = selectionText.length; i < len; i++) {\n        selectionText[i] =\n          selectionText[i] === '' ? '' : `[ ] ${selectionText[i]}`\n      }\n\n      editor.replaceSelection(selectionText.join('\\n'))\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  static font = (): void => {}\n\n  static link = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.focus()\n    editor.replaceSelection(`[${selection}](url)`)\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 1)\n    }\n  }\n\n  static image = (editor: any, params?: any): void => {\n    const stopEventPropagation = (e: any): void => {\n      e.stopPropagation()\n    }\n    if (typeof document !== 'undefined' && params.imageUploadToServer) {\n      let imageUploader: any = document.querySelector(\n        '#markdown_image_upload_input'\n      )\n      if (imageUploader) {\n        imageUploader.removeEventListener('click', stopEventPropagation)\n        document.body.removeChild(imageUploader)\n      }\n      imageUploader = document.createElement('input')\n      imageUploader.addEventListener('click', stopEventPropagation)\n      imageUploader.setAttribute('type', 'file')\n      imageUploader.setAttribute(\n        'accept',\n        'image/bmp,image/gif,image/jpeg,image/jpg,image/png,image/tiff'\n      )\n      imageUploader.id = 'markdown_image_upload_input'\n      imageUploader.style.display = 'none'\n      document.body.appendChild(imageUploader)\n      const callback = ({ name, imgUrl, title }: any) => {\n        editor.focus()\n        editor.replaceSelection(`![${name}](${imgUrl} '${title}')`)\n      }\n      imageUploader.onchange = (e: any) => {\n        const file = e.target['files'][0]\n        params.imageUpload({ file, callback })\n      }\n      imageUploader.click()\n    } else {\n      const cursor = editor.getCursor()\n      const selection = editor.getSelection()\n      editor.focus()\n      editor.replaceSelection(`![${selection}](src 'title')`)\n      if (selection === '') {\n        editor.setCursor(cursor.line, cursor.ch + 2)\n      }\n    }\n  }\n\n  static file = (editor: any, params?: any): void => {\n    const stopEventPropagation = (e: any): void => {\n      e.stopPropagation()\n    }\n\n    let fileUploader: any = document.querySelector(\n      '#markdown_file_upload_input'\n    )\n    if (fileUploader) {\n      fileUploader.removeEventListener('click', stopEventPropagation)\n      document.body.removeChild(fileUploader)\n    }\n    fileUploader = document.createElement('input')\n    fileUploader.setAttribute('type', 'file')\n    fileUploader.addEventListener('click', stopEventPropagation)\n    fileUploader.id = 'markdown_file_upload_input'\n    fileUploader.style.display = 'none'\n    document.body.appendChild(fileUploader)\n\n    const callback = ({ name, url, title, isImage }: any) => {\n      let showAsImage = false\n\n      if (isImage !== undefined) {\n        showAsImage = isImage\n      } else if (url) {\n        const imageFilter = /^(bmp|gif|jpeg|jpg|png|tiff)$/i\n        showAsImage = imageFilter.test(url.split('.').pop())\n      }\n\n      editor.focus()\n      if (showAsImage) {\n        editor.replaceSelection(`![${name}](${url} '${title}')`)\n      } else {\n        editor.replaceSelection(`[${name}](${url} '${title}')`)\n      }\n    }\n\n    fileUploader.onchange = (e: any) => {\n      const file = e.target['files'][0]\n      params.fileUpload.emit({ file, callback })\n    }\n    fileUploader.click()\n  }\n\n  static code = (editor: any): void => {\n    const cursor = editor.getCursor()\n    const selection = editor.getSelection()\n    editor.replaceSelection(`\\`${selection}\\``)\n    editor.focus()\n\n    if (selection === '') {\n      editor.setCursor(cursor.line, cursor.ch + 1)\n    }\n  }\n\n  static table = (editor: any) => {\n    const table = `\\n|  |  |  |\\n|--|--|--|\\n|  |  |  |`\n    editor.replaceSelection(table)\n  }\n\n  static fullscreen = (editor: any) => {\n    editor.focus()\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  static color = (): void => {}\n}\n\nexport const GET_CTRL_KEY = () => {\n  if (typeof window !== 'undefined') {\n    return navigator?.platform?.indexOf('Mac') !== -1 ? '⌘' : 'Ctrl'\n  }\n}\nexport const GET_ALT_KEY = () => {\n  if (typeof window !== 'undefined') {\n    return navigator?.platform?.indexOf('Mac') !== -1 ? '⌥' : 'Alt'\n  }\n}\n\nexport const DEFAULT_TOOLBARS: Record<string, IToolbarItemConfig> = {\n  undo: {\n    id: 'undo',\n    name: 'undo',\n    type: 'button',\n    icon: UNDO_ICON,\n    shortKey: `${GET_CTRL_KEY()}+Z`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+90`,\n    handler: ToolBarHandler.undo,\n  },\n  redo: {\n    id: 'redo',\n    name: 'redo',\n    type: 'button',\n    icon: REDO_ICON,\n    shortKey: `${GET_CTRL_KEY()}+Y`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+89`,\n    handler: ToolBarHandler.redo,\n  },\n  bold: {\n    id: 'bold',\n    name: 'bold',\n    type: 'button',\n    icon: BOLD_ICON,\n    shortKey: `${GET_CTRL_KEY()}+B`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+66`,\n    handler: ToolBarHandler.bold,\n  },\n  italic: {\n    id: 'italic',\n    name: 'italic',\n    type: 'button',\n    icon: ITALIC_ICON,\n    shortKey: `${GET_CTRL_KEY()}+I`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+73`,\n    handler: ToolBarHandler.italic,\n  },\n  strike: {\n    id: 'strike',\n    name: 'strike',\n    type: 'button',\n    icon: STRIKE_ICON,\n    shortKey: `${GET_CTRL_KEY()}+D`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+68`,\n    handler: ToolBarHandler.strike,\n  },\n  h1: {\n    id: 'h1',\n    name: 'h1',\n    type: 'button',\n    icon: H1_ICON,\n    shortKey: `${GET_CTRL_KEY()}+1`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+49`,\n    handler: ToolBarHandler.h1,\n  },\n  h2: {\n    id: 'h2',\n    name: 'h2',\n    type: 'button',\n    icon: H2_ICON,\n    shortKey: `${GET_CTRL_KEY()}+2`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+50`,\n    handler: ToolBarHandler.h2,\n  },\n  ul: {\n    id: 'ul',\n    name: 'unorderedlist',\n    type: 'button',\n    icon: LIST_UNORDERED_ICON,\n    shortKey: `${GET_CTRL_KEY()}+U`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+85`,\n    handler: ToolBarHandler.ul,\n  },\n  ol: {\n    id: 'ol',\n    name: 'orderedlist',\n    type: 'button',\n    icon: LIST_ORDERED_ICON,\n    shortKey: `${GET_CTRL_KEY()}+O`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+79`,\n    handler: ToolBarHandler.ol,\n  },\n  checklist: {\n    id: 'checklist',\n    name: 'checklist',\n    type: 'button',\n    icon: LIST_CHECK_ICON,\n    shortKey: `${GET_CTRL_KEY()}+${GET_ALT_KEY()}+C`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+${GET_ALT_KEY()}+67`,\n    handler: ToolBarHandler.checkList,\n  },\n  underline: {\n    id: 'underline',\n    name: 'underline',\n    type: 'button',\n    icon: UNDERLINE_ICON,\n    shortKey: `${GET_CTRL_KEY()}+R`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+82`,\n    handler: ToolBarHandler.underline,\n  },\n  font: {\n    id: 'font',\n    name: 'size',\n    type: 'dropDown',\n    icon: FONT_SIZE_ICON,\n    component: 'FontSize',\n    handler: ToolBarHandler.font,\n  },\n  link: {\n    id: 'link',\n    name: 'link',\n    type: 'button',\n    icon: LINK_ICON,\n    shortKey: `${GET_CTRL_KEY()}+L`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+76`,\n    handler: ToolBarHandler.link,\n  },\n  image: {\n    id: 'image',\n    name: 'image',\n    type: 'button',\n    icon: IMAGE_ICON,\n    shortKey: `${GET_CTRL_KEY()}+G`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+71`,\n    params: { imageUploadToServer: false },\n    handler: ToolBarHandler.image,\n  },\n  file: {\n    id: 'file',\n    name: 'file',\n    type: 'button',\n    icon: FILE_ICON,\n    params: {},\n    shortKey: `${GET_CTRL_KEY()}+F`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+70`,\n    handler: ToolBarHandler.file,\n  },\n  code: {\n    id: 'code',\n    name: 'code',\n    type: 'button',\n    icon: CODE_ICON,\n    shortKey: `${GET_CTRL_KEY()}+K`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+75`,\n    handler: ToolBarHandler.code,\n  },\n  table: {\n    id: 'table',\n    name: 'table',\n    type: 'button',\n    icon: TABLE_ICON,\n    shortKey: `${GET_CTRL_KEY()}+${GET_ALT_KEY()}+T`,\n    shortKeyWithCode: `${GET_CTRL_KEY()}+${GET_ALT_KEY()}+84`,\n    handler: ToolBarHandler.table,\n  },\n  fullscreen: {\n    id: 'fullscreen',\n    name: 'fullscreen',\n    exitName: 'exit-fullscreen',\n    type: 'button',\n    icon: FULLSCREEN_EXPAND_ICON,\n    exitIcon: FULLSCREEN_CONTRACT_ICON,\n    handler: ToolBarHandler.fullscreen,\n  },\n  color: {\n    id: 'color',\n    name: 'color&background',\n    type: 'dropDown',\n    icon: COLOR_ICON,\n    component: 'FontColor',\n    handler: ToolBarHandler.color,\n  },\n}\n\nexport const DEFAULT_TOOLBAR_CONFIG = [\n  ['undo', 'redo'],\n  ['h1', 'h2', 'bold', 'italic', 'strike', 'underline', 'color', 'font'],\n  ['ul', 'ol', 'checklist', 'code', 'link', 'image', 'table'],\n  'fullscreen',\n]\n\nexport const FONT_COLORS = [\n  '#000000',\n  '#e60000',\n  '#ff9900',\n  '#ffff00',\n  '#008a00',\n  '#0066cc',\n  '#9933ff',\n  '#ffffff',\n  '#facccc',\n  '#ffebcc',\n  '#ffffcc',\n  '#cce8cc',\n  '#cce0f5',\n  '#ebd6ff',\n  '#bbbbbb',\n  '#f06666',\n  '#ffc266',\n  '#ffff66',\n  '#66b966',\n  '#66a3e0',\n  '#c285ff',\n  '#888888',\n  '#a10000',\n  '#b26b00',\n  '#b2b200',\n  '#006100',\n  '#0047b2',\n  '#6b24b2',\n  '#444444',\n  '#5c0000',\n  '#663d00',\n  '#666600',\n  '#003700',\n  '#002966',\n  '#3d1466',\n]\n\nexport const FONT_SIZE_LIST = [12, 14, 16, 18, 20, 24, 36, 48].map((item) => ({\n  name: `${item}px`,\n  value: item,\n}))\n"],"names":[],"mappings":"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"}