@gravity-ui/markdown-editor 15.4.1 → 15.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/bundle/MarkdownEditorView.d.ts +3 -2
- package/build/cjs/bundle/MarkdownEditorView.js +3 -3
- package/build/cjs/bundle/MarkdownEditorView.js.map +1 -1
- package/build/cjs/bundle/MarkupEditorView.d.ts +2 -1
- package/build/cjs/bundle/MarkupEditorView.js +2 -2
- package/build/cjs/bundle/MarkupEditorView.js.map +1 -1
- package/build/cjs/bundle/WysiwygEditorView.d.ts +2 -1
- package/build/cjs/bundle/WysiwygEditorView.js +2 -2
- package/build/cjs/bundle/WysiwygEditorView.js.map +1 -1
- package/build/cjs/bundle/config/action-names.d.ts +1 -1
- package/build/cjs/bundle/config/action-names.js +1 -0
- package/build/cjs/bundle/config/action-names.js.map +1 -1
- package/build/cjs/bundle/config/icons.d.ts +1 -1
- package/build/cjs/bundle/config/icons.js +1 -0
- package/build/cjs/bundle/config/icons.js.map +1 -1
- package/build/cjs/bundle/settings/index.js +3 -3
- package/build/cjs/bundle/settings/index.js.map +1 -1
- package/build/cjs/bundle/types.d.ts +6 -0
- package/build/cjs/bundle/types.js.map +1 -1
- package/build/cjs/bundle/useMarkdownEditor.js +1 -0
- package/build/cjs/bundle/useMarkdownEditor.js.map +1 -1
- package/build/cjs/bundle/wysiwyg-preset.d.ts +1 -0
- package/build/cjs/bundle/wysiwyg-preset.js +1 -0
- package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.d.ts +3 -0
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.js +10 -0
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.d.ts +16 -0
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js +72 -0
- package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.d.ts +10 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js +71 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.d.ts +2 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js +41 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.d.ts +6 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js +24 -0
- package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/commands.d.ts +4 -0
- package/build/cjs/extensions/additional/QuoteLink/commands.js +45 -0
- package/build/cjs/extensions/additional/QuoteLink/commands.js.map +1 -0
- package/build/cjs/extensions/additional/QuoteLink/index.css +36 -0
- package/build/cjs/extensions/additional/QuoteLink/index.d.ts +16 -0
- package/build/cjs/extensions/additional/QuoteLink/index.js +42 -0
- package/build/cjs/extensions/additional/QuoteLink/index.js.map +1 -0
- package/build/cjs/extensions/additional/YfmHtmlBlock/utils.js +2 -12
- package/build/cjs/extensions/additional/YfmHtmlBlock/utils.js.map +1 -1
- package/build/cjs/extensions/markdown/Html/schema.js +3 -3
- package/build/cjs/extensions/markdown/Html/schema.js.map +1 -1
- package/build/cjs/extensions/markdown/Lists/actions.js +2 -2
- package/build/cjs/extensions/markdown/Lists/actions.js.map +1 -1
- package/build/cjs/extensions/markdown/Lists/commands.d.ts +2 -1
- package/build/cjs/extensions/markdown/Lists/commands.js +64 -0
- package/build/cjs/extensions/markdown/Lists/commands.js.map +1 -1
- package/build/cjs/extensions/markdown/Lists/index.js +2 -2
- package/build/cjs/extensions/markdown/Lists/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.d.ts +2 -0
- package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js +5 -2
- package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js +2 -0
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.d.ts +9 -0
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js +46 -0
- package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js.map +1 -0
- package/build/cjs/i18n/menubar/en.json +1 -0
- package/build/cjs/i18n/menubar/index.d.ts +2 -1
- package/build/cjs/i18n/menubar/ru.json +1 -0
- package/build/cjs/icons/index.d.ts +1 -1
- package/build/cjs/icons/index.js +2 -1
- package/build/cjs/icons/index.js.map +1 -1
- package/build/cjs/markup/commands/blocks.d.ts +1 -0
- package/build/cjs/markup/commands/blocks.js +8 -1
- package/build/cjs/markup/commands/blocks.js.map +1 -1
- package/build/cjs/modules/toolbars/items.d.ts +3 -0
- package/build/cjs/modules/toolbars/items.js +22 -3
- package/build/cjs/modules/toolbars/items.js.map +1 -1
- package/build/cjs/utils/getSanitize.d.ts +4 -0
- package/build/cjs/utils/getSanitize.js +16 -0
- package/build/cjs/utils/getSanitize.js.map +1 -0
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/cjs/view/hocs/withYfmHtml/index.d.ts +1 -0
- package/build/cjs/view/hocs/withYfmHtml/index.js.map +1 -1
- package/build/cjs/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js +2 -1
- package/build/cjs/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js.map +1 -1
- package/build/esm/bundle/MarkdownEditorView.d.ts +3 -2
- package/build/esm/bundle/MarkdownEditorView.js +3 -3
- package/build/esm/bundle/MarkdownEditorView.js.map +1 -1
- package/build/esm/bundle/MarkupEditorView.d.ts +2 -1
- package/build/esm/bundle/MarkupEditorView.js +2 -2
- package/build/esm/bundle/MarkupEditorView.js.map +1 -1
- package/build/esm/bundle/WysiwygEditorView.d.ts +2 -1
- package/build/esm/bundle/WysiwygEditorView.js +2 -2
- package/build/esm/bundle/WysiwygEditorView.js.map +1 -1
- package/build/esm/bundle/config/action-names.d.ts +1 -1
- package/build/esm/bundle/config/action-names.js +1 -0
- package/build/esm/bundle/config/action-names.js.map +1 -1
- package/build/esm/bundle/config/icons.d.ts +1 -1
- package/build/esm/bundle/config/icons.js +2 -1
- package/build/esm/bundle/config/icons.js.map +1 -1
- package/build/esm/bundle/settings/index.js +3 -3
- package/build/esm/bundle/settings/index.js.map +1 -1
- package/build/esm/bundle/types.d.ts +6 -0
- package/build/esm/bundle/types.js.map +1 -1
- package/build/esm/bundle/useMarkdownEditor.js +1 -0
- package/build/esm/bundle/useMarkdownEditor.js.map +1 -1
- package/build/esm/bundle/wysiwyg-preset.d.ts +1 -0
- package/build/esm/bundle/wysiwyg-preset.js +1 -0
- package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.d.ts +3 -0
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.js +6 -0
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.d.ts +16 -0
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js +67 -0
- package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.d.ts +10 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js +66 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.d.ts +2 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js +37 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.d.ts +6 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js +21 -0
- package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/commands.d.ts +4 -0
- package/build/esm/extensions/additional/QuoteLink/commands.js +41 -0
- package/build/esm/extensions/additional/QuoteLink/commands.js.map +1 -0
- package/build/esm/extensions/additional/QuoteLink/index.css +36 -0
- package/build/esm/extensions/additional/QuoteLink/index.d.ts +16 -0
- package/build/esm/extensions/additional/QuoteLink/index.js +38 -0
- package/build/esm/extensions/additional/QuoteLink/index.js.map +1 -0
- package/build/esm/extensions/additional/YfmHtmlBlock/utils.js +2 -11
- package/build/esm/extensions/additional/YfmHtmlBlock/utils.js.map +1 -1
- package/build/esm/extensions/markdown/Html/schema.js +2 -1
- package/build/esm/extensions/markdown/Html/schema.js.map +1 -1
- package/build/esm/extensions/markdown/Lists/actions.js +4 -4
- package/build/esm/extensions/markdown/Lists/actions.js.map +1 -1
- package/build/esm/extensions/markdown/Lists/commands.d.ts +2 -1
- package/build/esm/extensions/markdown/Lists/commands.js +63 -0
- package/build/esm/extensions/markdown/Lists/commands.js.map +1 -1
- package/build/esm/extensions/markdown/Lists/index.js +4 -4
- package/build/esm/extensions/markdown/Lists/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.d.ts +2 -0
- package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js +5 -2
- package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js +2 -0
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.d.ts +9 -0
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js +42 -0
- package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js.map +1 -0
- package/build/esm/i18n/menubar/en.json +1 -0
- package/build/esm/i18n/menubar/index.d.ts +2 -1
- package/build/esm/i18n/menubar/ru.json +1 -0
- package/build/esm/icons/index.d.ts +1 -1
- package/build/esm/icons/index.js +1 -1
- package/build/esm/icons/index.js.map +1 -1
- package/build/esm/markup/commands/blocks.d.ts +1 -0
- package/build/esm/markup/commands/blocks.js +6 -0
- package/build/esm/markup/commands/blocks.js.map +1 -1
- package/build/esm/modules/toolbars/items.d.ts +3 -0
- package/build/esm/modules/toolbars/items.js +20 -1
- package/build/esm/modules/toolbars/items.js.map +1 -1
- package/build/esm/utils/getSanitize.d.ts +4 -0
- package/build/esm/utils/getSanitize.js +11 -0
- package/build/esm/utils/getSanitize.js.map +1 -0
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esm/view/hocs/withYfmHtml/index.d.ts +1 -0
- package/build/esm/view/hocs/withYfmHtml/index.js.map +1 -1
- package/build/esm/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js +2 -1
- package/build/esm/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js.map +1 -1
- package/build/styles.css +36 -0
- package/package.json +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wysiwyg-preset.js","sourceRoot":"../../../src","sources":["bundle/wysiwyg-preset.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Node} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../core';\nimport {BehaviorPreset, type BehaviorPresetOptions} from '../extensions/behavior';\nimport {\n EditorModeKeymap,\n type EditorModeKeymapOptions,\n} from '../extensions/behavior/EditorModeKeymap';\nimport {BaseNode, YfmHeadingAttr, YfmNoteNode} from '../extensions/specs';\nimport {i18n as i18nPlaceholder} from '../i18n/placeholder';\nimport {CommonMarkPreset, type CommonMarkPresetOptions} from '../presets/commonmark';\nimport {DefaultPreset, type DefaultPresetOptions} from '../presets/default';\nimport {FullPreset, type FullPresetOptions} from '../presets/full';\nimport {YfmPreset, type YfmPresetOptions} from '../presets/yfm';\nimport {ZeroPreset, type ZeroPresetOptions} from '../presets/zero';\nimport {Action as A, formatter as f} from '../shortcuts';\nimport type {DirectiveSyntaxContext} from '../utils/directive';\nimport type {FileUploadHandler} from '../utils/upload';\n\nimport {wCommandMenuConfigByPreset, wSelectionMenuConfigByPreset} from './config/wysiwyg';\nimport {emojiDefs} from './emoji';\nimport type {MarkdownEditorPreset, WysiwygPlaceholderOptions} from './types';\n\nconst DEFAULT_IGNORED_KEYS = ['Tab', 'Shift-Tab'] as const;\n\nexport type ExtensionsOptions = BehaviorPresetOptions & FullPresetOptions;\n\nexport type BundlePresetOptions = ExtensionsOptions &\n EditorModeKeymapOptions & {\n preset: MarkdownEditorPreset;\n mdBreaks?: boolean;\n preserveEmptyRows?: boolean;\n fileUploadHandler?: FileUploadHandler;\n placeholderOptions?: WysiwygPlaceholderOptions;\n /**\n * If we need to set dimensions for uploaded images\n *\n * @default false\n */\n needToSetDimensionsForUploadedImages?: boolean;\n enableNewImageSizeCalculation?: boolean;\n directiveSyntax: DirectiveSyntaxContext;\n };\n\ndeclare global {\n namespace WysiwygEditor {\n interface Context {\n directiveSyntax: DirectiveSyntaxContext;\n }\n }\n}\n\nexport const BundlePreset: ExtensionAuto<BundlePresetOptions> = (builder, opts) => {\n builder.context.set('directiveSyntax', opts.directiveSyntax);\n\n const dropCursor: NonNullable<BundlePresetOptions['cursor']>['dropOptions'] = {\n color: 'var(--g-color-line-brand)',\n width: 2,\n };\n\n const zeroOptions: BehaviorPresetOptions & ZeroPresetOptions = {\n ...opts,\n baseStyles: {\n attributes: {\n // for disable setting attrs inside pm-view from floating-ui from uikit\n // see https://github.com/floating-ui/floating-ui/discussions/3213\n // and https://github.com/floating-ui/floating-ui/pull/3202\n 'aria-live': '',\n ...opts.baseStyles?.attributes,\n },\n },\n cursor: {dropOptions: dropCursor},\n clipboard: {pasteFileHandler: opts.fileUploadHandler, ...opts.clipboard},\n selectionContext: {config: wSelectionMenuConfigByPreset.zero, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.zero, ...opts.commandMenu},\n history: {undoKey: f.toPM(A.Undo), redoKey: f.toPM(A.Redo), ...opts.history},\n baseSchema: {\n paragraphKey: f.toPM(A.Text),\n paragraphPlaceholder: (node: Node, parent?: Node | null) => {\n const {value, behavior} = opts.placeholderOptions || {};\n\n const emptyEntries = {\n 'empty-row': !node.text,\n 'empty-row-top-level': !node.text && parent?.type.name === BaseNode.Doc,\n 'empty-doc':\n !node.text && parent?.type.name === BaseNode.Doc && parent.childCount === 1,\n };\n\n const showPlaceholder = emptyEntries[behavior || 'empty-doc'];\n\n if (!showPlaceholder) return null;\n\n return typeof value === 'function'\n ? value()\n : value ?? i18nPlaceholder('doc_empty');\n },\n preserveEmptyRows: opts.preserveEmptyRows,\n ...opts.baseSchema,\n },\n };\n const commonMarkOptions: BehaviorPresetOptions & CommonMarkPresetOptions = {\n ...zeroOptions,\n selectionContext: {\n config: wSelectionMenuConfigByPreset.commonmark,\n ...opts.selectionContext,\n },\n commandMenu: {actions: wCommandMenuConfigByPreset.commonmark, ...opts.commandMenu},\n breaks: {\n preferredBreak: (opts.mdBreaks ? 'soft' : 'hard') as 'soft' | 'hard',\n ...opts.breaks,\n },\n bold: {boldKey: f.toPM(A.Bold), ...opts.bold},\n italic: {italicKey: f.toPM(A.Italic), ...opts.italic},\n code: {codeKey: f.toPM(A.Code), ...opts.code},\n codeBlock: {\n codeBlockKey: f.toPM(A.CodeBlock),\n ...opts.codeBlock,\n },\n blockquote: {qouteKey: f.toPM(A.Quote), ...opts.blockquote},\n link: {linkKey: f.toPM(A.Link), ...opts.link},\n lists: {\n ulKey: f.toPM(A.BulletList),\n olKey: f.toPM(A.OrderedList),\n ulInputRules: {plus: false},\n ...opts.lists,\n },\n image: {\n parseInsertedUrlAsImage: opts.imgSize?.parseInsertedUrlAsImage,\n },\n };\n const defaultOptions: BehaviorPresetOptions & DefaultPresetOptions = {\n ...commonMarkOptions,\n selectionContext: {config: wSelectionMenuConfigByPreset.default, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.default, ...opts.commandMenu},\n strike: {strikeKey: f.toPM(A.Strike), ...opts.strike},\n };\n const yfmOptions: BehaviorPresetOptions & YfmPresetOptions = {\n ...defaultOptions,\n selectionContext: {config: wSelectionMenuConfigByPreset.yfm, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.yfm, ...opts.commandMenu},\n underline: {underlineKey: f.toPM(A.Underline), ...opts.underline},\n imgSize: {\n imageUploadHandler: opts.fileUploadHandler,\n needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,\n enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,\n ...opts.imgSize,\n },\n checkbox: {checkboxLabelPlaceholder: () => i18nPlaceholder('checkbox'), ...opts.checkbox},\n deflist: {\n deflistTermPlaceholder: () => i18nPlaceholder('deflist_term'),\n deflistDescPlaceholder: () => i18nPlaceholder('deflist_desc'),\n },\n yfmCut: {\n yfmCutKey: f.toPM(A.Cut),\n yfmCutTitlePlaceholder: () => i18nPlaceholder('cut_title'),\n yfmCutContentPlaceholder: () => i18nPlaceholder('cut_content'),\n ...opts.yfmCut,\n },\n yfmNote: {\n yfmNoteKey: f.toPM(A.Note),\n yfmNoteTitlePlaceholder: () => i18nPlaceholder('note_title'),\n ...opts.yfmNote,\n },\n yfmTable: {yfmTableCellPlaceholder: () => i18nPlaceholder('table_cell'), ...opts.yfmTable},\n yfmFile: {\n fileUploadHandler: opts.fileUploadHandler,\n needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,\n ...opts.yfmFile,\n },\n yfmHeading: {\n h1Key: f.toPM(A.Heading1),\n h2Key: f.toPM(A.Heading2),\n h3Key: f.toPM(A.Heading3),\n h4Key: f.toPM(A.Heading4),\n h5Key: f.toPM(A.Heading5),\n h6Key: f.toPM(A.Heading6),\n headingPlaceholder: (node: Node) =>\n `${i18nPlaceholder('heading')} ${node.attrs[YfmHeadingAttr.Level]}`, // todo: remove attrs import\n ...opts.yfmHeading,\n },\n placeholder: {\n [YfmNoteNode.NoteContent]: () => i18nPlaceholder('note_content'),\n },\n };\n const fullOptions: BehaviorPresetOptions & FullPresetOptions = {\n ...yfmOptions,\n selectionContext: {config: wSelectionMenuConfigByPreset.full, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.full, ...opts.commandMenu},\n emoji: {defs: emojiDefs, ...opts.emoji},\n };\n\n const zeroIgnoreActions = [A.Undo, A.Redo];\n const commonMarkIgnoreActions = zeroIgnoreActions.concat(\n A.Bold,\n A.Italic,\n A.Code,\n A.Link,\n\n A.Text,\n A.Heading1,\n A.Heading2,\n A.Heading3,\n A.Heading4,\n A.Heading5,\n A.Heading6,\n\n A.BulletList,\n A.OrderedList,\n\n A.Quote,\n A.CodeBlock,\n );\n const defaultIgnoreActions = commonMarkIgnoreActions.concat(A.Strike);\n const yfmIgnoreActions = defaultIgnoreActions.concat(\n A.Underline,\n\n A.Note,\n A.Cut,\n );\n const fullIgnoreActions = yfmIgnoreActions.concat();\n\n let ignoreActions;\n\n switch (opts.preset) {\n case 'zero': {\n ignoreActions = zeroIgnoreActions;\n builder.use(BehaviorPreset, zeroOptions).use(ZeroPreset, zeroOptions);\n break;\n }\n case 'commonmark': {\n ignoreActions = commonMarkIgnoreActions;\n builder.use(BehaviorPreset, commonMarkOptions).use(CommonMarkPreset, commonMarkOptions);\n break;\n }\n case 'default': {\n ignoreActions = defaultIgnoreActions;\n builder.use(BehaviorPreset, defaultOptions).use(DefaultPreset, defaultOptions);\n break;\n }\n case 'yfm': {\n ignoreActions = yfmIgnoreActions;\n builder.use(BehaviorPreset, yfmOptions).use(YfmPreset, yfmOptions);\n break;\n }\n default: {\n ignoreActions = fullIgnoreActions;\n builder.use(BehaviorPreset, fullOptions).use(FullPreset, fullOptions);\n break;\n }\n }\n\n const ignoreKeysList = opts.ignoreKeysList?.slice() ?? [];\n ignoreKeysList.push(...DEFAULT_IGNORED_KEYS);\n for (const action of ignoreActions) {\n const key = f.toPM(action);\n if (key) ignoreKeysList.push(key);\n }\n\n builder.use(EditorModeKeymap, {\n onSubmit: opts.onSubmit,\n onCancel: opts.onCancel,\n ignoreKeysList,\n });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"wysiwyg-preset.js","sourceRoot":"../../../src","sources":["bundle/wysiwyg-preset.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Node} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../core';\nimport {BehaviorPreset, type BehaviorPresetOptions} from '../extensions/behavior';\nimport {\n EditorModeKeymap,\n type EditorModeKeymapOptions,\n} from '../extensions/behavior/EditorModeKeymap';\nimport {BaseNode, YfmHeadingAttr, YfmNoteNode} from '../extensions/specs';\nimport {i18n as i18nPlaceholder} from '../i18n/placeholder';\nimport {CommonMarkPreset, type CommonMarkPresetOptions} from '../presets/commonmark';\nimport {DefaultPreset, type DefaultPresetOptions} from '../presets/default';\nimport {FullPreset, type FullPresetOptions} from '../presets/full';\nimport {YfmPreset, type YfmPresetOptions} from '../presets/yfm';\nimport {ZeroPreset, type ZeroPresetOptions} from '../presets/zero';\nimport {Action as A, formatter as f} from '../shortcuts';\nimport type {DirectiveSyntaxContext} from '../utils/directive';\nimport type {FileUploadHandler} from '../utils/upload';\n\nimport {wCommandMenuConfigByPreset, wSelectionMenuConfigByPreset} from './config/wysiwyg';\nimport {emojiDefs} from './emoji';\nimport type {MarkdownEditorPreset, WysiwygPlaceholderOptions} from './types';\n\nconst DEFAULT_IGNORED_KEYS = ['Tab', 'Shift-Tab'] as const;\n\nexport type ExtensionsOptions = BehaviorPresetOptions & FullPresetOptions;\n\nexport type BundlePresetOptions = ExtensionsOptions &\n EditorModeKeymapOptions & {\n preset: MarkdownEditorPreset;\n mdBreaks?: boolean;\n preserveEmptyRows?: boolean;\n fileUploadHandler?: FileUploadHandler;\n placeholderOptions?: WysiwygPlaceholderOptions;\n /**\n * If we need to set dimensions for uploaded images\n *\n * @default false\n */\n needToSetDimensionsForUploadedImages?: boolean;\n enableNewImageSizeCalculation?: boolean;\n directiveSyntax: DirectiveSyntaxContext;\n // MAJOR: remove markdown-it-attrs\n disableMdAttrs?: boolean;\n };\n\ndeclare global {\n namespace WysiwygEditor {\n interface Context {\n directiveSyntax: DirectiveSyntaxContext;\n }\n }\n}\n\nexport const BundlePreset: ExtensionAuto<BundlePresetOptions> = (builder, opts) => {\n builder.context.set('directiveSyntax', opts.directiveSyntax);\n\n const dropCursor: NonNullable<BundlePresetOptions['cursor']>['dropOptions'] = {\n color: 'var(--g-color-line-brand)',\n width: 2,\n };\n\n const zeroOptions: BehaviorPresetOptions & ZeroPresetOptions = {\n ...opts,\n baseStyles: {\n attributes: {\n // for disable setting attrs inside pm-view from floating-ui from uikit\n // see https://github.com/floating-ui/floating-ui/discussions/3213\n // and https://github.com/floating-ui/floating-ui/pull/3202\n 'aria-live': '',\n ...opts.baseStyles?.attributes,\n },\n },\n cursor: {dropOptions: dropCursor},\n clipboard: {pasteFileHandler: opts.fileUploadHandler, ...opts.clipboard},\n selectionContext: {config: wSelectionMenuConfigByPreset.zero, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.zero, ...opts.commandMenu},\n history: {undoKey: f.toPM(A.Undo), redoKey: f.toPM(A.Redo), ...opts.history},\n baseSchema: {\n paragraphKey: f.toPM(A.Text),\n paragraphPlaceholder: (node: Node, parent?: Node | null) => {\n const {value, behavior} = opts.placeholderOptions || {};\n\n const emptyEntries = {\n 'empty-row': !node.text,\n 'empty-row-top-level': !node.text && parent?.type.name === BaseNode.Doc,\n 'empty-doc':\n !node.text && parent?.type.name === BaseNode.Doc && parent.childCount === 1,\n };\n\n const showPlaceholder = emptyEntries[behavior || 'empty-doc'];\n\n if (!showPlaceholder) return null;\n\n return typeof value === 'function'\n ? value()\n : value ?? i18nPlaceholder('doc_empty');\n },\n preserveEmptyRows: opts.preserveEmptyRows,\n ...opts.baseSchema,\n },\n };\n const commonMarkOptions: BehaviorPresetOptions & CommonMarkPresetOptions = {\n ...zeroOptions,\n selectionContext: {\n config: wSelectionMenuConfigByPreset.commonmark,\n ...opts.selectionContext,\n },\n commandMenu: {actions: wCommandMenuConfigByPreset.commonmark, ...opts.commandMenu},\n breaks: {\n preferredBreak: (opts.mdBreaks ? 'soft' : 'hard') as 'soft' | 'hard',\n ...opts.breaks,\n },\n bold: {boldKey: f.toPM(A.Bold), ...opts.bold},\n italic: {italicKey: f.toPM(A.Italic), ...opts.italic},\n code: {codeKey: f.toPM(A.Code), ...opts.code},\n codeBlock: {\n codeBlockKey: f.toPM(A.CodeBlock),\n ...opts.codeBlock,\n },\n blockquote: {qouteKey: f.toPM(A.Quote), ...opts.blockquote},\n link: {linkKey: f.toPM(A.Link), ...opts.link},\n lists: {\n ulKey: f.toPM(A.BulletList),\n olKey: f.toPM(A.OrderedList),\n ulInputRules: {plus: false},\n ...opts.lists,\n },\n image: {\n parseInsertedUrlAsImage: opts.imgSize?.parseInsertedUrlAsImage,\n },\n };\n const defaultOptions: BehaviorPresetOptions & DefaultPresetOptions = {\n ...commonMarkOptions,\n selectionContext: {config: wSelectionMenuConfigByPreset.default, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.default, ...opts.commandMenu},\n strike: {strikeKey: f.toPM(A.Strike), ...opts.strike},\n };\n const yfmOptions: BehaviorPresetOptions & YfmPresetOptions = {\n ...defaultOptions,\n yfmConfigs: {disableAttrs: opts.disableMdAttrs, ...opts.yfmConfigs},\n selectionContext: {config: wSelectionMenuConfigByPreset.yfm, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.yfm, ...opts.commandMenu},\n underline: {underlineKey: f.toPM(A.Underline), ...opts.underline},\n imgSize: {\n imageUploadHandler: opts.fileUploadHandler,\n needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,\n enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,\n ...opts.imgSize,\n },\n checkbox: {checkboxLabelPlaceholder: () => i18nPlaceholder('checkbox'), ...opts.checkbox},\n deflist: {\n deflistTermPlaceholder: () => i18nPlaceholder('deflist_term'),\n deflistDescPlaceholder: () => i18nPlaceholder('deflist_desc'),\n },\n yfmCut: {\n yfmCutKey: f.toPM(A.Cut),\n yfmCutTitlePlaceholder: () => i18nPlaceholder('cut_title'),\n yfmCutContentPlaceholder: () => i18nPlaceholder('cut_content'),\n ...opts.yfmCut,\n },\n yfmNote: {\n yfmNoteKey: f.toPM(A.Note),\n yfmNoteTitlePlaceholder: () => i18nPlaceholder('note_title'),\n ...opts.yfmNote,\n },\n yfmTable: {yfmTableCellPlaceholder: () => i18nPlaceholder('table_cell'), ...opts.yfmTable},\n yfmFile: {\n fileUploadHandler: opts.fileUploadHandler,\n needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,\n ...opts.yfmFile,\n },\n yfmHeading: {\n h1Key: f.toPM(A.Heading1),\n h2Key: f.toPM(A.Heading2),\n h3Key: f.toPM(A.Heading3),\n h4Key: f.toPM(A.Heading4),\n h5Key: f.toPM(A.Heading5),\n h6Key: f.toPM(A.Heading6),\n headingPlaceholder: (node: Node) =>\n `${i18nPlaceholder('heading')} ${node.attrs[YfmHeadingAttr.Level]}`, // todo: remove attrs import\n ...opts.yfmHeading,\n },\n placeholder: {\n [YfmNoteNode.NoteContent]: () => i18nPlaceholder('note_content'),\n },\n };\n const fullOptions: BehaviorPresetOptions & FullPresetOptions = {\n ...yfmOptions,\n selectionContext: {config: wSelectionMenuConfigByPreset.full, ...opts.selectionContext},\n commandMenu: {actions: wCommandMenuConfigByPreset.full, ...opts.commandMenu},\n emoji: {defs: emojiDefs, ...opts.emoji},\n };\n\n const zeroIgnoreActions = [A.Undo, A.Redo];\n const commonMarkIgnoreActions = zeroIgnoreActions.concat(\n A.Bold,\n A.Italic,\n A.Code,\n A.Link,\n\n A.Text,\n A.Heading1,\n A.Heading2,\n A.Heading3,\n A.Heading4,\n A.Heading5,\n A.Heading6,\n\n A.BulletList,\n A.OrderedList,\n\n A.Quote,\n A.CodeBlock,\n );\n const defaultIgnoreActions = commonMarkIgnoreActions.concat(A.Strike);\n const yfmIgnoreActions = defaultIgnoreActions.concat(\n A.Underline,\n\n A.Note,\n A.Cut,\n );\n const fullIgnoreActions = yfmIgnoreActions.concat();\n\n let ignoreActions;\n\n switch (opts.preset) {\n case 'zero': {\n ignoreActions = zeroIgnoreActions;\n builder.use(BehaviorPreset, zeroOptions).use(ZeroPreset, zeroOptions);\n break;\n }\n case 'commonmark': {\n ignoreActions = commonMarkIgnoreActions;\n builder.use(BehaviorPreset, commonMarkOptions).use(CommonMarkPreset, commonMarkOptions);\n break;\n }\n case 'default': {\n ignoreActions = defaultIgnoreActions;\n builder.use(BehaviorPreset, defaultOptions).use(DefaultPreset, defaultOptions);\n break;\n }\n case 'yfm': {\n ignoreActions = yfmIgnoreActions;\n builder.use(BehaviorPreset, yfmOptions).use(YfmPreset, yfmOptions);\n break;\n }\n default: {\n ignoreActions = fullIgnoreActions;\n builder.use(BehaviorPreset, fullOptions).use(FullPreset, fullOptions);\n break;\n }\n }\n\n const ignoreKeysList = opts.ignoreKeysList?.slice() ?? [];\n ignoreKeysList.push(...DEFAULT_IGNORED_KEYS);\n for (const action of ignoreActions) {\n const key = f.toPM(action);\n if (key) ignoreKeysList.push(key);\n }\n\n builder.use(EditorModeKeymap, {\n onSubmit: opts.onSubmit,\n onCancel: opts.onCancel,\n ignoreKeysList,\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"../../../../../../src","sources":["extensions/additional/QuoteLink/PlaceholderWidget/commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAC,wBAAqB;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAChC,CAAC,IAAmB,EAAW,EAAE,CACjC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChB,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import type {Command} from 'prosemirror-state';\n\nimport type {ExtensionDeps} from '#core';\n\nimport {addPlaceholder} from './descriptor';\n\nexport const addQuoteLinkPlaceholder =\n (deps: ExtensionDeps): Command =>\n (state, dispatch) => {\n dispatch?.(addPlaceholder(state.tr, deps).scrollIntoView());\n return true;\n };\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { Transaction } from 'prosemirror-state';
|
|
3
|
+
import type { EditorView } from 'prosemirror-view';
|
|
4
|
+
import type { ExtensionDeps } from "../../../../core/index.js";
|
|
5
|
+
import { ReactWidgetDescriptor } from "../../../index.js";
|
|
6
|
+
import { type LinkPlaceholderWidgetProps } from "../../../markdown/Link/PlaceholderWidget/widget.js";
|
|
7
|
+
export declare class QuoteLinkWidgetDescriptor extends ReactWidgetDescriptor {
|
|
8
|
+
#private;
|
|
9
|
+
private normalizeUrl;
|
|
10
|
+
constructor(initPos: number, deps: ExtensionDeps);
|
|
11
|
+
getDomElem(): HTMLElement;
|
|
12
|
+
renderReactElement(view: EditorView, getPos: () => number): React.ReactElement;
|
|
13
|
+
onCancel: LinkPlaceholderWidgetProps['onCancel'];
|
|
14
|
+
onSubmit: LinkPlaceholderWidgetProps['onSubmit'];
|
|
15
|
+
}
|
|
16
|
+
export declare const addPlaceholder: (tr: Transaction, deps: ExtensionDeps) => Transaction;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TextSelection } from 'prosemirror-state';
|
|
3
|
+
// @ts-ignore // TODO: fix cjs build
|
|
4
|
+
import { findParentNodeOfType, findParentNodeOfTypeClosestToPos } from 'prosemirror-utils';
|
|
5
|
+
import { ReactWidgetDescriptor, normalizeUrlFactory, pType, removeDecoration } from "../../../index.js";
|
|
6
|
+
import { QuoteLinkAttr, quoteLinkType } from "../QuoteLinkSpecs/index.js";
|
|
7
|
+
import { LinkPlaceholderWidget, } from "../../../markdown/Link/PlaceholderWidget/widget.js";
|
|
8
|
+
import { isTextSelection } from "../../../../utils/index.js";
|
|
9
|
+
export class QuoteLinkWidgetDescriptor extends ReactWidgetDescriptor {
|
|
10
|
+
#domElem;
|
|
11
|
+
#view;
|
|
12
|
+
#getPos;
|
|
13
|
+
#schema;
|
|
14
|
+
normalizeUrl;
|
|
15
|
+
constructor(initPos, deps) {
|
|
16
|
+
super(initPos, 'quoteLink');
|
|
17
|
+
this.#domElem = document.createElement('span');
|
|
18
|
+
this.#schema = deps.schema;
|
|
19
|
+
this.normalizeUrl = normalizeUrlFactory(deps);
|
|
20
|
+
}
|
|
21
|
+
getDomElem() {
|
|
22
|
+
return this.#domElem;
|
|
23
|
+
}
|
|
24
|
+
renderReactElement(view, getPos) {
|
|
25
|
+
this.#view = view;
|
|
26
|
+
this.#getPos = getPos;
|
|
27
|
+
return _jsx(LinkPlaceholderWidget, { onCancel: this.onCancel, onSubmit: this.onSubmit });
|
|
28
|
+
}
|
|
29
|
+
onCancel = () => {
|
|
30
|
+
if (!this.#view)
|
|
31
|
+
return;
|
|
32
|
+
this.#view.dispatch(removeDecoration(this.#view.state.tr, this.id));
|
|
33
|
+
this.#view.focus();
|
|
34
|
+
};
|
|
35
|
+
onSubmit = (params) => {
|
|
36
|
+
const normalizeResult = this.normalizeUrl(params.url);
|
|
37
|
+
if (!normalizeResult || !this.#view || !this.#getPos)
|
|
38
|
+
return;
|
|
39
|
+
let tr = this.#view.state.tr;
|
|
40
|
+
const { url } = normalizeResult;
|
|
41
|
+
const text = params.text.trim() || normalizeResult.text;
|
|
42
|
+
const from = this.#getPos();
|
|
43
|
+
const isAllSelected = from === 1 && (!isTextSelection(tr.selection) || !tr.selection.$cursor);
|
|
44
|
+
const currentNodeWithPos = isAllSelected
|
|
45
|
+
? findParentNodeOfTypeClosestToPos(this.#view.state.doc.resolve(4), quoteLinkType(this.#view.state.schema))
|
|
46
|
+
: findParentNodeOfType(quoteLinkType(this.#view.state.schema))(this.#view.state.selection);
|
|
47
|
+
if (currentNodeWithPos) {
|
|
48
|
+
let content = currentNodeWithPos.node.content;
|
|
49
|
+
let contentSize = currentNodeWithPos.node.nodeSize - 4;
|
|
50
|
+
if (currentNodeWithPos.node.nodeSize <= 4 && text) {
|
|
51
|
+
content = pType(this.#view.state.schema).create(null, this.#schema?.text(text));
|
|
52
|
+
contentSize = text.length;
|
|
53
|
+
}
|
|
54
|
+
tr = tr.replaceWith(currentNodeWithPos.pos, currentNodeWithPos.pos + currentNodeWithPos.node.nodeSize, quoteLinkType(this.#view.state.schema).create({
|
|
55
|
+
[QuoteLinkAttr.Cite]: url,
|
|
56
|
+
[QuoteLinkAttr.DataContent]: text,
|
|
57
|
+
}, content));
|
|
58
|
+
tr.setSelection(TextSelection.create(tr.doc, from + contentSize));
|
|
59
|
+
}
|
|
60
|
+
this.#view.dispatch(tr);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export const addPlaceholder = (tr, deps) => {
|
|
64
|
+
const isAllSelected = tr.selection.from === 0 && (!isTextSelection(tr.selection) || !tr.selection.$cursor);
|
|
65
|
+
return new QuoteLinkWidgetDescriptor(tr.selection.from + (isAllSelected ? 1 : 0), deps).applyTo(tr);
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.js","sourceRoot":"../../../../../../src","sources":["extensions/additional/QuoteLink/PlaceholderWidget/descriptor.tsx"],"names":[],"mappings":"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","sourcesContent":["import type React from 'react';\n\nimport type {Fragment, Node} from 'prosemirror-model';\nimport type {Transaction} from 'prosemirror-state';\nimport {TextSelection} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {findParentNodeOfType, findParentNodeOfTypeClosestToPos} from 'prosemirror-utils';\nimport type {EditorView} from 'prosemirror-view';\n\nimport type {ExtensionDeps} from '#core';\nimport {ReactWidgetDescriptor, normalizeUrlFactory, pType, removeDecoration} from 'src/extensions';\nimport {QuoteLinkAttr, quoteLinkType} from 'src/extensions/additional/QuoteLink/QuoteLinkSpecs';\nimport {\n LinkPlaceholderWidget,\n type LinkPlaceholderWidgetProps,\n} from 'src/extensions/markdown/Link/PlaceholderWidget/widget';\nimport {isTextSelection} from 'src/utils';\n\nexport class QuoteLinkWidgetDescriptor extends ReactWidgetDescriptor {\n #domElem;\n #view?: EditorView;\n #getPos?: () => number;\n #schema?: ExtensionDeps['schema'];\n\n private normalizeUrl;\n\n constructor(initPos: number, deps: ExtensionDeps) {\n super(initPos, 'quoteLink');\n this.#domElem = document.createElement('span');\n this.#schema = deps.schema;\n this.normalizeUrl = normalizeUrlFactory(deps);\n }\n\n getDomElem(): HTMLElement {\n return this.#domElem;\n }\n\n renderReactElement(view: EditorView, getPos: () => number): React.ReactElement {\n this.#view = view;\n this.#getPos = getPos;\n return <LinkPlaceholderWidget onCancel={this.onCancel} onSubmit={this.onSubmit} />;\n }\n\n onCancel: LinkPlaceholderWidgetProps['onCancel'] = () => {\n if (!this.#view) return;\n\n this.#view.dispatch(removeDecoration(this.#view.state.tr, this.id));\n this.#view.focus();\n };\n\n onSubmit: LinkPlaceholderWidgetProps['onSubmit'] = (params) => {\n const normalizeResult = this.normalizeUrl(params.url);\n if (!normalizeResult || !this.#view || !this.#getPos) return;\n\n let tr = this.#view.state.tr;\n\n const {url} = normalizeResult;\n const text = params.text.trim() || normalizeResult.text;\n\n const from = this.#getPos();\n const isAllSelected =\n from === 1 && (!isTextSelection(tr.selection) || !tr.selection.$cursor);\n\n const currentNodeWithPos = isAllSelected\n ? findParentNodeOfTypeClosestToPos(\n this.#view.state.doc.resolve(4),\n quoteLinkType(this.#view.state.schema),\n )\n : findParentNodeOfType(quoteLinkType(this.#view.state.schema))(\n this.#view.state.selection,\n );\n\n if (currentNodeWithPos) {\n let content: Fragment | Node | undefined = currentNodeWithPos.node.content;\n let contentSize = currentNodeWithPos.node.nodeSize - 4;\n\n if (currentNodeWithPos.node.nodeSize <= 4 && text) {\n content = pType(this.#view.state.schema).create(null, this.#schema?.text(text));\n contentSize = text.length;\n }\n\n tr = tr.replaceWith(\n currentNodeWithPos.pos,\n currentNodeWithPos.pos + currentNodeWithPos.node.nodeSize,\n quoteLinkType(this.#view.state.schema).create(\n {\n [QuoteLinkAttr.Cite]: url,\n [QuoteLinkAttr.DataContent]: text,\n },\n content,\n ),\n );\n\n tr.setSelection(TextSelection.create(tr.doc, from + contentSize));\n }\n\n this.#view.dispatch(tr);\n };\n}\n\nexport const addPlaceholder = (tr: Transaction, deps: ExtensionDeps) => {\n const isAllSelected =\n tr.selection.from === 0 && (!isTextSelection(tr.selection) || !tr.selection.$cursor);\n return new QuoteLinkWidgetDescriptor(tr.selection.from + (isAllSelected ? 1 : 0), deps).applyTo(\n tr,\n );\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Node } from 'prosemirror-model';
|
|
2
|
+
import type { ExtensionAuto } from "../../../../core/index.js";
|
|
3
|
+
export declare const quoteLinkNodeName = "yfm_quote-link";
|
|
4
|
+
export declare const quoteLinkType: (schema: import("prosemirror-model").Schema) => import("prosemirror-model").NodeType;
|
|
5
|
+
export declare const isQuoteLinkNode: (node: Node) => boolean;
|
|
6
|
+
export declare enum QuoteLinkAttr {
|
|
7
|
+
Cite = "cite",
|
|
8
|
+
DataContent = "data-content"
|
|
9
|
+
}
|
|
10
|
+
export declare const QuoteLinkSpecs: ExtensionAuto;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { transform as quoteLink } from '@diplodoc/quote-link-extension';
|
|
2
|
+
import { nodeTypeFactory } from "../../../../utils/index.js";
|
|
3
|
+
import { moveLinkToQuoteAttributes } from "./md/moveLinkToQuoteAttributes.js";
|
|
4
|
+
export const quoteLinkNodeName = 'yfm_quote-link';
|
|
5
|
+
export const quoteLinkType = nodeTypeFactory(quoteLinkNodeName);
|
|
6
|
+
export const isQuoteLinkNode = (node) => node.type.name === quoteLinkNodeName;
|
|
7
|
+
export var QuoteLinkAttr;
|
|
8
|
+
(function (QuoteLinkAttr) {
|
|
9
|
+
QuoteLinkAttr["Cite"] = "cite";
|
|
10
|
+
QuoteLinkAttr["DataContent"] = "data-content";
|
|
11
|
+
})(QuoteLinkAttr || (QuoteLinkAttr = {}));
|
|
12
|
+
export const QuoteLinkSpecs = (builder) => {
|
|
13
|
+
builder
|
|
14
|
+
.configureMd((md) => md
|
|
15
|
+
.use(quoteLink({
|
|
16
|
+
bundle: false,
|
|
17
|
+
}))
|
|
18
|
+
.use(moveLinkToQuoteAttributes))
|
|
19
|
+
.addNode(quoteLinkNodeName, () => ({
|
|
20
|
+
spec: {
|
|
21
|
+
attrs: {
|
|
22
|
+
class: { default: 'yfm-quote-link' },
|
|
23
|
+
[QuoteLinkAttr.Cite]: { default: '' },
|
|
24
|
+
[QuoteLinkAttr.DataContent]: { default: '' },
|
|
25
|
+
},
|
|
26
|
+
content: 'block+',
|
|
27
|
+
group: 'block',
|
|
28
|
+
defining: true,
|
|
29
|
+
parseDOM: [
|
|
30
|
+
{
|
|
31
|
+
tag: '.yfm-quote-link',
|
|
32
|
+
getAttrs(dom) {
|
|
33
|
+
return {
|
|
34
|
+
[QuoteLinkAttr.Cite]: dom.getAttribute(QuoteLinkAttr.Cite),
|
|
35
|
+
[QuoteLinkAttr.DataContent]: dom.getAttribute(QuoteLinkAttr.DataContent),
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
priority: builder.Priority.VeryHigh,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
toDOM(node) {
|
|
42
|
+
return ['blockquote', node.attrs, 0];
|
|
43
|
+
},
|
|
44
|
+
selectable: true,
|
|
45
|
+
},
|
|
46
|
+
fromMd: {
|
|
47
|
+
tokenSpec: {
|
|
48
|
+
name: quoteLinkNodeName,
|
|
49
|
+
type: 'block',
|
|
50
|
+
getAttrs: (tok) => ({
|
|
51
|
+
[QuoteLinkAttr.Cite]: tok.attrGet('cite'),
|
|
52
|
+
[QuoteLinkAttr.DataContent]: tok.attrGet('data-content') || null,
|
|
53
|
+
}),
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
toMd: (state, node) => {
|
|
57
|
+
state.wrapBlock('> ', null, node, () => {
|
|
58
|
+
state.write(`[${node.attrs[QuoteLinkAttr.DataContent]}](${node.attrs[QuoteLinkAttr.Cite]}){data-quotelink=true}`);
|
|
59
|
+
state.write('\n');
|
|
60
|
+
state.write('\n');
|
|
61
|
+
state.renderContent(node);
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/additional/QuoteLink/QuoteLinkSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,IAAI,SAAS,EAAC,MAAM,gCAAgC,CAAC;AAItE,OAAO,EAAC,eAAe,EAAC,mCAAkB;AAE1C,OAAO,EAAC,yBAAyB,EAAC,0CAAuC;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC;AAEpF,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,8BAAa,CAAA;IACb,6CAA4B,CAAA;AAChC,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAC,MAAM,cAAc,GAAkB,CAAC,OAAO,EAAE,EAAE;IACrD,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAChB,EAAE;SACG,GAAG,CACA,SAAS,CAAC;QACN,MAAM,EAAE,KAAK;KAChB,CAAC,CACL;SACA,GAAG,CAAC,yBAAyB,CAAC,CACtC;SACA,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE;YACF,KAAK,EAAE;gBACH,KAAK,EAAE,EAAC,OAAO,EAAE,gBAAgB,EAAC;gBAClC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,EAAE,EAAC;gBACnC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAC,OAAO,EAAE,EAAE,EAAC;aAC7C;YACD,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE;gBACN;oBACI,GAAG,EAAE,iBAAiB;oBACtB,QAAQ,CAAC,GAAG;wBACR,OAAO;4BACH,CAAC,aAAa,CAAC,IAAI,CAAC,EAAG,GAAe,CAAC,YAAY,CAC/C,aAAa,CAAC,IAAI,CACrB;4BACD,CAAC,aAAa,CAAC,WAAW,CAAC,EAAG,GAAe,CAAC,YAAY,CACtD,aAAa,CAAC,WAAW,CAC5B;yBACJ,CAAC;oBACN,CAAC;oBACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;iBACtC;aACJ;YACD,KAAK,CAAC,IAAI;gBACN,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,UAAU,EAAE,IAAI;SACnB;QACD,MAAM,EAAE;YACJ,SAAS,EAAE;gBACP,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;oBACzC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI;iBACnE,CAAC;aACL;SACJ;QACD,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAClB,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBACnC,KAAK,CAAC,KAAK,CACP,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KACrC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CACjC,wBAAwB,CAC3B,CAAC;gBACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import {transform as quoteLink} from '@diplodoc/quote-link-extension';\nimport type {Node} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '#core';\nimport {nodeTypeFactory} from 'src/utils';\n\nimport {moveLinkToQuoteAttributes} from './md/moveLinkToQuoteAttributes';\n\nexport const quoteLinkNodeName = 'yfm_quote-link';\nexport const quoteLinkType = nodeTypeFactory(quoteLinkNodeName);\nexport const isQuoteLinkNode = (node: Node) => node.type.name === quoteLinkNodeName;\n\nexport enum QuoteLinkAttr {\n Cite = 'cite',\n DataContent = 'data-content',\n}\n\nexport const QuoteLinkSpecs: ExtensionAuto = (builder) => {\n builder\n .configureMd((md) =>\n md\n .use(\n quoteLink({\n bundle: false,\n }),\n )\n .use(moveLinkToQuoteAttributes),\n )\n .addNode(quoteLinkNodeName, () => ({\n spec: {\n attrs: {\n class: {default: 'yfm-quote-link'},\n [QuoteLinkAttr.Cite]: {default: ''},\n [QuoteLinkAttr.DataContent]: {default: ''},\n },\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [\n {\n tag: '.yfm-quote-link',\n getAttrs(dom) {\n return {\n [QuoteLinkAttr.Cite]: (dom as Element).getAttribute(\n QuoteLinkAttr.Cite,\n ),\n [QuoteLinkAttr.DataContent]: (dom as Element).getAttribute(\n QuoteLinkAttr.DataContent,\n ),\n };\n },\n priority: builder.Priority.VeryHigh,\n },\n ],\n toDOM(node) {\n return ['blockquote', node.attrs, 0];\n },\n selectable: true,\n },\n fromMd: {\n tokenSpec: {\n name: quoteLinkNodeName,\n type: 'block',\n getAttrs: (tok) => ({\n [QuoteLinkAttr.Cite]: tok.attrGet('cite'),\n [QuoteLinkAttr.DataContent]: tok.attrGet('data-content') || null,\n }),\n },\n },\n toMd: (state, node) => {\n state.wrapBlock('> ', null, node, () => {\n state.write(\n `[${node.attrs[QuoteLinkAttr.DataContent]}](${\n node.attrs[QuoteLinkAttr.Cite]\n }){data-quotelink=true}`,\n );\n state.write('\\n');\n state.write('\\n');\n state.renderContent(node);\n });\n },\n }));\n};\n"]}
|
package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { matchLinkAtInlineStart } from "./utils.js";
|
|
2
|
+
import { QuoteLinkAttr } from "../index.js";
|
|
3
|
+
export const moveLinkToQuoteAttributes = (md) => {
|
|
4
|
+
md.core.ruler.push('move-link-to-quote-attributes', (state) => {
|
|
5
|
+
const { tokens } = state;
|
|
6
|
+
let i = 0;
|
|
7
|
+
while (i < tokens.length) {
|
|
8
|
+
const token = tokens[i];
|
|
9
|
+
if (token.type === 'yfm_quote-link_open') {
|
|
10
|
+
const inlineToken = tokens[i + 2];
|
|
11
|
+
const linkMatch = matchLinkAtInlineStart(inlineToken);
|
|
12
|
+
if (linkMatch?.openToken.attrIndex('data-quotelink') !== -1 &&
|
|
13
|
+
linkMatch?.closeTokenIndex) {
|
|
14
|
+
token.attrSet(QuoteLinkAttr.Cite, linkMatch?.openToken.attrGet('href') ?? '');
|
|
15
|
+
const content = inlineToken.children
|
|
16
|
+
?.slice(1, linkMatch.closeTokenIndex)
|
|
17
|
+
.reduce((result, item) => result + item.content, '')
|
|
18
|
+
.trim();
|
|
19
|
+
if (content) {
|
|
20
|
+
token.attrSet(QuoteLinkAttr.DataContent, content);
|
|
21
|
+
}
|
|
22
|
+
if (linkMatch.closeTokenIndex === (inlineToken.children?.length ?? 0) - 1) {
|
|
23
|
+
tokens.splice(i + 1, 3);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
inlineToken.children?.splice(0, linkMatch.closeTokenIndex + 1);
|
|
27
|
+
if (inlineToken.children?.every((childToken) => !childToken.content)) {
|
|
28
|
+
tokens.splice(i + 1, 3);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=moveLinkToQuoteAttributes.js.map
|
package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveLinkToQuoteAttributes.js","sourceRoot":"../../../../../../../src","sources":["extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAC,mBAAoE;AAEnG,OAAO,EAAC,aAAa,EAAC,oBAAW;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAiB,CAAC,EAAE,EAAE,EAAE;IAC1D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1D,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBAEtD,IACI,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBACvD,SAAS,EAAE,eAAe,EAC5B,CAAC;oBACC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9E,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ;wBAChC,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC;yBACpC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;yBACnD,IAAI,EAAE,CAAC;oBACZ,IAAI,OAAO,EAAE,CAAC;wBACV,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;oBACtD,CAAC;oBAED,IAAI,SAAS,CAAC,eAAe,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACJ,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;wBAC/D,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BACnE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC5B,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC","sourcesContent":["import type {PluginSimple} from 'markdown-it';\n\nimport {matchLinkAtInlineStart} from 'src/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils';\n\nimport {QuoteLinkAttr} from '..';\n\nexport const moveLinkToQuoteAttributes: PluginSimple = (md) => {\n md.core.ruler.push('move-link-to-quote-attributes', (state) => {\n const {tokens} = state;\n\n let i = 0;\n\n while (i < tokens.length) {\n const token = tokens[i];\n if (token.type === 'yfm_quote-link_open') {\n const inlineToken = tokens[i + 2];\n const linkMatch = matchLinkAtInlineStart(inlineToken);\n\n if (\n linkMatch?.openToken.attrIndex('data-quotelink') !== -1 &&\n linkMatch?.closeTokenIndex\n ) {\n token.attrSet(QuoteLinkAttr.Cite, linkMatch?.openToken.attrGet('href') ?? '');\n const content = inlineToken.children\n ?.slice(1, linkMatch.closeTokenIndex)\n .reduce((result, item) => result + item.content, '')\n .trim();\n if (content) {\n token.attrSet(QuoteLinkAttr.DataContent, content);\n }\n\n if (linkMatch.closeTokenIndex === (inlineToken.children?.length ?? 0) - 1) {\n tokens.splice(i + 1, 3);\n } else {\n inlineToken.children?.splice(0, linkMatch.closeTokenIndex + 1);\n if (inlineToken.children?.every((childToken) => !childToken.content)) {\n tokens.splice(i + 1, 3);\n }\n }\n }\n }\n\n i++;\n }\n });\n};\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function matchLinkAtInlineStart(inlineToken) {
|
|
2
|
+
if (inlineToken.type !== 'inline' || !inlineToken.children?.length) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const { children: tokens } = inlineToken;
|
|
6
|
+
if (tokens[0].type !== 'link_open') {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
10
|
+
const token = tokens[i];
|
|
11
|
+
if (token.type === 'link_close') {
|
|
12
|
+
return {
|
|
13
|
+
openToken: tokens[0],
|
|
14
|
+
closeToken: token,
|
|
15
|
+
closeTokenIndex: i,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"../../../../../../../src","sources":["extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,WAAkB;IACrD,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,GAAG,WAAW,CAAC;IACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO;gBACH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpB,UAAU,EAAE,KAAK;gBACjB,eAAe,EAAE,CAAC;aACrB,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC","sourcesContent":["import type Token from 'markdown-it/lib/token';\n\nexport function matchLinkAtInlineStart(inlineToken: Token) {\n if (inlineToken.type !== 'inline' || !inlineToken.children?.length) {\n return null;\n }\n\n const {children: tokens} = inlineToken;\n if (tokens[0].type !== 'link_open') {\n return null;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type === 'link_close') {\n return {\n openToken: tokens[0],\n closeToken: token,\n closeTokenIndex: i,\n };\n }\n }\n\n return null;\n}\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { wrapIn } from 'prosemirror-commands';
|
|
2
|
+
import { isTextSelection } from "../../../utils/index.js";
|
|
3
|
+
import "../../../types/spec.js";
|
|
4
|
+
import { addQuoteLinkPlaceholder } from "./PlaceholderWidget/commands.js";
|
|
5
|
+
import { isQuoteLinkNode, quoteLinkType } from "./QuoteLinkSpecs/index.js";
|
|
6
|
+
export const toggleQuote = (state, dispatch) => {
|
|
7
|
+
const { selection } = state;
|
|
8
|
+
const qType = quoteLinkType(state.schema);
|
|
9
|
+
if (!isTextSelection(selection) || !selection.$cursor)
|
|
10
|
+
return wrapIn(qType)(state, dispatch);
|
|
11
|
+
const { $cursor } = selection;
|
|
12
|
+
let { depth } = $cursor;
|
|
13
|
+
while (depth > 0) {
|
|
14
|
+
const node = $cursor.node(depth);
|
|
15
|
+
const nodeSpec = node.type.spec;
|
|
16
|
+
if (!nodeSpec.complex || nodeSpec.complex === 'root') {
|
|
17
|
+
const targetDepth = depth - 1;
|
|
18
|
+
const range = getBlockRange($cursor, depth);
|
|
19
|
+
let tr = state.tr;
|
|
20
|
+
if (isQuoteLinkNode($cursor.node(targetDepth))) {
|
|
21
|
+
tr = tr.lift(range, targetDepth - 1).scrollIntoView();
|
|
22
|
+
dispatch?.(tr);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
tr = tr.wrap(range, [{ type: qType }]).scrollIntoView();
|
|
26
|
+
dispatch?.(tr);
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
depth--;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
};
|
|
34
|
+
function getBlockRange($pos, depth) {
|
|
35
|
+
const { doc } = $pos;
|
|
36
|
+
const $before = doc.resolve($pos.before(depth));
|
|
37
|
+
const $after = doc.resolve($pos.after(depth));
|
|
38
|
+
return $before.blockRange($after);
|
|
39
|
+
}
|
|
40
|
+
export const addQuoteLink = addQuoteLinkPlaceholder;
|
|
41
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"../../../../../src","sources":["extensions/additional/QuoteLink/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAC,eAAe,EAAC,gCAAkB;AAE1C,gCAA6B;AAE7B,OAAO,EAAC,uBAAuB,EAAC,wCAAqC;AACrE,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,kCAAyB;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACpD,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7F,MAAM,EAAC,OAAO,EAAC,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAC,KAAK,EAAC,GAAG,OAAO,CAAC;IACtB,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBAC7C,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACvD,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACJ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACvD,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,KAAK,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,SAAS,aAAa,CAAC,IAAiB,EAAE,KAAc;IACpD,MAAM,EAAC,GAAG,EAAC,GAAG,IAAI,CAAC;IACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,uBAAuB,CAAC","sourcesContent":["import {wrapIn} from 'prosemirror-commands';\nimport type {ResolvedPos} from 'prosemirror-model';\nimport type {Command} from 'prosemirror-state';\n\nimport {isTextSelection} from 'src/utils';\n\nimport '../../../types/spec';\n\nimport {addQuoteLinkPlaceholder} from './PlaceholderWidget/commands';\nimport {isQuoteLinkNode, quoteLinkType} from './QuoteLinkSpecs';\n\nexport const toggleQuote: Command = (state, dispatch) => {\n const {selection} = state;\n const qType = quoteLinkType(state.schema);\n if (!isTextSelection(selection) || !selection.$cursor) return wrapIn(qType)(state, dispatch);\n const {$cursor} = selection;\n let {depth} = $cursor;\n while (depth > 0) {\n const node = $cursor.node(depth);\n const nodeSpec = node.type.spec;\n if (!nodeSpec.complex || nodeSpec.complex === 'root') {\n const targetDepth = depth - 1;\n const range = getBlockRange($cursor, depth);\n let tr = state.tr;\n if (isQuoteLinkNode($cursor.node(targetDepth))) {\n tr = tr.lift(range!, targetDepth - 1).scrollIntoView();\n dispatch?.(tr);\n } else {\n tr = tr.wrap(range!, [{type: qType}]).scrollIntoView();\n dispatch?.(tr);\n }\n\n return true;\n }\n depth--;\n }\n\n return false;\n};\n\nfunction getBlockRange($pos: ResolvedPos, depth?: number) {\n const {doc} = $pos;\n const $before = doc.resolve($pos.before(depth));\n const $after = doc.resolve($pos.after(depth));\n return $before.blockRange($after);\n}\n\nexport const addQuoteLink = addQuoteLinkPlaceholder;\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.yfm-quote-link {
|
|
2
|
+
--yfm-quote-link-background: var(--g-color-private-black-50-solid);
|
|
3
|
+
--yfm-quote-link-background-hover: var(--g-color-base-simple-hover);
|
|
4
|
+
}
|
|
5
|
+
.yfm-quote-link * {
|
|
6
|
+
position: relative;
|
|
7
|
+
z-index: 1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.g-root_theme_dark .yfm-quote-link,
|
|
11
|
+
.g-root_theme_dark-hc .yfm-quote-link {
|
|
12
|
+
--yfm-quote-link-background: var(--g-color-private-white-100-solid);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.yfm-cut:not(.yfm-cut-active) .yfm-cut-content:has(> .yfm-quote-link) {
|
|
16
|
+
padding: 0;
|
|
17
|
+
}
|
|
18
|
+
.yfm-cut:not(.yfm-cut-active) .yfm-cut-content:has(> .yfm-quote-link) > .yfm-quote-link {
|
|
19
|
+
padding-top: var(--g-spacing-2);
|
|
20
|
+
padding-left: var(--g-spacing-7);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.yfm-editor .yfm-quote-link {
|
|
24
|
+
background-color: var(--yfm-quote-link-background);
|
|
25
|
+
}
|
|
26
|
+
.yfm-editor .yfm-quote-link .g-md-img-settings-button,
|
|
27
|
+
.yfm-editor .yfm-quote-link .yfm-clipboard-button {
|
|
28
|
+
position: absolute;
|
|
29
|
+
z-index: 2;
|
|
30
|
+
}
|
|
31
|
+
.yfm-editor .yfm-quote-link .g-button__icon-inner {
|
|
32
|
+
position: absolute;
|
|
33
|
+
}
|
|
34
|
+
.yfm-editor .yfm-quote-link p {
|
|
35
|
+
max-width: unset;
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import '@diplodoc/quote-link-extension/runtime';
|
|
2
|
+
import type { Action, ExtensionAuto } from "../../../core/index.js";
|
|
3
|
+
import "./index.css";
|
|
4
|
+
import '@diplodoc/quote-link-extension/runtime/styles.css';
|
|
5
|
+
declare const quoteLinkAction = "quoteLink";
|
|
6
|
+
declare const addLinkToQuoteLinkAction = "addLinkToQuoteLink";
|
|
7
|
+
export declare const QuoteLink: ExtensionAuto;
|
|
8
|
+
declare global {
|
|
9
|
+
namespace WysiwygEditor {
|
|
10
|
+
interface Actions {
|
|
11
|
+
[quoteLinkAction]: Action;
|
|
12
|
+
[addLinkToQuoteLinkAction]: Action;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import '@diplodoc/quote-link-extension/runtime';
|
|
2
|
+
// @ts-ignore // TODO: fix cjs build
|
|
3
|
+
import { hasParentNodeOfType } from 'prosemirror-utils';
|
|
4
|
+
import { linkType } from "../../index.js";
|
|
5
|
+
import { isMarkActive, wrappingInputRule } from "../../../utils/index.js";
|
|
6
|
+
import { QuoteLinkSpecs, quoteLinkType } from "./QuoteLinkSpecs/index.js";
|
|
7
|
+
import { addQuoteLink, toggleQuote } from "./commands.js";
|
|
8
|
+
import "./index.css";
|
|
9
|
+
import '@diplodoc/quote-link-extension/runtime/styles.css';
|
|
10
|
+
const quoteLinkAction = 'quoteLink';
|
|
11
|
+
const addLinkToQuoteLinkAction = 'addLinkToQuoteLink';
|
|
12
|
+
export const QuoteLink = (builder) => {
|
|
13
|
+
builder.use(QuoteLinkSpecs);
|
|
14
|
+
builder.addInputRules(({ schema }) => ({
|
|
15
|
+
rules: [quoteLinkInputRule(quoteLinkType(schema))],
|
|
16
|
+
}));
|
|
17
|
+
builder.addAction(quoteLinkAction, ({ schema }) => {
|
|
18
|
+
const quoteLink = quoteLinkType(schema);
|
|
19
|
+
return {
|
|
20
|
+
isActive: (state) => hasParentNodeOfType(quoteLink)(state.selection),
|
|
21
|
+
isEnable: toggleQuote,
|
|
22
|
+
run: toggleQuote,
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
builder.addAction(addLinkToQuoteLinkAction, (deps) => ({
|
|
26
|
+
isActive: (state) => Boolean(isMarkActive(state, linkType(state.schema))),
|
|
27
|
+
isEnable: addQuoteLink(deps),
|
|
28
|
+
run: addQuoteLink(deps),
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Given a quoteLink node type, returns an input rule that turns `"> "`
|
|
33
|
+
* at the start of a textblock into a quoteLink.
|
|
34
|
+
*/
|
|
35
|
+
function quoteLinkInputRule(nodeType) {
|
|
36
|
+
return wrappingInputRule(/^\s*>\s$/, nodeType);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/additional/QuoteLink/index.ts"],"names":[],"mappings":"AAAA,OAAO,wCAAwC,CAAC;AAEhD,oCAAoC;AACpC,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAC,QAAQ,EAAC,uBAAuB;AACxC,OAAO,EAAC,YAAY,EAAE,iBAAiB,EAAC,gCAAkB;AAE1D,OAAO,EAAC,cAAc,EAAE,aAAa,EAAC,kCAAyB;AAC/D,OAAO,EAAC,YAAY,EAAE,WAAW,EAAC,sBAAmB;AAErD,qBAAsB;AACtB,OAAO,mDAAmD,CAAC;AAE3D,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,SAAS,GAAkB,CAAC,OAAO,EAAE,EAAE;IAChD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE5B,OAAO,CAAC,aAAa,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;KACrD,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE;QAC5C,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAExC,OAAO;YACH,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACpE,QAAQ,EAAE,WAAW;YACrB,GAAG,EAAE,WAAW;SACnB,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5B,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC;KAC1B,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAEF;;;GAGG;AACH,SAAS,kBAAkB,CAAC,QAAkB;IAC1C,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC","sourcesContent":["import '@diplodoc/quote-link-extension/runtime';\nimport type {NodeType} from 'prosemirror-model';\n// @ts-ignore // TODO: fix cjs build\nimport {hasParentNodeOfType} from 'prosemirror-utils';\n\nimport type {Action, ExtensionAuto} from '#core';\nimport {linkType} from 'src/extensions';\nimport {isMarkActive, wrappingInputRule} from 'src/utils';\n\nimport {QuoteLinkSpecs, quoteLinkType} from './QuoteLinkSpecs';\nimport {addQuoteLink, toggleQuote} from './commands';\n\nimport './index.scss';\nimport '@diplodoc/quote-link-extension/runtime/styles.css';\n\nconst quoteLinkAction = 'quoteLink';\n\nconst addLinkToQuoteLinkAction = 'addLinkToQuoteLink';\n\nexport const QuoteLink: ExtensionAuto = (builder) => {\n builder.use(QuoteLinkSpecs);\n\n builder.addInputRules(({schema}) => ({\n rules: [quoteLinkInputRule(quoteLinkType(schema))],\n }));\n\n builder.addAction(quoteLinkAction, ({schema}) => {\n const quoteLink = quoteLinkType(schema);\n\n return {\n isActive: (state) => hasParentNodeOfType(quoteLink)(state.selection),\n isEnable: toggleQuote,\n run: toggleQuote,\n };\n });\n\n builder.addAction(addLinkToQuoteLinkAction, (deps) => ({\n isActive: (state) => Boolean(isMarkActive(state, linkType(state.schema))),\n isEnable: addQuoteLink(deps),\n run: addQuoteLink(deps),\n }));\n};\n\n/**\n * Given a quoteLink node type, returns an input rule that turns `\"> \"`\n * at the start of a textblock into a quoteLink.\n */\nfunction quoteLinkInputRule(nodeType: NodeType) {\n return wrappingInputRule(/^\\s*>\\s$/, nodeType);\n}\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n [quoteLinkAction]: Action;\n [addLinkToQuoteLinkAction]: Action;\n }\n }\n}\n"]}
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
const sanitizeAll = () => {
|
|
3
|
-
console.warn('[YfmHtmlBlock]: sanitize function not found');
|
|
4
|
-
return '';
|
|
5
|
-
};
|
|
6
|
-
const getSanitizeFunction = () => {
|
|
7
|
-
const module = sanitizeModule;
|
|
8
|
-
const sanitize = 'sanitize' in module && module.sanitize ? module.sanitize : module.default;
|
|
9
|
-
return sanitize instanceof Function ? sanitize : sanitizeAll;
|
|
10
|
-
};
|
|
1
|
+
import { getSanitize } from "../../../utils/getSanitize.js";
|
|
11
2
|
// MAJOR: use `import {sanitize} from '@diplodoc/transform/lib/sanitize.js'`
|
|
12
|
-
const diplodocSanitize =
|
|
3
|
+
const diplodocSanitize = getSanitize('YfmHtmlBlock');
|
|
13
4
|
// yfmHtmlBlock additional css properties white list
|
|
14
5
|
const getYfmHtmlBlockWhiteList = () => {
|
|
15
6
|
const whiteList = {};
|