@gravity-ui/markdown-editor 15.27.2 → 15.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +6 -4
  2. package/build/cjs/bundle/Editor.js.map +1 -1
  3. package/build/cjs/bundle/HorizontalDrag.js +3 -3
  4. package/build/cjs/bundle/HorizontalDrag.js.map +1 -1
  5. package/build/cjs/bundle/settings/index.js +1 -1
  6. package/build/cjs/bundle/settings/index.js.map +1 -1
  7. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
  8. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  9. package/build/cjs/bundle/types.d.ts +8 -11
  10. package/build/cjs/bundle/types.js.map +1 -1
  11. package/build/cjs/bundle/wysiwyg-preset.d.ts +0 -1
  12. package/build/cjs/bundle/wysiwyg-preset.js +1 -1
  13. package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
  14. package/build/cjs/core/Editor.js.map +1 -1
  15. package/build/cjs/core/ExtensionBuilder.d.ts +0 -2
  16. package/build/cjs/core/ExtensionBuilder.js +1 -1
  17. package/build/cjs/core/ExtensionBuilder.js.map +1 -1
  18. package/build/cjs/core/markdown/MarkdownParser.d.ts +2 -3
  19. package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
  20. package/build/cjs/core/types/extension.js.map +1 -1
  21. package/build/cjs/core/types/parser.d.ts +3 -2
  22. package/build/cjs/core/types/parser.js.map +1 -1
  23. package/build/cjs/extensions/additional/GPT/gptExtension/view.js +1 -3
  24. package/build/cjs/extensions/additional/GPT/gptExtension/view.js.map +1 -1
  25. package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
  26. package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
  27. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
  28. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
  29. package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
  30. package/build/cjs/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
  31. package/build/cjs/extensions/behavior/Autocomplete/types.js.map +1 -1
  32. package/build/cjs/extensions/behavior/SelectionContext/index.d.ts +0 -2
  33. package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
  34. package/build/cjs/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  35. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
  36. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  37. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
  38. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js +80 -23
  39. package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
  40. package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
  41. package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
  42. package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
  43. package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
  44. package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
  45. package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
  46. package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
  47. package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
  48. package/build/cjs/extensions/yfm/ImgSize/index.d.ts +0 -1
  49. package/build/cjs/extensions/yfm/ImgSize/index.js.map +1 -1
  50. package/build/cjs/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
  51. package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
  52. package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
  53. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
  54. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  55. package/build/cjs/extensions/yfm/YfmTable/index.d.ts +0 -2
  56. package/build/cjs/extensions/yfm/YfmTable/index.js.map +1 -1
  57. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
  58. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
  59. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +3 -4
  60. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
  61. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
  62. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
  63. package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
  64. package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
  65. package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
  66. package/build/cjs/i18n/bundle/en.json +2 -1
  67. package/build/cjs/i18n/bundle/index.d.ts +3 -2
  68. package/build/cjs/i18n/bundle/ru.json +2 -1
  69. package/build/cjs/i18n/common/en.json +2 -1
  70. package/build/cjs/i18n/common/index.d.ts +2 -1
  71. package/build/cjs/i18n/common/ru.json +2 -1
  72. package/build/cjs/logger.d.ts +0 -1
  73. package/build/cjs/logger.js +0 -1
  74. package/build/cjs/logger.js.map +1 -1
  75. package/build/cjs/shortcuts/default.js +0 -2
  76. package/build/cjs/shortcuts/default.js.map +1 -1
  77. package/build/cjs/table-utils/commands/removeRow.js +1 -2
  78. package/build/cjs/table-utils/commands/removeRow.js.map +1 -1
  79. package/build/cjs/toolbar/types.d.ts +2 -3
  80. package/build/cjs/toolbar/types.js.map +1 -1
  81. package/build/cjs/types/spec.d.ts +0 -1
  82. package/build/cjs/types/spec.js.map +1 -1
  83. package/build/cjs/utils/ecapeRegexp.d.ts +1 -2
  84. package/build/cjs/utils/ecapeRegexp.js +1 -2
  85. package/build/cjs/utils/ecapeRegexp.js.map +1 -1
  86. package/build/cjs/utils/inputrules.js +2 -2
  87. package/build/cjs/utils/inputrules.js.map +1 -1
  88. package/build/cjs/version.js +1 -1
  89. package/build/cjs/version.js.map +1 -1
  90. package/build/cjs/view/hooks/useFilesGallery/constants.d.ts +5 -0
  91. package/build/cjs/view/hooks/useFilesGallery/constants.js +10 -2
  92. package/build/cjs/view/hooks/useFilesGallery/constants.js.map +1 -1
  93. package/build/cjs/view/hooks/useFilesGallery/helpers.d.ts +8 -0
  94. package/build/cjs/view/hooks/useFilesGallery/helpers.js +28 -0
  95. package/build/cjs/view/hooks/useFilesGallery/helpers.js.map +1 -0
  96. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
  97. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js +19 -22
  98. package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
  99. package/build/esm/bundle/Editor.js.map +1 -1
  100. package/build/esm/bundle/HorizontalDrag.js +3 -3
  101. package/build/esm/bundle/HorizontalDrag.js.map +1 -1
  102. package/build/esm/bundle/settings/index.js +1 -1
  103. package/build/esm/bundle/settings/index.js.map +1 -1
  104. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
  105. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  106. package/build/esm/bundle/types.d.ts +8 -11
  107. package/build/esm/bundle/types.js.map +1 -1
  108. package/build/esm/bundle/wysiwyg-preset.d.ts +0 -1
  109. package/build/esm/bundle/wysiwyg-preset.js +1 -1
  110. package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
  111. package/build/esm/core/Editor.js.map +1 -1
  112. package/build/esm/core/ExtensionBuilder.d.ts +0 -2
  113. package/build/esm/core/ExtensionBuilder.js +1 -1
  114. package/build/esm/core/ExtensionBuilder.js.map +1 -1
  115. package/build/esm/core/markdown/MarkdownParser.d.ts +2 -3
  116. package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
  117. package/build/esm/core/types/extension.js.map +1 -1
  118. package/build/esm/core/types/parser.d.ts +3 -2
  119. package/build/esm/core/types/parser.js.map +1 -1
  120. package/build/esm/extensions/additional/GPT/gptExtension/view.js +1 -3
  121. package/build/esm/extensions/additional/GPT/gptExtension/view.js.map +1 -1
  122. package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
  123. package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
  124. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
  125. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
  126. package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
  127. package/build/esm/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
  128. package/build/esm/extensions/behavior/Autocomplete/types.js.map +1 -1
  129. package/build/esm/extensions/behavior/SelectionContext/index.d.ts +0 -2
  130. package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
  131. package/build/esm/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  132. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
  133. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  134. package/build/esm/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
  135. package/build/esm/extensions/markdown/CodeBlock/handle-paste.js +78 -24
  136. package/build/esm/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
  137. package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
  138. package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
  139. package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
  140. package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
  141. package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
  142. package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
  143. package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
  144. package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
  145. package/build/esm/extensions/yfm/ImgSize/index.d.ts +0 -1
  146. package/build/esm/extensions/yfm/ImgSize/index.js.map +1 -1
  147. package/build/esm/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
  148. package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
  149. package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
  150. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
  151. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  152. package/build/esm/extensions/yfm/YfmTable/index.d.ts +0 -2
  153. package/build/esm/extensions/yfm/YfmTable/index.js.map +1 -1
  154. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
  155. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
  156. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +1 -2
  157. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
  158. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
  159. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
  160. package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
  161. package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
  162. package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
  163. package/build/esm/i18n/bundle/en.json +2 -1
  164. package/build/esm/i18n/bundle/index.d.ts +3 -2
  165. package/build/esm/i18n/bundle/ru.json +2 -1
  166. package/build/esm/i18n/common/en.json +2 -1
  167. package/build/esm/i18n/common/index.d.ts +2 -1
  168. package/build/esm/i18n/common/ru.json +2 -1
  169. package/build/esm/logger.d.ts +0 -1
  170. package/build/esm/logger.js +0 -1
  171. package/build/esm/logger.js.map +1 -1
  172. package/build/esm/shortcuts/default.js +0 -2
  173. package/build/esm/shortcuts/default.js.map +1 -1
  174. package/build/esm/table-utils/commands/removeRow.js +1 -2
  175. package/build/esm/table-utils/commands/removeRow.js.map +1 -1
  176. package/build/esm/toolbar/types.d.ts +2 -3
  177. package/build/esm/toolbar/types.js.map +1 -1
  178. package/build/esm/types/spec.d.ts +0 -1
  179. package/build/esm/types/spec.js.map +1 -1
  180. package/build/esm/utils/ecapeRegexp.d.ts +1 -2
  181. package/build/esm/utils/ecapeRegexp.js +1 -2
  182. package/build/esm/utils/ecapeRegexp.js.map +1 -1
  183. package/build/esm/utils/inputrules.js +2 -2
  184. package/build/esm/utils/inputrules.js.map +1 -1
  185. package/build/esm/version.js +1 -1
  186. package/build/esm/version.js.map +1 -1
  187. package/build/esm/view/hooks/useFilesGallery/constants.d.ts +5 -0
  188. package/build/esm/view/hooks/useFilesGallery/constants.js +9 -1
  189. package/build/esm/view/hooks/useFilesGallery/constants.js.map +1 -1
  190. package/build/esm/view/hooks/useFilesGallery/helpers.d.ts +8 -0
  191. package/build/esm/view/hooks/useFilesGallery/helpers.js +25 -0
  192. package/build/esm/view/hooks/useFilesGallery/helpers.js.map +1 -0
  193. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
  194. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js +19 -21
  195. package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
  196. package/package.json +73 -49
@@ -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;
@@ -126,7 +126,6 @@ class Logger {
126
126
  exports.logger = new Logger();
127
127
  /**
128
128
  * Alias for global singleton logger instance
129
- *
130
129
  * @deprecated
131
130
  */
132
131
  exports.globalLogger = exports.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"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const const_1 = require("./const.js");
4
4
  const formatter_1 = require("./formatter.js");
5
- /* eslint-disable */
6
5
  formatter_1.formatter
7
6
  .set(const_1.Action.__debug, [const_1.ModKey.Mod, const_1.ModKey.Option, ']'])
8
7
  .set(const_1.Action.Cancel, [const_1.Key.Esc])
@@ -31,5 +30,4 @@ formatter_1.formatter
31
30
  .set(const_1.Action.CodeBlock, { pc: [const_1.ModKey.Ctrl, const_1.ModKey.Shift, 'e'], mac: [const_1.ModKey.Cmd, const_1.ModKey.Option, 'e'] })
32
31
  .set(const_1.Action.Cut, { pc: [const_1.ModKey.Ctrl, const_1.ModKey.Shift, '7'], mac: [const_1.ModKey.Cmd, const_1.ModKey.Option, '7'] })
33
32
  .set(const_1.Action.Note, { pc: [const_1.ModKey.Ctrl, const_1.ModKey.Shift, '8'], mac: [const_1.ModKey.Cmd, const_1.ModKey.Option, '8'] });
34
- /* eslint-enable */
35
33
  //# sourceMappingURL=default.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"../../../src","sources":["shortcuts/default.ts"],"names":[],"mappings":"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","sourcesContent":["import {Action as A, Key as K, ModKey as MK} from './const';\nimport {formatter} from './formatter';\n\n/* eslint-disable */\nformatter\n .set(A.__debug, [MK.Mod, MK.Option, ']'])\n\n .set(A.Cancel, [K.Esc])\n .set(A.Submit, [MK.Mod, K.Enter])\n\n .set(A.Undo, [MK.Mod, 'z'])\n .set(A.Redo, [MK.Mod, MK.Shift, 'z'])\n\n .set(A.Bold, [MK.Mod, 'b'])\n .set(A.Italic, [MK.Mod, 'i'])\n .set(A.Underline, [MK.Mod, 'u'])\n .set(A.Strike, [MK.Mod, MK.Shift, 's'])\n .set(A.Code, [MK.Mod, 'e'])\n .set(A.Link, [MK.Mod, 'k'])\n\n .set(A.Text, {pc: [MK.Ctrl, MK.Shift, '0'], mac: [MK.Cmd, MK.Option, '0']})\n .set(A.Heading1, {pc: [MK.Ctrl, MK.Shift, '1'], mac: [MK.Cmd, MK.Option, '1']})\n .set(A.Heading2, {pc: [MK.Ctrl, MK.Shift, '2'], mac: [MK.Cmd, MK.Option, '2']})\n .set(A.Heading3, {pc: [MK.Ctrl, MK.Shift, '3'], mac: [MK.Cmd, MK.Option, '3']})\n .set(A.Heading4, {pc: [MK.Ctrl, MK.Shift, '4'], mac: [MK.Cmd, MK.Option, '4']})\n .set(A.Heading5, {pc: [MK.Ctrl, MK.Shift, '5'], mac: [MK.Cmd, MK.Option, '5']})\n .set(A.Heading6, {pc: [MK.Ctrl, MK.Shift, '6'], mac: [MK.Cmd, MK.Option, '6']})\n\n .set(A.EmptyRow, {pc: [MK.Ctrl, MK.Shift, K.Enter], mac: [MK.Cmd, MK.Shift, K.Enter]})\n\n .set(A.BulletList, [MK.Mod, MK.Shift, 'l'])\n .set(A.OrderedList, [MK.Mod, MK.Shift, 'm'])\n\n .set(A.SinkListItem, [MK.Tab])\n .set(A.LiftListItem, [MK.Shift, MK.Tab])\n\n .set(A.Quote, [MK.Mod, MK.Shift, '.'])\n .set(A.CodeBlock, {pc: [MK.Ctrl, MK.Shift, 'e'], mac: [MK.Cmd, MK.Option, 'e']})\n\n .set(A.Cut, {pc: [MK.Ctrl, MK.Shift, '7'], mac: [MK.Cmd, MK.Option, '7']})\n .set(A.Note, {pc: [MK.Ctrl, MK.Shift, '8'], mac: [MK.Cmd, MK.Option, '8']});\n/* eslint-enable */\n"]}
1
+ {"version":3,"file":"default.js","sourceRoot":"../../../src","sources":["shortcuts/default.ts"],"names":[],"mappings":"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","sourcesContent":["import {Action as A, Key as K, ModKey as MK} from './const';\nimport {formatter} from './formatter';\n\nformatter\n .set(A.__debug, [MK.Mod, MK.Option, ']'])\n\n .set(A.Cancel, [K.Esc])\n .set(A.Submit, [MK.Mod, K.Enter])\n\n .set(A.Undo, [MK.Mod, 'z'])\n .set(A.Redo, [MK.Mod, MK.Shift, 'z'])\n\n .set(A.Bold, [MK.Mod, 'b'])\n .set(A.Italic, [MK.Mod, 'i'])\n .set(A.Underline, [MK.Mod, 'u'])\n .set(A.Strike, [MK.Mod, MK.Shift, 's'])\n .set(A.Code, [MK.Mod, 'e'])\n .set(A.Link, [MK.Mod, 'k'])\n\n .set(A.Text, {pc: [MK.Ctrl, MK.Shift, '0'], mac: [MK.Cmd, MK.Option, '0']})\n .set(A.Heading1, {pc: [MK.Ctrl, MK.Shift, '1'], mac: [MK.Cmd, MK.Option, '1']})\n .set(A.Heading2, {pc: [MK.Ctrl, MK.Shift, '2'], mac: [MK.Cmd, MK.Option, '2']})\n .set(A.Heading3, {pc: [MK.Ctrl, MK.Shift, '3'], mac: [MK.Cmd, MK.Option, '3']})\n .set(A.Heading4, {pc: [MK.Ctrl, MK.Shift, '4'], mac: [MK.Cmd, MK.Option, '4']})\n .set(A.Heading5, {pc: [MK.Ctrl, MK.Shift, '5'], mac: [MK.Cmd, MK.Option, '5']})\n .set(A.Heading6, {pc: [MK.Ctrl, MK.Shift, '6'], mac: [MK.Cmd, MK.Option, '6']})\n\n .set(A.EmptyRow, {pc: [MK.Ctrl, MK.Shift, K.Enter], mac: [MK.Cmd, MK.Shift, K.Enter]})\n\n .set(A.BulletList, [MK.Mod, MK.Shift, 'l'])\n .set(A.OrderedList, [MK.Mod, MK.Shift, 'm'])\n\n .set(A.SinkListItem, [MK.Tab])\n .set(A.LiftListItem, [MK.Shift, MK.Tab])\n\n .set(A.Quote, [MK.Mod, MK.Shift, '.'])\n .set(A.CodeBlock, {pc: [MK.Ctrl, MK.Shift, 'e'], mac: [MK.Cmd, MK.Option, 'e']})\n\n .set(A.Cut, {pc: [MK.Ctrl, MK.Shift, '7'], mac: [MK.Cmd, MK.Option, '7']})\n .set(A.Note, {pc: [MK.Ctrl, MK.Shift, '8'], mac: [MK.Cmd, MK.Option, '8']});\n"]}
@@ -11,8 +11,7 @@ const removeRow = (state, dispatch, _, attrs = {}) => {
11
11
  const { tablePos, rowNumber } = attrs;
12
12
  if (tablePos === undefined || rowNumber === undefined)
13
13
  return false;
14
- const tableNode = (0, prosemirror_utils_1.findParentNodeClosestToPos)(state.doc.resolve(tablePos + 1), utils_1.isTableNode)
15
- ?.node;
14
+ const tableNode = (0, prosemirror_utils_1.findParentNodeClosestToPos)(state.doc.resolve(tablePos + 1), utils_1.isTableNode)?.node;
16
15
  if (!tableNode)
17
16
  return false;
18
17
  const tableDesc = table_desc_1.TableDesc.create(tableNode);
@@ -1 +1 @@
1
- {"version":3,"file":"removeRow.js","sourceRoot":"../../../../src","sources":["table-utils/commands/removeRow.ts"],"names":[],"mappings":";;;AAAA,yDAA2C;AAE3C,oCAAoC;AACpC,yDAA6D;AAE7D,8CAAmD;AACnD,iDAAwC;AACxC,uCAAqC;AAE9B,MAAM,SAAS,GAAY,CAC9B,KAAK,EACL,QAAQ,EACR,CAAC,EACD,QAAiD,EAAE,EACrD,EAAE;IACA,MAAM,EAAC,QAAQ,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAEpC,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEpE,MAAM,SAAS,GAAG,IAAA,8CAA0B,EAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,mBAAW,CAAC;QACtF,EAAE,IAAI,CAAC;IAEX,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,SAAS,GAAG,sBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAElD,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,IAAI,QAAQ,CAAC;QACjB,EAAE,IAAI,QAAQ,CAAC;QACf,QAAQ,CACJ,IAAA,8BAAuB,EAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,4BAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE;YACjF,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;SACvB,CAAC,CACL,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAhCW,QAAA,SAAS,aAgCpB","sourcesContent":["import {Fragment} from 'prosemirror-model';\nimport type {Command} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {findParentNodeClosestToPos} from 'prosemirror-utils';\n\nimport {trackTransactionMetrics} from '../../core';\nimport {TableDesc} from '../table-desc';\nimport {isTableNode} from '../utils';\n\nexport const removeRow: Command = (\n state,\n dispatch,\n _,\n attrs: {tablePos?: number; rowNumber?: number} = {},\n) => {\n const {tablePos, rowNumber} = attrs;\n\n if (tablePos === undefined || rowNumber === undefined) return false;\n\n const tableNode = findParentNodeClosestToPos(state.doc.resolve(tablePos + 1), isTableNode)\n ?.node;\n\n if (!tableNode) return false;\n\n const tableDesc = TableDesc.create(tableNode);\n if (!tableDesc || rowNumber >= tableDesc.rows) return false;\n if (!tableDesc.isSafeRow(rowNumber)) return false;\n\n if (dispatch) {\n let {from, to} = tableDesc.getRelativePosForRow(rowNumber);\n from += tablePos;\n to += tablePos;\n dispatch(\n trackTransactionMetrics(state.tr.replaceWith(from, to, Fragment.empty), 'removeRow', {\n rows: tableDesc.rows,\n cols: tableDesc.cols,\n }),\n );\n }\n\n return true;\n};\n"]}
1
+ {"version":3,"file":"removeRow.js","sourceRoot":"../../../../src","sources":["table-utils/commands/removeRow.ts"],"names":[],"mappings":";;;AAAA,yDAA2C;AAE3C,oCAAoC;AACpC,yDAA6D;AAE7D,8CAAmD;AACnD,iDAAwC;AACxC,uCAAqC;AAE9B,MAAM,SAAS,GAAY,CAC9B,KAAK,EACL,QAAQ,EACR,CAAC,EACD,QAAiD,EAAE,EACrD,EAAE;IACA,MAAM,EAAC,QAAQ,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAEpC,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEpE,MAAM,SAAS,GAAG,IAAA,8CAA0B,EACxC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAC/B,mBAAW,CACd,EAAE,IAAI,CAAC;IAER,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,SAAS,GAAG,sBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAElD,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,IAAI,QAAQ,CAAC;QACjB,EAAE,IAAI,QAAQ,CAAC;QACf,QAAQ,CACJ,IAAA,8BAAuB,EAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,4BAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE;YACjF,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;SACvB,CAAC,CACL,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAlCW,QAAA,SAAS,aAkCpB","sourcesContent":["import {Fragment} from 'prosemirror-model';\nimport type {Command} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {findParentNodeClosestToPos} from 'prosemirror-utils';\n\nimport {trackTransactionMetrics} from '../../core';\nimport {TableDesc} from '../table-desc';\nimport {isTableNode} from '../utils';\n\nexport const removeRow: Command = (\n state,\n dispatch,\n _,\n attrs: {tablePos?: number; rowNumber?: number} = {},\n) => {\n const {tablePos, rowNumber} = attrs;\n\n if (tablePos === undefined || rowNumber === undefined) return false;\n\n const tableNode = findParentNodeClosestToPos(\n state.doc.resolve(tablePos + 1),\n isTableNode,\n )?.node;\n\n if (!tableNode) return false;\n\n const tableDesc = TableDesc.create(tableNode);\n if (!tableDesc || rowNumber >= tableDesc.rows) return false;\n if (!tableDesc.isSafeRow(rowNumber)) return false;\n\n if (dispatch) {\n let {from, to} = tableDesc.getRelativePosForRow(rowNumber);\n from += tablePos;\n to += tablePos;\n dispatch(\n trackTransactionMetrics(state.tr.replaceWith(from, to, Fragment.empty), 'removeRow', {\n rows: tableDesc.rows,\n cols: tableDesc.cols,\n }),\n );\n }\n\n return true;\n};\n"]}
@@ -34,7 +34,6 @@ export type ToolbarItemData<E> = QAProps & {
34
34
  * `true` – show default hint;
35
35
  *
36
36
  * `string` or `() => string` – show hint with custom message.
37
- *
38
37
  * @default true
39
38
  */
40
39
  hintWhenDisabled?: boolean | string | (() => string);
@@ -96,7 +95,7 @@ export type ToolbarListButtonData<E> = {
96
95
  };
97
96
  /**
98
97
  * @deprecated Use ReactComponent type instead
99
- * */
98
+ */
100
99
  export type ToolbarReactNodeData = {
101
100
  id: string;
102
101
  type: ToolbarDataType.ReactNode;
@@ -105,7 +104,7 @@ export type ToolbarReactNodeData = {
105
104
  };
106
105
  /**
107
106
  * @deprecated Use ReactComponent type instead
108
- * */
107
+ */
109
108
  export type ToolbarReactNodeFnData<E> = {
110
109
  id: string;
111
110
  type: ToolbarDataType.ReactNodeFn;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"../../../src","sources":["toolbar/types.ts"],"names":[],"mappings":";;;AAgDA,IAAY,eASX;AATD,WAAY,eAAe;IACvB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;IACvB,kDAAkD;IAClD,uCAAoB,CAAA;IACpB,kDAAkD;IAClD,4CAAyB,CAAA;IACzB,iDAA8B,CAAA;AAClC,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B","sourcesContent":["import type {HotkeyProps, IconProps, QAProps} from '@gravity-ui/uikit';\n\nimport type {ClassNameProps} from '../classname';\n\nexport type ToolbarBaseProps<E> = ClassNameProps &\n QAProps & {\n editor: E;\n focus(): void;\n onClick?(id: string, attrs?: {[key: string]: any}): void;\n display?: ToolbarDisplay;\n disableTooltip?: boolean;\n disablePreview?: boolean;\n disableHotkey?: boolean;\n };\n\nexport type ToolbarIconData = Pick<IconProps, 'data' | 'size'>;\nexport type ToolbarGroupData<E> = Array<ToolbarGroupItemData<E>>;\nexport type ToolbarData<E> = ToolbarGroupData<E>[];\nexport type ToolbarDisplay = 'shrink' | 'scroll';\n\nexport type ToolbarItemData<E> = QAProps & {\n id: string;\n icon: ToolbarIconData;\n title: string | (() => string);\n hint?: string | (() => string);\n hotkey?: HotkeyProps['value'];\n preview?: React.ReactNode;\n /**\n * Alternative IDs that can be used to find this command\n */\n aliases?: string[];\n /**\n * Show hint when _isEnable()_ returns false\n *\n * `false` – don't show hint;\n *\n * `true` – show default hint;\n *\n * `string` or `() => string` – show hint with custom message.\n *\n * @default true\n */\n hintWhenDisabled?: boolean | string | (() => string);\n exec(editor: E): void;\n isActive(editor: E): boolean;\n isEnable(editor: E): boolean;\n};\n\nexport enum ToolbarDataType {\n SingleButton = 's-button',\n ListButton = 'list-b',\n ButtonPopup = 'b-popup',\n /** @deprecated Use ReactComponent type instead */\n ReactNode = 'r-node',\n /** @deprecated Use ReactComponent type instead */\n ReactNodeFn = 'r-node-fn',\n ReactComponent = 'r-component',\n}\n\nexport type ToolbarGroupItemData<E> =\n | ToolbarSingleItemData<E>\n | ToolbarButtonPopupData<E>\n | ToolbarListItemData<E>\n | ToolbarReactNodeData\n | ToolbarReactNodeFnData<E>\n | ToolbarReactComponentData<E>;\n\nexport type ToolbarSingleItemData<E> = ToolbarItemData<E> & {\n id: string;\n type: ToolbarDataType.SingleButton;\n className?: string;\n};\n\nexport type ToolbarListItemData<E> = ToolbarListButtonData<E> & {\n id: string;\n type: ToolbarDataType.ListButton;\n className?: string;\n};\n\nexport type ToolbarReactComponentData<E> = {\n id: string;\n type: ToolbarDataType.ReactComponent;\n width: number;\n className?: string;\n component: React.ComponentType<ToolbarBaseProps<E>>;\n props?: object;\n};\n\nexport type ToolbarButtonPopupData<E> = ToolbarItemData<E> & {\n /** not used, may be an empty function */\n exec: ToolbarItemData<E>['exec'];\n type: ToolbarDataType.ButtonPopup;\n renderPopup: (\n props: ToolbarBaseProps<E> & {hide: () => void; anchorElement: HTMLElement | null},\n ) => React.ReactNode;\n className?: string;\n};\n\nexport type ToolbarListButtonItemData<E> = ToolbarItemData<E> & {\n doNotActivateList?: boolean;\n};\n\nexport type ToolbarListButtonData<E> = {\n icon: ToolbarIconData;\n title: string | (() => string);\n withArrow?: boolean;\n data: ToolbarListButtonItemData<E>[];\n alwaysActive?: boolean;\n hideDisabled?: boolean;\n /** When state changes to active, replace default icon with icon of first active item */\n replaceActiveIcon?: boolean;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeData = {\n id: string;\n type: ToolbarDataType.ReactNode;\n width: number;\n content: React.ReactNode;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeFnData<E> = {\n id: string;\n type: ToolbarDataType.ReactNodeFn;\n width: number;\n content: (e: E) => React.ReactNode;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"../../../src","sources":["toolbar/types.ts"],"names":[],"mappings":";;;AA+CA,IAAY,eASX;AATD,WAAY,eAAe;IACvB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;IACvB,kDAAkD;IAClD,uCAAoB,CAAA;IACpB,kDAAkD;IAClD,4CAAyB,CAAA;IACzB,iDAA8B,CAAA;AAClC,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B","sourcesContent":["import type {HotkeyProps, IconProps, QAProps} from '@gravity-ui/uikit';\n\nimport type {ClassNameProps} from '../classname';\n\nexport type ToolbarBaseProps<E> = ClassNameProps &\n QAProps & {\n editor: E;\n focus(): void;\n onClick?(id: string, attrs?: {[key: string]: any}): void;\n display?: ToolbarDisplay;\n disableTooltip?: boolean;\n disablePreview?: boolean;\n disableHotkey?: boolean;\n };\n\nexport type ToolbarIconData = Pick<IconProps, 'data' | 'size'>;\nexport type ToolbarGroupData<E> = Array<ToolbarGroupItemData<E>>;\nexport type ToolbarData<E> = ToolbarGroupData<E>[];\nexport type ToolbarDisplay = 'shrink' | 'scroll';\n\nexport type ToolbarItemData<E> = QAProps & {\n id: string;\n icon: ToolbarIconData;\n title: string | (() => string);\n hint?: string | (() => string);\n hotkey?: HotkeyProps['value'];\n preview?: React.ReactNode;\n /**\n * Alternative IDs that can be used to find this command\n */\n aliases?: string[];\n /**\n * Show hint when _isEnable()_ returns false\n *\n * `false` – don't show hint;\n *\n * `true` – show default hint;\n *\n * `string` or `() => string` – show hint with custom message.\n * @default true\n */\n hintWhenDisabled?: boolean | string | (() => string);\n exec(editor: E): void;\n isActive(editor: E): boolean;\n isEnable(editor: E): boolean;\n};\n\nexport enum ToolbarDataType {\n SingleButton = 's-button',\n ListButton = 'list-b',\n ButtonPopup = 'b-popup',\n /** @deprecated Use ReactComponent type instead */\n ReactNode = 'r-node',\n /** @deprecated Use ReactComponent type instead */\n ReactNodeFn = 'r-node-fn',\n ReactComponent = 'r-component',\n}\n\nexport type ToolbarGroupItemData<E> =\n | ToolbarSingleItemData<E>\n | ToolbarButtonPopupData<E>\n | ToolbarListItemData<E>\n | ToolbarReactNodeData\n | ToolbarReactNodeFnData<E>\n | ToolbarReactComponentData<E>;\n\nexport type ToolbarSingleItemData<E> = ToolbarItemData<E> & {\n id: string;\n type: ToolbarDataType.SingleButton;\n className?: string;\n};\n\nexport type ToolbarListItemData<E> = ToolbarListButtonData<E> & {\n id: string;\n type: ToolbarDataType.ListButton;\n className?: string;\n};\n\nexport type ToolbarReactComponentData<E> = {\n id: string;\n type: ToolbarDataType.ReactComponent;\n width: number;\n className?: string;\n component: React.ComponentType<ToolbarBaseProps<E>>;\n props?: object;\n};\n\nexport type ToolbarButtonPopupData<E> = ToolbarItemData<E> & {\n /** not used, may be an empty function */\n exec: ToolbarItemData<E>['exec'];\n type: ToolbarDataType.ButtonPopup;\n renderPopup: (\n props: ToolbarBaseProps<E> & {hide: () => void; anchorElement: HTMLElement | null},\n ) => React.ReactNode;\n className?: string;\n};\n\nexport type ToolbarListButtonItemData<E> = ToolbarItemData<E> & {\n doNotActivateList?: boolean;\n};\n\nexport type ToolbarListButtonData<E> = {\n icon: ToolbarIconData;\n title: string | (() => string);\n withArrow?: boolean;\n data: ToolbarListButtonItemData<E>[];\n alwaysActive?: boolean;\n hideDisabled?: boolean;\n /** When state changes to active, replace default icon with icon of first active item */\n replaceActiveIcon?: boolean;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n */\nexport type ToolbarReactNodeData = {\n id: string;\n type: ToolbarDataType.ReactNode;\n width: number;\n content: React.ReactNode;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n */\nexport type ToolbarReactNodeFnData<E> = {\n id: string;\n type: ToolbarDataType.ReactNodeFn;\n width: number;\n content: (e: E) => React.ReactNode;\n};\n"]}
@@ -10,7 +10,6 @@ declare module 'prosemirror-model' {
10
10
  escapeText?: boolean;
11
11
  /**
12
12
  * Set `false` to disable gapcursor selection inside this node.
13
- *
14
13
  * @default true
15
14
  */
16
15
  gapcursor?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"../../../src","sources":["types/spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD","sourcesContent":["////////////////////////////////////////////////////\n/// ///\n/// This is a place to extend spec types ///\n/// ///\n////////////////////////////////////////////////////\n\nexport {};\n\ndeclare module 'prosemirror-model' {\n interface NodeSpec {\n /**\n * Determines whether this node is part of complex block,\n * e.g. yfm-cut, yfm-note, tables, etc...\n * And indicates its own role\n */\n complex?: 'root' | 'inner' | 'leaf';\n escapeText?: boolean;\n\n /**\n * Set `false` to disable gapcursor selection inside this node.\n *\n * @default true\n */\n gapcursor?: boolean;\n }\n\n interface MarkSpec {\n /**\n * Can be used to indicate that this mark contains code.\n */\n code?: boolean;\n }\n}\n"]}
1
+ {"version":3,"file":"spec.js","sourceRoot":"../../../src","sources":["types/spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD","sourcesContent":["////////////////////////////////////////////////////\n/// ///\n/// This is a place to extend spec types ///\n/// ///\n////////////////////////////////////////////////////\n\nexport {};\n\ndeclare module 'prosemirror-model' {\n interface NodeSpec {\n /**\n * Determines whether this node is part of complex block,\n * e.g. yfm-cut, yfm-note, tables, etc...\n * And indicates its own role\n */\n complex?: 'root' | 'inner' | 'leaf';\n escapeText?: boolean;\n\n /**\n * Set `false` to disable gapcursor selection inside this node.\n * @default true\n */\n gapcursor?: boolean;\n }\n\n interface MarkSpec {\n /**\n * Can be used to indicate that this mark contains code.\n */\n code?: boolean;\n }\n}\n"]}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
3
3
  * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
4
- *
5
4
  * @category String
6
- * @param {string} [src=''] The string to escape.
5
+ * @param {string} [src] The string to escape.
7
6
  * @returns {string} Returns the escaped string.
8
7
  * @see escape, escapeRegExp, unescape
9
8
  * @example
@@ -10,9 +10,8 @@ const reHasRegExpChar = RegExp(reRegExpChar.source);
10
10
  /**
11
11
  * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
12
12
  * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
13
- *
14
13
  * @category String
15
- * @param {string} [src=''] The string to escape.
14
+ * @param {string} [src] The string to escape.
16
15
  * @returns {string} Returns the escaped string.
17
16
  * @see escape, escapeRegExp, unescape
18
17
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"ecapeRegexp.js","sourceRoot":"../../../src","sources":["utils/ecapeRegexp.ts"],"names":[],"mappings":";;AAoBA,oCAEC;AAtBD;;;GAGG;AACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY,CAAC,GAAW;IACpC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;AAC5F,CAAC","sourcesContent":["/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nconst reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nconst reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @category String\n * @param {string} [src=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @see escape, escapeRegExp, unescape\n * @example\n *\n * escapeRegExp('[lodash](https://lodash.com/)')\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nexport function escapeRegExp(src: string) {\n return src && reHasRegExpChar.test(src) ? src.replace(reRegExpChar, '\\\\$&') : src || '';\n}\n"]}
1
+ {"version":3,"file":"ecapeRegexp.js","sourceRoot":"../../../src","sources":["utils/ecapeRegexp.ts"],"names":[],"mappings":";;AAmBA,oCAEC;AArBD;;;GAGG;AACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,GAAW;IACpC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;AAC5F,CAAC","sourcesContent":["/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nconst reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nconst reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n * @category String\n * @param {string} [src] The string to escape.\n * @returns {string} Returns the escaped string.\n * @see escape, escapeRegExp, unescape\n * @example\n *\n * escapeRegExp('[lodash](https://lodash.com/)')\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nexport function escapeRegExp(src: string) {\n return src && reHasRegExpChar.test(src) ? src.replace(reRegExpChar, '\\\\$&') : src || '';\n}\n"]}
@@ -109,8 +109,8 @@ function nodeInputRule(regexp, fragment, selectionOffset = 0) {
109
109
  const { tr } = state;
110
110
  if (matchStr) {
111
111
  tr.replaceWith(start - 1, end, (0, lodash_1.isFunction)(fragment)
112
- ? fragment(matchStr) ?? prosemirror_model_1.Fragment.empty
113
- : fragment ?? prosemirror_model_1.Fragment.empty).setSelection(new prosemirror_state_1.TextSelection(tr.doc.resolve(start + selectionOffset)));
112
+ ? (fragment(matchStr) ?? prosemirror_model_1.Fragment.empty)
113
+ : (fragment ?? prosemirror_model_1.Fragment.empty)).setSelection(new prosemirror_state_1.TextSelection(tr.doc.resolve(start + selectionOffset)));
114
114
  }
115
115
  return tr;
116
116
  });
@@ -1 +1 @@
1
- {"version":3,"file":"inputrules.js","sourceRoot":"../../../src","sources":["utils/inputrules.ts"],"names":[],"mappings":"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","sourcesContent":["import {InputRule} from 'prosemirror-inputrules';\nimport {Fragment, type Mark, type MarkType, type Node} from 'prosemirror-model';\nimport {type EditorState, TextSelection} from 'prosemirror-state';\n\n// TODO: remove explicit import from base and code extensions\nimport {pType} from 'src/extensions/base/specs';\nimport {codeType} from 'src/extensions/markdown/specs';\nimport {isFunction} from 'src/lodash';\nimport {isMarkActive} from 'src/utils/marks';\n\nexport function hasCodeMark(\n state: EditorState,\n _match: RegExpMatchArray,\n start: number,\n end: number,\n): boolean {\n // TODO: remove explicit import from code extension\n const codeMarkType = codeType(state.schema);\n if (isMarkActive(state, codeMarkType)) return true;\n if (state.doc.rangeHasMark(start, end, codeMarkType)) return true;\n return false;\n}\n\nexport function inDefaultTextblock(\n state: EditorState,\n _match: RegExpMatchArray,\n start: number,\n _end: number,\n): boolean {\n return state.doc.resolve(start).parent.type === pType(state.schema);\n}\n\nexport {textblockTypeInputRule, wrappingInputRule} from './rulebuilders';\n\nfunction getMarksBetween(start: number, end: number, state: EditorState) {\n let marks: {start: number; end: number; mark: Mark}[] = [];\n\n state.doc.nodesBetween(start, end, (node, pos) => {\n marks = [\n ...marks,\n ...node.marks.map((mark) => ({\n start: pos,\n end: pos + node.nodeSize,\n mark,\n })),\n ];\n });\n\n return marks;\n}\n\nfunction escapeRegex(string: string) {\n // eslint-disable-next-line no-useless-escape\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n// TODO: link has a custom input rule handler, think about generalizing\nexport function markInputRule(\n rule: RegExp | {open: string; close: string; ignoreBetween?: string},\n markType: MarkType,\n getAttrs?: (match: any) => Record<string, unknown>,\n): InputRule {\n let regexp;\n if (rule instanceof RegExp) {\n regexp = rule;\n } else {\n const open = escapeRegex(rule.open);\n const close = escapeRegex(rule.close);\n const ignoreBetween = escapeRegex(rule.ignoreBetween || '');\n regexp = new RegExp(\n `(?:${open})` +\n (ignoreBetween ? `([^\\\\s${ignoreBetween}]+)` : `([\\\\S]+)`) +\n `(?:${close})\\\\s$`,\n );\n }\n return new InputRule(regexp, (state, match, start, end) => {\n // handle the rule only if is start of line or there is a space before \"open\" symbols\n if ((match as RegExpMatchArray).index! > 0) {\n const re = match as RegExpMatchArray;\n if (re.input![re.index! - 1] !== ' ') return null;\n }\n\n if (hasCodeMark(state, match, start, end)) return null;\n\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n const {tr} = state;\n const m = match.length - 1;\n let markEnd = end;\n let markStart = start;\n\n if (match[m]) {\n const matchStart = start + match[0].indexOf(match[m - 1]);\n const matchEnd = matchStart + match[m - 1].length - 1;\n const textStart = matchStart + match[m - 1].lastIndexOf(match[m]);\n const textEnd = textStart + match[m].length;\n\n const marksBetween = getMarksBetween(start, end, state);\n const excludedMarks = marksBetween\n .filter((item) => item.mark.type.excludes(markType))\n .filter((item) => item.end > matchStart);\n\n if (excludedMarks.length) {\n return null;\n }\n\n if (textEnd < matchEnd) {\n tr.delete(textEnd, matchEnd);\n }\n if (textStart > matchStart) {\n tr.delete(matchStart, textStart);\n }\n markStart = matchStart;\n markEnd = markStart + match[m].length;\n }\n\n tr.addMark(markStart, markEnd, markType.create(attrs));\n tr.removeStoredMark(markType);\n return tr;\n });\n}\n\ntype NodeInputRuleReplaceFragment = Node | Fragment | readonly Node[] | null | undefined;\n\nexport function nodeInputRule(\n regexp: RegExp,\n fragment: NodeInputRuleReplaceFragment | ((match: string) => NodeInputRuleReplaceFragment),\n selectionOffset = 0,\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n if (hasCodeMark(state, match, start, end)) return null;\n\n const [matchStr] = match;\n const {tr} = state;\n\n if (matchStr) {\n tr.replaceWith(\n start - 1,\n end,\n isFunction(fragment)\n ? fragment(matchStr) ?? Fragment.empty\n : fragment ?? Fragment.empty,\n ).setSelection(new TextSelection(tr.doc.resolve(start + selectionOffset)));\n }\n\n return tr;\n });\n}\n\nexport function inlineNodeInputRule(\n regexp: RegExp,\n fragment: (match: string) => NodeInputRuleReplaceFragment,\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n if (hasCodeMark(state, match, start, end)) return null;\n\n const [matchStr] = match;\n const {tr} = state;\n\n if (matchStr) {\n tr.replaceWith(start, end, fragment(matchStr) ?? Fragment.empty).setSelection(\n new TextSelection(tr.doc.resolve(end)),\n );\n }\n\n return tr;\n });\n}\n"]}
1
+ {"version":3,"file":"inputrules.js","sourceRoot":"../../../src","sources":["utils/inputrules.ts"],"names":[],"mappings":"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","sourcesContent":["import {InputRule} from 'prosemirror-inputrules';\nimport {Fragment, type Mark, type MarkType, type Node} from 'prosemirror-model';\nimport {type EditorState, TextSelection} from 'prosemirror-state';\n\n// TODO: remove explicit import from base and code extensions\nimport {pType} from 'src/extensions/base/specs';\nimport {codeType} from 'src/extensions/markdown/specs';\nimport {isFunction} from 'src/lodash';\nimport {isMarkActive} from 'src/utils/marks';\n\nexport function hasCodeMark(\n state: EditorState,\n _match: RegExpMatchArray,\n start: number,\n end: number,\n): boolean {\n // TODO: remove explicit import from code extension\n const codeMarkType = codeType(state.schema);\n if (isMarkActive(state, codeMarkType)) return true;\n if (state.doc.rangeHasMark(start, end, codeMarkType)) return true;\n return false;\n}\n\nexport function inDefaultTextblock(\n state: EditorState,\n _match: RegExpMatchArray,\n start: number,\n _end: number,\n): boolean {\n return state.doc.resolve(start).parent.type === pType(state.schema);\n}\n\nexport {textblockTypeInputRule, wrappingInputRule} from './rulebuilders';\n\nfunction getMarksBetween(start: number, end: number, state: EditorState) {\n let marks: {start: number; end: number; mark: Mark}[] = [];\n\n state.doc.nodesBetween(start, end, (node, pos) => {\n marks = [\n ...marks,\n ...node.marks.map((mark) => ({\n start: pos,\n end: pos + node.nodeSize,\n mark,\n })),\n ];\n });\n\n return marks;\n}\n\nfunction escapeRegex(string: string) {\n // eslint-disable-next-line no-useless-escape\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n// TODO: link has a custom input rule handler, think about generalizing\nexport function markInputRule(\n rule: RegExp | {open: string; close: string; ignoreBetween?: string},\n markType: MarkType,\n getAttrs?: (match: any) => Record<string, unknown>,\n): InputRule {\n let regexp;\n if (rule instanceof RegExp) {\n regexp = rule;\n } else {\n const open = escapeRegex(rule.open);\n const close = escapeRegex(rule.close);\n const ignoreBetween = escapeRegex(rule.ignoreBetween || '');\n regexp = new RegExp(\n `(?:${open})` +\n (ignoreBetween ? `([^\\\\s${ignoreBetween}]+)` : `([\\\\S]+)`) +\n `(?:${close})\\\\s$`,\n );\n }\n return new InputRule(regexp, (state, match, start, end) => {\n // handle the rule only if is start of line or there is a space before \"open\" symbols\n if ((match as RegExpMatchArray).index! > 0) {\n const re = match as RegExpMatchArray;\n if (re.input![re.index! - 1] !== ' ') return null;\n }\n\n if (hasCodeMark(state, match, start, end)) return null;\n\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n const {tr} = state;\n const m = match.length - 1;\n let markEnd = end;\n let markStart = start;\n\n if (match[m]) {\n const matchStart = start + match[0].indexOf(match[m - 1]);\n const matchEnd = matchStart + match[m - 1].length - 1;\n const textStart = matchStart + match[m - 1].lastIndexOf(match[m]);\n const textEnd = textStart + match[m].length;\n\n const marksBetween = getMarksBetween(start, end, state);\n const excludedMarks = marksBetween\n .filter((item) => item.mark.type.excludes(markType))\n .filter((item) => item.end > matchStart);\n\n if (excludedMarks.length) {\n return null;\n }\n\n if (textEnd < matchEnd) {\n tr.delete(textEnd, matchEnd);\n }\n if (textStart > matchStart) {\n tr.delete(matchStart, textStart);\n }\n markStart = matchStart;\n markEnd = markStart + match[m].length;\n }\n\n tr.addMark(markStart, markEnd, markType.create(attrs));\n tr.removeStoredMark(markType);\n return tr;\n });\n}\n\ntype NodeInputRuleReplaceFragment = Node | Fragment | readonly Node[] | null | undefined;\n\nexport function nodeInputRule(\n regexp: RegExp,\n fragment: NodeInputRuleReplaceFragment | ((match: string) => NodeInputRuleReplaceFragment),\n selectionOffset = 0,\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n if (hasCodeMark(state, match, start, end)) return null;\n\n const [matchStr] = match;\n const {tr} = state;\n\n if (matchStr) {\n tr.replaceWith(\n start - 1,\n end,\n isFunction(fragment)\n ? (fragment(matchStr) ?? Fragment.empty)\n : (fragment ?? Fragment.empty),\n ).setSelection(new TextSelection(tr.doc.resolve(start + selectionOffset)));\n }\n\n return tr;\n });\n}\n\nexport function inlineNodeInputRule(\n regexp: RegExp,\n fragment: (match: string) => NodeInputRuleReplaceFragment,\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n if (hasCodeMark(state, match, start, end)) return null;\n\n const [matchStr] = match;\n const {tr} = state;\n\n if (matchStr) {\n tr.replaceWith(start, end, fragment(matchStr) ?? Fragment.empty).setSelection(\n new TextSelection(tr.doc.resolve(end)),\n );\n }\n\n return tr;\n });\n}\n"]}
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  /** During build process, the current version will be injected here */
5
- exports.VERSION = typeof '15.27.2' !== 'undefined' ? '15.27.2' : 'unknown';
5
+ exports.VERSION = typeof '15.28.1' !== 'undefined' ? '15.28.1' : 'unknown';
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACzD,QAAA,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.27.2' !== 'undefined' ? '15.27.2' : 'unknown';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACzD,QAAA,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.28.1' !== 'undefined' ? '15.28.1' : 'unknown';\n"]}
@@ -2,3 +2,8 @@ export declare const supportedImageExtensions: string[];
2
2
  export declare const supportedVideoExtensions: string[];
3
3
  export declare const supportedExtensions: string[];
4
4
  export declare const extensionRegex: RegExp;
5
+ export declare const YfmFileClassname = "yfm-file";
6
+ export declare const YfmFileAttrs: {
7
+ readonly Download: "download";
8
+ readonly Type: "type";
9
+ };
@@ -1,8 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extensionRegex = exports.supportedExtensions = exports.supportedVideoExtensions = exports.supportedImageExtensions = void 0;
3
+ exports.YfmFileAttrs = exports.YfmFileClassname = exports.extensionRegex = exports.supportedExtensions = exports.supportedVideoExtensions = exports.supportedImageExtensions = void 0;
4
+ const utils_1 = require("../../../utils/index.js");
4
5
  exports.supportedImageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'avif', 'bmp'];
5
- exports.supportedVideoExtensions = ['mp4', 'webm', 'ogg'];
6
+ const commonVideoExtensions = ['mp4', 'webm', 'ogg'];
7
+ const platformVideoExtensions = (0, utils_1.isMac)() ? ['mov'] : [];
8
+ exports.supportedVideoExtensions = [...commonVideoExtensions, ...platformVideoExtensions];
6
9
  exports.supportedExtensions = [...exports.supportedImageExtensions, ...exports.supportedVideoExtensions];
7
10
  exports.extensionRegex = /\w+?$/;
11
+ exports.YfmFileClassname = 'yfm-file';
12
+ exports.YfmFileAttrs = {
13
+ Download: 'download',
14
+ Type: 'type',
15
+ };
8
16
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"../../../../../src","sources":["view/hooks/useFilesGallery/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEvF,QAAA,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAElD,QAAA,mBAAmB,GAAG,CAAC,GAAG,gCAAwB,EAAE,GAAG,gCAAwB,CAAC,CAAC;AAEjF,QAAA,cAAc,GAAG,OAAO,CAAC","sourcesContent":["export const supportedImageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'avif', 'bmp'];\n\nexport const supportedVideoExtensions = ['mp4', 'webm', 'ogg'];\n\nexport const supportedExtensions = [...supportedImageExtensions, ...supportedVideoExtensions];\n\nexport const extensionRegex = /\\w+?$/;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"../../../../../src","sources":["view/hooks/useFilesGallery/constants.ts"],"names":[],"mappings":";;;AAAA,mDAAgC;AAEnB,QAAA,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpG,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,MAAM,uBAAuB,GAAG,IAAA,aAAK,GAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE1C,QAAA,wBAAwB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,uBAAuB,CAAC,CAAC;AAElF,QAAA,mBAAmB,GAAG,CAAC,GAAG,gCAAwB,EAAE,GAAG,gCAAwB,CAAC,CAAC;AAEjF,QAAA,cAAc,GAAG,OAAO,CAAC;AAEzB,QAAA,gBAAgB,GAAG,UAAU,CAAC;AAC9B,QAAA,YAAY,GAAG;IACxB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;CACN,CAAC","sourcesContent":["import {isMac} from 'src/utils';\n\nexport const supportedImageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'avif', 'bmp'];\n\nconst commonVideoExtensions = ['mp4', 'webm', 'ogg'];\nconst platformVideoExtensions = isMac() ? ['mov'] : [];\n\nexport const supportedVideoExtensions = [...commonVideoExtensions, ...platformVideoExtensions];\n\nexport const supportedExtensions = [...supportedImageExtensions, ...supportedVideoExtensions];\n\nexport const extensionRegex = /\\w+?$/;\n\nexport const YfmFileClassname = 'yfm-file';\nexport const YfmFileAttrs = {\n Download: 'download',\n Type: 'type',\n} as const;\n"]}
@@ -0,0 +1,8 @@
1
+ type LinkObject = {
2
+ name?: string | null;
3
+ mimetype?: string | null;
4
+ type: 'image' | 'link' | 'file';
5
+ link: string;
6
+ };
7
+ export declare function buildLinkObject(elem: Element): LinkObject | null;
8
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildLinkObject = buildLinkObject;
4
+ const constants_1 = require("./constants.js");
5
+ function buildLinkObject(elem) {
6
+ let obj = null;
7
+ if (elem.tagName === 'IMG') {
8
+ obj = {
9
+ type: 'image',
10
+ name: elem.getAttribute('alt'),
11
+ link: elem.getAttribute('src') ?? '',
12
+ };
13
+ }
14
+ else if (elem.tagName === 'A') {
15
+ obj = {
16
+ type: 'link',
17
+ name: elem.getAttribute('title'),
18
+ link: elem.getAttribute('href') ?? '',
19
+ };
20
+ if (elem.classList.contains(constants_1.YfmFileClassname)) {
21
+ obj.type = 'file';
22
+ obj.name = elem.getAttribute(constants_1.YfmFileAttrs.Download);
23
+ obj.mimetype = elem.getAttribute(constants_1.YfmFileAttrs.Type);
24
+ }
25
+ }
26
+ return obj;
27
+ }
28
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"../../../../../src","sources":["view/hooks/useFilesGallery/helpers.ts"],"names":[],"mappings":";;AASA,0CAwBC;AAjCD,8CAA2D;AAS3D,SAAgB,eAAe,CAAC,IAAa;IACzC,IAAI,GAAG,GAAsB,IAAI,CAAC;IAElC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG;YACF,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;SACvC,CAAC;IACN,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC9B,GAAG,GAAG;YACF,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;SACxC,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAAgB,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAY,CAAC,QAAQ,CAAC,CAAC;YACpD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAY,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC","sourcesContent":["import {YfmFileAttrs, YfmFileClassname} from './constants';\n\ntype LinkObject = {\n name?: string | null;\n mimetype?: string | null;\n type: 'image' | 'link' | 'file';\n link: string;\n};\n\nexport function buildLinkObject(elem: Element): LinkObject | null {\n let obj: LinkObject | null = null;\n\n if (elem.tagName === 'IMG') {\n obj = {\n type: 'image',\n name: elem.getAttribute('alt'),\n link: elem.getAttribute('src') ?? '',\n };\n } else if (elem.tagName === 'A') {\n obj = {\n type: 'link',\n name: elem.getAttribute('title'),\n link: elem.getAttribute('href') ?? '',\n };\n\n if (elem.classList.contains(YfmFileClassname)) {\n obj.type = 'file';\n obj.name = elem.getAttribute(YfmFileAttrs.Download);\n obj.mimetype = elem.getAttribute(YfmFileAttrs.Type);\n }\n }\n\n return obj;\n}\n"]}
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import type { GalleryItemPropsWithUrl, UseFilesGalleryOptions } from "./types.js";
3
2
  export declare function useFilesGallery(customFiles?: GalleryItemPropsWithUrl[], { download: getItemDownloladUrl, overrideItemProps, copyUrl: getItemCopyUrl, }?: UseFilesGalleryOptions): {
4
3
  openFilesGallery: (event: React.MouseEvent<HTMLDivElement>) => boolean;
@@ -1,43 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useFilesGallery = useFilesGallery;
4
- const tslib_1 = require("tslib");
5
- const React = tslib_1.__importStar(require("react"));
4
+ const react_1 = require("react");
6
5
  const components_1 = require("@gravity-ui/components");
7
6
  const uikit_1 = require("@gravity-ui/uikit");
8
7
  const gallery_1 = require("../../../i18n/gallery/index.js");
9
8
  const constants_1 = require("./constants.js");
9
+ const helpers_1 = require("./helpers.js");
10
10
  function useFilesGallery(customFiles, { download: getItemDownloladUrl, overrideItemProps, copyUrl: getItemCopyUrl, } = {}) {
11
11
  const { openGallery } = (0, components_1.useGallery)();
12
12
  const toaster = (0, uikit_1.useToaster)();
13
13
  return {
14
- openFilesGallery: React.useCallback((event) => {
14
+ openFilesGallery: (0, react_1.useCallback)((event) => {
15
15
  if (!(event.target instanceof HTMLElement)) {
16
16
  return false;
17
17
  }
18
- let fileLink = '';
19
- if (event.target.tagName === 'IMG' && !event.target.closest('a')) {
20
- fileLink = event.target.getAttribute('src') ?? '';
21
- }
22
- else if (event.target.tagName === 'A') {
23
- fileLink = event.target.getAttribute('href') ?? '';
24
- }
25
- if (!fileLink) {
18
+ if (event.target.tagName === 'IMG' && event.target.closest('a'))
19
+ return false;
20
+ // Opening the context menu or opening the link in the new tab
21
+ if (event.ctrlKey || event.metaKey) {
26
22
  return false;
27
23
  }
24
+ const targetFile = (0, helpers_1.buildLinkObject)(event.target);
25
+ if (!targetFile || !targetFile.link)
26
+ return false;
28
27
  const filesFromContent = [
29
28
  ...(event.currentTarget?.querySelectorAll('img,a') ?? []),
30
29
  ].reduce((result, element) => {
31
- const isImage = element.tagName === 'IMG';
32
- const link = isImage
33
- ? element.getAttribute('src')
34
- : element.getAttribute('href');
35
- if (link && !customFiles?.some((item) => item.url === link)) {
36
- const extension = link.match(constants_1.extensionRegex)?.[0] || '';
37
- if (isImage || constants_1.supportedExtensions.includes(extension)) {
38
- const name = (isImage
39
- ? element.getAttribute('alt')
40
- : element.getAttribute('title')) || '';
30
+ const linkObj = (0, helpers_1.buildLinkObject)(element);
31
+ if (linkObj?.link && !customFiles?.some((item) => item.url === linkObj.link)) {
32
+ const extension = linkObj.mimetype?.match(constants_1.extensionRegex)?.[0] ||
33
+ linkObj.link.match(constants_1.extensionRegex)?.[0] ||
34
+ '';
35
+ if (linkObj.type === 'image' || constants_1.supportedExtensions.includes(extension)) {
36
+ const link = linkObj.link;
37
+ const name = linkObj.name || '';
41
38
  const filesGalleryItemType = constants_1.supportedVideoExtensions.includes(extension) ? 'video' : 'image';
42
39
  const galleryItemActions = [];
43
40
  const itemCopyUrl = getItemCopyUrl?.(link, filesGalleryItemType, element);
@@ -74,7 +71,7 @@ function useFilesGallery(customFiles, { download: getItemDownloladUrl, overrideI
74
71
  return result;
75
72
  }, []);
76
73
  const files = [...(customFiles ?? []), ...filesFromContent];
77
- const initialItemIndex = files.findIndex((item) => item.url === fileLink);
74
+ const initialItemIndex = files.findIndex((item) => item.url === targetFile.link);
78
75
  if (initialItemIndex !== -1) {
79
76
  event.preventDefault();
80
77
  openGallery(files, initialItemIndex);