@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":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/additional/YfmHtmlBlock/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SanitizeOptions} from '@diplodoc/transform/lib/sanitize.js';\nimport * as sanitizeModule from '@diplodoc/transform/lib/sanitize.js';\n\ntype SanitizeFn = (\n html: string,\n options?: SanitizeOptions,\n additionalOptions?: SanitizeOptions,\n) => string;\n\ninterface SanitizeModule {\n sanitize?: SanitizeFn;\n default?: SanitizeFn;\n}\n\nconst sanitizeAll = () => {\n console.warn('[YfmHtmlBlock]: sanitize function not found');\n return '';\n};\nconst getSanitizeFunction = (): SanitizeFn => {\n const module = sanitizeModule as SanitizeModule;\n const sanitize = 'sanitize' in module && module.sanitize ? module.sanitize : module.default;\n return sanitize instanceof Function ? sanitize : sanitizeAll;\n};\n\n// MAJOR: use `import {sanitize} from '@diplodoc/transform/lib/sanitize.js'`\nconst diplodocSanitize = getSanitizeFunction();\n\n// yfmHtmlBlock additional css properties white list\nconst getYfmHtmlBlockWhiteList = () => {\n const whiteList: Record<string, boolean> = {};\n\n // flex, grid, column\n whiteList['align-content'] = true; // default: auto\n whiteList['align-items'] = true; // default: auto\n whiteList['align-self'] = true; // default: auto\n whiteList.columns = true; // default: depending on individual properties\n whiteList['column-count'] = true; // default: auto\n whiteList['column-fill'] = true; // default: balance\n whiteList['column-gap'] = true; // default: normal\n whiteList['column-rule'] = true; // default: depending on individual properties\n whiteList['column-rule-color'] = true; // default: current color\n whiteList['column-rule-style'] = true; // default: medium\n whiteList['column-rule-width'] = true; // default: medium\n whiteList['column-span'] = true; // default: none\n whiteList['column-width'] = true; // default: auto\n whiteList.flex = true; // default: depending on individual properties\n whiteList['flex-basis'] = true; // default: auto\n whiteList['flex-direction'] = true; // default: row\n whiteList['flex-flow'] = true; // default: depending on individual properties\n whiteList['flex-grow'] = true; // default: 0\n whiteList['flex-shrink'] = true; // default: 1\n whiteList['flex-wrap'] = true; // default: nowrap\n whiteList.gap = true; // default: normal normal\n whiteList.grid = true; // default: depending on individual properties\n whiteList['grid-area'] = true; // default: depending on individual properties\n whiteList['grid-auto-columns'] = true; // default: auto\n whiteList['grid-auto-flow'] = true; // default: none\n whiteList['grid-auto-rows'] = true; // default: auto\n whiteList['grid-column'] = true; // default: depending on individual properties\n whiteList['grid-column-end'] = true; // default: auto\n whiteList['grid-column-start'] = true; // default: auto\n whiteList['grid-row'] = true; // default: depending on individual properties\n whiteList['grid-row-end'] = true; // default: auto\n whiteList['grid-row-start'] = true; // default: auto\n whiteList['grid-template'] = true; // default: depending on individual properties\n whiteList['grid-template-areas'] = true; // default: none\n whiteList['grid-template-columns'] = true; // default: none\n whiteList['grid-template-rows'] = true; // default: none\n whiteList['justify-content'] = true; // default: auto\n whiteList['justify-items'] = true; // default: auto\n whiteList['justify-self'] = true; // default: auto\n whiteList['line-height'] = true; // default: normal\n whiteList['object-fit'] = true; // default: fill\n whiteList['object-position'] = true; // default: 50% 50%\n whiteList.order = true; // default: 0\n whiteList.orphans = true; // default: 2\n whiteList['row-gap'] = true;\n\n // position, opacity, overflow\n whiteList['all'] = true; // default: depending on individual properties\n whiteList['bottom'] = true; // default: auto\n whiteList['content'] = true; // default: normal\n whiteList['cursor'] = true; // default: auto\n whiteList['direction'] = true; // default: ltr\n whiteList['left'] = true; // default: auto\n whiteList['line-break'] = true; // default: auto\n whiteList['opacity'] = true; // default: 1\n whiteList['overflow'] = true; // default: depending on individual properties\n whiteList['overflow-wrap'] = true; // default: normal\n whiteList['overflow-x'] = true; // default: visible\n whiteList['overflow-y'] = true; // default: visible\n whiteList['position'] = true; // default: static\n whiteList['right'] = true; // default: auto\n whiteList['top'] = true; // default: auto\n whiteList['white-space'] = true; // default: normal\n whiteList['z-index'] = true; // default: auto\n\n return whiteList;\n};\n\n// yfmHtmlBlock additional allowedTags\nconst yfmHtmlBlockAllowedTags = ['link', 'base', 'style'];\n\n// yfmHtmlBlock additional allowedTags\nconst yfmHtmlBlockAllowedAttributes = {\n link: ['rel', 'href'],\n base: ['target'],\n style: [],\n};\n\nexport const getYfmHtmlBlockOptions = (defaultOptions: SanitizeOptions): SanitizeOptions => {\n type AllowedAttributesType = Record<\n string,\n (string | {name: string; multiple?: boolean | undefined; values: string[]})[]\n >;\n const defaultAllowedAttributes = defaultOptions.allowedAttributes as AllowedAttributesType;\n\n return {\n ...defaultOptions,\n allowedAttributes: {\n ...defaultAllowedAttributes,\n ...yfmHtmlBlockAllowedAttributes,\n },\n allowedTags:\n typeof defaultOptions.allowedTags === 'boolean'\n ? defaultOptions.allowedTags\n : [...(defaultOptions.allowedTags ?? []), ...yfmHtmlBlockAllowedTags],\n cssWhiteList: {\n ...defaultOptions.cssWhiteList,\n ...getYfmHtmlBlockWhiteList(),\n },\n };\n};\n\nexport interface GetSanitizeYfmHtmlBlockArgs {\n options: SanitizeOptions;\n sanitize?: (html: string, options?: SanitizeOptions) => string;\n}\nexport const getSanitizeYfmHtmlBlock =\n ({options, sanitize = diplodocSanitize}: GetSanitizeYfmHtmlBlockArgs) =>\n (content: string) =>\n sanitize(content, getYfmHtmlBlockOptions(options));\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/additional/YfmHtmlBlock/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SanitizeOptions} from '@diplodoc/transform/lib/sanitize.js';\n\nimport {getSanitize} from 'src/utils/getSanitize';\n\n// MAJOR: use `import {sanitize} from '@diplodoc/transform/lib/sanitize.js'`\nconst diplodocSanitize = getSanitize('YfmHtmlBlock');\n\n// yfmHtmlBlock additional css properties white list\nconst getYfmHtmlBlockWhiteList = () => {\n const whiteList: Record<string, boolean> = {};\n\n // flex, grid, column\n whiteList['align-content'] = true; // default: auto\n whiteList['align-items'] = true; // default: auto\n whiteList['align-self'] = true; // default: auto\n whiteList.columns = true; // default: depending on individual properties\n whiteList['column-count'] = true; // default: auto\n whiteList['column-fill'] = true; // default: balance\n whiteList['column-gap'] = true; // default: normal\n whiteList['column-rule'] = true; // default: depending on individual properties\n whiteList['column-rule-color'] = true; // default: current color\n whiteList['column-rule-style'] = true; // default: medium\n whiteList['column-rule-width'] = true; // default: medium\n whiteList['column-span'] = true; // default: none\n whiteList['column-width'] = true; // default: auto\n whiteList.flex = true; // default: depending on individual properties\n whiteList['flex-basis'] = true; // default: auto\n whiteList['flex-direction'] = true; // default: row\n whiteList['flex-flow'] = true; // default: depending on individual properties\n whiteList['flex-grow'] = true; // default: 0\n whiteList['flex-shrink'] = true; // default: 1\n whiteList['flex-wrap'] = true; // default: nowrap\n whiteList.gap = true; // default: normal normal\n whiteList.grid = true; // default: depending on individual properties\n whiteList['grid-area'] = true; // default: depending on individual properties\n whiteList['grid-auto-columns'] = true; // default: auto\n whiteList['grid-auto-flow'] = true; // default: none\n whiteList['grid-auto-rows'] = true; // default: auto\n whiteList['grid-column'] = true; // default: depending on individual properties\n whiteList['grid-column-end'] = true; // default: auto\n whiteList['grid-column-start'] = true; // default: auto\n whiteList['grid-row'] = true; // default: depending on individual properties\n whiteList['grid-row-end'] = true; // default: auto\n whiteList['grid-row-start'] = true; // default: auto\n whiteList['grid-template'] = true; // default: depending on individual properties\n whiteList['grid-template-areas'] = true; // default: none\n whiteList['grid-template-columns'] = true; // default: none\n whiteList['grid-template-rows'] = true; // default: none\n whiteList['justify-content'] = true; // default: auto\n whiteList['justify-items'] = true; // default: auto\n whiteList['justify-self'] = true; // default: auto\n whiteList['line-height'] = true; // default: normal\n whiteList['object-fit'] = true; // default: fill\n whiteList['object-position'] = true; // default: 50% 50%\n whiteList.order = true; // default: 0\n whiteList.orphans = true; // default: 2\n whiteList['row-gap'] = true;\n\n // position, opacity, overflow\n whiteList['all'] = true; // default: depending on individual properties\n whiteList['bottom'] = true; // default: auto\n whiteList['content'] = true; // default: normal\n whiteList['cursor'] = true; // default: auto\n whiteList['direction'] = true; // default: ltr\n whiteList['left'] = true; // default: auto\n whiteList['line-break'] = true; // default: auto\n whiteList['opacity'] = true; // default: 1\n whiteList['overflow'] = true; // default: depending on individual properties\n whiteList['overflow-wrap'] = true; // default: normal\n whiteList['overflow-x'] = true; // default: visible\n whiteList['overflow-y'] = true; // default: visible\n whiteList['position'] = true; // default: static\n whiteList['right'] = true; // default: auto\n whiteList['top'] = true; // default: auto\n whiteList['white-space'] = true; // default: normal\n whiteList['z-index'] = true; // default: auto\n\n return whiteList;\n};\n\n// yfmHtmlBlock additional allowedTags\nconst yfmHtmlBlockAllowedTags = ['link', 'base', 'style'];\n\n// yfmHtmlBlock additional allowedTags\nconst yfmHtmlBlockAllowedAttributes = {\n link: ['rel', 'href'],\n base: ['target'],\n style: [],\n};\n\nexport const getYfmHtmlBlockOptions = (defaultOptions: SanitizeOptions): SanitizeOptions => {\n type AllowedAttributesType = Record<\n string,\n (string | {name: string; multiple?: boolean | undefined; values: string[]})[]\n >;\n const defaultAllowedAttributes = defaultOptions.allowedAttributes as AllowedAttributesType;\n\n return {\n ...defaultOptions,\n allowedAttributes: {\n ...defaultAllowedAttributes,\n ...yfmHtmlBlockAllowedAttributes,\n },\n allowedTags:\n typeof defaultOptions.allowedTags === 'boolean'\n ? defaultOptions.allowedTags\n : [...(defaultOptions.allowedTags ?? []), ...yfmHtmlBlockAllowedTags],\n cssWhiteList: {\n ...defaultOptions.cssWhiteList,\n ...getYfmHtmlBlockWhiteList(),\n },\n };\n};\n\nexport interface GetSanitizeYfmHtmlBlockArgs {\n options: SanitizeOptions;\n sanitize?: (html: string, options?: SanitizeOptions) => string;\n}\nexport const getSanitizeYfmHtmlBlock =\n ({options, sanitize = diplodocSanitize}: GetSanitizeYfmHtmlBlockArgs) =>\n (content: string) =>\n sanitize(content, getYfmHtmlBlockOptions(options));\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getSanitize } from "../../../utils/getSanitize.js";
|
|
2
2
|
import { HtmlAttr, HtmlNode } from "./const.js";
|
|
3
3
|
var DomAttr;
|
|
4
4
|
(function (DomAttr) {
|
|
5
5
|
DomAttr["Html"] = "data-html";
|
|
6
6
|
DomAttr["HtmlRaw"] = "data-html-raw";
|
|
7
7
|
})(DomAttr || (DomAttr = {}));
|
|
8
|
+
const sanitize = getSanitize('Html');
|
|
8
9
|
export const schemaSpecs = {
|
|
9
10
|
[HtmlNode.Block]: {
|
|
10
11
|
atom: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Html/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Html/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,sCAA8B;AAElD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,mBAAgB;AAE3C,IAAK,OAGJ;AAHD,WAAK,OAAO;IACR,6BAAkB,CAAA;IAClB,oCAAyB,CAAA;AAC7B,CAAC,EAHI,OAAO,KAAP,OAAO,QAGX;AAED,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAA+B;IACnD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACd,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,EAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAC;QAC/B,QAAQ,EAAE;YACN;gBACI,GAAG,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG;gBAC3B,QAAQ,CAAC,GAAG;oBACR,MAAM,IAAI,GAAG,GAAkB,CAAC;oBAChC,OAAO;wBACH,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS;qBAC3E,CAAC;gBACN,CAAC;aACJ;SACJ;QACD,KAAK,CAAC,IAAI;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAW,CAAC;YAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ;IAED,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACf,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,EAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAC;QAC/B,QAAQ,EAAE;YACN;gBACI,GAAG,EAAE,QAAQ,OAAO,CAAC,IAAI,GAAG;gBAC5B,QAAQ,CAAC,GAAG;oBACR,OAAO,EAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAG,GAAmB,CAAC,WAAW,EAAC,CAAC;gBAClE,CAAC;aACJ;SACJ;QACD,KAAK,CAAC,IAAI;YACN,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ;CACJ,CAAC","sourcesContent":["import type {NodeSpec} from 'prosemirror-model';\n\nimport {getSanitize} from 'src/utils/getSanitize';\n\nimport {HtmlAttr, HtmlNode} from './const';\n\nenum DomAttr {\n Html = 'data-html',\n HtmlRaw = 'data-html-raw',\n}\n\nconst sanitize = getSanitize('Html');\n\nexport const schemaSpecs: Record<HtmlNode, NodeSpec> = {\n [HtmlNode.Block]: {\n atom: true,\n group: 'block',\n attrs: {[HtmlAttr.Content]: {}},\n parseDOM: [\n {\n tag: `div[${DomAttr.Html}]`,\n getAttrs(dom) {\n const dom_ = dom as HTMLElement;\n return {\n [HtmlAttr.Content]: dom_.getAttribute(DomAttr.HtmlRaw) || dom_.innerHTML,\n };\n },\n },\n ],\n toDOM(node) {\n const htmlContent = node.attrs[HtmlAttr.Content] as string;\n const elem = document.createElement('div');\n elem.setAttribute(DomAttr.Html, '');\n elem.setAttribute(DomAttr.HtmlRaw, htmlContent);\n elem.contentEditable = 'false';\n elem.innerHTML = sanitize(htmlContent);\n return elem;\n },\n },\n\n [HtmlNode.Inline]: {\n atom: true,\n inline: true,\n group: 'inline',\n attrs: {[HtmlAttr.Content]: {}},\n parseDOM: [\n {\n tag: `span[${DomAttr.Html}]`,\n getAttrs(dom) {\n return {[HtmlAttr.Content]: (dom as HTMLElement).textContent};\n },\n },\n ],\n toDOM(node) {\n const elem = document.createElement('span');\n elem.setAttribute(DomAttr.Html, '');\n elem.contentEditable = 'false';\n elem.textContent = node.attrs[HtmlAttr.Content];\n return elem;\n },\n },\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { liftListItem
|
|
2
|
-
import { toList } from "./commands.js";
|
|
1
|
+
import { liftListItem } from 'prosemirror-schema-list';
|
|
2
|
+
import { sinkOnlySelectedListItem, toList } from "./commands.js";
|
|
3
3
|
import { ListNode } from "./const.js";
|
|
4
4
|
import { blType, isIntoListOfType, liType, olType } from "./utils.js";
|
|
5
5
|
export const actions = {
|
|
@@ -27,8 +27,8 @@ export const actions = {
|
|
|
27
27
|
},
|
|
28
28
|
sinkListItem: ({ schema }) => {
|
|
29
29
|
return {
|
|
30
|
-
isEnable:
|
|
31
|
-
run:
|
|
30
|
+
isEnable: sinkOnlySelectedListItem(liType(schema)),
|
|
31
|
+
run: sinkOnlySelectedListItem(liType(schema)),
|
|
32
32
|
};
|
|
33
33
|
},
|
|
34
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAIrD,OAAO,EAAC,wBAAwB,EAAE,MAAM,EAAC,sBAAmB;AAC5D,OAAO,EAAC,QAAQ,EAAC,mBAAgB;AACjC,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAC,mBAAgB;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,YAAY,EAAE,CAAC,EAAC,MAAM,EAAgB,EAAc,EAAE;QAClD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,OAAO;YACH,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC/C,QAAQ,EAAE,YAAY;YACtB,GAAG,EAAE,YAAY;SACpB,CAAC;IACN,CAAC;IAED,aAAa,EAAE,CAAC,EAAC,MAAM,EAAgB,EAAc,EAAE;QACnD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO;YACH,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChD,QAAQ,EAAE,aAAa;YACvB,GAAG,EAAE,aAAa;SACrB,CAAC;IACN,CAAC;IAED,YAAY,EAAE,CAAC,EAAC,MAAM,EAAgB,EAAc,EAAE;QAClD,OAAO;YACH,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACpC,CAAC;IACN,CAAC;IAED,YAAY,EAAE,CAAC,EAAC,MAAM,EAAgB,EAAc,EAAE;QAClD,OAAO;YACH,QAAQ,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,GAAG,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAChD,CAAC;IACN,CAAC;CACJ,CAAC","sourcesContent":["import {liftListItem} from 'prosemirror-schema-list';\n\nimport type {ActionSpec, ExtensionDeps} from '../../../core';\n\nimport {sinkOnlySelectedListItem, toList} from './commands';\nimport {ListNode} from './const';\nimport {blType, isIntoListOfType, liType, olType} from './utils';\n\nexport const actions = {\n toBulletList: ({schema}: ExtensionDeps): ActionSpec => {\n const toBulletList = toList(blType(schema));\n return {\n isActive: isIntoListOfType(ListNode.BulletList),\n isEnable: toBulletList,\n run: toBulletList,\n };\n },\n\n toOrderedList: ({schema}: ExtensionDeps): ActionSpec => {\n const toOrderedList = toList(olType(schema));\n return {\n isActive: isIntoListOfType(ListNode.OrderedList),\n isEnable: toOrderedList,\n run: toOrderedList,\n };\n },\n\n liftListItem: ({schema}: ExtensionDeps): ActionSpec => {\n return {\n isEnable: liftListItem(liType(schema)),\n run: liftListItem(liType(schema)),\n };\n },\n\n sinkListItem: ({schema}: ExtensionDeps): ActionSpec => {\n return {\n isEnable: sinkOnlySelectedListItem(liType(schema)),\n run: sinkOnlySelectedListItem(liType(schema)),\n };\n },\n};\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type NodeType } from 'prosemirror-model';
|
|
2
2
|
import type { Command } from 'prosemirror-state';
|
|
3
3
|
export declare function toList(listType: NodeType): Command;
|
|
4
4
|
export declare const joinPrevList: Command;
|
|
5
|
+
export declare function sinkOnlySelectedListItem(itemType: NodeType): Command;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Fragment, Slice } from 'prosemirror-model';
|
|
1
2
|
import { wrapInList } from 'prosemirror-schema-list';
|
|
3
|
+
import { ReplaceAroundStep, liftTarget } from 'prosemirror-transform';
|
|
2
4
|
import { joinPreviousBlock } from "../../../commands/join.js";
|
|
3
5
|
import { findAnyParentList, isListNode, isListOrItemNode } from "./utils.js";
|
|
4
6
|
export function toList(listType) {
|
|
@@ -17,4 +19,65 @@ export const joinPrevList = joinPreviousBlock({
|
|
|
17
19
|
checkPrevNode: isListNode,
|
|
18
20
|
skipNode: isListOrItemNode,
|
|
19
21
|
});
|
|
22
|
+
/*
|
|
23
|
+
Simplified `sinkListItem` from `prosemirror-schema-list` without `state`/`dispatch`,
|
|
24
|
+
sinks list items deeper.
|
|
25
|
+
*/
|
|
26
|
+
const sink = (tr, range, itemType) => {
|
|
27
|
+
const before = tr.mapping.map(range.start);
|
|
28
|
+
const after = tr.mapping.map(range.end);
|
|
29
|
+
const startIndex = tr.mapping.map(range.startIndex);
|
|
30
|
+
const parent = range.parent;
|
|
31
|
+
const nodeBefore = parent.child(startIndex - 1);
|
|
32
|
+
const nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type === parent.type;
|
|
33
|
+
const inner = Fragment.from(nestedBefore ? itemType.create() : null);
|
|
34
|
+
const slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);
|
|
35
|
+
tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true));
|
|
36
|
+
return true;
|
|
37
|
+
};
|
|
38
|
+
export function sinkOnlySelectedListItem(itemType) {
|
|
39
|
+
return ({ tr, selection }, dispatch) => {
|
|
40
|
+
const { $from, $to } = selection;
|
|
41
|
+
const selectionRange = $from.blockRange($to, (node) => node.childCount > 0 && node.firstChild.type === itemType);
|
|
42
|
+
if (!selectionRange) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const { startIndex, parent, start, end } = selectionRange;
|
|
46
|
+
if (startIndex === 0) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const nodeBefore = parent.child(startIndex - 1);
|
|
50
|
+
if (nodeBefore.type !== itemType) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (dispatch) {
|
|
54
|
+
// lifts following list items sequentially to prepare correct nesting structure
|
|
55
|
+
let currentEnd = end - 1;
|
|
56
|
+
while (currentEnd > start) {
|
|
57
|
+
const selectionEnd = tr.mapping.map($to.pos);
|
|
58
|
+
const $candidateBlockEnd = tr.doc.resolve(currentEnd);
|
|
59
|
+
const candidateBlockStartPos = $candidateBlockEnd.before($candidateBlockEnd.depth);
|
|
60
|
+
const $candidateBlockStart = tr.doc.resolve(candidateBlockStartPos);
|
|
61
|
+
const candidateBlockRange = $candidateBlockStart.blockRange($candidateBlockEnd);
|
|
62
|
+
if (candidateBlockRange?.start) {
|
|
63
|
+
const $rangeStart = tr.doc.resolve(candidateBlockRange.start);
|
|
64
|
+
const shouldLift = candidateBlockRange.start > selectionEnd && isListNode($rangeStart.parent);
|
|
65
|
+
if (shouldLift) {
|
|
66
|
+
currentEnd = candidateBlockRange.start;
|
|
67
|
+
const targetDepth = liftTarget(candidateBlockRange);
|
|
68
|
+
if (targetDepth !== null) {
|
|
69
|
+
tr.lift(candidateBlockRange, targetDepth);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
currentEnd--;
|
|
74
|
+
}
|
|
75
|
+
// sinks the selected list item deeper into the list hierarchy
|
|
76
|
+
sink(tr, selectionRange, itemType);
|
|
77
|
+
dispatch(tr.scrollIntoView());
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
20
83
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/commands.ts"],"names":[],"mappings":"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","sourcesContent":["import {Fragment, type NodeRange, type NodeType, Slice} from 'prosemirror-model';\nimport {wrapInList} from 'prosemirror-schema-list';\nimport type {Command, Transaction} from 'prosemirror-state';\nimport {ReplaceAroundStep, liftTarget} from 'prosemirror-transform';\n\nimport {joinPreviousBlock} from '../../../commands/join';\n\nimport {findAnyParentList, isListNode, isListOrItemNode} from './utils';\n\nexport function toList(listType: NodeType): Command {\n return (state, dispatch) => {\n const parentList = findAnyParentList(state.schema)(state.selection);\n if (parentList) {\n if (listType === parentList.node.type) return true;\n\n dispatch?.(state.tr.setNodeMarkup(parentList.pos, listType));\n return true;\n }\n return wrapInList(listType)(state, dispatch);\n };\n}\n\nexport const joinPrevList = joinPreviousBlock({\n checkPrevNode: isListNode,\n skipNode: isListOrItemNode,\n});\n\n/*\n Simplified `sinkListItem` from `prosemirror-schema-list` without `state`/`dispatch`,\n sinks list items deeper.\n */\nconst sink = (tr: Transaction, range: NodeRange, itemType: NodeType) => {\n const before = tr.mapping.map(range.start);\n const after = tr.mapping.map(range.end);\n const startIndex = tr.mapping.map(range.startIndex);\n\n const parent = range.parent;\n const nodeBefore = parent.child(startIndex - 1);\n\n const nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type === parent.type;\n const inner = Fragment.from(nestedBefore ? itemType.create() : null);\n const slice = new Slice(\n Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))),\n nestedBefore ? 3 : 1,\n 0,\n );\n\n tr.step(\n new ReplaceAroundStep(\n before - (nestedBefore ? 3 : 1),\n after,\n before,\n after,\n slice,\n 1,\n true,\n ),\n );\n return true;\n};\n\nexport function sinkOnlySelectedListItem(itemType: NodeType): Command {\n return ({tr, selection}, dispatch) => {\n const {$from, $to} = selection;\n const selectionRange = $from.blockRange(\n $to,\n (node) => node.childCount > 0 && node.firstChild!.type === itemType,\n );\n if (!selectionRange) {\n return false;\n }\n\n const {startIndex, parent, start, end} = selectionRange;\n if (startIndex === 0) {\n return false;\n }\n\n const nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type !== itemType) {\n return false;\n }\n\n if (dispatch) {\n // lifts following list items sequentially to prepare correct nesting structure\n let currentEnd = end - 1;\n while (currentEnd > start) {\n const selectionEnd = tr.mapping.map($to.pos);\n\n const $candidateBlockEnd = tr.doc.resolve(currentEnd);\n const candidateBlockStartPos = $candidateBlockEnd.before($candidateBlockEnd.depth);\n const $candidateBlockStart = tr.doc.resolve(candidateBlockStartPos);\n const candidateBlockRange = $candidateBlockStart.blockRange($candidateBlockEnd);\n\n if (candidateBlockRange?.start) {\n const $rangeStart = tr.doc.resolve(candidateBlockRange.start);\n const shouldLift =\n candidateBlockRange.start > selectionEnd && isListNode($rangeStart.parent);\n\n if (shouldLift) {\n currentEnd = candidateBlockRange.start;\n\n const targetDepth = liftTarget(candidateBlockRange);\n if (targetDepth !== null) {\n tr.lift(candidateBlockRange, targetDepth);\n }\n }\n }\n\n currentEnd--;\n }\n\n // sinks the selected list item deeper into the list hierarchy\n sink(tr, selectionRange, itemType);\n\n dispatch(tr.scrollIntoView());\n return true;\n }\n return false;\n };\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { liftListItem,
|
|
1
|
+
import { liftListItem, splitListItem } from 'prosemirror-schema-list';
|
|
2
2
|
import { withLogAction } from "../../../utils/keymap.js";
|
|
3
3
|
import { ListsSpecs, blType, liType, olType } from "./ListsSpecs/index.js";
|
|
4
4
|
import { actions } from "./actions.js";
|
|
5
|
-
import { joinPrevList, toList } from "./commands.js";
|
|
5
|
+
import { joinPrevList, sinkOnlySelectedListItem, toList } from "./commands.js";
|
|
6
6
|
import { ListAction } from "./const.js";
|
|
7
7
|
import { ListsInputRulesExtension } from "./inputrules.js";
|
|
8
8
|
import { collapseListsPlugin } from "./plugins/CollapseListsPlugin.js";
|
|
@@ -18,10 +18,10 @@ export const Lists = (builder, opts) => {
|
|
|
18
18
|
if (olKey)
|
|
19
19
|
bindings[olKey] = withLogAction('orderedList', toList(olType(schema)));
|
|
20
20
|
return {
|
|
21
|
-
Tab:
|
|
21
|
+
Tab: sinkOnlySelectedListItem(liType(schema)),
|
|
22
22
|
'Shift-Tab': liftListItem(liType(schema)),
|
|
23
23
|
'Mod-[': liftListItem(liType(schema)),
|
|
24
|
-
'Mod-]':
|
|
24
|
+
'Mod-]': sinkOnlySelectedListItem(liType(schema)),
|
|
25
25
|
...bindings,
|
|
26
26
|
};
|
|
27
27
|
}, builder.Priority.High);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAC,aAAa,EAAC,iCAA8B;AAEpD,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,8BAAqB;AAChE,OAAO,EAAC,OAAO,EAAC,qBAAkB;AAClC,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,MAAM,EAAC,sBAAmB;AAC1E,OAAO,EAAC,UAAU,EAAC,mBAAgB;AACnC,OAAO,EAAC,wBAAwB,EAA8B,wBAAqB;AACnF,OAAO,EAAC,mBAAmB,EAAC,yCAAsC;AAClE,OAAO,EAAC,gBAAgB,EAAC,sCAAmC;AAE5D,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,8BAAqB;AAQzE,MAAM,CAAC,MAAM,KAAK,GAAgC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAChE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAExB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE;QAC3B,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,KAAK;YAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,KAAK;YAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO;YACH,GAAG,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEzC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEjD,GAAG,QAAQ;SACd,CAAC;IACN,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,CAAC,SAAS,CACb,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,SAAS,EAAE,YAAY;KAC1B,CAAC,EACF,OAAO,CAAC,QAAQ,CAAC,GAAG,CACvB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAC,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;IAEjF,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAEvC,OAAO;SACF,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;SACxD,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;SAC1D,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;SACxD,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAClE,CAAC,CAAC","sourcesContent":["import {liftListItem, splitListItem} from 'prosemirror-schema-list';\n\nimport type {Action, ExtensionAuto, Keymap} from '../../../core';\nimport {withLogAction} from '../../../utils/keymap';\n\nimport {ListsSpecs, blType, liType, olType} from './ListsSpecs';\nimport {actions} from './actions';\nimport {joinPrevList, sinkOnlySelectedListItem, toList} from './commands';\nimport {ListAction} from './const';\nimport {ListsInputRulesExtension, type ListsInputRulesOptions} from './inputrules';\nimport {collapseListsPlugin} from './plugins/CollapseListsPlugin';\nimport {mergeListsPlugin} from './plugins/MergeListsPlugin';\n\nexport {ListNode, ListsAttr, blType, liType, olType} from './ListsSpecs';\n\nexport type ListsOptions = {\n ulKey?: string | null;\n olKey?: string | null;\n ulInputRules?: ListsInputRulesOptions['bulletListInputRule'];\n};\n\nexport const Lists: ExtensionAuto<ListsOptions> = (builder, opts) => {\n builder.use(ListsSpecs);\n\n builder.addKeymap(({schema}) => {\n const {ulKey, olKey} = opts ?? {};\n const bindings: Keymap = {};\n if (ulKey) bindings[ulKey] = withLogAction('bulletList', toList(blType(schema)));\n if (olKey) bindings[olKey] = withLogAction('orderedList', toList(olType(schema)));\n\n return {\n Tab: sinkOnlySelectedListItem(liType(schema)),\n 'Shift-Tab': liftListItem(liType(schema)),\n\n 'Mod-[': liftListItem(liType(schema)),\n 'Mod-]': sinkOnlySelectedListItem(liType(schema)),\n\n ...bindings,\n };\n }, builder.Priority.High);\n\n builder.addKeymap(\n ({schema}) => ({\n Enter: splitListItem(liType(schema)),\n Backspace: joinPrevList,\n }),\n builder.Priority.Low,\n );\n\n builder.use(ListsInputRulesExtension, {bulletListInputRule: opts?.ulInputRules});\n\n builder.addPlugin(mergeListsPlugin);\n\n builder.addPlugin(collapseListsPlugin);\n\n builder\n .addAction(ListAction.ToBulletList, actions.toBulletList)\n .addAction(ListAction.ToOrderedList, actions.toOrderedList)\n .addAction(ListAction.SinkListItem, actions.sinkListItem)\n .addAction(ListAction.LiftListItem, actions.liftListItem);\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n [ListAction.ToBulletList]: Action;\n [ListAction.ToOrderedList]: Action;\n [ListAction.SinkListItem]: Action;\n [ListAction.LiftListItem]: Action;\n }\n }\n}\n"]}
|
|
@@ -3,5 +3,7 @@ import type { ExtensionAuto } from "../../../../core/index.js";
|
|
|
3
3
|
export type YfmConfigsSpecsOptions = {
|
|
4
4
|
/** markdown-it-attrs options */
|
|
5
5
|
attrs?: AttrsOptions;
|
|
6
|
+
/** Disable markdown-it-attrs plugin */
|
|
7
|
+
disableAttrs?: boolean;
|
|
6
8
|
};
|
|
7
9
|
export declare const YfmConfigsSpecs: ExtensionAuto<YfmConfigsSpecsOptions>;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import attrsPlugin, {} from 'markdown-it-attrs';
|
|
1
|
+
import attrsPlugin, {} from 'markdown-it-attrs';
|
|
2
2
|
import { noop } from "../../../../lodash.js";
|
|
3
3
|
const defaultAttrsOpts = {
|
|
4
4
|
allowedAttributes: ['id'],
|
|
5
5
|
};
|
|
6
6
|
export const YfmConfigsSpecs = (builder, opts) => {
|
|
7
7
|
const attrsOpts = { ...defaultAttrsOpts, ...opts.attrs };
|
|
8
|
-
|
|
8
|
+
// MAJOR: remove markdown-it-attrs
|
|
9
|
+
if (!opts.disableAttrs) {
|
|
10
|
+
builder.configureMd((md) => md.use(attrsPlugin, attrsOpts), { text: false });
|
|
11
|
+
}
|
|
9
12
|
// ignore yfm lint token
|
|
10
13
|
builder.addNode('__yfm_lint', () => ({
|
|
11
14
|
spec: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,EAAE,EAAmB,MAAM,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,EAAE,EAAmB,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAC,IAAI,EAAC,8BAAmB;AAEhC,MAAM,gBAAgB,GAAiB;IACnC,iBAAiB,EAAE,CAAC,IAAI,CAAC;CAC5B,CAAC;AASF,MAAM,CAAC,MAAM,eAAe,GAA0C,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACpF,MAAM,SAAS,GAAG,EAAC,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC;IAEvD,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAe,WAAW,EAAE,SAAS,CAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;IAC7F,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAC,EAAC;QACrE,IAAI,EAAE,IAAI;KACb,CAAC,CAAC,CAAC;AACR,CAAC,CAAC","sourcesContent":["import attrsPlugin, {type AttrsOptions} from 'markdown-it-attrs';\n\nimport type {ExtensionAuto} from '#core';\nimport {noop} from 'src/lodash';\n\nconst defaultAttrsOpts: AttrsOptions = {\n allowedAttributes: ['id'],\n};\n\nexport type YfmConfigsSpecsOptions = {\n /** markdown-it-attrs options */\n attrs?: AttrsOptions;\n /** Disable markdown-it-attrs plugin */\n disableAttrs?: boolean;\n};\n\nexport const YfmConfigsSpecs: ExtensionAuto<YfmConfigsSpecsOptions> = (builder, opts) => {\n const attrsOpts = {...defaultAttrsOpts, ...opts.attrs};\n\n // MAJOR: remove markdown-it-attrs\n if (!opts.disableAttrs) {\n builder.configureMd((md) => md.use<AttrsOptions>(attrsPlugin, attrsOpts), {text: false});\n }\n\n // ignore yfm lint token\n builder.addNode('__yfm_lint', () => ({\n spec: {},\n fromMd: {tokenSpec: {name: '__yfm_lint', type: 'node', ignore: true}},\n toMd: noop,\n }));\n};\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { YfmHeadingAttr, headingNodeName } from "./const.js";
|
|
2
|
+
import { headingAttrsPlugin } from "./markdown/heading-attrs.js";
|
|
2
3
|
import { getNodeAttrs } from "./utils.js";
|
|
3
4
|
const DEFAULT_PLACEHOLDER = (node) => 'Heading ' + node.attrs[YfmHeadingAttr.Level];
|
|
4
5
|
export { YfmHeadingAttr } from "./const.js";
|
|
5
6
|
/** YfmHeading extension needs markdown-it-attrs plugin */
|
|
6
7
|
export const YfmHeadingSpecs = (builder, opts) => {
|
|
8
|
+
builder.configureMd((md) => md.use(headingAttrsPlugin));
|
|
7
9
|
builder.addNode(headingNodeName, () => ({
|
|
8
10
|
spec: {
|
|
9
11
|
attrs: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmHeading/YfmHeadingSpecs/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmHeading/YfmHeadingSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {ExtensionAuto} from '#core';\nimport type {Node, NodeSpec} from '#pm/model';\n\nimport {YfmHeadingAttr, headingNodeName} from './const';\nimport {headingAttrsPlugin} from './markdown/heading-attrs';\nimport {getNodeAttrs} from './utils';\n\nconst DEFAULT_PLACEHOLDER = (node: Node) => 'Heading ' + node.attrs[YfmHeadingAttr.Level];\n\nexport {YfmHeadingAttr} from './const';\n\nexport type YfmHeadingSpecsOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n headingPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\n/** YfmHeading extension needs markdown-it-attrs plugin */\nexport const YfmHeadingSpecs: ExtensionAuto<YfmHeadingSpecsOptions> = (builder, opts) => {\n builder.configureMd((md) => md.use(headingAttrsPlugin));\n builder.addNode(headingNodeName, () => ({\n spec: {\n attrs: {\n [YfmHeadingAttr.Id]: {default: ''},\n [YfmHeadingAttr.Level]: {default: 1},\n [YfmHeadingAttr.DataLine]: {default: null},\n [YfmHeadingAttr.Folding]: {default: null},\n },\n content: '(text | inline)*',\n group: 'block',\n defining: true,\n selectable: true,\n parseDOM: [\n {tag: 'h1', getAttrs: getNodeAttrs(1), priority: 100, consuming: true},\n {tag: 'h2', getAttrs: getNodeAttrs(2), priority: 100, consuming: true},\n {tag: 'h3', getAttrs: getNodeAttrs(3), priority: 100, consuming: true},\n {tag: 'h4', getAttrs: getNodeAttrs(4), priority: 100, consuming: true},\n {tag: 'h5', getAttrs: getNodeAttrs(5), priority: 100, consuming: true},\n {tag: 'h6', getAttrs: getNodeAttrs(6), priority: 100, consuming: true},\n {\n // ignore anchor link inside headings\n tag: 'a.yfm-anchor',\n context: `${headingNodeName}/`,\n skip: true,\n ignore: true,\n priority: 1000,\n },\n ],\n toDOM(node) {\n const id = node.attrs[YfmHeadingAttr.Id];\n const lineNumber = node.attrs[YfmHeadingAttr.DataLine];\n const folding = node.attrs[YfmHeadingAttr.Folding];\n return [\n 'h' + node.attrs[YfmHeadingAttr.Level],\n {\n id: id || null,\n [YfmHeadingAttr.DataLine]: lineNumber,\n [`data-${YfmHeadingAttr.Folding}`]: folding,\n },\n 0,\n // [\n // 'a',\n // {\n // href: `#${node.attrs[YfmHeadingAttr.Id]}`,\n // class: 'yfm-anchor',\n // 'aria-hidden': 'true',\n // contenteditable: 'false',\n // },\n // ],\n // ['span', 0],\n ];\n },\n placeholder: {\n content:\n builder.context.get('placeholder')?.heading ??\n opts.headingPlaceholder ??\n DEFAULT_PLACEHOLDER,\n alwaysVisible: true,\n },\n },\n fromMd: {\n tokenSpec: {\n name: headingNodeName,\n type: 'block',\n getAttrs: (token) => {\n if (token.type.endsWith('_close')) return {};\n\n const attrs = Object.fromEntries(token.attrs || []);\n // if (!attrs[YfmHeadingAttr.Id]) {\n // // calculate id if it was not specified\n // // tokens[index + 1] is child inline token\n // attrs[YfmHeadingAttr.Id] = slugify(tokens[index + 1].content);\n // }\n\n // attrs have id only if it explicitly specified manually\n return {\n [YfmHeadingAttr.Level]: Number(token.tag.slice(1)),\n [YfmHeadingAttr.Folding]: token.meta?.folding === true ? true : null,\n ...attrs,\n };\n },\n },\n },\n toMd: (state, node) => {\n const folding = node.attrs[YfmHeadingAttr.Folding];\n const level = node.attrs[YfmHeadingAttr.Level];\n\n state.write(state.repeat('#', level) + (typeof folding === 'boolean' ? '+' : '') + ' ');\n state.renderInline(node);\n\n const anchor = node.attrs[YfmHeadingAttr.Id];\n\n if (anchor /*&& anchor !== node.firstChild?.textContent*/) {\n state.write(` {#${anchor}}`);\n }\n\n state.closeBlock(node);\n },\n }));\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type MarkdownIt from 'markdown-it';
|
|
2
|
+
export type HeadingAttrsOptions = {
|
|
3
|
+
/** Default – `['id']` */
|
|
4
|
+
allowedAttributes?: string[];
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* MarkdownIt plugin for parsing attributes in headings
|
|
8
|
+
*/
|
|
9
|
+
export declare const headingAttrsPlugin: MarkdownIt.PluginWithOptions<HeadingAttrsOptions>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { parseMdAttrs } from '@diplodoc/utils';
|
|
2
|
+
const defaultAllowedAttributes = ['id'];
|
|
3
|
+
/**
|
|
4
|
+
* MarkdownIt plugin for parsing attributes in headings
|
|
5
|
+
*/
|
|
6
|
+
export const headingAttrsPlugin = (md, opts) => {
|
|
7
|
+
const allowedAttributes = opts?.allowedAttributes || defaultAllowedAttributes;
|
|
8
|
+
md.core.ruler.push('heading-attrs', (state) => {
|
|
9
|
+
const { tokens } = state;
|
|
10
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
11
|
+
const token = tokens[i];
|
|
12
|
+
if (token.type !== 'heading_open')
|
|
13
|
+
continue;
|
|
14
|
+
const lastTextToken = tokens[i + 1]?.children?.at(-1);
|
|
15
|
+
if (lastTextToken?.type !== 'text')
|
|
16
|
+
continue;
|
|
17
|
+
const { content } = lastTextToken;
|
|
18
|
+
if (!content.endsWith('}'))
|
|
19
|
+
continue;
|
|
20
|
+
const idx = content.lastIndexOf('{');
|
|
21
|
+
if (idx === -1)
|
|
22
|
+
continue;
|
|
23
|
+
const res = parseMdAttrs(md, content, idx, content.length);
|
|
24
|
+
if (!res)
|
|
25
|
+
continue;
|
|
26
|
+
lastTextToken.content = content.slice(0, idx).trimEnd();
|
|
27
|
+
for (const key of allowedAttributes) {
|
|
28
|
+
if (res.attrs[key]) {
|
|
29
|
+
if (key === 'class') {
|
|
30
|
+
const values = res.attrs[key];
|
|
31
|
+
values.forEach((val) => token.attrJoin(key, val));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const value = res.attrs[key][0];
|
|
35
|
+
token.attrSet(key, value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=heading-attrs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading-attrs.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C,MAAM,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsD,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;IAC9F,MAAM,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,IAAI,wBAAwB,CAAC;IAE9E,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YAE5C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,aAAa,EAAE,IAAI,KAAK,MAAM;gBAAE,SAAS;YAE7C,MAAM,EAAC,OAAO,EAAC,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YAErC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEzB,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAExD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBAClC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;wBAClB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACJ,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC9B,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC","sourcesContent":["import {parseMdAttrs} from '@diplodoc/utils';\nimport type MarkdownIt from 'markdown-it';\n\nexport type HeadingAttrsOptions = {\n /** Default – `['id']` */\n allowedAttributes?: string[];\n};\n\nconst defaultAllowedAttributes = ['id'];\n\n/**\n * MarkdownIt plugin for parsing attributes in headings\n */\nexport const headingAttrsPlugin: MarkdownIt.PluginWithOptions<HeadingAttrsOptions> = (md, opts) => {\n const allowedAttributes = opts?.allowedAttributes || defaultAllowedAttributes;\n\n md.core.ruler.push('heading-attrs', (state) => {\n const {tokens} = state;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type !== 'heading_open') continue;\n\n const lastTextToken = tokens[i + 1]?.children?.at(-1);\n if (lastTextToken?.type !== 'text') continue;\n\n const {content} = lastTextToken;\n if (!content.endsWith('}')) continue;\n\n const idx = content.lastIndexOf('{');\n if (idx === -1) continue;\n\n const res = parseMdAttrs(md, content, idx, content.length);\n if (!res) continue;\n\n lastTextToken.content = content.slice(0, idx).trimEnd();\n\n for (const key of allowedAttributes) {\n if (res.attrs[key]) {\n if (key === 'class') {\n const values = res.attrs[key];\n values.forEach((val) => token.attrJoin(key, val));\n } else {\n const value = res.attrs[key][0];\n token.attrSet(key, value);\n }\n }\n }\n }\n });\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const i18n: <G extends "bold" | "code" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "colorify" | "mono" | "text" | "html" | "cut" | "table" | "image" | "checkbox" | "heading" | "list" | "math" | "note" | "code_inline" | "undo" | "redo" | "ulist" | "olist" | "list__action_lift" | "list__action_sink" | "codeblock" | "file" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "emoji" | "tabs" | "gpt" | "math_inline" | "math_block" | "colorify__color_blue" | "colorify__color_default" | "colorify__color_gray" | "colorify__color_green" | "colorify__color_orange" | "colorify__color_red" | "colorify__color_violet" | "colorify__color_yellow" | "colorify__group_text" | "emoji__hint" | "folding-heading" | "folding-heading__hint" | "hrule" | "list_action_disabled" | "mermaid" | "more_action" | "move_list", S extends string>(key: G | (string extends S ? S : never), params?: {
|
|
1
|
+
export declare const i18n: <G extends "bold" | "code" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "colorify" | "mono" | "text" | "html" | "cut" | "table" | "image" | "checkbox" | "heading" | "list" | "math" | "note" | "code_inline" | "undo" | "redo" | "ulist" | "olist" | "list__action_lift" | "list__action_sink" | "codeblock" | "file" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "emoji" | "tabs" | "gpt" | "math_inline" | "math_block" | "colorify__color_blue" | "colorify__color_default" | "colorify__color_gray" | "colorify__color_green" | "colorify__color_orange" | "colorify__color_red" | "colorify__color_violet" | "colorify__color_yellow" | "colorify__group_text" | "emoji__hint" | "folding-heading" | "folding-heading__hint" | "hrule" | "list_action_disabled" | "mermaid" | "more_action" | "move_list" | "quotelink", S extends string>(key: G | (string extends S ? S : never), params?: {
|
|
2
2
|
[key: string]: any;
|
|
3
3
|
}) => S extends G ? {
|
|
4
4
|
bold: string;
|
|
@@ -50,6 +50,7 @@ export declare const i18n: <G extends "bold" | "code" | "link" | "italic" | "str
|
|
|
50
50
|
note: string;
|
|
51
51
|
olist: string;
|
|
52
52
|
quote: string;
|
|
53
|
+
quotelink: string;
|
|
53
54
|
redo: string;
|
|
54
55
|
strike: string;
|
|
55
56
|
table: string;
|
|
@@ -4,4 +4,4 @@ import MermaidIcon from "./Mermaid.js";
|
|
|
4
4
|
import MonoIcon from "./Mono.js";
|
|
5
5
|
import TabsIcon from "./Tabs.js";
|
|
6
6
|
export { MermaidIcon, MonoIcon, TabsIcon, GPTIcon, GPTLoading };
|
|
7
|
-
export { ArrowUturnCcwLeft as UndoIcon, ArrowUturnCwRight as RedoIcon, Bold as BoldIcon, Italic as ItalicIcon, Underline as UnderlineIcon, Strikethrough as StrikethroughIcon, FontCursor as MarkIcon, Text as TextIcon, Heading as HeadingIcon, Heading1 as Heading1Icon, Heading2 as Heading2Icon, Heading3 as Heading3Icon, Heading4 as Heading4Icon, Heading5 as Heading5Icon, Heading6 as Heading6Icon, ListUl as ListBlIcon, ListOl as ListOlIcon, TextOutdent as LiftIcon, TextIndent as SinkIcon, Font as TextColorIcon, Link as LinkIcon, QuoteClose as QuoteIcon, Scissors as CutIcon, Sticker as NoteIcon, Paperclip as FileIcon, Minus as HRuleIcon, LayoutList as TableIcon, ChevronsExpandHorizontal as IframeIcon, SquareCheck as CheckListIcon, Picture as ImageIcon, Person as UserIcon, FaceSmile as EmojiIcon, Code as CodeInlineIcon, FileCode as CodeBlockIcon, Function as FunctionInlineIcon, CurlyBracketsFunction as FunctionBlockIcon, Hashtag as AnchorIcon, SquareDashedText as BlockIcon, LayoutColumns3 as LayoutIcon, Pencil as DrawIoIcon, FolderCode as HtmlBlockIcon, ArrowChevronRight as FoldingHeadingIcon, } from '@gravity-ui/icons';
|
|
7
|
+
export { ArrowUturnCcwLeft as UndoIcon, ArrowUturnCwRight as RedoIcon, Bold as BoldIcon, Italic as ItalicIcon, Underline as UnderlineIcon, Strikethrough as StrikethroughIcon, FontCursor as MarkIcon, Text as TextIcon, Heading as HeadingIcon, Heading1 as Heading1Icon, Heading2 as Heading2Icon, Heading3 as Heading3Icon, Heading4 as Heading4Icon, Heading5 as Heading5Icon, Heading6 as Heading6Icon, ListUl as ListBlIcon, ListOl as ListOlIcon, TextOutdent as LiftIcon, TextIndent as SinkIcon, Font as TextColorIcon, Link as LinkIcon, QuoteClose as QuoteIcon, Scissors as CutIcon, Sticker as NoteIcon, Paperclip as FileIcon, Minus as HRuleIcon, LayoutList as TableIcon, ChevronsExpandHorizontal as IframeIcon, SquareCheck as CheckListIcon, Picture as ImageIcon, Person as UserIcon, FaceSmile as EmojiIcon, Code as CodeInlineIcon, FileCode as CodeBlockIcon, Function as FunctionInlineIcon, CurlyBracketsFunction as FunctionBlockIcon, Hashtag as AnchorIcon, SquareDashedText as BlockIcon, LayoutColumns3 as LayoutIcon, Pencil as DrawIoIcon, FolderCode as HtmlBlockIcon, ArrowChevronRight as FoldingHeadingIcon, CircleLink as QuoteLinkIcon, } from '@gravity-ui/icons';
|
package/build/esm/icons/index.js
CHANGED
|
@@ -28,5 +28,5 @@ Function as FunctionInlineIcon, CurlyBracketsFunction as FunctionBlockIcon,
|
|
|
28
28
|
//
|
|
29
29
|
Hashtag as AnchorIcon, SquareDashedText as BlockIcon, LayoutColumns3 as LayoutIcon,
|
|
30
30
|
//
|
|
31
|
-
Pencil as DrawIoIcon, FolderCode as HtmlBlockIcon, ArrowChevronRight as FoldingHeadingIcon, } from '@gravity-ui/icons';
|
|
31
|
+
Pencil as DrawIoIcon, FolderCode as HtmlBlockIcon, ArrowChevronRight as FoldingHeadingIcon, CircleLink as QuoteLinkIcon, } from '@gravity-ui/icons';
|
|
32
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,iBAAc;AAC5B,OAAO,UAAU,wBAAqB;AACtC,OAAO,WAAW,qBAAkB;AACpC,OAAO,QAAQ,kBAAe;AAC9B,OAAO,QAAQ,kBAAe;AAE9B,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAC,CAAC;AAE9D,OAAO,EACH,iBAAiB,IAAI,QAAQ,EAC7B,iBAAiB,IAAI,QAAQ;AAC7B,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,MAAM,IAAI,UAAU,EACpB,SAAS,IAAI,aAAa,EAC1B,aAAa,IAAI,iBAAiB,EAClC,UAAU,IAAI,QAAQ;AACtB,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,OAAO,IAAI,WAAW,EACtB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY;AACxB,EAAE;AACF,MAAM,IAAI,UAAU,EACpB,MAAM,IAAI,UAAU;AACpB,EAAE;AACF,WAAW,IAAI,QAAQ,EACvB,UAAU,IAAI,QAAQ;AACtB,EAAE;AACF,IAAI,IAAI,aAAa;AACrB,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,UAAU,IAAI,SAAS,EACvB,QAAQ,IAAI,OAAO,EACnB,OAAO,IAAI,QAAQ,EACnB,SAAS,IAAI,QAAQ,EACrB,KAAK,IAAI,SAAS;AAClB,EAAE;AACF,UAAU,IAAI,SAAS;AACvB,EAAE;AACF,wBAAwB,IAAI,UAAU,EACtC,WAAW,IAAI,aAAa,EAC5B,OAAO,IAAI,SAAS,EACpB,MAAM,IAAI,QAAQ,EAClB,SAAS,IAAI,SAAS;AACtB,EAAE;AACF,IAAI,IAAI,cAAc,EACtB,QAAQ,IAAI,aAAa;AACzB,EAAE;AACF,QAAQ,IAAI,kBAAkB,EAC9B,qBAAqB,IAAI,iBAAiB;AAC1C,EAAE;AACF,OAAO,IAAI,UAAU,EACrB,gBAAgB,IAAI,SAAS,EAC7B,cAAc,IAAI,UAAU;AAC5B,EAAE;AACF,MAAM,IAAI,UAAU,EACpB,UAAU,IAAI,aAAa,EAC3B,iBAAiB,IAAI,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,iBAAc;AAC5B,OAAO,UAAU,wBAAqB;AACtC,OAAO,WAAW,qBAAkB;AACpC,OAAO,QAAQ,kBAAe;AAC9B,OAAO,QAAQ,kBAAe;AAE9B,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAC,CAAC;AAE9D,OAAO,EACH,iBAAiB,IAAI,QAAQ,EAC7B,iBAAiB,IAAI,QAAQ;AAC7B,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,MAAM,IAAI,UAAU,EACpB,SAAS,IAAI,aAAa,EAC1B,aAAa,IAAI,iBAAiB,EAClC,UAAU,IAAI,QAAQ;AACtB,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,OAAO,IAAI,WAAW,EACtB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY;AACxB,EAAE;AACF,MAAM,IAAI,UAAU,EACpB,MAAM,IAAI,UAAU;AACpB,EAAE;AACF,WAAW,IAAI,QAAQ,EACvB,UAAU,IAAI,QAAQ;AACtB,EAAE;AACF,IAAI,IAAI,aAAa;AACrB,EAAE;AACF,IAAI,IAAI,QAAQ,EAChB,UAAU,IAAI,SAAS,EACvB,QAAQ,IAAI,OAAO,EACnB,OAAO,IAAI,QAAQ,EACnB,SAAS,IAAI,QAAQ,EACrB,KAAK,IAAI,SAAS;AAClB,EAAE;AACF,UAAU,IAAI,SAAS;AACvB,EAAE;AACF,wBAAwB,IAAI,UAAU,EACtC,WAAW,IAAI,aAAa,EAC5B,OAAO,IAAI,SAAS,EACpB,MAAM,IAAI,QAAQ,EAClB,SAAS,IAAI,SAAS;AACtB,EAAE;AACF,IAAI,IAAI,cAAc,EACtB,QAAQ,IAAI,aAAa;AACzB,EAAE;AACF,QAAQ,IAAI,kBAAkB,EAC9B,qBAAqB,IAAI,iBAAiB;AAC1C,EAAE;AACF,OAAO,IAAI,UAAU,EACrB,gBAAgB,IAAI,SAAS,EAC7B,cAAc,IAAI,UAAU;AAC5B,EAAE;AACF,MAAM,IAAI,UAAU,EACpB,UAAU,IAAI,aAAa,EAC3B,iBAAiB,IAAI,kBAAkB,EACvC,UAAU,IAAI,aAAa,GAC9B,MAAM,mBAAmB,CAAC","sourcesContent":["import GPTIcon from './GPT';\nimport GPTLoading from './GPTLoading';\nimport MermaidIcon from './Mermaid';\nimport MonoIcon from './Mono';\nimport TabsIcon from './Tabs';\n\nexport {MermaidIcon, MonoIcon, TabsIcon, GPTIcon, GPTLoading};\n\nexport {\n ArrowUturnCcwLeft as UndoIcon,\n ArrowUturnCwRight as RedoIcon,\n //\n Bold as BoldIcon,\n Italic as ItalicIcon,\n Underline as UnderlineIcon,\n Strikethrough as StrikethroughIcon,\n FontCursor as MarkIcon,\n //\n Text as TextIcon,\n Heading as HeadingIcon,\n Heading1 as Heading1Icon,\n Heading2 as Heading2Icon,\n Heading3 as Heading3Icon,\n Heading4 as Heading4Icon,\n Heading5 as Heading5Icon,\n Heading6 as Heading6Icon,\n //\n ListUl as ListBlIcon,\n ListOl as ListOlIcon,\n //\n TextOutdent as LiftIcon,\n TextIndent as SinkIcon,\n //\n Font as TextColorIcon,\n //\n Link as LinkIcon,\n QuoteClose as QuoteIcon,\n Scissors as CutIcon,\n Sticker as NoteIcon,\n Paperclip as FileIcon,\n Minus as HRuleIcon,\n //\n LayoutList as TableIcon,\n //\n ChevronsExpandHorizontal as IframeIcon,\n SquareCheck as CheckListIcon,\n Picture as ImageIcon,\n Person as UserIcon,\n FaceSmile as EmojiIcon,\n //\n Code as CodeInlineIcon,\n FileCode as CodeBlockIcon,\n //\n Function as FunctionInlineIcon,\n CurlyBracketsFunction as FunctionBlockIcon,\n //\n Hashtag as AnchorIcon,\n SquareDashedText as BlockIcon,\n LayoutColumns3 as LayoutIcon,\n //\n Pencil as DrawIoIcon,\n FolderCode as HtmlBlockIcon,\n ArrowChevronRight as FoldingHeadingIcon,\n CircleLink as QuoteLinkIcon,\n} from '@gravity-ui/icons';\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { StateCommand } from '@codemirror/state';
|
|
2
2
|
export declare const wrapToBlockquote: StateCommand;
|
|
3
|
+
export declare const insertBlockquoteLink: StateCommand;
|
|
3
4
|
export declare const wrapToCheckbox: StateCommand;
|
|
4
5
|
export declare const insertHRule: StateCommand;
|
|
5
6
|
export declare const insertMermaidDiagram: StateCommand;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { replaceOrInsertAfter, wrapPerLine } from "./helpers.js";
|
|
2
2
|
export const wrapToBlockquote = wrapPerLine({ beforeText: '> ', skipEmptyLine: false });
|
|
3
|
+
export const insertBlockquoteLink = ({ state, dispatch }) => {
|
|
4
|
+
const markup = '> [link](url "title"){data-quotelink=true}\n> \n> ';
|
|
5
|
+
const tr = replaceOrInsertAfter(state, markup);
|
|
6
|
+
dispatch(state.update(tr));
|
|
7
|
+
return true;
|
|
8
|
+
};
|
|
3
9
|
export const wrapToCheckbox = wrapPerLine({ beforeText: '[ ] ' });
|
|
4
10
|
export const insertHRule = ({ state, dispatch }) => {
|
|
5
11
|
const hrMarkup = '---';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"../../../../src","sources":["markup/commands/blocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAE,WAAW,EAAC,qBAAkB;AAE5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"../../../../src","sources":["markup/commands/blocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAE,WAAW,EAAC,qBAAkB;AAE5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,oBAAoB,GAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG,oDAAoD,CAAC;IACpE,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG;;;;OAIZ,CAAC;IAEJ,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG;;;;IAIf,CAAC;IAED,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import type {StateCommand} from '@codemirror/state';\n\nimport {replaceOrInsertAfter, wrapPerLine} from './helpers';\n\nexport const wrapToBlockquote = wrapPerLine({beforeText: '> ', skipEmptyLine: false});\n\nexport const insertBlockquoteLink: StateCommand = ({state, dispatch}) => {\n const markup = '> [link](url \"title\"){data-quotelink=true}\\n> \\n> ';\n const tr = replaceOrInsertAfter(state, markup);\n dispatch(state.update(tr));\n return true;\n};\nexport const wrapToCheckbox = wrapPerLine({beforeText: '[ ] '});\n\nexport const insertHRule: StateCommand = ({state, dispatch}) => {\n const hrMarkup = '---';\n const tr = replaceOrInsertAfter(state, hrMarkup);\n dispatch(state.update(tr));\n return true;\n};\n\nexport const insertMermaidDiagram: StateCommand = ({state, dispatch}) => {\n const markup = `\\`\\`\\`mermaid\nsequenceDiagram\n Alice->>Bob: Hi Bob\n Bob->>Alice: Hi Alice\n\\`\\`\\``;\n\n const tr = replaceOrInsertAfter(state, markup);\n dispatch(state.update(tr));\n return true;\n};\n\nexport const insertYfmHtmlBlock: StateCommand = ({state, dispatch}) => {\n const markup = `::: html\n\n<div>Add HTML code here</div>\n\n:::`;\n\n const tr = replaceOrInsertAfter(state, markup);\n dispatch(state.update(tr));\n return true;\n};\n"]}
|
|
@@ -33,6 +33,9 @@ export declare const linkItemMarkup: ToolbarItemMarkup;
|
|
|
33
33
|
export declare const quoteItemView: ToolbarItemView;
|
|
34
34
|
export declare const quoteItemWysiwyg: ToolbarItemWysiwyg;
|
|
35
35
|
export declare const quoteItemMarkup: ToolbarItemMarkup;
|
|
36
|
+
export declare const quoteLinkItemView: ToolbarItemView;
|
|
37
|
+
export declare const quoteLinkItemWysiwyg: ToolbarItemWysiwyg;
|
|
38
|
+
export declare const quoteLinkItemMarkup: ToolbarItemMarkup;
|
|
36
39
|
export declare const cutItemView: ToolbarItemView;
|
|
37
40
|
export declare const cutItemWysiwyg: ToolbarItemWysiwyg;
|
|
38
41
|
export declare const cutItemMarkup: ToolbarItemMarkup;
|