@gravity-ui/markdown-editor 15.0.0 → 15.0.2
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/bundle/config/dynamicModifiers.js +14 -6
- package/build/cjs/bundle/config/dynamicModifiers.js.map +1 -1
- package/build/cjs/bundle/config/markup.d.ts +1 -1
- package/build/cjs/bundle/config/markup.js.map +1 -1
- package/build/cjs/bundle/config/wysiwyg.d.ts +1 -1
- package/build/cjs/bundle/config/wysiwyg.js.map +1 -1
- package/build/cjs/bundle/toolbar/ToolbarButtonWithPopupMenu.d.ts +2 -2
- package/build/cjs/bundle/toolbar/ToolbarButtonWithPopupMenu.js.map +1 -1
- package/build/cjs/bundle/toolbar/ToolbarSelect.d.ts +2 -3
- package/build/cjs/bundle/toolbar/ToolbarSelect.js +3 -2
- package/build/cjs/bundle/toolbar/ToolbarSelect.js.map +1 -1
- package/build/cjs/bundle/toolbar/markup/MToolbarColors.d.ts +2 -3
- package/build/cjs/bundle/toolbar/markup/MToolbarColors.js.map +1 -1
- package/build/cjs/bundle/toolbar/markup/MToolbarFilePopup.d.ts +2 -3
- package/build/cjs/bundle/toolbar/markup/MToolbarFilePopup.js.map +1 -1
- package/build/cjs/bundle/toolbar/markup/MToolbarImagePopup.d.ts +2 -3
- package/build/cjs/bundle/toolbar/markup/MToolbarImagePopup.js.map +1 -1
- package/build/cjs/bundle/toolbar/types.d.ts +3 -1
- package/build/cjs/bundle/toolbar/types.js.map +1 -1
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +1 -0
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/cjs/bundle/toolbar/wysiwyg/WToolbarColors.d.ts +2 -3
- package/build/cjs/bundle/toolbar/wysiwyg/WToolbarColors.js.map +1 -1
- package/build/cjs/bundle/toolbar/wysiwyg/WToolbarTextSelect.d.ts +2 -3
- package/build/cjs/bundle/toolbar/wysiwyg/WToolbarTextSelect.js.map +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImagePaste/index.js +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImagePaste/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmCut/index.css +3 -0
- package/build/cjs/plugins/TooltipButton/TooltipButton.d.ts +2 -0
- package/build/cjs/plugins/TooltipButton/TooltipButton.js +1 -0
- package/build/cjs/plugins/TooltipButton/TooltipButton.js.map +1 -1
- package/build/cjs/plugins/TooltipButton/index.d.ts +4 -0
- package/build/cjs/plugins/TooltipButton/index.js +1 -0
- package/build/cjs/plugins/TooltipButton/index.js.map +1 -1
- package/build/cjs/plugins/TooltipSelect/TooltipSelect.d.ts +2 -0
- package/build/cjs/plugins/TooltipSelect/TooltipSelect.js +1 -0
- package/build/cjs/plugins/TooltipSelect/TooltipSelect.js.map +1 -1
- package/build/cjs/plugins/TooltipSelect/index.d.ts +2 -0
- package/build/cjs/plugins/TooltipSelect/index.js +1 -0
- package/build/cjs/plugins/TooltipSelect/index.js.map +1 -1
- package/build/cjs/plugins/index.d.ts +2 -0
- package/build/cjs/plugins/index.js +2 -0
- package/build/cjs/plugins/index.js.map +1 -1
- package/build/cjs/toolbar/PreviewTooltip.js +3 -1
- package/build/cjs/toolbar/PreviewTooltip.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/cjs/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js +6 -4
- package/build/cjs/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js.map +1 -1
- package/build/esm/bundle/config/dynamicModifiers.js +13 -6
- package/build/esm/bundle/config/dynamicModifiers.js.map +1 -1
- package/build/esm/bundle/config/markup.d.ts +1 -1
- package/build/esm/bundle/config/markup.js.map +1 -1
- package/build/esm/bundle/config/wysiwyg.d.ts +1 -1
- package/build/esm/bundle/config/wysiwyg.js.map +1 -1
- package/build/esm/bundle/toolbar/ToolbarButtonWithPopupMenu.d.ts +2 -2
- package/build/esm/bundle/toolbar/ToolbarButtonWithPopupMenu.js.map +1 -1
- package/build/esm/bundle/toolbar/ToolbarSelect.d.ts +2 -3
- package/build/esm/bundle/toolbar/ToolbarSelect.js +3 -2
- package/build/esm/bundle/toolbar/ToolbarSelect.js.map +1 -1
- package/build/esm/bundle/toolbar/markup/MToolbarColors.d.ts +2 -3
- package/build/esm/bundle/toolbar/markup/MToolbarColors.js.map +1 -1
- package/build/esm/bundle/toolbar/markup/MToolbarFilePopup.d.ts +2 -3
- package/build/esm/bundle/toolbar/markup/MToolbarFilePopup.js.map +1 -1
- package/build/esm/bundle/toolbar/markup/MToolbarImagePopup.d.ts +2 -3
- package/build/esm/bundle/toolbar/markup/MToolbarImagePopup.js.map +1 -1
- package/build/esm/bundle/toolbar/types.d.ts +3 -1
- package/build/esm/bundle/toolbar/types.js.map +1 -1
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +1 -0
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/esm/bundle/toolbar/wysiwyg/WToolbarColors.d.ts +2 -3
- package/build/esm/bundle/toolbar/wysiwyg/WToolbarColors.js.map +1 -1
- package/build/esm/bundle/toolbar/wysiwyg/WToolbarTextSelect.d.ts +2 -3
- package/build/esm/bundle/toolbar/wysiwyg/WToolbarTextSelect.js.map +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImagePaste/index.js +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImagePaste/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmCut/index.css +3 -0
- package/build/esm/plugins/TooltipButton/TooltipButton.d.ts +2 -0
- package/build/esm/plugins/TooltipButton/TooltipButton.js +1 -0
- package/build/esm/plugins/TooltipButton/TooltipButton.js.map +1 -1
- package/build/esm/plugins/TooltipButton/index.d.ts +4 -0
- package/build/esm/plugins/TooltipButton/index.js +1 -0
- package/build/esm/plugins/TooltipButton/index.js.map +1 -1
- package/build/esm/plugins/TooltipSelect/TooltipSelect.d.ts +2 -0
- package/build/esm/plugins/TooltipSelect/TooltipSelect.js +1 -0
- package/build/esm/plugins/TooltipSelect/TooltipSelect.js.map +1 -1
- package/build/esm/plugins/TooltipSelect/index.d.ts +2 -0
- package/build/esm/plugins/TooltipSelect/index.js +1 -0
- package/build/esm/plugins/TooltipSelect/index.js.map +1 -1
- package/build/esm/plugins/index.d.ts +2 -0
- package/build/esm/plugins/index.js +2 -0
- package/build/esm/plugins/index.js.map +1 -1
- package/build/esm/toolbar/PreviewTooltip.js +3 -1
- package/build/esm/toolbar/PreviewTooltip.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esm/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js +6 -4
- package/build/esm/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js.map +1 -1
- package/build/styles.css +3 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/ImgSize/ImagePaste/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {decode as base64ToBuffer} from 'base64-arraybuffer';\nimport {Fragment, type Node, type Schema, Slice} from 'prosemirror-model';\nimport {Plugin} from 'prosemirror-state';\nimport {dropPoint} from 'prosemirror-transform';\n\nimport type {ParseInsertedUrlAsImage} from '../../../../bundle';\nimport type {ExtensionAuto} from '../../../../core';\nimport {isFunction} from '../../../../lodash';\nimport type {FileUploadHandler} from '../../../../utils';\nimport {clipboardUtils} from '../../../behavior/Clipboard';\nimport {DataTransferType} from '../../../behavior/Clipboard/utils';\nimport {ImageAttr, ImgSizeAttr, imageType} from '../../../specs';\nimport {type CreateImageNodeOptions, isImageNode} from '../utils';\n\nimport {ImagesUploadProcess} from './upload';\n\nconst {isFilesFromHtml, isFilesOnly, isImageFile} = clipboardUtils;\n\nexport type ImagePasteOptions = Pick<\n CreateImageNodeOptions,\n 'needDimensions' | 'enableNewImageSizeCalculation'\n> & {\n imageUploadHandler?: FileUploadHandler;\n /**\n * The function, used to determine if the pasted text is the image url and should be inserted as an image\n */\n parseInsertedUrlAsImage?: ParseInsertedUrlAsImage;\n};\n\nexport const ImagePaste: ExtensionAuto<ImagePasteOptions> = (builder, opts) => {\n const {parseInsertedUrlAsImage, imageUploadHandler} = opts ?? {};\n\n if (!isFunction(imageUploadHandler ?? parseInsertedUrlAsImage))\n throw new Error(\n `ImagePaste extension: ${\n opts.imageUploadHandler ? 'imageUploadHandler' : 'parseInsertedUrlAsImage'\n } is not a function`,\n );\n\n builder.addPlugin(\n () =>\n new Plugin({\n props: {\n handleDOMEvents: {\n paste(view, e) {\n const files = getPastedImages(e.clipboardData);\n if (imageUploadHandler && files) {\n e.preventDefault();\n new ImagesUploadProcess(\n view,\n files,\n imageUploadHandler,\n view.state.tr.selection.from,\n opts,\n ).run();\n return true;\n } else if (parseInsertedUrlAsImage) {\n const {imageUrl, title} =\n parseInsertedUrlAsImage(\n e.clipboardData?.getData(DataTransferType.Text) ?? '',\n ) || {};\n\n if (!imageUrl) {\n return false;\n }\n\n e.preventDefault();\n\n const imageNode = imageType(view.state.schema).create({\n src: imageUrl,\n alt: title,\n });\n\n const tr = view.state.tr.replaceSelectionWith(imageNode);\n view.dispatch(tr.scrollIntoView());\n\n return true;\n }\n\n return false;\n },\n drop(view, e) {\n if (!imageUploadHandler) {\n return false;\n }\n\n // handle drop images from device\n if (view.dragging) return false;\n\n const files = getPastedImages(e.dataTransfer);\n if (!files) return false;\n\n const dropPos =\n view.posAtCoords({left: e.clientX, top: e.clientY})?.pos ?? -1;\n if (dropPos === -1) return false;\n\n const posToInsert = dropPoint(\n view.state.doc,\n dropPos,\n createFakeImageSlice(view.state.schema),\n );\n\n if (posToInsert !== null) {\n new ImagesUploadProcess(\n view,\n files,\n imageUploadHandler,\n posToInsert,\n opts,\n ).run();\n }\n\n e.preventDefault();\n return true;\n },\n },\n handlePaste(view, _event, slice) {\n if (!imageUploadHandler) {\n return false;\n }\n\n const node = sliceSingleNode(slice);\n if (node && isImageNode(node)) {\n const imgUrl = node.attrs[ImgSizeAttr.Src];\n const imgFile = dataUrlToFile(imgUrl, 'image');\n if (imgFile) {\n new ImagesUploadProcess(\n view,\n [imgFile],\n imageUploadHandler,\n view.state.tr.selection.from,\n opts,\n ).run();\n return true;\n }\n }\n return false;\n },\n },\n }),\n builder.Priority.High,\n );\n};\n\nfunction getPastedImages(data: DataTransfer | null): File[] | null {\n if (!data || data.files.length === 0) return null;\n if (!isFilesOnly(data) && !isFilesFromHtml(data)) return null;\n const files = Array.from(data.files);\n return files.every(isImageFile) ? files : null;\n}\n\nfunction createFakeImageSlice(schema: Schema): Slice {\n return new Slice(\n Fragment.from(\n imageType(schema).create({\n [ImageAttr.Src]: 'fake',\n [ImageAttr.Title]: 'image',\n }),\n ),\n 0,\n 0,\n );\n}\n\n// copied from prosemirror-view input.ts\nfunction sliceSingleNode(slice: Slice): Node | null {\n return slice.openStart === 0 && slice.openEnd === 0 && slice.content.childCount === 1\n ? slice.content.firstChild\n : null;\n}\n\nfunction dataUrlToFile(dataUrl: string, filename: string): File | null {\n const [data, base64String] = dataUrl.split(',');\n if (!data || !base64String) return null;\n const mime = data.match(/^data:(.+);base64/)?.[1];\n if (!mime) return null;\n return new File([base64ToBuffer(base64String)], filename, {type: mime});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/ImgSize/ImagePaste/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {decode as base64ToBuffer} from 'base64-arraybuffer';\nimport {Fragment, type Node, type Schema, Slice} from 'prosemirror-model';\nimport {Plugin} from 'prosemirror-state';\nimport {dropPoint} from 'prosemirror-transform';\n\nimport type {ParseInsertedUrlAsImage} from '../../../../bundle';\nimport type {ExtensionAuto} from '../../../../core';\nimport {isFunction} from '../../../../lodash';\nimport type {FileUploadHandler} from '../../../../utils';\nimport {clipboardUtils} from '../../../behavior/Clipboard';\nimport {DataTransferType} from '../../../behavior/Clipboard/utils';\nimport {ImageAttr, ImgSizeAttr, imageType} from '../../../specs';\nimport {type CreateImageNodeOptions, isImageNode} from '../utils';\n\nimport {ImagesUploadProcess} from './upload';\n\nconst {isFilesFromHtml, isFilesOnly, isImageFile} = clipboardUtils;\n\nexport type ImagePasteOptions = Pick<\n CreateImageNodeOptions,\n 'needDimensions' | 'enableNewImageSizeCalculation'\n> & {\n imageUploadHandler?: FileUploadHandler;\n /**\n * The function, used to determine if the pasted text is the image url and should be inserted as an image\n */\n parseInsertedUrlAsImage?: ParseInsertedUrlAsImage;\n};\n\nexport const ImagePaste: ExtensionAuto<ImagePasteOptions> = (builder, opts) => {\n const {parseInsertedUrlAsImage, imageUploadHandler} = opts ?? {};\n\n if (!isFunction(imageUploadHandler ?? parseInsertedUrlAsImage))\n throw new Error(\n `ImagePaste extension: ${\n opts.imageUploadHandler ? 'imageUploadHandler' : 'parseInsertedUrlAsImage'\n } is not a function`,\n );\n\n builder.addPlugin(\n () =>\n new Plugin({\n props: {\n handleDOMEvents: {\n paste(view, e) {\n const files = getPastedImages(e.clipboardData);\n if (imageUploadHandler && files) {\n e.preventDefault();\n new ImagesUploadProcess(\n view,\n files,\n imageUploadHandler,\n view.state.tr.selection.from,\n opts,\n ).run();\n return true;\n } else if (parseInsertedUrlAsImage) {\n const {imageUrl, title} =\n parseInsertedUrlAsImage(\n e.clipboardData?.getData(DataTransferType.Text) ?? '',\n ) || {};\n\n if (!imageUrl) {\n return false;\n }\n\n e.preventDefault();\n\n const imageNode = imageType(view.state.schema).create({\n src: imageUrl,\n alt: title,\n });\n\n const tr = view.state.tr.replaceSelectionWith(imageNode);\n view.dispatch(tr.scrollIntoView());\n\n return true;\n }\n\n return false;\n },\n drop(view, e) {\n if (!imageUploadHandler) {\n return false;\n }\n\n // handle drop images from device\n if (view.dragging) return false;\n\n const files = getPastedImages(e.dataTransfer);\n if (!files) return false;\n\n const dropPos =\n view.posAtCoords({left: e.clientX, top: e.clientY})?.pos ?? -1;\n if (dropPos === -1) return false;\n\n const posToInsert = dropPoint(\n view.state.doc,\n dropPos,\n createFakeImageSlice(view.state.schema),\n );\n\n if (posToInsert !== null) {\n new ImagesUploadProcess(\n view,\n files,\n imageUploadHandler,\n posToInsert,\n opts,\n ).run();\n }\n\n e.preventDefault();\n return true;\n },\n },\n handlePaste(view, _event, slice) {\n if (!imageUploadHandler) {\n return false;\n }\n\n const node = sliceSingleNode(slice);\n if (node && isImageNode(node)) {\n const imgUrl = node.attrs[ImgSizeAttr.Src];\n const imgFile = dataUrlToFile(imgUrl, 'image');\n if (imgFile) {\n new ImagesUploadProcess(\n view,\n [imgFile],\n imageUploadHandler,\n view.state.tr.selection.from,\n opts,\n ).run();\n return true;\n }\n }\n return false;\n },\n },\n }),\n builder.Priority.VeryHigh,\n );\n};\n\nfunction getPastedImages(data: DataTransfer | null): File[] | null {\n if (!data || data.files.length === 0) return null;\n if (!isFilesOnly(data) && !isFilesFromHtml(data)) return null;\n const files = Array.from(data.files);\n return files.every(isImageFile) ? files : null;\n}\n\nfunction createFakeImageSlice(schema: Schema): Slice {\n return new Slice(\n Fragment.from(\n imageType(schema).create({\n [ImageAttr.Src]: 'fake',\n [ImageAttr.Title]: 'image',\n }),\n ),\n 0,\n 0,\n );\n}\n\n// copied from prosemirror-view input.ts\nfunction sliceSingleNode(slice: Slice): Node | null {\n return slice.openStart === 0 && slice.openEnd === 0 && slice.content.childCount === 1\n ? slice.content.firstChild\n : null;\n}\n\nfunction dataUrlToFile(dataUrl: string, filename: string): File | null {\n const [data, base64String] = dataUrl.split(',');\n if (!data || !base64String) return null;\n const mime = data.match(/^data:(.+);base64/)?.[1];\n if (!mime) return null;\n return new File([base64ToBuffer(base64String)], filename, {type: mime});\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type PopupProps } from '@gravity-ui/uikit';
|
|
2
|
+
/** @deprecated */
|
|
2
3
|
type TooltipButtonProps = Pick<PopupProps, 'onOutsideClick'> & {
|
|
3
4
|
domElem: HTMLElement | null;
|
|
4
5
|
children?: React.ReactNode;
|
|
5
6
|
};
|
|
7
|
+
/** @deprecated */
|
|
6
8
|
export declare const TooltipButton: React.FC<TooltipButtonProps>;
|
|
7
9
|
export {};
|
|
@@ -3,6 +3,7 @@ import { useLayoutEffect, useState } from 'react';
|
|
|
3
3
|
import { Ellipsis } from '@gravity-ui/icons';
|
|
4
4
|
import { Button, Icon, Popup } from '@gravity-ui/uikit';
|
|
5
5
|
import { useBooleanState, useElementState } from "../../react-utils/index.js";
|
|
6
|
+
/** @deprecated */
|
|
6
7
|
export const TooltipButton = ({ domElem, children, onOutsideClick, }) => {
|
|
7
8
|
const [width, setWidth] = useState(0);
|
|
8
9
|
const [open, , hide, toggleOpen] = useBooleanState(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipButton.js","sourceRoot":"../../../../src","sources":["plugins/TooltipButton/TooltipButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAuC,MAAM,mBAAmB,CAAC;AAE5F,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,mCAA0B;
|
|
1
|
+
{"version":3,"file":"TooltipButton.js","sourceRoot":"../../../../src","sources":["plugins/TooltipButton/TooltipButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAuC,MAAM,mBAAmB,CAAC;AAE5F,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,mCAA0B;AAQnE,kBAAkB;AAClB,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EACxD,OAAO,EACP,QAAQ,EACR,cAAc,GACjB,EAAE,EAAE;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,AAAD,EAAG,IAAI,EAAE,UAAU,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAe,EAAE,CAAC;IAE9C,eAAe,CAAC,GAAG,EAAE;QACjB,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,MAAC,KAAK,IACF,IAAI,QACJ,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,EAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAC,EAC9C,cAAc,EAAE,cAAc,aAE9B,KAAC,MAAM,IAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,YAClF,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,GACnB,EACT,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,YACxE,QAAQ,GACL,IACJ,CACX,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {useLayoutEffect, useState} from 'react';\n\nimport {Ellipsis} from '@gravity-ui/icons';\nimport {Button, Icon, Popup, type PopupPlacement, type PopupProps} from '@gravity-ui/uikit';\n\nimport {useBooleanState, useElementState} from '../../react-utils';\n\n/** @deprecated */\ntype TooltipButtonProps = Pick<PopupProps, 'onOutsideClick'> & {\n domElem: HTMLElement | null;\n children?: React.ReactNode;\n};\n\n/** @deprecated */\nexport const TooltipButton: React.FC<TooltipButtonProps> = ({\n domElem,\n children,\n onOutsideClick,\n}) => {\n const [width, setWidth] = useState(0);\n const [open, , hide, toggleOpen] = useBooleanState(false);\n const placement: PopupPlacement = ['bottom-end', 'bottom-start'];\n const [anchor, setAnchor] = useElementState();\n\n useLayoutEffect(() => {\n if (anchor?.clientWidth) {\n setWidth(anchor.clientWidth);\n }\n }, [anchor?.clientWidth]);\n\n return (\n <Popup\n open\n keepMounted={false}\n hasArrow={false}\n anchorElement={domElem}\n placement={'right-start'}\n offset={{crossAxis: 3, mainAxis: -(width + 3)}}\n onOutsideClick={onOutsideClick}\n >\n <Button onClick={toggleOpen} ref={setAnchor} size=\"s\" view={open ? 'normal' : 'raised'}>\n <Icon data={Ellipsis} />\n </Button>\n <Popup open={open} anchorElement={anchor} onClose={hide} placement={placement}>\n {children}\n </Popup>\n </Popup>\n );\n};\n"]}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import type { NodeType } from 'prosemirror-model';
|
|
2
2
|
import type { EditorView } from 'prosemirror-view';
|
|
3
3
|
import { type BaseTooltipNode, type BaseTooltipPluginOptions, BaseTooltipPluginView, type TooltipOnChangeCallback } from "../BaseTooltip/index.js";
|
|
4
|
+
/** @deprecated */
|
|
4
5
|
type ButtonContent = (view: EditorView, node: BaseTooltipNode, toggleEdit: () => void) => React.ReactElement;
|
|
6
|
+
/** @deprecated */
|
|
5
7
|
type FormContent = (view: EditorView, node: BaseTooltipNode, onChange?: TooltipOnChangeCallback) => React.ReactElement;
|
|
8
|
+
/** @deprecated */
|
|
6
9
|
interface TooltipMenuOptions extends BaseTooltipPluginOptions {
|
|
7
10
|
disableHideOnBlur?: boolean;
|
|
8
11
|
buttonContent: ButtonContent;
|
|
9
12
|
formContent: FormContent;
|
|
10
13
|
}
|
|
14
|
+
/** @deprecated */
|
|
11
15
|
export declare class TooltipButtonPluginView extends BaseTooltipPluginView {
|
|
12
16
|
private enableHideOnBlur?;
|
|
13
17
|
private forceEdit;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { BaseTooltipPluginView, } from "../BaseTooltip/index.js";
|
|
3
3
|
import { TooltipButton } from "./TooltipButton.js";
|
|
4
|
+
/** @deprecated */
|
|
4
5
|
export class TooltipButtonPluginView extends BaseTooltipPluginView {
|
|
5
6
|
enableHideOnBlur;
|
|
6
7
|
forceEdit = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["plugins/TooltipButton/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAGH,qBAAqB,GAExB,gCAAuB;AAExB,OAAO,EAAC,aAAa,EAAC,2BAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["plugins/TooltipButton/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAGH,qBAAqB,GAExB,gCAAuB;AAExB,OAAO,EAAC,aAAa,EAAC,2BAAwB;AAuB9C,kBAAkB;AAClB,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IACtD,gBAAgB,CAAW;IAC3B,SAAS,GAAG,KAAK,CAAC;IAClB,aAAa,CAAgB;IAC7B,WAAW,CAAc;IAEjC,YAAY,IAAgB,EAAE,OAA2B;QACrD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,UAAU,GAAG,GAAG,EAAE;QACd,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClF,CAAC;IAES,aAAa,CAAC,WAA4B;QAChD,OAAO,CACH,4BACK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAClC,wBAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,GAAO,CAC5E,CAAC,CAAC,CAAC,CACA,KAAC,aAAa,IAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,YACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAChD,CACnB,GACF,CACN,CAAC;IACN,CAAC;IAES,cAAc,CAAC,IAAc;QACnC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC9B,CAAC;IAEO,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC;CACL","sourcesContent":["import type {NodeType} from 'prosemirror-model';\nimport type {EditorView} from 'prosemirror-view';\n\nimport {\n type BaseTooltipNode,\n type BaseTooltipPluginOptions,\n BaseTooltipPluginView,\n type TooltipOnChangeCallback,\n} from '../BaseTooltip';\n\nimport {TooltipButton} from './TooltipButton';\n\n/** @deprecated */\ntype ButtonContent = (\n view: EditorView,\n node: BaseTooltipNode,\n toggleEdit: () => void,\n) => React.ReactElement;\n\n/** @deprecated */\ntype FormContent = (\n view: EditorView,\n node: BaseTooltipNode,\n onChange?: TooltipOnChangeCallback,\n) => React.ReactElement;\n\n/** @deprecated */\ninterface TooltipMenuOptions extends BaseTooltipPluginOptions {\n disableHideOnBlur?: boolean;\n buttonContent: ButtonContent;\n formContent: FormContent;\n}\n\n/** @deprecated */\nexport class TooltipButtonPluginView extends BaseTooltipPluginView {\n private enableHideOnBlur?: boolean;\n private forceEdit = false;\n private buttonContent: ButtonContent;\n private formContent: FormContent;\n\n constructor(view: EditorView, options: TooltipMenuOptions) {\n super(view, options);\n\n this.enableHideOnBlur = options.disableHideOnBlur !== true;\n this.buttonContent = options.buttonContent;\n this.formContent = options.formContent;\n if (this.enableHideOnBlur) {\n (this.view.dom as HTMLElement).addEventListener('focus', this.onViewFocus);\n }\n }\n\n toggleEdit = () => {\n this.forceEdit = !this.forceEdit;\n this.render();\n };\n\n destroy(): void {\n super.destroy();\n (this.view.dom as HTMLElement).removeEventListener('focus', this.onViewFocus);\n }\n\n protected renderContent(currentNode: BaseTooltipNode): React.ReactNode {\n return (\n <>\n {this.forceEdit && this.formContent ? (\n <div>{this.formContent(this.view, currentNode, this.changeAttrsCb)}</div>\n ) : (\n <TooltipButton domElem={currentNode.dom} onOutsideClick={this.onOutsideClick}>\n {this.buttonContent(this.view, currentNode, this.toggleEdit)}\n </TooltipButton>\n )}\n </>\n );\n }\n\n protected setCurrentNode(node: NodeType) {\n super.setCurrentNode(node);\n this.currentNode?.dom?.addEventListener('dblclick', this.toggleEdit);\n }\n\n protected updateTooltipView() {\n this.currentNode?.dom?.removeEventListener('dblclick', this.toggleEdit);\n super.updateTooltipView();\n }\n\n private onViewFocus = () => {\n this.forceEdit = false;\n this.manualHidden = false;\n this.render();\n };\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type PopupProps, type SelectOption, type SelectOptionGroup } from '@gravity-ui/uikit';
|
|
2
|
+
/** @deprecated */
|
|
2
3
|
type TooltipButtonProps = Pick<PopupProps, 'onOutsideClick'> & {
|
|
3
4
|
domRef: HTMLElement | null;
|
|
4
5
|
buttonTitle?: string;
|
|
@@ -6,5 +7,6 @@ type TooltipButtonProps = Pick<PopupProps, 'onOutsideClick'> & {
|
|
|
6
7
|
onUpdate: (s: string) => void;
|
|
7
8
|
withSearch?: boolean;
|
|
8
9
|
};
|
|
10
|
+
/** @deprecated */
|
|
9
11
|
export declare const TooltipButton: React.FC<TooltipButtonProps>;
|
|
10
12
|
export {};
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useLayoutEffect, useRef, useState } from 'react';
|
|
3
3
|
import { ArrowToggle, Button, Popup, Select, } from '@gravity-ui/uikit';
|
|
4
4
|
import { useBooleanState } from "../../react-utils/index.js";
|
|
5
|
+
/** @deprecated */
|
|
5
6
|
export const TooltipButton = ({ domRef, buttonTitle = 'Settings', items, onUpdate, withSearch, onOutsideClick, }) => {
|
|
6
7
|
const [width, setWidth] = useState(0);
|
|
7
8
|
const [open, , , toggleOpen] = useBooleanState(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipSelect.js","sourceRoot":"../../../../src","sources":["plugins/TooltipSelect/TooltipSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAExD,OAAO,EACH,WAAW,EACX,MAAM,EACN,KAAK,EAEL,MAAM,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,eAAe,EAAC,mCAA0B;
|
|
1
|
+
{"version":3,"file":"TooltipSelect.js","sourceRoot":"../../../../src","sources":["plugins/TooltipSelect/TooltipSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAExD,OAAO,EACH,WAAW,EACX,MAAM,EACN,KAAK,EAEL,MAAM,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,eAAe,EAAC,mCAA0B;AAWlD,kBAAkB;AAClB,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EACxD,MAAM,EACN,WAAW,GAAG,UAAU,EACxB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,cAAc,GACjB,EAAE,EAAE;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,AAAD,EAAG,AAAD,EAAG,UAAU,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAE5C,eAAe,CAAC,GAAG,EAAE;QACjB,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5C,OAAO,CACH,KAAC,KAAK,IACF,IAAI,QACJ,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAC,EAChD,cAAc,EAAE,cAAc,YAE9B,KAAC,MAAM,IACH,YAAY,EAAE,UAAU,EACxB,aAAa,EAAE,GAAG,EAAE,CAAC,CACjB,MAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,aACzB,WAAW,EACZ,KAAC,WAAW,IAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAI,IAC9C,CACZ,EACD,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,UAAU,EAAE,UAAU,GACxB,GACE,CACX,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {useLayoutEffect, useRef, useState} from 'react';\n\nimport {\n ArrowToggle,\n Button,\n Popup,\n type PopupProps,\n Select,\n type SelectOption,\n type SelectOptionGroup,\n} from '@gravity-ui/uikit';\n\nimport {useBooleanState} from '../../react-utils';\n\n/** @deprecated */\ntype TooltipButtonProps = Pick<PopupProps, 'onOutsideClick'> & {\n domRef: HTMLElement | null;\n buttonTitle?: string;\n items?: SelectOption[] | SelectOptionGroup[];\n onUpdate: (s: string) => void;\n withSearch?: boolean;\n};\n\n/** @deprecated */\nexport const TooltipButton: React.FC<TooltipButtonProps> = ({\n domRef,\n buttonTitle = 'Settings',\n items,\n onUpdate,\n withSearch,\n onOutsideClick,\n}) => {\n const [width, setWidth] = useState(0);\n const [open, , , toggleOpen] = useBooleanState(false);\n const ref = useRef<HTMLButtonElement>(null);\n\n useLayoutEffect(() => {\n if (ref.current?.clientWidth) {\n setWidth(ref.current?.clientWidth);\n }\n }, [ref.current?.clientWidth, buttonTitle]);\n\n return (\n <Popup\n open\n keepMounted={false}\n hasArrow={false}\n anchorElement={domRef}\n placement={'right-start'}\n offset={{crossAxis: 10, mainAxis: -(width + 10)}}\n onOutsideClick={onOutsideClick}\n >\n <Select\n onOpenChange={toggleOpen}\n renderControl={() => (\n <Button ref={ref} view={'flat'}>\n {buttonTitle}\n <ArrowToggle direction={open ? 'top' : 'bottom'} />\n </Button>\n )}\n options={items}\n onUpdate={(v) => onUpdate(v[0])}\n filterable={withSearch}\n />\n </Popup>\n );\n};\n"]}
|
|
@@ -2,6 +2,7 @@ import type { SelectOption, SelectOptionGroup } from '@gravity-ui/uikit';
|
|
|
2
2
|
import type { Node } from 'prosemirror-model';
|
|
3
3
|
import type { EditorView } from 'prosemirror-view';
|
|
4
4
|
import { type BaseTooltipNode, type BaseTooltipPluginOptions, BaseTooltipPluginView } from "../BaseTooltip/index.js";
|
|
5
|
+
/** @deprecated */
|
|
5
6
|
interface TooltipSelectOptions extends BaseTooltipPluginOptions {
|
|
6
7
|
buttonText?: (node: Node) => string;
|
|
7
8
|
items?: SelectOption[] | SelectOptionGroup[];
|
|
@@ -9,6 +10,7 @@ interface TooltipSelectOptions extends BaseTooltipPluginOptions {
|
|
|
9
10
|
withSearch?: boolean;
|
|
10
11
|
disableHideOnBlur?: boolean;
|
|
11
12
|
}
|
|
13
|
+
/** @deprecated */
|
|
12
14
|
export declare class TooltipSelectPluginView extends BaseTooltipPluginView {
|
|
13
15
|
private buttonText?;
|
|
14
16
|
private items?;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { BaseTooltipPluginView, } from "../BaseTooltip/index.js";
|
|
3
3
|
import { TooltipButton } from "./TooltipSelect.js";
|
|
4
|
+
/** @deprecated */
|
|
4
5
|
export class TooltipSelectPluginView extends BaseTooltipPluginView {
|
|
5
6
|
buttonText;
|
|
6
7
|
items;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["plugins/TooltipSelect/index.tsx"],"names":[],"mappings":";AAIA,OAAO,EAGH,qBAAqB,GACxB,gCAAuB;AAExB,OAAO,EAAC,aAAa,EAAC,2BAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["plugins/TooltipSelect/index.tsx"],"names":[],"mappings":";AAIA,OAAO,EAGH,qBAAqB,GACxB,gCAAuB;AAExB,OAAO,EAAC,aAAa,EAAC,2BAAwB;AAW9C,kBAAkB;AAClB,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IACtD,UAAU,CAA0B;IACpC,KAAK,CAAwC;IAC7C,UAAU,CAAoD;IAC9D,UAAU,CAAU;IACpB,gBAAgB,CAAW;IAEnC,YAAY,IAAgB,EAAE,OAA6B;QACvD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC;QAE3D,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClF,CAAC;IAES,aAAa,CAAC,WAA4B;QAChD,OAAO,CACH,KAAC,aAAa,IACV,MAAM,EAAE,WAAW,CAAC,GAAG,EACvB,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChD,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EACzE,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,cAAc,EAAE,IAAI,CAAC,cAAc,GACrC,CACL,CAAC;IACN,CAAC;IAES,cAAc,GAAG,GAAG,EAAE;QAC5B,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC,CAAC;IAEM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC;CACL","sourcesContent":["import type {SelectOption, SelectOptionGroup} from '@gravity-ui/uikit';\nimport type {Node} from 'prosemirror-model';\nimport type {EditorView} from 'prosemirror-view';\n\nimport {\n type BaseTooltipNode,\n type BaseTooltipPluginOptions,\n BaseTooltipPluginView,\n} from '../BaseTooltip';\n\nimport {TooltipButton} from './TooltipSelect';\n\n/** @deprecated */\ninterface TooltipSelectOptions extends BaseTooltipPluginOptions {\n buttonText?: (node: Node) => string;\n items?: SelectOption[] | SelectOptionGroup[];\n buildAttrs: (selectedValue: string) => Record<string, string>;\n withSearch?: boolean;\n disableHideOnBlur?: boolean;\n}\n\n/** @deprecated */\nexport class TooltipSelectPluginView extends BaseTooltipPluginView {\n private buttonText?: (node: Node) => string;\n private items?: SelectOption[] | SelectOptionGroup[];\n private buildAttrs: (selectedValue: string) => Record<string, string>;\n private withSearch: boolean;\n private enableHideOnBlur?: boolean;\n\n constructor(view: EditorView, options: TooltipSelectOptions) {\n super(view, options);\n\n this.buttonText = options.buttonText;\n this.items = options.items;\n this.buildAttrs = options.buildAttrs;\n this.withSearch = options.withSearch ?? true;\n this.enableHideOnBlur = options.disableHideOnBlur !== true;\n\n if (this.enableHideOnBlur) {\n (this.view.dom as HTMLElement).addEventListener('focus', this.onViewFocus);\n }\n }\n\n destroy(): void {\n super.destroy();\n (this.view.dom as HTMLElement).removeEventListener('focus', this.onViewFocus);\n }\n\n protected renderContent(currentNode: BaseTooltipNode): React.ReactNode {\n return (\n <TooltipButton\n domRef={currentNode.dom}\n buttonTitle={this.buttonText?.(currentNode.node)}\n items={this.items}\n onUpdate={(v) => this.changeAttrsCb(this.buildAttrs(v), {setFocus: true})}\n withSearch={this.withSearch}\n onOutsideClick={this.onOutsideClick}\n />\n );\n }\n\n protected onOutsideClick = () => {\n if (this.enableHideOnBlur && !this.view.hasFocus()) {\n this.manualHidden = true;\n this.render();\n }\n };\n\n private onViewFocus = () => {\n this.manualHidden = false;\n this.render();\n };\n}\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * as BaseTooltipPlugin from "./BaseTooltip/index.js";
|
|
2
|
+
/** @deprecated */
|
|
2
3
|
export * as TooltipButtonPlugin from "./TooltipButton/index.js";
|
|
4
|
+
/** @deprecated */
|
|
3
5
|
export * as TooltipSelectPlugin from "./TooltipSelect/index.js";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,+BAAsB;AACnD,OAAO,KAAK,mBAAmB,iCAAwB;AACvD,OAAO,KAAK,mBAAmB,iCAAwB","sourcesContent":["export * as BaseTooltipPlugin from './BaseTooltip';\nexport * as TooltipButtonPlugin from './TooltipButton';\nexport * as TooltipSelectPlugin from './TooltipSelect';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,+BAAsB;AACnD,kBAAkB;AAClB,OAAO,KAAK,mBAAmB,iCAAwB;AACvD,kBAAkB;AAClB,OAAO,KAAK,mBAAmB,iCAAwB","sourcesContent":["export * as BaseTooltipPlugin from './BaseTooltip';\n/** @deprecated */\nexport * as TooltipButtonPlugin from './TooltipButton';\n/** @deprecated */\nexport * as TooltipSelectPlugin from './TooltipSelect';\n"]}
|
|
@@ -5,6 +5,8 @@ import { ToolbarTooltipDelay } from "./const.js";
|
|
|
5
5
|
import "./PreviewTooltip.css";
|
|
6
6
|
const b = cn('preview-tooltip');
|
|
7
7
|
export const PreviewTooltip = ({ preview, children }) => {
|
|
8
|
-
|
|
8
|
+
if (!preview)
|
|
9
|
+
return children;
|
|
10
|
+
return (_jsx(Tooltip, { placement: ['right', 'left'], className: b(), disabled: !preview, openDelay: ToolbarTooltipDelay.Open, closeDelay: ToolbarTooltipDelay.Close, content: _jsx("div", { className: b('content'), children: preview }), children: children }));
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=PreviewTooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewTooltip.js","sourceRoot":"../../../src","sources":["toolbar/PreviewTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAC,EAAE,EAAC,wBAAqB;AAEhC,OAAO,EAAC,mBAAmB,EAAC,mBAAgB;AAE5C,8BAA+B;AAE/B,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAOhC,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;IACjF,OAAO,CACH,KAAC,OAAO,IACJ,SAAS,
|
|
1
|
+
{"version":3,"file":"PreviewTooltip.js","sourceRoot":"../../../src","sources":["toolbar/PreviewTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAC,EAAE,EAAC,wBAAqB;AAEhC,OAAO,EAAC,mBAAmB,EAAC,mBAAgB;AAE5C,8BAA+B;AAE/B,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAOhC,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;IACjF,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAE9B,OAAO,CACH,KAAC,OAAO,IACJ,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAC5B,SAAS,EAAE,CAAC,EAAE,EACd,QAAQ,EAAE,CAAC,OAAO,EAClB,SAAS,EAAE,mBAAmB,CAAC,IAAI,EACnC,UAAU,EAAE,mBAAmB,CAAC,KAAK,EACrC,OAAO,EAAE,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAG,OAAO,GAAO,YAErD,QAAQ,GACH,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Tooltip} from '@gravity-ui/uikit';\n\nimport {cn} from '../classname';\n\nimport {ToolbarTooltipDelay} from './const';\n\nimport './PreviewTooltip.scss';\n\nconst b = cn('preview-tooltip');\n\ntype PreviewTooltipProps = {\n preview?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport const PreviewTooltip: React.FC<PreviewTooltipProps> = ({preview, children}) => {\n if (!preview) return children;\n\n return (\n <Tooltip\n placement={['right', 'left']}\n className={b()}\n disabled={!preview}\n openDelay={ToolbarTooltipDelay.Open}\n closeDelay={ToolbarTooltipDelay.Close}\n content={<div className={b('content')}>{preview}</div>}\n >\n {children}\n </Tooltip>\n );\n};\n"]}
|
package/build/esm/version.js
CHANGED
package/build/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,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.0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,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.0.2' !== 'undefined' ? '15.0.2' : 'unknown';\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
const YfmCutCN = {
|
|
3
|
-
Open: 'open',
|
|
4
3
|
Cut: 'yfm-cut',
|
|
5
4
|
};
|
|
5
|
+
const YfmCutAttrs = {
|
|
6
|
+
Open: 'open',
|
|
7
|
+
};
|
|
6
8
|
const YfmTabsCN = {
|
|
7
9
|
Active: 'active',
|
|
8
10
|
Tabs: 'yfm-tabs',
|
|
@@ -29,9 +31,9 @@ export function useYfmShowElemWithId(ref, id) {
|
|
|
29
31
|
}
|
|
30
32
|
}, [id]);
|
|
31
33
|
}
|
|
32
|
-
function openYfmCut(
|
|
33
|
-
if (classList.contains(YfmCutCN.Cut) && !
|
|
34
|
-
|
|
34
|
+
function openYfmCut(cutElement) {
|
|
35
|
+
if (cutElement.classList.contains(YfmCutCN.Cut) && !cutElement.hasAttribute(YfmCutAttrs.Open)) {
|
|
36
|
+
cutElement.setAttribute(YfmCutAttrs.Open, '');
|
|
35
37
|
return true;
|
|
36
38
|
}
|
|
37
39
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useYfmShowElemWithId.js","sourceRoot":"../../../../../src","sources":["view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAC,MAAM,OAAO,CAAC;AAEhD,MAAM,QAAQ,GAAG;IACb,
|
|
1
|
+
{"version":3,"file":"useYfmShowElemWithId.js","sourceRoot":"../../../../../src","sources":["view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.ts"],"names":[],"mappings":"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","sourcesContent":["import {type RefObject, useEffect} from 'react';\n\nconst YfmCutCN = {\n Cut: 'yfm-cut',\n} as const;\n\nconst YfmCutAttrs = {\n Open: 'open',\n} as const;\n\nconst YfmTabsCN = {\n Active: 'active',\n Tabs: 'yfm-tabs',\n TabList: 'yfm-tab-list',\n Tab: 'yfm-tab',\n TabPanel: 'yfm-tab-panel',\n} as const;\n\nconst FoldingHeadingsCN = {\n Open: 'open',\n Section: 'heading-section',\n} as const;\n\nexport function useYfmShowElemWithId(ref: RefObject<HTMLElement>, id: string) {\n useEffect(() => {\n const {current: containerDom} = ref;\n if (!id || !containerDom) return;\n\n let elem = document.getElementById(id);\n if (!elem || !containerDom.contains(elem)) return;\n\n while (elem && elem !== containerDom) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n openYfmCut(elem) || openFoldingHeadings(elem, id) || switchYfmTabs(elem);\n elem = elem.parentElement;\n }\n }, [id]);\n}\n\nfunction openYfmCut(cutElement: Element): boolean {\n if (cutElement.classList.contains(YfmCutCN.Cut) && !cutElement.hasAttribute(YfmCutAttrs.Open)) {\n cutElement.setAttribute(YfmCutAttrs.Open, '');\n return true;\n }\n return false;\n}\n\nfunction switchYfmTabs(tabPanelElem: Element): boolean {\n if (\n !tabPanelElem.id ||\n !tabPanelElem.classList.contains(YfmTabsCN.TabPanel) ||\n tabPanelElem.classList.contains(YfmTabsCN.Active)\n )\n return false;\n const tabsElem = tabPanelElem.parentElement;\n if (!tabsElem?.classList.contains(YfmTabsCN.Tabs)) return false;\n const yfmTabList = tabsElem.firstElementChild;\n if (!yfmTabList?.classList.contains(YfmTabsCN.TabList)) return false;\n\n const tabPanelId = tabPanelElem.id;\n for (const tabElem of Array.from(yfmTabList.children)) {\n if (!tabElem.classList.contains(YfmTabsCN.Tab)) continue;\n\n const isDesiredElem = tabElem.hasAttribute('aria-controls')\n ? tabElem.getAttribute('aria-controls') === tabPanelId\n : tabElem.textContent === tabPanelElem.getAttribute('data-title');\n tabElem.setAttribute('data-diplodoc-is-active', String(isDesiredElem));\n tabElem.setAttribute('aria-selected', String(isDesiredElem));\n tabElem.classList.toggle(YfmTabsCN.Active, isDesiredElem);\n }\n for (const panelElem of Array.from(tabsElem.children)) {\n if (!panelElem.classList.contains(YfmTabsCN.TabPanel)) continue;\n\n const isDesiredElem = panelElem.id === tabPanelId;\n panelElem.classList.toggle(YfmTabsCN.Active, isDesiredElem);\n }\n return true;\n}\n\nfunction openFoldingHeadings(elem: Element, id: string): boolean {\n if (\n elem.classList.contains(FoldingHeadingsCN.Section) &&\n !elem.classList.contains(FoldingHeadingsCN.Open) &&\n id !== elem.firstElementChild?.id\n ) {\n elem.classList.add(FoldingHeadingsCN.Open);\n return true;\n }\n return false;\n}\n"]}
|
package/build/styles.css
CHANGED
|
@@ -1162,6 +1162,9 @@ body :has(.g-md-resizable_resizing) {
|
|
|
1162
1162
|
.ProseMirror.yfm .yfm-cut .yfm-cut-title:focus {
|
|
1163
1163
|
outline: 0;
|
|
1164
1164
|
}
|
|
1165
|
+
.ProseMirror.yfm .yfm-cut.open .yfm-cut-title:before {
|
|
1166
|
+
transform: translateY(-50%);
|
|
1167
|
+
}
|
|
1165
1168
|
.yfm-editor .yfm-file {
|
|
1166
1169
|
pointer-events: none;
|
|
1167
1170
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/markdown-editor",
|
|
3
|
-
"version": "15.0.
|
|
3
|
+
"version": "15.0.2",
|
|
4
4
|
"description": "Markdown wysiwyg and markup editor",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -203,6 +203,7 @@
|
|
|
203
203
|
"react-error-boundary": "^3.1.4",
|
|
204
204
|
"react-hotkeys-hook": "4.5.0",
|
|
205
205
|
"react-use": "^17.3.2",
|
|
206
|
+
"ts-dedent": "2.2.0",
|
|
206
207
|
"tslib": "^2.3.1",
|
|
207
208
|
"uuid": "11.0.5"
|
|
208
209
|
},
|
|
@@ -258,7 +259,7 @@
|
|
|
258
259
|
"jsdom": "25.0.1",
|
|
259
260
|
"lowlight": "3.0.0",
|
|
260
261
|
"markdown-it-testgen": "^0.1.6",
|
|
261
|
-
"mermaid": "10.9.
|
|
262
|
+
"mermaid": "10.9.3",
|
|
262
263
|
"npm-run-all": "^4.1.5",
|
|
263
264
|
"postcss": "^8.4.27",
|
|
264
265
|
"prettier": "3.1.1",
|
|
@@ -269,7 +270,6 @@
|
|
|
269
270
|
"sass": "^1.84.0",
|
|
270
271
|
"sass-loader": "^13.3.2",
|
|
271
272
|
"stylelint": "15.11.0",
|
|
272
|
-
"ts-dedent": "2.2.0",
|
|
273
273
|
"ts-jest": "^29.2.5",
|
|
274
274
|
"typescript": "^5.7.3"
|
|
275
275
|
},
|