@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.
Files changed (56) hide show
  1. package/build/cjs/bundle/wysiwyg-preset.js +6 -1
  2. package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
  3. package/build/cjs/extensions/behavior/Clipboard/clipboard.d.ts +1 -1
  4. package/build/cjs/extensions/behavior/Clipboard/clipboard.js +30 -26
  5. package/build/cjs/extensions/behavior/Clipboard/clipboard.js.map +1 -1
  6. package/build/cjs/extensions/behavior/Clipboard/trim-selection.d.ts +1 -0
  7. package/build/cjs/extensions/behavior/Clipboard/trim-selection.js +55 -0
  8. package/build/cjs/extensions/behavior/Clipboard/trim-selection.js.map +1 -0
  9. package/build/cjs/extensions/behavior/Search/Search.d.ts +1 -1
  10. package/build/cjs/extensions/behavior/Search/Search.js.map +1 -1
  11. package/build/cjs/extensions/behavior/Search/SearchViewPlugin.d.ts +1 -0
  12. package/build/cjs/extensions/behavior/Search/SearchViewPlugin.js +4 -1
  13. package/build/cjs/extensions/behavior/Search/SearchViewPlugin.js.map +1 -1
  14. package/build/cjs/markup/codemirror/create.js +1 -0
  15. package/build/cjs/markup/codemirror/create.js.map +1 -1
  16. package/build/cjs/markup/codemirror/search-plugin/plugin.d.ts +1 -0
  17. package/build/cjs/markup/codemirror/search-plugin/plugin.js +4 -1
  18. package/build/cjs/markup/codemirror/search-plugin/plugin.js.map +1 -1
  19. package/build/cjs/version.js +1 -1
  20. package/build/cjs/version.js.map +1 -1
  21. package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.d.ts +3 -2
  22. package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.js +2 -2
  23. package/build/cjs/view/hocs/withCodeBlockActions/TextWrappingButton.js.map +1 -1
  24. package/build/cjs/view/hocs/withCodeBlockActions/index.d.ts +1 -1
  25. package/build/cjs/view/hocs/withCodeBlockActions/index.js +3 -2
  26. package/build/cjs/view/hocs/withCodeBlockActions/index.js.map +1 -1
  27. package/build/cjs/view/hocs/withCodeBlockActions/styles.css +4 -2
  28. package/build/esm/bundle/wysiwyg-preset.js +6 -1
  29. package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
  30. package/build/esm/extensions/behavior/Clipboard/clipboard.d.ts +1 -1
  31. package/build/esm/extensions/behavior/Clipboard/clipboard.js +12 -8
  32. package/build/esm/extensions/behavior/Clipboard/clipboard.js.map +1 -1
  33. package/build/esm/extensions/behavior/Clipboard/trim-selection.d.ts +1 -0
  34. package/build/esm/extensions/behavior/Clipboard/trim-selection.js +51 -0
  35. package/build/esm/extensions/behavior/Clipboard/trim-selection.js.map +1 -0
  36. package/build/esm/extensions/behavior/Search/Search.d.ts +1 -1
  37. package/build/esm/extensions/behavior/Search/Search.js.map +1 -1
  38. package/build/esm/extensions/behavior/Search/SearchViewPlugin.d.ts +1 -0
  39. package/build/esm/extensions/behavior/Search/SearchViewPlugin.js +4 -1
  40. package/build/esm/extensions/behavior/Search/SearchViewPlugin.js.map +1 -1
  41. package/build/esm/markup/codemirror/create.js +1 -0
  42. package/build/esm/markup/codemirror/create.js.map +1 -1
  43. package/build/esm/markup/codemirror/search-plugin/plugin.d.ts +1 -0
  44. package/build/esm/markup/codemirror/search-plugin/plugin.js +4 -1
  45. package/build/esm/markup/codemirror/search-plugin/plugin.js.map +1 -1
  46. package/build/esm/version.js +1 -1
  47. package/build/esm/version.js.map +1 -1
  48. package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.d.ts +3 -2
  49. package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.js +2 -2
  50. package/build/esm/view/hocs/withCodeBlockActions/TextWrappingButton.js.map +1 -1
  51. package/build/esm/view/hocs/withCodeBlockActions/index.d.ts +1 -1
  52. package/build/esm/view/hocs/withCodeBlockActions/index.js +3 -2
  53. package/build/esm/view/hocs/withCodeBlockActions/index.js.map +1 -1
  54. package/build/esm/view/hocs/withCodeBlockActions/styles.css +4 -2
  55. package/build/styles.css +4 -2
  56. package/package.json +1 -1
@@ -1 +1 @@
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_FLOATING_CN = 'g-md-viewer-code-block-floating-container';\nconst CODEBLOCK_DEFAULT_SELECTOR = '.yfm-code-floating-container';\n\nexport type WithCodeBlockActionsOptions = {\n /** @default true */\n copyButton?: boolean;\n /** @default false */\n lineWrappingButton?: boolean;\n /** @default '.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 codeElement={element} />\n )}\n {copyButton && (\n <ClipboardButton\n size=\"m\"\n text={() => getCodeBlockText(element)}\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"]}
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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/markdown-editor",
3
- "version": "15.33.0",
3
+ "version": "15.34.1",
4
4
  "description": "Markdown wysiwyg and markup editor",
5
5
  "license": "MIT",
6
6
  "repository": {