@gravity-ui/markdown-editor 15.27.2 → 15.29.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 (211) hide show
  1. package/README.md +6 -4
  2. package/build/cjs/bundle/Editor.js +1 -0
  3. package/build/cjs/bundle/Editor.js.map +1 -1
  4. package/build/cjs/bundle/HorizontalDrag.js +3 -3
  5. package/build/cjs/bundle/HorizontalDrag.js.map +1 -1
  6. package/build/cjs/bundle/settings/index.css +6 -14
  7. package/build/cjs/bundle/settings/index.js +5 -2
  8. package/build/cjs/bundle/settings/index.js.map +1 -1
  9. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
  10. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  11. package/build/cjs/bundle/types.d.ts +10 -11
  12. package/build/cjs/bundle/types.js.map +1 -1
  13. package/build/cjs/bundle/wysiwyg-preset.d.ts +0 -1
  14. package/build/cjs/bundle/wysiwyg-preset.js +1 -1
  15. package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
  16. package/build/cjs/core/Editor.js.map +1 -1
  17. package/build/cjs/core/ExtensionBuilder.d.ts +0 -2
  18. package/build/cjs/core/ExtensionBuilder.js +1 -1
  19. package/build/cjs/core/ExtensionBuilder.js.map +1 -1
  20. package/build/cjs/core/markdown/MarkdownParser.d.ts +2 -3
  21. package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
  22. package/build/cjs/core/types/extension.js.map +1 -1
  23. package/build/cjs/core/types/parser.d.ts +3 -2
  24. package/build/cjs/core/types/parser.js.map +1 -1
  25. package/build/cjs/extensions/additional/GPT/gptExtension/view.js +1 -3
  26. package/build/cjs/extensions/additional/GPT/gptExtension/view.js.map +1 -1
  27. package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
  28. package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
  29. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
  30. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
  31. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
  32. package/build/cjs/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
  33. package/build/cjs/extensions/behavior/Autocomplete/types.js.map +1 -1
  34. package/build/cjs/extensions/behavior/SelectionContext/index.d.ts +0 -2
  35. package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
  36. package/build/cjs/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  37. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
  38. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  39. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
  40. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js +80 -23
  41. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
  42. package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
  43. package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
  44. package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
  45. package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
  46. package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
  47. package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
  48. package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
  49. package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
  50. package/build/cjs/extensions/yfm/ImgSize/index.d.ts +0 -1
  51. package/build/cjs/extensions/yfm/ImgSize/index.js.map +1 -1
  52. package/build/cjs/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
  53. package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
  54. package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
  55. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
  56. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  57. package/build/cjs/extensions/yfm/YfmTable/index.d.ts +0 -2
  58. package/build/cjs/extensions/yfm/YfmTable/index.js.map +1 -1
  59. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
  60. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
  61. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +3 -4
  62. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
  63. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
  64. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
  65. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
  66. package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
  67. package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
  68. package/build/cjs/i18n/bundle/en.json +2 -1
  69. package/build/cjs/i18n/bundle/index.d.ts +3 -2
  70. package/build/cjs/i18n/bundle/ru.json +2 -1
  71. package/build/cjs/i18n/common/en.json +2 -1
  72. package/build/cjs/i18n/common/index.d.ts +2 -1
  73. package/build/cjs/i18n/common/ru.json +2 -1
  74. package/build/cjs/logger.d.ts +0 -1
  75. package/build/cjs/logger.js +0 -1
  76. package/build/cjs/logger.js.map +1 -1
  77. package/build/cjs/markup/codemirror/create.d.ts +3 -1
  78. package/build/cjs/markup/codemirror/create.js +4 -1
  79. package/build/cjs/markup/codemirror/create.js.map +1 -1
  80. package/build/cjs/markup/codemirror/gravity.js +0 -1
  81. package/build/cjs/markup/codemirror/gravity.js.map +1 -1
  82. package/build/cjs/shortcuts/default.js +0 -2
  83. package/build/cjs/shortcuts/default.js.map +1 -1
  84. package/build/cjs/table-utils/commands/removeRow.js +1 -2
  85. package/build/cjs/table-utils/commands/removeRow.js.map +1 -1
  86. package/build/cjs/toolbar/types.d.ts +2 -3
  87. package/build/cjs/toolbar/types.js.map +1 -1
  88. package/build/cjs/types/spec.d.ts +0 -1
  89. package/build/cjs/types/spec.js.map +1 -1
  90. package/build/cjs/utils/ecapeRegexp.d.ts +1 -2
  91. package/build/cjs/utils/ecapeRegexp.js +1 -2
  92. package/build/cjs/utils/ecapeRegexp.js.map +1 -1
  93. package/build/cjs/utils/inputrules.js +2 -2
  94. package/build/cjs/utils/inputrules.js.map +1 -1
  95. package/build/cjs/version.js +1 -1
  96. package/build/cjs/version.js.map +1 -1
  97. package/build/cjs/view/hooks/useFilesGallery/constants.d.ts +5 -0
  98. package/build/cjs/view/hooks/useFilesGallery/constants.js +10 -2
  99. package/build/cjs/view/hooks/useFilesGallery/constants.js.map +1 -1
  100. package/build/cjs/view/hooks/useFilesGallery/helpers.d.ts +8 -0
  101. package/build/cjs/view/hooks/useFilesGallery/helpers.js +28 -0
  102. package/build/cjs/view/hooks/useFilesGallery/helpers.js.map +1 -0
  103. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
  104. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js +19 -22
  105. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
  106. package/build/esm/bundle/Editor.js +1 -0
  107. package/build/esm/bundle/Editor.js.map +1 -1
  108. package/build/esm/bundle/HorizontalDrag.js +3 -3
  109. package/build/esm/bundle/HorizontalDrag.js.map +1 -1
  110. package/build/esm/bundle/settings/index.css +6 -14
  111. package/build/esm/bundle/settings/index.js +6 -3
  112. package/build/esm/bundle/settings/index.js.map +1 -1
  113. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
  114. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  115. package/build/esm/bundle/types.d.ts +10 -11
  116. package/build/esm/bundle/types.js.map +1 -1
  117. package/build/esm/bundle/wysiwyg-preset.d.ts +0 -1
  118. package/build/esm/bundle/wysiwyg-preset.js +1 -1
  119. package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
  120. package/build/esm/core/Editor.js.map +1 -1
  121. package/build/esm/core/ExtensionBuilder.d.ts +0 -2
  122. package/build/esm/core/ExtensionBuilder.js +1 -1
  123. package/build/esm/core/ExtensionBuilder.js.map +1 -1
  124. package/build/esm/core/markdown/MarkdownParser.d.ts +2 -3
  125. package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
  126. package/build/esm/core/types/extension.js.map +1 -1
  127. package/build/esm/core/types/parser.d.ts +3 -2
  128. package/build/esm/core/types/parser.js.map +1 -1
  129. package/build/esm/extensions/additional/GPT/gptExtension/view.js +1 -3
  130. package/build/esm/extensions/additional/GPT/gptExtension/view.js.map +1 -1
  131. package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
  132. package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
  133. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
  134. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
  135. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
  136. package/build/esm/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
  137. package/build/esm/extensions/behavior/Autocomplete/types.js.map +1 -1
  138. package/build/esm/extensions/behavior/SelectionContext/index.d.ts +0 -2
  139. package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
  140. package/build/esm/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  141. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
  142. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  143. package/build/esm/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
  144. package/build/esm/extensions/markdown/CodeBlock/handle-paste.js +78 -24
  145. package/build/esm/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
  146. package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
  147. package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
  148. package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
  149. package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
  150. package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
  151. package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
  152. package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
  153. package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
  154. package/build/esm/extensions/yfm/ImgSize/index.d.ts +0 -1
  155. package/build/esm/extensions/yfm/ImgSize/index.js.map +1 -1
  156. package/build/esm/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
  157. package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
  158. package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
  159. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
  160. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  161. package/build/esm/extensions/yfm/YfmTable/index.d.ts +0 -2
  162. package/build/esm/extensions/yfm/YfmTable/index.js.map +1 -1
  163. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
  164. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
  165. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +1 -2
  166. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
  167. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
  168. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
  169. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
  170. package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
  171. package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
  172. package/build/esm/i18n/bundle/en.json +2 -1
  173. package/build/esm/i18n/bundle/index.d.ts +3 -2
  174. package/build/esm/i18n/bundle/ru.json +2 -1
  175. package/build/esm/i18n/common/en.json +2 -1
  176. package/build/esm/i18n/common/index.d.ts +2 -1
  177. package/build/esm/i18n/common/ru.json +2 -1
  178. package/build/esm/logger.d.ts +0 -1
  179. package/build/esm/logger.js +0 -1
  180. package/build/esm/logger.js.map +1 -1
  181. package/build/esm/markup/codemirror/create.d.ts +3 -1
  182. package/build/esm/markup/codemirror/create.js +5 -2
  183. package/build/esm/markup/codemirror/create.js.map +1 -1
  184. package/build/esm/markup/codemirror/gravity.js +0 -1
  185. package/build/esm/markup/codemirror/gravity.js.map +1 -1
  186. package/build/esm/shortcuts/default.js +0 -2
  187. package/build/esm/shortcuts/default.js.map +1 -1
  188. package/build/esm/table-utils/commands/removeRow.js +1 -2
  189. package/build/esm/table-utils/commands/removeRow.js.map +1 -1
  190. package/build/esm/toolbar/types.d.ts +2 -3
  191. package/build/esm/toolbar/types.js.map +1 -1
  192. package/build/esm/types/spec.d.ts +0 -1
  193. package/build/esm/types/spec.js.map +1 -1
  194. package/build/esm/utils/ecapeRegexp.d.ts +1 -2
  195. package/build/esm/utils/ecapeRegexp.js +1 -2
  196. package/build/esm/utils/ecapeRegexp.js.map +1 -1
  197. package/build/esm/utils/inputrules.js +2 -2
  198. package/build/esm/utils/inputrules.js.map +1 -1
  199. package/build/esm/version.js +1 -1
  200. package/build/esm/version.js.map +1 -1
  201. package/build/esm/view/hooks/useFilesGallery/constants.d.ts +5 -0
  202. package/build/esm/view/hooks/useFilesGallery/constants.js +9 -1
  203. package/build/esm/view/hooks/useFilesGallery/constants.js.map +1 -1
  204. package/build/esm/view/hooks/useFilesGallery/helpers.d.ts +8 -0
  205. package/build/esm/view/hooks/useFilesGallery/helpers.js +25 -0
  206. package/build/esm/view/hooks/useFilesGallery/helpers.js.map +1 -0
  207. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
  208. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js +19 -21
  209. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
  210. package/build/styles.css +6 -14
  211. package/package.json +73 -49
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/ImgSize/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAyB,8BAAqB;AAChE,OAAO,EAAC,WAAW,EAA0B,+BAAsB;AACnE,OAAO,EAAC,YAAY,EAA2B,gCAAuB;AACtE,OAAO,EAAqB,QAAQ,EAAC,qBAAkB;AACvD,OAAO,EAAC,cAAc,EAAC,mBAAgB;AACvC,OAAO,EAAC,qBAAqB,EAAC,2CAAkC;AAehE,MAAM,CAAC,MAAM,OAAO,GAAkC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACpE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;QACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,oCAAoC,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;QACxF,6BAA6B,EAAE,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC;KAC7E,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;YACpB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;YAClE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;SACpE,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import type {Action, ExtensionAuto} from '../../../core';\n\nimport {ImagePaste, type ImagePasteOptions} from './ImagePaste';\nimport {ImageWidget, type ImageWidgetOptions} from './ImageWidget';\nimport {ImgSizeSpecs, type ImgSizeSpecsOptions} from './ImgSizeSpecs';\nimport {type AddImageAttrs, addImage} from './actions';\nimport {addImageAction} from './const';\nimport {imgSizeNodeViewPlugin} from './plugins/ImgSizeNodeView';\n\nexport type ImgSizeOptions = ImgSizeSpecsOptions & {\n /**\n * If we need to set dimensions for uploaded images\n *\n * @default false\n */\n needToSetDimensionsForUploadedImages?: boolean;\n} & Pick<\n ImagePasteOptions,\n 'imageUploadHandler' | 'parseInsertedUrlAsImage' | 'enableNewImageSizeCalculation'\n > &\n Pick<ImageWidgetOptions, 'renderImageWidgetForm'>;\n\nexport const ImgSize: ExtensionAuto<ImgSizeOptions> = (builder, opts) => {\n builder.use(ImgSizeSpecs, opts);\n\n builder.use(ImageWidget, {\n imageUploadHandler: opts.imageUploadHandler,\n renderImageWidgetForm: opts.renderImageWidgetForm,\n needToSetDimensionsForUploadedImages: Boolean(opts.needToSetDimensionsForUploadedImages),\n enableNewImageSizeCalculation: Boolean(opts.enableNewImageSizeCalculation),\n });\n\n if (opts.imageUploadHandler || opts.parseInsertedUrlAsImage) {\n builder.use(ImagePaste, {\n imageUploadHandler: opts.imageUploadHandler,\n needDimensions: Boolean(opts.needToSetDimensionsForUploadedImages),\n parseInsertedUrlAsImage: opts.parseInsertedUrlAsImage,\n enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,\n });\n }\n\n builder.addAction(addImageAction, ({schema}) => addImage(schema));\n\n builder.addPlugin(imgSizeNodeViewPlugin);\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n // @ts-expect-error\n [addImageAction]: Action<AddImageAttrs>;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/ImgSize/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAyB,8BAAqB;AAChE,OAAO,EAAC,WAAW,EAA0B,+BAAsB;AACnE,OAAO,EAAC,YAAY,EAA2B,gCAAuB;AACtE,OAAO,EAAqB,QAAQ,EAAC,qBAAkB;AACvD,OAAO,EAAC,cAAc,EAAC,mBAAgB;AACvC,OAAO,EAAC,qBAAqB,EAAC,2CAAkC;AAchE,MAAM,CAAC,MAAM,OAAO,GAAkC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACpE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;QACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,oCAAoC,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;QACxF,6BAA6B,EAAE,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC;KAC7E,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;YACpB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;YAClE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;SACpE,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import type {Action, ExtensionAuto} from '../../../core';\n\nimport {ImagePaste, type ImagePasteOptions} from './ImagePaste';\nimport {ImageWidget, type ImageWidgetOptions} from './ImageWidget';\nimport {ImgSizeSpecs, type ImgSizeSpecsOptions} from './ImgSizeSpecs';\nimport {type AddImageAttrs, addImage} from './actions';\nimport {addImageAction} from './const';\nimport {imgSizeNodeViewPlugin} from './plugins/ImgSizeNodeView';\n\nexport type ImgSizeOptions = ImgSizeSpecsOptions & {\n /**\n * If we need to set dimensions for uploaded images\n * @default false\n */\n needToSetDimensionsForUploadedImages?: boolean;\n} & Pick<\n ImagePasteOptions,\n 'imageUploadHandler' | 'parseInsertedUrlAsImage' | 'enableNewImageSizeCalculation'\n > &\n Pick<ImageWidgetOptions, 'renderImageWidgetForm'>;\n\nexport const ImgSize: ExtensionAuto<ImgSizeOptions> = (builder, opts) => {\n builder.use(ImgSizeSpecs, opts);\n\n builder.use(ImageWidget, {\n imageUploadHandler: opts.imageUploadHandler,\n renderImageWidgetForm: opts.renderImageWidgetForm,\n needToSetDimensionsForUploadedImages: Boolean(opts.needToSetDimensionsForUploadedImages),\n enableNewImageSizeCalculation: Boolean(opts.enableNewImageSizeCalculation),\n });\n\n if (opts.imageUploadHandler || opts.parseInsertedUrlAsImage) {\n builder.use(ImagePaste, {\n imageUploadHandler: opts.imageUploadHandler,\n needDimensions: Boolean(opts.needToSetDimensionsForUploadedImages),\n parseInsertedUrlAsImage: opts.parseInsertedUrlAsImage,\n enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,\n });\n }\n\n builder.addAction(addImageAction, ({schema}) => addImage(schema));\n\n builder.addPlugin(imgSizeNodeViewPlugin);\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n // @ts-expect-error\n [addImageAction]: Action<AddImageAttrs>;\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- export declare const videoPlugin: import("markdown-it").PluginWithOptions<Partial<import("@diplodoc/transform/lib/plugins/video/types.js").VideoFullOptions>>;
1
+ export declare const videoPlugin: import("markdown-it").PluginWithOptions<Partial<import("@diplodoc/transform/lib/plugins/video/types").VideoFullOptions>>;
2
2
  export { VideoService, defaults } from '@diplodoc/transform/lib/plugins/video/const.js';
3
3
  export type { VideoPluginOptions, VideoToken } from '@diplodoc/transform/lib/plugins/video/types.js';
4
4
  export { parseVideoUrl } from '@diplodoc/transform/lib/plugins/video/parsers.js';
@@ -3,11 +3,11 @@ import type { PlaceholderOptions } from "../../../../utils/placeholder.js";
3
3
  import { CutNode } from "./const.js";
4
4
  export type YfmCutSchemaOptions = {
5
5
  /**
6
- * @deprecated: use placeholder option in BehaviorPreset instead.
6
+ * @deprecated use placeholder option in BehaviorPreset instead.
7
7
  */
8
8
  yfmCutTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
9
9
  /**
10
- * @deprecated: use placeholder option in BehaviorPreset instead.
10
+ * @deprecated use placeholder option in BehaviorPreset instead.
11
11
  */
12
12
  yfmCutContentPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmCut/YfmCutSpecs/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type {NodeSpec} from '#pm/model';\nimport type {PlaceholderOptions} from 'src/utils/placeholder';\n\nimport {CutAttr, CutNode, YfmCutClassName} from './const';\n\nexport type YfmCutSchemaOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n yfmCutTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n yfmCutContentPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nconst DEFAULT_PLACEHOLDERS = {\n Title: 'Cut title',\n Content: 'Cut content',\n};\n\nexport const getSchemaSpecs = (\n opts?: YfmCutSchemaOptions,\n placeholder?: PlaceholderOptions,\n): Record<CutNode, NodeSpec> => ({\n [CutNode.Cut]: {\n attrs: {class: {default: YfmCutClassName.Cut}, [CutAttr.Markup]: {default: null}},\n content: `${CutNode.CutTitle} ${CutNode.CutContent}`,\n group: 'block yfm-cut',\n parseDOM: [\n {\n tag: `.${YfmCutClassName.Cut}`,\n getAttrs: (node) => ({[CutAttr.Markup]: node.getAttribute(CutAttr.Markup)}),\n },\n ],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n allowSelection: true,\n defining: true,\n complex: 'root',\n },\n\n [CutNode.CutTitle]: {\n attrs: {\n [CutAttr.Class]: {default: YfmCutClassName.Title},\n [CutAttr.Line]: {default: null},\n },\n content: 'inline*',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Title}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutTitle] ??\n opts?.yfmCutTitlePlaceholder ??\n DEFAULT_PLACEHOLDERS.Title,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [CutNode.CutContent]: {\n attrs: {class: {default: YfmCutClassName.Content}},\n content: '(block | paragraph)+',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Content}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutContent] ??\n opts?.yfmCutContentPlaceholder ??\n DEFAULT_PLACEHOLDERS.Content,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmCut/YfmCutSpecs/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type {NodeSpec} from '#pm/model';\nimport type {PlaceholderOptions} from 'src/utils/placeholder';\n\nimport {CutAttr, CutNode, YfmCutClassName} from './const';\n\nexport type YfmCutSchemaOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmCutTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmCutContentPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nconst DEFAULT_PLACEHOLDERS = {\n Title: 'Cut title',\n Content: 'Cut content',\n};\n\nexport const getSchemaSpecs = (\n opts?: YfmCutSchemaOptions,\n placeholder?: PlaceholderOptions,\n): Record<CutNode, NodeSpec> => ({\n [CutNode.Cut]: {\n attrs: {class: {default: YfmCutClassName.Cut}, [CutAttr.Markup]: {default: null}},\n content: `${CutNode.CutTitle} ${CutNode.CutContent}`,\n group: 'block yfm-cut',\n parseDOM: [\n {\n tag: `.${YfmCutClassName.Cut}`,\n getAttrs: (node) => ({[CutAttr.Markup]: node.getAttribute(CutAttr.Markup)}),\n },\n ],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n allowSelection: true,\n defining: true,\n complex: 'root',\n },\n\n [CutNode.CutTitle]: {\n attrs: {\n [CutAttr.Class]: {default: YfmCutClassName.Title},\n [CutAttr.Line]: {default: null},\n },\n content: 'inline*',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Title}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutTitle] ??\n opts?.yfmCutTitlePlaceholder ??\n DEFAULT_PLACEHOLDERS.Title,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [CutNode.CutContent]: {\n attrs: {class: {default: YfmCutClassName.Content}},\n content: '(block | paragraph)+',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Content}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutContent] ??\n opts?.yfmCutContentPlaceholder ??\n DEFAULT_PLACEHOLDERS.Content,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
@@ -4,7 +4,7 @@ export { NoteNode as YfmNoteNode } from "./const.js";
4
4
  export { noteType, noteTitleType } from "./utils.js";
5
5
  export type YfmNoteSpecsOptions = {
6
6
  /**
7
- * @deprecated: use placeholder option in BehaviorPreset instead.
7
+ * @deprecated use placeholder option in BehaviorPreset instead.
8
8
  */
9
9
  yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,gCAAgC,CAAC;AACnD,OAAO,SAAS,MAAM,gDAAgD,CAAC;AAGvE,OAAO,EAAC,SAAS,EAAC,iCAAsB;AAGxC,OAAO,EAAC,QAAQ,EAAC,mBAAgB;AACjC,OAAO,EAAC,YAAY,EAAC,oBAAiB;AACtC,OAAO,EAAC,cAAc,EAAC,oBAAiB;AACxC,OAAO,EAAC,gBAAgB,EAAC,wBAAqB;AAE9C,OAAO,EAAC,QAAQ,IAAI,WAAW,EAAC,mBAAgB;AAChD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,mBAAgB;AAShD,MAAM,CAAC,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC;SAC7E,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport {getConfig} from 'src/configure';\nimport type {ExtensionAuto} from 'src/core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const YfmNoteSpecs: ExtensionAuto<YfmNoteSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(yfmPlugin, {log, lang: getConfig().lang || 'en'}))\n .addNode(NoteNode.Note, () => ({\n spec: schemaSpecs[NoteNode.Note],\n toMd: serializerTokens[NoteNode.Note],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.Note],\n },\n }))\n .addNode(NoteNode.NoteTitle, () => ({\n spec: schemaSpecs[NoteNode.NoteTitle],\n toMd: serializerTokens[NoteNode.NoteTitle],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteTitle],\n },\n }))\n .addNode(NoteNode.NoteContent, () => ({\n spec: schemaSpecs[NoteNode.NoteContent],\n toMd: serializerTokens[NoteNode.NoteContent],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteContent],\n },\n }));\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,gCAAgC,CAAC;AACnD,OAAO,SAAS,MAAM,gDAAgD,CAAC;AAGvE,OAAO,EAAC,SAAS,EAAC,iCAAsB;AAGxC,OAAO,EAAC,QAAQ,EAAC,mBAAgB;AACjC,OAAO,EAAC,YAAY,EAAC,oBAAiB;AACtC,OAAO,EAAC,cAAc,EAAC,oBAAiB;AACxC,OAAO,EAAC,gBAAgB,EAAC,wBAAqB;AAE9C,OAAO,EAAC,QAAQ,IAAI,WAAW,EAAC,mBAAgB;AAChD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,mBAAgB;AAShD,MAAM,CAAC,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC;SAC7E,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport {getConfig} from 'src/configure';\nimport type {ExtensionAuto} from 'src/core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const YfmNoteSpecs: ExtensionAuto<YfmNoteSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(yfmPlugin, {log, lang: getConfig().lang || 'en'}))\n .addNode(NoteNode.Note, () => ({\n spec: schemaSpecs[NoteNode.Note],\n toMd: serializerTokens[NoteNode.Note],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.Note],\n },\n }))\n .addNode(NoteNode.NoteTitle, () => ({\n spec: schemaSpecs[NoteNode.NoteTitle],\n toMd: serializerTokens[NoteNode.NoteTitle],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteTitle],\n },\n }))\n .addNode(NoteNode.NoteContent, () => ({\n spec: schemaSpecs[NoteNode.NoteContent],\n toMd: serializerTokens[NoteNode.NoteContent],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteContent],\n },\n }));\n};\n"]}
@@ -6,14 +6,12 @@ export { YfmTableNode, yfmTableType, yfmTableBodyType, yfmTableRowType, yfmTable
6
6
  export type YfmTableOptions = YfmTableSpecsOptions & {
7
7
  /**
8
8
  * Enables floating controls for table.
9
- *
10
9
  * @default true
11
10
  */
12
11
  controls?: boolean;
13
12
  /**
14
13
  * Enables drag-d-drop rows and columns in table.
15
14
  * The `controls` property must also be `true`.
16
- *
17
15
  * @default true
18
16
  */
19
17
  dnd?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTable/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,sCAA6B;AAElD,OAAO,EAAC,aAAa,EAA4B,iCAAwB;AACzE,OAAO,EAAC,cAAc,EAAC,qBAAkB;AACzC,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AACtD,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,uBAAuB,EAAC,4CAAmC;AACnE,OAAO,EAAC,6BAA6B,EAAC,mDAAgD;AAEtF,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,OAAO,EAAC,iBAAiB,EAAC,oCAAiC;AAC3D,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACnB,iCAAwB;AAkBzB,MAAM,CAAC,MAAM,QAAQ,GAA0C,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAChF,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACrB,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,gBAAgB;KAC9B,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IAChD,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,EAAC,CAAC,CAAC,CAAC;IACpF,CAAC;AACL,CAAC,CAAC","sourcesContent":["import type {Action, ExtensionWithOptions} from '../../../core';\nimport {goToNextCell} from '../../../table-utils';\n\nimport {YfmTableSpecs, type YfmTableSpecsOptions} from './YfmTableSpecs';\nimport {createYfmTable} from './actions';\nimport {backspaceCommand} from './commands/backspace';\nimport {goToNextRow} from './commands/goToNextRow';\nimport {yfmTableControlsPlugins} from './plugins/YfmTableControls';\nimport {yfmTableTransformPastedPlugin} from './plugins/yfmTableTransformPastedPlugin';\n\nconst action = 'createYfmTable';\n\nexport {convertToYfmTable} from './commands/convert-table';\nexport {\n YfmTableNode,\n yfmTableType,\n yfmTableBodyType,\n yfmTableRowType,\n yfmTableCellType,\n} from './YfmTableSpecs';\n\nexport type YfmTableOptions = YfmTableSpecsOptions & {\n /**\n * Enables floating controls for table.\n *\n * @default true\n */\n controls?: boolean;\n /**\n * Enables drag-d-drop rows and columns in table.\n * The `controls` property must also be `true`.\n *\n * @default true\n */\n dnd?: boolean;\n};\n\nexport const YfmTable: ExtensionWithOptions<YfmTableOptions> = (builder, options) => {\n builder.use(YfmTableSpecs, options);\n\n builder.addKeymap(() => ({\n Tab: goToNextCell('next'),\n 'Shift-Tab': goToNextCell('prev'),\n ArrowDown: goToNextRow('down'),\n ArrowUp: goToNextRow('up'),\n Backspace: backspaceCommand,\n }));\n builder.addAction(action, () => createYfmTable);\n builder.addPlugin(yfmTableTransformPastedPlugin);\n\n if (options.controls !== false) {\n builder.addPlugin(yfmTableControlsPlugins({dndEnabled: options.dnd !== false}));\n }\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n [action]: Action;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTable/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,sCAA6B;AAElD,OAAO,EAAC,aAAa,EAA4B,iCAAwB;AACzE,OAAO,EAAC,cAAc,EAAC,qBAAkB;AACzC,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AACtD,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,uBAAuB,EAAC,4CAAmC;AACnE,OAAO,EAAC,6BAA6B,EAAC,mDAAgD;AAEtF,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,OAAO,EAAC,iBAAiB,EAAC,oCAAiC;AAC3D,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACnB,iCAAwB;AAgBzB,MAAM,CAAC,MAAM,QAAQ,GAA0C,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAChF,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACrB,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,gBAAgB;KAC9B,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IAChD,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,EAAC,CAAC,CAAC,CAAC;IACpF,CAAC;AACL,CAAC,CAAC","sourcesContent":["import type {Action, ExtensionWithOptions} from '../../../core';\nimport {goToNextCell} from '../../../table-utils';\n\nimport {YfmTableSpecs, type YfmTableSpecsOptions} from './YfmTableSpecs';\nimport {createYfmTable} from './actions';\nimport {backspaceCommand} from './commands/backspace';\nimport {goToNextRow} from './commands/goToNextRow';\nimport {yfmTableControlsPlugins} from './plugins/YfmTableControls';\nimport {yfmTableTransformPastedPlugin} from './plugins/yfmTableTransformPastedPlugin';\n\nconst action = 'createYfmTable';\n\nexport {convertToYfmTable} from './commands/convert-table';\nexport {\n YfmTableNode,\n yfmTableType,\n yfmTableBodyType,\n yfmTableRowType,\n yfmTableCellType,\n} from './YfmTableSpecs';\n\nexport type YfmTableOptions = YfmTableSpecsOptions & {\n /**\n * Enables floating controls for table.\n * @default true\n */\n controls?: boolean;\n /**\n * Enables drag-d-drop rows and columns in table.\n * The `controls` property must also be `true`.\n * @default true\n */\n dnd?: boolean;\n};\n\nexport const YfmTable: ExtensionWithOptions<YfmTableOptions> = (builder, options) => {\n builder.use(YfmTableSpecs, options);\n\n builder.addKeymap(() => ({\n Tab: goToNextCell('next'),\n 'Shift-Tab': goToNextCell('prev'),\n ArrowDown: goToNextRow('down'),\n ArrowUp: goToNextRow('up'),\n Backspace: backspaceCommand,\n }));\n builder.addAction(action, () => createYfmTable);\n builder.addPlugin(yfmTableTransformPastedPlugin);\n\n if (options.controls !== false) {\n builder.addPlugin(yfmTableControlsPlugins({dndEnabled: options.dnd !== false}));\n }\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n [action]: Action;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingMenuControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useMemo} from 'react';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport type {ClientRectObject, VirtualElement} from '@floating-ui/dom';\nimport {\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n BroomMotion as ClearCells,\n TrashBin,\n Xmark,\n} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {i18n} from 'src/i18n/yfm-table';\n\nimport type {DnDControlHandler} from '../../dnd/dnd';\nimport {FloatingMenu, type FloatingMenuProps} from '../FloatingMenu/FloatingMenu';\n\ntype ControlType = FloatingMenuProps['dirtype'];\n\nexport type FloatingMenuControlProps = {\n cellElement: Element;\n tableElement: Element;\n multiple: boolean;\n type: ControlType;\n dndHandler?: DnDControlHandler;\n onMenuOpenToggle: FloatingMenuProps['onOpenToggle'];\n onClearCellsClick: () => void;\n onInsertBeforeClick: () => void;\n onInsertAfterClick: () => void;\n onRemoveRangeClick: () => void;\n onRemoveTableClick: () => void;\n};\n\nexport const FloatingMenuControl: React.FC<FloatingMenuControlProps> =\n function YfmTableFloatingMenuControl({\n type,\n multiple,\n dndHandler,\n cellElement,\n tableElement,\n onMenuOpenToggle,\n onClearCellsClick,\n onInsertBeforeClick,\n onInsertAfterClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n }) {\n const dropdownItems = useMemo<FloatingMenuProps['dropdownItems']>(\n () =>\n [\n [\n {\n text: i18n(`${type}.add.before`),\n qa: `g-md-yfm-table-action-add-${type}-before`,\n action: onInsertBeforeClick,\n iconStart: <Icon data={type === 'row' ? ArrowUp : ArrowLeft} />,\n },\n {\n text: i18n(`${type}.add.after`),\n qa: `g-md-yfm-table-action-add-${type}-after`,\n action: onInsertAfterClick,\n iconStart: <Icon data={type === 'row' ? ArrowDown : ArrowRight} />,\n },\n ],\n [\n {\n text: i18n('cells.clear'),\n qa: `g-md-yfm-table-${type}-clear-cells`,\n action: onClearCellsClick,\n iconStart: <Icon data={ClearCells} />,\n },\n ],\n [\n {\n text: i18n(`${type}.remove${multiple ? '.multiple' : ''}`),\n qa: `g-md-yfm-table-action-remove-${type}`,\n action: onRemoveRangeClick,\n iconStart: <Icon data={Xmark} />,\n },\n {\n theme: 'danger',\n text: i18n('table.remove'),\n qa: 'g-md-yfm-table-action-remove-table',\n action: onRemoveTableClick,\n iconStart: <Icon data={TrashBin} />,\n },\n ],\n ] satisfies FloatingMenuProps['dropdownItems'],\n [\n type,\n multiple,\n onClearCellsClick,\n onInsertAfterClick,\n onInsertBeforeClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n ],\n );\n\n const anchor = useMemo(\n () => getVirtualAnchor(type, tableElement, cellElement),\n [type, tableElement, cellElement],\n );\n\n return (\n <FloatingMenu\n dirtype={type}\n canDrag={dndHandler ? dndHandler.canDrag() : false}\n onOpenToggle={onMenuOpenToggle}\n anchorElement={anchor}\n switcherMouseProps={\n dndHandler\n ? {\n onMouseLeave: dndHandler.control_handleMouseLeave,\n onMouseDown: dndHandler.control_handleMouseDown,\n onMouseMove: dndHandler.control_handleMouseMove,\n onMouseUp: dndHandler.control_handleMouseUp,\n }\n : undefined\n }\n dropdownItems={dropdownItems}\n />\n );\n };\n\nfunction getVirtualAnchor(\n type: ControlType,\n tableElem: Element,\n cellElem: Element,\n): VirtualElement {\n if (type === 'row') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect: ClientRectObject = tableElem.getBoundingClientRect().toJSON();\n\n {\n // fix table rect\n tableRect.x += 1;\n tableRect.width -= 2;\n tableRect.left += 1;\n tableRect.right -= 1;\n }\n\n return {\n // from table\n x: tableRect.x,\n width: tableRect.width,\n left: tableRect.left,\n right: tableRect.right,\n // from cell\n y: cellRect.y,\n height: cellRect.height,\n top: cellRect.top,\n bottom: cellRect.top,\n };\n },\n };\n }\n\n if (type === 'column') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect: ClientRectObject = cellElem.getBoundingClientRect().toJSON();\n const tableRect = tableElem.getBoundingClientRect();\n\n const EDGE_OFFSET = 16;\n\n const cellMiddle = cellRect.x + cellRect.width / 2;\n\n // left border of table\n if (cellMiddle - EDGE_OFFSET <= tableRect.left) {\n const visible = cellRect.right - tableRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.left = cellRect.right - cellRect.width;\n cellRect.x = cellRect.left;\n }\n\n // right border of table\n if (cellMiddle + EDGE_OFFSET >= tableRect.right) {\n const visible = tableRect.right - cellRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.right = cellRect.left + cellRect.width;\n }\n\n return cellRect;\n },\n };\n }\n\n throw new Error(`Unknown control type: ${type}`);\n}\n"]}
1
+ {"version":3,"file":"FloatingMenuControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAG9B,OAAO,EACH,SAAS,EACT,SAAS,EACT,UAAU,EACV,OAAO,EACP,WAAW,IAAI,UAAU,EACzB,QAAQ,EACR,KAAK,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,IAAI,EAAC,qDAA2B;AAGxC,OAAO,EAAC,YAAY,EAAyB,wCAAqC;AAkBlF,MAAM,CAAC,MAAM,mBAAmB,GAC5B,SAAS,2BAA2B,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACrB;IACG,MAAM,aAAa,GAAG,OAAO,CACzB,GAAG,EAAE,CACD;QACI;YACI;gBACI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC;gBAChC,EAAE,EAAE,6BAA6B,IAAI,SAAS;gBAC9C,MAAM,EAAE,mBAAmB;gBAC3B,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAI;aAClE;YACD;gBACI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC;gBAC/B,EAAE,EAAE,6BAA6B,IAAI,QAAQ;gBAC7C,MAAM,EAAE,kBAAkB;gBAC1B,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAI;aACrE;SACJ;QACD;YACI;gBACI,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;gBACzB,EAAE,EAAE,kBAAkB,IAAI,cAAc;gBACxC,MAAM,EAAE,iBAAiB;gBACzB,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,UAAU,GAAI;aACxC;SACJ;QACD;YACI;gBACI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1D,EAAE,EAAE,gCAAgC,IAAI,EAAE;gBAC1C,MAAM,EAAE,kBAAkB;gBAC1B,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,GAAI;aACnC;YACD;gBACI,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;gBAC1B,EAAE,EAAE,oCAAoC;gBACxC,MAAM,EAAE,kBAAkB;gBAC1B,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI;aACtC;SACJ;KACyC,EAClD;QACI,IAAI;QACJ,QAAQ;QACR,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;KACrB,CACJ,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAClB,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,EACvD,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CACpC,CAAC;IAEF,OAAO,CACH,KAAC,YAAY,IACT,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAClD,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,MAAM,EACrB,kBAAkB,EACd,UAAU;YACN,CAAC,CAAC;gBACI,YAAY,EAAE,UAAU,CAAC,wBAAwB;gBACjD,WAAW,EAAE,UAAU,CAAC,uBAAuB;gBAC/C,WAAW,EAAE,UAAU,CAAC,uBAAuB;gBAC/C,SAAS,EAAE,UAAU,CAAC,qBAAqB;aAC9C;YACH,CAAC,CAAC,SAAS,EAEnB,aAAa,EAAE,aAAa,GAC9B,CACL,CAAC;AACN,CAAC,CAAC;AAEN,SAAS,gBAAgB,CACrB,IAAiB,EACjB,SAAkB,EAClB,QAAiB;IAEjB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,OAAO;YACH,cAAc,EAAE,QAAQ;YACxB,qBAAqB;gBACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBAClD,MAAM,SAAS,GAAqB,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC;gBAE/E,CAAC;oBACG,iBAAiB;oBACjB,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;oBACjB,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;oBACrB,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;oBACpB,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;gBACzB,CAAC;gBAED,OAAO;oBACH,aAAa;oBACb,CAAC,EAAE,SAAS,CAAC,CAAC;oBACd,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,YAAY;oBACZ,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,MAAM,EAAE,QAAQ,CAAC,GAAG;iBACvB,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO;YACH,cAAc,EAAE,QAAQ;YACxB,qBAAqB;gBACjB,MAAM,QAAQ,GAAqB,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC;gBAC7E,MAAM,SAAS,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAEpD,MAAM,WAAW,GAAG,EAAE,CAAC;gBAEvB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBAEnD,uBAAuB;gBACvB,IAAI,UAAU,GAAG,WAAW,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;oBAChD,QAAQ,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC7C,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;oBAChD,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC/B,CAAC;gBAED,wBAAwB;gBACxB,IAAI,UAAU,GAAG,WAAW,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAChD,QAAQ,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC7C,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACpD,CAAC;gBAED,OAAO,QAAQ,CAAC;YACpB,CAAC;SACJ,CAAC;IACN,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import {useMemo} from 'react';\n\nimport type {ClientRectObject, VirtualElement} from '@floating-ui/react';\nimport {\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n BroomMotion as ClearCells,\n TrashBin,\n Xmark,\n} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {i18n} from 'src/i18n/yfm-table';\n\nimport type {DnDControlHandler} from '../../dnd/dnd';\nimport {FloatingMenu, type FloatingMenuProps} from '../FloatingMenu/FloatingMenu';\n\ntype ControlType = FloatingMenuProps['dirtype'];\n\nexport type FloatingMenuControlProps = {\n cellElement: Element;\n tableElement: Element;\n multiple: boolean;\n type: ControlType;\n dndHandler?: DnDControlHandler;\n onMenuOpenToggle: FloatingMenuProps['onOpenToggle'];\n onClearCellsClick: () => void;\n onInsertBeforeClick: () => void;\n onInsertAfterClick: () => void;\n onRemoveRangeClick: () => void;\n onRemoveTableClick: () => void;\n};\n\nexport const FloatingMenuControl: React.FC<FloatingMenuControlProps> =\n function YfmTableFloatingMenuControl({\n type,\n multiple,\n dndHandler,\n cellElement,\n tableElement,\n onMenuOpenToggle,\n onClearCellsClick,\n onInsertBeforeClick,\n onInsertAfterClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n }) {\n const dropdownItems = useMemo<FloatingMenuProps['dropdownItems']>(\n () =>\n [\n [\n {\n text: i18n(`${type}.add.before`),\n qa: `g-md-yfm-table-action-add-${type}-before`,\n action: onInsertBeforeClick,\n iconStart: <Icon data={type === 'row' ? ArrowUp : ArrowLeft} />,\n },\n {\n text: i18n(`${type}.add.after`),\n qa: `g-md-yfm-table-action-add-${type}-after`,\n action: onInsertAfterClick,\n iconStart: <Icon data={type === 'row' ? ArrowDown : ArrowRight} />,\n },\n ],\n [\n {\n text: i18n('cells.clear'),\n qa: `g-md-yfm-table-${type}-clear-cells`,\n action: onClearCellsClick,\n iconStart: <Icon data={ClearCells} />,\n },\n ],\n [\n {\n text: i18n(`${type}.remove${multiple ? '.multiple' : ''}`),\n qa: `g-md-yfm-table-action-remove-${type}`,\n action: onRemoveRangeClick,\n iconStart: <Icon data={Xmark} />,\n },\n {\n theme: 'danger',\n text: i18n('table.remove'),\n qa: 'g-md-yfm-table-action-remove-table',\n action: onRemoveTableClick,\n iconStart: <Icon data={TrashBin} />,\n },\n ],\n ] satisfies FloatingMenuProps['dropdownItems'],\n [\n type,\n multiple,\n onClearCellsClick,\n onInsertAfterClick,\n onInsertBeforeClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n ],\n );\n\n const anchor = useMemo(\n () => getVirtualAnchor(type, tableElement, cellElement),\n [type, tableElement, cellElement],\n );\n\n return (\n <FloatingMenu\n dirtype={type}\n canDrag={dndHandler ? dndHandler.canDrag() : false}\n onOpenToggle={onMenuOpenToggle}\n anchorElement={anchor}\n switcherMouseProps={\n dndHandler\n ? {\n onMouseLeave: dndHandler.control_handleMouseLeave,\n onMouseDown: dndHandler.control_handleMouseDown,\n onMouseMove: dndHandler.control_handleMouseMove,\n onMouseUp: dndHandler.control_handleMouseUp,\n }\n : undefined\n }\n dropdownItems={dropdownItems}\n />\n );\n };\n\nfunction getVirtualAnchor(\n type: ControlType,\n tableElem: Element,\n cellElem: Element,\n): VirtualElement {\n if (type === 'row') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect: ClientRectObject = tableElem.getBoundingClientRect().toJSON();\n\n {\n // fix table rect\n tableRect.x += 1;\n tableRect.width -= 2;\n tableRect.left += 1;\n tableRect.right -= 1;\n }\n\n return {\n // from table\n x: tableRect.x,\n width: tableRect.width,\n left: tableRect.left,\n right: tableRect.right,\n // from cell\n y: cellRect.y,\n height: cellRect.height,\n top: cellRect.top,\n bottom: cellRect.top,\n };\n },\n };\n }\n\n if (type === 'column') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect: ClientRectObject = cellElem.getBoundingClientRect().toJSON();\n const tableRect = tableElem.getBoundingClientRect();\n\n const EDGE_OFFSET = 16;\n\n const cellMiddle = cellRect.x + cellRect.width / 2;\n\n // left border of table\n if (cellMiddle - EDGE_OFFSET <= tableRect.left) {\n const visible = cellRect.right - tableRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.left = cellRect.right - cellRect.width;\n cellRect.x = cellRect.left;\n }\n\n // right border of table\n if (cellMiddle + EDGE_OFFSET >= tableRect.right) {\n const visible = tableRect.right - cellRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.right = cellRect.left + cellRect.width;\n }\n\n return cellRect;\n },\n };\n }\n\n throw new Error(`Unknown control type: ${type}`);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type ReferenceElement } from '@floating-ui/dom';
1
+ import { type ReferenceElement } from '@floating-ui/react';
2
2
  export type InsertCursorProps = {
3
3
  anchor: ReferenceElement;
4
4
  type: 'row' | 'column';
@@ -1,7 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useState } from 'react';
3
- // eslint-disable-next-line import/no-extraneous-dependencies
4
- import { autoUpdate, computePosition } from '@floating-ui/dom';
3
+ import { autoUpdate, computePosition, } from '@floating-ui/react';
5
4
  import { Portal } from '@gravity-ui/uikit';
6
5
  import { useLatest } from 'react-use';
7
6
  import { useElementState } from "../../../../../../../react-utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"InsertCursor.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {type Placement, type ReferenceElement, autoUpdate, computePosition} from '@floating-ui/dom';\nimport {Portal} from '@gravity-ui/uikit';\nimport {useLatest} from 'react-use';\n\nimport {useElementState} from 'src/react-utils';\n\nconst placementByType: Record<InsertCursorProps['type'], Placement> = {\n row: 'bottom-start',\n column: 'right-start',\n};\n\nexport type InsertCursorProps = {\n anchor: ReferenceElement;\n type: 'row' | 'column';\n};\n\nexport const InsertCursor: React.FC<InsertCursorProps> = function YfmTableInsertCursor({\n type,\n anchor: referenceEl,\n}) {\n const [floatingEl, setFloatingEl] = useElementState();\n const {width, height, updateRect} = useSize(type, () => referenceEl.getBoundingClientRect());\n const widhtRef = useLatest(width);\n const [floatingStyles, setFloatingStyles] = useState({top: -9999, left: -9999});\n\n useEffect(() => {\n if (referenceEl && floatingEl) {\n return autoUpdate(referenceEl, floatingEl, () => {\n updateRect(referenceEl.getBoundingClientRect());\n\n computePosition(referenceEl, floatingEl, {\n placement: placementByType[type],\n }).then(({x, y}) => {\n if (type === 'row') setFloatingStyles({left: x, top: y - 1});\n else setFloatingStyles({left: x - 1, top: y});\n });\n });\n }\n return undefined;\n }, [referenceEl, floatingEl, widhtRef, type, updateRect]);\n\n return (\n <Portal>\n <div\n ref={setFloatingEl}\n style={{\n position: 'absolute',\n zIndex: 1005,\n width,\n height,\n pointerEvents: 'auto',\n outline: 'none',\n backgroundColor: 'var(--g-color-line-brand)',\n ...floatingStyles,\n }}\n />\n </Portal>\n );\n};\n\ntype Size = {\n width: number;\n height: number;\n};\n\nfunction useSize(type: InsertCursorProps['type'], getRect: () => Size) {\n const [size, setSize] = useState<Size>(() => getSize(type, getRect()));\n const sizeRef = useLatest(size);\n\n return {\n width: size.width,\n height: size.height,\n updateRect: useCallback(\n (rect: Size) => {\n const newSize = getSize(type, rect);\n if (type === 'row' && newSize.width !== sizeRef.current.width) setSize(newSize);\n if (type === 'column' && newSize.height !== sizeRef.current.height)\n setSize(newSize);\n },\n [sizeRef, type],\n ),\n };\n}\n\nfunction getSize(type: InsertCursorProps['type'], rect: Size): Size {\n if (type === 'row') return {height: 2, width: rect.width};\n return {width: 2, height: rect.height};\n}\n"]}
1
+ {"version":3,"file":"InsertCursor.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {\n type Placement,\n type ReferenceElement,\n autoUpdate,\n computePosition,\n} from '@floating-ui/react';\nimport {Portal} from '@gravity-ui/uikit';\nimport {useLatest} from 'react-use';\n\nimport {useElementState} from 'src/react-utils';\n\nconst placementByType: Record<InsertCursorProps['type'], Placement> = {\n row: 'bottom-start',\n column: 'right-start',\n};\n\nexport type InsertCursorProps = {\n anchor: ReferenceElement;\n type: 'row' | 'column';\n};\n\nexport const InsertCursor: React.FC<InsertCursorProps> = function YfmTableInsertCursor({\n type,\n anchor: referenceEl,\n}) {\n const [floatingEl, setFloatingEl] = useElementState();\n const {width, height, updateRect} = useSize(type, () => referenceEl.getBoundingClientRect());\n const widhtRef = useLatest(width);\n const [floatingStyles, setFloatingStyles] = useState({top: -9999, left: -9999});\n\n useEffect(() => {\n if (referenceEl && floatingEl) {\n return autoUpdate(referenceEl, floatingEl, () => {\n updateRect(referenceEl.getBoundingClientRect());\n\n computePosition(referenceEl, floatingEl, {\n placement: placementByType[type],\n }).then(({x, y}) => {\n if (type === 'row') setFloatingStyles({left: x, top: y - 1});\n else setFloatingStyles({left: x - 1, top: y});\n });\n });\n }\n return undefined;\n }, [referenceEl, floatingEl, widhtRef, type, updateRect]);\n\n return (\n <Portal>\n <div\n ref={setFloatingEl}\n style={{\n position: 'absolute',\n zIndex: 1005,\n width,\n height,\n pointerEvents: 'auto',\n outline: 'none',\n backgroundColor: 'var(--g-color-line-brand)',\n ...floatingStyles,\n }}\n />\n </Portal>\n );\n};\n\ntype Size = {\n width: number;\n height: number;\n};\n\nfunction useSize(type: InsertCursorProps['type'], getRect: () => Size) {\n const [size, setSize] = useState<Size>(() => getSize(type, getRect()));\n const sizeRef = useLatest(size);\n\n return {\n width: size.width,\n height: size.height,\n updateRect: useCallback(\n (rect: Size) => {\n const newSize = getSize(type, rect);\n if (type === 'row' && newSize.width !== sizeRef.current.width) setSize(newSize);\n if (type === 'column' && newSize.height !== sizeRef.current.height)\n setSize(newSize);\n },\n [sizeRef, type],\n ),\n };\n}\n\nfunction getSize(type: InsertCursorProps['type'], rect: Size): Size {\n if (type === 'row') return {height: 2, width: rect.width};\n return {width: 2, height: rect.height};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPlusControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAIjE,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,OAAO,EAAC,cAAc,EAAC,wCAAqC;AAC5D,OAAO,EACH,kBAAkB,GAGrB,uCAA8B;AAY/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CACnC,SAAS,8BAA8B,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAC;IAC/E,MAAM,MAAM,GAAG,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACH,cAAc,EAAE,SAAS;QACzB,qBAAqB;YACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;YAEpD,OAAO,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC;oBACI,CAAC,EAAE,SAAS,CAAC,CAAC;oBACd,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,MAAM,EAAE,QAAQ,CAAC,GAAG;iBACvB;gBACH,CAAC,CAAC;oBACI,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,CAAC,EAAE,SAAS,CAAC,CAAC;oBACd,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,MAAM,EAAE,SAAS,CAAC,GAAG;iBACxB,CAAC;QACZ,CAAC;KACJ,CAAC,EACF,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAC9B,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEtD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,UAAU;YAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE;QACjC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QACjC,gBAAgB,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAExC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9B,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAEhC,OAAO,CACH,KAAC,kBAAkB,IACf,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7B,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,GACzD,CACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,SAAS,eAAe,CAAC,IAAiB,EAAE,QAAiB,EAAE,SAAkB;IAC7E,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK;IAE1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;IAEpD,OAAO,CACH,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,IAAI,SAAS;QAC5C,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAChD,CAAC;AACN,CAAC","sourcesContent":["import {memo, useEffect, useMemo, useRef, useState} from 'react';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport type {VirtualElement} from '@floating-ui/dom';\nimport {useEffectOnce} from 'react-use';\n\nimport {useRafThrottle} from '../../hooks/use-raf-throttle';\nimport {\n FloatingPlusButton,\n type FloatingPlusButtonProps,\n type FloatingPlusButtonRef,\n} from '../FloatingPlusButton';\n\ntype ControlType = FloatingPlusButtonProps['type'];\n\nexport type FloatingPlusControlProps = {\n type: ControlType;\n index: number;\n cellElem: Element;\n tableElem: Element;\n onClick: (rowIdx: number) => void;\n};\n\nexport const FloatingPlusControl = memo<FloatingPlusControlProps>(\n function YfmTableRowFloatingPlusControl({type, index, cellElem, tableElem, onClick}) {\n const anchor = useMemo<VirtualElement>(\n () => ({\n contextElement: tableElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect = tableElem.getBoundingClientRect();\n\n return type === 'row'\n ? {\n x: tableRect.x,\n y: cellRect.y,\n width: tableRect.width,\n height: cellRect.height,\n top: cellRect.top,\n left: tableRect.left,\n right: tableRect.right,\n bottom: cellRect.top,\n }\n : {\n x: cellRect.x,\n y: tableRect.y,\n width: cellRect.width,\n height: tableRect.height,\n top: tableRect.top,\n left: cellRect.left,\n right: cellRect.right,\n bottom: tableRect.top,\n };\n },\n }),\n [cellElem, tableElem, type],\n );\n\n const [visible, setVisible] = useState(() => shouldBeVisible(type, cellElem, tableElem));\n const buttonRef = useRef<FloatingPlusButtonRef>(null);\n\n const updateVisibility = () => {\n const newVisible = shouldBeVisible(type, cellElem, tableElem);\n if (visible !== newVisible) setVisible(newVisible);\n };\n\n const onChange = useRafThrottle(() => {\n buttonRef.current?.forceUpdate();\n updateVisibility();\n });\n\n // Update after first render\n useEffectOnce(updateVisibility);\n\n useEffect(() => {\n if (type !== 'column') return undefined;\n\n const observer = new ResizeObserver(onChange);\n observer.observe(tableElem);\n tableElem.addEventListener('scroll', onChange);\n\n return () => {\n observer.unobserve(tableElem);\n tableElem.removeEventListener('scroll', onChange);\n };\n }, [tableElem, onChange, type]);\n\n return (\n <FloatingPlusButton\n ref={buttonRef}\n anchor={anchor}\n type={type}\n onClick={() => onClick(index)}\n floatingStyles={visible ? undefined : {display: 'none'}}\n />\n );\n },\n);\n\nfunction shouldBeVisible(type: ControlType, cellElem: Element, tableElem: Element): boolean {\n if (type !== 'column') return true;\n\n const THRESHOLD = 4; // px\n\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect = tableElem.getBoundingClientRect();\n\n return (\n tableRect.left - cellRect.right <= THRESHOLD &&\n cellRect.right - tableRect.right <= THRESHOLD\n );\n}\n"]}
1
+ {"version":3,"file":"FloatingPlusControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import {memo, useEffect, useMemo, useRef, useState} from 'react';\n\nimport type {VirtualElement} from '@floating-ui/react';\nimport {useEffectOnce} from 'react-use';\n\nimport {useRafThrottle} from '../../hooks/use-raf-throttle';\nimport {\n FloatingPlusButton,\n type FloatingPlusButtonProps,\n type FloatingPlusButtonRef,\n} from '../FloatingPlusButton';\n\ntype ControlType = FloatingPlusButtonProps['type'];\n\nexport type FloatingPlusControlProps = {\n type: ControlType;\n index: number;\n cellElem: Element;\n tableElem: Element;\n onClick: (rowIdx: number) => void;\n};\n\nexport const FloatingPlusControl = memo<FloatingPlusControlProps>(\n function YfmTableRowFloatingPlusControl({type, index, cellElem, tableElem, onClick}) {\n const anchor = useMemo<VirtualElement>(\n () => ({\n contextElement: tableElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect = tableElem.getBoundingClientRect();\n\n return type === 'row'\n ? {\n x: tableRect.x,\n y: cellRect.y,\n width: tableRect.width,\n height: cellRect.height,\n top: cellRect.top,\n left: tableRect.left,\n right: tableRect.right,\n bottom: cellRect.top,\n }\n : {\n x: cellRect.x,\n y: tableRect.y,\n width: cellRect.width,\n height: tableRect.height,\n top: tableRect.top,\n left: cellRect.left,\n right: cellRect.right,\n bottom: tableRect.top,\n };\n },\n }),\n [cellElem, tableElem, type],\n );\n\n const [visible, setVisible] = useState(() => shouldBeVisible(type, cellElem, tableElem));\n const buttonRef = useRef<FloatingPlusButtonRef>(null);\n\n const updateVisibility = () => {\n const newVisible = shouldBeVisible(type, cellElem, tableElem);\n if (visible !== newVisible) setVisible(newVisible);\n };\n\n const onChange = useRafThrottle(() => {\n buttonRef.current?.forceUpdate();\n updateVisibility();\n });\n\n // Update after first render\n useEffectOnce(updateVisibility);\n\n useEffect(() => {\n if (type !== 'column') return undefined;\n\n const observer = new ResizeObserver(onChange);\n observer.observe(tableElem);\n tableElem.addEventListener('scroll', onChange);\n\n return () => {\n observer.unobserve(tableElem);\n tableElem.removeEventListener('scroll', onChange);\n };\n }, [tableElem, onChange, type]);\n\n return (\n <FloatingPlusButton\n ref={buttonRef}\n anchor={anchor}\n type={type}\n onClick={() => onClick(index)}\n floatingStyles={visible ? undefined : {display: 'none'}}\n />\n );\n },\n);\n\nfunction shouldBeVisible(type: ControlType, cellElem: Element, tableElem: Element): boolean {\n if (type !== 'column') return true;\n\n const THRESHOLD = 4; // px\n\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect = tableElem.getBoundingClientRect();\n\n return (\n tableRect.left - cellRect.right <= THRESHOLD &&\n cellRect.right - tableRect.right <= THRESHOLD\n );\n}\n"]}
@@ -4,7 +4,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  /// This fork does not use floating focus manager
5
5
  ///
6
6
  import { forwardRef, useEffect, useImperativeHandle, useMemo } from 'react';
7
- // eslint-disable-next-line import/no-extraneous-dependencies
8
7
  import { FloatingNode, FloatingTree, autoUpdate, offset as offsetMiddleware, useFloating, useFloatingNodeId, useFloatingParentNodeId, useInteractions, } from '@floating-ui/react';
9
8
  import { Portal } from '@gravity-ui/uikit';
10
9
  import { cn } from "../../../../../../../classname.js";
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPopup.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["///\n/// Fork of Popup component from @gravity-ui/uikit\n/// This fork does not use floating focus manager\n///\n\nimport {forwardRef, useEffect, useImperativeHandle, useMemo} from 'react';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {\n FloatingNode,\n FloatingTree,\n type OffsetOptions,\n type Placement,\n type ReferenceType,\n autoUpdate,\n offset as offsetMiddleware,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n} from '@floating-ui/react';\nimport {type DOMProps, Portal, type QAProps} from '@gravity-ui/uikit';\n\nimport {cn} from 'src/classname';\n\nimport './FloatingPopup.scss';\n\nconst b = cn('yfm-table-floating-popup');\n\nexport type {ReferenceType};\n\nexport type FloatingPopupRef = {\n forceUpdate: () => void;\n};\n\nexport type FloatingPopupProps = QAProps &\n DOMProps & {\n open?: boolean;\n zIndex?: number;\n placement: Placement;\n offset?: OffsetOptions;\n anchorElement: ReferenceType | undefined | null;\n children: React.ReactNode;\n floatingStyles?: React.CSSProperties;\n };\n\nexport const FloatingPopup = forwardRef<FloatingPopupRef, FloatingPopupProps>(\n function YfmTableFloatingPopup(props, ref) {\n const {\n anchorElement,\n zIndex = 1000,\n style,\n className,\n qa,\n children,\n floatingStyles: floatingStylesFromProps,\n } = props;\n\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n\n const middleware = useMemo(() => [offsetMiddleware(props.offset)], [props.offset]);\n\n const {\n refs,\n floatingStyles,\n placement,\n context: {open},\n update,\n } = useFloating({\n nodeId,\n open: props.open,\n placement: props.placement,\n middleware,\n whileElementsMounted: autoUpdate,\n });\n\n useImperativeHandle<FloatingPopupRef, FloatingPopupRef>(\n ref,\n () => ({\n forceUpdate: update,\n }),\n [update],\n );\n\n const {getFloatingProps} = useInteractions();\n\n useEffect(() => {\n if (anchorElement !== undefined && anchorElement !== refs.reference.current) {\n refs.setReference(anchorElement);\n }\n }, [anchorElement, refs]);\n\n function wrapper(node: JSX.Element) {\n if (parentId === null) {\n return <FloatingTree>{node}</FloatingTree>;\n }\n\n return node;\n }\n\n return wrapper(\n <FloatingNode id={nodeId}>\n {open ? (\n <Portal>\n <div\n ref={refs.setFloating}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex,\n width: 'max-content',\n pointerEvents: 'auto',\n outline: 'none',\n ...floatingStylesFromProps,\n ...floatingStyles,\n }}\n data-floating-ui-placement={placement}\n {...getFloatingProps()}\n >\n <div className={b(null, className)} style={style} data-qa={qa}>\n {children}\n </div>\n </div>\n </Portal>\n ) : null}\n </FloatingNode>,\n );\n },\n);\n"]}
1
+ {"version":3,"file":"FloatingPopup.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["///\n/// Fork of Popup component from @gravity-ui/uikit\n/// This fork does not use floating focus manager\n///\n\nimport {forwardRef, useEffect, useImperativeHandle, useMemo} from 'react';\n\nimport {\n FloatingNode,\n FloatingTree,\n type OffsetOptions,\n type Placement,\n type ReferenceType,\n autoUpdate,\n offset as offsetMiddleware,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n} from '@floating-ui/react';\nimport {type DOMProps, Portal, type QAProps} from '@gravity-ui/uikit';\n\nimport {cn} from 'src/classname';\n\nimport './FloatingPopup.scss';\n\nconst b = cn('yfm-table-floating-popup');\n\nexport type {ReferenceType};\n\nexport type FloatingPopupRef = {\n forceUpdate: () => void;\n};\n\nexport type FloatingPopupProps = QAProps &\n DOMProps & {\n open?: boolean;\n zIndex?: number;\n placement: Placement;\n offset?: OffsetOptions;\n anchorElement: ReferenceType | undefined | null;\n children: React.ReactNode;\n floatingStyles?: React.CSSProperties;\n };\n\nexport const FloatingPopup = forwardRef<FloatingPopupRef, FloatingPopupProps>(\n function YfmTableFloatingPopup(props, ref) {\n const {\n anchorElement,\n zIndex = 1000,\n style,\n className,\n qa,\n children,\n floatingStyles: floatingStylesFromProps,\n } = props;\n\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n\n const middleware = useMemo(() => [offsetMiddleware(props.offset)], [props.offset]);\n\n const {\n refs,\n floatingStyles,\n placement,\n context: {open},\n update,\n } = useFloating({\n nodeId,\n open: props.open,\n placement: props.placement,\n middleware,\n whileElementsMounted: autoUpdate,\n });\n\n useImperativeHandle<FloatingPopupRef, FloatingPopupRef>(\n ref,\n () => ({\n forceUpdate: update,\n }),\n [update],\n );\n\n const {getFloatingProps} = useInteractions();\n\n useEffect(() => {\n if (anchorElement !== undefined && anchorElement !== refs.reference.current) {\n refs.setReference(anchorElement);\n }\n }, [anchorElement, refs]);\n\n function wrapper(node: JSX.Element) {\n if (parentId === null) {\n return <FloatingTree>{node}</FloatingTree>;\n }\n\n return node;\n }\n\n return wrapper(\n <FloatingNode id={nodeId}>\n {open ? (\n <Portal>\n <div\n ref={refs.setFloating}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex,\n width: 'max-content',\n pointerEvents: 'auto',\n outline: 'none',\n ...floatingStylesFromProps,\n ...floatingStyles,\n }}\n data-floating-ui-placement={placement}\n {...getFloatingProps()}\n >\n <div className={b(null, className)} style={style} data-qa={qa}>\n {children}\n </div>\n </div>\n </Portal>\n ) : null}\n </FloatingNode>,\n );\n },\n);\n"]}
@@ -3,7 +3,7 @@ import type { PlaceholderOptions } from "../../../../utils/placeholder.js";
3
3
  import { TabsNode } from "./const.js";
4
4
  export type YfmTabsSchemaOptions = {
5
5
  /**
6
- * @deprecated: use placeholder option in BehaviorPreset instead.
6
+ * @deprecated use placeholder option in BehaviorPreset instead.
7
7
  */
8
8
  tabPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
9
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmTabs/YfmTabsSpecs/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type {NodeSpec} from 'prosemirror-model';\n\nimport type {PlaceholderOptions} from '../../../../utils/placeholder';\n\nimport {TabAttrs, TabPanelAttrs, TabsAttrs, TabsListAttrs, TabsNode} from './const';\n\nconst DEFAULT_PLACEHOLDERS = {\n TabTitle: 'Tab title',\n RadioTabLabelTitle: 'Radio title',\n};\n\nexport type YfmTabsSchemaOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n tabPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const getSchemaSpecs: (\n opts: YfmTabsSchemaOptions,\n placeholder?: PlaceholderOptions,\n) => Record<TabsNode, NodeSpec> = (opts, placeholder) => ({\n [TabsNode.Tab]: {\n attrs: {\n [TabAttrs.id]: {default: 'unknown'},\n [TabAttrs.class]: {default: 'yfm-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'unknown'},\n },\n marks: '',\n content: 'text*',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab'}],\n toDOM(node) {\n return ['div', {draggable: 'false', ...node.attrs}, 0];\n },\n placeholder: {\n content:\n placeholder?.[TabsNode.Tab] ??\n opts?.tabPlaceholder ??\n DEFAULT_PLACEHOLDERS.TabTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [TabsNode.TabPanel]: {\n attrs: {\n [TabPanelAttrs.id]: {default: 'unknown'},\n [TabPanelAttrs.class]: {default: 'yfm-tab-panel'},\n [TabPanelAttrs.role]: {default: 'unknown'},\n [TabPanelAttrs.dataTitle]: {default: 'unknown'},\n [TabPanelAttrs.ariaLabelledby]: {default: 'unknown'},\n },\n content: '(block | paragraph)+',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-panel'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n isolating: true,\n },\n\n [TabsNode.Tabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'regular'},\n },\n content: `${TabsNode.TabsList} ${TabsNode.TabPanel}+`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tabs'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n complex: 'root',\n },\n\n [TabsNode.TabsList]: {\n attrs: {\n [TabsListAttrs.class]: {default: 'yfm-tab-list'},\n [TabsListAttrs.role]: {default: 'unknown'},\n },\n content: `${TabsNode.Tab}*`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-list'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n\n [TabsNode.RadioTabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs yfm-tabs-vertical'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'radio'},\n },\n content: `(${TabsNode.RadioTab} ${TabsNode.TabPanel})+`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n complex: 'root',\n },\n [TabsNode.RadioTab]: {\n attrs: {\n [TabAttrs.id]: {default: null},\n [TabAttrs.class]: {default: 'yfm-tab yfm-vertical-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'false'},\n [TabAttrs.dataDiplodocVerticalTab]: {default: 'true'},\n },\n content: `${TabsNode.RadioTabInput} ${TabsNode.RadioTabLabel}`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n [TabsNode.RadioTabInput]: {\n attrs: {\n [TabAttrs.class]: {default: 'radio'},\n type: {default: 'radio'},\n checked: {default: null},\n },\n group: 'block',\n toDOM(node) {\n return ['input', node.attrs];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n [TabsNode.RadioTabLabel]: {\n attrs: {},\n marks: '',\n content: 'text*',\n group: 'block',\n toDOM(node) {\n return ['label', node.attrs, 0];\n },\n placeholder: {\n content: placeholder?.[TabsNode.RadioTab] ?? DEFAULT_PLACEHOLDERS.RadioTabLabelTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmTabs/YfmTabsSpecs/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type {NodeSpec} from 'prosemirror-model';\n\nimport type {PlaceholderOptions} from '../../../../utils/placeholder';\n\nimport {TabAttrs, TabPanelAttrs, TabsAttrs, TabsListAttrs, TabsNode} from './const';\n\nconst DEFAULT_PLACEHOLDERS = {\n TabTitle: 'Tab title',\n RadioTabLabelTitle: 'Radio title',\n};\n\nexport type YfmTabsSchemaOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n tabPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const getSchemaSpecs: (\n opts: YfmTabsSchemaOptions,\n placeholder?: PlaceholderOptions,\n) => Record<TabsNode, NodeSpec> = (opts, placeholder) => ({\n [TabsNode.Tab]: {\n attrs: {\n [TabAttrs.id]: {default: 'unknown'},\n [TabAttrs.class]: {default: 'yfm-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'unknown'},\n },\n marks: '',\n content: 'text*',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab'}],\n toDOM(node) {\n return ['div', {draggable: 'false', ...node.attrs}, 0];\n },\n placeholder: {\n content:\n placeholder?.[TabsNode.Tab] ??\n opts?.tabPlaceholder ??\n DEFAULT_PLACEHOLDERS.TabTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [TabsNode.TabPanel]: {\n attrs: {\n [TabPanelAttrs.id]: {default: 'unknown'},\n [TabPanelAttrs.class]: {default: 'yfm-tab-panel'},\n [TabPanelAttrs.role]: {default: 'unknown'},\n [TabPanelAttrs.dataTitle]: {default: 'unknown'},\n [TabPanelAttrs.ariaLabelledby]: {default: 'unknown'},\n },\n content: '(block | paragraph)+',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-panel'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n isolating: true,\n },\n\n [TabsNode.Tabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'regular'},\n },\n content: `${TabsNode.TabsList} ${TabsNode.TabPanel}+`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tabs'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n complex: 'root',\n },\n\n [TabsNode.TabsList]: {\n attrs: {\n [TabsListAttrs.class]: {default: 'yfm-tab-list'},\n [TabsListAttrs.role]: {default: 'unknown'},\n },\n content: `${TabsNode.Tab}*`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-list'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n\n [TabsNode.RadioTabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs yfm-tabs-vertical'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'radio'},\n },\n content: `(${TabsNode.RadioTab} ${TabsNode.TabPanel})+`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n complex: 'root',\n },\n [TabsNode.RadioTab]: {\n attrs: {\n [TabAttrs.id]: {default: null},\n [TabAttrs.class]: {default: 'yfm-tab yfm-vertical-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'false'},\n [TabAttrs.dataDiplodocVerticalTab]: {default: 'true'},\n },\n content: `${TabsNode.RadioTabInput} ${TabsNode.RadioTabLabel}`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n [TabsNode.RadioTabInput]: {\n attrs: {\n [TabAttrs.class]: {default: 'radio'},\n type: {default: 'radio'},\n checked: {default: null},\n },\n group: 'block',\n toDOM(node) {\n return ['input', node.attrs];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n [TabsNode.RadioTabLabel]: {\n attrs: {},\n marks: '',\n content: 'text*',\n group: 'block',\n toDOM(node) {\n return ['label', node.attrs, 0];\n },\n placeholder: {\n content: placeholder?.[TabsNode.RadioTab] ?? DEFAULT_PLACEHOLDERS.RadioTabLabelTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
@@ -8,5 +8,6 @@
8
8
  "split-mode-text": "Preview",
9
9
  "settings_split-mode-hint": "Splitting the editor into two windows: preview and editing",
10
10
  "markup_placeholder": "Add your markup here",
11
- "preview_hint": "Preview"
11
+ "preview_label": "Preview",
12
+ "settings_label": "Settings"
12
13
  }
@@ -1,4 +1,4 @@
1
- export declare const i18n: <G extends "error-title" | "settings_wysiwyg" | "settings_markup" | "settings_menubar" | "settings_hint" | "settings_split-mode" | "split-mode-text" | "settings_split-mode-hint" | "markup_placeholder" | "preview_hint", S extends string>(key: G | (string extends S ? S : never), params?: {
1
+ export declare const i18n: <G extends "error-title" | "settings_wysiwyg" | "settings_markup" | "settings_menubar" | "settings_hint" | "settings_split-mode" | "split-mode-text" | "settings_split-mode-hint" | "markup_placeholder" | "preview_label" | "settings_label", S extends string>(key: G | (string extends S ? S : never), params?: {
2
2
  [key: string]: any;
3
3
  }) => S extends G ? {
4
4
  "error-title": string;
@@ -10,5 +10,6 @@ export declare const i18n: <G extends "error-title" | "settings_wysiwyg" | "sett
10
10
  "split-mode-text": string;
11
11
  "settings_split-mode-hint": string;
12
12
  markup_placeholder: string;
13
- preview_hint: string;
13
+ preview_label: string;
14
+ settings_label: string;
14
15
  }[G] : string;
@@ -8,5 +8,6 @@
8
8
  "settings_split-mode-hint": "Разделение редактора на два окна: предпросмотр и редактирование",
9
9
  "split-mode-text": "Предпросмотр",
10
10
  "markup_placeholder": "Добавьте вашу разметку",
11
- "preview_hint": "Предпросмотр"
11
+ "preview_label": "Предпросмотр",
12
+ "settings_label": "Настройки"
12
13
  }
@@ -6,5 +6,6 @@
6
6
  "preview": "Preview",
7
7
  "remove": "Remove",
8
8
  "save": "Save",
9
+ "actions": "Actions",
9
10
  "toolbar_action_disabled": "Incompatible markup element"
10
- }
11
+ }
@@ -1,4 +1,4 @@
1
- export declare const i18n: <G extends "cancel" | "close" | "remove" | "delete" | "edit" | "preview" | "save" | "toolbar_action_disabled", S extends string>(key: G | (string extends S ? S : never), params?: {
1
+ export declare const i18n: <G extends "cancel" | "close" | "remove" | "actions" | "delete" | "edit" | "preview" | "save" | "toolbar_action_disabled", S extends string>(key: G | (string extends S ? S : never), params?: {
2
2
  [key: string]: any;
3
3
  }) => S extends G ? {
4
4
  cancel: string;
@@ -8,5 +8,6 @@ export declare const i18n: <G extends "cancel" | "close" | "remove" | "delete" |
8
8
  preview: string;
9
9
  remove: string;
10
10
  save: string;
11
+ actions: string;
11
12
  toolbar_action_disabled: string;
12
13
  }[G] : string;
@@ -6,5 +6,6 @@
6
6
  "preview": "Предпросмотр",
7
7
  "remove": "Удалить",
8
8
  "save": "Сохранить",
9
+ "actions": "Действия",
9
10
  "toolbar_action_disabled": "Несовместимый элемент разметки"
10
- }
11
+ }
@@ -111,7 +111,6 @@ declare class Logger implements MdEditorLogger.Logger {
111
111
  export declare const logger: Logger;
112
112
  /**
113
113
  * Alias for global singleton logger instance
114
- *
115
114
  * @deprecated
116
115
  */
117
116
  export declare const globalLogger: Logger;
@@ -122,7 +122,6 @@ class Logger {
122
122
  export const logger = new Logger();
123
123
  /**
124
124
  * Alias for global singleton logger instance
125
- *
126
125
  * @deprecated
127
126
  */
128
127
  export const globalLogger = logger;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"../../src","sources":["logger.ts"],"names":[],"mappings":"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","sourcesContent":["import {type Listener, type Receiver, SafeEventEmitter} from './utils/event-emitter';\n\ntype MsgObj = {\n msg: string;\n [key: string]: unknown;\n};\n\ntype ErrObj = {\n error: any;\n [key: string]: unknown;\n};\n\ntype EventObj = {\n event: string;\n [key: string]: unknown;\n};\n\n// MAJOR: rename Logger2 to Logger (namespace and class)\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Logger2 {\n export type LogData = MsgObj;\n export type WarnData = MsgObj;\n export type ErrorData = ErrObj;\n export type ActionData = MdEditorLogger.ActionData;\n export type MetricsData = MdEditorLogger.MetricsData;\n export type EventData = EventObj;\n\n export type ReceiverDataMap = {\n log: LogData;\n warn: WarnData;\n error: ErrorData;\n event: EventData;\n action: ActionData;\n metrics: MetricsData;\n };\n\n export interface LogReceiver extends Receiver<ReceiverDataMap> {}\n\n export interface LogEmitter {\n /** Log a regular message */\n log(msg: string, ...data: object[]): void;\n /** Log a warning message */\n warn(msg: string, ...data: object[]): void;\n /** Log an error */\n error(err: string | Error | unknown, ...data: object[]): void;\n /** Log an event triggered in editor. For example, changing mode, pasting, or otherwise */\n event(data: Logger2.EventData): void;\n /** Log the action called in editor and its source (from toolbar, or hotkeys, etc.) */\n action(data: Logger2.ActionData): void;\n /** Log metric data, such as parsing or execution time */\n metrics(data: Logger2.MetricsData): void;\n }\n\n export interface ILogger extends Logger2.LogEmitter, Logger2.LogReceiver {\n /** Create nested logger with bound parameters */\n nested(params: object): ILogger;\n }\n}\n\nexport class Logger2 implements Logger2.ILogger {\n readonly #emitter = new SafeEventEmitter<Logger2.ReceiverDataMap>();\n\n log(msg: string, ...data: object[]): void {\n const obj: object = Object.assign({}, ...data);\n const logData = Object.assign(obj, {msg});\n this.#emitter.emit('log', logData);\n }\n\n warn(msg: string, ...data: object[]): void {\n const obj: object = Object.assign({}, ...data);\n const warnData = Object.assign(obj, {msg});\n this.#emitter.emit('warn', warnData);\n }\n\n error(err: string | Error | unknown, ...data: object[]): void {\n const error = typeof err === 'string' ? Error(err) : err;\n const obj: object = Object.assign({}, ...data);\n const errorData = Object.assign(obj, {error});\n this.#emitter.emit('error', errorData);\n }\n\n action(data: Logger2.ActionData): void {\n this.#emitter.emit('action', data);\n }\n\n metrics(data: Logger2.MetricsData): void {\n this.#emitter.emit('metrics', data);\n }\n\n event(data: Logger2.EventData): void {\n this.#emitter.emit('event', data);\n }\n\n nested(params: object): Logger2.ILogger {\n const self = this;\n const paramsKey = Symbol();\n\n const logger: Logger2.ILogger & {[paramsKey]: object} = {\n [paramsKey]: params,\n log(msg, ...data) {\n if (self.#emitter.countOf('log')) self.log(msg, this[paramsKey], ...data);\n },\n warn(msg, ...data) {\n if (self.#emitter.countOf('warn')) self.warn(msg, this[paramsKey], ...data);\n },\n error(err, ...data) {\n if (self.#emitter.countOf('error')) self.error(err, this[paramsKey], ...data);\n },\n action(data) {\n if (self.#emitter.countOf('action')) self.action({...this[paramsKey], ...data});\n },\n metrics(data) {\n if (self.#emitter.countOf('metrics')) self.metrics({...this[paramsKey], ...data});\n },\n event(data) {\n if (self.#emitter.countOf('event')) self.event({...this[paramsKey], ...data});\n },\n nested(nestedParams) {\n return {\n ...this,\n [paramsKey]: {\n ...this[paramsKey],\n ...nestedParams,\n },\n };\n },\n on: self.on.bind(self),\n off: self.off.bind(self),\n };\n\n return logger;\n }\n\n on<K extends keyof Logger2.ReceiverDataMap>(\n type: K,\n listener: Listener<Logger2.ReceiverDataMap[K]>,\n ): void {\n this.#emitter.on(type, listener);\n }\n\n off<K extends keyof Logger2.ReceiverDataMap>(\n type: K,\n listener: Listener<Logger2.ReceiverDataMap[K]>,\n ): void {\n this.#emitter.off(type, listener);\n }\n}\n\n// MAJOR: remove old logger implementation\n\nconst noop = () => {};\n\ndeclare global {\n /** @deprecated */\n namespace MdEditorLogger {\n /** @deprecated */\n type MetricsData = {\n component: string;\n event: string;\n duration?: number;\n meta?: Record<string, any>;\n [key: string]: any;\n };\n\n /** @deprecated */\n interface ActionData {\n action: string;\n source: string;\n [key: string]: any;\n }\n\n /** @deprecated */\n interface Logger {\n log(...data: any[]): void;\n info(...data: any[]): void;\n error(...data: any[]): void;\n warn(...data: any[]): void;\n metrics(data: MetricsData): void;\n action(data: ActionData): void;\n }\n\n /** @deprecated */\n interface Settings extends Partial<Logger> {}\n }\n}\n\n/** @deprecated */\nclass Logger implements MdEditorLogger.Logger {\n #logger: MdEditorLogger.Logger = this.createLogger({});\n\n get log() {\n return this.#logger.log;\n }\n\n get info() {\n return this.#logger.info;\n }\n\n get error() {\n return this.#logger.error;\n }\n\n get warn() {\n return this.#logger.warn;\n }\n\n get metrics() {\n return this.#logger.metrics;\n }\n\n get action() {\n return this.#logger.action;\n }\n\n setLogger(settings: MdEditorLogger.Settings = {}) {\n this.#logger = this.createLogger(settings);\n }\n\n /**\n * @inner\n *\n * To override the default logger, use setLogger\n */\n createLogger(settings: MdEditorLogger.Settings): MdEditorLogger.Logger {\n return {\n log: settings.log ?? noop,\n info: settings.info ?? noop,\n warn: settings.warn ?? noop,\n error: settings.error ?? noop,\n metrics: settings.metrics ?? noop,\n action: settings.action ?? noop,\n };\n }\n}\n\n/** @deprecated */\nexport const logger = new Logger();\n/**\n * Alias for global singleton logger instance\n *\n * @deprecated\n */\nexport const globalLogger = logger;\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"../../src","sources":["logger.ts"],"names":[],"mappings":"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","sourcesContent":["import {type Listener, type Receiver, SafeEventEmitter} from './utils/event-emitter';\n\ntype MsgObj = {\n msg: string;\n [key: string]: unknown;\n};\n\ntype ErrObj = {\n error: any;\n [key: string]: unknown;\n};\n\ntype EventObj = {\n event: string;\n [key: string]: unknown;\n};\n\n// MAJOR: rename Logger2 to Logger (namespace and class)\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Logger2 {\n export type LogData = MsgObj;\n export type WarnData = MsgObj;\n export type ErrorData = ErrObj;\n export type ActionData = MdEditorLogger.ActionData;\n export type MetricsData = MdEditorLogger.MetricsData;\n export type EventData = EventObj;\n\n export type ReceiverDataMap = {\n log: LogData;\n warn: WarnData;\n error: ErrorData;\n event: EventData;\n action: ActionData;\n metrics: MetricsData;\n };\n\n export interface LogReceiver extends Receiver<ReceiverDataMap> {}\n\n export interface LogEmitter {\n /** Log a regular message */\n log(msg: string, ...data: object[]): void;\n /** Log a warning message */\n warn(msg: string, ...data: object[]): void;\n /** Log an error */\n error(err: string | Error | unknown, ...data: object[]): void;\n /** Log an event triggered in editor. For example, changing mode, pasting, or otherwise */\n event(data: Logger2.EventData): void;\n /** Log the action called in editor and its source (from toolbar, or hotkeys, etc.) */\n action(data: Logger2.ActionData): void;\n /** Log metric data, such as parsing or execution time */\n metrics(data: Logger2.MetricsData): void;\n }\n\n export interface ILogger extends Logger2.LogEmitter, Logger2.LogReceiver {\n /** Create nested logger with bound parameters */\n nested(params: object): ILogger;\n }\n}\n\nexport class Logger2 implements Logger2.ILogger {\n readonly #emitter = new SafeEventEmitter<Logger2.ReceiverDataMap>();\n\n log(msg: string, ...data: object[]): void {\n const obj: object = Object.assign({}, ...data);\n const logData = Object.assign(obj, {msg});\n this.#emitter.emit('log', logData);\n }\n\n warn(msg: string, ...data: object[]): void {\n const obj: object = Object.assign({}, ...data);\n const warnData = Object.assign(obj, {msg});\n this.#emitter.emit('warn', warnData);\n }\n\n error(err: string | Error | unknown, ...data: object[]): void {\n const error = typeof err === 'string' ? Error(err) : err;\n const obj: object = Object.assign({}, ...data);\n const errorData = Object.assign(obj, {error});\n this.#emitter.emit('error', errorData);\n }\n\n action(data: Logger2.ActionData): void {\n this.#emitter.emit('action', data);\n }\n\n metrics(data: Logger2.MetricsData): void {\n this.#emitter.emit('metrics', data);\n }\n\n event(data: Logger2.EventData): void {\n this.#emitter.emit('event', data);\n }\n\n nested(params: object): Logger2.ILogger {\n const self = this;\n const paramsKey = Symbol();\n\n const logger: Logger2.ILogger & {[paramsKey]: object} = {\n [paramsKey]: params,\n log(msg, ...data) {\n if (self.#emitter.countOf('log')) self.log(msg, this[paramsKey], ...data);\n },\n warn(msg, ...data) {\n if (self.#emitter.countOf('warn')) self.warn(msg, this[paramsKey], ...data);\n },\n error(err, ...data) {\n if (self.#emitter.countOf('error')) self.error(err, this[paramsKey], ...data);\n },\n action(data) {\n if (self.#emitter.countOf('action')) self.action({...this[paramsKey], ...data});\n },\n metrics(data) {\n if (self.#emitter.countOf('metrics')) self.metrics({...this[paramsKey], ...data});\n },\n event(data) {\n if (self.#emitter.countOf('event')) self.event({...this[paramsKey], ...data});\n },\n nested(nestedParams) {\n return {\n ...this,\n [paramsKey]: {\n ...this[paramsKey],\n ...nestedParams,\n },\n };\n },\n on: self.on.bind(self),\n off: self.off.bind(self),\n };\n\n return logger;\n }\n\n on<K extends keyof Logger2.ReceiverDataMap>(\n type: K,\n listener: Listener<Logger2.ReceiverDataMap[K]>,\n ): void {\n this.#emitter.on(type, listener);\n }\n\n off<K extends keyof Logger2.ReceiverDataMap>(\n type: K,\n listener: Listener<Logger2.ReceiverDataMap[K]>,\n ): void {\n this.#emitter.off(type, listener);\n }\n}\n\n// MAJOR: remove old logger implementation\n\nconst noop = () => {};\n\ndeclare global {\n /** @deprecated */\n namespace MdEditorLogger {\n /** @deprecated */\n type MetricsData = {\n component: string;\n event: string;\n duration?: number;\n meta?: Record<string, any>;\n [key: string]: any;\n };\n\n /** @deprecated */\n interface ActionData {\n action: string;\n source: string;\n [key: string]: any;\n }\n\n /** @deprecated */\n interface Logger {\n log(...data: any[]): void;\n info(...data: any[]): void;\n error(...data: any[]): void;\n warn(...data: any[]): void;\n metrics(data: MetricsData): void;\n action(data: ActionData): void;\n }\n\n /** @deprecated */\n interface Settings extends Partial<Logger> {}\n }\n}\n\n/** @deprecated */\nclass Logger implements MdEditorLogger.Logger {\n #logger: MdEditorLogger.Logger = this.createLogger({});\n\n get log() {\n return this.#logger.log;\n }\n\n get info() {\n return this.#logger.info;\n }\n\n get error() {\n return this.#logger.error;\n }\n\n get warn() {\n return this.#logger.warn;\n }\n\n get metrics() {\n return this.#logger.metrics;\n }\n\n get action() {\n return this.#logger.action;\n }\n\n setLogger(settings: MdEditorLogger.Settings = {}) {\n this.#logger = this.createLogger(settings);\n }\n\n /**\n * @inner\n *\n * To override the default logger, use setLogger\n */\n createLogger(settings: MdEditorLogger.Settings): MdEditorLogger.Logger {\n return {\n log: settings.log ?? noop,\n info: settings.info ?? noop,\n warn: settings.warn ?? noop,\n error: settings.error ?? noop,\n metrics: settings.metrics ?? noop,\n action: settings.action ?? noop,\n };\n }\n}\n\n/** @deprecated */\nexport const logger = new Logger();\n/**\n * Alias for global singleton logger instance\n * @deprecated\n */\nexport const globalLogger = logger;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { autocompletion } from '@codemirror/autocomplete';
2
2
  import type { Extension, StateCommand } from '@codemirror/state';
3
- import { EditorView, type EditorViewConfig, type KeyBinding, placeholder } from '@codemirror/view';
3
+ import { EditorView, type EditorViewConfig, type KeyBinding, placeholder, tooltips } from '@codemirror/view';
4
4
  import type { ParseInsertedUrlAsImage } from "../../bundle/index.js";
5
5
  import type { EventMap } from "../../bundle/Editor.js";
6
6
  import type { ReactRenderStorage } from "../../extensions/index.js";
@@ -11,6 +11,7 @@ import { type FileUploadHandler } from "./files-upload-facet.js";
11
11
  import { type YfmLangOptions } from "./yfm.js";
12
12
  export type { YfmLangOptions };
13
13
  type Autocompletion = Parameters<typeof autocompletion>[0];
14
+ type Tooltips = Parameters<typeof tooltips>[0];
14
15
  export type CreateCodemirrorParams = {
15
16
  doc: EditorViewConfig['doc'];
16
17
  placeholder: Parameters<typeof placeholder>[0];
@@ -34,6 +35,7 @@ export type CreateCodemirrorParams = {
34
35
  receiver?: Receiver<EventMap>;
35
36
  yfmLangOptions?: YfmLangOptions;
36
37
  autocompletion?: Autocompletion;
38
+ tooltips?: Tooltips;
37
39
  directiveSyntax: DirectiveSyntaxContext;
38
40
  preserveEmptyRows: boolean;
39
41
  searchPanel?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { autocompletion } from '@codemirror/autocomplete';
2
2
  import { defaultKeymap, history, historyKeymap, indentWithTab, insertNewlineKeepIndent, insertTab, } from '@codemirror/commands';
3
3
  import { syntaxHighlighting } from '@codemirror/language';
4
- import { EditorView, keymap, placeholder, } from '@codemirror/view';
4
+ import { EditorView, keymap, placeholder, tooltips, } from '@codemirror/view';
5
5
  import { InputState } from "../../utils/input-state.js";
6
6
  import { ActionName } from "../../bundle/config/action-names.js";
7
7
  import { globalLogger } from "../../logger.js";
@@ -20,7 +20,7 @@ import { smartReindent } from "./smart-reindent/index.js";
20
20
  import { yfmLang } from "./yfm.js";
21
21
  const linkRegex = /\[[\s\S]*?]\([\s\S]*?\)/g;
22
22
  export function createCodemirror(params) {
23
- const { logger, doc, reactRenderer, onCancel, onScroll, onSubmit, onChange, onDocChange, disabledExtensions = {}, keymaps = [], receiver, yfmLangOptions, extensions: extraExtensions, placeholder: placeholderContent, autocompletion: autocompletionConfig, parseHtmlOnPaste, parseInsertedUrlAsImage, directiveSyntax, preserveEmptyRows, searchPanel = true, } = params;
23
+ const { logger, doc, reactRenderer, onCancel, onScroll, onSubmit, onChange, onDocChange, disabledExtensions = {}, keymaps = [], receiver, yfmLangOptions, extensions: extraExtensions, placeholder: placeholderContent, autocompletion: autocompletionConfig, tooltips: tooltipsConfig, parseHtmlOnPaste, parseInsertedUrlAsImage, directiveSyntax, preserveEmptyRows, searchPanel = true, } = params;
24
24
  const extensions = [gravityTheme, placeholder(placeholderContent)];
25
25
  if (!disabledExtensions.history) {
26
26
  extensions.push(history());
@@ -177,6 +177,9 @@ export function createCodemirror(params) {
177
177
  enableNewImageSizeCalculation: params.enableNewImageSizeCalculation,
178
178
  }));
179
179
  }
180
+ if (tooltipsConfig) {
181
+ extensions.push(tooltips(tooltipsConfig));
182
+ }
180
183
  if (extraExtensions) {
181
184
  extensions.push(...extraExtensions);
182
185
  }