@gravity-ui/markdown-editor 15.14.1 → 15.15.0

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 (65) hide show
  1. package/build/cjs/bundle/toolbar/ToolbarButtonWithPopupMenu.d.ts +1 -0
  2. package/build/cjs/bundle/toolbar/ToolbarButtonWithPopupMenu.js +2 -2
  3. package/build/cjs/bundle/toolbar/ToolbarButtonWithPopupMenu.js.map +1 -1
  4. package/build/cjs/bundle/toolbar/ToolbarSelect.js +2 -2
  5. package/build/cjs/bundle/toolbar/ToolbarSelect.js.map +1 -1
  6. package/build/cjs/bundle/toolbar/custom/ToolbarColors.js +1 -1
  7. package/build/cjs/bundle/toolbar/custom/ToolbarColors.js.map +1 -1
  8. package/build/cjs/bundle/toolbar/wysiwyg/WToolbarTextSelect.js +1 -1
  9. package/build/cjs/bundle/toolbar/wysiwyg/WToolbarTextSelect.js.map +1 -1
  10. package/build/cjs/extensions/markdown/Link/paste-plugin.js +8 -2
  11. package/build/cjs/extensions/markdown/Link/paste-plugin.js.map +1 -1
  12. package/build/cjs/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.js +1 -1
  13. package/build/cjs/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.js.map +1 -1
  14. package/build/cjs/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.js +1 -1
  15. package/build/cjs/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.js.map +1 -1
  16. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js +2 -1
  17. package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  18. package/build/cjs/extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.js +1 -1
  19. package/build/cjs/extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.js.map +1 -1
  20. package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.d.ts +2 -1
  21. package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.js +12 -1
  22. package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.js.map +1 -1
  23. package/build/cjs/forms/TextInput.js +1 -1
  24. package/build/cjs/forms/TextInput.js.map +1 -1
  25. package/build/cjs/toolbar/ToolbarGroup.js +1 -1
  26. package/build/cjs/toolbar/ToolbarGroup.js.map +1 -1
  27. package/build/cjs/toolbar/ToolbarListButton.js +2 -1
  28. package/build/cjs/toolbar/ToolbarListButton.js.map +1 -1
  29. package/build/cjs/version.js +1 -1
  30. package/build/cjs/version.js.map +1 -1
  31. package/build/cjs/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js +1 -1
  32. package/build/cjs/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js.map +1 -1
  33. package/build/esm/bundle/toolbar/ToolbarButtonWithPopupMenu.d.ts +1 -0
  34. package/build/esm/bundle/toolbar/ToolbarButtonWithPopupMenu.js +2 -2
  35. package/build/esm/bundle/toolbar/ToolbarButtonWithPopupMenu.js.map +1 -1
  36. package/build/esm/bundle/toolbar/ToolbarSelect.js +2 -2
  37. package/build/esm/bundle/toolbar/ToolbarSelect.js.map +1 -1
  38. package/build/esm/bundle/toolbar/custom/ToolbarColors.js +1 -1
  39. package/build/esm/bundle/toolbar/custom/ToolbarColors.js.map +1 -1
  40. package/build/esm/bundle/toolbar/wysiwyg/WToolbarTextSelect.js +1 -1
  41. package/build/esm/bundle/toolbar/wysiwyg/WToolbarTextSelect.js.map +1 -1
  42. package/build/esm/extensions/markdown/Link/paste-plugin.js +8 -2
  43. package/build/esm/extensions/markdown/Link/paste-plugin.js.map +1 -1
  44. package/build/esm/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.js +1 -1
  45. package/build/esm/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.js.map +1 -1
  46. package/build/esm/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.js +1 -1
  47. package/build/esm/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.js.map +1 -1
  48. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js +2 -1
  49. package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
  50. package/build/esm/extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.js +1 -1
  51. package/build/esm/extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.js.map +1 -1
  52. package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.d.ts +2 -1
  53. package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.js +12 -1
  54. package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.js.map +1 -1
  55. package/build/esm/forms/TextInput.js +1 -1
  56. package/build/esm/forms/TextInput.js.map +1 -1
  57. package/build/esm/toolbar/ToolbarGroup.js +1 -1
  58. package/build/esm/toolbar/ToolbarGroup.js.map +1 -1
  59. package/build/esm/toolbar/ToolbarListButton.js +2 -1
  60. package/build/esm/toolbar/ToolbarListButton.js.map +1 -1
  61. package/build/esm/version.js +1 -1
  62. package/build/esm/version.js.map +1 -1
  63. package/build/esm/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js +1 -1
  64. package/build/esm/view/hooks/useYfmShowElemWithId/useYfmShowElemWithId.js.map +1 -1
  65. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarListButton.js","sourceRoot":"../../../src","sources":["toolbar/ToolbarListButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Fragment, useEffect, useState} from 'react';\n\nimport {ChevronDown} from '@gravity-ui/icons';\nimport {HelpMark, Hotkey, Icon, Menu, Popover, Popup} from '@gravity-ui/uikit';\n\nimport {cn} from '../classname';\nimport {i18n} from '../i18n/common';\nimport {isFunction} from '../lodash';\nimport {useBooleanState, useElementState} from '../react-utils/hooks';\n\nimport {PreviewTooltip} from './PreviewTooltip';\nimport {ToolbarButtonView} from './ToolbarButton';\nimport type {\n ToolbarBaseProps,\n ToolbarButtonPopupData,\n ToolbarItemData,\n ToolbarListButtonData,\n} from './types';\n\nimport './ToolbarListButton.scss';\n\nconst b = cn('toolbar-list-button');\n\nexport type {ToolbarListButtonData};\n\nexport type ToolbarListButtonProps<E> = ToolbarBaseProps<E> &\n ToolbarListButtonData<E> & {\n qaMenu?: string;\n qaActionDisabledPopover?: string;\n };\n\nexport function ToolbarListButton<E>({\n className,\n editor,\n focus,\n onClick,\n icon,\n title,\n withArrow,\n data,\n alwaysActive,\n replaceActiveIcon,\n qa,\n qaMenu,\n qaActionDisabledPopover = 'g-md-toolbar-action-disabled-hint',\n}: ToolbarListButtonProps<E>) {\n const [anchorElement, setAnchorElement] = useElementState();\n const [open, , hide, toggleOpen] = useBooleanState(false);\n const [popupItem, setPopupItem] = useState<ToolbarButtonPopupData<E>>();\n\n const everyDisabled = alwaysActive ? false : data.every((item) => !item.isEnable(editor));\n const popupOpen = everyDisabled ? false : open;\n const shouldForceHide = open && !popupOpen;\n\n useEffect(() => {\n if (shouldForceHide) {\n hide();\n }\n }, [hide, shouldForceHide]);\n\n if (data.length === 0) return null;\n\n const activeItem = data.find((item) => item.isActive(editor) && !item.doNotActivateList);\n const someActive = alwaysActive ? false : Boolean(activeItem);\n\n if (replaceActiveIcon && someActive && activeItem) {\n icon = activeItem.icon;\n }\n\n const buttonContent = [<Icon key={1} data={icon.data} size={icon.size ?? 16} />];\n if (withArrow) {\n buttonContent.push(<Fragment key={2}>{''}</Fragment>);\n buttonContent.push(<Icon key={3} data={ChevronDown} size={16} />);\n }\n\n return (\n <>\n <ToolbarButtonView\n qa={qa}\n ref={setAnchorElement}\n active={someActive}\n enabled={!everyDisabled}\n title={title}\n className={b({arrow: withArrow}, [className])}\n onClick={() => {\n if (popupItem) setPopupItem(undefined);\n else toggleOpen();\n }}\n >\n {buttonContent}\n </ToolbarButtonView>\n <Popup anchorElement={anchorElement} open={popupOpen} onOpenChange={hide}>\n <Menu size=\"l\" className={b('menu')} qa={qaMenu}>\n {data\n .map((data) => {\n const {\n id,\n title,\n icon,\n hotkey,\n isActive,\n isEnable,\n exec,\n hint,\n hintWhenDisabled,\n preview,\n } = data;\n\n const titleText = isFunction(title) ? title() : title;\n const hintText = isFunction(hint) ? hint() : hint;\n\n const disabled = !isEnable(editor);\n\n const hideHintWhenDisabled = hintWhenDisabled === false || !disabled;\n const hintWhenDisabledText =\n typeof hintWhenDisabled === 'string'\n ? hintWhenDisabled\n : typeof hintWhenDisabled === 'function'\n ? hintWhenDisabled()\n : i18n('toolbar_action_disabled');\n\n const handleClick = () => {\n hide();\n\n if (isPopupItem(data)) {\n setPopupItem(data);\n } else {\n setPopupItem(undefined);\n focus();\n exec(editor);\n onClick?.(id);\n }\n };\n\n return (\n <Popover\n className={b('action-disabled-popover')}\n content={\n <div className={b('action-disabled-tooltip')}>\n {hintWhenDisabledText}\n </div>\n }\n placement=\"left\"\n modal={false}\n disabled={hideHintWhenDisabled}\n qa={qaActionDisabledPopover}\n key={id}\n >\n {(props, ref) => (\n <PreviewTooltip preview={preview}>\n <Menu.Item\n key={id}\n ref={ref}\n active={isActive(editor)}\n disabled={!isEnable(editor)}\n onClick={handleClick}\n iconStart={\n <Icon data={icon.data} size={icon.size ?? 16} />\n }\n extraProps={{\n ...props,\n 'aria-label': titleText,\n }}\n >\n <div className={b('item')}>\n {titleText}\n <div className={b('extra')}>\n {hotkey && <Hotkey value={hotkey} />}\n {hintText && (\n <HelpMark\n className={b('hint')}\n popoverProps={{modal: false}}\n >\n {hintText}\n </HelpMark>\n )}\n </div>\n </div>\n </Menu.Item>\n </PreviewTooltip>\n )}\n </Popover>\n );\n })\n .filter(Boolean)}\n </Menu>\n </Popup>\n {popupItem\n ? popupItem.renderPopup({\n ...popupItem,\n editor,\n focus,\n onClick,\n anchorElement,\n hide: () => setPopupItem(undefined),\n })\n : null}\n </>\n );\n}\n\nfunction isPopupItem<E>(item: ToolbarItemData<E>): item is ToolbarButtonPopupData<E> {\n return Boolean((item as ToolbarButtonPopupData<E>).renderPopup);\n}\n"]}
1
+ {"version":3,"file":"ToolbarListButton.js","sourceRoot":"../../../src","sources":["toolbar/ToolbarListButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Fragment, useEffect, useState} from 'react';\n\nimport {ChevronDown} from '@gravity-ui/icons';\nimport {HelpMark, Hotkey, Icon, Menu, Popover, Popup} from '@gravity-ui/uikit';\n\nimport {cn} from '../classname';\nimport {i18n} from '../i18n/common';\nimport {isFunction} from '../lodash';\nimport {useBooleanState, useElementState} from '../react-utils/hooks';\n\nimport {PreviewTooltip} from './PreviewTooltip';\nimport {ToolbarButtonView} from './ToolbarButton';\nimport type {\n ToolbarBaseProps,\n ToolbarButtonPopupData,\n ToolbarItemData,\n ToolbarListButtonData,\n} from './types';\n\nimport './ToolbarListButton.scss';\n\nconst b = cn('toolbar-list-button');\n\nexport type {ToolbarListButtonData};\n\nexport type ToolbarListButtonProps<E> = ToolbarBaseProps<E> &\n ToolbarListButtonData<E> & {\n qaMenu?: string;\n qaActionDisabledPopover?: string;\n };\n\nexport function ToolbarListButton<E>({\n className,\n editor,\n focus,\n onClick,\n icon,\n title,\n withArrow,\n data,\n alwaysActive,\n replaceActiveIcon,\n qa,\n qaMenu,\n qaActionDisabledPopover = 'g-md-toolbar-action-disabled-hint',\n}: ToolbarListButtonProps<E>) {\n const [anchorElement, setAnchorElement] = useElementState();\n const [open, , hide, toggleOpen] = useBooleanState(false);\n const [popupItem, setPopupItem] = useState<ToolbarButtonPopupData<E>>();\n\n const everyDisabled = alwaysActive ? false : data.every((item) => !item.isEnable(editor));\n const popupOpen = everyDisabled ? false : open;\n const shouldForceHide = open && !popupOpen;\n\n useEffect(() => {\n if (shouldForceHide) {\n hide();\n }\n }, [hide, shouldForceHide]);\n\n if (data.length === 0) return null;\n\n const activeItem = data.find((item) => item.isActive(editor) && !item.doNotActivateList);\n const someActive = alwaysActive ? false : Boolean(activeItem);\n\n if (replaceActiveIcon && someActive && activeItem) {\n icon = activeItem.icon;\n }\n\n const buttonContent = [<Icon key={1} data={icon.data} size={icon.size ?? 16} />];\n if (withArrow) {\n buttonContent.push(<Fragment key={2}>{''}</Fragment>);\n buttonContent.push(<Icon key={3} data={ChevronDown} size={16} />);\n }\n const titleText: string = isFunction(title) ? title() : title;\n\n return (\n <>\n <ToolbarButtonView\n qa={qa}\n ref={setAnchorElement}\n active={someActive}\n enabled={!everyDisabled}\n title={title}\n className={b({arrow: withArrow}, [className])}\n onClick={() => {\n if (popupItem) setPopupItem(undefined);\n else toggleOpen();\n }}\n >\n {buttonContent}\n </ToolbarButtonView>\n <Popup anchorElement={anchorElement} open={popupOpen} onOpenChange={hide}>\n <Menu size=\"l\" className={b('menu')} qa={qaMenu} data-toolbar-menu-for={titleText}>\n {data\n .map((data) => {\n const {\n id,\n title,\n icon,\n hotkey,\n isActive,\n isEnable,\n exec,\n hint,\n hintWhenDisabled,\n preview,\n } = data;\n\n const titleText = isFunction(title) ? title() : title;\n const hintText = isFunction(hint) ? hint() : hint;\n\n const disabled = !isEnable(editor);\n\n const hideHintWhenDisabled = hintWhenDisabled === false || !disabled;\n const hintWhenDisabledText =\n typeof hintWhenDisabled === 'string'\n ? hintWhenDisabled\n : typeof hintWhenDisabled === 'function'\n ? hintWhenDisabled()\n : i18n('toolbar_action_disabled');\n\n const handleClick = () => {\n hide();\n\n if (isPopupItem(data)) {\n setPopupItem(data);\n } else {\n setPopupItem(undefined);\n focus();\n exec(editor);\n onClick?.(id);\n }\n };\n\n return (\n <Popover\n className={b('action-disabled-popover')}\n content={\n <div className={b('action-disabled-tooltip')}>\n {hintWhenDisabledText}\n </div>\n }\n placement=\"left\"\n modal={false}\n disabled={hideHintWhenDisabled}\n qa={qaActionDisabledPopover}\n key={id}\n >\n {(props, ref) => (\n <PreviewTooltip preview={preview}>\n <Menu.Item\n key={id}\n ref={ref}\n active={isActive(editor)}\n disabled={!isEnable(editor)}\n onClick={handleClick}\n iconStart={\n <Icon data={icon.data} size={icon.size ?? 16} />\n }\n extraProps={{\n ...props,\n 'aria-label': titleText,\n }}\n >\n <div className={b('item')}>\n {titleText}\n <div className={b('extra')}>\n {hotkey && <Hotkey value={hotkey} />}\n {hintText && (\n <HelpMark\n className={b('hint')}\n popoverProps={{modal: false}}\n >\n {hintText}\n </HelpMark>\n )}\n </div>\n </div>\n </Menu.Item>\n </PreviewTooltip>\n )}\n </Popover>\n );\n })\n .filter(Boolean)}\n </Menu>\n </Popup>\n {popupItem\n ? popupItem.renderPopup({\n ...popupItem,\n editor,\n focus,\n onClick,\n anchorElement,\n hide: () => setPopupItem(undefined),\n })\n : null}\n </>\n );\n}\n\nfunction isPopupItem<E>(item: ToolbarItemData<E>): item is ToolbarButtonPopupData<E> {\n return Boolean((item as ToolbarButtonPopupData<E>).renderPopup);\n}\n"]}
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  /** During build process, the current version will be injected here */
5
- exports.VERSION = typeof '15.14.1' !== 'undefined' ? '15.14.1' : 'unknown';
5
+ exports.VERSION = typeof '15.15.0' !== 'undefined' ? '15.15.0' : 'unknown';
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACzD,QAAA,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.14.1' !== 'undefined' ? '15.14.1' : 'unknown';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACzD,QAAA,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.15.0' !== 'undefined' ? '15.15.0' : 'unknown';\n"]}
@@ -24,7 +24,7 @@ function useYfmShowElemWithId(ref, id) {
24
24
  const { current: containerDom } = ref;
25
25
  if (!id || !containerDom)
26
26
  return;
27
- let elem = document.getElementById(id);
27
+ let elem = document.getElementById(id) ?? document.querySelector(`[name="${id}"]`);
28
28
  if (!elem || !containerDom.contains(elem))
29
29
  return;
30
30
  while (elem && elem !== containerDom) {
@@ -1 +1 @@
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"]}
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) ?? document.querySelector(`[name=\"${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"]}
@@ -20,5 +20,6 @@ export type ToolbarButtonWithPopupMenuProps = Omit<ToolbarBaseProps<never> & Pic
20
20
  menuItems: MenuItem[];
21
21
  /** @default 'classic' */
22
22
  _selectionType?: 'classic' | 'light';
23
+ qaMenu?: string;
23
24
  }, 'editor'>;
24
25
  export declare const ToolbarButtonWithPopupMenu: React.FC<ToolbarButtonWithPopupMenuProps>;
@@ -8,7 +8,7 @@ import { useBooleanState, useElementState } from "../../react-utils/hooks.js";
8
8
  import { ToolbarTooltipDelay } from "../../toolbar/index.js";
9
9
  import "./ToolbarButtonWithPopupMenu.css";
10
10
  const b = cn('toolbar-button-with-popup-menu');
11
- export const ToolbarButtonWithPopupMenu = ({ disablePortal, className, focus, onClick, icon, iconClassName, chevronIconClassName, title, menuItems, _selectionType, qa, ...props }) => {
11
+ export const ToolbarButtonWithPopupMenu = ({ disablePortal, className, focus, onClick, icon, iconClassName, chevronIconClassName, title, menuItems, _selectionType, qa, qaMenu, ...props }) => {
12
12
  const [anchorElement, setAnchorElement] = useElementState();
13
13
  const [open, , hide, toggleOpen] = useBooleanState(false);
14
14
  const groups = useMemo(() => groupBy(menuItems.map((i) => ({ ...i, group: i.group || '' })), 'group'), [menuItems]);
@@ -31,7 +31,7 @@ export const ToolbarButtonWithPopupMenu = ({ disablePortal, className, focus, on
31
31
  return (_jsxs(_Fragment, { children: [_jsx(ActionTooltip, { disabled: popupOpen, openDelay: ToolbarTooltipDelay.Open, closeDelay: ToolbarTooltipDelay.Close, title: textTitle, children: _jsxs(Button, { size: "m", ref: setAnchorElement, view: btnView, selected: btnSelected, disabled: everyDisabled, className: b(null, [className]), onClick: toggleOpen, "aria-label": textTitle, qa: qa, ...props, children: [_jsx(Icon, { data: icon.data, size: icon.size, className: iconClassName }), '', _jsx(Icon, { data: ChevronDown, className: chevronIconClassName })] }) }), _jsx(Popup, { open: popupOpen, disablePortal: disablePortal, anchorElement: anchorElement, onOpenChange: (open) => {
32
32
  if (!open)
33
33
  hide();
34
- }, children: _jsx(Menu, { size: "l", children: Object.entries(groups).map(([label, items], key) => {
34
+ }, children: _jsx(Menu, { size: "l", qa: qaMenu, "data-toolbar-menu-for": textTitle, children: Object.entries(groups).map(([label, items], key) => {
35
35
  return (_jsx(Menu.Group, { label: label, className: b('menu-group'), children: items.map(({ id, icon, iconSize = 16, action, text, iconClassname }) => (_jsx(Menu.Item, { iconStart: _jsx(Icon, { data: icon, size: iconSize, className: iconClassname }), active: action.isActive(), disabled: !action.isEnable(), onClick: () => {
36
36
  hide();
37
37
  focus();
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarButtonWithPopupMenu.js","sourceRoot":"../../../../src","sources":["bundle/toolbar/ToolbarButtonWithPopupMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useMemo} from 'react';\n\nimport {ChevronDown} from '@gravity-ui/icons';\nimport {\n ActionTooltip,\n Button,\n Icon,\n type IconProps,\n Menu,\n Popup,\n type PopupProps,\n} from '@gravity-ui/uikit';\n\nimport {cn} from '../../classname';\nimport type {Action} from '../../core';\nimport {groupBy, isFunction} from '../../lodash';\nimport {useBooleanState, useElementState} from '../../react-utils/hooks';\nimport {type ToolbarBaseProps, type ToolbarIconData, ToolbarTooltipDelay} from '../../toolbar';\n\nimport './ToolbarButtonWithPopupMenu.scss';\nconst b = cn('toolbar-button-with-popup-menu');\n\nexport type MenuItem = {\n id: string;\n action: Action;\n icon: IconProps['data'];\n text: string;\n iconSize?: IconProps['size'];\n iconClassname?: string;\n group?: string;\n ignoreActive?: boolean;\n};\n\nexport type ToolbarButtonWithPopupMenuProps = Omit<\n ToolbarBaseProps<never> &\n Pick<PopupProps, 'disablePortal'> & {\n icon: ToolbarIconData;\n iconClassName?: string;\n chevronIconClassName?: string;\n title: string | (() => string);\n menuItems: MenuItem[];\n /** @default 'classic' */\n _selectionType?: 'classic' | 'light';\n },\n 'editor'\n>;\n\nexport const ToolbarButtonWithPopupMenu: React.FC<ToolbarButtonWithPopupMenuProps> = ({\n disablePortal,\n className,\n focus,\n onClick,\n icon,\n iconClassName,\n chevronIconClassName,\n title,\n menuItems,\n _selectionType,\n qa,\n ...props\n}) => {\n const [anchorElement, setAnchorElement] = useElementState();\n const [open, , hide, toggleOpen] = useBooleanState(false);\n const groups = useMemo(\n () =>\n groupBy(\n menuItems.map((i) => ({...i, group: i.group || ''})),\n 'group',\n ),\n [menuItems],\n );\n\n const someActive = menuItems.some(\n (item) => !item.ignoreActive && item.action.isActive() === true,\n );\n const everyDisabled = menuItems.every((item) => item.action.isEnable() === false);\n\n const popupOpen = everyDisabled ? false : open;\n const shouldForceHide = open && !popupOpen;\n useEffect(() => {\n if (shouldForceHide) {\n hide();\n }\n }, [hide, shouldForceHide]);\n\n const [btnView, btnSelected] =\n _selectionType === 'light'\n ? ([\n popupOpen ? 'normal' : someActive ? 'flat-action' : 'flat',\n popupOpen && someActive,\n ] as const)\n : ([someActive || popupOpen ? 'normal' : 'flat', someActive] as const);\n\n const textTitle = isFunction(title) ? title() : title;\n\n return (\n <>\n <ActionTooltip\n disabled={popupOpen}\n openDelay={ToolbarTooltipDelay.Open}\n closeDelay={ToolbarTooltipDelay.Close}\n title={textTitle}\n >\n <Button\n size=\"m\"\n ref={setAnchorElement}\n view={btnView}\n selected={btnSelected}\n disabled={everyDisabled}\n className={b(null, [className])}\n onClick={toggleOpen}\n aria-label={textTitle}\n qa={qa}\n {...props}\n >\n <Icon data={icon.data} size={icon.size} className={iconClassName} />\n {''}\n <Icon data={ChevronDown} className={chevronIconClassName} />\n </Button>\n </ActionTooltip>\n <Popup\n open={popupOpen}\n disablePortal={disablePortal}\n anchorElement={anchorElement}\n onOpenChange={(open) => {\n if (!open) hide();\n }}\n >\n <Menu size=\"l\">\n {Object.entries(groups).map(([label, items], key) => {\n return (\n <Menu.Group label={label} key={key} className={b('menu-group')}>\n {items.map(\n ({id, icon, iconSize = 16, action, text, iconClassname}) => (\n <Menu.Item\n key={id}\n iconStart={\n <Icon\n data={icon}\n size={iconSize}\n className={iconClassname}\n />\n }\n active={action.isActive()}\n disabled={!action.isEnable()}\n onClick={() => {\n hide();\n focus();\n action.run();\n onClick?.(id);\n }}\n extraProps={{'aria-label': text}}\n >\n {text}\n </Menu.Item>\n ),\n )}\n </Menu.Group>\n );\n })}\n </Menu>\n </Popup>\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"ToolbarButtonWithPopupMenu.js","sourceRoot":"../../../../src","sources":["bundle/toolbar/ToolbarButtonWithPopupMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useMemo} from 'react';\n\nimport {ChevronDown} from '@gravity-ui/icons';\nimport {\n ActionTooltip,\n Button,\n Icon,\n type IconProps,\n Menu,\n Popup,\n type PopupProps,\n} from '@gravity-ui/uikit';\n\nimport {cn} from '../../classname';\nimport type {Action} from '../../core';\nimport {groupBy, isFunction} from '../../lodash';\nimport {useBooleanState, useElementState} from '../../react-utils/hooks';\nimport {type ToolbarBaseProps, type ToolbarIconData, ToolbarTooltipDelay} from '../../toolbar';\n\nimport './ToolbarButtonWithPopupMenu.scss';\nconst b = cn('toolbar-button-with-popup-menu');\n\nexport type MenuItem = {\n id: string;\n action: Action;\n icon: IconProps['data'];\n text: string;\n iconSize?: IconProps['size'];\n iconClassname?: string;\n group?: string;\n ignoreActive?: boolean;\n};\n\nexport type ToolbarButtonWithPopupMenuProps = Omit<\n ToolbarBaseProps<never> &\n Pick<PopupProps, 'disablePortal'> & {\n icon: ToolbarIconData;\n iconClassName?: string;\n chevronIconClassName?: string;\n title: string | (() => string);\n menuItems: MenuItem[];\n /** @default 'classic' */\n _selectionType?: 'classic' | 'light';\n qaMenu?: string;\n },\n 'editor'\n>;\n\nexport const ToolbarButtonWithPopupMenu: React.FC<ToolbarButtonWithPopupMenuProps> = ({\n disablePortal,\n className,\n focus,\n onClick,\n icon,\n iconClassName,\n chevronIconClassName,\n title,\n menuItems,\n _selectionType,\n qa,\n qaMenu,\n ...props\n}) => {\n const [anchorElement, setAnchorElement] = useElementState();\n const [open, , hide, toggleOpen] = useBooleanState(false);\n const groups = useMemo(\n () =>\n groupBy(\n menuItems.map((i) => ({...i, group: i.group || ''})),\n 'group',\n ),\n [menuItems],\n );\n\n const someActive = menuItems.some(\n (item) => !item.ignoreActive && item.action.isActive() === true,\n );\n const everyDisabled = menuItems.every((item) => item.action.isEnable() === false);\n\n const popupOpen = everyDisabled ? false : open;\n const shouldForceHide = open && !popupOpen;\n useEffect(() => {\n if (shouldForceHide) {\n hide();\n }\n }, [hide, shouldForceHide]);\n\n const [btnView, btnSelected] =\n _selectionType === 'light'\n ? ([\n popupOpen ? 'normal' : someActive ? 'flat-action' : 'flat',\n popupOpen && someActive,\n ] as const)\n : ([someActive || popupOpen ? 'normal' : 'flat', someActive] as const);\n\n const textTitle = isFunction(title) ? title() : title;\n\n return (\n <>\n <ActionTooltip\n disabled={popupOpen}\n openDelay={ToolbarTooltipDelay.Open}\n closeDelay={ToolbarTooltipDelay.Close}\n title={textTitle}\n >\n <Button\n size=\"m\"\n ref={setAnchorElement}\n view={btnView}\n selected={btnSelected}\n disabled={everyDisabled}\n className={b(null, [className])}\n onClick={toggleOpen}\n aria-label={textTitle}\n qa={qa}\n {...props}\n >\n <Icon data={icon.data} size={icon.size} className={iconClassName} />\n {''}\n <Icon data={ChevronDown} className={chevronIconClassName} />\n </Button>\n </ActionTooltip>\n <Popup\n open={popupOpen}\n disablePortal={disablePortal}\n anchorElement={anchorElement}\n onOpenChange={(open) => {\n if (!open) hide();\n }}\n >\n <Menu size=\"l\" qa={qaMenu} data-toolbar-menu-for={textTitle}>\n {Object.entries(groups).map(([label, items], key) => {\n return (\n <Menu.Group label={label} key={key} className={b('menu-group')}>\n {items.map(\n ({id, icon, iconSize = 16, action, text, iconClassname}) => (\n <Menu.Item\n key={id}\n iconStart={\n <Icon\n data={icon}\n size={iconSize}\n className={iconClassname}\n />\n }\n active={action.isActive()}\n disabled={!action.isEnable()}\n onClick={() => {\n hide();\n focus();\n action.run();\n onClick?.(id);\n }}\n extraProps={{'aria-label': text}}\n >\n {text}\n </Menu.Item>\n ),\n )}\n </Menu.Group>\n );\n })}\n </Menu>\n </Popup>\n </>\n );\n};\n"]}
@@ -5,9 +5,9 @@ import { isFunction } from "../../lodash.js";
5
5
  import { PreviewTooltip } from "../../toolbar/PreviewTooltip.js";
6
6
  import "./ToolbarSelect.css";
7
7
  const b = cn('toolbar-select');
8
- export const ToolbarSelect = ({ disablePortal, className, editor, focus, onClick, items, }) => {
8
+ export const ToolbarSelect = ({ disablePortal, className, editor, focus, onClick, items, qa, }) => {
9
9
  const activeItem = items.find((item) => item.isActive(editor));
10
- return (_jsx(_Fragment, { children: _jsx(Select, { size: "m", view: "clear", className: className, disablePortal: disablePortal, onOpenChange: focus, value: activeItem ? [activeItem.id] : undefined, options: items.map((item) => ({
10
+ return (_jsx(_Fragment, { children: _jsx(Select, { qa: qa, size: "m", view: "clear", className: className, disablePortal: disablePortal, onOpenChange: focus, value: activeItem ? [activeItem.id] : undefined, options: items.map((item) => ({
11
11
  data: item,
12
12
  value: item.id,
13
13
  text: isFunction(item.title) ? item.title() : item.title,
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarSelect.js","sourceRoot":"../../../../src","sources":["bundle/toolbar/ToolbarSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EACH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,EAAE,EAAC,2BAAwB;AACnC,OAAO,EAAC,UAAU,EAAC,wBAAqB;AACxC,OAAO,EAAC,cAAc,EAAC,wCAAqC;AAI5D,6BAA8B;AAE9B,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAO/B,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EACxD,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,GACR,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/D,OAAO,CACH,4BACI,KAAC,MAAM,IACH,IAAI,EAAC,GAAG,EACR,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAC/C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,EAAE;gBACd,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;aAC3D,CAAC,CAAC,EACH,YAAY,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,EAAE,EAAE;gBAC3B,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,GAAG,IAAwB,CAAC;gBAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,OAAO,CACH,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,YAC5B,6BAAiB,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACvC,cAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAC1B,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,GAAI,GAC1D,EACN,eAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,aAC5B,IAAI,EACL,eAAK,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,aAC1B,MAAM,IAAI,KAAC,MAAM,IAAC,KAAK,EAAE,MAAM,GAAI,EACnC,QAAQ,IAAI,CACT,KAAC,QAAQ,IACL,YAAY,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAC5B,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAExB,QAAQ,GACF,CACd,IACC,IACJ,IACJ,GACO,CACpB,CAAC;YACN,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBACd,KAAK,EAAE,CAAC;YACZ,CAAC,GACH,GACH,CACN,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {\n HelpMark,\n Hotkey,\n Icon,\n Select,\n type SelectOption,\n type SelectProps,\n} from '@gravity-ui/uikit';\n\nimport {cn} from '../../classname';\nimport {isFunction} from '../../lodash';\nimport {PreviewTooltip} from '../../toolbar/PreviewTooltip';\n\nimport type {WToolbarBaseProps, WToolbarItemData} from './types';\n\nimport './ToolbarSelect.scss';\n\nconst b = cn('toolbar-select');\n\nexport type ToolbarSelectProps = WToolbarBaseProps &\n Pick<SelectProps, 'disablePortal'> & {\n items: WToolbarItemData[];\n };\n\nexport const ToolbarSelect: React.FC<ToolbarSelectProps> = ({\n disablePortal,\n className,\n editor,\n focus,\n onClick,\n items,\n}) => {\n const activeItem = items.find((item) => item.isActive(editor));\n\n return (\n <>\n <Select\n size=\"m\"\n view=\"clear\"\n className={className}\n disablePortal={disablePortal}\n onOpenChange={focus}\n value={activeItem ? [activeItem.id] : undefined}\n options={items.map<SelectOption>((item) => ({\n data: item,\n value: item.id,\n text: isFunction(item.title) ? item.title() : item.title,\n }))}\n renderOption={({text, data}) => {\n const {icon, hotkey, hint, preview} = data as WToolbarItemData;\n const hintText = isFunction(hint) ? hint() : hint;\n return (\n <PreviewTooltip preview={preview}>\n <div aria-label={text} className={b('item')}>\n <div className={b('item-icon')}>\n <Icon data={icon.data} size={Number(icon.size ?? 16) + 2} />\n </div>\n <div className={b('item-content')}>\n {text}\n <div className={b('item-extra')}>\n {hotkey && <Hotkey value={hotkey} />}\n {hintText && (\n <HelpMark\n popoverProps={{modal: false}}\n className={b('item-hint')}\n >\n {hintText}\n </HelpMark>\n )}\n </div>\n </div>\n </div>\n </PreviewTooltip>\n );\n }}\n onUpdate={([id]) => {\n items.find((item) => item.id === id)?.exec(editor);\n onClick?.(id);\n focus();\n }}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"ToolbarSelect.js","sourceRoot":"../../../../src","sources":["bundle/toolbar/ToolbarSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EACH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,EAAE,EAAC,2BAAwB;AACnC,OAAO,EAAC,UAAU,EAAC,wBAAqB;AACxC,OAAO,EAAC,cAAc,EAAC,wCAAqC;AAI5D,6BAA8B;AAE9B,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAO/B,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EACxD,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,EACL,EAAE,GACL,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/D,OAAO,CACH,4BACI,KAAC,MAAM,IACH,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,GAAG,EACR,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAC/C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,EAAE;gBACd,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;aAC3D,CAAC,CAAC,EACH,YAAY,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,EAAE,EAAE;gBAC3B,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,GAAG,IAAwB,CAAC;gBAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,OAAO,CACH,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,YAC5B,6BAAiB,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACvC,cAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAC1B,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,GAAI,GAC1D,EACN,eAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,aAC5B,IAAI,EACL,eAAK,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,aAC1B,MAAM,IAAI,KAAC,MAAM,IAAC,KAAK,EAAE,MAAM,GAAI,EACnC,QAAQ,IAAI,CACT,KAAC,QAAQ,IACL,YAAY,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAC5B,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAExB,QAAQ,GACF,CACd,IACC,IACJ,IACJ,GACO,CACpB,CAAC;YACN,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBACd,KAAK,EAAE,CAAC;YACZ,CAAC,GACH,GACH,CACN,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {\n HelpMark,\n Hotkey,\n Icon,\n Select,\n type SelectOption,\n type SelectProps,\n} from '@gravity-ui/uikit';\n\nimport {cn} from '../../classname';\nimport {isFunction} from '../../lodash';\nimport {PreviewTooltip} from '../../toolbar/PreviewTooltip';\n\nimport type {WToolbarBaseProps, WToolbarItemData} from './types';\n\nimport './ToolbarSelect.scss';\n\nconst b = cn('toolbar-select');\n\nexport type ToolbarSelectProps = WToolbarBaseProps &\n Pick<SelectProps, 'disablePortal'> & {\n items: WToolbarItemData[];\n };\n\nexport const ToolbarSelect: React.FC<ToolbarSelectProps> = ({\n disablePortal,\n className,\n editor,\n focus,\n onClick,\n items,\n qa,\n}) => {\n const activeItem = items.find((item) => item.isActive(editor));\n\n return (\n <>\n <Select\n qa={qa}\n size=\"m\"\n view=\"clear\"\n className={className}\n disablePortal={disablePortal}\n onOpenChange={focus}\n value={activeItem ? [activeItem.id] : undefined}\n options={items.map<SelectOption>((item) => ({\n data: item,\n value: item.id,\n text: isFunction(item.title) ? item.title() : item.title,\n }))}\n renderOption={({text, data}) => {\n const {icon, hotkey, hint, preview} = data as WToolbarItemData;\n const hintText = isFunction(hint) ? hint() : hint;\n return (\n <PreviewTooltip preview={preview}>\n <div aria-label={text} className={b('item')}>\n <div className={b('item-icon')}>\n <Icon data={icon.data} size={Number(icon.size ?? 16) + 2} />\n </div>\n <div className={b('item-content')}>\n {text}\n <div className={b('item-extra')}>\n {hotkey && <Hotkey value={hotkey} />}\n {hintText && (\n <HelpMark\n popoverProps={{modal: false}}\n className={b('item-hint')}\n >\n {hintText}\n </HelpMark>\n )}\n </div>\n </div>\n </div>\n </PreviewTooltip>\n );\n }}\n onUpdate={([id]) => {\n items.find((item) => item.id === id)?.exec(editor);\n onClick?.(id);\n focus();\n }}\n />\n </>\n );\n};\n"]}
@@ -55,6 +55,6 @@ export const ToolbarColors = (props) => {
55
55
  },
56
56
  });
57
57
  }
58
- return (_jsx(ToolbarButtonWithPopupMenu, { ...props, title: i18n('colorify'), menuItems: items, icon: textColorIcon, _selectionType: "light", iconClassName: b('menu-icon', { color: currentColor }), chevronIconClassName: b('chevron-icon', { color: currentColor }), "data-selected-color": currentColor ?? 'default' }));
58
+ return (_jsx(ToolbarButtonWithPopupMenu, { ...props, qaMenu: "g-md-toolbar-menu", title: i18n('colorify'), menuItems: items, icon: textColorIcon, _selectionType: "light", iconClassName: b('menu-icon', { color: currentColor }), chevronIconClassName: b('chevron-icon', { color: currentColor }), "data-selected-color": currentColor ?? 'default' }));
59
59
  };
60
60
  //# sourceMappingURL=ToolbarColors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarColors.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/custom/ToolbarColors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {cn} from '../../../classname';\nimport {Colors} from '../../../extensions';\nimport {i18n} from '../../../i18n/menubar';\nimport type {ToolbarBaseProps} from '../../../toolbar';\nimport {icons} from '../../config/icons';\nimport {\n type MenuItem,\n ToolbarButtonWithPopupMenu,\n type ToolbarButtonWithPopupMenuProps,\n} from '../ToolbarButtonWithPopupMenu';\n\nimport './ToolbarColors.scss';\n\nconst b = cn('toolbar-colors');\nconst textColorIcon = icons.textColor;\n\nexport type ToolbarColorsProps = Omit<ToolbarBaseProps<never>, 'editor'> &\n Pick<ToolbarButtonWithPopupMenuProps, 'disablePortal'> & {\n active?: boolean;\n enable?: boolean;\n currentColor?: string;\n withDefault?: boolean;\n exec(color: string): void;\n };\n\nexport const ToolbarColors: React.FC<ToolbarColorsProps> = (props) => {\n const {exec, onClick, enable, currentColor, withDefault} = props;\n const isDefault = currentColor === undefined;\n\n const onItemClick = (color: string) => () => {\n // do not exec when current color is default and clicked to default item\n if (!(isDefault && color === '')) exec(color);\n onClick?.('colorify', {color: color === '' ? 'default' : color});\n };\n\n const items = [\n Colors.Gray,\n Colors.Yellow,\n Colors.Orange,\n Colors.Red,\n Colors.Green,\n Colors.Blue,\n Colors.Violet,\n ].map<MenuItem>((color) => ({\n id: color,\n icon: textColorIcon.data,\n iconSize: textColorIcon.size ?? 16,\n text: i18n(`colorify__color_${color}`),\n iconClassname: b('item-icon', {color}),\n action: {\n run: onItemClick(color),\n isEnable: () => Boolean(enable),\n isActive: () => color === currentColor,\n meta() {},\n },\n group: i18n(`colorify__group_text`),\n }));\n\n if (withDefault) {\n items.unshift({\n id: 'default',\n icon: textColorIcon.data,\n iconSize: textColorIcon.size ?? 16,\n text: i18n(`colorify__color_default`),\n iconClassname: b('item-icon', {color: 'default'}),\n group: i18n(`colorify__group_text`),\n ignoreActive: true,\n action: {\n run: onItemClick(''),\n isEnable: () => Boolean(enable),\n isActive: () => isDefault,\n meta() {},\n },\n });\n }\n\n return (\n <ToolbarButtonWithPopupMenu\n {...props}\n title={i18n('colorify')}\n menuItems={items}\n icon={textColorIcon}\n _selectionType=\"light\"\n iconClassName={b('menu-icon', {color: currentColor})}\n chevronIconClassName={b('chevron-icon', {color: currentColor})}\n data-selected-color={currentColor ?? 'default'}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"ToolbarColors.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/custom/ToolbarColors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {cn} from '../../../classname';\nimport {Colors} from '../../../extensions';\nimport {i18n} from '../../../i18n/menubar';\nimport type {ToolbarBaseProps} from '../../../toolbar';\nimport {icons} from '../../config/icons';\nimport {\n type MenuItem,\n ToolbarButtonWithPopupMenu,\n type ToolbarButtonWithPopupMenuProps,\n} from '../ToolbarButtonWithPopupMenu';\n\nimport './ToolbarColors.scss';\n\nconst b = cn('toolbar-colors');\nconst textColorIcon = icons.textColor;\n\nexport type ToolbarColorsProps = Omit<ToolbarBaseProps<never>, 'editor'> &\n Pick<ToolbarButtonWithPopupMenuProps, 'disablePortal'> & {\n active?: boolean;\n enable?: boolean;\n currentColor?: string;\n withDefault?: boolean;\n exec(color: string): void;\n };\n\nexport const ToolbarColors: React.FC<ToolbarColorsProps> = (props) => {\n const {exec, onClick, enable, currentColor, withDefault} = props;\n const isDefault = currentColor === undefined;\n\n const onItemClick = (color: string) => () => {\n // do not exec when current color is default and clicked to default item\n if (!(isDefault && color === '')) exec(color);\n onClick?.('colorify', {color: color === '' ? 'default' : color});\n };\n\n const items = [\n Colors.Gray,\n Colors.Yellow,\n Colors.Orange,\n Colors.Red,\n Colors.Green,\n Colors.Blue,\n Colors.Violet,\n ].map<MenuItem>((color) => ({\n id: color,\n icon: textColorIcon.data,\n iconSize: textColorIcon.size ?? 16,\n text: i18n(`colorify__color_${color}`),\n iconClassname: b('item-icon', {color}),\n action: {\n run: onItemClick(color),\n isEnable: () => Boolean(enable),\n isActive: () => color === currentColor,\n meta() {},\n },\n group: i18n(`colorify__group_text`),\n }));\n\n if (withDefault) {\n items.unshift({\n id: 'default',\n icon: textColorIcon.data,\n iconSize: textColorIcon.size ?? 16,\n text: i18n(`colorify__color_default`),\n iconClassname: b('item-icon', {color: 'default'}),\n group: i18n(`colorify__group_text`),\n ignoreActive: true,\n action: {\n run: onItemClick(''),\n isEnable: () => Boolean(enable),\n isActive: () => isDefault,\n meta() {},\n },\n });\n }\n\n return (\n <ToolbarButtonWithPopupMenu\n {...props}\n qaMenu=\"g-md-toolbar-menu\"\n title={i18n('colorify')}\n menuItems={items}\n icon={textColorIcon}\n _selectionType=\"light\"\n iconClassName={b('menu-icon', {color: currentColor})}\n chevronIconClassName={b('chevron-icon', {color: currentColor})}\n data-selected-color={currentColor ?? 'default'}\n />\n );\n};\n"]}
@@ -2,6 +2,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { wHeadingListConfig } from "../../config/w-heading-config.js";
3
3
  import { ToolbarSelect } from "../ToolbarSelect.js";
4
4
  export const WToolbarTextSelect = ({ focus, onClick, editor, className, disablePortal, }) => {
5
- return (_jsx(ToolbarSelect, { items: wHeadingListConfig.data, focus: focus, editor: editor, onClick: onClick, className: className, disablePortal: disablePortal }));
5
+ return (_jsx(ToolbarSelect, { qa: "g-md-toolbar-text-select", items: wHeadingListConfig.data, focus: focus, editor: editor, onClick: onClick, className: className, disablePortal: disablePortal }));
6
6
  };
7
7
  //# sourceMappingURL=WToolbarTextSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WToolbarTextSelect.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/wysiwyg/WToolbarTextSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,kBAAkB,EAAC,yCAAsC;AACjE,OAAO,EAAC,aAAa,EAA0B,4BAAyB;AAKxE,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAClE,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,GAChB,EAAE,EAAE;IACD,OAAO,CACH,KAAC,aAAa,IACV,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAC9B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,GAC9B,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {wHeadingListConfig} from '../../config/w-heading-config';\nimport {ToolbarSelect, type ToolbarSelectProps} from '../ToolbarSelect';\nimport type {WToolbarBaseProps} from '../types';\n\nexport type WToolbarTextSelectProps = WToolbarBaseProps & Pick<ToolbarSelectProps, 'disablePortal'>;\n\nexport const WToolbarTextSelect: React.FC<WToolbarTextSelectProps> = ({\n focus,\n onClick,\n editor,\n className,\n disablePortal,\n}) => {\n return (\n <ToolbarSelect\n items={wHeadingListConfig.data}\n focus={focus}\n editor={editor}\n onClick={onClick}\n className={className}\n disablePortal={disablePortal}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"WToolbarTextSelect.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/wysiwyg/WToolbarTextSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,kBAAkB,EAAC,yCAAsC;AACjE,OAAO,EAAC,aAAa,EAA0B,4BAAyB;AAKxE,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAClE,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,GAChB,EAAE,EAAE;IACD,OAAO,CACH,KAAC,aAAa,IACV,EAAE,EAAC,0BAA0B,EAC7B,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAC9B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,GAC9B,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {wHeadingListConfig} from '../../config/w-heading-config';\nimport {ToolbarSelect, type ToolbarSelectProps} from '../ToolbarSelect';\nimport type {WToolbarBaseProps} from '../types';\n\nexport type WToolbarTextSelectProps = WToolbarBaseProps & Pick<ToolbarSelectProps, 'disablePortal'>;\n\nexport const WToolbarTextSelect: React.FC<WToolbarTextSelectProps> = ({\n focus,\n onClick,\n editor,\n className,\n disablePortal,\n}) => {\n return (\n <ToolbarSelect\n qa=\"g-md-toolbar-text-select\"\n items={wHeadingListConfig.data}\n focus={focus}\n editor={editor}\n onClick={onClick}\n className={className}\n disablePortal={disablePortal}\n />\n );\n};\n"]}
@@ -66,8 +66,14 @@ function getUrl(data, parser) {
66
66
  // TODO: should we process HTML here?
67
67
  const text = data.getData(DataTransferType.Text);
68
68
  const match = parser.matchLinks(text);
69
- if (match?.[0]?.raw === text)
70
- return match[0].url;
69
+ if (match?.[0]) {
70
+ const { raw, url } = match[0];
71
+ if (raw === text)
72
+ return url;
73
+ if (text.endsWith('?') && raw + '?' === text && parser.validateLink(text)) {
74
+ return parser.normalizeLink(text);
75
+ }
76
+ }
71
77
  return null;
72
78
  }
73
79
  //# sourceMappingURL=paste-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paste-plugin.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Link/paste-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {Plugin, TextSelection, type Transaction} from 'prosemirror-state';\n\nimport {type ExtensionDeps, type Parser, getLoggerFromState} from '../../../core';\nimport {isNodeSelection, isTextSelection} from '../../../utils/selection';\nimport {DataTransferType, isIosSafariShare} from '../../behavior/Clipboard/utils';\nimport {imageType} from '../Image';\n\nimport {LinkAttr, linkType} from './index';\n\nexport function linkPasteEnhance({markupParser: parser}: ExtensionDeps) {\n return new Plugin({\n props: {\n handleDOMEvents: {\n paste(view, e): boolean {\n const logger = getLoggerFromState(view.state).nested({\n plugin: 'link-paste-enhance',\n domEvent: 'paste',\n });\n\n const {state, dispatch} = view;\n const sel = state.selection;\n let tr: Transaction | null = null;\n\n if (\n isTextSelection(sel) ||\n (isNodeSelection(sel) && sel.node.type === imageType(state.schema))\n ) {\n const {$from, $to} = sel;\n if ($from.pos === $to.pos) {\n const url = getUrl(e.clipboardData, parser);\n if (url) {\n const linkMarkType = linkType(state.schema);\n tr = state.tr.replaceSelectionWith(\n state.schema.text(url, [\n ...$from\n .marks()\n .filter((mark) => mark.type !== linkMarkType),\n linkMarkType.create({[LinkAttr.Href]: url}),\n ]),\n false,\n );\n logger.event({\n event: 'paste-url',\n });\n }\n } else if ($from.sameParent($to)) {\n const url = getUrl(e.clipboardData, parser);\n if (url) {\n tr = state.tr.addMark(\n $from.pos,\n $to.pos,\n linkType(state.schema).create({\n [LinkAttr.Href]: url,\n }),\n );\n tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n logger.event({\n event: 'paste-url-on-text',\n });\n }\n }\n }\n\n if (tr) {\n dispatch(tr.scrollIntoView());\n e.preventDefault();\n return true;\n }\n\n return false;\n },\n },\n },\n });\n}\n\nfunction getUrl(data: DataTransfer | null, parser: Parser): string | null {\n if (!data || data.types.includes(DataTransferType.Yfm)) return null;\n if (isIosSafariShare(data)) return data.getData(DataTransferType.UriList);\n // TODO: should we process HTML here?\n const text = data.getData(DataTransferType.Text);\n const match = parser.matchLinks(text);\n if (match?.[0]?.raw === text) return match[0].url;\n return null;\n}\n"]}
1
+ {"version":3,"file":"paste-plugin.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/Link/paste-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {Plugin, TextSelection, type Transaction} from 'prosemirror-state';\n\nimport {type ExtensionDeps, type Parser, getLoggerFromState} from '../../../core';\nimport {isNodeSelection, isTextSelection} from '../../../utils/selection';\nimport {DataTransferType, isIosSafariShare} from '../../behavior/Clipboard/utils';\nimport {imageType} from '../Image';\n\nimport {LinkAttr, linkType} from './index';\n\nexport function linkPasteEnhance({markupParser: parser}: ExtensionDeps) {\n return new Plugin({\n props: {\n handleDOMEvents: {\n paste(view, e): boolean {\n const logger = getLoggerFromState(view.state).nested({\n plugin: 'link-paste-enhance',\n domEvent: 'paste',\n });\n\n const {state, dispatch} = view;\n const sel = state.selection;\n let tr: Transaction | null = null;\n\n if (\n isTextSelection(sel) ||\n (isNodeSelection(sel) && sel.node.type === imageType(state.schema))\n ) {\n const {$from, $to} = sel;\n if ($from.pos === $to.pos) {\n const url = getUrl(e.clipboardData, parser);\n if (url) {\n const linkMarkType = linkType(state.schema);\n tr = state.tr.replaceSelectionWith(\n state.schema.text(url, [\n ...$from\n .marks()\n .filter((mark) => mark.type !== linkMarkType),\n linkMarkType.create({[LinkAttr.Href]: url}),\n ]),\n false,\n );\n logger.event({\n event: 'paste-url',\n });\n }\n } else if ($from.sameParent($to)) {\n const url = getUrl(e.clipboardData, parser);\n if (url) {\n tr = state.tr.addMark(\n $from.pos,\n $to.pos,\n linkType(state.schema).create({\n [LinkAttr.Href]: url,\n }),\n );\n tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n logger.event({\n event: 'paste-url-on-text',\n });\n }\n }\n }\n\n if (tr) {\n dispatch(tr.scrollIntoView());\n e.preventDefault();\n return true;\n }\n\n return false;\n },\n },\n },\n });\n}\n\nfunction getUrl(data: DataTransfer | null, parser: Parser): string | null {\n if (!data || data.types.includes(DataTransferType.Yfm)) return null;\n if (isIosSafariShare(data)) return data.getData(DataTransferType.UriList);\n // TODO: should we process HTML here?\n const text = data.getData(DataTransferType.Text);\n const match = parser.matchLinks(text);\n if (match?.[0]) {\n const {raw, url} = match[0];\n if (raw === text) return url;\n if (text.endsWith('?') && raw + '?' === text && parser.validateLink(text)) {\n return parser.normalizeLink(text);\n }\n }\n return null;\n}\n"]}
@@ -19,6 +19,6 @@ export const ImgSettingsButton = function ({ node, view, updateAttributes, visib
19
19
  const isVisibleImageForm = edit;
20
20
  const isVisibleEditButton = !edit && (visible || popupOpen);
21
21
  const isVisiblePopup = !edit && popupOpen;
22
- return (_jsxs(_Fragment, { children: [isVisibleImageForm && (_jsx(ImageForm, { node: node, view: view, updateAttributes: updateAttributes, anchorElement: nodeElement, unsetEdit: unsetEdit })), isVisibleEditButton && (_jsx(Button, { onClick: togglePopup, ref: setAnchorElement, size: "s", view: 'raised', className: b(null, ReactNodeStopEventCn), children: _jsx(Icon, { data: Ellipsis, className: ReactNodeStopEventCn }) })), _jsx(Popup, { open: isVisiblePopup, anchorElement: anchorElement, onOpenChange: unsetPopupOpen, placement: placement, children: _jsxs(Menu, { children: [_jsx(Menu.Item, { onClick: handleEdit, children: i18nCommon('edit') }), _jsx(Menu.Item, { onClick: onDelete, children: i18nCommon('delete') })] }) })] }));
22
+ return (_jsxs(_Fragment, { children: [isVisibleImageForm && (_jsx(ImageForm, { node: node, view: view, updateAttributes: updateAttributes, anchorElement: nodeElement, unsetEdit: unsetEdit })), isVisibleEditButton && (_jsx(Button, { qa: "g-md-image-settings-button", onClick: togglePopup, ref: setAnchorElement, size: "s", view: 'raised', className: b(null, ReactNodeStopEventCn), children: _jsx(Icon, { data: Ellipsis, className: ReactNodeStopEventCn }) })), _jsx(Popup, { open: isVisiblePopup, anchorElement: anchorElement, onOpenChange: unsetPopupOpen, placement: placement, children: _jsxs(Menu, { qa: "g-md-image-settings-menu", children: [_jsx(Menu.Item, { extraProps: { 'aria-label': i18nCommon('edit') }, onClick: handleEdit, children: i18nCommon('edit') }), _jsx(Menu.Item, { extraProps: { 'aria-label': i18nCommon('delete') }, onClick: onDelete, children: i18nCommon('delete') })] }) })] }));
23
23
  };
24
24
  //# sourceMappingURL=ImgSettingsButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImgSettingsButton.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAsB,MAAM,mBAAmB,CAAC;AAIjF,OAAO,EAAC,EAAE,EAAC,oCAAiC;AAC5C,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,4CAAmC;AAC9D,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,4CAAyC;AAClF,OAAO,EAAC,oBAAoB,EAAC,sDAAmD;AAEhF,OAAO,EAAC,SAAS,EAAC,6BAAoB;AAEtC,iCAAkC;AAElC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAWzB,UAAU,EACX,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,GACX;IACG,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,eAAe,EAAE,CAAC;IAC5D,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvF,MAAM,SAAS,GAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAChC,MAAM,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;IAE1C,OAAO,CACH,8BACK,kBAAkB,IAAI,CACnB,KAAC,SAAS,IACN,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,WAAW,EAC1B,SAAS,EAAE,SAAS,GACtB,CACL,EAEA,mBAAmB,IAAI,CACpB,KAAC,MAAM,IACH,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,YAExC,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,GAAI,GACpD,CACZ,EAED,KAAC,KAAK,IACF,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,SAAS,YAEpB,MAAC,IAAI,eACD,KAAC,IAAI,CAAC,IAAI,IAAC,OAAO,EAAE,UAAU,YAAG,UAAU,CAAC,MAAM,CAAC,GAAa,EAChE,KAAC,IAAI,CAAC,IAAI,IAAC,OAAO,EAAE,QAAQ,YAAG,UAAU,CAAC,QAAQ,CAAC,GAAa,IAC7D,GACH,IACT,CACN,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Ellipsis} from '@gravity-ui/icons';\nimport {Button, Icon, Menu, Popup, type PopupPlacement} from '@gravity-ui/uikit';\nimport type {Node} from 'prosemirror-model';\nimport type {EditorView} from 'prosemirror-view';\n\nimport {cn} from '../../../../../classname';\nimport {i18n as i18nCommon} from '../../../../../i18n/common';\nimport {useBooleanState, useElementState} from '../../../../../react-utils/hooks';\nimport {ReactNodeStopEventCn} from '../../../../../react-utils/react-node-view';\n\nimport {ImageForm} from './ImageForm';\n\nimport './ImgSettingsButton.scss';\n\nconst b = cn('img-settings-button');\n\nexport const ImgSettingsButton: React.FC<{\n node: Node;\n view: EditorView;\n getPos: () => number | undefined;\n updateAttributes: (o: object) => void;\n nodeElement: HTMLElement | null;\n visible: boolean;\n toggleEdit: () => void;\n edit: boolean;\n unsetEdit: () => void;\n onDelete: () => void;\n}> = function ({\n node,\n view,\n updateAttributes,\n visible,\n edit,\n toggleEdit,\n nodeElement,\n unsetEdit,\n onDelete,\n}) {\n const [anchorElement, setAnchorElement] = useElementState();\n const [popupOpen, _setPopupOpen, unsetPopupOpen, togglePopup] = useBooleanState(false);\n const placement: PopupPlacement = ['bottom-end', 'bottom-start'];\n\n const handleEdit = () => {\n toggleEdit();\n unsetPopupOpen();\n };\n\n const isVisibleImageForm = edit;\n const isVisibleEditButton = !edit && (visible || popupOpen);\n const isVisiblePopup = !edit && popupOpen;\n\n return (\n <>\n {isVisibleImageForm && (\n <ImageForm\n node={node}\n view={view}\n updateAttributes={updateAttributes}\n anchorElement={nodeElement}\n unsetEdit={unsetEdit}\n />\n )}\n\n {isVisibleEditButton && (\n <Button\n onClick={togglePopup}\n ref={setAnchorElement}\n size=\"s\"\n view={'raised'}\n className={b(null, ReactNodeStopEventCn)}\n >\n <Icon data={Ellipsis} className={ReactNodeStopEventCn} />\n </Button>\n )}\n\n <Popup\n open={isVisiblePopup}\n anchorElement={anchorElement}\n onOpenChange={unsetPopupOpen}\n placement={placement}\n >\n <Menu>\n <Menu.Item onClick={handleEdit}>{i18nCommon('edit')}</Menu.Item>\n <Menu.Item onClick={onDelete}>{i18nCommon('delete')}</Menu.Item>\n </Menu>\n </Popup>\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"ImgSettingsButton.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAsB,MAAM,mBAAmB,CAAC;AAIjF,OAAO,EAAC,EAAE,EAAC,oCAAiC;AAC5C,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,4CAAmC;AAC9D,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,4CAAyC;AAClF,OAAO,EAAC,oBAAoB,EAAC,sDAAmD;AAEhF,OAAO,EAAC,SAAS,EAAC,6BAAoB;AAEtC,iCAAkC;AAElC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAWzB,UAAU,EACX,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,GACX;IACG,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,eAAe,EAAE,CAAC;IAC5D,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvF,MAAM,SAAS,GAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAChC,MAAM,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;IAE1C,OAAO,CACH,8BACK,kBAAkB,IAAI,CACnB,KAAC,SAAS,IACN,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,WAAW,EAC1B,SAAS,EAAE,SAAS,GACtB,CACL,EAEA,mBAAmB,IAAI,CACpB,KAAC,MAAM,IACH,EAAE,EAAC,4BAA4B,EAC/B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,YAExC,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,GAAI,GACpD,CACZ,EAED,KAAC,KAAK,IACF,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,SAAS,YAEpB,MAAC,IAAI,IAAC,EAAE,EAAC,0BAA0B,aAC/B,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAE,EAAC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,EAAC,EAAE,OAAO,EAAE,UAAU,YACzE,UAAU,CAAC,MAAM,CAAC,GACX,EACZ,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAE,EAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAC,EAAE,OAAO,EAAE,QAAQ,YACzE,UAAU,CAAC,QAAQ,CAAC,GACb,IACT,GACH,IACT,CACN,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Ellipsis} from '@gravity-ui/icons';\nimport {Button, Icon, Menu, Popup, type PopupPlacement} from '@gravity-ui/uikit';\nimport type {Node} from 'prosemirror-model';\nimport type {EditorView} from 'prosemirror-view';\n\nimport {cn} from '../../../../../classname';\nimport {i18n as i18nCommon} from '../../../../../i18n/common';\nimport {useBooleanState, useElementState} from '../../../../../react-utils/hooks';\nimport {ReactNodeStopEventCn} from '../../../../../react-utils/react-node-view';\n\nimport {ImageForm} from './ImageForm';\n\nimport './ImgSettingsButton.scss';\n\nconst b = cn('img-settings-button');\n\nexport const ImgSettingsButton: React.FC<{\n node: Node;\n view: EditorView;\n getPos: () => number | undefined;\n updateAttributes: (o: object) => void;\n nodeElement: HTMLElement | null;\n visible: boolean;\n toggleEdit: () => void;\n edit: boolean;\n unsetEdit: () => void;\n onDelete: () => void;\n}> = function ({\n node,\n view,\n updateAttributes,\n visible,\n edit,\n toggleEdit,\n nodeElement,\n unsetEdit,\n onDelete,\n}) {\n const [anchorElement, setAnchorElement] = useElementState();\n const [popupOpen, _setPopupOpen, unsetPopupOpen, togglePopup] = useBooleanState(false);\n const placement: PopupPlacement = ['bottom-end', 'bottom-start'];\n\n const handleEdit = () => {\n toggleEdit();\n unsetPopupOpen();\n };\n\n const isVisibleImageForm = edit;\n const isVisibleEditButton = !edit && (visible || popupOpen);\n const isVisiblePopup = !edit && popupOpen;\n\n return (\n <>\n {isVisibleImageForm && (\n <ImageForm\n node={node}\n view={view}\n updateAttributes={updateAttributes}\n anchorElement={nodeElement}\n unsetEdit={unsetEdit}\n />\n )}\n\n {isVisibleEditButton && (\n <Button\n qa=\"g-md-image-settings-button\"\n onClick={togglePopup}\n ref={setAnchorElement}\n size=\"s\"\n view={'raised'}\n className={b(null, ReactNodeStopEventCn)}\n >\n <Icon data={Ellipsis} className={ReactNodeStopEventCn} />\n </Button>\n )}\n\n <Popup\n open={isVisiblePopup}\n anchorElement={anchorElement}\n onOpenChange={unsetPopupOpen}\n placement={placement}\n >\n <Menu qa=\"g-md-image-settings-menu\">\n <Menu.Item extraProps={{'aria-label': i18nCommon('edit')}} onClick={handleEdit}>\n {i18nCommon('edit')}\n </Menu.Item>\n <Menu.Item extraProps={{'aria-label': i18nCommon('delete')}} onClick={onDelete}>\n {i18nCommon('delete')}\n </Menu.Item>\n </Menu>\n </Popup>\n </>\n );\n};\n"]}
@@ -76,6 +76,6 @@ export const ImageNodeView = ({ node, view, getPos, updateAttributes, }) => {
76
76
  setRef(imageRef, elem);
77
77
  setImageElement(elem);
78
78
  }, [setImageElement]);
79
- return (_jsx("div", { ref: imageContainerRef, children: _jsxs(Resizable, { hover: isNodeHovered, resizing: state.resizing, onResizeLeft: createHandleResize('left'), onResizeRight: createHandleResize('right'), children: [_jsx(ImgSettingsButton, { node: node, view: view, getPos: getPos, updateAttributes: updateAttributes, visible: isNodeHovered && !edit && !state.resizing, edit: edit, toggleEdit: toggleEdit, nodeElement: imageElement, onDelete: handleDelete, unsetEdit: unsetEdit }), _jsx("img", { ref: refFn, src: src, alt: alt, style: style })] }) }));
79
+ return (_jsx("div", { ref: imageContainerRef, "data-qa": "g-md-image", children: _jsxs(Resizable, { hover: isNodeHovered, resizing: state.resizing, onResizeLeft: createHandleResize('left'), onResizeRight: createHandleResize('right'), children: [_jsx(ImgSettingsButton, { node: node, view: view, getPos: getPos, updateAttributes: updateAttributes, visible: isNodeHovered && !edit && !state.resizing, edit: edit, toggleEdit: toggleEdit, nodeElement: imageElement, onDelete: handleDelete, unsetEdit: unsetEdit }), _jsx("img", { ref: refFn, src: src, alt: alt, style: style })] }) }));
80
80
  };
81
81
  //# sourceMappingURL=NodeView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeView.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useEffect, useRef} from 'react';\n\nimport {setRef} from '@gravity-ui/uikit';\n\nimport {cn} from '../../../../../classname';\nimport {\n type ReactNodeViewProps,\n useElementState,\n useNodeEditing,\n useNodeHovered,\n} from '../../../../../react-utils';\nimport {type ResizeDirection, useNodeResizing} from '../../../../../react-utils/useNodeResizing';\nimport {removeNode} from '../../../../../utils';\nimport {Resizable} from '../../../../behavior/Resizable/Resizable';\nimport {ImgSizeAttr} from '../../ImgSizeSpecs';\nimport {imageRendererKey} from '../../const';\n\nimport {ImgSettingsButton} from './ImgSettingsButton';\n\nimport './ImgNodeView.scss';\n\nexport const cnImgSizeNodeView = cn('img-size-node-view');\n\nexport const ImageNodeView: React.FC<ReactNodeViewProps> = ({\n node,\n view,\n getPos,\n updateAttributes,\n}) => {\n const imageContainerRef = useRef<HTMLDivElement>(null);\n const imageRef = useRef<HTMLImageElement>(null);\n const [imageElement, setImageElement] = useElementState();\n\n const alt = node.attrs[ImgSizeAttr.Alt] || '';\n const initialHeight = node.attrs[ImgSizeAttr.Height];\n const initialWidth = node.attrs[ImgSizeAttr.Width];\n const src = node.attrs[ImgSizeAttr.Src] || '';\n const title = node.attrs[ImgSizeAttr.Title] || '';\n\n const isNodeHovered = useNodeHovered(imageContainerRef);\n const [edit, setEditing, unsetEdit, toggleEdit] = useNodeEditing({\n nodeRef: imageContainerRef,\n view,\n });\n\n const handleResize = useCallback(\n ({width, height}: {width?: number; height?: number}) => {\n updateAttributes({\n width: width === undefined ? undefined : String(Math.round(width)),\n height: height === undefined ? undefined : String(Math.round(height)),\n name: title,\n alt,\n });\n },\n [alt, title, updateAttributes],\n );\n\n const {state, startResizing} = useNodeResizing({\n width: initialWidth,\n height: initialHeight,\n ref: imageRef,\n onResize: handleResize,\n });\n\n const style: React.HTMLAttributes<HTMLImageElement>['style'] = {\n transition: 'width 0.15s ease-out, height 0.15s ease-out',\n };\n\n if (state.width) {\n style.width = `${state.width}px`;\n\n if (state.height) {\n style.aspectRatio = state.width / state.height;\n style.height = 'auto;';\n }\n } else if (state.height) {\n style.height = `${state.height}px`;\n }\n\n const handleDelete = useCallback(() => {\n const pos = getPos();\n if (pos === undefined) return;\n removeNode({\n node,\n pos,\n tr: view.state.tr,\n dispatch: view.dispatch,\n });\n view.focus();\n }, [getPos, node, view]);\n\n const createHandleResize =\n (direction: ResizeDirection) => (event: React.MouseEvent<HTMLElement>) => {\n startResizing(event, direction);\n };\n\n useEffect(() => {\n if (imageRendererKey.getState(view.state)?.linkAdded) {\n setEditing();\n }\n }, [view, setEditing]);\n\n const refFn = useCallback(\n (elem: HTMLImageElement | null) => {\n setRef(imageRef, elem);\n setImageElement(elem);\n },\n [setImageElement],\n );\n\n return (\n <div ref={imageContainerRef}>\n <Resizable\n hover={isNodeHovered}\n resizing={state.resizing}\n onResizeLeft={createHandleResize('left')}\n onResizeRight={createHandleResize('right')}\n >\n <ImgSettingsButton\n node={node}\n view={view}\n getPos={getPos}\n updateAttributes={updateAttributes}\n visible={isNodeHovered && !edit && !state.resizing}\n edit={edit}\n toggleEdit={toggleEdit}\n nodeElement={imageElement}\n onDelete={handleDelete}\n unsetEdit={unsetEdit}\n />\n <img ref={refFn} src={src} alt={alt} style={style} />\n </Resizable>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"NodeView.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/ImgSize/plugins/ImgSizeNodeView/NodeView.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useEffect, useRef} from 'react';\n\nimport {setRef} from '@gravity-ui/uikit';\n\nimport {cn} from '../../../../../classname';\nimport {\n type ReactNodeViewProps,\n useElementState,\n useNodeEditing,\n useNodeHovered,\n} from '../../../../../react-utils';\nimport {type ResizeDirection, useNodeResizing} from '../../../../../react-utils/useNodeResizing';\nimport {removeNode} from '../../../../../utils';\nimport {Resizable} from '../../../../behavior/Resizable/Resizable';\nimport {ImgSizeAttr} from '../../ImgSizeSpecs';\nimport {imageRendererKey} from '../../const';\n\nimport {ImgSettingsButton} from './ImgSettingsButton';\n\nimport './ImgNodeView.scss';\n\nexport const cnImgSizeNodeView = cn('img-size-node-view');\n\nexport const ImageNodeView: React.FC<ReactNodeViewProps> = ({\n node,\n view,\n getPos,\n updateAttributes,\n}) => {\n const imageContainerRef = useRef<HTMLDivElement>(null);\n const imageRef = useRef<HTMLImageElement>(null);\n const [imageElement, setImageElement] = useElementState();\n\n const alt = node.attrs[ImgSizeAttr.Alt] || '';\n const initialHeight = node.attrs[ImgSizeAttr.Height];\n const initialWidth = node.attrs[ImgSizeAttr.Width];\n const src = node.attrs[ImgSizeAttr.Src] || '';\n const title = node.attrs[ImgSizeAttr.Title] || '';\n\n const isNodeHovered = useNodeHovered(imageContainerRef);\n const [edit, setEditing, unsetEdit, toggleEdit] = useNodeEditing({\n nodeRef: imageContainerRef,\n view,\n });\n\n const handleResize = useCallback(\n ({width, height}: {width?: number; height?: number}) => {\n updateAttributes({\n width: width === undefined ? undefined : String(Math.round(width)),\n height: height === undefined ? undefined : String(Math.round(height)),\n name: title,\n alt,\n });\n },\n [alt, title, updateAttributes],\n );\n\n const {state, startResizing} = useNodeResizing({\n width: initialWidth,\n height: initialHeight,\n ref: imageRef,\n onResize: handleResize,\n });\n\n const style: React.HTMLAttributes<HTMLImageElement>['style'] = {\n transition: 'width 0.15s ease-out, height 0.15s ease-out',\n };\n\n if (state.width) {\n style.width = `${state.width}px`;\n\n if (state.height) {\n style.aspectRatio = state.width / state.height;\n style.height = 'auto;';\n }\n } else if (state.height) {\n style.height = `${state.height}px`;\n }\n\n const handleDelete = useCallback(() => {\n const pos = getPos();\n if (pos === undefined) return;\n removeNode({\n node,\n pos,\n tr: view.state.tr,\n dispatch: view.dispatch,\n });\n view.focus();\n }, [getPos, node, view]);\n\n const createHandleResize =\n (direction: ResizeDirection) => (event: React.MouseEvent<HTMLElement>) => {\n startResizing(event, direction);\n };\n\n useEffect(() => {\n if (imageRendererKey.getState(view.state)?.linkAdded) {\n setEditing();\n }\n }, [view, setEditing]);\n\n const refFn = useCallback(\n (elem: HTMLImageElement | null) => {\n setRef(imageRef, elem);\n setImageElement(elem);\n },\n [setImageElement],\n );\n\n return (\n <div ref={imageContainerRef} data-qa=\"g-md-image\">\n <Resizable\n hover={isNodeHovered}\n resizing={state.resizing}\n onResizeLeft={createHandleResize('left')}\n onResizeRight={createHandleResize('right')}\n >\n <ImgSettingsButton\n node={node}\n view={view}\n getPos={getPos}\n updateAttributes={updateAttributes}\n visible={isNodeHovered && !edit && !state.resizing}\n edit={edit}\n toggleEdit={toggleEdit}\n nodeElement={imageElement}\n onDelete={handleDelete}\n unsetEdit={unsetEdit}\n />\n <img ref={refFn} src={src} alt={alt} style={style} />\n </Resizable>\n </div>\n );\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import { log } from '@diplodoc/transform/lib/log.js';
2
2
  import yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';
3
+ import { getConfig } from "../../../../configure.js";
3
4
  import { NoteNode } from "./const.js";
4
5
  import { parserTokens } from "./parser.js";
5
6
  import { getSchemaSpecs } from "./schema.js";
@@ -9,7 +10,7 @@ export { noteType, noteTitleType } from "./utils.js";
9
10
  export const YfmNoteSpecs = (builder, opts) => {
10
11
  const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));
11
12
  builder
12
- .configureMd((md) => md.use(yfmPlugin, { log }))
13
+ .configureMd((md) => md.use(yfmPlugin, { log, lang: getConfig().lang || 'en' }))
13
14
  .addNode(NoteNode.Note, () => ({
14
15
  spec: schemaSpecs[NoteNode.Note],
15
16
  toMd: serializerTokens[NoteNode.Note],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,gCAAgC,CAAC;AACnD,OAAO,SAAS,MAAM,gDAAgD,CAAC;AAKvE,OAAO,EAAC,QAAQ,EAAC,mBAAgB;AACjC,OAAO,EAAC,YAAY,EAAC,oBAAiB;AACtC,OAAO,EAAC,cAAc,EAAC,oBAAiB;AACxC,OAAO,EAAC,gBAAgB,EAAC,wBAAqB;AAE9C,OAAO,EAAC,QAAQ,IAAI,WAAW,EAAC,mBAAgB;AAChD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,mBAAgB;AAShD,MAAM,CAAC,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;SAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const YfmNoteSpecs: ExtensionAuto<YfmNoteSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(yfmPlugin, {log}))\n .addNode(NoteNode.Note, () => ({\n spec: schemaSpecs[NoteNode.Note],\n toMd: serializerTokens[NoteNode.Note],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.Note],\n },\n }))\n .addNode(NoteNode.NoteTitle, () => ({\n spec: schemaSpecs[NoteNode.NoteTitle],\n toMd: serializerTokens[NoteNode.NoteTitle],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteTitle],\n },\n }))\n .addNode(NoteNode.NoteContent, () => ({\n spec: schemaSpecs[NoteNode.NoteContent],\n toMd: serializerTokens[NoteNode.NoteContent],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteContent],\n },\n }));\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,gCAAgC,CAAC;AACnD,OAAO,SAAS,MAAM,gDAAgD,CAAC;AAGvE,OAAO,EAAC,SAAS,EAAC,iCAAsB;AAGxC,OAAO,EAAC,QAAQ,EAAC,mBAAgB;AACjC,OAAO,EAAC,YAAY,EAAC,oBAAiB;AACtC,OAAO,EAAC,cAAc,EAAC,oBAAiB;AACxC,OAAO,EAAC,gBAAgB,EAAC,wBAAqB;AAE9C,OAAO,EAAC,QAAQ,IAAI,WAAW,EAAC,mBAAgB;AAChD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,mBAAgB;AAShD,MAAM,CAAC,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC;SAC7E,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport {getConfig} from 'src/configure';\nimport type {ExtensionAuto} from 'src/core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated: use placeholder option in BehaviorPreset instead.\n */\n yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const YfmNoteSpecs: ExtensionAuto<YfmNoteSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(yfmPlugin, {log, lang: getConfig().lang || 'en'}))\n .addNode(NoteNode.Note, () => ({\n spec: schemaSpecs[NoteNode.Note],\n toMd: serializerTokens[NoteNode.Note],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.Note],\n },\n }))\n .addNode(NoteNode.NoteTitle, () => ({\n spec: schemaSpecs[NoteNode.NoteTitle],\n toMd: serializerTokens[NoteNode.NoteTitle],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteTitle],\n },\n }))\n .addNode(NoteNode.NoteContent, () => ({\n spec: schemaSpecs[NoteNode.NoteContent],\n toMd: serializerTokens[NoteNode.NoteContent],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteContent],\n },\n }));\n};\n"]}
@@ -32,7 +32,7 @@ export const yfmNoteTooltipPlugin = ({ actions, schema }) => new Plugin({
32
32
  content: (view, { node, pos }) => (_jsx(Toolbar, { editor: actions, focus: () => view.focus(),
33
33
  // the yfm class allows to access css variables
34
34
  // https://github.com/diplodoc-platform/transform/blob/master/src/scss/_common.scss#L17
35
- className: "yfm g-md-yfm-note-toolbar", data: [
35
+ className: "yfm g-md-yfm-note-toolbar", qa: "g-md-toolbar-yfm-note", data: [
36
36
  [
37
37
  YfmNoteType.info,
38
38
  YfmNoteType.tip,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {CircleInfo, TrashBin} from '@gravity-ui/icons';\nimport type {Node, Schema} from 'prosemirror-model';\nimport {Plugin, type Transaction} from 'prosemirror-state';\nimport type {EditorView} from 'prosemirror-view';\n\nimport type {ExtensionDeps} from '../../../../../core';\nimport {i18n} from '../../../../../i18n/yfm-note';\nimport {BaseTooltipPluginView} from '../../../../../plugins/BaseTooltip';\nimport {Toolbar, ToolbarDataType} from '../../../../../toolbar';\nimport {removeNode} from '../../../../../utils/remove-node';\nimport {noteType} from '../../../index';\n\nimport './index.scss';\n\nenum YfmNoteType {\n tip = 'tip',\n info = 'info',\n warning = 'warning',\n alert = 'alert',\n}\n\nconst isEnable = () => true;\nconst isActive = () => false;\n\nconst changeType: (\n type: YfmNoteType,\n) => (params: {\n schema: Schema;\n node: Node;\n pos: number;\n dispatch: EditorView['dispatch'];\n tr: Transaction;\n}) => void =\n (type) =>\n ({node, pos, dispatch, tr}) => {\n dispatch(\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n class: `yfm-note yfm-accent-${type}`,\n 'note-type': type,\n }),\n );\n };\n\nexport const yfmNoteTooltipPlugin = ({actions, schema}: ExtensionDeps) =>\n new Plugin({\n view(view) {\n return new BaseTooltipPluginView(view, {\n idPrefix: 'yfm-note-tooltip',\n nodeType: noteType(view.state.schema),\n popupPlacement: ['bottom', 'top'],\n content: (view, {node, pos}) => (\n <Toolbar\n editor={actions}\n focus={() => view.focus()}\n // the yfm class allows to access css variables\n // https://github.com/diplodoc-platform/transform/blob/master/src/scss/_common.scss#L17\n className=\"yfm g-md-yfm-note-toolbar\"\n data={[\n [\n YfmNoteType.info,\n YfmNoteType.tip,\n YfmNoteType.warning,\n YfmNoteType.alert,\n ].map((type) => ({\n id: `note-type-${type}`,\n icon: {data: CircleInfo},\n title: i18n(type),\n type: ToolbarDataType.SingleButton,\n isActive,\n isEnable,\n exec: () =>\n changeType(type)({\n schema,\n pos: pos,\n node: node,\n tr: view.state.tr,\n dispatch: view.dispatch.bind(view),\n }),\n })),\n [\n {\n id: 'note-remove',\n icon: {data: TrashBin},\n title: i18n('remove'),\n type: ToolbarDataType.SingleButton,\n isActive,\n isEnable,\n exec: () =>\n removeNode({\n pos: pos,\n node: node,\n tr: view.state.tr,\n dispatch: view.dispatch.bind(view),\n }),\n },\n ],\n ]}\n />\n ),\n });\n },\n });\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../../../../src","sources":["extensions/yfm/YfmNote/plugins/YfmNoteTooltipPlugin/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {CircleInfo, TrashBin} from '@gravity-ui/icons';\nimport type {Node, Schema} from 'prosemirror-model';\nimport {Plugin, type Transaction} from 'prosemirror-state';\nimport type {EditorView} from 'prosemirror-view';\n\nimport type {ExtensionDeps} from '../../../../../core';\nimport {i18n} from '../../../../../i18n/yfm-note';\nimport {BaseTooltipPluginView} from '../../../../../plugins/BaseTooltip';\nimport {Toolbar, ToolbarDataType} from '../../../../../toolbar';\nimport {removeNode} from '../../../../../utils/remove-node';\nimport {noteType} from '../../../index';\n\nimport './index.scss';\n\nenum YfmNoteType {\n tip = 'tip',\n info = 'info',\n warning = 'warning',\n alert = 'alert',\n}\n\nconst isEnable = () => true;\nconst isActive = () => false;\n\nconst changeType: (\n type: YfmNoteType,\n) => (params: {\n schema: Schema;\n node: Node;\n pos: number;\n dispatch: EditorView['dispatch'];\n tr: Transaction;\n}) => void =\n (type) =>\n ({node, pos, dispatch, tr}) => {\n dispatch(\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n class: `yfm-note yfm-accent-${type}`,\n 'note-type': type,\n }),\n );\n };\n\nexport const yfmNoteTooltipPlugin = ({actions, schema}: ExtensionDeps) =>\n new Plugin({\n view(view) {\n return new BaseTooltipPluginView(view, {\n idPrefix: 'yfm-note-tooltip',\n nodeType: noteType(view.state.schema),\n popupPlacement: ['bottom', 'top'],\n content: (view, {node, pos}) => (\n <Toolbar\n editor={actions}\n focus={() => view.focus()}\n // the yfm class allows to access css variables\n // https://github.com/diplodoc-platform/transform/blob/master/src/scss/_common.scss#L17\n className=\"yfm g-md-yfm-note-toolbar\"\n qa=\"g-md-toolbar-yfm-note\"\n data={[\n [\n YfmNoteType.info,\n YfmNoteType.tip,\n YfmNoteType.warning,\n YfmNoteType.alert,\n ].map((type) => ({\n id: `note-type-${type}`,\n icon: {data: CircleInfo},\n title: i18n(type),\n type: ToolbarDataType.SingleButton,\n isActive,\n isEnable,\n exec: () =>\n changeType(type)({\n schema,\n pos: pos,\n node: node,\n tr: view.state.tr,\n dispatch: view.dispatch.bind(view),\n }),\n })),\n [\n {\n id: 'note-remove',\n icon: {data: TrashBin},\n title: i18n('remove'),\n type: ToolbarDataType.SingleButton,\n isActive,\n isEnable,\n exec: () =>\n removeNode({\n pos: pos,\n node: node,\n tr: view.state.tr,\n dispatch: view.dispatch.bind(view),\n }),\n },\n ],\n ]}\n />\n ),\n });\n },\n });\n"]}
@@ -1,6 +1,7 @@
1
+ import type { YfmTablePluginOptions } from '@diplodoc/transform/lib/plugins/table/types.js';
1
2
  import type { ExtensionWithOptions } from "../../../../core/index.js";
2
3
  import { type YfmTableSchemaOptions } from "./schema.js";
3
4
  export { YfmTableNode } from "./const.js";
4
5
  export { yfmTableType, yfmTableBodyType, yfmTableRowType, yfmTableCellType } from "./utils.js";
5
- export type YfmTableSpecsOptions = YfmTableSchemaOptions & {};
6
+ export type YfmTableSpecsOptions = YfmTableSchemaOptions & Pick<YfmTablePluginOptions, 'table_ignoreSplittersInBlockCode' | 'table_ignoreSplittersInBlockMath' | 'table_ignoreSplittersInInlineCode' | 'table_ignoreSplittersInInlineMath'> & {};
6
7
  export declare const YfmTableSpecs: ExtensionWithOptions<YfmTableSpecsOptions>;
@@ -8,8 +8,19 @@ export { YfmTableNode } from "./const.js";
8
8
  export { yfmTableType, yfmTableBodyType, yfmTableRowType, yfmTableCellType } from "./utils.js";
9
9
  export const YfmTableSpecs = (builder, options) => {
10
10
  const schemaSpecs = getSchemaSpecs(options, builder.context.get('placeholder'));
11
+ /* eslint-disable camelcase */
12
+ const { table_ignoreSplittersInBlockCode, table_ignoreSplittersInBlockMath, table_ignoreSplittersInInlineCode, table_ignoreSplittersInInlineMath, } = options;
13
+ /* eslint-enable camelcase */
11
14
  builder
12
- .configureMd((md) => md.use(yfmTable, { log }))
15
+ .configureMd((md) => md.use(yfmTable, {
16
+ log,
17
+ /* eslint-disable camelcase */
18
+ table_ignoreSplittersInBlockCode,
19
+ table_ignoreSplittersInBlockMath,
20
+ table_ignoreSplittersInInlineCode,
21
+ table_ignoreSplittersInInlineMath,
22
+ /* eslint-enable camelcase */
23
+ }))
13
24
  .addNode(YfmTableNode.Table, () => ({
14
25
  spec: schemaSpecs[YfmTableNode.Table],
15
26
  toMd: serializerTokens[YfmTableNode.Table],