{"version":3,"file":"attachment-transformer.cjs","sources":["../../src/attachment/attachment-transformer.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n  HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n  interface Commands<ReturnType> {\n    attachment: {\n      setAttachment: (attachment) => ReturnType;\n    };\n  }\n}\n\nexport const AttachmentTransformer = Node.create<AttachmentOptions>({\n  name: 'attachments',\n  content: '',\n  marks: '',\n  group: 'inline',\n  inline: true,\n  selectable: true,\n  atom: true,\n  draggable: true,\n\n  addOptions() {\n    return {\n      HTMLAttributes: {\n        class: 'attachments',\n      },\n    };\n  },\n\n  parseHTML() {\n    return [{ tag: 'div[class=attachments]' }];\n  },\n\n  renderHTML({ HTMLAttributes }) {\n    const links = HTMLAttributes.links;\n\n    const renderedLinks = links.map((el) => {\n      return [\n        'a',\n        {\n          name: el.name,\n          href: el.href,\n          documentId: el.documentId,\n          dataContentType: el.dataContentType,\n        },\n        el.name,\n      ];\n    });\n\n    return ['div', this.options.HTMLAttributes, ...renderedLinks];\n  },\n\n  addAttributes() {\n    return {\n      links: {\n        default: [],\n        parseHTML: (element) => {\n          const links = element.getElementsByTagName('a');\n          const parsedLinks = [];\n\n          for (let i = 0; i < links.length; i++) {\n            const link = links[i];\n            const href = link.getAttribute('href');\n            const name = link.textContent;\n            const regexResult = href.match(/([^/]+$)/);\n            const documentId =\n              link.getAttribute('data-document-id') ||\n              (regexResult && regexResult[0]);\n            const dataContentType = link.getAttribute('data-content-type');\n\n            parsedLinks.push({\n              href,\n              name,\n              documentId,\n              dataContentType,\n            });\n          }\n\n          return parsedLinks;\n        },\n        renderHTML: (attributes) => {\n          return {\n            links: attributes.links.map((link) => ({\n              href: link.href,\n              name: link.name,\n              documentId: link.documentId,\n              dataContentType: link.dataContentType,\n            })),\n          };\n        },\n      },\n    };\n  },\n\n  addCommands() {\n    return {\n      setAttachment:\n        (\n          attrs = {\n            dataContentType: '',\n            name: '',\n            documentId: '',\n            href: '',\n          },\n        ) =>\n        ({ chain }) => {\n          return chain().insertContent({ type: this.name, attrs }).run();\n        },\n    };\n  },\n});\n"],"names":["Node"],"mappings":"mHAca,sBAAwBA,KAAAA,KAAK,OAA0B,CAClE,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,SACP,OAAQ,GACR,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aAAA,CACT,CAEJ,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,yBAA0B,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,MAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAM,GAAG,KACT,KAAM,GAAG,KACT,WAAY,GAAG,WACf,gBAAiB,GAAG,eAAA,EAEtB,GAAG,IAAA,CAEN,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,UAAY,SAAY,CACtB,MAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAc,CAAA,EAEpB,QAAS,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,MAAM,KAAO,MAAM,CAAC,EACd,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,WACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,CAAC,EACzB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACf,KACA,KACA,WACA,eAAA,CACD,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAU,CACrC,KAAM,KAAK,KACX,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,gBAAiB,KAAK,eAAA,EACtB,CAAA,EAEN,CACF,CAEJ,EAEA,aAAc,CACZ,MAAO,CACL,cACE,CACE,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EAAA,IAGV,CAAC,CAAE,SACM,MAAA,EAAQ,cAAc,CAAE,KAAM,KAAK,KAAM,MAAO,EAAE,IAAA,CAC3D,CAEN,CACF,CAAC"}