@gravity-ui/markdown-editor 15.12.1 → 15.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/core/ExtensionsManager.js +1 -1
- package/build/cjs/core/ExtensionsManager.js.map +1 -1
- package/build/cjs/core/markdown/MarkdownSerializer.d.ts +1 -0
- package/build/cjs/core/markdown/MarkdownSerializer.js +8 -2
- package/build/cjs/core/markdown/MarkdownSerializer.js.map +1 -1
- package/build/cjs/extensions/behavior/SelectionContext/index.d.ts +6 -0
- package/build/cjs/extensions/behavior/SelectionContext/index.js +8 -2
- package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/cjs/extensions/markdown/Link/PlaceholderWidget/commands.d.ts +1 -1
- package/build/cjs/extensions/markdown/Link/PlaceholderWidget/commands.js +7 -0
- package/build/cjs/extensions/markdown/Link/PlaceholderWidget/commands.js.map +1 -1
- package/build/cjs/extensions/markdown/Link/actions/linkEnhanceActions.js +3 -1
- package/build/cjs/extensions/markdown/Link/actions/linkEnhanceActions.js.map +1 -1
- package/build/cjs/extensions/yfm/Color/ColorSpecs/index.js +8 -3
- package/build/cjs/extensions/yfm/Color/ColorSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js +3 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/views.js +1 -0
- package/build/cjs/extensions/yfm/YfmTabs/views.js.map +1 -1
- package/build/cjs/markdown-it/color.d.ts +1 -1
- package/build/cjs/markdown-it/color.js +2 -2
- package/build/cjs/markdown-it/color.js.map +1 -1
- package/build/cjs/toolbar/FlexToolbar.js +1 -1
- package/build/cjs/toolbar/FlexToolbar.js.map +1 -1
- package/build/cjs/toolbar/ToolbarListButton.d.ts +4 -2
- package/build/cjs/toolbar/ToolbarListButton.js +3 -3
- package/build/cjs/toolbar/ToolbarListButton.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/useFilesGallery.d.ts +1 -1
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js +41 -38
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- package/build/esm/core/ExtensionsManager.js +1 -1
- package/build/esm/core/ExtensionsManager.js.map +1 -1
- package/build/esm/core/markdown/MarkdownSerializer.d.ts +1 -0
- package/build/esm/core/markdown/MarkdownSerializer.js +8 -2
- package/build/esm/core/markdown/MarkdownSerializer.js.map +1 -1
- package/build/esm/extensions/behavior/SelectionContext/index.d.ts +6 -0
- package/build/esm/extensions/behavior/SelectionContext/index.js +8 -2
- package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/esm/extensions/markdown/Link/PlaceholderWidget/commands.d.ts +1 -1
- package/build/esm/extensions/markdown/Link/PlaceholderWidget/commands.js +7 -0
- package/build/esm/extensions/markdown/Link/PlaceholderWidget/commands.js.map +1 -1
- package/build/esm/extensions/markdown/Link/actions/linkEnhanceActions.js +3 -1
- package/build/esm/extensions/markdown/Link/actions/linkEnhanceActions.js.map +1 -1
- package/build/esm/extensions/yfm/Color/ColorSpecs/index.js +8 -3
- package/build/esm/extensions/yfm/Color/ColorSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js +3 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTabs/views.js +1 -0
- package/build/esm/extensions/yfm/YfmTabs/views.js.map +1 -1
- package/build/esm/markdown-it/color.d.ts +1 -1
- package/build/esm/markdown-it/color.js +1 -1
- package/build/esm/markdown-it/color.js.map +1 -1
- package/build/esm/toolbar/FlexToolbar.js +1 -1
- package/build/esm/toolbar/FlexToolbar.js.map +1 -1
- package/build/esm/toolbar/ToolbarListButton.d.ts +4 -2
- package/build/esm/toolbar/ToolbarListButton.js +3 -3
- package/build/esm/toolbar/ToolbarListButton.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/useFilesGallery.d.ts +1 -1
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js +41 -38
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownSerializer.js","sourceRoot":"../../../../src","sources":["core/markdown/MarkdownSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// ::- A specification for serializing a ProseMirror document as\n// Markdown/CommonMark text.\n// prettier-ignore\nimport type {Mark, Node} from \"prosemirror-model\";\n\nimport type {MarkdownSerializerDynamicModifier} from './MarkdownSerializerDynamicModifier';\n\nexport interface SerializerNodeToken {\n (state: MarkdownSerializerState, node: Node, parent: Node, index: number): void;\n}\n\nexport interface SerializerMarkToken {\n open:\n | string\n | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);\n close:\n | string\n | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);\n mixable?: boolean;\n expelEnclosingWhitespace?: boolean;\n escape?: boolean;\n}\n\ninterface SerializerOptions {\n tightLists?: boolean;\n escapeExtraCharacters?: RegExp;\n hardBreakNodeName?: string;\n strict?: boolean;\n commonEscape?: RegExp;\n startOfLineEscape?: RegExp;\n escape?: boolean; // Added to fix types\n}\n\ninterface MarkMap {\n [markName: string]: SerializerMarkToken;\n}\n\ninterface NodeMap {\n [nodeName: string]: SerializerNodeToken;\n}\n\nexport class MarkdownSerializer {\n private readonly nodes: NodeMap;\n private readonly marks: MarkMap;\n private readonly dynamicModifier?: MarkdownSerializerDynamicModifier;\n\n // :: (Object<(state: MarkdownSerializerState, node: Node, parent: Node, index: number)>, Object)\n // Construct a serializer with the given configuration. The `nodes`\n // object should map node names in a given schema to function that\n // take a serializer state and such a node, and serialize the node.\n //\n // The `marks` object should hold objects with `open` and `close`\n // properties, which hold the strings that should appear before and\n // after a piece of text marked that way, either directly or as a\n // function that takes a serializer state and a mark, and returns a\n // string. `open` and `close` can also be functions, which will be\n // called as\n //\n // (state: MarkdownSerializerState, mark: Mark,\n // parent: Fragment, index: number) → string\n //\n // Where `parent` and `index` allow you to inspect the mark's\n // context to see which nodes it applies to.\n //\n // Mark information objects can also have a `mixable` property\n // which, when `true`, indicates that the order in which the mark's\n // opening and closing syntax appears relative to other mixable\n // marks can be varied. (For example, you can say `**a *b***` and\n // `*a **b***`, but not `` `a *b*` ``.)\n //\n // To disable character escaping in a mark, you can give it an\n // `escape` property of `false`. Such a mark has to have the highest\n // precedence (must always be the innermost mark).\n //\n // The `expelEnclosingWhitespace` mark property causes the\n // serializer to move enclosing whitespace from inside the marks to\n // outside the marks. This is necessary for emphasis marks as\n // CommonMark does not permit enclosing whitespace inside emphasis\n // marks, see: http://spec.commonmark.org/0.26/#example-330\n constructor(\n nodes: NodeMap,\n marks: MarkMap,\n dynamicModifier?: MarkdownSerializerDynamicModifier,\n ) {\n // :: Object<(MarkdownSerializerState, Node)> The node serializer\n // functions for this serializer.\n this.nodes = nodes;\n // :: Object The mark serializer info.\n this.marks = marks;\n\n this.dynamicModifier = dynamicModifier;\n }\n\n // :: (Node, ?Object) → string\n // Serialize the content of the given node to\n // [CommonMark](http://commonmark.org/).\n serialize(content: Node, options: Partial<SerializerOptions> = {}): string {\n const state = new MarkdownSerializerState(\n this.nodes,\n this.marks,\n options,\n this.dynamicModifier,\n );\n state.renderContent(content);\n return state.out;\n }\n\n // for tests (implements SerializerTests interface)\n containsNode(nodeName: string): boolean {\n return nodeName in this.nodes;\n }\n\n // for tests (implements SerializerTests interface)\n containsMark(markName: string): boolean {\n return markName in this.marks;\n }\n}\n\n// ::- This is an object used to track state and expose\n// methods related to markdown serialization. Instances are passed to\n// node and mark serialization methods (see `toMarkdown`).\n// prettier-ignore\nexport class MarkdownSerializerState {\n out: string;\n inTightList: boolean;\n noAutoBlank: boolean;\n isAutolink: boolean | undefined;\n escapeWhitespace: boolean;\n\n private readonly nodes: NodeMap;\n private readonly marks: MarkMap;\n private readonly options: SerializerOptions;\n private delim: string;\n private closed: Node | false;\n private readonly dynamicModifier?: MarkdownSerializerDynamicModifier;\n\n constructor(nodes: NodeMap, marks: MarkMap, options: Partial<SerializerOptions> = {}, dynamicModifier?: MarkdownSerializerDynamicModifier) {\n this.nodes = nodes;\n this.marks = marks;\n this.delim = this.out = '';\n this.closed = false;\n this.inTightList = false;\n this.noAutoBlank = false;\n this.isAutolink = undefined;\n this.escapeWhitespace = false;\n // :: Object\n // The options passed to the serializer.\n // tightLists:: ?bool\n // Whether to render lists in a tight style. This can be overridden\n // on a node level by specifying a tight attribute on the node.\n // Defaults to false.\n this.options = options || {};\n this.dynamicModifier = dynamicModifier;\n if (typeof this.options.tightLists === 'undefined') { this.options.tightLists = false }\n }\n\n setNoAutoBlank() {\n this.noAutoBlank = true;\n }\n\n unsetNoAutoBlank() {\n this.noAutoBlank = false;\n }\n\n flushClose(size?: number | null) {\n if (this.closed) {\n if (!this.atBlank() && !this.noAutoBlank) this.out += '\\n';\n if (size === null || size === undefined) size = 2;\n if (size > 1) {\n let delimMin = this.delim;\n const trim = /\\s+$/.exec(delimMin);\n if (trim) delimMin = delimMin.slice(0, delimMin.length - trim[0].length);\n\n if (!this.noAutoBlank) {\n for (let i = 1; i < size; i++) { this.out += delimMin + '\\n' }\n }\n }\n this.closed = false;\n }\n }\n\n // :: (string, ?string, Node, ())\n // Render a block, prefixing each line with `delim`, and the first\n // line in `firstDelim`. `node` should be the node that is closed at\n // the end of the block, and `f` is a function that renders the\n // content of the block.\n wrapBlock(delim: string, firstDelim: string | null, node: Node, f: () => void) {\n const old = this.delim;\n this.write(firstDelim || delim);\n this.delim += delim;\n f();\n this.delim = old;\n this.closeBlock(node);\n }\n\n atBlank(): boolean {\n return /(^|\\n)$/.test(this.out);\n }\n\n // :: ()\n // Ensure the current content ends with a newline.\n ensureNewLine() {\n if (!this.atBlank()) this.out += '\\n';\n }\n\n // :: (?string)\n // Prepare the state for writing output (closing closed paragraphs,\n // adding delimiters, and so on), and then optionally add content\n // (unescaped) to the output.\n write(content?: string | null): void {\n this.flushClose();\n if (this.delim && this.atBlank()) { this.out += this.delim }\n if (content) this.out += content;\n }\n\n // :: (Node)\n // Close the block for the given node.\n closeBlock(node?: Node) {\n this.closed = node ?? false;\n }\n\n // :: (string, ?bool)\n // Add the given text to the document. When escape is not `false`,\n // it will be escaped.\n text(text: string, escape?: boolean) {\n const lines = text.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const startOfLine = this.atBlank() || this.closed;\n this.write();\n let text = lines[i];\n if (escape !== false && this.options.escape !== false) text = this.esc(text, startOfLine as any)\n if (this.escapeWhitespace) text = this.escWhitespace(text);\n this.out += text\n if (i != lines.length - 1) this.out += '\\n';\n }\n }\n\n // :: (Node)\n // Render the given node as a block.\n render(node: Node, parent: Node, index: number) {\n if (typeof parent === 'number') {\n throw new Error('!');\n }\n if (!this.nodes[node.type.name]) {\n throw new Error('Token type `' + node.type.name + '` not supported by Markdown renderer');\n }\n\n const callback = this.nodes[node.type.name];\n if (this.dynamicModifier) {\n this.dynamicModifier.processNode(this, node, parent, index, callback);\n } else {\n callback(this, node, parent, index);\n }\n }\n\n // :: (Node)\n // Render the contents of `parent` as block nodes.\n renderContent(parent: Node) {\n parent.forEach((node, _, i) => this.render(node, parent, i));\n }\n\n // :: (Node)\n // Render the contents of `parent` as inline content.\n renderInline(parent: Node) {\n const active: Mark[] = []; let\n trailing = '';\n const progress = (node: Node | null, _: any, index: number) => {\n let marks = node ? node.marks : [];\n\n // Remove marks from breaks (hard_break or soft_break) that are the edge node inside\n // that mark to prevent parser edge cases with new lines just\n // before closing or after opening marks.\n if (node && node.type.spec.isBreak) {\n marks = marks.filter((m: any) => {\n if (index === 0) return false;\n if (index + 1 == parent.childCount) return false;\n const prev = parent.child(index - 1);\n const next = parent.child(index + 1);\n return (\n (m.isInSet(prev.marks) && (!prev.isText || /\\S/.test(prev.text ?? ''))) &&\n (m.isInSet(next.marks) && (!next.isText || /\\S/.test(next.text ?? '')))\n );\n });\n }\n\n let leading = trailing;\n trailing = '';\n // If whitespace has to be expelled from the node, adjust\n // leading and trailing accordingly.\n if (node && node.isText && marks.some((mark: any) => {\n const info = this.marks[mark.type.name];\n return info && info.expelEnclosingWhitespace;\n })) {\n const [_, lead, inner, trail] = /^(\\s*)(.*?)(\\s*)$/m.exec(node.text ?? '')!;\n leading += lead;\n trailing = trail;\n if (lead || trail) {\n node = inner ? (node as any).withText(inner) : null;\n if (!node) marks = active;\n }\n }\n\n const inner = marks.length && marks[marks.length - 1];\n const noEsc = inner && this.marks[inner.type.name].escape === false;\n const len = marks.length - (noEsc ? 1 : 0);\n\n // Try to reorder 'mixable' marks, such as em and strong, which\n // in Markdown may be opened and closed in different order, so\n // that order of the marks for the token matches the order in\n // active.\n // eslint-disable-next-line no-labels\n outer: for (let i = 0; i < len; i++) {\n const mark = marks[i];\n if (!this.marks[mark.type.name].mixable) break;\n for (let j = 0; j < active.length; j++) {\n const other = active[j];\n if (!this.marks[other.type.name].mixable) break;\n if (mark.eq(other)) {\n if (i > j) { marks = marks.slice(0, j).concat(mark).concat(marks.slice(j, i)).concat(marks.slice(i + 1, len)) } else if (j > i) { marks = marks.slice(0, i).concat(marks.slice(i + 1, j)).concat(mark).concat(marks.slice(j, len)) }\n // eslint-disable-next-line no-labels\n continue outer;\n }\n }\n }\n\n // Find the prefix of the mark set that didn't change\n let keep = 0;\n while (keep < Math.min(active.length, len) && marks[keep].eq(active[keep])) ++keep;\n\n // Close the marks that need to be closed\n while (keep < active.length)\n this.text(this.markString(active.pop()!, false, parent, index), false)\n\n // Output any previously expelled trailing whitespace outside the marks\n if (leading) this.text(leading)\n\n // Open the marks that need to be opened\n if (node) {\n while (active.length < len) {\n const add = marks[active.length];\n active.push(add);\n this.text(this.markString(add, true, parent, index), false);\n }\n\n // Render the node. Special case code marks, since their content\n // may not be escaped.\n if (noEsc && node.isText) {\n this.text(this.markString(inner, true, parent, index) + node.text +\n this.markString(inner, false, parent, index + 1), false);\n } else { this.render(node, parent, index) }\n }\n };\n parent.forEach(progress);\n progress(null, null, parent.childCount);\n }\n\n // :: (Node, string, (number) → string)\n // Render a node's content as a list. `delim` should be the extra\n // indentation added to all lines except the first in an item,\n // `firstDelim` is a function going from an item index to a\n // delimiter for the first line of the item.\n renderList(node: Node, delim: string, firstDelim: (index: number, firstDelimNode: Node) => string): void {\n if (this.closed && this.closed.type == node.type) { this.flushClose(3) } else if (this.inTightList) { this.flushClose(1) }\n\n const isTight = typeof node.attrs.tight !== 'undefined' ? node.attrs.tight : this.options.tightLists;\n const prevTight = this.inTightList;\n this.inTightList = isTight;\n node.forEach((child: any, _: any, i: any) => {\n if (i && isTight) this.flushClose(1);\n this.wrapBlock(delim, firstDelim(i, child), node, () => this.render(child, node, i))\n });\n this.inTightList = prevTight;\n }\n\n // :: (string, ?bool) → string\n // Escape the given string so that it can safely appear in Markdown\n // content. If `startOfLine` is true, also escape characters that\n // have special meaning only at the start of the line.\n esc(str: string, startOfLine = false) {\n // eslint-disable-next-line no-useless-escape\n const escRegexp = this.options?.commonEscape || /[`\\^+*\\\\\\|~\\[\\]\\{\\}<>\\$_]/g;\n const startOfLineEscRegexp = this.options?.startOfLineEscape || /^[:#\\-*+>]/;\n\n str = str.replace(escRegexp, '\\\\$&');\n if (startOfLine) str = str.replace(startOfLineEscRegexp, '\\\\$&').replace(/^(\\s*\\d+)\\./, '$1\\\\.');\n return str;\n }\n\n escWhitespace(str: string): string {\n return str.replace(/ /g, '\\\\ ');\n }\n\n /// @internal\n quote(str: string): string {\n const wrap = str.indexOf('\"') == -1 ? '\"\"' : str.indexOf(\"'\") == -1 ? \"''\" : '()';\n return wrap[0] + str + wrap[1];\n }\n\n // :: (string, number) → string\n // Repeat the given string `n` times.\n repeat(str: string, n: number) {\n let out = '';\n for (let i = 0; i < n; i++) out += str;\n return out;\n }\n\n // :: (Mark, bool, string?) → string\n // Get the markdown string for a given opening or closing mark.\n markString(mark: Mark, open: boolean, parent: Node, index: number): string {\n const info = this.marks[mark.type.name];\n const value = open ? info.open : info.close;\n return typeof value === 'string' ? value : value(this, mark, parent, index);\n }\n\n // :: (string) → { leading: ?string, trailing: ?string }\n // Get leading and trailing whitespace from a string. Values of\n // leading or trailing property of the return object will be undefined\n // if there is no match.\n getEnclosingWhitespace(text: string) {\n return {\n leading: (text.match(/^(\\s+)/) || [])[0],\n trailing: (text.match(/(\\s+)$/) || [])[0],\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MarkdownSerializer.js","sourceRoot":"../../../../src","sources":["core/markdown/MarkdownSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// ::- A specification for serializing a ProseMirror document as\n// Markdown/CommonMark text.\n// prettier-ignore\nimport type {Mark, Node} from \"prosemirror-model\";\n\nimport type {MarkdownSerializerDynamicModifier} from './MarkdownSerializerDynamicModifier';\n\nexport interface SerializerNodeToken {\n (state: MarkdownSerializerState, node: Node, parent: Node, index: number): void;\n}\n\nexport interface SerializerMarkToken {\n open:\n | string\n | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);\n close:\n | string\n | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);\n mixable?: boolean;\n expelEnclosingWhitespace?: boolean;\n escape?: boolean;\n}\n\ninterface SerializerOptions {\n tightLists?: boolean;\n escapeExtraCharacters?: RegExp;\n hardBreakNodeName?: string;\n strict?: boolean;\n commonEscape?: RegExp;\n startOfLineEscape?: RegExp;\n escape?: boolean; // Added to fix types\n}\n\ninterface MarkMap {\n [markName: string]: SerializerMarkToken;\n}\n\ninterface NodeMap {\n [nodeName: string]: SerializerNodeToken;\n}\n\nexport class MarkdownSerializer {\n private readonly nodes: NodeMap;\n private readonly marks: MarkMap;\n private readonly dynamicModifier?: MarkdownSerializerDynamicModifier;\n\n // :: (Object<(state: MarkdownSerializerState, node: Node, parent: Node, index: number)>, Object)\n // Construct a serializer with the given configuration. The `nodes`\n // object should map node names in a given schema to function that\n // take a serializer state and such a node, and serialize the node.\n //\n // The `marks` object should hold objects with `open` and `close`\n // properties, which hold the strings that should appear before and\n // after a piece of text marked that way, either directly or as a\n // function that takes a serializer state and a mark, and returns a\n // string. `open` and `close` can also be functions, which will be\n // called as\n //\n // (state: MarkdownSerializerState, mark: Mark,\n // parent: Fragment, index: number) → string\n //\n // Where `parent` and `index` allow you to inspect the mark's\n // context to see which nodes it applies to.\n //\n // Mark information objects can also have a `mixable` property\n // which, when `true`, indicates that the order in which the mark's\n // opening and closing syntax appears relative to other mixable\n // marks can be varied. (For example, you can say `**a *b***` and\n // `*a **b***`, but not `` `a *b*` ``.)\n //\n // To disable character escaping in a mark, you can give it an\n // `escape` property of `false`. Such a mark has to have the highest\n // precedence (must always be the innermost mark).\n //\n // The `expelEnclosingWhitespace` mark property causes the\n // serializer to move enclosing whitespace from inside the marks to\n // outside the marks. This is necessary for emphasis marks as\n // CommonMark does not permit enclosing whitespace inside emphasis\n // marks, see: http://spec.commonmark.org/0.26/#example-330\n constructor(\n nodes: NodeMap,\n marks: MarkMap,\n dynamicModifier?: MarkdownSerializerDynamicModifier,\n ) {\n // :: Object<(MarkdownSerializerState, Node)> The node serializer\n // functions for this serializer.\n this.nodes = nodes;\n // :: Object The mark serializer info.\n this.marks = marks;\n\n this.dynamicModifier = dynamicModifier;\n }\n\n // :: (Node, ?Object) → string\n // Serialize the content of the given node to\n // [CommonMark](http://commonmark.org/).\n serialize(content: Node, options: Partial<SerializerOptions> = {}): string {\n const state = new MarkdownSerializerState(\n this.nodes,\n this.marks,\n options,\n this.dynamicModifier,\n );\n state.renderContent(content);\n return state.out;\n }\n\n // for tests (implements SerializerTests interface)\n containsNode(nodeName: string): boolean {\n return nodeName in this.nodes;\n }\n\n // for tests (implements SerializerTests interface)\n containsMark(markName: string): boolean {\n return markName in this.marks;\n }\n}\n\n// ::- This is an object used to track state and expose\n// methods related to markdown serialization. Instances are passed to\n// node and mark serialization methods (see `toMarkdown`).\n// prettier-ignore\nexport class MarkdownSerializerState {\n out: string;\n inTightList: boolean;\n noAutoBlank: boolean;\n isAutolink: boolean | undefined;\n escapeWhitespace: boolean;\n escapeCharacters?: string[];\n\n private readonly nodes: NodeMap;\n private readonly marks: MarkMap;\n private readonly options: SerializerOptions;\n private delim: string;\n private closed: Node | false;\n private readonly dynamicModifier?: MarkdownSerializerDynamicModifier;\n\n constructor(nodes: NodeMap, marks: MarkMap, options: Partial<SerializerOptions> = {}, dynamicModifier?: MarkdownSerializerDynamicModifier) {\n this.nodes = nodes;\n this.marks = marks;\n this.delim = this.out = '';\n this.closed = false;\n this.inTightList = false;\n this.noAutoBlank = false;\n this.isAutolink = undefined;\n this.escapeWhitespace = false;\n // :: Object\n // The options passed to the serializer.\n // tightLists:: ?bool\n // Whether to render lists in a tight style. This can be overridden\n // on a node level by specifying a tight attribute on the node.\n // Defaults to false.\n this.options = options || {};\n this.dynamicModifier = dynamicModifier;\n if (typeof this.options.tightLists === 'undefined') { this.options.tightLists = false }\n }\n\n setNoAutoBlank() {\n this.noAutoBlank = true;\n }\n\n unsetNoAutoBlank() {\n this.noAutoBlank = false;\n }\n\n flushClose(size?: number | null) {\n if (this.closed) {\n if (!this.atBlank() && !this.noAutoBlank) this.out += '\\n';\n if (size === null || size === undefined) size = 2;\n if (size > 1) {\n let delimMin = this.delim;\n const trim = /\\s+$/.exec(delimMin);\n if (trim) delimMin = delimMin.slice(0, delimMin.length - trim[0].length);\n\n if (!this.noAutoBlank) {\n for (let i = 1; i < size; i++) { this.out += delimMin + '\\n' }\n }\n }\n this.closed = false;\n }\n }\n\n // :: (string, ?string, Node, ())\n // Render a block, prefixing each line with `delim`, and the first\n // line in `firstDelim`. `node` should be the node that is closed at\n // the end of the block, and `f` is a function that renders the\n // content of the block.\n wrapBlock(delim: string, firstDelim: string | null, node: Node, f: () => void) {\n const old = this.delim;\n this.write(firstDelim || delim);\n this.delim += delim;\n f();\n this.delim = old;\n this.closeBlock(node);\n }\n\n atBlank(): boolean {\n return /(^|\\n)$/.test(this.out);\n }\n\n // :: ()\n // Ensure the current content ends with a newline.\n ensureNewLine() {\n if (!this.atBlank()) this.out += '\\n';\n }\n\n // :: (?string)\n // Prepare the state for writing output (closing closed paragraphs,\n // adding delimiters, and so on), and then optionally add content\n // (unescaped) to the output.\n write(content?: string | null): void {\n this.flushClose();\n if (this.delim && this.atBlank()) { this.out += this.delim }\n if (content) this.out += content;\n }\n\n // :: (Node)\n // Close the block for the given node.\n closeBlock(node?: Node) {\n this.closed = node ?? false;\n }\n\n // :: (string, ?bool)\n // Add the given text to the document. When escape is not `false`,\n // it will be escaped.\n text(text: string, escape?: boolean) {\n const lines = text.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const startOfLine = this.atBlank() || this.closed;\n this.write();\n let text = lines[i];\n if (escape !== false && this.options.escape !== false) text = this.esc(text, startOfLine as any)\n if (this.escapeWhitespace) text = this.escWhitespace(text);\n this.out += text\n if (i != lines.length - 1) this.out += '\\n';\n }\n }\n\n // :: (Node)\n // Render the given node as a block.\n render(node: Node, parent: Node, index: number) {\n if (typeof parent === 'number') {\n throw new Error('!');\n }\n if (!this.nodes[node.type.name]) {\n throw new Error('Token type `' + node.type.name + '` not supported by Markdown renderer');\n }\n\n const callback = this.nodes[node.type.name];\n if (this.dynamicModifier) {\n this.dynamicModifier.processNode(this, node, parent, index, callback);\n } else {\n callback(this, node, parent, index);\n }\n }\n\n // :: (Node)\n // Render the contents of `parent` as block nodes.\n renderContent(parent: Node) {\n parent.forEach((node, _, i) => this.render(node, parent, i));\n }\n\n // :: (Node)\n // Render the contents of `parent` as inline content.\n renderInline(parent: Node) {\n const active: Mark[] = []; let\n trailing = '';\n const progress = (node: Node | null, _: any, index: number) => {\n let marks = node ? node.marks : [];\n\n // Remove marks from breaks (hard_break or soft_break) that are the edge node inside\n // that mark to prevent parser edge cases with new lines just\n // before closing or after opening marks.\n if (node && node.type.spec.isBreak) {\n marks = marks.filter((m: any) => {\n if (index === 0) return false;\n if (index + 1 == parent.childCount) return false;\n const prev = parent.child(index - 1);\n const next = parent.child(index + 1);\n return (\n (m.isInSet(prev.marks) && (!prev.isText || /\\S/.test(prev.text ?? ''))) &&\n (m.isInSet(next.marks) && (!next.isText || /\\S/.test(next.text ?? '')))\n );\n });\n }\n\n let leading = trailing;\n trailing = '';\n // If whitespace has to be expelled from the node, adjust\n // leading and trailing accordingly.\n if (node && node.isText && marks.some((mark: any) => {\n const info = this.marks[mark.type.name];\n return info && info.expelEnclosingWhitespace;\n })) {\n const [_, lead, inner, trail] = /^(\\s*)(.*?)(\\s*)$/m.exec(node.text ?? '')!;\n leading += lead;\n trailing = trail;\n if (lead || trail) {\n node = inner ? (node as any).withText(inner) : null;\n if (!node) marks = active;\n }\n }\n\n const inner = marks.length && marks[marks.length - 1];\n const noEsc = inner && this.marks[inner.type.name].escape === false;\n const len = marks.length - (noEsc ? 1 : 0);\n\n // Try to reorder 'mixable' marks, such as em and strong, which\n // in Markdown may be opened and closed in different order, so\n // that order of the marks for the token matches the order in\n // active.\n // eslint-disable-next-line no-labels\n outer: for (let i = 0; i < len; i++) {\n const mark = marks[i];\n if (!this.marks[mark.type.name].mixable) break;\n for (let j = 0; j < active.length; j++) {\n const other = active[j];\n if (!this.marks[other.type.name].mixable) break;\n if (mark.eq(other)) {\n if (i > j) { marks = marks.slice(0, j).concat(mark).concat(marks.slice(j, i)).concat(marks.slice(i + 1, len)) } else if (j > i) { marks = marks.slice(0, i).concat(marks.slice(i + 1, j)).concat(mark).concat(marks.slice(j, len)) }\n // eslint-disable-next-line no-labels\n continue outer;\n }\n }\n }\n\n // Find the prefix of the mark set that didn't change\n let keep = 0;\n while (keep < Math.min(active.length, len) && marks[keep].eq(active[keep])) ++keep;\n\n // Close the marks that need to be closed\n while (keep < active.length) {\n this.text(this.markString(active.pop()!, false, parent, index), false)\n }\n\n // Output any previously expelled trailing whitespace outside the marks\n if (leading) this.text(leading)\n\n // Open the marks that need to be opened\n if (node) {\n while (active.length < len) {\n const add = marks[active.length];\n active.push(add);\n this.text(this.markString(add, true, parent, index), false);\n }\n\n // Render the node. Special case code marks, since their content\n // may not be escaped.\n if (noEsc && node.isText) {\n this.text(this.markString(inner, true, parent, index) + node.text +\n this.markString(inner, false, parent, index + 1), false);\n } else { this.render(node, parent, index) }\n }\n };\n parent.forEach(progress);\n progress(null, null, parent.childCount);\n }\n\n // :: (Node, string, (number) → string)\n // Render a node's content as a list. `delim` should be the extra\n // indentation added to all lines except the first in an item,\n // `firstDelim` is a function going from an item index to a\n // delimiter for the first line of the item.\n renderList(node: Node, delim: string, firstDelim: (index: number, firstDelimNode: Node) => string): void {\n if (this.closed && this.closed.type == node.type) { this.flushClose(3) } else if (this.inTightList) { this.flushClose(1) }\n\n const isTight = typeof node.attrs.tight !== 'undefined' ? node.attrs.tight : this.options.tightLists;\n const prevTight = this.inTightList;\n this.inTightList = isTight;\n node.forEach((child: any, _: any, i: any) => {\n if (i && isTight) this.flushClose(1);\n this.wrapBlock(delim, firstDelim(i, child), node, () => this.render(child, node, i))\n });\n this.inTightList = prevTight;\n }\n\n // :: (string, ?bool) → string\n // Escape the given string so that it can safely appear in Markdown\n // content. If `startOfLine` is true, also escape characters that\n // have special meaning only at the start of the line.\n esc(str: string, startOfLine = false) {\n // eslint-disable-next-line no-useless-escape\n const defaultEsc = /[`\\^+*\\\\\\|~\\[\\]\\{\\}<>\\$_]/g;\n const extraChars = this.escapeCharacters?.length ? this.escapeCharacters.map(c => '\\\\' + c).join('') : '';\n const escRegexp = this.options?.commonEscape ||\n // Compose the escape regexp from default, options, and extra characters\n new RegExp(defaultEsc.source + (extraChars ? `|[${extraChars}]` : ''), 'g');\n\n const startOfLineEscRegexp = this.options?.startOfLineEscape || /^[:#\\-*+>]/;\n\n str = str.replace(escRegexp, '\\\\$&');\n if (startOfLine) str = str.replace(startOfLineEscRegexp, '\\\\$&').replace(/^(\\s*\\d+)\\./, '$1\\\\.');\n return str;\n }\n\n escWhitespace(str: string): string {\n return str.replace(/ /g, '\\\\ ');\n }\n\n /// @internal\n quote(str: string): string {\n const wrap = str.indexOf('\"') == -1 ? '\"\"' : str.indexOf(\"'\") == -1 ? \"''\" : '()';\n return wrap[0] + str + wrap[1];\n }\n\n // :: (string, number) → string\n // Repeat the given string `n` times.\n repeat(str: string, n: number) {\n let out = '';\n for (let i = 0; i < n; i++) out += str;\n return out;\n }\n\n // :: (Mark, bool, string?) → string\n // Get the markdown string for a given opening or closing mark.\n markString(mark: Mark, open: boolean, parent: Node, index: number): string {\n const info = this.marks[mark.type.name];\n const value = open ? info.open : info.close;\n return typeof value === 'string' ? value : value(this, mark, parent, index);\n }\n\n // :: (string) → { leading: ?string, trailing: ?string }\n // Get leading and trailing whitespace from a string. Values of\n // leading or trailing property of the return object will be undefined\n // if there is no match.\n getEnclosingWhitespace(text: string) {\n return {\n leading: (text.match(/^(\\s+)/) || [])[0],\n trailing: (text.match(/(\\s+)$/) || [])[0],\n };\n }\n}\n"]}
|
|
@@ -17,3 +17,9 @@ export type SelectionContextOptions = {
|
|
|
17
17
|
flip?: boolean;
|
|
18
18
|
};
|
|
19
19
|
export declare const SelectionContext: ExtensionAuto<SelectionContextOptions>;
|
|
20
|
+
declare module 'prosemirror-model' {
|
|
21
|
+
interface NodeSpec {
|
|
22
|
+
/** Set false to disable the selection-context menu within this node */
|
|
23
|
+
selectionContext?: boolean | undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { keydownHandler } from 'prosemirror-keymap';
|
|
2
2
|
import { AllSelection, Plugin, TextSelection, } from 'prosemirror-state';
|
|
3
|
+
// @ts-ignore // TODO: fix cjs build
|
|
4
|
+
import { hasParentNode } from 'prosemirror-utils';
|
|
3
5
|
import { isCodeBlock } from "../../../utils/nodes.js";
|
|
4
6
|
import { TooltipView } from "./tooltip.js";
|
|
5
7
|
export const SelectionContext = (builder, opts) => {
|
|
@@ -81,8 +83,12 @@ class SelectionTooltip {
|
|
|
81
83
|
this.tooltip.hide(view);
|
|
82
84
|
return;
|
|
83
85
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
if (
|
|
87
|
+
// Hide tooltip when one side of selection is inside a codeblock
|
|
88
|
+
isCodeBlock(selection.$from.parent) ||
|
|
89
|
+
isCodeBlock(selection.$to.parent) ||
|
|
90
|
+
// or when selection is inside node where context menu is disabled
|
|
91
|
+
hasParentNode((node) => node.type.spec.selectionContext === false)(selection)) {
|
|
86
92
|
this.tooltip.hide(view);
|
|
87
93
|
return;
|
|
88
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/SelectionContext/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/SelectionContext/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAElD,OAAO,EACH,YAAY,EAEZ,MAAM,EAEN,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAC3B,oCAAoC;AACpC,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAC,WAAW,EAAC,gCAA6B;AAEjD,OAAO,EAAqB,WAAW,EAAC,qBAAkB;AAuB1D,MAAM,CAAC,MAAM,gBAAgB,GAA2C,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACtF,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,SAAS,CACb,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACzF,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,gBAAgB;IACV,SAAS,GAAG,KAAK,CAAC;IAElB,OAAO,CAAc;IACrB,cAAc,GAAyC,IAAI,CAAC;IAE5D,eAAe,GAAG,KAAK,CAAC;IAEhC,YACI,OAAsB,EACtB,UAAyB,EACzB,MAAuB,EACvB,OAAgC;QAEhC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,KAAK;QACL,OAAO;YACH,qBAAqB;YACrB,aAAa,EAAE,cAAc,CAAC;gBAC1B,yCAAyC;gBACzC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;wBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;wBACzB,OAAO,IAAI,CAAC;oBAChB,CAAC;oBACD,OAAO,KAAK,CAAC;gBACjB,CAAC;aACJ,CAAC;YACF,eAAe,EAAE;gBACb,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChB,MAAM,UAAU,GAAc;wBAC1B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;wBACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;qBAClC,CAAC;oBACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAExB,MAAM,SAAS,GAAG,GAAG,EAAE;wBACnB,IAAI,IAAI,CAAC,SAAS;4BAAE,OAAO;wBAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAClC,CAAC,CAAC;oBAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBAClE,CAAC;aACJ;SACJ,CAAC;IACN,CAAC;IAED,IAAI,CAAC,IAAgB;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,IAAgB,EAAE,SAAqB;QAClD,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QAEjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,sDAAsD;QACtD,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACX,CAAC;QAED,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC;QACrB,4DAA4D;QAC5D,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;YACnF,OAAO;QAEX,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAC;QAC1B,6CAA6C;QAC7C,IACI,SAAS,CAAC,KAAK;YACf,CAAC,CAAC,SAAS,YAAY,aAAa,IAAI,SAAS,YAAY,YAAY,CAAC,EAC5E,CAAC;YACC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACX,CAAC;QAED;QACI,gEAAgE;QAChE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YACjC,kEAAkE;YAClE,aAAa,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,SAAS,CAAC,EACrF,CAAC;YACC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;YACpB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACpC,IAAI,MAAM,KAAK,YAAY;oBAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAEO,qBAAqB,CAAC,IAAgB;QAC1C,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,mDAAmD;YACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAEO,mBAAmB;QACvB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;IACL,CAAC;CACJ","sourcesContent":["import {keydownHandler} from 'prosemirror-keymap';\nimport type {Node} from 'prosemirror-model';\nimport {\n AllSelection,\n type EditorState,\n Plugin,\n type PluginSpec,\n TextSelection,\n} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {hasParentNode} from 'prosemirror-utils';\nimport type {EditorProps, EditorView} from 'prosemirror-view';\n\nimport type {ActionStorage, ExtensionAuto} from '../../../core';\nimport type {Logger2} from '../../../logger';\nimport {isCodeBlock} from '../../../utils/nodes';\n\nimport {type ContextConfig, TooltipView} from './tooltip';\n\nexport type {\n ContextConfig as SelectionContextConfig,\n ContextGroupItemData as SelectionContextItemData,\n} from './tooltip';\n\nexport type SelectionContextOptions = {\n config?: ContextConfig;\n /**\n * Placement of context popup\n *\n * @default 'bottom'\n */\n placement?: 'top' | 'bottom';\n /**\n * Prevents context popup from overflowing\n *\n * @default false\n */\n flip?: boolean;\n};\n\nexport const SelectionContext: ExtensionAuto<SelectionContextOptions> = (builder, opts) => {\n const {config} = opts;\n if (Array.isArray(config) && config.length > 0) {\n builder.addPlugin(\n ({actions}) => new Plugin(new SelectionTooltip(actions, config, builder.logger, opts)),\n );\n }\n};\n\ntype TinyState = Pick<EditorState, 'doc' | 'selection'>;\n\nclass SelectionTooltip implements PluginSpec<unknown> {\n private destroyed = false;\n\n private tooltip: TooltipView;\n private hideTimeoutRef: ReturnType<typeof setTimeout> | null = null;\n\n private _isMousePressed = false;\n\n constructor(\n actions: ActionStorage,\n menuConfig: ContextConfig,\n logger: Logger2.ILogger,\n options: SelectionContextOptions,\n ) {\n this.tooltip = new TooltipView(actions, menuConfig, logger, options);\n }\n\n get props(): EditorProps {\n return {\n // same as keymap({})\n handleKeyDown: keydownHandler({\n // hide context menu when Esc was pressed\n Escape: (_state, _dispatch, view) => {\n if (this.tooltip.isTooltipOpen) {\n this.tooltip.hide(view!);\n return true;\n }\n return false;\n },\n }),\n handleDOMEvents: {\n mousedown: (view) => {\n const startState: TinyState = {\n doc: view.state.doc,\n selection: view.state.selection,\n };\n this._isMousePressed = true;\n this.cancelTooltipHiding();\n this.tooltip.hide(view);\n\n const onMouseUp = () => {\n if (this.destroyed) return;\n this._isMousePressed = false;\n this.update(view, startState);\n };\n\n document.addEventListener('mouseup', onMouseUp, {once: true});\n },\n },\n };\n }\n\n view(view: EditorView) {\n this.update(view);\n return {\n update: this.update.bind(this),\n destroy: () => {\n this.destroyed = true;\n this.cancelTooltipHiding();\n this.tooltip.destroy();\n },\n };\n }\n\n private update(view: EditorView, prevState?: TinyState) {\n if (this._isMousePressed) return;\n\n this.cancelTooltipHiding();\n\n // Don't show tooltip if editor not mounted to the DOM\n // or when view is out of focus\n if (!view.dom.parentNode || !view.hasFocus()) {\n this.tooltip.hide(view);\n return;\n }\n\n const {state} = view;\n // Don't do anything if the document/selection didn't change\n if (prevState && prevState.doc.eq(state.doc) && prevState.selection.eq(state.selection))\n return;\n\n const {selection} = state;\n // Hide the tooltip if the selection is empty\n if (\n selection.empty ||\n !(selection instanceof TextSelection || selection instanceof AllSelection)\n ) {\n this.tooltip.hide(view);\n return;\n }\n\n if (\n // Hide tooltip when one side of selection is inside a codeblock\n isCodeBlock(selection.$from.parent) ||\n isCodeBlock(selection.$to.parent) ||\n // or when selection is inside node where context menu is disabled\n hasParentNode((node: Node) => node.type.spec.selectionContext === false)(selection)\n ) {\n this.tooltip.hide(view);\n return;\n }\n\n this.tooltip.show(view, {\n onOpenChange: (_open, _event, reason) => {\n if (reason !== 'escape-key') this.scheduleTooltipHiding(view);\n },\n });\n }\n\n private scheduleTooltipHiding(view: EditorView) {\n this.hideTimeoutRef = setTimeout(() => {\n // hide tooltip if view is out of focus after 30 ms\n if (!view.hasFocus()) {\n this.tooltip.hide(view);\n }\n }, 30);\n }\n\n private cancelTooltipHiding() {\n if (this.hideTimeoutRef !== null) {\n clearTimeout(this.hideTimeoutRef);\n this.hideTimeoutRef = null;\n }\n }\n}\n\ndeclare module 'prosemirror-model' {\n interface NodeSpec {\n /** Set false to disable the selection-context menu within this node */\n selectionContext?: boolean | undefined;\n }\n}\n"]}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import { toggleMark } from "../../../../pm/commands.js";
|
|
2
|
+
import { linkType } from "../LinkSpecs/index.js";
|
|
1
3
|
import { addPlaceholder } from "./descriptor.js";
|
|
2
4
|
export const addLinkPlaceholder = (deps) => (state, dispatch) => {
|
|
3
5
|
if (!state.selection.empty)
|
|
4
6
|
return false;
|
|
7
|
+
const markType = linkType(state.schema);
|
|
8
|
+
if (markType.isInSet(state.selection.$from.marks()))
|
|
9
|
+
return false;
|
|
10
|
+
if (!toggleMark(markType)(state))
|
|
11
|
+
return false;
|
|
5
12
|
dispatch?.(addPlaceholder(state.tr, deps).scrollIntoView());
|
|
6
13
|
return true;
|
|
7
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Link/PlaceholderWidget/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Link/PlaceholderWidget/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,mCAAqB;AAIxC,OAAO,EAAC,QAAQ,EAAC,8BAAqB;AAEtC,OAAO,EAAC,cAAc,EAAC,wBAAqB;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAC3B,CAAC,IAAmB,EAAW,EAAE,CACjC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import {toggleMark} from '#pm/commands';\nimport type {Command} from '#pm/state';\n\nimport type {ExtensionDeps} from '../../../../core';\nimport {linkType} from '../LinkSpecs';\n\nimport {addPlaceholder} from './descriptor';\n\nexport const addLinkPlaceholder =\n (deps: ExtensionDeps): Command =>\n (state, dispatch) => {\n if (!state.selection.empty) return false;\n\n const markType = linkType(state.schema);\n if (markType.isInSet(state.selection.$from.marks())) return false;\n if (!toggleMark(markType)(state)) return false;\n\n dispatch?.(addPlaceholder(state.tr, deps).scrollIntoView());\n return true;\n };\n"]}
|
|
@@ -20,12 +20,14 @@ export const addEmptyLink = (state, dispatch) => {
|
|
|
20
20
|
if ($from.parent !== $to.parent)
|
|
21
21
|
return false;
|
|
22
22
|
let tr = state.tr;
|
|
23
|
-
toggleMark(linkMarkType, {
|
|
23
|
+
const toggleResult = toggleMark(linkMarkType, {
|
|
24
24
|
[LinkAttr.Href]: '',
|
|
25
25
|
[LinkAttr.IsPlaceholder]: true,
|
|
26
26
|
})(state, (_tr) => {
|
|
27
27
|
tr = _tr;
|
|
28
28
|
});
|
|
29
|
+
if (!toggleResult)
|
|
30
|
+
return false;
|
|
29
31
|
tr.scrollIntoView();
|
|
30
32
|
if (selection instanceof NodeSelection) {
|
|
31
33
|
tr.setSelection(NodeSelection.create(tr.doc, $to.pos - 1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkEnhanceActions.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Link/actions/linkEnhanceActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAe,aAAa,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAC,eAAe,EAAC,mCAA0B;AAClD,OAAO,EAAC,YAAY,EAAC,mCAAgC;AACrD,OAAO,EAA0B,gBAAgB,EAAC,sCAAmC;AACrF,OAAO,EAAC,SAAS,EAAC,wCAA+B;AACjD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,8BAAqB;AAChD,OAAO,EAAC,kBAAkB,EAAC,yCAAsC;AACjE,OAAO,EAAC,UAAU,EAAC,uBAAoB;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAC,SAAS,EAAC,GAAG,SAAS,CAAC,KAAK,CAAC;IACpC,IACI,SAAS,CAAC,KAAK;QACf,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAEnE,OAAO,KAAK,CAAC;IACjB,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,SAAS,CAAC;IAC/B,sCAAsC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAClB,UAAU,CAAC,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"linkEnhanceActions.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Link/actions/linkEnhanceActions.ts"],"names":[],"mappings":"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","sourcesContent":["import {chainCommands, toggleMark} from 'prosemirror-commands';\nimport {type Command, NodeSelection, TextSelection} from 'prosemirror-state';\n\nimport type {ActionSpec, ExtensionDeps} from '../../../../core';\nimport {isNodeSelection} from '../../../../utils';\nimport {isMarkActive} from '../../../../utils/marks';\nimport {type ImageRendererState, imageRendererKey} from '../../../yfm/ImgSize/const';\nimport {imageType} from '../../Image/ImageSpecs';\nimport {LinkAttr, linkType} from '../LinkSpecs';\nimport {addLinkPlaceholder} from '../PlaceholderWidget/commands';\nimport {removeLink} from '../commands';\n\nexport const addEmptyLink: Command = (state, dispatch) => {\n const linkMarkType = linkType(state.schema);\n const {selection} = state;\n const {nodeAfter} = selection.$from;\n if (\n selection.empty ||\n (isNodeSelection(selection) && selection.node.type !== imageType(state.schema)) ||\n (!(nodeAfter?.isInline && nodeAfter?.isAtom) && !nodeAfter?.isText)\n )\n return false;\n const {$from, $to} = selection;\n // text selection inside one text node\n if ($from.parent !== $to.parent) return false;\n let tr = state.tr;\n const toggleResult = toggleMark(linkMarkType, {\n [LinkAttr.Href]: '',\n [LinkAttr.IsPlaceholder]: true,\n })(state, (_tr) => {\n tr = _tr;\n });\n if (!toggleResult) return false;\n tr.scrollIntoView();\n if (selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, $to.pos - 1));\n\n if (selection.node.type === imageType(state.schema)) {\n const meta: ImageRendererState = {linkAdded: true};\n tr.setMeta(imageRendererKey, meta);\n }\n } else {\n const selectedText = state.doc.textBetween($from.pos, $to.pos);\n const countOfWhitespacesAtEnd = selectedText.length - selectedText.trimEnd().length;\n tr.setSelection(TextSelection.create(tr.doc, $to.pos - countOfWhitespacesAtEnd - 1));\n }\n dispatch?.(tr);\n return true;\n};\n\nexport const addLinkCmd2 = (deps: ExtensionDeps): Command =>\n chainCommands(removeLink, addEmptyLink, addLinkPlaceholder(deps));\n\nexport const linkActionSpec2 = (deps: ExtensionDeps): ActionSpec => ({\n isActive: (state) => Boolean(isMarkActive(state, linkType(state.schema))),\n isEnable: addLinkCmd2(deps),\n run: addLinkCmd2(deps),\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import color from "../../../../markdown-it/color.js";
|
|
2
2
|
import { markTypeFactory } from "../../../../utils/schema.js";
|
|
3
3
|
import { colorClassName, colorMarkName, domColorAttr } from "./const.js";
|
|
4
4
|
export { colorMarkName } from "./const.js";
|
|
@@ -9,6 +9,7 @@ function getColorName(className) {
|
|
|
9
9
|
}
|
|
10
10
|
export const ColorSpecs = (builder, opts) => {
|
|
11
11
|
const { validateClassNameColorName, parseStyleColorValue } = opts;
|
|
12
|
+
const mdPlugin = (md) => md.use(color, { escape: true, defaultClassName: colorClassName });
|
|
12
13
|
builder
|
|
13
14
|
.configureMd((md) => md.use(mdPlugin, { defaultClassName: colorClassName, inline: false }))
|
|
14
15
|
.addMark(colorMarkName, () => ({
|
|
@@ -72,10 +73,14 @@ export const ColorSpecs = (builder, opts) => {
|
|
|
72
73
|
},
|
|
73
74
|
},
|
|
74
75
|
toMd: {
|
|
75
|
-
open: (
|
|
76
|
+
open: (state, mark) => {
|
|
77
|
+
state.escapeCharacters = ['(', ')'];
|
|
76
78
|
return `{${mark.attrs[colorMarkName]}}(`;
|
|
77
79
|
},
|
|
78
|
-
close:
|
|
80
|
+
close: (state) => {
|
|
81
|
+
state.escapeCharacters = undefined;
|
|
82
|
+
return `)`;
|
|
83
|
+
},
|
|
79
84
|
mixable: true,
|
|
80
85
|
expelEnclosingWhitespace: true,
|
|
81
86
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/Color/ColorSpecs/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/Color/ColorSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type MarkdownIt from 'markdown-it';\n\nimport color from 'src/markdown-it/color';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {markTypeFactory} from '../../../../utils/schema';\n\nimport {colorClassName, colorMarkName, domColorAttr} from './const';\n\nexport {colorMarkName} from './const';\nexport const colorType = markTypeFactory(colorMarkName);\n\nfunction getColorName(className: string) {\n const regexp = /^(yfm|md)-colorify--(\\w+)$/;\n return className.match(regexp)?.[2];\n}\n\nexport type ColorSpecsOptions = {\n validateClassNameColorName?: (colorName: string) => boolean;\n parseStyleColorValue?: (color: string) => string | null;\n};\n\nexport const ColorSpecs: ExtensionAuto<ColorSpecsOptions> = (builder, opts) => {\n const {validateClassNameColorName, parseStyleColorValue} = opts;\n const mdPlugin = (md: MarkdownIt) =>\n md.use(color, {escape: true, defaultClassName: colorClassName});\n\n builder\n .configureMd((md) => md.use(mdPlugin, {defaultClassName: colorClassName, inline: false}))\n .addMark(colorMarkName, () => ({\n spec: {\n attrs: {[colorMarkName]: {}},\n parseDOM: [\n {\n tag: `span`,\n preserveWhitespace: false,\n getAttrs(node) {\n if (typeof node === 'string') return false;\n\n for (const className of Array.from(node.classList)) {\n const color = getColorName(className);\n if (color && (validateClassNameColorName?.(color) ?? true)) {\n return {\n [colorMarkName]: color,\n };\n }\n }\n\n return false;\n },\n },\n {\n style: 'color',\n preserveWhitespace: false,\n getAttrs(node) {\n if (typeof node !== 'string') return false;\n\n const color = parseStyleColorValue?.(node);\n if (color) {\n return {\n [colorMarkName]: color,\n };\n }\n\n return false;\n },\n },\n ],\n toDOM(node) {\n const colorValue = node.attrs[colorMarkName];\n\n return [\n 'span',\n {\n class: [colorClassName, `${colorClassName}--${colorValue}`].join(' '),\n [domColorAttr]: colorValue,\n },\n 0,\n ];\n },\n },\n fromMd: {\n tokenSpec: {\n name: colorMarkName,\n type: 'mark',\n getAttrs(token) {\n return {\n [colorMarkName]: token.info,\n };\n },\n },\n },\n toMd: {\n open: (state, mark) => {\n state.escapeCharacters = ['(', ')'];\n return `{${mark.attrs[colorMarkName]}}(`;\n },\n close: (state) => {\n state.escapeCharacters = undefined;\n return `)`;\n },\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n }));\n};\n"]}
|
|
@@ -21,7 +21,7 @@ export const getSchemaSpecs = (opts, placeholder) => ({
|
|
|
21
21
|
group: 'block',
|
|
22
22
|
parseDOM: [{ tag: 'div.yfm-tab' }],
|
|
23
23
|
toDOM(node) {
|
|
24
|
-
return ['div', node.attrs, 0];
|
|
24
|
+
return ['div', { draggable: 'false', ...node.attrs }, 0];
|
|
25
25
|
},
|
|
26
26
|
placeholder: {
|
|
27
27
|
content: placeholder?.[TabsNode.Tab] ??
|
|
@@ -29,6 +29,7 @@ export const getSchemaSpecs = (opts, placeholder) => ({
|
|
|
29
29
|
DEFAULT_PLACEHOLDERS.TabTitle,
|
|
30
30
|
alwaysVisible: true,
|
|
31
31
|
},
|
|
32
|
+
selectionContext: false,
|
|
32
33
|
selectable: false,
|
|
33
34
|
allowSelection: false,
|
|
34
35
|
complex: 'leaf',
|
|
@@ -143,6 +144,7 @@ export const getSchemaSpecs = (opts, placeholder) => ({
|
|
|
143
144
|
content: placeholder?.[TabsNode.RadioTab] ?? DEFAULT_PLACEHOLDERS.RadioTabLabelTitle,
|
|
144
145
|
alwaysVisible: true,
|
|
145
146
|
},
|
|
147
|
+
selectionContext: false,
|
|
146
148
|
selectable: false,
|
|
147
149
|
allowSelection: false,
|
|
148
150
|
complex: 'leaf',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmTabs/YfmTabsSpecs/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAC,mBAAgB;AAEpF,MAAM,oBAAoB,GAAG;IACzB,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,aAAa;CACpC,CAAC;AASF,MAAM,CAAC,MAAM,cAAc,GAGO,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACZ,KAAK,EAAE;YACH,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACnC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACtC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACrC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC7C,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC7C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACzC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAChD,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC/C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;SACxD;QACD,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,aAAa,EAAC,CAAC;QAChC,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EACH,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC3B,IAAI,EAAE,cAAc;gBACpB,oBAAoB,CAAC,QAAQ;YACjC,aAAa,EAAE,IAAI;SACtB;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACjB,KAAK,EAAE;YACH,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACxC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC;YACjD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC1C,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;SACvD;QACD,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,mBAAmB,EAAC,CAAC;QACtC,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,IAAI;KAClB;IAED,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACb,KAAK,EAAE;YACH,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,UAAU,EAAC;YACxC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACnD,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;SACxD;QACD,OAAO,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,GAAG;QACrD,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,cAAc,EAAC,CAAC;QACjC,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACjB,KAAK,EAAE;YACH,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,cAAc,EAAC;YAChD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;SAC7C;QACD,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG;QAC3B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,kBAAkB,EAAC,CAAC;QACrC,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,OAAO;KACnB;IAED,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAClB,KAAK,EAAE;YACH,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,4BAA4B,EAAC;YAC1D,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACnD,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC;SACtD;QACD,OAAO,EAAE,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI;QACvD,KAAK,EAAE,OAAO;QACd,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,MAAM;KAClB;IACD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACjB,KAAK,EAAE;YACH,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC;YAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,0BAA0B,EAAC;YACvD,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACrC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC7C,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC7C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YACzC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAChD,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC;YAC/C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC;YACnD,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC;SACxD;QACD,OAAO,EAAE,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE;QAC9D,KAAK,EAAE,OAAO;QACd,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,OAAO;KACnB;IACD,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;QACtB,KAAK,EAAE;YACH,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC;YACpC,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC;YACxB,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC;SAC3B;QACD,KAAK,EAAE,OAAO;QACd,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;IACD,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;QACtB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO;QACd,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,kBAAkB;YACpF,aAAa,EAAE,IAAI;SACtB;QACD,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;CACJ,CAAC,CAAC","sourcesContent":["import type {NodeSpec} from 'prosemirror-model';\n\nimport type {PlaceholderOptions} from '../../../../utils/placeholder';\n\nimport {TabAttrs, TabPanelAttrs, TabsAttrs, TabsListAttrs, TabsNode} from './const';\n\nconst DEFAULT_PLACEHOLDERS = {\n TabTitle: 'Tab title',\n RadioTabLabelTitle: 'Radio title',\n};\n\nexport type YfmTabsSchemaOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n tabPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const getSchemaSpecs: (\n opts: YfmTabsSchemaOptions,\n placeholder?: PlaceholderOptions,\n) => Record<TabsNode, NodeSpec> = (opts, placeholder) => ({\n [TabsNode.Tab]: {\n attrs: {\n [TabAttrs.id]: {default: 'unknown'},\n [TabAttrs.class]: {default: 'yfm-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'unknown'},\n },\n marks: '',\n content: 'text*',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[TabsNode.Tab] ??\n opts?.tabPlaceholder ??\n DEFAULT_PLACEHOLDERS.TabTitle,\n alwaysVisible: true,\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [TabsNode.TabPanel]: {\n attrs: {\n [TabPanelAttrs.id]: {default: 'unknown'},\n [TabPanelAttrs.class]: {default: 'yfm-tab-panel'},\n [TabPanelAttrs.role]: {default: 'unknown'},\n [TabPanelAttrs.dataTitle]: {default: 'unknown'},\n [TabPanelAttrs.ariaLabelledby]: {default: 'unknown'},\n },\n content: '(block | paragraph)+',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-panel'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n isolating: true,\n },\n\n [TabsNode.Tabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'regular'},\n },\n content: `${TabsNode.TabsList} ${TabsNode.TabPanel}+`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tabs'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n complex: 'root',\n },\n\n [TabsNode.TabsList]: {\n attrs: {\n [TabsListAttrs.class]: {default: 'yfm-tab-list'},\n [TabsListAttrs.role]: {default: 'unknown'},\n },\n content: `${TabsNode.Tab}*`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-list'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n\n [TabsNode.RadioTabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs yfm-tabs-vertical'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'radio'},\n },\n content: `(${TabsNode.RadioTab} ${TabsNode.TabPanel})+`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n complex: 'root',\n },\n [TabsNode.RadioTab]: {\n attrs: {\n [TabAttrs.id]: {default: null},\n [TabAttrs.class]: {default: 'yfm-tab yfm-vertical-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'false'},\n [TabAttrs.dataDiplodocVerticalTab]: {default: 'true'},\n },\n content: `${TabsNode.RadioTabInput} ${TabsNode.RadioTabLabel}`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n [TabsNode.RadioTabInput]: {\n attrs: {\n [TabAttrs.class]: {default: 'radio'},\n type: {default: 'radio'},\n checked: {default: null},\n },\n group: 'block',\n toDOM(node) {\n return ['input', node.attrs];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n [TabsNode.RadioTabLabel]: {\n attrs: {},\n marks: '',\n content: 'text*',\n group: 'block',\n toDOM(node) {\n return ['label', node.attrs, 0];\n },\n placeholder: {\n content: placeholder?.[TabsNode.RadioTab] ?? DEFAULT_PLACEHOLDERS.RadioTabLabelTitle,\n alwaysVisible: true,\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmTabs/YfmTabsSpecs/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type {NodeSpec} from 'prosemirror-model';\n\nimport type {PlaceholderOptions} from '../../../../utils/placeholder';\n\nimport {TabAttrs, TabPanelAttrs, TabsAttrs, TabsListAttrs, TabsNode} from './const';\n\nconst DEFAULT_PLACEHOLDERS = {\n TabTitle: 'Tab title',\n RadioTabLabelTitle: 'Radio title',\n};\n\nexport type YfmTabsSchemaOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n tabPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const getSchemaSpecs: (\n opts: YfmTabsSchemaOptions,\n placeholder?: PlaceholderOptions,\n) => Record<TabsNode, NodeSpec> = (opts, placeholder) => ({\n [TabsNode.Tab]: {\n attrs: {\n [TabAttrs.id]: {default: 'unknown'},\n [TabAttrs.class]: {default: 'yfm-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'unknown'},\n },\n marks: '',\n content: 'text*',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab'}],\n toDOM(node) {\n return ['div', {draggable: 'false', ...node.attrs}, 0];\n },\n placeholder: {\n content:\n placeholder?.[TabsNode.Tab] ??\n opts?.tabPlaceholder ??\n DEFAULT_PLACEHOLDERS.TabTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [TabsNode.TabPanel]: {\n attrs: {\n [TabPanelAttrs.id]: {default: 'unknown'},\n [TabPanelAttrs.class]: {default: 'yfm-tab-panel'},\n [TabPanelAttrs.role]: {default: 'unknown'},\n [TabPanelAttrs.dataTitle]: {default: 'unknown'},\n [TabPanelAttrs.ariaLabelledby]: {default: 'unknown'},\n },\n content: '(block | paragraph)+',\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-panel'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n isolating: true,\n },\n\n [TabsNode.Tabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'regular'},\n },\n content: `${TabsNode.TabsList} ${TabsNode.TabPanel}+`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tabs'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n complex: 'root',\n },\n\n [TabsNode.TabsList]: {\n attrs: {\n [TabsListAttrs.class]: {default: 'yfm-tab-list'},\n [TabsListAttrs.role]: {default: 'unknown'},\n },\n content: `${TabsNode.Tab}*`,\n group: 'block',\n parseDOM: [{tag: 'div.yfm-tab-list'}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n\n [TabsNode.RadioTabs]: {\n attrs: {\n [TabsAttrs.class]: {default: 'yfm-tabs yfm-tabs-vertical'},\n [TabsAttrs.dataDiplodocGroup]: {default: 'unknown'},\n [TabsAttrs.dataDiplodocVariant]: {default: 'radio'},\n },\n content: `(${TabsNode.RadioTab} ${TabsNode.TabPanel})+`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n complex: 'root',\n },\n [TabsNode.RadioTab]: {\n attrs: {\n [TabAttrs.id]: {default: null},\n [TabAttrs.class]: {default: 'yfm-tab yfm-vertical-tab'},\n [TabAttrs.role]: {default: 'unknown'},\n [TabAttrs.ariaControls]: {default: 'unknown'},\n [TabAttrs.ariaSelected]: {default: 'unknown'},\n [TabAttrs.tabindex]: {default: 'unknown'},\n [TabAttrs.dataDiplodocKey]: {default: 'unknown'},\n [TabAttrs.dataDiplodocid]: {default: 'unknown'},\n [TabAttrs.dataDiplodocIsActive]: {default: 'false'},\n [TabAttrs.dataDiplodocVerticalTab]: {default: 'true'},\n },\n content: `${TabsNode.RadioTabInput} ${TabsNode.RadioTabLabel}`,\n group: 'block',\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: false,\n allowSelection: false,\n complex: 'inner',\n },\n [TabsNode.RadioTabInput]: {\n attrs: {\n [TabAttrs.class]: {default: 'radio'},\n type: {default: 'radio'},\n checked: {default: null},\n },\n group: 'block',\n toDOM(node) {\n return ['input', node.attrs];\n },\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n [TabsNode.RadioTabLabel]: {\n attrs: {},\n marks: '',\n content: 'text*',\n group: 'block',\n toDOM(node) {\n return ['label', node.attrs, 0];\n },\n placeholder: {\n content: placeholder?.[TabsNode.RadioTab] ?? DEFAULT_PLACEHOLDERS.RadioTabLabelTitle,\n alwaysVisible: true,\n },\n selectionContext: false,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
|
|
@@ -71,6 +71,7 @@ export const tabView = (node, view, getPos) => {
|
|
|
71
71
|
if (currentTab && tabsParentNode)
|
|
72
72
|
createTab(currentTab, tabsParentNode)(state, dispatch, view);
|
|
73
73
|
});
|
|
74
|
+
tabElem.draggable = false;
|
|
74
75
|
for (const attr in node.attrs) {
|
|
75
76
|
if (Object.prototype.hasOwnProperty.call(node.attrs, attr)) {
|
|
76
77
|
tabElem.setAttribute(attr, node.attrs[attr]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTabs/views.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Node} from 'prosemirror-model';\nimport {type EditorState, TextSelection} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {findParentNodeOfTypeClosestToPos} from 'prosemirror-utils';\nimport type {EditorView, NodeViewConstructor, ViewMutationRecord} from 'prosemirror-view';\n\nimport {cn} from '../../../classname';\n\nimport {tabType, tabsType} from './const';\nimport {crossSvg, plusSvg} from './icons';\nimport {createTab, removeTab} from './plugins';\nimport {execAfterPaint} from './utils';\n\nimport './index.scss';\n\nconst cnYfmTab = cn('yfm-tab');\n\nconst ignoreMutation =\n (_node: Node, _view: EditorView, _getPos: () => number | undefined) =>\n (mutation: ViewMutationRecord) => {\n if (\n mutation instanceof MutationRecord &&\n mutation.type === 'attributes' &&\n mutation.attributeName\n ) {\n return true;\n }\n\n return false;\n };\n\nconst getTabNodes = (state: EditorState, getPos: () => number | undefined) => {\n const currentTab = findParentNodeOfTypeClosestToPos(\n state.tr.doc.resolve(getPos()! + 1),\n tabType(state.schema),\n );\n const tabsParentNode = findParentNodeOfTypeClosestToPos(\n state.tr.doc.resolve(getPos()!),\n tabsType(state.schema),\n );\n\n return {currentTab, tabsParentNode};\n};\n\nexport const tabView: NodeViewConstructor = (node, view, getPos) => {\n const tabElem = document.createElement('div');\n const wrapperElem = document.createElement('div');\n wrapperElem.setAttribute('class', cnYfmTab('wrapper'));\n\n const viewElem = document.createElement('div');\n viewElem.setAttribute('class', cnYfmTab('view'));\n\n wrapperElem.addEventListener('click', () => {\n // Click on parent node to trigger event listener that selects current tab\n tabElem.click();\n\n {\n /**\n * Hack for empty tabs\n *\n * Problem: when clicking on an empty tab (without text content) it focuses, and selection doesn't move to beginning of tab\n *\n * Temporary fix: manually return focus to pm-view, move text selection to beginning of tab\n */\n\n view.focus();\n\n // tab is empty\n if (node.nodeSize < 3) {\n execAfterPaint(() => {\n const pos = getPos();\n if (pos !== undefined) {\n const {tr} = view.state;\n view.dispatch(\n tr.setSelection(TextSelection.create(tr.doc, pos + 1)).scrollIntoView(),\n );\n }\n });\n }\n }\n });\n\n const removeTabButton = document.createElement('div');\n removeTabButton.setAttribute('class', cnYfmTab('remove-button'));\n removeTabButton.innerHTML = crossSvg;\n removeTabButton.contentEditable = 'false';\n removeTabButton.addEventListener('click', () => {\n const {state, dispatch} = view;\n const {currentTab, tabsParentNode} = getTabNodes(state, getPos);\n\n if (currentTab && tabsParentNode)\n removeTab(currentTab, tabsParentNode)(state, dispatch, view);\n });\n\n const createTabButton = document.createElement('div');\n createTabButton.setAttribute('class', cnYfmTab('create-button'));\n createTabButton.innerHTML = plusSvg;\n createTabButton.contentEditable = 'false';\n createTabButton.addEventListener('click', () => {\n const {state, dispatch} = view;\n const {currentTab, tabsParentNode} = getTabNodes(state, getPos);\n\n if (currentTab && tabsParentNode)\n createTab(currentTab, tabsParentNode)(state, dispatch, view);\n });\n\n for (const attr in node.attrs) {\n if (Object.prototype.hasOwnProperty.call(node.attrs, attr)) {\n tabElem.setAttribute(attr, node.attrs[attr]);\n }\n }\n\n wrapperElem.appendChild(viewElem);\n wrapperElem.appendChild(removeTabButton);\n\n tabElem.appendChild(wrapperElem);\n tabElem.appendChild(createTabButton);\n\n return {\n dom: tabElem,\n contentDOM: viewElem,\n destroy() {\n tabElem.remove();\n },\n // FIX: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n };\n};\n\n// @ts-expect-error\nexport const tabPanelView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n\n// @ts-expect-error\nexport const vtabView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n\n// @ts-expect-error\nexport const vtabInputView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n"]}
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTabs/views.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAClE,oCAAoC;AACpC,OAAO,EAAC,gCAAgC,EAAC,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAC,EAAE,EAAC,8BAA2B;AAEtC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,mBAAgB;AAC1C,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,mBAAgB;AAC1C,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,qBAAkB;AAC/C,OAAO,EAAC,cAAc,EAAC,mBAAgB;AAEvC,qBAAsB;AAEtB,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAE/B,MAAM,cAAc,GAChB,CAAC,KAAW,EAAE,KAAiB,EAAE,OAAiC,EAAE,EAAE,CACtE,CAAC,QAA4B,EAAE,EAAE;IAC7B,IACI,QAAQ,YAAY,cAAc;QAClC,QAAQ,CAAC,IAAI,KAAK,YAAY;QAC9B,QAAQ,CAAC,aAAa,EACxB,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEN,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAE,MAAgC,EAAE,EAAE;IACzE,MAAM,UAAU,GAAG,gCAAgC,CAC/C,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAG,GAAG,CAAC,CAAC,EACnC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CACxB,CAAC;IACF,MAAM,cAAc,GAAG,gCAAgC,CACnD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAG,CAAC,EAC/B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CACzB,CAAC;IAEF,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjD,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACvC,0EAA0E;QAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,CAAC;YACG;;;;;;eAMG;YAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,eAAe;YACf,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACpB,cAAc,CAAC,GAAG,EAAE;oBAChB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;oBACrB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACpB,MAAM,EAAC,EAAE,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;wBACxB,IAAI,CAAC,QAAQ,CACT,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAC1E,CAAC;oBACN,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IACjE,eAAe,CAAC,SAAS,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,eAAe,GAAG,OAAO,CAAC;IAC1C,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;QAC/B,MAAM,EAAC,UAAU,EAAE,cAAc,EAAC,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEhE,IAAI,UAAU,IAAI,cAAc;YAC5B,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IACjE,eAAe,CAAC,SAAS,GAAG,OAAO,CAAC;IACpC,eAAe,CAAC,eAAe,GAAG,OAAO,CAAC;IAC1C,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;QAC/B,MAAM,EAAC,UAAU,EAAE,cAAc,EAAC,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEhE,IAAI,UAAU,IAAI,cAAc;YAC5B,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAEzC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAErC,OAAO;QACH,GAAG,EAAE,OAAO;QACZ,UAAU,EAAE,QAAQ;QACpB,OAAO;YACH,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,CAAC;QACD,sEAAsE;QACtE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;KACrD,CAAC;AACN,CAAC,CAAC;AAEF,mBAAmB;AACnB,MAAM,CAAC,MAAM,YAAY,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,wEAAwE;IACxE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;CACrD,CAAC,CAAC;AAEH,mBAAmB;AACnB,MAAM,CAAC,MAAM,QAAQ,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,wEAAwE;IACxE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;CACrD,CAAC,CAAC;AAEH,mBAAmB;AACnB,MAAM,CAAC,MAAM,aAAa,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,wEAAwE;IACxE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;CACrD,CAAC,CAAC","sourcesContent":["import type {Node} from 'prosemirror-model';\nimport {type EditorState, TextSelection} from 'prosemirror-state';\n// @ts-ignore // TODO: fix cjs build\nimport {findParentNodeOfTypeClosestToPos} from 'prosemirror-utils';\nimport type {EditorView, NodeViewConstructor, ViewMutationRecord} from 'prosemirror-view';\n\nimport {cn} from '../../../classname';\n\nimport {tabType, tabsType} from './const';\nimport {crossSvg, plusSvg} from './icons';\nimport {createTab, removeTab} from './plugins';\nimport {execAfterPaint} from './utils';\n\nimport './index.scss';\n\nconst cnYfmTab = cn('yfm-tab');\n\nconst ignoreMutation =\n (_node: Node, _view: EditorView, _getPos: () => number | undefined) =>\n (mutation: ViewMutationRecord) => {\n if (\n mutation instanceof MutationRecord &&\n mutation.type === 'attributes' &&\n mutation.attributeName\n ) {\n return true;\n }\n\n return false;\n };\n\nconst getTabNodes = (state: EditorState, getPos: () => number | undefined) => {\n const currentTab = findParentNodeOfTypeClosestToPos(\n state.tr.doc.resolve(getPos()! + 1),\n tabType(state.schema),\n );\n const tabsParentNode = findParentNodeOfTypeClosestToPos(\n state.tr.doc.resolve(getPos()!),\n tabsType(state.schema),\n );\n\n return {currentTab, tabsParentNode};\n};\n\nexport const tabView: NodeViewConstructor = (node, view, getPos) => {\n const tabElem = document.createElement('div');\n const wrapperElem = document.createElement('div');\n wrapperElem.setAttribute('class', cnYfmTab('wrapper'));\n\n const viewElem = document.createElement('div');\n viewElem.setAttribute('class', cnYfmTab('view'));\n\n wrapperElem.addEventListener('click', () => {\n // Click on parent node to trigger event listener that selects current tab\n tabElem.click();\n\n {\n /**\n * Hack for empty tabs\n *\n * Problem: when clicking on an empty tab (without text content) it focuses, and selection doesn't move to beginning of tab\n *\n * Temporary fix: manually return focus to pm-view, move text selection to beginning of tab\n */\n\n view.focus();\n\n // tab is empty\n if (node.nodeSize < 3) {\n execAfterPaint(() => {\n const pos = getPos();\n if (pos !== undefined) {\n const {tr} = view.state;\n view.dispatch(\n tr.setSelection(TextSelection.create(tr.doc, pos + 1)).scrollIntoView(),\n );\n }\n });\n }\n }\n });\n\n const removeTabButton = document.createElement('div');\n removeTabButton.setAttribute('class', cnYfmTab('remove-button'));\n removeTabButton.innerHTML = crossSvg;\n removeTabButton.contentEditable = 'false';\n removeTabButton.addEventListener('click', () => {\n const {state, dispatch} = view;\n const {currentTab, tabsParentNode} = getTabNodes(state, getPos);\n\n if (currentTab && tabsParentNode)\n removeTab(currentTab, tabsParentNode)(state, dispatch, view);\n });\n\n const createTabButton = document.createElement('div');\n createTabButton.setAttribute('class', cnYfmTab('create-button'));\n createTabButton.innerHTML = plusSvg;\n createTabButton.contentEditable = 'false';\n createTabButton.addEventListener('click', () => {\n const {state, dispatch} = view;\n const {currentTab, tabsParentNode} = getTabNodes(state, getPos);\n\n if (currentTab && tabsParentNode)\n createTab(currentTab, tabsParentNode)(state, dispatch, view);\n });\n\n tabElem.draggable = false;\n for (const attr in node.attrs) {\n if (Object.prototype.hasOwnProperty.call(node.attrs, attr)) {\n tabElem.setAttribute(attr, node.attrs[attr]);\n }\n }\n\n wrapperElem.appendChild(viewElem);\n wrapperElem.appendChild(removeTabButton);\n\n tabElem.appendChild(wrapperElem);\n tabElem.appendChild(createTabButton);\n\n return {\n dom: tabElem,\n contentDOM: viewElem,\n destroy() {\n tabElem.remove();\n },\n // FIX: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n };\n};\n\n// @ts-expect-error\nexport const tabPanelView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n\n// @ts-expect-error\nexport const vtabView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n\n// @ts-expect-error\nexport const vtabInputView: NodeViewConstructor = (node, view, getPos) => ({\n // FIXME: ignore mutation and don't rerender node when yfm.js switch tab\n ignoreMutation: ignoreMutation(node, view, getPos),\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { colorPlugin } from '
|
|
1
|
+
import { colorPlugin } from '@diplodoc/color-extension';
|
|
2
2
|
export default colorPlugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sourceRoot":"../../../src","sources":["markdown-it/color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"../../../src","sources":["markdown-it/color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAEtD,eAAe,WAAW,CAAC","sourcesContent":["import {colorPlugin} from '@diplodoc/color-extension';\n\nexport default colorPlugin;\n"]}
|
|
@@ -43,6 +43,6 @@ export function FlexToolbar(props) {
|
|
|
43
43
|
hiddenActions: filteredHiddenAction,
|
|
44
44
|
});
|
|
45
45
|
}, [data, width, hiddenActions]);
|
|
46
|
-
return (_jsx("div", { ref: ref, className: b(null, [className]), children: _jsxs("div", { className: b('container'), children: [_jsx(Toolbar, { ...props, data: items, className: b('bar') }), dots?.length && (_jsx(ToolbarListButton, { qa: "g-md-toolbar-more-action", data: dots, icon: { data: Ellipsis }, title: props.dotsTitle, editor: props.editor, focus: props.focus, onClick: props.onClick, className: b('dots'), alwaysActive: true }))] }) }));
|
|
46
|
+
return (_jsx("div", { ref: ref, className: b(null, [className]), children: _jsxs("div", { className: b('container'), children: [_jsx(Toolbar, { ...props, data: items, className: b('bar') }), dots?.length && (_jsx(ToolbarListButton, { qa: "g-md-toolbar-more-action", qaMenu: "g-md-toolbar-more-menu", data: dots, icon: { data: Ellipsis }, title: props.dotsTitle, editor: props.editor, focus: props.focus, onClick: props.onClick, className: b('dots'), alwaysActive: true }))] }) }));
|
|
47
47
|
}
|
|
48
48
|
//# sourceMappingURL=FlexToolbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexToolbar.js","sourceRoot":"../../../src","sources":["toolbar/FlexToolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useMemo} from 'react';\n\nimport {Ellipsis} from '@gravity-ui/icons';\nimport {useMeasure} from 'react-use';\n\nimport {cn} from '../classname';\nimport {logger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport {Toolbar, type ToolbarProps} from './Toolbar';\nimport {ToolbarListButton} from './ToolbarListButton';\nimport {shrinkToolbarData} from './flexible';\nimport {ToolbarDataType, type ToolbarItemData} from './types';\n\nimport './FlexToolbar.scss';\n\nconst b = cn('flex-toolbar');\n\nexport type FlexToolbarProps<E> = ToolbarProps<E> & {\n dotsTitle: string | (() => string);\n hiddenActions?: ToolbarItemData<E>[];\n};\n\nexport function FlexToolbar<E>(props: FlexToolbarProps<E>) {\n useRenderTime((time) => {\n logger.metrics({\n component: 'toolbar',\n event: 'render',\n duration: time,\n });\n });\n\n const {data, className, hiddenActions} = props;\n\n const [ref, {width}] = useMeasure<HTMLDivElement>();\n const {data: items, dots} = useMemo(() => {\n const toolbarButtonIds = data.reduce((a: string[], toolbarGroup) => {\n return [\n ...a,\n ...toolbarGroup\n .map((toolbarButton) => {\n if (toolbarButton.type === ToolbarDataType.ListButton) {\n return toolbarButton.data.map((v) => v.id);\n }\n return toolbarButton.id;\n })\n .flat(),\n ];\n }, []);\n\n // Finding only actions tha are not present in the main toolbar config\n const filteredHiddenAction = hiddenActions?.filter((a) => !toolbarButtonIds.includes(a.id));\n return shrinkToolbarData({\n data,\n availableWidth: width,\n hiddenActions: filteredHiddenAction,\n });\n }, [data, width, hiddenActions]);\n\n return (\n <div ref={ref} className={b(null, [className])}>\n <div className={b('container')}>\n <Toolbar {...props} data={items} className={b('bar')} />\n {dots?.length && (\n <ToolbarListButton\n qa=\"g-md-toolbar-more-action\"\n data={dots}\n icon={{data: Ellipsis}}\n title={props.dotsTitle}\n editor={props.editor}\n focus={props.focus}\n onClick={props.onClick}\n className={b('dots')}\n alwaysActive={true}\n />\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FlexToolbar.js","sourceRoot":"../../../src","sources":["toolbar/FlexToolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useMemo} from 'react';\n\nimport {Ellipsis} from '@gravity-ui/icons';\nimport {useMeasure} from 'react-use';\n\nimport {cn} from '../classname';\nimport {logger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport {Toolbar, type ToolbarProps} from './Toolbar';\nimport {ToolbarListButton} from './ToolbarListButton';\nimport {shrinkToolbarData} from './flexible';\nimport {ToolbarDataType, type ToolbarItemData} from './types';\n\nimport './FlexToolbar.scss';\n\nconst b = cn('flex-toolbar');\n\nexport type FlexToolbarProps<E> = ToolbarProps<E> & {\n dotsTitle: string | (() => string);\n hiddenActions?: ToolbarItemData<E>[];\n};\n\nexport function FlexToolbar<E>(props: FlexToolbarProps<E>) {\n useRenderTime((time) => {\n logger.metrics({\n component: 'toolbar',\n event: 'render',\n duration: time,\n });\n });\n\n const {data, className, hiddenActions} = props;\n\n const [ref, {width}] = useMeasure<HTMLDivElement>();\n const {data: items, dots} = useMemo(() => {\n const toolbarButtonIds = data.reduce((a: string[], toolbarGroup) => {\n return [\n ...a,\n ...toolbarGroup\n .map((toolbarButton) => {\n if (toolbarButton.type === ToolbarDataType.ListButton) {\n return toolbarButton.data.map((v) => v.id);\n }\n return toolbarButton.id;\n })\n .flat(),\n ];\n }, []);\n\n // Finding only actions tha are not present in the main toolbar config\n const filteredHiddenAction = hiddenActions?.filter((a) => !toolbarButtonIds.includes(a.id));\n return shrinkToolbarData({\n data,\n availableWidth: width,\n hiddenActions: filteredHiddenAction,\n });\n }, [data, width, hiddenActions]);\n\n return (\n <div ref={ref} className={b(null, [className])}>\n <div className={b('container')}>\n <Toolbar {...props} data={items} className={b('bar')} />\n {dots?.length && (\n <ToolbarListButton\n qa=\"g-md-toolbar-more-action\"\n qaMenu=\"g-md-toolbar-more-menu\"\n data={dots}\n icon={{data: Ellipsis}}\n title={props.dotsTitle}\n editor={props.editor}\n focus={props.focus}\n onClick={props.onClick}\n className={b('dots')}\n alwaysActive={true}\n />\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ToolbarBaseProps, ToolbarListButtonData } from "./types.js";
|
|
2
2
|
import "./ToolbarListButton.css";
|
|
3
3
|
export type { ToolbarListButtonData };
|
|
4
|
-
export type ToolbarListButtonProps<E> = ToolbarBaseProps<E> & ToolbarListButtonData<E
|
|
5
|
-
|
|
4
|
+
export type ToolbarListButtonProps<E> = ToolbarBaseProps<E> & ToolbarListButtonData<E> & {
|
|
5
|
+
qaMenu?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function ToolbarListButton<E>({ className, editor, focus, onClick, icon, title, withArrow, data, alwaysActive, replaceActiveIcon, qa, qaMenu, }: ToolbarListButtonProps<E>): JSX.Element | null;
|