{"version":3,"file":"clipboard.cjs","sources":["../../../src/slate-plugins/clipboard.ts"],"sourcesContent":["import { Plugin } from 'slate-react';\n\nconst getCopiedText = (textBlocks: string[], startOffset: number, endOffset: number) => {\n  if (!textBlocks.length) {\n    return undefined;\n  }\n\n  const excludingLastLineLength = textBlocks.slice(0, -1).join('').length + textBlocks.length - 1;\n  return textBlocks.join('\\n').slice(startOffset, excludingLastLineLength + endOffset);\n};\n\n// Remove unicode special symbol - byte order mark (BOM), U+FEFF.\nconst removeBom = (str: string | undefined): string | undefined => {\n  return str?.replace(/[\\uFEFF]/g, '');\n};\n\nexport function ClipboardPlugin(): Plugin {\n  const clipboardPlugin: Plugin = {\n    onCopy(event, editor, next) {\n      event.preventDefault();\n\n      const { document, selection } = editor.value;\n      const {\n        start: { offset: startOffset },\n        end: { offset: endOffset },\n      } = selection;\n      const selectedBlocks = document\n        .getLeafBlocksAtRange(selection)\n        .toArray()\n        .map((block) => block.text);\n\n      const copiedText = removeBom(getCopiedText(selectedBlocks, startOffset, endOffset));\n      if (copiedText && event.clipboardData) {\n        event.clipboardData.setData('Text', copiedText);\n      }\n\n      return true;\n    },\n\n    onPaste(event, editor, next) {\n      event.preventDefault();\n      if (event.clipboardData) {\n        const pastedValue = removeBom(event.clipboardData.getData('Text'));\n        const lines = pastedValue?.split('\\n');\n\n        if (lines && lines.length) {\n          editor.insertText(lines[0]);\n          for (const line of lines.slice(1)) {\n            editor.splitBlock().insertText(line);\n          }\n        }\n      }\n\n      return true;\n    },\n  };\n\n  return {\n    ...clipboardPlugin,\n    onCut(event, editor, next) {\n      clipboardPlugin.onCopy!(event, editor, next);\n      editor.deleteAtRange(editor.value.selection);\n\n      return true;\n    },\n  };\n}\n"],"names":[],"mappings":";;;;;AAEA,MAAM,aAAA,GAAgB,CAAC,UAAA,EAAsB,WAAA,EAAqB,SAAA,KAAsB;AACtF,EAAA,IAAI,CAAC,WAAW,MAAA,EAAQ;AACtB,IAAA,OAAO,KAAA,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,uBAAA,GAA0B,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAAE,MAAA,GAAS,UAAA,CAAW,MAAA,GAAS,CAAA;AAC9F,EAAA,OAAO,WAAW,IAAA,CAAK,IAAI,EAAE,KAAA,CAAM,WAAA,EAAa,0BAA0B,SAAS,CAAA;AACrF,CAAA;AAGA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgD;AACjE,EAAA,OAAO,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,QAAQ,WAAA,EAAa,EAAA,CAAA;AACnC,CAAA;AAEO,SAAS,eAAA,GAA0B;AACxC,EAAA,MAAM,eAAA,GAA0B;AAAA,IAC9B,MAAA,CAAO,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM;AAC1B,MAAA,KAAA,CAAM,cAAA,EAAe;AAErB,MAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,MAAA,CAAO,KAAA;AACvC,MAAA,MAAM;AAAA,QACJ,KAAA,EAAO,EAAE,MAAA,EAAQ,WAAA,EAAY;AAAA,QAC7B,GAAA,EAAK,EAAE,MAAA,EAAQ,SAAA;AAAU,OAC3B,GAAI,SAAA;AACJ,MAAA,MAAM,cAAA,GAAiB,QAAA,CACpB,oBAAA,CAAqB,SAAS,CAAA,CAC9B,OAAA,EAAQ,CACR,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,IAAI,CAAA;AAE5B,MAAA,MAAM,aAAa,SAAA,CAAU,aAAA,CAAc,cAAA,EAAgB,WAAA,EAAa,SAAS,CAAC,CAAA;AAClF,MAAA,IAAI,UAAA,IAAc,MAAM,aAAA,EAAe;AACrC,QAAA,KAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,MAAA,EAAQ,UAAU,CAAA;AAAA,MAChD;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,OAAA,CAAQ,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM;AAC3B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAI,MAAM,aAAA,EAAe;AACvB,QAAA,MAAM,cAAc,SAAA,CAAU,KAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAC,CAAA;AACjE,QAAA,MAAM,KAAA,GAAQ,2CAAa,KAAA,CAAM,IAAA,CAAA;AAEjC,QAAA,IAAI,KAAA,IAAS,MAAM,MAAA,EAAQ;AACzB,UAAA,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAC1B,UAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAG;AACjC,YAAA,MAAA,CAAO,UAAA,EAAW,CAAE,UAAA,CAAW,IAAI,CAAA;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,eAAA;AAAA,IACH,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM;AACzB,MAAA,eAAA,CAAgB,MAAA,CAAQ,KAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAC3C,MAAA,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA;AAE3C,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACF;AACF;;;;"}