@gravity-ui/markdown-editor 15.33.0 → 15.34.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/bundle/wysiwyg-preset.js +6 -1
- package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
- package/build/cjs/extensions/behavior/Clipboard/clipboard.d.ts +1 -1
- package/build/cjs/extensions/behavior/Clipboard/clipboard.js +30 -26
- package/build/cjs/extensions/behavior/Clipboard/clipboard.js.map +1 -1
- package/build/cjs/extensions/behavior/Clipboard/trim-selection.d.ts +1 -0
- package/build/cjs/extensions/behavior/Clipboard/trim-selection.js +55 -0
- package/build/cjs/extensions/behavior/Clipboard/trim-selection.js.map +1 -0
- package/build/cjs/extensions/behavior/Search/Search.d.ts +1 -1
- package/build/cjs/extensions/behavior/Search/Search.js.map +1 -1
- package/build/cjs/extensions/behavior/Search/SearchViewPlugin.d.ts +1 -0
- package/build/cjs/extensions/behavior/Search/SearchViewPlugin.js +4 -1
- package/build/cjs/extensions/behavior/Search/SearchViewPlugin.js.map +1 -1
- package/build/cjs/markup/codemirror/create.js +1 -0
- package/build/cjs/markup/codemirror/create.js.map +1 -1
- package/build/cjs/markup/codemirror/search-plugin/plugin.d.ts +1 -0
- package/build/cjs/markup/codemirror/search-plugin/plugin.js +4 -1
- package/build/cjs/markup/codemirror/search-plugin/plugin.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.d.ts +3 -2
- package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.js +2 -2
- package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.js.map +1 -1
- package/build/cjs/view/hocs/withCodeBlockActions/index.d.ts +1 -1
- package/build/cjs/view/hocs/withCodeBlockActions/index.js +3 -2
- package/build/cjs/view/hocs/withCodeBlockActions/index.js.map +1 -1
- package/build/cjs/view/hocs/withCodeBlockActions/styles.css +4 -2
- package/build/esm/bundle/wysiwyg-preset.js +6 -1
- package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
- package/build/esm/extensions/behavior/Clipboard/clipboard.d.ts +1 -1
- package/build/esm/extensions/behavior/Clipboard/clipboard.js +12 -8
- package/build/esm/extensions/behavior/Clipboard/clipboard.js.map +1 -1
- package/build/esm/extensions/behavior/Clipboard/trim-selection.d.ts +1 -0
- package/build/esm/extensions/behavior/Clipboard/trim-selection.js +51 -0
- package/build/esm/extensions/behavior/Clipboard/trim-selection.js.map +1 -0
- package/build/esm/extensions/behavior/Search/Search.d.ts +1 -1
- package/build/esm/extensions/behavior/Search/Search.js.map +1 -1
- package/build/esm/extensions/behavior/Search/SearchViewPlugin.d.ts +1 -0
- package/build/esm/extensions/behavior/Search/SearchViewPlugin.js +4 -1
- package/build/esm/extensions/behavior/Search/SearchViewPlugin.js.map +1 -1
- package/build/esm/markup/codemirror/create.js +1 -0
- package/build/esm/markup/codemirror/create.js.map +1 -1
- package/build/esm/markup/codemirror/search-plugin/plugin.d.ts +1 -0
- package/build/esm/markup/codemirror/search-plugin/plugin.js +4 -1
- package/build/esm/markup/codemirror/search-plugin/plugin.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.d.ts +3 -2
- package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.js +2 -2
- package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.js.map +1 -1
- package/build/esm/view/hocs/withCodeBlockActions/index.d.ts +1 -1
- package/build/esm/view/hocs/withCodeBlockActions/index.js +3 -2
- package/build/esm/view/hocs/withCodeBlockActions/index.js.map +1 -1
- package/build/esm/view/hocs/withCodeBlockActions/styles.css +4 -2
- package/build/styles.css +4 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["view/hocs/withCodeBlockActions/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGH,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,GACX,MAAM,OAAO,CAAC;AAEf,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAC,4BAA4B,EAAC,gCAA6B;AAElE,sBAAuB;AAEvB,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AACrD,MAAM,4BAA4B,GAAG,2CAA2C,CAAC;AACjF,MAAM,0BAA0B,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["view/hocs/withCodeBlockActions/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type ComponentType,\n type RefAttributes,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {ClipboardButton, Portal, useForkRef} from '@gravity-ui/uikit';\n\nimport {CodeTextWrappingToggleButton} from './TextWrappingButton';\n\nimport './styles.scss';\n\nconst VIEWER_CODEBLOCK_CN = 'g-md-viewer-code-block';\nconst VIEWER_CODEBLOCK_BUTTON_CN = 'g-md-viewer-code-button';\nconst VIEWER_CODEBLOCK_FLOATING_CN = 'g-md-viewer-code-block-floating-container';\nconst CODEBLOCK_DEFAULT_SELECTOR = '.yfm-clipboard, .yfm-code-floating-container';\n\nexport type WithCodeBlockActionsOptions = {\n /** @default true */\n copyButton?: boolean;\n /** @default false */\n lineWrappingButton?: boolean;\n /** @default '.yfm-clipboard, .yfm-code-floating-container' */\n codeBlockSelector?: string;\n /** Override how text is copied */\n getCodeBlockText?: (element: HTMLElement) => string;\n};\n\nexport function withCodeBlockActions({\n copyButton = true,\n lineWrappingButton = false,\n codeBlockSelector = CODEBLOCK_DEFAULT_SELECTOR,\n getCodeBlockText = getCodeBlockTextDefault,\n}: WithCodeBlockActionsOptions) {\n return <T extends {html: string}>(\n Component: ComponentType<T & RefAttributes<HTMLDivElement>>,\n ) =>\n forwardRef<HTMLDivElement, T>(function WithCodeBlockActions(props, ref) {\n const {html} = props;\n const [codeBlockElements, setCodeBlockElements] = useState<HTMLElement[]>([]);\n\n const domRef = useRef<HTMLDivElement>(null);\n const componentRef = useForkRef(ref, domRef);\n\n useEffect(() => {\n if (!domRef.current) {\n setCodeBlockElements([]);\n return undefined;\n }\n\n const elements = Array.from(\n domRef.current.querySelectorAll<HTMLElement>(codeBlockSelector),\n );\n setCodeBlockElements(elements);\n const destructors = elements.map((element) => {\n element.classList.add(VIEWER_CODEBLOCK_CN);\n\n const container = element.appendChild(\n element.ownerDocument.createElement('div'),\n );\n container.classList.add(VIEWER_CODEBLOCK_FLOATING_CN);\n\n return () => {\n element.classList.remove(VIEWER_CODEBLOCK_CN);\n container.parentNode?.removeChild(container);\n };\n });\n\n return () => {\n destructors.forEach((destructor) => destructor());\n };\n }, [html]);\n\n return (\n <>\n <Component {...props} ref={componentRef} />\n {codeBlockElements.map((element, idx) => {\n const container = element.querySelector<HTMLElement>(\n `.${VIEWER_CODEBLOCK_FLOATING_CN}`,\n );\n if (!container) return null;\n\n const id = element.id;\n const line = element.dataset.line;\n\n return (\n <Portal key={id || line || idx} container={container}>\n {lineWrappingButton && (\n <CodeTextWrappingToggleButton\n codeElement={element}\n className={VIEWER_CODEBLOCK_BUTTON_CN}\n />\n )}\n {copyButton && (\n <ClipboardButton\n size=\"m\"\n text={() => getCodeBlockText(element)}\n className={VIEWER_CODEBLOCK_BUTTON_CN}\n />\n )}\n </Portal>\n );\n })}\n </>\n );\n });\n}\n\nfunction getCodeBlockTextDefault(element: HTMLElement) {\n const codeElem = element.querySelector<HTMLElement>('pre code');\n\n if (!codeElem) return '';\n\n return Array.from(codeElem.childNodes)\n .filter((node) => {\n // Skip line number spans\n if (node instanceof HTMLElement && node.classList.contains('yfm-line-number')) {\n return false;\n }\n return true;\n })\n .map((node) => node.textContent)\n .join('');\n}\n"]}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
white-space: pre-wrap;
|
|
6
6
|
}
|
|
7
7
|
.g-md-viewer-code-block .yfm-code-floating,
|
|
8
|
-
.g-md-viewer-code-block .yfm-clipboard-button
|
|
8
|
+
.g-md-viewer-code-block .yfm-clipboard-button, .g-md-viewer-code-block.yfm-clipboard .yfm-code-floating,
|
|
9
|
+
.g-md-viewer-code-block.yfm-clipboard .yfm-clipboard-button, .g-md-viewer-code-block.yfm-code-floating-container .yfm-code-floating,
|
|
10
|
+
.g-md-viewer-code-block.yfm-code-floating-container .yfm-clipboard-button {
|
|
9
11
|
display: none;
|
|
10
12
|
}
|
|
11
13
|
.g-md-viewer-code-block .g-md-viewer-code-block-floating-container {
|
|
@@ -22,6 +24,6 @@
|
|
|
22
24
|
flex-wrap: nowrap;
|
|
23
25
|
gap: var(--g-spacing-1);
|
|
24
26
|
}
|
|
25
|
-
.g-md-viewer-code-block:hover .g-md-viewer-code-block-floating-container {
|
|
27
|
+
.g-md-viewer-code-block:hover .g-md-viewer-code-block-floating-container, .g-md-viewer-code-block:has(.g-md-viewer-code-button:focus) .g-md-viewer-code-block-floating-container {
|
|
26
28
|
opacity: 1;
|
|
27
29
|
}
|
package/build/styles.css
CHANGED
|
@@ -1881,7 +1881,9 @@ body :has(.g-md-resizable_resizing) {
|
|
|
1881
1881
|
white-space: pre-wrap;
|
|
1882
1882
|
}
|
|
1883
1883
|
.g-md-viewer-code-block .yfm-code-floating,
|
|
1884
|
-
.g-md-viewer-code-block .yfm-clipboard-button
|
|
1884
|
+
.g-md-viewer-code-block .yfm-clipboard-button, .g-md-viewer-code-block.yfm-clipboard .yfm-code-floating,
|
|
1885
|
+
.g-md-viewer-code-block.yfm-clipboard .yfm-clipboard-button, .g-md-viewer-code-block.yfm-code-floating-container .yfm-code-floating,
|
|
1886
|
+
.g-md-viewer-code-block.yfm-code-floating-container .yfm-clipboard-button {
|
|
1885
1887
|
display: none;
|
|
1886
1888
|
}
|
|
1887
1889
|
.g-md-viewer-code-block .g-md-viewer-code-block-floating-container {
|
|
@@ -1898,7 +1900,7 @@ body :has(.g-md-resizable_resizing) {
|
|
|
1898
1900
|
flex-wrap: nowrap;
|
|
1899
1901
|
gap: var(--g-spacing-1);
|
|
1900
1902
|
}
|
|
1901
|
-
.g-md-viewer-code-block:hover .g-md-viewer-code-block-floating-container {
|
|
1903
|
+
.g-md-viewer-code-block:hover .g-md-viewer-code-block-floating-container, .g-md-viewer-code-block:has(.g-md-viewer-code-button:focus) .g-md-viewer-code-block-floating-container {
|
|
1902
1904
|
opacity: 1;
|
|
1903
1905
|
}
|
|
1904
1906
|
.ProseMirror .pm-h-folding-hidden,
|