@gravity-ui/markdown-editor 15.5.1 → 15.6.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 (40) hide show
  1. package/build/cjs/bundle/config/w-heading-config.js +1 -0
  2. package/build/cjs/bundle/config/w-heading-config.js.map +1 -1
  3. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  4. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  5. package/build/cjs/extensions/additional/QuoteLink/index.css +0 -4
  6. package/build/cjs/extensions/behavior/Clipboard/utils.d.ts +8 -1
  7. package/build/cjs/extensions/behavior/Clipboard/utils.js +3 -3
  8. package/build/cjs/extensions/behavior/Clipboard/utils.js.map +1 -1
  9. package/build/cjs/modules/toolbars/items.js +1 -0
  10. package/build/cjs/modules/toolbars/items.js.map +1 -1
  11. package/build/cjs/modules/toolbars/types.d.ts +2 -0
  12. package/build/cjs/modules/toolbars/types.js.map +1 -1
  13. package/build/cjs/toolbar/ToolbarListButton.d.ts +1 -1
  14. package/build/cjs/toolbar/ToolbarListButton.js +6 -4
  15. package/build/cjs/toolbar/ToolbarListButton.js.map +1 -1
  16. package/build/cjs/toolbar/types.d.ts +2 -0
  17. package/build/cjs/toolbar/types.js.map +1 -1
  18. package/build/cjs/version.js +1 -1
  19. package/build/cjs/version.js.map +1 -1
  20. package/build/esm/bundle/config/w-heading-config.js +1 -0
  21. package/build/esm/bundle/config/w-heading-config.js.map +1 -1
  22. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  23. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  24. package/build/esm/extensions/additional/QuoteLink/index.css +0 -4
  25. package/build/esm/extensions/behavior/Clipboard/utils.d.ts +8 -1
  26. package/build/esm/extensions/behavior/Clipboard/utils.js +3 -3
  27. package/build/esm/extensions/behavior/Clipboard/utils.js.map +1 -1
  28. package/build/esm/modules/toolbars/items.js +1 -0
  29. package/build/esm/modules/toolbars/items.js.map +1 -1
  30. package/build/esm/modules/toolbars/types.d.ts +2 -0
  31. package/build/esm/modules/toolbars/types.js.map +1 -1
  32. package/build/esm/toolbar/ToolbarListButton.d.ts +1 -1
  33. package/build/esm/toolbar/ToolbarListButton.js +6 -4
  34. package/build/esm/toolbar/ToolbarListButton.js.map +1 -1
  35. package/build/esm/toolbar/types.d.ts +2 -0
  36. package/build/esm/toolbar/types.js.map +1 -1
  37. package/build/esm/version.js +1 -1
  38. package/build/esm/version.js.map +1 -1
  39. package/build/styles.css +0 -4
  40. package/package.json +3 -3
@@ -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> & ToolbarListButtonData<E>;\n\nexport function ToolbarListButton<E>({\n className,\n editor,\n focus,\n onClick,\n icon,\n title,\n withArrow,\n data,\n alwaysActive,\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 someActive = alwaysActive\n ? false\n : data.some((item) => item.isActive(editor) && !item.doNotActivateList);\n const everyDisabled = alwaysActive ? false : data.every((item) => !item.isEnable(editor));\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 if (data.length === 0) return null;\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 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')}>\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 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> & ToolbarListButtonData<E>;\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}: 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 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 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')}>\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 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"]}
@@ -82,6 +82,8 @@ export type ToolbarListButtonData<E> = {
82
82
  data: ToolbarListButtonItemData<E>[];
83
83
  alwaysActive?: boolean;
84
84
  hideDisabled?: boolean;
85
+ /** When state changes to active, replace default icon with icon of first active item */
86
+ replaceActiveIcon?: boolean;
85
87
  };
86
88
  /**
87
89
  * @deprecated Use ReactComponent type instead
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"../../../src","sources":["toolbar/types.ts"],"names":[],"mappings":";;;AAsCA,IAAY,eASX;AATD,WAAY,eAAe;IACvB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;IACvB,kDAAkD;IAClD,uCAAoB,CAAA;IACpB,kDAAkD;IAClD,4CAAyB,CAAA;IACzB,iDAA8B,CAAA;AAClC,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B","sourcesContent":["import type {HotkeyProps, IconProps} from '@gravity-ui/uikit';\n\nimport type {ClassNameProps} from '../classname';\n\nexport type ToolbarBaseProps<E> = ClassNameProps & {\n editor: E;\n focus(): void;\n onClick?(id: string, attrs?: {[key: string]: any}): void;\n};\n\nexport type ToolbarIconData = Pick<IconProps, 'data' | 'size'>;\nexport type ToolbarGroupData<E> = Array<ToolbarGroupItemData<E>>;\nexport type ToolbarData<E> = ToolbarGroupData<E>[];\n\nexport type ToolbarItemData<E> = {\n id: string;\n icon: ToolbarIconData;\n title: string | (() => string);\n hint?: string | (() => string);\n hotkey?: HotkeyProps['value'];\n preview?: React.ReactNode;\n /**\n * Show hint when _isEnable()_ returns false\n *\n * `false` – don't show hint;\n *\n * `true` – show default hint;\n *\n * `string` or `() => string` – show hint with custom message.\n *\n * @default true\n */\n hintWhenDisabled?: boolean | string | (() => string);\n exec(editor: E): void;\n isActive(editor: E): boolean;\n isEnable(editor: E): boolean;\n};\n\nexport enum ToolbarDataType {\n SingleButton = 's-button',\n ListButton = 'list-b',\n ButtonPopup = 'b-popup',\n /** @deprecated Use ReactComponent type instead */\n ReactNode = 'r-node',\n /** @deprecated Use ReactComponent type instead */\n ReactNodeFn = 'r-node-fn',\n ReactComponent = 'r-component',\n}\n\nexport type ToolbarGroupItemData<E> =\n | ToolbarSingleItemData<E>\n | ToolbarButtonPopupData<E>\n | ToolbarListItemData<E>\n | ToolbarReactNodeData\n | ToolbarReactNodeFnData<E>\n | ToolbarReactComponentData<E>;\n\nexport type ToolbarSingleItemData<E> = ToolbarItemData<E> & {\n id: string;\n type: ToolbarDataType.SingleButton;\n className?: string;\n};\n\nexport type ToolbarListItemData<E> = ToolbarListButtonData<E> & {\n id: string;\n type: ToolbarDataType.ListButton;\n className?: string;\n};\n\nexport type ToolbarReactComponentData<E> = {\n id: string;\n type: ToolbarDataType.ReactComponent;\n width: number;\n className?: string;\n component: React.ComponentType<ToolbarBaseProps<E>>;\n props?: object;\n};\n\nexport type ToolbarButtonPopupData<E> = ToolbarItemData<E> & {\n /** not used, may be an empty function */\n exec: ToolbarItemData<E>['exec'];\n type: ToolbarDataType.ButtonPopup;\n renderPopup: (\n props: ToolbarBaseProps<E> & {hide: () => void; anchorElement: HTMLElement | null},\n ) => React.ReactNode;\n className?: string;\n};\n\nexport type ToolbarListButtonItemData<E> = ToolbarItemData<E> & {\n doNotActivateList?: boolean;\n};\n\nexport type ToolbarListButtonData<E> = {\n icon: ToolbarIconData;\n title: string | (() => string);\n withArrow?: boolean;\n data: ToolbarListButtonItemData<E>[];\n alwaysActive?: boolean;\n hideDisabled?: boolean;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeData = {\n id: string;\n type: ToolbarDataType.ReactNode;\n width: number;\n content: React.ReactNode;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeFnData<E> = {\n id: string;\n type: ToolbarDataType.ReactNodeFn;\n width: number;\n content: (e: E) => React.ReactNode;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"../../../src","sources":["toolbar/types.ts"],"names":[],"mappings":";;;AAsCA,IAAY,eASX;AATD,WAAY,eAAe;IACvB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;IACvB,kDAAkD;IAClD,uCAAoB,CAAA;IACpB,kDAAkD;IAClD,4CAAyB,CAAA;IACzB,iDAA8B,CAAA;AAClC,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B","sourcesContent":["import type {HotkeyProps, IconProps} from '@gravity-ui/uikit';\n\nimport type {ClassNameProps} from '../classname';\n\nexport type ToolbarBaseProps<E> = ClassNameProps & {\n editor: E;\n focus(): void;\n onClick?(id: string, attrs?: {[key: string]: any}): void;\n};\n\nexport type ToolbarIconData = Pick<IconProps, 'data' | 'size'>;\nexport type ToolbarGroupData<E> = Array<ToolbarGroupItemData<E>>;\nexport type ToolbarData<E> = ToolbarGroupData<E>[];\n\nexport type ToolbarItemData<E> = {\n id: string;\n icon: ToolbarIconData;\n title: string | (() => string);\n hint?: string | (() => string);\n hotkey?: HotkeyProps['value'];\n preview?: React.ReactNode;\n /**\n * Show hint when _isEnable()_ returns false\n *\n * `false` – don't show hint;\n *\n * `true` – show default hint;\n *\n * `string` or `() => string` – show hint with custom message.\n *\n * @default true\n */\n hintWhenDisabled?: boolean | string | (() => string);\n exec(editor: E): void;\n isActive(editor: E): boolean;\n isEnable(editor: E): boolean;\n};\n\nexport enum ToolbarDataType {\n SingleButton = 's-button',\n ListButton = 'list-b',\n ButtonPopup = 'b-popup',\n /** @deprecated Use ReactComponent type instead */\n ReactNode = 'r-node',\n /** @deprecated Use ReactComponent type instead */\n ReactNodeFn = 'r-node-fn',\n ReactComponent = 'r-component',\n}\n\nexport type ToolbarGroupItemData<E> =\n | ToolbarSingleItemData<E>\n | ToolbarButtonPopupData<E>\n | ToolbarListItemData<E>\n | ToolbarReactNodeData\n | ToolbarReactNodeFnData<E>\n | ToolbarReactComponentData<E>;\n\nexport type ToolbarSingleItemData<E> = ToolbarItemData<E> & {\n id: string;\n type: ToolbarDataType.SingleButton;\n className?: string;\n};\n\nexport type ToolbarListItemData<E> = ToolbarListButtonData<E> & {\n id: string;\n type: ToolbarDataType.ListButton;\n className?: string;\n};\n\nexport type ToolbarReactComponentData<E> = {\n id: string;\n type: ToolbarDataType.ReactComponent;\n width: number;\n className?: string;\n component: React.ComponentType<ToolbarBaseProps<E>>;\n props?: object;\n};\n\nexport type ToolbarButtonPopupData<E> = ToolbarItemData<E> & {\n /** not used, may be an empty function */\n exec: ToolbarItemData<E>['exec'];\n type: ToolbarDataType.ButtonPopup;\n renderPopup: (\n props: ToolbarBaseProps<E> & {hide: () => void; anchorElement: HTMLElement | null},\n ) => React.ReactNode;\n className?: string;\n};\n\nexport type ToolbarListButtonItemData<E> = ToolbarItemData<E> & {\n doNotActivateList?: boolean;\n};\n\nexport type ToolbarListButtonData<E> = {\n icon: ToolbarIconData;\n title: string | (() => string);\n withArrow?: boolean;\n data: ToolbarListButtonItemData<E>[];\n alwaysActive?: boolean;\n hideDisabled?: boolean;\n /** When state changes to active, replace default icon with icon of first active item */\n replaceActiveIcon?: boolean;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeData = {\n id: string;\n type: ToolbarDataType.ReactNode;\n width: number;\n content: React.ReactNode;\n};\n\n/**\n * @deprecated Use ReactComponent type instead\n * */\nexport type ToolbarReactNodeFnData<E> = {\n id: string;\n type: ToolbarDataType.ReactNodeFn;\n width: number;\n content: (e: E) => React.ReactNode;\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.5.1' !== 'undefined' ? '15.5.1' : 'unknown';
5
+ exports.VERSION = typeof '15.6.0' !== 'undefined' ? '15.6.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.5.1' !== 'undefined' ? '15.5.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.6.0' !== 'undefined' ? '15.6.0' : 'unknown';\n"]}
@@ -79,6 +79,7 @@ export const wHeading6ItemData = {
79
79
  export const wHeadingListConfig = {
80
80
  icon: icons.headline,
81
81
  withArrow: true,
82
+ replaceActiveIcon: true,
82
83
  title: i18n.bind(null, 'heading'),
83
84
  data: [
84
85
  wTextItemData,
@@ -1 +1 @@
1
- {"version":3,"file":"w-heading-config.js","sourceRoot":"../../../../src","sources":["bundle/config/w-heading-config.tsx"],"names":[],"mappings":"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","sourcesContent":["import {i18n} from '../../i18n/menubar';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {WToolbarListButtonData, WToolbarListButtonItemData} from '../toolbar/types';\n\nimport {ActionName} from './action-names';\nimport {icons} from './icons';\nimport {HeadingPreview} from './previews/HeadingPreview';\nimport {TextPreview} from './previews/TextPreview';\n\nexport const wTextItemData: WToolbarListButtonItemData = {\n id: ActionName.paragraph,\n title: i18n.bind(null, 'text'),\n icon: icons.text,\n hotkey: f.toView(A.Text),\n exec: (e) => e.actions.toParagraph.run(),\n isActive: (e) => e.actions.toParagraph.isActive(),\n isEnable: (e) => e.actions.toParagraph.isEnable(),\n doNotActivateList: true,\n preview: <TextPreview />,\n};\nexport const wHeading1ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading1,\n title: i18n.bind(null, 'heading1'),\n icon: icons.h1,\n hotkey: f.toView(A.Heading1),\n exec: (e) => e.actions.toH1.run(),\n isActive: (e) => e.actions.toH1.isActive(),\n isEnable: (e) => e.actions.toH1.isEnable(),\n preview: <HeadingPreview level={1} />,\n};\nexport const wHeading2ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading2,\n title: i18n.bind(null, 'heading2'),\n icon: icons.h2,\n hotkey: f.toView(A.Heading2),\n exec: (e) => e.actions.toH2.run(),\n isActive: (e) => e.actions.toH2.isActive(),\n isEnable: (e) => e.actions.toH2.isEnable(),\n preview: <HeadingPreview level={2} />,\n};\nexport const wHeading3ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading3,\n title: i18n.bind(null, 'heading3'),\n icon: icons.h3,\n hotkey: f.toView(A.Heading3),\n exec: (e) => e.actions.toH3.run(),\n isActive: (e) => e.actions.toH3.isActive(),\n isEnable: (e) => e.actions.toH3.isEnable(),\n preview: <HeadingPreview level={3} />,\n};\nexport const wHeading4ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading4,\n title: i18n.bind(null, 'heading4'),\n icon: icons.h4, // Предполагается, что icon исправлен для h4\n hotkey: f.toView(A.Heading4),\n exec: (e) => e.actions.toH4.run(),\n isActive: (e) => e.actions.toH4.isActive(),\n isEnable: (e) => e.actions.toH4.isEnable(),\n preview: <HeadingPreview level={4} />,\n};\nexport const wHeading5ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading5,\n title: i18n.bind(null, 'heading5'),\n icon: icons.h5, // Предполагается, что icon исправлен для h5\n hotkey: f.toView(A.Heading5),\n exec: (e) => e.actions.toH5.run(),\n isActive: (e) => e.actions.toH5.isActive(),\n isEnable: (e) => e.actions.toH5.isEnable(),\n preview: <HeadingPreview level={5} />,\n};\nexport const wHeading6ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading6,\n title: i18n.bind(null, 'heading6'),\n icon: icons.h6, // Предполагается, что icon исправлен для h6\n hotkey: f.toView(A.Heading6),\n exec: (e) => e.actions.toH6.run(),\n isActive: (e) => e.actions.toH6.isActive(),\n isEnable: (e) => e.actions.toH6.isEnable(),\n preview: <HeadingPreview level={6} />,\n};\n\nexport const wHeadingListConfig: WToolbarListButtonData = {\n icon: icons.headline,\n withArrow: true,\n title: i18n.bind(null, 'heading'),\n data: [\n wTextItemData,\n wHeading1ItemData,\n wHeading2ItemData,\n wHeading3ItemData,\n wHeading4ItemData,\n wHeading5ItemData,\n wHeading6ItemData,\n ],\n};\n"]}
1
+ {"version":3,"file":"w-heading-config.js","sourceRoot":"../../../../src","sources":["bundle/config/w-heading-config.tsx"],"names":[],"mappings":"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","sourcesContent":["import {i18n} from '../../i18n/menubar';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {WToolbarListButtonData, WToolbarListButtonItemData} from '../toolbar/types';\n\nimport {ActionName} from './action-names';\nimport {icons} from './icons';\nimport {HeadingPreview} from './previews/HeadingPreview';\nimport {TextPreview} from './previews/TextPreview';\n\nexport const wTextItemData: WToolbarListButtonItemData = {\n id: ActionName.paragraph,\n title: i18n.bind(null, 'text'),\n icon: icons.text,\n hotkey: f.toView(A.Text),\n exec: (e) => e.actions.toParagraph.run(),\n isActive: (e) => e.actions.toParagraph.isActive(),\n isEnable: (e) => e.actions.toParagraph.isEnable(),\n doNotActivateList: true,\n preview: <TextPreview />,\n};\nexport const wHeading1ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading1,\n title: i18n.bind(null, 'heading1'),\n icon: icons.h1,\n hotkey: f.toView(A.Heading1),\n exec: (e) => e.actions.toH1.run(),\n isActive: (e) => e.actions.toH1.isActive(),\n isEnable: (e) => e.actions.toH1.isEnable(),\n preview: <HeadingPreview level={1} />,\n};\nexport const wHeading2ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading2,\n title: i18n.bind(null, 'heading2'),\n icon: icons.h2,\n hotkey: f.toView(A.Heading2),\n exec: (e) => e.actions.toH2.run(),\n isActive: (e) => e.actions.toH2.isActive(),\n isEnable: (e) => e.actions.toH2.isEnable(),\n preview: <HeadingPreview level={2} />,\n};\nexport const wHeading3ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading3,\n title: i18n.bind(null, 'heading3'),\n icon: icons.h3,\n hotkey: f.toView(A.Heading3),\n exec: (e) => e.actions.toH3.run(),\n isActive: (e) => e.actions.toH3.isActive(),\n isEnable: (e) => e.actions.toH3.isEnable(),\n preview: <HeadingPreview level={3} />,\n};\nexport const wHeading4ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading4,\n title: i18n.bind(null, 'heading4'),\n icon: icons.h4, // Предполагается, что icon исправлен для h4\n hotkey: f.toView(A.Heading4),\n exec: (e) => e.actions.toH4.run(),\n isActive: (e) => e.actions.toH4.isActive(),\n isEnable: (e) => e.actions.toH4.isEnable(),\n preview: <HeadingPreview level={4} />,\n};\nexport const wHeading5ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading5,\n title: i18n.bind(null, 'heading5'),\n icon: icons.h5, // Предполагается, что icon исправлен для h5\n hotkey: f.toView(A.Heading5),\n exec: (e) => e.actions.toH5.run(),\n isActive: (e) => e.actions.toH5.isActive(),\n isEnable: (e) => e.actions.toH5.isEnable(),\n preview: <HeadingPreview level={5} />,\n};\nexport const wHeading6ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading6,\n title: i18n.bind(null, 'heading6'),\n icon: icons.h6, // Предполагается, что icon исправлен для h6\n hotkey: f.toView(A.Heading6),\n exec: (e) => e.actions.toH6.run(),\n isActive: (e) => e.actions.toH6.isActive(),\n isEnable: (e) => e.actions.toH6.isEnable(),\n preview: <HeadingPreview level={6} />,\n};\n\nexport const wHeadingListConfig: WToolbarListButtonData = {\n icon: icons.headline,\n withArrow: true,\n replaceActiveIcon: true,\n title: i18n.bind(null, 'heading'),\n data: [\n wTextItemData,\n wHeading1ItemData,\n wHeading2ItemData,\n wHeading3ItemData,\n wHeading4ItemData,\n wHeading5ItemData,\n wHeading6ItemData,\n ],\n};\n"]}
@@ -25,7 +25,10 @@ const transformItem = (type, item, id = 'unknown') => {
25
25
  hotkey: item.view.hotkey,
26
26
  doNotActivateList: item.view.doNotActivateList,
27
27
  ...(isSingleButton && { preview: item.view.preview }),
28
- ...(isListButton && { withArrow: item.view.withArrow }),
28
+ ...(isListButton && {
29
+ withArrow: item.view.withArrow,
30
+ replaceActiveIcon: item.view.replaceActiveIcon,
31
+ }),
29
32
  ...(type === 'wysiwyg' && item.wysiwyg && { ...item.wysiwyg }),
30
33
  ...(type === 'markup' && item.markup && { ...item.markup }),
31
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toolbarsConfigs.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/utils/toolbarsConfigs.ts"],"names":[],"mappings":"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","sourcesContent":["import {ToolbarName} from '../../../modules/toolbars/constants';\nimport {commonmark, defaultPreset, full, yfm, zero} from '../../../modules/toolbars/presets';\nimport type {\n ToolbarItem,\n ToolbarItemMarkup,\n ToolbarItemWysiwyg,\n ToolbarsPreset,\n} from '../../../modules/toolbars/types';\nimport type {MarkdownEditorViewProps} from '../../MarkdownEditorView';\nimport type {MarkdownEditorPreset} from '../../types';\nimport {ToolbarDataType} from '../types';\nimport type {MToolbarData, ToolbarIconData, WToolbarData} from '../types';\n\nimport {flattenPreset} from './flattenPreset';\n\nconst defaultPresets: Record<MarkdownEditorPreset, ToolbarsPreset> = {\n zero,\n commonmark,\n default: defaultPreset,\n yfm,\n full,\n};\n\ninterface TransformedItem {\n type: ToolbarDataType;\n id: string;\n title?: string | (() => string);\n hint?: string | (() => string);\n icon?: ToolbarIconData;\n hotkey?: string;\n withArrow?: boolean;\n doNotActivateList?: boolean;\n preview?: React.ReactNode;\n wysiwyg?: ToolbarItemWysiwyg<ToolbarDataType>;\n markup?: ToolbarItemMarkup<ToolbarDataType>;\n}\n\nconst transformItem = (\n type: 'wysiwyg' | 'markup',\n item?: ToolbarItem<ToolbarDataType.SingleButton | ToolbarDataType.ListButton>,\n id = 'unknown',\n): TransformedItem => {\n if (!item) {\n console.warn(\n `Toolbar item \"${id}\" not found, it might not have been added to the items dictionary.`,\n );\n return {} as TransformedItem;\n }\n\n const isListButton = item.view.type === ToolbarDataType.ListButton;\n const isSingleButton = item.view.type === ToolbarDataType.SingleButton;\n\n return {\n type: item.view.type ?? ToolbarDataType.SingleButton,\n id,\n title: item.view.title,\n hint: item.view.hint,\n icon: item.view.icon,\n hotkey: item.view.hotkey,\n doNotActivateList: item.view.doNotActivateList,\n ...(isSingleButton && {preview: (item.view as any).preview}),\n ...(isListButton && {withArrow: (item.view as any).withArrow}),\n ...(type === 'wysiwyg' && item.wysiwyg && {...item.wysiwyg}),\n ...(type === 'markup' && item.markup && {...item.markup}),\n };\n};\n\nexport const createToolbarConfig = <T extends WToolbarData | MToolbarData>(\n editorType: 'wysiwyg' | 'markup',\n toolbarPreset: ToolbarsPreset | MarkdownEditorPreset,\n toolbarName: string,\n): T => {\n const preset =\n typeof toolbarPreset === 'string'\n ? defaultPresets[toolbarPreset] || defaultPresets.default\n : toolbarPreset;\n const orders = preset.orders[toolbarName] ?? [[]];\n const {items} = preset;\n\n const toolbarData = orders.map((group) =>\n group.map((action) => {\n return typeof action === 'string'\n ? transformItem(editorType, items[action], action)\n : {\n ...transformItem(editorType, items[action.id], action.id),\n data: action.items.map((id) => transformItem(editorType, items[id], id)),\n };\n }),\n );\n\n return toolbarData as T;\n};\n\ninterface GetToolbarsConfigsArgs {\n toolbarsPreset?: ToolbarsPreset;\n props: Pick<\n MarkdownEditorViewProps,\n | 'markupToolbarConfig'\n | 'wysiwygToolbarConfig'\n | 'wysiwygHiddenActionsConfig'\n | 'markupHiddenActionsConfig'\n >;\n preset: MarkdownEditorPreset;\n}\nexport const getToolbarsConfigs = ({toolbarsPreset, props, preset}: GetToolbarsConfigsArgs) => {\n const wysiwygToolbarConfig = toolbarsPreset\n ? createToolbarConfig<WToolbarData>('wysiwyg', toolbarsPreset, ToolbarName.wysiwygMain)\n : props.wysiwygToolbarConfig ??\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygMain);\n\n const markupToolbarConfig = toolbarsPreset\n ? createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupMain)\n : props.markupToolbarConfig ??\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupMain);\n\n const wysiwygHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<WToolbarData>(\n 'wysiwyg',\n toolbarsPreset,\n ToolbarName.wysiwygHidden,\n ),\n )\n : props.wysiwygHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygHidden),\n );\n\n const markupHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupHidden),\n )\n : props.markupHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupHidden),\n );\n\n return {\n wysiwygToolbarConfig,\n markupToolbarConfig,\n wysiwygHiddenActionsConfig,\n markupHiddenActionsConfig,\n };\n};\n"]}
1
+ {"version":3,"file":"toolbarsConfigs.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/utils/toolbarsConfigs.ts"],"names":[],"mappings":"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","sourcesContent":["import {ToolbarName} from '../../../modules/toolbars/constants';\nimport {commonmark, defaultPreset, full, yfm, zero} from '../../../modules/toolbars/presets';\nimport type {\n ToolbarItem,\n ToolbarItemMarkup,\n ToolbarItemWysiwyg,\n ToolbarsPreset,\n} from '../../../modules/toolbars/types';\nimport type {MarkdownEditorViewProps} from '../../MarkdownEditorView';\nimport type {MarkdownEditorPreset} from '../../types';\nimport {ToolbarDataType} from '../types';\nimport type {MToolbarData, ToolbarIconData, WToolbarData} from '../types';\n\nimport {flattenPreset} from './flattenPreset';\n\nconst defaultPresets: Record<MarkdownEditorPreset, ToolbarsPreset> = {\n zero,\n commonmark,\n default: defaultPreset,\n yfm,\n full,\n};\n\ninterface TransformedItem {\n type: ToolbarDataType;\n id: string;\n title?: string | (() => string);\n hint?: string | (() => string);\n icon?: ToolbarIconData;\n hotkey?: string;\n withArrow?: boolean;\n replaceActiveIcon?: true;\n doNotActivateList?: boolean;\n preview?: React.ReactNode;\n wysiwyg?: ToolbarItemWysiwyg<ToolbarDataType>;\n markup?: ToolbarItemMarkup<ToolbarDataType>;\n}\n\nconst transformItem = (\n type: 'wysiwyg' | 'markup',\n item?: ToolbarItem<ToolbarDataType.SingleButton | ToolbarDataType.ListButton>,\n id = 'unknown',\n): TransformedItem => {\n if (!item) {\n console.warn(\n `Toolbar item \"${id}\" not found, it might not have been added to the items dictionary.`,\n );\n return {} as TransformedItem;\n }\n\n const isListButton = item.view.type === ToolbarDataType.ListButton;\n const isSingleButton = item.view.type === ToolbarDataType.SingleButton;\n\n return {\n type: item.view.type ?? ToolbarDataType.SingleButton,\n id,\n title: item.view.title,\n hint: item.view.hint,\n icon: item.view.icon,\n hotkey: item.view.hotkey,\n doNotActivateList: item.view.doNotActivateList,\n ...(isSingleButton && {preview: (item.view as any).preview}),\n ...(isListButton && {\n withArrow: (item.view as any).withArrow,\n replaceActiveIcon: (item.view as any).replaceActiveIcon,\n }),\n ...(type === 'wysiwyg' && item.wysiwyg && {...item.wysiwyg}),\n ...(type === 'markup' && item.markup && {...item.markup}),\n };\n};\n\nexport const createToolbarConfig = <T extends WToolbarData | MToolbarData>(\n editorType: 'wysiwyg' | 'markup',\n toolbarPreset: ToolbarsPreset | MarkdownEditorPreset,\n toolbarName: string,\n): T => {\n const preset =\n typeof toolbarPreset === 'string'\n ? defaultPresets[toolbarPreset] || defaultPresets.default\n : toolbarPreset;\n const orders = preset.orders[toolbarName] ?? [[]];\n const {items} = preset;\n\n const toolbarData = orders.map((group) =>\n group.map((action) => {\n return typeof action === 'string'\n ? transformItem(editorType, items[action], action)\n : {\n ...transformItem(editorType, items[action.id], action.id),\n data: action.items.map((id) => transformItem(editorType, items[id], id)),\n };\n }),\n );\n\n return toolbarData as T;\n};\n\ninterface GetToolbarsConfigsArgs {\n toolbarsPreset?: ToolbarsPreset;\n props: Pick<\n MarkdownEditorViewProps,\n | 'markupToolbarConfig'\n | 'wysiwygToolbarConfig'\n | 'wysiwygHiddenActionsConfig'\n | 'markupHiddenActionsConfig'\n >;\n preset: MarkdownEditorPreset;\n}\nexport const getToolbarsConfigs = ({toolbarsPreset, props, preset}: GetToolbarsConfigsArgs) => {\n const wysiwygToolbarConfig = toolbarsPreset\n ? createToolbarConfig<WToolbarData>('wysiwyg', toolbarsPreset, ToolbarName.wysiwygMain)\n : props.wysiwygToolbarConfig ??\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygMain);\n\n const markupToolbarConfig = toolbarsPreset\n ? createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupMain)\n : props.markupToolbarConfig ??\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupMain);\n\n const wysiwygHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<WToolbarData>(\n 'wysiwyg',\n toolbarsPreset,\n ToolbarName.wysiwygHidden,\n ),\n )\n : props.wysiwygHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygHidden),\n );\n\n const markupHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupHidden),\n )\n : props.markupHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupHidden),\n );\n\n return {\n wysiwygToolbarConfig,\n markupToolbarConfig,\n wysiwygHiddenActionsConfig,\n markupHiddenActionsConfig,\n };\n};\n"]}
@@ -2,10 +2,6 @@
2
2
  --yfm-quote-link-background: var(--g-color-private-black-50-solid);
3
3
  --yfm-quote-link-background-hover: var(--g-color-base-simple-hover);
4
4
  }
5
- .yfm-quote-link * {
6
- position: relative;
7
- z-index: 1;
8
- }
9
5
 
10
6
  .g-root_theme_dark .yfm-quote-link,
11
7
  .g-root_theme_dark-hc .yfm-quote-link {
@@ -14,5 +14,12 @@ export declare function isFilesOnly({ types }: DataTransfer): boolean;
14
14
  export declare function isFilesFromHtml({ types }: DataTransfer): boolean;
15
15
  export declare function isImageFile(file: File): boolean;
16
16
  export declare function extractTextContentFromHtml(html: string): string | null;
17
- export declare function findNotEmptyContentPosses(fragment: Fragment): [number, number, number, number];
17
+ type ContentBoundaryPositions = [
18
+ firstNotEmptyPos: number,
19
+ lastNotEmptyPos: number,
20
+ firstPos: number,
21
+ lastPos: number
22
+ ];
23
+ export declare function findNotEmptyContentPosses(fragment: Fragment): ContentBoundaryPositions;
18
24
  export declare function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment;
25
+ export {};
@@ -59,10 +59,10 @@ export function findNotEmptyContentPosses(fragment) {
59
59
  if (isListNode(contentNode) || isListItemNode(contentNode)) {
60
60
  const [start, end] = findNotEmptyContentPosses(contentNode.content);
61
61
  if (firstNotEmptyNodePos === -1 && start !== -1) {
62
- firstNotEmptyNodePos = offset + start;
62
+ firstNotEmptyNodePos = offset + start + 1;
63
63
  }
64
64
  if (end !== -1) {
65
- lastNotEmptyNodePos = offset + end;
65
+ lastNotEmptyNodePos = offset + end + 1;
66
66
  }
67
67
  }
68
68
  else {
@@ -83,6 +83,6 @@ export function trimContent(fragment, creatEmptyFragment) {
83
83
  else if (notEmptyStart === -1 && notEmptyEnd === -1) {
84
84
  return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;
85
85
  }
86
- return fragment.cut(notEmptyStart + 1, notEmptyEnd + 1);
86
+ return fragment.cut(notEmptyStart, notEmptyEnd);
87
87
  }
88
88
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/Clipboard/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {Fragment} from 'prosemirror-model';\n\nimport {isListItemNode, isListNode} from 'src/extensions/markdown/Lists/utils';\nimport {isEmptyString} from 'src/utils';\n\n/** Сontains all data formats known to us */\nexport enum DataTransferType {\n Text = 'text/plain',\n Html = 'text/html',\n Yfm = 'text/yfm', // self\n Rtf = 'text/rtf', // Safari, WebStorm/Intelij\n UriList = 'text/uri-list',\n VSCodeData = 'vscode-editor-data',\n Files = 'Files',\n}\n\nexport function isIosSafariShare({types}: DataTransfer): boolean {\n // if link is copied from ios safari share button,\n // then data transfer only have text/uri-list data type\n return (\n types.includes(DataTransferType.UriList) &&\n !types.includes(DataTransferType.Text) &&\n !types.includes(DataTransferType.Html)\n );\n}\n\nexport function isFilesOnly({types}: DataTransfer): boolean {\n return types.length === 1 && types[0] === DataTransferType.Files;\n}\n\nexport function isFilesFromHtml({types}: DataTransfer): boolean {\n return (\n types.length === 2 &&\n types.includes(DataTransferType.Files) &&\n types.includes(DataTransferType.Html)\n );\n}\n\nexport function isImageFile(file: File): boolean {\n return file.type.startsWith('image/');\n}\n\nexport function extractTextContentFromHtml(html: string) {\n const element = document.createElement('div');\n element.innerHTML = html;\n element.replaceChildren(...Array.from(element.children).filter((v) => v.nodeName !== 'META'));\n\n // Look if all nodes are div or span. That they don't have any classname and have only text child.\n if (\n Array.from(element.children).every(({nodeName, classList, childNodes}) => {\n return (\n (nodeName === 'DIV' || nodeName === 'SPAN') &&\n !classList.length &&\n childNodes.length === 1 &&\n (childNodes[0].nodeName === '#text' || childNodes[0].nodeName === 'BR')\n );\n })\n ) {\n return Array.from(element.children).reduce((a, v) => a + v.textContent + '\\n', '');\n }\n\n return null;\n}\n\nexport function findNotEmptyContentPosses(fragment: Fragment): [number, number, number, number] {\n let firstNodePos = -1;\n let lastNodePos = -1;\n let firstNotEmptyNodePos = -1;\n let lastNotEmptyNodePos = -1;\n\n fragment.forEach((contentNode, offset) => {\n if (firstNodePos === -1) {\n firstNodePos = offset;\n }\n lastNodePos = offset + contentNode.nodeSize;\n\n if (!isEmptyString(contentNode)) {\n if (isListNode(contentNode) || isListItemNode(contentNode)) {\n const [start, end] = findNotEmptyContentPosses(contentNode.content);\n if (firstNotEmptyNodePos === -1 && start !== -1) {\n firstNotEmptyNodePos = offset + start;\n }\n if (end !== -1) {\n lastNotEmptyNodePos = offset + end;\n }\n } else {\n if (firstNotEmptyNodePos === -1) {\n firstNotEmptyNodePos = offset;\n }\n lastNotEmptyNodePos = offset + contentNode.nodeSize;\n }\n }\n });\n\n return [firstNotEmptyNodePos, lastNotEmptyNodePos, firstNodePos, lastNodePos];\n}\n\nexport function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment {\n const [notEmptyStart, notEmptyEnd, start, end] = findNotEmptyContentPosses(fragment);\n\n if (notEmptyStart === start && notEmptyEnd === end) {\n return fragment;\n } else if (notEmptyStart === -1 && notEmptyEnd === -1) {\n return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;\n }\n\n return fragment.cut(notEmptyStart + 1, notEmptyEnd + 1);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/Clipboard/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {Fragment} from 'prosemirror-model';\n\nimport {isListItemNode, isListNode} from 'src/extensions/markdown/Lists/utils';\nimport {isEmptyString} from 'src/utils';\n\n/** Сontains all data formats known to us */\nexport enum DataTransferType {\n Text = 'text/plain',\n Html = 'text/html',\n Yfm = 'text/yfm', // self\n Rtf = 'text/rtf', // Safari, WebStorm/Intelij\n UriList = 'text/uri-list',\n VSCodeData = 'vscode-editor-data',\n Files = 'Files',\n}\n\nexport function isIosSafariShare({types}: DataTransfer): boolean {\n // if link is copied from ios safari share button,\n // then data transfer only have text/uri-list data type\n return (\n types.includes(DataTransferType.UriList) &&\n !types.includes(DataTransferType.Text) &&\n !types.includes(DataTransferType.Html)\n );\n}\n\nexport function isFilesOnly({types}: DataTransfer): boolean {\n return types.length === 1 && types[0] === DataTransferType.Files;\n}\n\nexport function isFilesFromHtml({types}: DataTransfer): boolean {\n return (\n types.length === 2 &&\n types.includes(DataTransferType.Files) &&\n types.includes(DataTransferType.Html)\n );\n}\n\nexport function isImageFile(file: File): boolean {\n return file.type.startsWith('image/');\n}\n\nexport function extractTextContentFromHtml(html: string) {\n const element = document.createElement('div');\n element.innerHTML = html;\n element.replaceChildren(...Array.from(element.children).filter((v) => v.nodeName !== 'META'));\n\n // Look if all nodes are div or span. That they don't have any classname and have only text child.\n if (\n Array.from(element.children).every(({nodeName, classList, childNodes}) => {\n return (\n (nodeName === 'DIV' || nodeName === 'SPAN') &&\n !classList.length &&\n childNodes.length === 1 &&\n (childNodes[0].nodeName === '#text' || childNodes[0].nodeName === 'BR')\n );\n })\n ) {\n return Array.from(element.children).reduce((a, v) => a + v.textContent + '\\n', '');\n }\n\n return null;\n}\n\ntype ContentBoundaryPositions = [\n firstNotEmptyPos: number,\n lastNotEmptyPos: number,\n firstPos: number,\n lastPos: number,\n];\nexport function findNotEmptyContentPosses(fragment: Fragment): ContentBoundaryPositions {\n let firstNodePos = -1;\n let lastNodePos = -1;\n let firstNotEmptyNodePos = -1;\n let lastNotEmptyNodePos = -1;\n\n fragment.forEach((contentNode, offset) => {\n if (firstNodePos === -1) {\n firstNodePos = offset;\n }\n lastNodePos = offset + contentNode.nodeSize;\n\n if (!isEmptyString(contentNode)) {\n if (isListNode(contentNode) || isListItemNode(contentNode)) {\n const [start, end] = findNotEmptyContentPosses(contentNode.content);\n if (firstNotEmptyNodePos === -1 && start !== -1) {\n firstNotEmptyNodePos = offset + start + 1;\n }\n if (end !== -1) {\n lastNotEmptyNodePos = offset + end + 1;\n }\n } else {\n if (firstNotEmptyNodePos === -1) {\n firstNotEmptyNodePos = offset;\n }\n lastNotEmptyNodePos = offset + contentNode.nodeSize;\n }\n }\n });\n\n return [firstNotEmptyNodePos, lastNotEmptyNodePos, firstNodePos, lastNodePos];\n}\n\nexport function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment {\n const [notEmptyStart, notEmptyEnd, start, end] = findNotEmptyContentPosses(fragment);\n\n if (notEmptyStart === start && notEmptyEnd === end) {\n return fragment;\n } else if (notEmptyStart === -1 && notEmptyEnd === -1) {\n return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;\n }\n\n return fragment.cut(notEmptyStart, notEmptyEnd);\n}\n"]}
@@ -727,6 +727,7 @@ export const headingListItemView = {
727
727
  icon: icons.headline,
728
728
  title: i18n.bind(null, 'heading'),
729
729
  withArrow: true,
730
+ replaceActiveIcon: true,
730
731
  };
731
732
  // ---- Lists list ----
732
733
  export const listsListItemView = {