@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.
- package/README.md +6 -4
- package/build/cjs/bundle/Editor.js.map +1 -1
- package/build/cjs/bundle/HorizontalDrag.js +3 -3
- package/build/cjs/bundle/HorizontalDrag.js.map +1 -1
- package/build/cjs/bundle/settings/index.js +1 -1
- package/build/cjs/bundle/settings/index.js.map +1 -1
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/cjs/bundle/types.d.ts +8 -11
- package/build/cjs/bundle/types.js.map +1 -1
- package/build/cjs/bundle/wysiwyg-preset.d.ts +0 -1
- package/build/cjs/bundle/wysiwyg-preset.js +1 -1
- package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
- package/build/cjs/core/Editor.js.map +1 -1
- package/build/cjs/core/ExtensionBuilder.d.ts +0 -2
- package/build/cjs/core/ExtensionBuilder.js +1 -1
- package/build/cjs/core/ExtensionBuilder.js.map +1 -1
- package/build/cjs/core/markdown/MarkdownParser.d.ts +2 -3
- package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
- package/build/cjs/core/types/extension.js.map +1 -1
- package/build/cjs/core/types/parser.d.ts +3 -2
- package/build/cjs/core/types/parser.js.map +1 -1
- package/build/cjs/extensions/additional/GPT/gptExtension/view.js +1 -3
- package/build/cjs/extensions/additional/GPT/gptExtension/view.js.map +1 -1
- package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
- package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
- package/build/cjs/extensions/behavior/Autocomplete/types.js.map +1 -1
- package/build/cjs/extensions/behavior/SelectionContext/index.d.ts +0 -2
- package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/cjs/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
- package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
- package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js +80 -23
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
- package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
- package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
- package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/ImgSize/index.d.ts +0 -1
- package/build/cjs/extensions/yfm/ImgSize/index.js.map +1 -1
- package/build/cjs/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
- package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/index.d.ts +0 -2
- package/build/cjs/extensions/yfm/YfmTable/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +3 -4
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/cjs/i18n/bundle/en.json +2 -1
- package/build/cjs/i18n/bundle/index.d.ts +3 -2
- package/build/cjs/i18n/bundle/ru.json +2 -1
- package/build/cjs/i18n/common/en.json +2 -1
- package/build/cjs/i18n/common/index.d.ts +2 -1
- package/build/cjs/i18n/common/ru.json +2 -1
- package/build/cjs/logger.d.ts +0 -1
- package/build/cjs/logger.js +0 -1
- package/build/cjs/logger.js.map +1 -1
- package/build/cjs/shortcuts/default.js +0 -2
- package/build/cjs/shortcuts/default.js.map +1 -1
- package/build/cjs/table-utils/commands/removeRow.js +1 -2
- package/build/cjs/table-utils/commands/removeRow.js.map +1 -1
- package/build/cjs/toolbar/types.d.ts +2 -3
- package/build/cjs/toolbar/types.js.map +1 -1
- package/build/cjs/types/spec.d.ts +0 -1
- package/build/cjs/types/spec.js.map +1 -1
- package/build/cjs/utils/ecapeRegexp.d.ts +1 -2
- package/build/cjs/utils/ecapeRegexp.js +1 -2
- package/build/cjs/utils/ecapeRegexp.js.map +1 -1
- package/build/cjs/utils/inputrules.js +2 -2
- package/build/cjs/utils/inputrules.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/cjs/view/hooks/useFilesGallery/constants.d.ts +5 -0
- package/build/cjs/view/hooks/useFilesGallery/constants.js +10 -2
- package/build/cjs/view/hooks/useFilesGallery/constants.js.map +1 -1
- package/build/cjs/view/hooks/useFilesGallery/helpers.d.ts +8 -0
- package/build/cjs/view/hooks/useFilesGallery/helpers.js +28 -0
- package/build/cjs/view/hooks/useFilesGallery/helpers.js.map +1 -0
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js +19 -22
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- package/build/esm/bundle/Editor.js.map +1 -1
- package/build/esm/bundle/HorizontalDrag.js +3 -3
- package/build/esm/bundle/HorizontalDrag.js.map +1 -1
- package/build/esm/bundle/settings/index.js +1 -1
- package/build/esm/bundle/settings/index.js.map +1 -1
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/esm/bundle/types.d.ts +8 -11
- package/build/esm/bundle/types.js.map +1 -1
- package/build/esm/bundle/wysiwyg-preset.d.ts +0 -1
- package/build/esm/bundle/wysiwyg-preset.js +1 -1
- package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
- package/build/esm/core/Editor.js.map +1 -1
- package/build/esm/core/ExtensionBuilder.d.ts +0 -2
- package/build/esm/core/ExtensionBuilder.js +1 -1
- package/build/esm/core/ExtensionBuilder.js.map +1 -1
- package/build/esm/core/markdown/MarkdownParser.d.ts +2 -3
- package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
- package/build/esm/core/types/extension.js.map +1 -1
- package/build/esm/core/types/parser.d.ts +3 -2
- package/build/esm/core/types/parser.js.map +1 -1
- package/build/esm/extensions/additional/GPT/gptExtension/view.js +1 -3
- package/build/esm/extensions/additional/GPT/gptExtension/view.js.map +1 -1
- package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
- package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
- package/build/esm/extensions/behavior/Autocomplete/types.js.map +1 -1
- package/build/esm/extensions/behavior/SelectionContext/index.d.ts +0 -2
- package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/esm/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
- package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
- package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.js +78 -24
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
- package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
- package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
- package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
- package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/ImgSize/index.d.ts +0 -1
- package/build/esm/extensions/yfm/ImgSize/index.js.map +1 -1
- package/build/esm/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
- package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/index.d.ts +0 -2
- package/build/esm/extensions/yfm/YfmTable/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +1 -2
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/esm/i18n/bundle/en.json +2 -1
- package/build/esm/i18n/bundle/index.d.ts +3 -2
- package/build/esm/i18n/bundle/ru.json +2 -1
- package/build/esm/i18n/common/en.json +2 -1
- package/build/esm/i18n/common/index.d.ts +2 -1
- package/build/esm/i18n/common/ru.json +2 -1
- package/build/esm/logger.d.ts +0 -1
- package/build/esm/logger.js +0 -1
- package/build/esm/logger.js.map +1 -1
- package/build/esm/shortcuts/default.js +0 -2
- package/build/esm/shortcuts/default.js.map +1 -1
- package/build/esm/table-utils/commands/removeRow.js +1 -2
- package/build/esm/table-utils/commands/removeRow.js.map +1 -1
- package/build/esm/toolbar/types.d.ts +2 -3
- package/build/esm/toolbar/types.js.map +1 -1
- package/build/esm/types/spec.d.ts +0 -1
- package/build/esm/types/spec.js.map +1 -1
- package/build/esm/utils/ecapeRegexp.d.ts +1 -2
- package/build/esm/utils/ecapeRegexp.js +1 -2
- package/build/esm/utils/ecapeRegexp.js.map +1 -1
- package/build/esm/utils/inputrules.js +2 -2
- package/build/esm/utils/inputrules.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esm/view/hooks/useFilesGallery/constants.d.ts +5 -0
- package/build/esm/view/hooks/useFilesGallery/constants.js +9 -1
- package/build/esm/view/hooks/useFilesGallery/constants.js.map +1 -1
- package/build/esm/view/hooks/useFilesGallery/helpers.d.ts +8 -0
- package/build/esm/view/hooks/useFilesGallery/helpers.js +25 -0
- package/build/esm/view/hooks/useFilesGallery/helpers.js.map +1 -0
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js +19 -21
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- 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" | "
|
|
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
|
-
|
|
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
|
-
"
|
|
11
|
+
"preview_label": "Предпросмотр",
|
|
12
|
+
"settings_label": "Настройки"
|
|
12
13
|
}
|
|
@@ -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;
|
package/build/cjs/logger.d.ts
CHANGED
package/build/cjs/logger.js
CHANGED
package/build/cjs/logger.js.map
CHANGED
|
@@ -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":";;AAAA,sCAA4D;AAC5D,8CAAsC;AAEtC,
|
|
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,
|
|
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":";;;
|
|
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"]}
|
|
@@ -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
|
|
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
|
|
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
|
|
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":";;
|
|
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":";;;AAUA,kCAWC;AAED,gDAOC;AA2BD,sCA8DC;AAID,sCAuBC;AAED,kDAkBC;AAtKD,mEAAiD;AACjD,yDAAgF;AAChF,yDAAkE;AAElE,6DAA6D;AAC7D,uDAAgD;AAChD,2DAAuD;AACvD,yCAAsC;AACtC,sCAA6C;AAE7C,SAAgB,WAAW,CACvB,KAAkB,EAClB,MAAwB,EACxB,KAAa,EACb,GAAW;IAEX,mDAAmD;IACnD,MAAM,YAAY,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,IAAA,oBAAY,EAAC,KAAK,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,kBAAkB,CAC9B,KAAkB,EAClB,MAAwB,EACxB,KAAa,EACb,IAAY;IAEZ,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAA,aAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,kDAAyE;AAAjE,sHAAA,sBAAsB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAEjD,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW,EAAE,KAAkB;IACnE,IAAI,KAAK,GAA+C,EAAE,CAAC;IAE3D,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7C,KAAK,GAAG;YACJ,GAAG,KAAK;YACR,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ;gBACxB,IAAI;aACP,CAAC,CAAC;SACN,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IAC/B,6CAA6C;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,uEAAuE;AACvE,SAAgB,aAAa,CACzB,IAAoE,EACpE,QAAkB,EAClB,QAAkD;IAElD,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,IAAI,MAAM,CACf,MAAM,IAAI,GAAG;YACT,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,aAAa,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1D,MAAM,KAAK,OAAO,CACzB,CAAC;IACN,CAAC;IACD,OAAO,IAAI,kCAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,qFAAqF;QACrF,IAAK,KAA0B,CAAC,KAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,GAAG,KAAyB,CAAC;YACrC,IAAI,EAAE,CAAC,KAAM,CAAC,EAAE,CAAC,KAAM,GAAG,CAAC,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;QACtD,CAAC;QAED,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvD,MAAM,KAAK,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxE,MAAM,EAAC,EAAE,EAAC,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAE5C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,YAAY;iBAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACnD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;YAE7C,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;gBACrB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;gBACzB,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,SAAS,GAAG,UAAU,CAAC;YACvB,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAID,SAAgB,aAAa,CACzB,MAAc,EACd,QAA0F,EAC1F,eAAe,GAAG,CAAC;IAEnB,OAAO,IAAI,kCAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvD,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACzB,MAAM,EAAC,EAAE,EAAC,GAAG,KAAK,CAAC;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACX,EAAE,CAAC,WAAW,CACV,KAAK,GAAG,CAAC,EACT,GAAG,EACH,IAAA,mBAAU,EAAC,QAAQ,CAAC;gBAChB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,4BAAQ,CAAC,KAAK;gBACtC,CAAC,CAAC,QAAQ,IAAI,4BAAQ,CAAC,KAAK,CACnC,CAAC,YAAY,CAAC,IAAI,iCAAa,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,mBAAmB,CAC/B,MAAc,EACd,QAAyD;IAEzD,OAAO,IAAI,kCAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvD,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACzB,MAAM,EAAC,EAAE,EAAC,GAAG,KAAK,CAAC;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACX,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,4BAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CACzE,IAAI,iCAAa,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CACzC,CAAC;QACN,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC","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"]}
|
package/build/cjs/version.js
CHANGED
|
@@ -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.
|
|
5
|
+
exports.VERSION = typeof '15.28.1' !== 'undefined' ? '15.28.1' : 'unknown';
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/build/cjs/version.js.map
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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":";;;
|
|
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,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
|
|
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:
|
|
14
|
+
openFilesGallery: (0, react_1.useCallback)((event) => {
|
|
15
15
|
if (!(event.target instanceof HTMLElement)) {
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const name =
|
|
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 ===
|
|
74
|
+
const initialItemIndex = files.findIndex((item) => item.url === targetFile.link);
|
|
78
75
|
if (initialItemIndex !== -1) {
|
|
79
76
|
event.preventDefault();
|
|
80
77
|
openGallery(files, initialItemIndex);
|