{"version":3,"file":"taiga-ui-editor-extensions-file-link.mjs","sources":["../../../projects/editor/extensions/file-link/index.ts","../../../projects/editor/extensions/file-link/taiga-ui-editor-extensions-file-link.ts"],"sourcesContent":["import {\n    TUI_TIPTAP_WHITESPACE_HACK,\n    type TuiEditorAttachedFile,\n    type TuiLinkAttributes,\n} from '@taiga-ui/editor/common';\nimport {Extension} from '@tiptap/core';\n\ndeclare module '@tiptap/core' {\n    interface Commands<ReturnType> {\n        fileLink: {\n            setFileLink(preview: TuiEditorAttachedFile): ReturnType;\n        };\n    }\n}\n\nfunction linkAttributesToString(attrs: TuiLinkAttributes): string {\n    return Object.entries(attrs)\n        .map(([key, value]) => `${key}=\"${value}\"`)\n        .join(' ');\n}\n\nexport const TuiFileLink = Extension.create({\n    name: 'fileLink',\n\n    addCommands() {\n        return {\n            setFileLink:\n                (fileLink) =>\n                ({state, chain}) => {\n                    const {selection} = state;\n                    const selectedSize = Math.abs(selection.to - selection.from);\n                    const attrs = fileLink.attrs\n                        ? linkAttributesToString(fileLink.attrs)\n                        : '';\n\n                    return (\n                        selectedSize > 0\n                            ? chain()\n                                  .toggleMark(\n                                      'link',\n                                      {href: fileLink.link},\n                                      {extendEmptyMarkRange: true},\n                                  )\n                                  .setTextSelection(selection.to)\n                                  .insertContent(TUI_TIPTAP_WHITESPACE_HACK)\n                            : chain().insertContent(\n                                  `<a href=\"${fileLink.link}\" ${attrs}>${fileLink.name}</a>${TUI_TIPTAP_WHITESPACE_HACK}`,\n                              )\n                    )\n                        .setTextSelection(selection.to)\n                        .run();\n                },\n        };\n    },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAeA,SAAS,sBAAsB,CAAC,KAAwB,EAAA;AACpD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACvB,SAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAG,EAAA,GAAG,CAAK,EAAA,EAAA,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAEY,MAAA,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACxC,IAAA,IAAI,EAAE,UAAU;IAEhB,WAAW,GAAA;QACP,OAAO;AACH,YAAA,WAAW,EACP,CAAC,QAAQ,KACT,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,KAAI;AACf,gBAAA,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAC;AAC1B,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxB,sBAAE,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC;sBACtC,EAAE,CAAC;gBAET,OAAO,CACH,YAAY,GAAG,CAAC;sBACV,KAAK,EAAE;AACF,yBAAA,UAAU,CACP,MAAM,EACN,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAC,EACrB,EAAC,oBAAoB,EAAE,IAAI,EAAC,CAC/B;AACA,yBAAA,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;yBAC9B,aAAa,CAAC,0BAA0B,CAAC;sBAC9C,KAAK,EAAE,CAAC,aAAa,CACjB,CAAA,SAAA,EAAY,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,OAAO,0BAA0B,CAAA,CAAE,CAC1F;AAEN,qBAAA,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;AAC9B,qBAAA,GAAG,EAAE,CAAC;aACd;SACR,CAAC;KACL;AACJ,CAAA;;ACtDD;;AAEG;;;;"}