@gravity-ui/markdown-editor 15.4.2 → 15.6.0

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.
Files changed (196) hide show
  1. package/build/cjs/bundle/MarkdownEditorView.d.ts +3 -2
  2. package/build/cjs/bundle/MarkdownEditorView.js +3 -3
  3. package/build/cjs/bundle/MarkdownEditorView.js.map +1 -1
  4. package/build/cjs/bundle/MarkupEditorView.d.ts +2 -1
  5. package/build/cjs/bundle/MarkupEditorView.js +2 -2
  6. package/build/cjs/bundle/MarkupEditorView.js.map +1 -1
  7. package/build/cjs/bundle/WysiwygEditorView.d.ts +2 -1
  8. package/build/cjs/bundle/WysiwygEditorView.js +2 -2
  9. package/build/cjs/bundle/WysiwygEditorView.js.map +1 -1
  10. package/build/cjs/bundle/config/action-names.d.ts +1 -1
  11. package/build/cjs/bundle/config/action-names.js +1 -0
  12. package/build/cjs/bundle/config/action-names.js.map +1 -1
  13. package/build/cjs/bundle/config/icons.d.ts +1 -1
  14. package/build/cjs/bundle/config/icons.js +1 -0
  15. package/build/cjs/bundle/config/icons.js.map +1 -1
  16. package/build/cjs/bundle/config/w-heading-config.js +1 -0
  17. package/build/cjs/bundle/config/w-heading-config.js.map +1 -1
  18. package/build/cjs/bundle/settings/index.js +3 -3
  19. package/build/cjs/bundle/settings/index.js.map +1 -1
  20. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  21. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  22. package/build/cjs/bundle/types.d.ts +6 -0
  23. package/build/cjs/bundle/types.js.map +1 -1
  24. package/build/cjs/bundle/useMarkdownEditor.js +1 -0
  25. package/build/cjs/bundle/useMarkdownEditor.js.map +1 -1
  26. package/build/cjs/bundle/wysiwyg-preset.d.ts +1 -0
  27. package/build/cjs/bundle/wysiwyg-preset.js +1 -0
  28. package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
  29. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.d.ts +3 -0
  30. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.js +10 -0
  31. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/commands.js.map +1 -0
  32. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.d.ts +16 -0
  33. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js +72 -0
  34. package/build/cjs/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js.map +1 -0
  35. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.d.ts +10 -0
  36. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js +71 -0
  37. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js.map +1 -0
  38. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.d.ts +2 -0
  39. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js +41 -0
  40. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js.map +1 -0
  41. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.d.ts +6 -0
  42. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js +24 -0
  43. package/build/cjs/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js.map +1 -0
  44. package/build/cjs/extensions/additional/QuoteLink/commands.d.ts +4 -0
  45. package/build/cjs/extensions/additional/QuoteLink/commands.js +45 -0
  46. package/build/cjs/extensions/additional/QuoteLink/commands.js.map +1 -0
  47. package/build/cjs/extensions/additional/QuoteLink/index.css +32 -0
  48. package/build/cjs/extensions/additional/QuoteLink/index.d.ts +16 -0
  49. package/build/cjs/extensions/additional/QuoteLink/index.js +42 -0
  50. package/build/cjs/extensions/additional/QuoteLink/index.js.map +1 -0
  51. package/build/cjs/extensions/additional/YfmHtmlBlock/utils.js +2 -12
  52. package/build/cjs/extensions/additional/YfmHtmlBlock/utils.js.map +1 -1
  53. package/build/cjs/extensions/behavior/Clipboard/utils.d.ts +8 -1
  54. package/build/cjs/extensions/behavior/Clipboard/utils.js +3 -3
  55. package/build/cjs/extensions/behavior/Clipboard/utils.js.map +1 -1
  56. package/build/cjs/extensions/markdown/Html/schema.js +3 -3
  57. package/build/cjs/extensions/markdown/Html/schema.js.map +1 -1
  58. package/build/cjs/extensions/markdown/Lists/actions.js +2 -2
  59. package/build/cjs/extensions/markdown/Lists/actions.js.map +1 -1
  60. package/build/cjs/extensions/markdown/Lists/commands.d.ts +2 -1
  61. package/build/cjs/extensions/markdown/Lists/commands.js +64 -0
  62. package/build/cjs/extensions/markdown/Lists/commands.js.map +1 -1
  63. package/build/cjs/extensions/markdown/Lists/index.js +2 -2
  64. package/build/cjs/extensions/markdown/Lists/index.js.map +1 -1
  65. package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.d.ts +2 -0
  66. package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js +5 -2
  67. package/build/cjs/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js.map +1 -1
  68. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.d.ts +1 -1
  69. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js +2 -0
  70. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js.map +1 -1
  71. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.d.ts +9 -0
  72. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js +46 -0
  73. package/build/cjs/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js.map +1 -0
  74. package/build/cjs/i18n/menubar/en.json +1 -0
  75. package/build/cjs/i18n/menubar/index.d.ts +2 -1
  76. package/build/cjs/i18n/menubar/ru.json +1 -0
  77. package/build/cjs/icons/index.d.ts +1 -1
  78. package/build/cjs/icons/index.js +2 -1
  79. package/build/cjs/icons/index.js.map +1 -1
  80. package/build/cjs/markup/commands/blocks.d.ts +1 -0
  81. package/build/cjs/markup/commands/blocks.js +8 -1
  82. package/build/cjs/markup/commands/blocks.js.map +1 -1
  83. package/build/cjs/modules/toolbars/items.d.ts +3 -0
  84. package/build/cjs/modules/toolbars/items.js +23 -3
  85. package/build/cjs/modules/toolbars/items.js.map +1 -1
  86. package/build/cjs/modules/toolbars/types.d.ts +2 -0
  87. package/build/cjs/modules/toolbars/types.js.map +1 -1
  88. package/build/cjs/toolbar/ToolbarListButton.d.ts +1 -1
  89. package/build/cjs/toolbar/ToolbarListButton.js +6 -4
  90. package/build/cjs/toolbar/ToolbarListButton.js.map +1 -1
  91. package/build/cjs/toolbar/types.d.ts +2 -0
  92. package/build/cjs/toolbar/types.js.map +1 -1
  93. package/build/cjs/utils/getSanitize.d.ts +4 -0
  94. package/build/cjs/utils/getSanitize.js +16 -0
  95. package/build/cjs/utils/getSanitize.js.map +1 -0
  96. package/build/cjs/version.js +1 -1
  97. package/build/cjs/version.js.map +1 -1
  98. package/build/esm/bundle/MarkdownEditorView.d.ts +3 -2
  99. package/build/esm/bundle/MarkdownEditorView.js +3 -3
  100. package/build/esm/bundle/MarkdownEditorView.js.map +1 -1
  101. package/build/esm/bundle/MarkupEditorView.d.ts +2 -1
  102. package/build/esm/bundle/MarkupEditorView.js +2 -2
  103. package/build/esm/bundle/MarkupEditorView.js.map +1 -1
  104. package/build/esm/bundle/WysiwygEditorView.d.ts +2 -1
  105. package/build/esm/bundle/WysiwygEditorView.js +2 -2
  106. package/build/esm/bundle/WysiwygEditorView.js.map +1 -1
  107. package/build/esm/bundle/config/action-names.d.ts +1 -1
  108. package/build/esm/bundle/config/action-names.js +1 -0
  109. package/build/esm/bundle/config/action-names.js.map +1 -1
  110. package/build/esm/bundle/config/icons.d.ts +1 -1
  111. package/build/esm/bundle/config/icons.js +2 -1
  112. package/build/esm/bundle/config/icons.js.map +1 -1
  113. package/build/esm/bundle/config/w-heading-config.js +1 -0
  114. package/build/esm/bundle/config/w-heading-config.js.map +1 -1
  115. package/build/esm/bundle/settings/index.js +3 -3
  116. package/build/esm/bundle/settings/index.js.map +1 -1
  117. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  118. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  119. package/build/esm/bundle/types.d.ts +6 -0
  120. package/build/esm/bundle/types.js.map +1 -1
  121. package/build/esm/bundle/useMarkdownEditor.js +1 -0
  122. package/build/esm/bundle/useMarkdownEditor.js.map +1 -1
  123. package/build/esm/bundle/wysiwyg-preset.d.ts +1 -0
  124. package/build/esm/bundle/wysiwyg-preset.js +1 -0
  125. package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
  126. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.d.ts +3 -0
  127. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.js +6 -0
  128. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/commands.js.map +1 -0
  129. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.d.ts +16 -0
  130. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js +67 -0
  131. package/build/esm/extensions/additional/QuoteLink/PlaceholderWidget/descriptor.js.map +1 -0
  132. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.d.ts +10 -0
  133. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js +66 -0
  134. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/index.js.map +1 -0
  135. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.d.ts +2 -0
  136. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js +37 -0
  137. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/moveLinkToQuoteAttributes.js.map +1 -0
  138. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.d.ts +6 -0
  139. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js +21 -0
  140. package/build/esm/extensions/additional/QuoteLink/QuoteLinkSpecs/md/utils.js.map +1 -0
  141. package/build/esm/extensions/additional/QuoteLink/commands.d.ts +4 -0
  142. package/build/esm/extensions/additional/QuoteLink/commands.js +41 -0
  143. package/build/esm/extensions/additional/QuoteLink/commands.js.map +1 -0
  144. package/build/esm/extensions/additional/QuoteLink/index.css +32 -0
  145. package/build/esm/extensions/additional/QuoteLink/index.d.ts +16 -0
  146. package/build/esm/extensions/additional/QuoteLink/index.js +38 -0
  147. package/build/esm/extensions/additional/QuoteLink/index.js.map +1 -0
  148. package/build/esm/extensions/additional/YfmHtmlBlock/utils.js +2 -11
  149. package/build/esm/extensions/additional/YfmHtmlBlock/utils.js.map +1 -1
  150. package/build/esm/extensions/behavior/Clipboard/utils.d.ts +8 -1
  151. package/build/esm/extensions/behavior/Clipboard/utils.js +3 -3
  152. package/build/esm/extensions/behavior/Clipboard/utils.js.map +1 -1
  153. package/build/esm/extensions/markdown/Html/schema.js +2 -1
  154. package/build/esm/extensions/markdown/Html/schema.js.map +1 -1
  155. package/build/esm/extensions/markdown/Lists/actions.js +4 -4
  156. package/build/esm/extensions/markdown/Lists/actions.js.map +1 -1
  157. package/build/esm/extensions/markdown/Lists/commands.d.ts +2 -1
  158. package/build/esm/extensions/markdown/Lists/commands.js +63 -0
  159. package/build/esm/extensions/markdown/Lists/commands.js.map +1 -1
  160. package/build/esm/extensions/markdown/Lists/index.js +4 -4
  161. package/build/esm/extensions/markdown/Lists/index.js.map +1 -1
  162. package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.d.ts +2 -0
  163. package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js +5 -2
  164. package/build/esm/extensions/yfm/YfmConfigs/YfmConfigsSpecs/index.js.map +1 -1
  165. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.d.ts +1 -1
  166. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js +2 -0
  167. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/index.js.map +1 -1
  168. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.d.ts +9 -0
  169. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js +42 -0
  170. package/build/esm/extensions/yfm/YfmHeading/YfmHeadingSpecs/markdown/heading-attrs.js.map +1 -0
  171. package/build/esm/i18n/menubar/en.json +1 -0
  172. package/build/esm/i18n/menubar/index.d.ts +2 -1
  173. package/build/esm/i18n/menubar/ru.json +1 -0
  174. package/build/esm/icons/index.d.ts +1 -1
  175. package/build/esm/icons/index.js +1 -1
  176. package/build/esm/icons/index.js.map +1 -1
  177. package/build/esm/markup/commands/blocks.d.ts +1 -0
  178. package/build/esm/markup/commands/blocks.js +6 -0
  179. package/build/esm/markup/commands/blocks.js.map +1 -1
  180. package/build/esm/modules/toolbars/items.d.ts +3 -0
  181. package/build/esm/modules/toolbars/items.js +21 -1
  182. package/build/esm/modules/toolbars/items.js.map +1 -1
  183. package/build/esm/modules/toolbars/types.d.ts +2 -0
  184. package/build/esm/modules/toolbars/types.js.map +1 -1
  185. package/build/esm/toolbar/ToolbarListButton.d.ts +1 -1
  186. package/build/esm/toolbar/ToolbarListButton.js +6 -4
  187. package/build/esm/toolbar/ToolbarListButton.js.map +1 -1
  188. package/build/esm/toolbar/types.d.ts +2 -0
  189. package/build/esm/toolbar/types.js.map +1 -1
  190. package/build/esm/utils/getSanitize.d.ts +4 -0
  191. package/build/esm/utils/getSanitize.js +11 -0
  192. package/build/esm/utils/getSanitize.js.map +1 -0
  193. package/build/esm/version.js +1 -1
  194. package/build/esm/version.js.map +1 -1
  195. package/build/styles.css +32 -0
  196. package/package.json +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Lists/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAGlF,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,MAAM,EAAC,sBAAmB;AAChD,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,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEzC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAErC,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, sinkListItem, 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, 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: sinkListItem(liType(schema)),\n 'Shift-Tab': liftListItem(liType(schema)),\n\n 'Mod-[': liftListItem(liType(schema)),\n 'Mod-]': sinkListItem(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"]}
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'; // eslint-disable-line import/no-extraneous-dependencies
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
- builder.configureMd((md) => md.use(attrsPlugin, attrsOpts), { text: false });
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,CAAC,wDAAwD;AAG1H,OAAO,EAAC,IAAI,EAAC,8BAA2B;AAExC,MAAM,gBAAgB,GAAiB;IACnC,iBAAiB,EAAE,CAAC,IAAI,CAAC;CAC5B,CAAC;AAOF,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,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;IAEzF,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'; // eslint-disable-line import/no-extraneous-dependencies\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {noop} from '../../../../lodash';\n\nconst defaultAttrsOpts: AttrsOptions = {\n allowedAttributes: ['id'],\n};\n\nexport type YfmConfigsSpecsOptions = {\n /** markdown-it-attrs options */\n attrs?: AttrsOptions;\n};\n\nexport const YfmConfigsSpecs: ExtensionAuto<YfmConfigsSpecsOptions> = (builder, opts) => {\n const attrsOpts = {...defaultAttrsOpts, ...opts.attrs};\n\n builder.configureMd((md) => md.use<AttrsOptions>(attrsPlugin, attrsOpts), {text: false});\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
+ {"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,5 +1,5 @@
1
- import type { NodeSpec } from 'prosemirror-model';
2
1
  import type { ExtensionAuto } from "../../../../core/index.js";
2
+ import type { NodeSpec } from "../../../../pm/model.js";
3
3
  export { YfmHeadingAttr } from "./const.js";
4
4
  export type YfmHeadingSpecsOptions = {
5
5
  /**
@@ -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":"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","sourcesContent":["import type {Node, NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\n\nimport {YfmHeadingAttr, headingNodeName} from './const';\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.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"]}
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"]}
@@ -48,6 +48,7 @@
48
48
  "note": "Note",
49
49
  "olist": "Ordered list",
50
50
  "quote": "Quote",
51
+ "quotelink": "Quote link",
51
52
  "redo": "Redo",
52
53
  "strike": "Strikethrough",
53
54
  "table": "Table",
@@ -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;
@@ -48,6 +48,7 @@
48
48
  "note": "Примечание",
49
49
  "olist": "Нумерованный список",
50
50
  "quote": "Цитата",
51
+ "quotelink": "Цитата-ссылка",
51
52
  "redo": "Повторить",
52
53
  "strike": "Зачеркивание",
53
54
  "table": "Таблица",
@@ -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';
@@ -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,GAC1C,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} from '@gravity-ui/icons';\n"]}
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;AACtF,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});\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"]}
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;
@@ -11,7 +11,7 @@ import { gptHotKeys } from "../../extensions/additional/GPT/constants.js";
11
11
  import { headingType, pType } from "../../extensions/specs.js";
12
12
  import { i18n as i18nHint } from "../../i18n/hints/index.js";
13
13
  import { i18n } from "../../i18n/menubar/index.js";
14
- import { insertHRule, insertLink, insertMermaidDiagram, insertYfmHtmlBlock, insertYfmTable, insertYfmTabs, liftListItem as liftListItemCommand, redo, redoDepth, sinkListItem as sinkListItemCommand, toBulletList, toH1, toH2, toH3, toH4, toH5, toH6, toOrderedList, toggleBold, toggleItalic, toggleMarked, toggleMonospace, toggleStrikethrough, toggleUnderline, undo, undoDepth, wrapToBlockquote, wrapToCheckbox, wrapToCodeBlock, wrapToInlineCode, wrapToMathBlock, wrapToMathInline, wrapToYfmCut, wrapToYfmNote, } from "../../markup/commands/index.js";
14
+ import { insertBlockquoteLink, insertHRule, insertLink, insertMermaidDiagram, insertYfmHtmlBlock, insertYfmTable, insertYfmTabs, liftListItem as liftListItemCommand, redo, redoDepth, sinkListItem as sinkListItemCommand, toBulletList, toH1, toH2, toH3, toH4, toH5, toH6, toOrderedList, toggleBold, toggleItalic, toggleMarked, toggleMonospace, toggleStrikethrough, toggleUnderline, undo, undoDepth, wrapToBlockquote, wrapToCheckbox, wrapToCodeBlock, wrapToInlineCode, wrapToMathBlock, wrapToMathInline, wrapToYfmCut, wrapToYfmNote, } from "../../markup/commands/index.js";
15
15
  import { Action as A, formatter as f } from "../../shortcuts/index.js";
16
16
  import { ToolbarDataType } from "../../toolbar/index.js";
17
17
  const noop = () => { };
@@ -206,6 +206,25 @@ export const quoteItemMarkup = {
206
206
  isActive: inactive,
207
207
  isEnable: enable,
208
208
  };
209
+ // ---- Quote Link ----
210
+ export const quoteLinkItemView = {
211
+ type: ToolbarDataType.SingleButton,
212
+ title: i18n.bind(null, 'quotelink'),
213
+ icon: icons.quoteLink,
214
+ };
215
+ export const quoteLinkItemWysiwyg = {
216
+ exec: (e) => {
217
+ e.actions.quoteLink.run();
218
+ e.actions.addLinkToQuoteLink.run();
219
+ },
220
+ isActive: (e) => e.actions.quoteLink.isActive(),
221
+ isEnable: (e) => e.actions.quoteLink.isEnable(),
222
+ };
223
+ export const quoteLinkItemMarkup = {
224
+ exec: (e) => insertBlockquoteLink(e.cm),
225
+ isActive: inactive,
226
+ isEnable: enable,
227
+ };
209
228
  // ---- Cut ----
210
229
  export const cutItemView = {
211
230
  type: ToolbarDataType.SingleButton,
@@ -708,6 +727,7 @@ export const headingListItemView = {
708
727
  icon: icons.headline,
709
728
  title: i18n.bind(null, 'heading'),
710
729
  withArrow: true,
730
+ replaceActiveIcon: true,
711
731
  };
712
732
  // ---- Lists list ----
713
733
  export const listsListItemView = {