{"version":3,"file":"taiga-ui-editor-providers.mjs","sources":["../../../projects/editor/providers/provide-tui-editor.ts","../../../projects/editor/providers/taiga-ui-editor-providers.ts"],"sourcesContent":["import {inject, INJECTOR, type Injector, type Provider} from '@angular/core';\nimport {TUI_EDITOR_EXTENSIONS} from '@taiga-ui/editor/common';\nimport {type TuiBackgroundColorOptions} from '@taiga-ui/editor/extensions/background-color';\nimport {type TuiDetailsExtensionOptions} from '@taiga-ui/editor/extensions/details';\nimport {type TuiFontColorOptions} from '@taiga-ui/editor/extensions/font-color';\nimport {type TuiFontSizeOptions} from '@taiga-ui/editor/extensions/font-size';\nimport {type TuiImageExtensionOptions} from '@taiga-ui/editor/extensions/image-editor';\nimport {\n    type Extension,\n    type KeyboardShortcutCommand,\n    type Mark,\n    type Node,\n} from '@tiptap/core';\nimport {type BlockquoteOptions} from '@tiptap/extension-blockquote';\nimport {type BoldOptions} from '@tiptap/extension-bold';\nimport {type BulletListOptions} from '@tiptap/extension-bullet-list';\nimport {type CodeOptions} from '@tiptap/extension-code';\nimport {type CodeBlockOptions} from '@tiptap/extension-code-block';\nimport {type DetailsContentOptions} from '@tiptap/extension-details-content/src/details-content';\nimport {type DetailsSummaryOptions} from '@tiptap/extension-details-summary';\nimport {type DropcursorOptions} from '@tiptap/extension-dropcursor';\nimport {type HardBreakOptions} from '@tiptap/extension-hard-break';\nimport {type HeadingOptions} from '@tiptap/extension-heading';\nimport {type HistoryOptions} from '@tiptap/extension-history';\nimport {type HorizontalRuleOptions} from '@tiptap/extension-horizontal-rule';\nimport {type ItalicOptions} from '@tiptap/extension-italic';\nimport {type LinkOptions} from '@tiptap/extension-link';\nimport {type ListItemOptions} from '@tiptap/extension-list-item';\nimport {type OrderedListOptions} from '@tiptap/extension-ordered-list';\nimport {type ParagraphOptions} from '@tiptap/extension-paragraph';\nimport {type PlaceholderOptions} from '@tiptap/extension-placeholder';\nimport {type StrikeOptions} from '@tiptap/extension-strike';\nimport {type SubscriptExtensionOptions} from '@tiptap/extension-subscript';\nimport {type SuperscriptExtensionOptions} from '@tiptap/extension-superscript';\nimport {type TableHeaderOptions} from '@tiptap/extension-table-header';\nimport {type TableRowOptions} from '@tiptap/extension-table-row/src/table-row';\nimport {type TaskItemOptions} from '@tiptap/extension-task-item';\nimport {type TaskListOptions} from '@tiptap/extension-task-list';\nimport {type TextAlignOptions} from '@tiptap/extension-text-align';\nimport {type TextStyleOptions} from '@tiptap/extension-text-style';\nimport {type UnderlineOptions} from '@tiptap/extension-underline';\nimport {type StarterKitOptions} from '@tiptap/starter-kit';\n\ninterface Options {\n    starterKit: Partial<StarterKitOptions> | boolean;\n    blockquote: Partial<BlockquoteOptions> | boolean;\n    bold: Partial<BoldOptions> | boolean;\n    bulletList: Partial<BulletListOptions> | boolean;\n    code: Partial<CodeOptions> | boolean;\n    codeBlock: Partial<CodeBlockOptions> | boolean;\n    document: Partial<Record<string, unknown>> | boolean;\n    dropcursor: Partial<DropcursorOptions> | boolean;\n    gapcursor: Partial<{allowGapCursor: boolean}> | boolean;\n    hardBreak: Partial<HardBreakOptions> | boolean;\n    heading: Partial<HeadingOptions> | boolean;\n    history: Partial<HistoryOptions> | boolean;\n    horizontalRule: Partial<HorizontalRuleOptions> | boolean;\n    italic: Partial<ItalicOptions> | boolean;\n    taskList: Partial<TaskListOptions> | boolean;\n    taskItem: Partial<TaskItemOptions> | boolean;\n    listItem: Partial<ListItemOptions> | boolean;\n    orderedList: Partial<OrderedListOptions> | boolean;\n    paragraph: Partial<ParagraphOptions> | boolean;\n    strike: Partial<StrikeOptions> | boolean;\n    text: Partial<Record<string, unknown>> | boolean;\n    placeholder: Partial<PlaceholderOptions> | boolean;\n    enter: Partial<Record<string, unknown>> | boolean;\n    textStyle: Partial<TextStyleOptions> | boolean;\n    fontSize: Partial<TuiFontSizeOptions> | boolean;\n    textAlign: Partial<TextAlignOptions> | boolean;\n    underline: Partial<UnderlineOptions> | boolean;\n    subscript: Partial<SubscriptExtensionOptions> | boolean;\n    superscript: Partial<SuperscriptExtensionOptions> | boolean;\n    fontColor: Partial<TuiFontColorOptions> | boolean;\n    link: Partial<LinkOptions> | boolean;\n    jumpAnchor: Partial<Record<string, unknown>> | boolean;\n    fileLink: Partial<Record<string, unknown>> | boolean;\n    backgroundColor: Partial<TuiBackgroundColorOptions> | boolean;\n    table: Partial<Record<string, unknown>> | boolean;\n    tableCell: Partial<Record<string, unknown>> | boolean;\n    tableRow: Partial<TableRowOptions> | boolean;\n    tableHeader: Partial<TableHeaderOptions> | boolean;\n    tableCellBackground: Partial<Record<string, unknown>> | boolean;\n    tab: Partial<Record<string, unknown>> | boolean;\n    details: Partial<TuiDetailsExtensionOptions> | boolean;\n    detailsSummary: Partial<DetailsSummaryOptions> | boolean;\n    detailsContent: Partial<DetailsContentOptions> | boolean;\n    image: Partial<TuiImageExtensionOptions> | boolean;\n    video: Partial<Record<string, unknown>> | boolean;\n    audio: Partial<Record<string, unknown>> | boolean;\n    source: Partial<Record<string, unknown>> | boolean;\n    iframe: Partial<Record<string, unknown>> | boolean;\n}\n\nconst EXTENSIONS = [\n    {\n        key: 'listItem',\n        default: true,\n        async loader(options: Partial<ListItemOptions>) {\n            const {ListItem} = await import('@tiptap/extension-list-item');\n\n            return ListItem.configure(options);\n        },\n    },\n    {\n        key: 'blockquote',\n        default: true,\n        async loader(options: Partial<BlockquoteOptions>) {\n            const {Blockquote} = await import('@tiptap/extension-blockquote');\n\n            return Blockquote.configure(options);\n        },\n    },\n    {\n        key: 'bold',\n        default: true,\n        async loader(options: Partial<BoldOptions>) {\n            const {Bold} = await import('@tiptap/extension-bold');\n\n            return Bold.configure(options);\n        },\n    },\n    {\n        key: 'bulletList',\n        default: true,\n        async loader(options: Partial<BulletListOptions>) {\n            const {BulletList} = await import('@tiptap/extension-bullet-list');\n\n            return BulletList.configure(options);\n        },\n    },\n    {\n        key: 'code',\n        default: true,\n        async loader(options: Partial<CodeOptions>) {\n            const {Code} = await import('@tiptap/extension-code');\n\n            return Code.configure(options);\n        },\n    },\n    {\n        key: 'codeBlock',\n        default: true,\n        async loader(options: Partial<CodeBlockOptions>) {\n            const {CodeBlock} = await import('@tiptap/extension-code-block');\n\n            return CodeBlock.configure(options);\n        },\n    },\n    {\n        key: 'document',\n        default: true,\n        async loader() {\n            const {Document} = await import('@tiptap/extension-document');\n\n            return Document.configure();\n        },\n    },\n    {\n        key: 'dropcursor',\n        default: true,\n        async loader(options: Partial<DropcursorOptions>) {\n            const {Dropcursor} = await import('@tiptap/extension-dropcursor');\n\n            return Dropcursor.configure(options);\n        },\n    },\n    {\n        key: 'gapcursor',\n        default: true,\n        async loader({allowGapCursor = true}) {\n            const {Gapcursor} = await import('@tiptap/extension-gapcursor');\n\n            return Gapcursor.configure({allowGapCursor});\n        },\n    },\n    {\n        key: 'hardBreak',\n        default: true,\n        async loader(options: Partial<HardBreakOptions>) {\n            const {HardBreak} = await import('@tiptap/extension-hard-break');\n\n            return HardBreak.configure(options);\n        },\n    },\n    {\n        key: 'heading',\n        default: true,\n        async loader(options: Partial<HeadingOptions>) {\n            const {Heading} = await import('@tiptap/extension-heading');\n\n            return Heading.configure({levels: [1, 2, 3, 4, 5, 6], ...options}).extend({\n                addKeyboardShortcuts(): Record<string, KeyboardShortcutCommand> {\n                    return this.options.levels.reduce(\n                        (items: any, level: any) => ({\n                            ...(items || {}),\n                            [`Mod-Alt-${level}`]: () =>\n                                this.editor.commands.toggleHeading({level}),\n                        }),\n                        {},\n                    );\n                },\n            });\n        },\n    },\n    {\n        key: 'history',\n        default: true,\n        async loader(options: Partial<HistoryOptions>) {\n            const {History} = await import('@tiptap/extension-history');\n\n            return History.configure(options);\n        },\n    },\n    {\n        key: 'horizontalRule',\n        default: true,\n        async loader(options: Partial<HorizontalRuleOptions>) {\n            const {TuiHorizontalRule} =\n                await import('@taiga-ui/editor/extensions/horizontal');\n\n            return TuiHorizontalRule.configure(options);\n        },\n    },\n    {\n        key: 'italic',\n        default: true,\n        async loader(options: Partial<ItalicOptions>) {\n            const {Italic} = await import('@tiptap/extension-italic');\n\n            return Italic.configure(options);\n        },\n    },\n    {\n        key: 'italic',\n        default: true,\n        async loader(options: Partial<ItalicOptions>) {\n            const {Italic} = await import('@tiptap/extension-italic');\n\n            return Italic.configure(options);\n        },\n    },\n    {\n        key: 'taskList',\n        default: true,\n        async loader(options: Partial<TaskListOptions>) {\n            const {TaskList} = await import('@tiptap/extension-task-list');\n\n            return TaskList.configure(options);\n        },\n    },\n    {\n        key: 'taskItem',\n        default: true,\n        async loader(options: Partial<TaskItemOptions>) {\n            const {TaskItem} = await import('@tiptap/extension-task-item');\n\n            return TaskItem.configure({nested: true, ...options});\n        },\n    },\n    {\n        key: 'orderedList',\n        default: true,\n        async loader(options: Partial<OrderedListOptions>) {\n            const {OrderedList} = await import('@tiptap/extension-ordered-list');\n\n            return OrderedList.configure(options);\n        },\n    },\n    {\n        key: 'paragraph',\n        default: true,\n        async loader(options: Partial<ParagraphOptions>) {\n            const {Paragraph} = await import('@tiptap/extension-paragraph');\n\n            return Paragraph.configure(options);\n        },\n    },\n    {\n        key: 'strike',\n        default: true,\n        async loader(options: Partial<StrikeOptions>) {\n            const {Strike} = await import('@tiptap/extension-strike');\n\n            return Strike.configure(options);\n        },\n    },\n    {\n        key: 'text',\n        default: true,\n        async loader(options: Partial<Partial<Record<string, unknown>>>) {\n            const {Text} = await import('@tiptap/extension-text');\n\n            return Text.configure(options);\n        },\n    },\n    {\n        key: 'placeholder',\n        default: false,\n        async loader(options: Partial<PlaceholderOptions>) {\n            const {Placeholder} = await import('@tiptap/extension-placeholder');\n\n            return Placeholder.configure({\n                emptyNodeClass: 't-editor-placeholder',\n                includeChildren: true,\n                showOnlyCurrent: true,\n                showOnlyWhenEditable: true,\n                placeholder: '',\n                ...options,\n            });\n        },\n    },\n    {\n        key: 'enter',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiCustomEnter} = await import('@taiga-ui/editor/extensions/enter');\n\n            return TuiCustomEnter.configure(options);\n        },\n    },\n    {\n        key: 'fontSize',\n        default: true,\n        async loader(options: Partial<TuiFontSizeOptions>) {\n            const {TuiFontSizeExtension} =\n                await import('@taiga-ui/editor/extensions/font-size');\n\n            return TuiFontSizeExtension.configure(options);\n        },\n    },\n    {\n        key: 'textStyle',\n        default: true,\n        async loader(options: Partial<TextStyleOptions>) {\n            const {TextStyle} = await import('@tiptap/extension-text-style');\n\n            return TextStyle.configure(options);\n        },\n    },\n    {\n        key: 'textAlign',\n        default: true,\n        async loader(options: Partial<TextAlignOptions>) {\n            const {TextAlign} = await import('@tiptap/extension-text-align');\n\n            return TextAlign.configure({types: ['heading', 'paragraph'], ...options});\n        },\n    },\n    {\n        key: 'underline',\n        default: true,\n        async loader(options: Partial<UnderlineOptions>) {\n            const {Underline} = await import('@tiptap/extension-underline');\n\n            return Underline.configure(options);\n        },\n    },\n    {\n        key: 'subscript',\n        default: true,\n        async loader(options: Partial<SubscriptExtensionOptions>) {\n            const {Subscript} = await import('@tiptap/extension-subscript');\n\n            return Subscript.configure(options);\n        },\n    },\n    {\n        key: 'superscript',\n        default: true,\n        async loader(options: Partial<SuperscriptExtensionOptions>) {\n            const {Superscript} = await import('@tiptap/extension-superscript');\n\n            return Superscript.configure(options);\n        },\n    },\n    {\n        key: 'fontColor',\n        default: true,\n        async loader(options: Partial<TuiFontColorOptions>) {\n            const {TuiFontColor} = await import('@taiga-ui/editor/extensions/font-color');\n\n            return TuiFontColor.configure(options);\n        },\n    },\n    {\n        key: 'link',\n        default: true,\n        async loader(options: Partial<LinkOptions>) {\n            const {TuiLink} = await import('@taiga-ui/editor/extensions/link');\n\n            return TuiLink.configure(options);\n        },\n    },\n    {\n        key: 'jumpAnchor',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiJumpAnchor} =\n                await import('@taiga-ui/editor/extensions/jump-anchor');\n\n            return TuiJumpAnchor.configure(options);\n        },\n    },\n    {\n        key: 'fileLink',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiFileLink} = await import('@taiga-ui/editor/extensions/file-link');\n\n            return TuiFileLink.configure(options);\n        },\n    },\n    {\n        key: 'backgroundColor',\n        default: true,\n        async loader(options: Partial<TuiBackgroundColorOptions>) {\n            const {TuiBackgroundColor} =\n                await import('@taiga-ui/editor/extensions/background-color');\n\n            return TuiBackgroundColor.configure(options);\n        },\n    },\n    {\n        key: 'table',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiTable} = await import('@taiga-ui/editor/extensions/table');\n\n            return TuiTable.configure(options);\n        },\n    },\n    {\n        key: 'tableCell',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiTableCell} = await import('@taiga-ui/editor/extensions/table-cell');\n\n            return TuiTableCell.configure(options);\n        },\n    },\n    {\n        key: 'tableRow',\n        default: true,\n        async loader(options: Partial<TableRowOptions>) {\n            const {TableRow} = await import('@tiptap/extension-table-row');\n\n            return TableRow.configure(options);\n        },\n    },\n    {\n        key: 'tableHeader',\n        default: true,\n        async loader(options: Partial<TableHeaderOptions>) {\n            const {TableHeader} = await import('@tiptap/extension-table-header');\n\n            return TableHeader.configure(options);\n        },\n    },\n    {\n        key: 'tableCellBackground',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TableCellBackground} =\n                await import('@taiga-ui/editor/extensions/table-cell-background');\n\n            return TableCellBackground.configure(options);\n        },\n    },\n    {\n        key: 'tab',\n        default: true,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiTabExtension} =\n                await import('@taiga-ui/editor/extensions/indent-outdent');\n\n            return TuiTabExtension.configure(options);\n        },\n    },\n    {\n        key: 'details',\n        default: false,\n        async loader(options: Partial<TuiDetailsExtensionOptions>) {\n            const {TuiDetailsExtension} =\n                await import('@taiga-ui/editor/extensions/details');\n\n            return TuiDetailsExtension.configure(options);\n        },\n    },\n    {\n        key: 'detailsSummary',\n        default: false,\n        async loader(options: Partial<DetailsSummaryOptions>) {\n            const {TuiDetailsSummary} =\n                await import('@taiga-ui/editor/extensions/details');\n\n            return TuiDetailsSummary.configure(options);\n        },\n    },\n    {\n        key: 'detailsContent',\n        default: false,\n        async loader(options: Partial<DetailsContentOptions>) {\n            const {TuiDetailsContent} =\n                await import('@taiga-ui/editor/extensions/details');\n\n            return TuiDetailsContent.configure(options);\n        },\n    },\n    {\n        key: 'image',\n        default: false,\n        async loader(options: Partial<TuiImageExtensionOptions>, injector: Injector) {\n            const {tuiCreateImageEditorExtension} =\n                await import('@taiga-ui/editor/extensions/image-editor');\n\n            return tuiCreateImageEditorExtension({injector, ...options});\n        },\n    },\n    {\n        key: 'video',\n        default: false,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiVideo} = await import('@taiga-ui/editor/extensions/media');\n\n            return TuiVideo.configure(options);\n        },\n    },\n    {\n        key: 'audio',\n        default: false,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiAudio} = await import('@taiga-ui/editor/extensions/media');\n\n            return TuiAudio.configure(options);\n        },\n    },\n    {\n        key: 'source',\n        default: false,\n        async loader(options: Partial<Record<string, unknown>>) {\n            const {TuiSource} = await import('@taiga-ui/editor/extensions/media');\n\n            return TuiSource.configure(options);\n        },\n    },\n    {\n        key: 'iframe',\n        default: false,\n        async loader(_: Partial<Record<string, unknown>>, injector: Injector) {\n            const {tuiCreateIframeEditorExtension} =\n                await import('@taiga-ui/editor/extensions/iframe-editor');\n\n            return tuiCreateIframeEditorExtension({injector});\n        },\n    },\n] as const;\n\nconst defaults = EXTENSIONS.reduce((options, extension) => {\n    (options as Record<keyof Options, Record<string, unknown> | boolean>)[extension.key] =\n        extension.default;\n\n    return options;\n}, {} as Options);\n\ntype AsyncExtension<Options, Storage> = Promise<\n    Extension<Options, Storage> | Mark<Options, Storage> | Node<Options, Storage>\n>;\n\nexport function provideTuiEditor(options: Partial<Options>): Provider;\nexport function provideTuiEditor<O, S>(\n    ...extensions: ReadonlyArray<(_: Injector) => AsyncExtension<O, S>>\n): Provider;\nexport function provideTuiEditor<O, S>(\n    options: Partial<Options>,\n    ...extensions: ReadonlyArray<(_: Injector) => AsyncExtension<O, S>>\n): Provider;\nexport function provideTuiEditor<O, S>(\n    overrides: Partial<Options> | ((_: Injector) => AsyncExtension<O, S>) | undefined,\n    ...extensions: ReadonlyArray<(_: Injector) => AsyncExtension<O, S>>\n): Provider {\n    const options =\n        typeof overrides === 'object' && !Array.isArray(overrides)\n            ? {...defaults, ...overrides}\n            : defaults;\n\n    return {\n        provide: TUI_EDITOR_EXTENSIONS,\n        multi: true,\n        useFactory(): ReadonlyArray<AsyncExtension<O, S>> {\n            const injector = inject(INJECTOR);\n            const ownExtensions =\n                typeof overrides === 'function'\n                    ? extensions.concat(overrides)\n                    : extensions;\n\n            return EXTENSIONS.filter(({key}) => !!options[key])\n                .map(async ({key, loader}): AsyncExtension<O, S> => {\n                    const config = options[key];\n                    const extensionOptions = typeof config === 'boolean' ? {} : config;\n\n                    return loader(extensionOptions, injector);\n                })\n                .concat(ownExtensions.map(async (extension) => extension(injector)));\n        },\n    };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}