{"version":3,"file":"taiga-ui-editor-extensions-horizontal.mjs","sources":["../../../projects/editor/extensions/horizontal/index.ts","../../../projects/editor/extensions/horizontal/taiga-ui-editor-extensions-horizontal.ts"],"sourcesContent":["import {isNodeSelection} from '@tiptap/core';\nimport {HorizontalRule} from '@tiptap/extension-horizontal-rule';\nimport {NodeSelection, TextSelection} from '@tiptap/pm/state';\n\nexport const TuiHorizontalRule = HorizontalRule.extend({\n    addCommands() {\n        return {\n            setHorizontalRule:\n                () =>\n                ({chain, state, editor}) => {\n                    const {selection} = state;\n                    const {$from: $originFrom, $to: $originTo} = selection;\n\n                    const currentChain = chain();\n\n                    if (editor.isActive('summary')) {\n                        return false;\n                    }\n\n                    if ($originFrom.parentOffset === 0) {\n                        currentChain.insertContentAt(\n                            {\n                                from: Math.max($originFrom.pos - 1, 0),\n                                to: $originTo.pos,\n                            },\n                            '<p></p>',\n                        );\n\n                        currentChain.insertContentAt(\n                            {\n                                from: Math.max($originFrom.pos - 1, 0),\n                                to: $originTo.pos,\n                            },\n                            {type: this.name},\n                        );\n                    } else if (isNodeSelection(selection)) {\n                        currentChain.insertContentAt($originTo.pos, {type: this.name});\n                    } else {\n                        currentChain.insertContent({type: this.name});\n                    }\n\n                    return (\n                        currentChain\n                            // set cursor after horizontal rule\n                            .command(({tr, dispatch}) => {\n                                if (dispatch) {\n                                    const {$to} = tr.selection;\n                                    const posAfter = $to.end();\n\n                                    if ($to.nodeAfter) {\n                                        if ($to.nodeAfter.isTextblock) {\n                                            tr.setSelection(\n                                                TextSelection.create(tr.doc, $to.pos + 1),\n                                            );\n                                        } else if ($to.nodeAfter.isBlock) {\n                                            tr.setSelection(\n                                                NodeSelection.create(tr.doc, $to.pos),\n                                            );\n                                        } else {\n                                            tr.setSelection(\n                                                TextSelection.create(tr.doc, $to.pos),\n                                            );\n                                        }\n                                    } else {\n                                        // add node after horizontal rule if it’s the end of the document\n                                        const node =\n                                            $to.parent.type.contentMatch.defaultType?.create();\n\n                                        if (node) {\n                                            tr.insert(posAfter, node);\n                                            tr.setSelection(\n                                                TextSelection.create(\n                                                    tr.doc,\n                                                    posAfter + 1,\n                                                ),\n                                            );\n                                        }\n                                    }\n\n                                    tr.scrollIntoView();\n                                }\n\n                                return true;\n                            })\n                            .run()\n                    );\n                },\n        };\n    },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}