@startlibs/components 1.1.2 → 1.1.4

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.
@@ -17,8 +17,8 @@ import { Link } from './Link.mjs';
17
17
  import { getDialogLayersSize } from './containers/DialogContainer.mjs';
18
18
  import { usePositioning } from './containers/usePositioning.mjs';
19
19
 
20
- const _excluded = ["label", "layerIndex", "href", "linkTo", "prefixWith", "subMenu", "icon", "children"],
21
- _excluded2 = ["emitter", "index", "menuSlot", "keepOpen", "hover", "layerIndex", "hoverCursor", "passTouchThrough", "children", "setCursorOnHover", "onClick", "prefixWith", "linkTo", "icon", "label", "descText", "helpText", "target", "href"],
20
+ const _excluded = ["label", "layerIndex", "href", "linkTo", "prefixWith", "subMenu", "icon", "children", "scrollOnHover"],
21
+ _excluded2 = ["emitter", "index", "menuSlot", "keepOpen", "hover", "layerIndex", "hoverCursor", "scrollOnHover", "passTouchThrough", "children", "setCursorOnHover", "onClick", "prefixWith", "linkTo", "icon", "label", "descText", "helpText", "target", "href"],
22
22
  _excluded3 = ["children", "sub", "hoverIndex", "autoHover", "menuSlot", "withoutIcons", "onClose", "onHover", "fill", "onClick"],
23
23
  _excluded4 = ["slot", "sub", "withoutIcons", "children"];
24
24
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
@@ -98,7 +98,7 @@ class SimpleLi extends React.Component {
98
98
  this.props.emitter.off('confirm', this.confirm);
99
99
  }
100
100
  componentDidUpdate() {
101
- if (this.props.hover) {
101
+ if (this.props.hover && this.props.scrollOnHover !== false) {
102
102
  this.scrollToVisibility();
103
103
  }
104
104
  }
@@ -121,7 +121,8 @@ class SimpleLi extends React.Component {
121
121
  prefixWith,
122
122
  subMenu,
123
123
  icon,
124
- children
124
+ children,
125
+ scrollOnHover
125
126
  } = _this$props,
126
127
  rest = _objectWithoutProperties(_this$props, _excluded);
127
128
  const Tag = linkTo ? Link : 'a';
@@ -151,6 +152,7 @@ const Li = /*#__PURE__*/React.forwardRef((_ref, ref) => {
151
152
  hover,
152
153
  layerIndex,
153
154
  hoverCursor,
155
+ scrollOnHover,
154
156
  passTouchThrough,
155
157
  children,
156
158
  setCursorOnHover,
@@ -185,7 +187,7 @@ const Li = /*#__PURE__*/React.forwardRef((_ref, ref) => {
185
187
  }
186
188
  };
187
189
  useEffect(() => {
188
- if (hover) {
190
+ if (hover && scrollOnHover !== false) {
189
191
  try {
190
192
  const el = nodeRef.current;
191
193
  const parent = el.parentElement;
@@ -310,6 +312,9 @@ const ContextMenuComponent = /*#__PURE__*/forwardRef((_ref2, unesuredRef) => {
310
312
  props = _objectWithoutProperties(_ref2, _excluded3);
311
313
  const ref = useEnsureRef(unesuredRef);
312
314
  const [hoverCursor, setHoverCursor] = useState(autoHover || sub ? 0 : -1);
315
+ // Hover vindo do mouse não deve rolar a lista: o Chrome dispara mousemove sintético
316
+ // ao fim do scroll, e o item cortado sob o cursor puxaria a lista de volta.
317
+ const hoverFromMouse = useRef(false);
313
318
  const [layerCursor, setLayerCursor] = useContextMenuSharedState(0);
314
319
  const [layerIndex, {
315
320
  getSize
@@ -324,6 +329,7 @@ const ContextMenuComponent = /*#__PURE__*/forwardRef((_ref2, unesuredRef) => {
324
329
  }, [layerIndex, layerCursor, hoverCursor]);
325
330
  useEffect(() => {
326
331
  if (hoverIndex !== undefined) {
332
+ if (hoverIndex !== hoverCursor) hoverFromMouse.current = false;
327
333
  setHoverCursor(Math.min(Math.max(hoverIndex, -1), getTotalKeyboardItems(children) + 1));
328
334
  }
329
335
  }, [hoverIndex !== hoverCursor]);
@@ -351,6 +357,7 @@ const ContextMenuComponent = /*#__PURE__*/forwardRef((_ref2, unesuredRef) => {
351
357
  const direction = e.keyCode - 39;
352
358
  const max = getTotalKeyboardItems(children);
353
359
  const newIndex = (hoverCursor + direction + max) % max;
360
+ hoverFromMouse.current = false;
354
361
  setHoverCursor(newIndex);
355
362
  onHover(newIndex);
356
363
  }
@@ -370,6 +377,7 @@ const ContextMenuComponent = /*#__PURE__*/forwardRef((_ref2, unesuredRef) => {
370
377
  return sum;
371
378
  };
372
379
  const setCursorOnHover = index => {
380
+ hoverFromMouse.current = true;
373
381
  setLayerCursor(layerIndex);
374
382
  setHoverCursor(index);
375
383
  onHover(index);
@@ -382,6 +390,7 @@ const ContextMenuComponent = /*#__PURE__*/forwardRef((_ref2, unesuredRef) => {
382
390
  fixedPosition: props.fixed,
383
391
  hover: hoverCursor === indexRef.current && layerIndex === layerCursor,
384
392
  hoverCursor: hoverCursor,
393
+ scrollOnHover: !hoverFromMouse.current,
385
394
  index: indexRef.current++,
386
395
  setCursorOnHover,
387
396
  emitter: itemsEmitter,
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.mjs","sources":["../src/ContextMenu.jsx"],"sourcesContent":["import React, {useState, useMemo, useEffect, useRef, forwardRef} from 'react';\nimport ReactDOM from 'react-dom'\nimport styled, {css, isStyledComponent} from 'styled-components'\n\nimport {\n Fill,\n useEnsureRef,\n useRefState,\n useToggle,\n willUseLayers,\n willUseSharedState\n} from '@startlibs/core';\nimport {darken, transparentize} from 'polished'\nimport {isMemo} from 'react-is'\nimport {\n stopPropagation,\n getColor,\n ifProp,\n callIfFunction,\n customTheme,\n oneWayAnimation,\n animationTiming,\n styledExtend,\n media\n} from '@startlibs/utils'\nimport mitt from 'mitt'\n\nimport {Button} from './Button'\nimport {useFlipEnter, useFlipLeave} from './Flip'\nimport {Icon} from './Icon'\nimport {Link} from './Link'\nimport {getDialogLayersSize} from './containers/DialogContainer'\nimport {usePositioning} from './containers/usePositioning'\nimport {createPressAndMoveEvent, isMobile} from '@startlibs/utils'\n\n\nconst fadeIn = oneWayAnimation('opacity: 0', 'opacity: 1')\nconst slideDown = oneWayAnimation('transform: translateY(-10px); pointer-events: none', 'transform: translateY(0); pointer-events: none')\nconst slideUpOnTop = oneWayAnimation('transform: translateY(10px); pointer-events: none', 'transform: translateY(0); pointer-events: none')\nconst slideRight = oneWayAnimation('transform: translateX(-10px)', 'transform: none;')\nconst slideLeftOnLeft = oneWayAnimation('transform: translateX(10px); pointer-events: none', 'transform: translateX(0px); pointer-events: none')\n\nconst popupAnimation = animationTiming('0.2s ease-out')\n\nconst areComponentsEqual = (a,b) => a === b\n\nexport const ListItem = styled.li`\n position: relative;\n font-size: 13px;\n & > * {\n padding: 11px 1.5rem 11px 3.5rem;\n display: block;\n }\n ${props => props.hasSubmenu && `\n & > * {\n padding-right: 3rem;\n }\n `}\n ${Icon}, .icon {\n font-size: ${props => props.iconSize || 23}px;\n position: absolute;\n padding-left: 0.25rem;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3.5rem;\n text-align: center;\n }\n ${media.mobile`\n font-size: 15px;\n & > * {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n ${Icon}, .icon {\n font-size: ${props => (props.iconSize || 23) + 2}px;\n }\n `}\n & > a {\n color: inherit;\n font-weight: inherit;\n text-decoration: inherit;\n }\n & > a, & > label {\n cursor: pointer;\n }\n ${ifProp('hover', css`\n & > a, & > label {\n background: ${props => transparentize(0.88, getColor(\"main\")(props))};\n color: ${props => darken(0.03, getColor(\"main\")(props))};\n }`)}\n ${ifProp('highlight', css`\n color: ${getColor('main')};\n `)}\n input[type=\"radio\"] {\n display: none;\n }\n ${ifProp('noActions', `\n max-width: 17rem;\n color: rgba(0,0,0,0.4);\n pointer-events: none;\n text-align: center;\n white-space: normal;\n `)}\n ${ifProp('withButton', css`\n padding: 0.25rem 1rem;\n ${Button} {\n width: 100%;\n color: white;\n font-weight: 500;\n padding: 10px 1.25rem;\n ${media.mobile`\n padding: 13px 1.25rem;\n `}\n }\n `)}\n ${ifProp('smallPaddingRight', css`\n & > * {\n padding-right: 1.5rem;\n }\n `)}\n ${customTheme('ListItem')}\n`\n\nconst ListItemDescText = styled.div`\n font-size: 11px;\n margin-top: 0.25rem;\n opacity: 0.6;\n ${media.mobile `\n font-size: 12px;\n `}\n`\nconst ListItemHelpText = styled.span`\n opacity: 0.5;\n`\n\nexport const ListMenu = styled.ul`\n padding: 0.5rem 0;\n cursor: default;\n overflowY: auto;\n text-align: left;\n color: inherit;\n user-select: none;\n`\n\nexport const ContextListMenu = styled(ListMenu)`\n position: absolute;\n z-index: 999;\n background-color: white;\n backdrop-filter: blur(20px);\n background-color: rgb(255 255 255 / 80%);\n box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 10px -2px rgba(0,0,0,0.15), 0 0px 2px 0px rgba(0,0,0,0.2);\n border-radius: 12px;\n margin-bottom: 0.5rem;\n overflow: auto;\n max-height: 100vh;\n max-height: 100dvh;\n max-width: 100vw;\n max-width: 100dvw;\n ${props => props.withoutIcons && `\n ${ListItem} > * {\n padding-left: 1.5rem;\n }\n `}\n ${ifProp('sub', css`\n ${props => props.fullHeight ? '' : (props.atTop ? 'margin-top: -0.5rem;' : 'margin-top: 0.5rem;')}\n\n ${ifProp('atRight', `\n margin-left: -4px;\n `, `\n margin-left: 4px;\n `)}\n `)}\n ${customTheme('ContextMenu')}\n`\n\nexport const StickyContainer = styled.div`\n position: sticky;\n background: white;\n ${props => props.atBottom && `\n bottom: -0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: -0.5rem;\n `}\n ${props => props.atTop && `\n top: -0.5rem;\n padding-top: 0.5rem;\n margin-top: -0.5rem;\n `}\n`\n\nexport const ListSeparator = styled.li`\n border-bottom: 1px solid rgba(0,0,0,0.1);\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n cursor: default;\n height: 0;\n ${ifProp('lighten', css`\n border-color: rgba(255,255,255,0.15);\n `)}\n`\n\nexport const ListHeading = styled.li`\n display: flex;\n align-items: center;\n padding: .5rem 1rem;\n color: rgba(0,0,0,0.4);\n font-size: 12px;\n text-transform: uppercase;\n :after {\n content: '';\n flex-grow: 1;\n margin-left: 0.75rem;\n height: 1px;\n background: rgba(0,0,0,0.15);\n }\n`\n\nconst SubmenuArrowIcon = styledExtend(Icon)`\n font-size: 13px;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3rem;\n text-align: center;\n`\n\n\nlet layerCursor = 0\n\nexport class SimpleLi extends React.Component {\n\n static isKeyboardNavigable = true\n static defaultProps = {\n emitter: mitt()\n }\n\n componentWillUnmount() {\n this.props.emitter.off('confirm', this.confirm)\n }\n\n componentDidUpdate() {\n if (this.props.hover) {\n this.scrollToVisibility()\n }\n }\n\n componentDidMount() {\n this.props.emitter.on('confirm', this.confirm)\n if (this.props.selected && this.props.setCursorOnHover) {\n this.props.setCursorOnHover(this.props.index)\n const el = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n const list = el.parentNode\n list.scrollTop = el.offsetTop + (el.offsetHeight / 2) - (list.offsetHeight / 2)\n }\n }\n\n scrollToVisibility = () => {\n const el = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n const list = el.parentNode\n if (el.offsetTop < list.scrollTop) {\n list.scrollTop = el.offsetTop\n } else if (el.offsetTop + el.offsetHeight > list.scrollTop + list.offsetHeight) {\n list.scrollTop = el.offsetTop + el.offsetHeight - list.offsetHeight\n }\n }\n\n confirm = () => {\n if (this.props.hover) {\n const node = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n node.click()\n }\n }\n onMouseEnter = () => this.props.setCursorOnHover && this.props.setCursorOnHover(this.props.index)\n onMouseOut = () => this.props.setCursorOnHover && this.props.setCursorOnHover(-1)\n\n touchEnd = (e) => {\n if (this.props.children) {\n e.preventDefault()\n if (!this.props.hover)\n this.onMouseEnter()\n }\n }\n\n onClick = (e) => {\n this.props.onClick && this.props.onClick()\n }\n\n render() {\n const {label, layerIndex, href, linkTo, prefixWith, subMenu, icon, children, ...rest} = this.props\n const Tag = (linkTo) ? Link : 'a'\n return <ListItem\n {...rest}\n onClick={this.onClick}\n onMouseLeave={this.onMouseOut}\n onMouseEnter={this.onMouseEnter}\n onTouchEnd={this.touchEnd}\n >\n <Tag href={href} to={linkTo}>\n {prefixWith}\n {icon && <Icon icon={icon}/>}\n {label}\n </Tag>\n </ListItem>\n }\n}\n\nexport const Li = React.forwardRef(({emitter = mitt(), index, menuSlot, keepOpen, hover, layerIndex, hoverCursor, passTouchThrough, children, setCursorOnHover, onClick, prefixWith, linkTo, icon, label,descText,helpText, target, href, ...rest},ref) => {\n const nodeRef = useEnsureRef(ref)\n const tagRef = useRef()\n const subMenu = useToggle()\n const subPrevented = useRefState(false)\n\n const onOpenSub = () => {\n subPrevented.set(false)\n if (hover && children) {\n subMenu.open()\n }\n }\n\n const onPreventSub = (subIndex) => {\n if (index !== subIndex)\n subMenu.close()\n subPrevented.set(true)\n }\n\n const confirm = () => {\n if (hover) {\n nodeRef.current.click()\n }\n }\n\n useEffect(() => {\n if (hover) {\n try {\n const el = nodeRef.current\n const parent = el.parentElement\n const stickyContainer = parent.lastChild\n const stickyContainerHeight =\n (stickyContainer && stickyContainer.tagName === \"DIV\" && (stickyContainer.offsetTop - parent.scrollTop) < parent.offsetHeight)\n ? stickyContainer.offsetHeight\n : 0\n if (el.offsetTop > parent.offsetHeight + parent.scrollTop - stickyContainerHeight - el.offsetHeight) {\n parent.scroll(0, el.offsetTop - parent.offsetHeight + el.offsetHeight + stickyContainerHeight)\n } else if (el.offsetTop < parent.scrollTop) {\n parent.scroll(0, el.offsetTop)\n }\n } catch (e) {}\n }\n emitter.on('confirm', confirm)\n emitter.on('preventSub', onPreventSub)\n emitter.on('openSub', onOpenSub)\n return () => {\n emitter.off('confirm', confirm)\n emitter.off('preventSub', onPreventSub)\n emitter.off('openSub', onOpenSub)\n }\n }, [hover])\n\n useEffect(() => () => subMenu.close(), [])\n\n useEffect(() => {\n if (children && !isMobile()) {\n if (hover) {\n if (!subMenu.isOpen || subMenu.closing || !subPrevented.get()) {\n subMenu.open()\n }\n } else {\n if (subMenu.isOpen) {\n if (hoverCursor === -1) {\n // Mouse saiu de todos os itens — provavelmente indo até o submenu (que\n // abre ao lado, com um pequeno gap). Janela generosa; ao alcançá-lo, o\n // onMouseEnter/onMouseMove do submenu chama subMenu.open e cancela.\n subMenu.closeAfter(450)\n } else {\n // Mouse foi para outro item do menu — mantém os 200ms originais.\n subMenu.closeAfter(200)\n }\n emitter.emit('preventSub', index)\n }\n }\n }\n }, [hoverCursor])\n\n const onMouseMove = (e) => {\n if (!hover) {\n callIfFunction(setCursorOnHover, index)\n }\n e?.stopPropagation()\n }\n\n const onMouseOut = (e) => {\n callIfFunction(setCursorOnHover, -1)\n e?.stopPropagation()\n }\n\n const onClickHandler = (e) => {\n if (children || keepOpen) {\n e.stopPropagation()\n }\n if (children) {\n if (hover) {\n subMenu.toggle()\n } else {\n onMouseMove()\n }\n } else {\n callIfFunction(onClick, e)\n }\n }\n\n const onCloseSub = () => emitter.emit('openSub')\n\n const addProps = (children) => React.Children.map(children, c => React.cloneElement(c, {\n fixed: rest.fixedPosition,\n closing: subMenu.closing,\n onMouseMove: subMenu.open,\n // onMouseEnter não borbulha, então não é barrado pelo stopPropagation dos itens\n // do submenu (linha onMouseMove do Li). Garante que alcançar o submenu sempre\n // cancele o fechamento agendado por closeAfter(200), mantendo-o aberto.\n onMouseEnter: subMenu.open,\n onClose: onCloseSub,\n sub: true,\n slot: c.props.slot || menuSlot\n }))\n\n const content = <>\n {prefixWith}\n {icon && <Icon icon={icon}/>}\n {label} {helpText && <ListItemHelpText>({helpText})</ListItemHelpText>}\n {descText && <ListItemDescText>{descText}</ListItemDescText>}\n {children && <SubmenuArrowIcon icon=\"arrow-right\"/>}\n </>\n\n const Tag = linkTo ? Link : 'a'\n return <ListItem\n ref={nodeRef}\n {...rest}\n hover={hover}\n onClick={onClickHandler}\n onMouseLeave={onMouseOut}\n onMouseMove={onMouseMove}\n hasSubmenu={children}\n >\n {\n (rest.withButton || rest.noActions)\n ? content\n : <Tag href={href} target={target} to={linkTo} ref={tagRef} onMouseEnter={onMouseMove}>{content}</Tag>\n }\n {\n subMenu.isOpen && addProps(children)\n }\n </ListItem>\n})\nLi.isKeyboardNavigable\nLi.Simple = SimpleLi\n\nconst [useContextMenuLayers, contextMenuLayersSize] = willUseLayers()\nexport const contextMenuLayersQuantity = contextMenuLayersSize\nconst [useContextMenuSharedState] = willUseSharedState()\n\nexport const ContextMenuComponent = forwardRef((\n {\n children, sub, hoverIndex, autoHover, menuSlot, withoutIcons, onClose, onHover = () => 0, fill, onClick, ...props\n },\n unesuredRef\n) => {\n const ref = useEnsureRef(unesuredRef)\n const [hoverCursor, setHoverCursor] = useState(autoHover || sub ? 0 : -1)\n const [layerCursor, setLayerCursor] = useContextMenuSharedState(0)\n\n const [layerIndex, {getSize}] = useContextMenuLayers()\n\n const itemsEmitter = useMemo(() => mitt(), [])\n useEffect(() => {\n window.addEventListener('keydown', keydown)\n return () => {\n callIfFunction(onClose)\n window.removeEventListener('keydown', keydown)\n }\n }, [layerIndex, layerCursor, hoverCursor])\n\n useEffect(() => {\n if (hoverIndex !== undefined) {\n setHoverCursor(Math.min(Math.max(hoverIndex, -1), getTotalKeyboardItems(children) + 1))\n }\n }, [hoverIndex !== hoverCursor])\n\n const keydown = (e) => {\n if (e.keyCode === 37 || e.keyCode === 39) {\n if (!e.defaultPrevented) {\n const layers = getSize()\n const direction = e.keyCode - 38\n setLayerCursor((layerCursor + direction + layers) % layers)\n }\n e.preventDefault()\n }\n if (layerIndex !== layerCursor) return\n if (e.keyCode === 27 && ref.current) {\n ref.current.click()\n }\n if (e.keyCode === 13 || e.keyCode === 32 && hoverCursor >= 0) {// enter\n e.preventDefault()\n itemsEmitter.emit('confirm')\n }\n if (e.keyCode === 38 || e.keyCode === 40) { // up down\n e.preventDefault()\n const direction = e.keyCode - 39\n const max = getTotalKeyboardItems(children)\n const newIndex = (hoverCursor + direction + max) % max\n setHoverCursor(newIndex)\n onHover(newIndex)\n }\n }\n\n const getTotalKeyboardItems = (children) => {\n let sum = 0\n React.Children.forEach(children, child => {\n if (child && !child.props.disabled && !child.props.readOnly) {\n if ((!isStyledComponent(child.type) && child.type === Li) || child.type.isKeyboardNavigable) {\n sum += 1\n }\n if (areComponentsEqual(child.type, StickyContainer) || child.props.nested) {\n sum += getTotalKeyboardItems(child.props.children)\n }\n }\n }\n )\n return sum\n }\n\n const setCursorOnHover = (index) => {\n setLayerCursor(layerIndex)\n setHoverCursor(index)\n onHover(index)\n }\n\n const formatChildren = (children, indexRef = {current: 0}) => {\n return React.Children.map(children, (child, j) =>\n child && !child.props.disabled && !child.props.readOnly\n ? (\n child.props.nested\n ? React.cloneElement(child, child.props, formatChildren(child.props.children, indexRef))\n : ((!isStyledComponent(child.type) && !isMemo(child.type) && areComponentsEqual(child.type, Li)) || child.type.isKeyboardNavigable)\n ? React.cloneElement(child, {\n fixedPosition:props.fixed,\n hover: hoverCursor === indexRef.current && layerIndex === layerCursor,\n hoverCursor: hoverCursor,\n index: indexRef.current++,\n setCursorOnHover,\n emitter: itemsEmitter,\n layerIndex: layerIndex,\n menuSlot\n })\n : (\n areComponentsEqual(child.type, StickyContainer)\n ? React.cloneElement(child, {\n ...child.props,\n children: formatChildren(child.props.children, indexRef)\n })\n : child\n )\n )\n : child\n )\n }\n\n const touchStart = createPressAndMoveEvent((e,prevPos) => {\n // e.preventDefault()\n e.stopPropagation()\n e.target.dispatchEvent(new MouseEvent('mousemove', {bubbles: true}))\n let passedResistance = false\n return (e,nextPos) => {\n const delta = prevPos.clientY - nextPos.clientY\n if (Math.abs(delta) > 10) {\n passedResistance = true\n setCursorOnHover(-1)\n }\n }\n })\n\n return (\n <ContextListMenu\n data-drag={false}\n ref={ref}\n sub={sub}\n onWheel={e => e.stopPropagation()}\n onTouchStart={touchStart}\n withoutIcons={withoutIcons}\n onMouseDown={stopPropagation()}\n {...props}\n >\n {formatChildren(children)}\n </ContextListMenu>\n )\n})\n\n\nexport const ContextMenu = forwardRef(({slot = 'Popup', sub, withoutIcons, children, ...rest}, ref) => {\n const contextMenuRef = useEnsureRef(ref)\n const [positionInfo, placeholder, arrow] = usePositioning(contextMenuRef, rest)\n const {atRight, atBottom} = {...positionInfo}\n const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : (slot + '-' + (getDialogLayersSize() - 1)), [])\n\n const enterAnimation = useMemo(() => [fadeIn, sub ? (atRight ? slideRight : slideLeftOnLeft) : (atBottom ? slideDown : slideUpOnTop)], [atRight, atBottom])\n useFlipEnter(contextMenuRef, !!positionInfo && enterAnimation)\n useFlipLeave(contextMenuRef, !!positionInfo && enterAnimation, sub && {events: {mouseover: rest.onMouseMove}})\n return <>\n {placeholder}\n <Fill name={slotName}>\n <ContextMenuComponent {...rest} menuSlot={slot} sub={sub} {...positionInfo} ref={contextMenuRef} withoutIcons={withoutIcons}>\n {arrow}\n {children}\n </ContextMenuComponent>\n </Fill>\n </>\n})\n\nContextMenu.ListItem = ListItem\n"],"names":["fadeIn","oneWayAnimation","slideDown","slideUpOnTop","slideRight","slideLeftOnLeft","animationTiming","areComponentsEqual","a","b","ListItem","styled","li","withConfig","displayName","componentId","props","hasSubmenu","Icon","iconSize","media","mobile","_templateObject","_taggedTemplateLiteral","ifProp","css","transparentize","getColor","darken","Button","_templateObject2","customTheme","ListItemDescText","div","_templateObject3","ListItemHelpText","span","ListMenu","ul","ContextListMenu","withoutIcons","concat","fullHeight","atTop","StickyContainer","atBottom","ListSeparator","ListHeading","SubmenuArrowIcon","styledExtend","_templateObject4","SimpleLi","React","Component","constructor","arguments","scrollToVisibility","el","ReactDOM","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","list","parentNode","offsetTop","scrollTop","offsetHeight","confirm","hover","node","click","onMouseEnter","setCursorOnHover","index","onMouseOut","touchEnd","e","children","preventDefault","onClick","componentWillUnmount","emitter","off","componentDidUpdate","componentDidMount","on","selected","render","_this$props","label","layerIndex","href","linkTo","prefixWith","subMenu","icon","rest","_objectWithoutProperties","_excluded","Tag","Link","createElement","_extends","onMouseLeave","onTouchEnd","to","isKeyboardNavigable","defaultProps","mitt","Li","forwardRef","_ref","ref","menuSlot","keepOpen","hoverCursor","passTouchThrough","descText","helpText","target","_excluded2","nodeRef","useEnsureRef","tagRef","useRef","useToggle","subPrevented","useRefState","onOpenSub","set","open","onPreventSub","subIndex","close","current","useEffect","parent","parentElement","stickyContainer","lastChild","stickyContainerHeight","tagName","scroll","isMobile","isOpen","closing","get","closeAfter","emit","onMouseMove","callIfFunction","stopPropagation","onClickHandler","toggle","onCloseSub","addProps","Children","map","c","cloneElement","fixed","fixedPosition","onClose","sub","slot","content","Fragment","withButton","noActions","Simple","useContextMenuLayers","contextMenuLayersSize","willUseLayers","contextMenuLayersQuantity","useContextMenuSharedState","willUseSharedState","ContextMenuComponent","_ref2","unesuredRef","hoverIndex","autoHover","onHover","fill","_excluded3","setHoverCursor","useState","layerCursor","setLayerCursor","getSize","itemsEmitter","useMemo","window","addEventListener","keydown","removeEventListener","undefined","Math","min","max","getTotalKeyboardItems","keyCode","defaultPrevented","layers","direction","newIndex","sum","forEach","child","disabled","readOnly","isStyledComponent","type","nested","formatChildren","indexRef","length","j","isMemo","_objectSpread","touchStart","createPressAndMoveEvent","prevPos","dispatchEvent","MouseEvent","bubbles","nextPos","delta","clientY","abs","onWheel","onTouchStart","onMouseDown","ContextMenu","_ref3","_excluded4","contextMenuRef","positionInfo","placeholder","arrow","usePositioning","atRight","slotName","getDialogLayersSize","enterAnimation","useFlipEnter","useFlipLeave","events","mouseover","Fill","name"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.mjs","sources":["../src/ContextMenu.jsx"],"sourcesContent":["import React, {useState, useMemo, useEffect, useRef, forwardRef} from 'react';\nimport ReactDOM from 'react-dom'\nimport styled, {css, isStyledComponent} from 'styled-components'\n\nimport {\n Fill,\n useEnsureRef,\n useRefState,\n useToggle,\n willUseLayers,\n willUseSharedState\n} from '@startlibs/core';\nimport {darken, transparentize} from 'polished'\nimport {isMemo} from 'react-is'\nimport {\n stopPropagation,\n getColor,\n ifProp,\n callIfFunction,\n customTheme,\n oneWayAnimation,\n animationTiming,\n styledExtend,\n media\n} from '@startlibs/utils'\nimport mitt from 'mitt'\n\nimport {Button} from './Button'\nimport {useFlipEnter, useFlipLeave} from './Flip'\nimport {Icon} from './Icon'\nimport {Link} from './Link'\nimport {getDialogLayersSize} from './containers/DialogContainer'\nimport {usePositioning} from './containers/usePositioning'\nimport {createPressAndMoveEvent, isMobile} from '@startlibs/utils'\n\n\nconst fadeIn = oneWayAnimation('opacity: 0', 'opacity: 1')\nconst slideDown = oneWayAnimation('transform: translateY(-10px); pointer-events: none', 'transform: translateY(0); pointer-events: none')\nconst slideUpOnTop = oneWayAnimation('transform: translateY(10px); pointer-events: none', 'transform: translateY(0); pointer-events: none')\nconst slideRight = oneWayAnimation('transform: translateX(-10px)', 'transform: none;')\nconst slideLeftOnLeft = oneWayAnimation('transform: translateX(10px); pointer-events: none', 'transform: translateX(0px); pointer-events: none')\n\nconst popupAnimation = animationTiming('0.2s ease-out')\n\nconst areComponentsEqual = (a,b) => a === b\n\nexport const ListItem = styled.li`\n position: relative;\n font-size: 13px;\n & > * {\n padding: 11px 1.5rem 11px 3.5rem;\n display: block;\n }\n ${props => props.hasSubmenu && `\n & > * {\n padding-right: 3rem;\n }\n `}\n ${Icon}, .icon {\n font-size: ${props => props.iconSize || 23}px;\n position: absolute;\n padding-left: 0.25rem;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3.5rem;\n text-align: center;\n }\n ${media.mobile`\n font-size: 15px;\n & > * {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n ${Icon}, .icon {\n font-size: ${props => (props.iconSize || 23) + 2}px;\n }\n `}\n & > a {\n color: inherit;\n font-weight: inherit;\n text-decoration: inherit;\n }\n & > a, & > label {\n cursor: pointer;\n }\n ${ifProp('hover', css`\n & > a, & > label {\n background: ${props => transparentize(0.88, getColor(\"main\")(props))};\n color: ${props => darken(0.03, getColor(\"main\")(props))};\n }`)}\n ${ifProp('highlight', css`\n color: ${getColor('main')};\n `)}\n input[type=\"radio\"] {\n display: none;\n }\n ${ifProp('noActions', `\n max-width: 17rem;\n color: rgba(0,0,0,0.4);\n pointer-events: none;\n text-align: center;\n white-space: normal;\n `)}\n ${ifProp('withButton', css`\n padding: 0.25rem 1rem;\n ${Button} {\n width: 100%;\n color: white;\n font-weight: 500;\n padding: 10px 1.25rem;\n ${media.mobile`\n padding: 13px 1.25rem;\n `}\n }\n `)}\n ${ifProp('smallPaddingRight', css`\n & > * {\n padding-right: 1.5rem;\n }\n `)}\n ${customTheme('ListItem')}\n`\n\nconst ListItemDescText = styled.div`\n font-size: 11px;\n margin-top: 0.25rem;\n opacity: 0.6;\n ${media.mobile `\n font-size: 12px;\n `}\n`\nconst ListItemHelpText = styled.span`\n opacity: 0.5;\n`\n\nexport const ListMenu = styled.ul`\n padding: 0.5rem 0;\n cursor: default;\n overflowY: auto;\n text-align: left;\n color: inherit;\n user-select: none;\n`\n\nexport const ContextListMenu = styled(ListMenu)`\n position: absolute;\n z-index: 999;\n background-color: white;\n backdrop-filter: blur(20px);\n background-color: rgb(255 255 255 / 80%);\n box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 10px -2px rgba(0,0,0,0.15), 0 0px 2px 0px rgba(0,0,0,0.2);\n border-radius: 12px;\n margin-bottom: 0.5rem;\n overflow: auto;\n max-height: 100vh;\n max-height: 100dvh;\n max-width: 100vw;\n max-width: 100dvw;\n ${props => props.withoutIcons && `\n ${ListItem} > * {\n padding-left: 1.5rem;\n }\n `}\n ${ifProp('sub', css`\n ${props => props.fullHeight ? '' : (props.atTop ? 'margin-top: -0.5rem;' : 'margin-top: 0.5rem;')}\n\n ${ifProp('atRight', `\n margin-left: -4px;\n `, `\n margin-left: 4px;\n `)}\n `)}\n ${customTheme('ContextMenu')}\n`\n\nexport const StickyContainer = styled.div`\n position: sticky;\n background: white;\n ${props => props.atBottom && `\n bottom: -0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: -0.5rem;\n `}\n ${props => props.atTop && `\n top: -0.5rem;\n padding-top: 0.5rem;\n margin-top: -0.5rem;\n `}\n`\n\nexport const ListSeparator = styled.li`\n border-bottom: 1px solid rgba(0,0,0,0.1);\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n cursor: default;\n height: 0;\n ${ifProp('lighten', css`\n border-color: rgba(255,255,255,0.15);\n `)}\n`\n\nexport const ListHeading = styled.li`\n display: flex;\n align-items: center;\n padding: .5rem 1rem;\n color: rgba(0,0,0,0.4);\n font-size: 12px;\n text-transform: uppercase;\n :after {\n content: '';\n flex-grow: 1;\n margin-left: 0.75rem;\n height: 1px;\n background: rgba(0,0,0,0.15);\n }\n`\n\nconst SubmenuArrowIcon = styledExtend(Icon)`\n font-size: 13px;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3rem;\n text-align: center;\n`\n\n\nlet layerCursor = 0\n\nexport class SimpleLi extends React.Component {\n\n static isKeyboardNavigable = true\n static defaultProps = {\n emitter: mitt()\n }\n\n componentWillUnmount() {\n this.props.emitter.off('confirm', this.confirm)\n }\n\n componentDidUpdate() {\n if (this.props.hover && this.props.scrollOnHover !== false) {\n this.scrollToVisibility()\n }\n }\n\n componentDidMount() {\n this.props.emitter.on('confirm', this.confirm)\n if (this.props.selected && this.props.setCursorOnHover) {\n this.props.setCursorOnHover(this.props.index)\n const el = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n const list = el.parentNode\n list.scrollTop = el.offsetTop + (el.offsetHeight / 2) - (list.offsetHeight / 2)\n }\n }\n\n scrollToVisibility = () => {\n const el = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n const list = el.parentNode\n if (el.offsetTop < list.scrollTop) {\n list.scrollTop = el.offsetTop\n } else if (el.offsetTop + el.offsetHeight > list.scrollTop + list.offsetHeight) {\n list.scrollTop = el.offsetTop + el.offsetHeight - list.offsetHeight\n }\n }\n\n confirm = () => {\n if (this.props.hover) {\n const node = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n node.click()\n }\n }\n onMouseEnter = () => this.props.setCursorOnHover && this.props.setCursorOnHover(this.props.index)\n onMouseOut = () => this.props.setCursorOnHover && this.props.setCursorOnHover(-1)\n\n touchEnd = (e) => {\n if (this.props.children) {\n e.preventDefault()\n if (!this.props.hover)\n this.onMouseEnter()\n }\n }\n\n onClick = (e) => {\n this.props.onClick && this.props.onClick()\n }\n\n render() {\n const {label, layerIndex, href, linkTo, prefixWith, subMenu, icon, children, scrollOnHover, ...rest} = this.props\n const Tag = (linkTo) ? Link : 'a'\n return <ListItem\n {...rest}\n onClick={this.onClick}\n onMouseLeave={this.onMouseOut}\n onMouseEnter={this.onMouseEnter}\n onTouchEnd={this.touchEnd}\n >\n <Tag href={href} to={linkTo}>\n {prefixWith}\n {icon && <Icon icon={icon}/>}\n {label}\n </Tag>\n </ListItem>\n }\n}\n\nexport const Li = React.forwardRef(({emitter = mitt(), index, menuSlot, keepOpen, hover, layerIndex, hoverCursor, scrollOnHover, passTouchThrough, children, setCursorOnHover, onClick, prefixWith, linkTo, icon, label,descText,helpText, target, href, ...rest},ref) => {\n const nodeRef = useEnsureRef(ref)\n const tagRef = useRef()\n const subMenu = useToggle()\n const subPrevented = useRefState(false)\n\n const onOpenSub = () => {\n subPrevented.set(false)\n if (hover && children) {\n subMenu.open()\n }\n }\n\n const onPreventSub = (subIndex) => {\n if (index !== subIndex)\n subMenu.close()\n subPrevented.set(true)\n }\n\n const confirm = () => {\n if (hover) {\n nodeRef.current.click()\n }\n }\n\n useEffect(() => {\n if (hover && scrollOnHover !== false) {\n try {\n const el = nodeRef.current\n const parent = el.parentElement\n const stickyContainer = parent.lastChild\n const stickyContainerHeight =\n (stickyContainer && stickyContainer.tagName === \"DIV\" && (stickyContainer.offsetTop - parent.scrollTop) < parent.offsetHeight)\n ? stickyContainer.offsetHeight\n : 0\n if (el.offsetTop > parent.offsetHeight + parent.scrollTop - stickyContainerHeight - el.offsetHeight) {\n parent.scroll(0, el.offsetTop - parent.offsetHeight + el.offsetHeight + stickyContainerHeight)\n } else if (el.offsetTop < parent.scrollTop) {\n parent.scroll(0, el.offsetTop)\n }\n } catch (e) {}\n }\n emitter.on('confirm', confirm)\n emitter.on('preventSub', onPreventSub)\n emitter.on('openSub', onOpenSub)\n return () => {\n emitter.off('confirm', confirm)\n emitter.off('preventSub', onPreventSub)\n emitter.off('openSub', onOpenSub)\n }\n }, [hover])\n\n useEffect(() => () => subMenu.close(), [])\n\n useEffect(() => {\n if (children && !isMobile()) {\n if (hover) {\n if (!subMenu.isOpen || subMenu.closing || !subPrevented.get()) {\n subMenu.open()\n }\n } else {\n if (subMenu.isOpen) {\n if (hoverCursor === -1) {\n // Mouse saiu de todos os itens — provavelmente indo até o submenu (que\n // abre ao lado, com um pequeno gap). Janela generosa; ao alcançá-lo, o\n // onMouseEnter/onMouseMove do submenu chama subMenu.open e cancela.\n subMenu.closeAfter(450)\n } else {\n // Mouse foi para outro item do menu — mantém os 200ms originais.\n subMenu.closeAfter(200)\n }\n emitter.emit('preventSub', index)\n }\n }\n }\n }, [hoverCursor])\n\n const onMouseMove = (e) => {\n if (!hover) {\n callIfFunction(setCursorOnHover, index)\n }\n e?.stopPropagation()\n }\n\n const onMouseOut = (e) => {\n callIfFunction(setCursorOnHover, -1)\n e?.stopPropagation()\n }\n\n const onClickHandler = (e) => {\n if (children || keepOpen) {\n e.stopPropagation()\n }\n if (children) {\n if (hover) {\n subMenu.toggle()\n } else {\n onMouseMove()\n }\n } else {\n callIfFunction(onClick, e)\n }\n }\n\n const onCloseSub = () => emitter.emit('openSub')\n\n const addProps = (children) => React.Children.map(children, c => React.cloneElement(c, {\n fixed: rest.fixedPosition,\n closing: subMenu.closing,\n onMouseMove: subMenu.open,\n // onMouseEnter não borbulha, então não é barrado pelo stopPropagation dos itens\n // do submenu (linha onMouseMove do Li). Garante que alcançar o submenu sempre\n // cancele o fechamento agendado por closeAfter(200), mantendo-o aberto.\n onMouseEnter: subMenu.open,\n onClose: onCloseSub,\n sub: true,\n slot: c.props.slot || menuSlot\n }))\n\n const content = <>\n {prefixWith}\n {icon && <Icon icon={icon}/>}\n {label} {helpText && <ListItemHelpText>({helpText})</ListItemHelpText>}\n {descText && <ListItemDescText>{descText}</ListItemDescText>}\n {children && <SubmenuArrowIcon icon=\"arrow-right\"/>}\n </>\n\n const Tag = linkTo ? Link : 'a'\n return <ListItem\n ref={nodeRef}\n {...rest}\n hover={hover}\n onClick={onClickHandler}\n onMouseLeave={onMouseOut}\n onMouseMove={onMouseMove}\n hasSubmenu={children}\n >\n {\n (rest.withButton || rest.noActions)\n ? content\n : <Tag href={href} target={target} to={linkTo} ref={tagRef} onMouseEnter={onMouseMove}>{content}</Tag>\n }\n {\n subMenu.isOpen && addProps(children)\n }\n </ListItem>\n})\nLi.isKeyboardNavigable\nLi.Simple = SimpleLi\n\nconst [useContextMenuLayers, contextMenuLayersSize] = willUseLayers()\nexport const contextMenuLayersQuantity = contextMenuLayersSize\nconst [useContextMenuSharedState] = willUseSharedState()\n\nexport const ContextMenuComponent = forwardRef((\n {\n children, sub, hoverIndex, autoHover, menuSlot, withoutIcons, onClose, onHover = () => 0, fill, onClick, ...props\n },\n unesuredRef\n) => {\n const ref = useEnsureRef(unesuredRef)\n const [hoverCursor, setHoverCursor] = useState(autoHover || sub ? 0 : -1)\n // Hover vindo do mouse não deve rolar a lista: o Chrome dispara mousemove sintético\n // ao fim do scroll, e o item cortado sob o cursor puxaria a lista de volta.\n const hoverFromMouse = useRef(false)\n const [layerCursor, setLayerCursor] = useContextMenuSharedState(0)\n\n const [layerIndex, {getSize}] = useContextMenuLayers()\n\n const itemsEmitter = useMemo(() => mitt(), [])\n useEffect(() => {\n window.addEventListener('keydown', keydown)\n return () => {\n callIfFunction(onClose)\n window.removeEventListener('keydown', keydown)\n }\n }, [layerIndex, layerCursor, hoverCursor])\n\n useEffect(() => {\n if (hoverIndex !== undefined) {\n if (hoverIndex !== hoverCursor) hoverFromMouse.current = false\n setHoverCursor(Math.min(Math.max(hoverIndex, -1), getTotalKeyboardItems(children) + 1))\n }\n }, [hoverIndex !== hoverCursor])\n\n const keydown = (e) => {\n if (e.keyCode === 37 || e.keyCode === 39) {\n if (!e.defaultPrevented) {\n const layers = getSize()\n const direction = e.keyCode - 38\n setLayerCursor((layerCursor + direction + layers) % layers)\n }\n e.preventDefault()\n }\n if (layerIndex !== layerCursor) return\n if (e.keyCode === 27 && ref.current) {\n ref.current.click()\n }\n if (e.keyCode === 13 || e.keyCode === 32 && hoverCursor >= 0) {// enter\n e.preventDefault()\n itemsEmitter.emit('confirm')\n }\n if (e.keyCode === 38 || e.keyCode === 40) { // up down\n e.preventDefault()\n const direction = e.keyCode - 39\n const max = getTotalKeyboardItems(children)\n const newIndex = (hoverCursor + direction + max) % max\n hoverFromMouse.current = false\n setHoverCursor(newIndex)\n onHover(newIndex)\n }\n }\n\n const getTotalKeyboardItems = (children) => {\n let sum = 0\n React.Children.forEach(children, child => {\n if (child && !child.props.disabled && !child.props.readOnly) {\n if ((!isStyledComponent(child.type) && child.type === Li) || child.type.isKeyboardNavigable) {\n sum += 1\n }\n if (areComponentsEqual(child.type, StickyContainer) || child.props.nested) {\n sum += getTotalKeyboardItems(child.props.children)\n }\n }\n }\n )\n return sum\n }\n\n const setCursorOnHover = (index) => {\n hoverFromMouse.current = true\n setLayerCursor(layerIndex)\n setHoverCursor(index)\n onHover(index)\n }\n\n const formatChildren = (children, indexRef = {current: 0}) => {\n return React.Children.map(children, (child, j) =>\n child && !child.props.disabled && !child.props.readOnly\n ? (\n child.props.nested\n ? React.cloneElement(child, child.props, formatChildren(child.props.children, indexRef))\n : ((!isStyledComponent(child.type) && !isMemo(child.type) && areComponentsEqual(child.type, Li)) || child.type.isKeyboardNavigable)\n ? React.cloneElement(child, {\n fixedPosition:props.fixed,\n hover: hoverCursor === indexRef.current && layerIndex === layerCursor,\n hoverCursor: hoverCursor,\n scrollOnHover: !hoverFromMouse.current,\n index: indexRef.current++,\n setCursorOnHover,\n emitter: itemsEmitter,\n layerIndex: layerIndex,\n menuSlot\n })\n : (\n areComponentsEqual(child.type, StickyContainer)\n ? React.cloneElement(child, {\n ...child.props,\n children: formatChildren(child.props.children, indexRef)\n })\n : child\n )\n )\n : child\n )\n }\n\n const touchStart = createPressAndMoveEvent((e,prevPos) => {\n // e.preventDefault()\n e.stopPropagation()\n e.target.dispatchEvent(new MouseEvent('mousemove', {bubbles: true}))\n let passedResistance = false\n return (e,nextPos) => {\n const delta = prevPos.clientY - nextPos.clientY\n if (Math.abs(delta) > 10) {\n passedResistance = true\n setCursorOnHover(-1)\n }\n }\n })\n\n return (\n <ContextListMenu\n data-drag={false}\n ref={ref}\n sub={sub}\n onWheel={e => e.stopPropagation()}\n onTouchStart={touchStart}\n withoutIcons={withoutIcons}\n onMouseDown={stopPropagation()}\n {...props}\n >\n {formatChildren(children)}\n </ContextListMenu>\n )\n})\n\n\nexport const ContextMenu = forwardRef(({slot = 'Popup', sub, withoutIcons, children, ...rest}, ref) => {\n const contextMenuRef = useEnsureRef(ref)\n const [positionInfo, placeholder, arrow] = usePositioning(contextMenuRef, rest)\n const {atRight, atBottom} = {...positionInfo}\n const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : (slot + '-' + (getDialogLayersSize() - 1)), [])\n\n const enterAnimation = useMemo(() => [fadeIn, sub ? (atRight ? slideRight : slideLeftOnLeft) : (atBottom ? slideDown : slideUpOnTop)], [atRight, atBottom])\n useFlipEnter(contextMenuRef, !!positionInfo && enterAnimation)\n useFlipLeave(contextMenuRef, !!positionInfo && enterAnimation, sub && {events: {mouseover: rest.onMouseMove}})\n return <>\n {placeholder}\n <Fill name={slotName}>\n <ContextMenuComponent {...rest} menuSlot={slot} sub={sub} {...positionInfo} ref={contextMenuRef} withoutIcons={withoutIcons}>\n {arrow}\n {children}\n </ContextMenuComponent>\n </Fill>\n </>\n})\n\nContextMenu.ListItem = ListItem\n"],"names":["fadeIn","oneWayAnimation","slideDown","slideUpOnTop","slideRight","slideLeftOnLeft","animationTiming","areComponentsEqual","a","b","ListItem","styled","li","withConfig","displayName","componentId","props","hasSubmenu","Icon","iconSize","media","mobile","_templateObject","_taggedTemplateLiteral","ifProp","css","transparentize","getColor","darken","Button","_templateObject2","customTheme","ListItemDescText","div","_templateObject3","ListItemHelpText","span","ListMenu","ul","ContextListMenu","withoutIcons","concat","fullHeight","atTop","StickyContainer","atBottom","ListSeparator","ListHeading","SubmenuArrowIcon","styledExtend","_templateObject4","SimpleLi","React","Component","constructor","arguments","scrollToVisibility","el","ReactDOM","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","list","parentNode","offsetTop","scrollTop","offsetHeight","confirm","hover","node","click","onMouseEnter","setCursorOnHover","index","onMouseOut","touchEnd","e","children","preventDefault","onClick","componentWillUnmount","emitter","off","componentDidUpdate","scrollOnHover","componentDidMount","on","selected","render","_this$props","label","layerIndex","href","linkTo","prefixWith","subMenu","icon","rest","_objectWithoutProperties","_excluded","Tag","Link","createElement","_extends","onMouseLeave","onTouchEnd","to","isKeyboardNavigable","defaultProps","mitt","Li","forwardRef","_ref","ref","menuSlot","keepOpen","hoverCursor","passTouchThrough","descText","helpText","target","_excluded2","nodeRef","useEnsureRef","tagRef","useRef","useToggle","subPrevented","useRefState","onOpenSub","set","open","onPreventSub","subIndex","close","current","useEffect","parent","parentElement","stickyContainer","lastChild","stickyContainerHeight","tagName","scroll","isMobile","isOpen","closing","get","closeAfter","emit","onMouseMove","callIfFunction","stopPropagation","onClickHandler","toggle","onCloseSub","addProps","Children","map","c","cloneElement","fixed","fixedPosition","onClose","sub","slot","content","Fragment","withButton","noActions","Simple","useContextMenuLayers","contextMenuLayersSize","willUseLayers","contextMenuLayersQuantity","useContextMenuSharedState","willUseSharedState","ContextMenuComponent","_ref2","unesuredRef","hoverIndex","autoHover","onHover","fill","_excluded3","setHoverCursor","useState","hoverFromMouse","layerCursor","setLayerCursor","getSize","itemsEmitter","useMemo","window","addEventListener","keydown","removeEventListener","undefined","Math","min","max","getTotalKeyboardItems","keyCode","defaultPrevented","layers","direction","newIndex","sum","forEach","child","disabled","readOnly","isStyledComponent","type","nested","formatChildren","indexRef","length","j","isMemo","_objectSpread","touchStart","createPressAndMoveEvent","prevPos","dispatchEvent","MouseEvent","bubbles","nextPos","delta","clientY","abs","onWheel","onTouchStart","onMouseDown","ContextMenu","_ref3","_excluded4","contextMenuRef","positionInfo","placeholder","arrow","usePositioning","atRight","slotName","getDialogLayersSize","enterAnimation","useFlipEnter","useFlipLeave","events","mouseover","Fill","name"],"mappings":"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"}
@@ -113,6 +113,9 @@ const usePositioning = (element, _ref, arrowRefOpt) => {
113
113
  setTimeout(() => setPosition(retry + 1), 100);
114
114
  return;
115
115
  }
116
+ // Limpar a largura para medir pode encurtar o conteúdo (itens deixam de quebrar linha)
117
+ // e o browser corta o scrollTop; guarda para restaurar depois de reaplicar a largura.
118
+ const previousScrollTop = element.current.scrollTop;
116
119
  if (keepWidth) {
117
120
  element.current.style.width = '';
118
121
  } else {
@@ -229,6 +232,9 @@ const usePositioning = (element, _ref, arrowRefOpt) => {
229
232
  if (fixed) {
230
233
  element.current.style.position = 'fixed';
231
234
  }
235
+ if (element.current.scrollTop !== previousScrollTop) {
236
+ element.current.scrollTop = previousScrollTop;
237
+ }
232
238
  };
233
239
  useLayoutEffect(setPosition, [on]);
234
240
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"usePositioning.mjs","sources":["../../src/containers/usePositioning.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\nimport _ from 'lodash/fp'\nimport styled from 'styled-components'\nimport {getClosestOffsetScroll} from '@startlibs/utils'\nimport {useEnsureRef} from '@startlibs/core'\nimport {getDialogLayersSize} from './DialogContainer'\n\nconst Placeholder = styled.span`\n top:0;\n left:0;\n padding: 0 !important;\n position: absolute;\n`\n/*\ntype Alignment = 'top left' | 'top center' | 'top right' |\n 'center left' | 'center center' | 'center right' |\n 'bottom left' | 'bottom center' | 'bottom right'\n\ntype Collision = 'fit fit' | 'fit flip' | 'fit fitflip' | 'fit none' |\n 'flip fit' | 'flip flip' | 'flip fitflip' | 'flip none' |\n 'flipfit fit' | 'flipfit flip' | 'flipfit fitflip' | 'flipfit none' |\n 'none fit' | 'none flip' | 'none fitflip' | 'none none'\n*/\n\nconst HORIZONTAL_MAPPING = ['left', 'center', 'right']\nconst VERTICAL_MAPPING = ['top', 'center', 'bottom']\nconst ARROW_KEY_POSITIONS = {left: '0', right: '-0', top: '0', bottom: '-0'}\n\nconst POSITIONING_BOUNDS = {left:0,top:0,right:0,bottom:0}\nexport const addPositioningBound = (key,value) => {\n POSITIONING_BOUNDS[key] += value\n return () => POSITIONING_BOUNDS[key] -= value\n}\n\nfunction getPosition(origin, offset, max, originSize, selfSize, originalAlignment, selfAlignment, onCollision, mapping, boundMargin) {\n\n // 0 pra left ou top, 1/2 pra center, 1 pra right ou bottom\n const originDiff = originSize * (mapping.indexOf(originalAlignment) / 2)\n // 0 pra left ou top, -1/2 pra center, -1 pra right ou bottom\n const selfDiff = -(selfSize * (mapping.indexOf(selfAlignment) / 2))\n\n const respectingBounds = boundMargin !== false\n const upperBound = respectingBounds ? (POSITIONING_BOUNDS[mapping[0]] + boundMargin) : Number.MIN_SAFE_INTEGER\n const lowerBound = respectingBounds ? (POSITIONING_BOUNDS[mapping[2]] + boundMargin) : 0\n const newPosition = Math.max(upperBound, origin + selfDiff + originDiff + offset)\n\n const collision = Math.max(-newPosition, newPosition + selfSize - max + lowerBound)\n if (collision > 0 && onCollision !== 'none') {\n if (onCollision.indexOf('flip') >= 0) {\n const flippedPosition = getPosition(origin, -offset, max, originSize, selfSize, originalAlignment, selfAlignment, onCollision.indexOf('fit') >= 0 ? 'fit' : 'none', mapping.slice().reverse(), boundMargin)\n const flippedCollision = Math.max(-flippedPosition[0], flippedPosition[0] + selfSize - max)\n if ((collision > 0 && flippedCollision > 0) || flippedPosition[0] < upperBound) {\n return getPosition(origin, offset, max, originSize, selfSize, originalAlignment, selfAlignment, 'fit', mapping, boundMargin)\n }\n return collision < flippedCollision ? [newPosition, 'none'] : [flippedPosition[0], flippedPosition[1] === 'fit' ? 'flipfit' : 'flip']\n } else {\n const minBound = respectingBounds ? upperBound : 0\n const fittedPosition = Math.max(minBound, Math.min(newPosition, max - selfSize - lowerBound))\n return [fittedPosition, fittedPosition !== newPosition ? 'fit' : 'none']\n }\n } else {\n return [newPosition, 'none']\n }\n}\n\nconst arrowShadow = {\n top: '-1px -1px 2px -1px rgba(0,0,0,.25)',\n right: '1px -1px 2px -1px rgba(0,0,0,.25)',\n bottom: '1px 1px 2px -1px rgba(0,0,0,.25)',\n left: '-1px 1px 2px -1px rgba(0,0,0,.25)'\n}\n\nconst translate = (position, offset) => (position === 'left' ? '-50%' : position === 'right' ? '50%' : offset) + ',' +\n (position === 'top' ? '-50%' : position === 'bottom' ? '50%' : offset)\n\nconst ARROW_DEFAULT_SIZE = 14\n\nexport const DefaultArrow = styled.div`\n background-color: #fff;\n position: absolute;\n width: ${ARROW_DEFAULT_SIZE}px;\n height: ${ARROW_DEFAULT_SIZE}px;\n transform: translate(-50%,50%) rotate(45deg);\n bottom: 0;\n left: 50%;\n box-shadow: ${arrowShadow.bottom};\n`\n\nexport const usePositioning = (\n element,\n {\n my = 'top right',\n offset = '0 0', // x y\n at = 'bottom right',\n onCollision = 'flip flip',\n arrow,\n arrowPadding = 10,\n fill,\n useLayers = true,\n fixed,\n bottom: onBottom,\n left: onLeft,\n right: onRight,\n top: onTop,\n keepWidth = true,\n boundMargin = 6,\n respectBounds,\n respectOffsetScroll,\n on,\n placeholderAs\n },\n arrowRefOpt\n) => {\n const placeholder = useRef()\n const arrowRef = useEnsureRef(arrowRefOpt)\n const [positionInfo, setPositionInfo] = useState()\n\n const setPosition = (retry=0) => {\n if (retry>10) { return }\n if (!element.current?.style || !(placeholder.current?.offsetParent || placeholder.current?.parentNode?.offsetParent)) {\n setTimeout(()=>setPosition(retry+1),100)\n return\n }\n if (keepWidth) {\n element.current.style.width = ''\n } else {\n element.current.style.maxWidth = ''\n }\n const placeholderOffsetParent = (placeholder.current?.offsetParent || placeholder.current?.parentNode?.offsetParent)\n const usingLayer = respectOffsetScroll || useLayers && getDialogLayersSize() > 0\n const scrollOwner =\n usingLayer\n ? (_.isFunction(respectOffsetScroll) ? respectOffsetScroll(element.current.offsetParent) : getClosestOffsetScroll(element.current.offsetParent))\n : {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset}\n\n // console.log({scrollOwner,scrollTop:scrollOwner.scrollTop,pageYOffset:window.pageYOffset})\n\n const scrollY = !isNaN(scrollOwner.scrollTop) ? scrollOwner.scrollTop : window.pageYOffset\n const scrollX = !isNaN(scrollOwner.scrollLeft) ? scrollOwner.scrollLeft : window.pageXOffset\n const getRespectOffsetScrollTopLeft = () => {\n const {top,left} = placeholder.current.getBoundingClientRect()\n const {top:scrollOwnerTop, left: scrollOwnerLeft} = scrollOwner.getBoundingClientRect()\n return {top: top-scrollOwnerTop,left: left-scrollOwnerLeft}\n }\n const {left: leftPlusBorder, top: topPlusBorder} =\n respectOffsetScroll\n ? getRespectOffsetScrollTopLeft()\n :placeholder.current.getBoundingClientRect()\n\n const {borderLeftWidth, borderTopWidth} = window.getComputedStyle(placeholderOffsetParent)\n const left = leftPlusBorder - parseInt(borderLeftWidth, 10)\n const top = topPlusBorder - parseInt(borderTopWidth, 10)\n const {offsetWidth: parentOffsetWidth, offsetHeight: parentOffsetHeight} = (placeholderOffsetParent)\n const {offsetWidth: popupOffsetWidth, offsetHeight: popupOffsetHeight} = element.current\n const {width:popupCurrentWidth} = element.current.getBoundingClientRect()\n const [offsetX, offsetY] = [].concat(offset).join(' ').split(' ').map(_ => Number(_ || 0))\n const simplePositioning = [onTop, onRight, onBottom, onLeft].map(_ => _ === true ? 'center' : _)\n const simplePositioningIndex = simplePositioning.findIndex(_ => _)\n const bodyWidth = document.body.offsetWidth - (usingLayer ? parseInt(getComputedStyle(document.body).paddingRight, 10) : 0)\n // Barra fixa inferior (footer mobile) registrada em POSITIONING_BOUNDS conta como\n // borda da tela: sem isso o popup se posiciona atrás dela. Com respectBounds o\n // desconto já vem do lowerBound em getPosition, não descontar duas vezes.\n const windowHeight = window.innerHeight - (respectBounds ? 0 : POSITIONING_BOUNDS.bottom)\n\n const [verticalCollision, horizontalCollision] = onCollision.split(' ')\n const [verticalMy, horizontalMy] = [my, 'bottom $', '$ left', 'top $', '$ right'][simplePositioningIndex + 1].replace('$', simplePositioning[simplePositioningIndex]).split(' ')\n const [verticalAt, horizontalAt] = [at, 'top $', '$ right', 'bottom $', '$ left'][simplePositioningIndex + 1].replace('$', simplePositioning[simplePositioningIndex]).split(' ')\n\n const [processedLeft, collisionH] = getPosition(left, offsetX, bodyWidth, parentOffsetWidth, fill ? parentOffsetWidth : popupOffsetWidth, horizontalAt, horizontalMy, horizontalCollision, HORIZONTAL_MAPPING,!!respectBounds && boundMargin)\n const [processedTop, collisionV] = getPosition(top, offsetY, windowHeight, parentOffsetHeight, popupOffsetHeight, verticalAt, verticalMy, verticalCollision, VERTICAL_MAPPING,!!respectBounds && boundMargin)\n\n\n const flippedV = collisionV.indexOf('flip') >= 0\n const flippedH = collisionH.indexOf('flip') >= 0\n\n\n //arrow\n const arrowSide = Math.abs(VERTICAL_MAPPING.indexOf(verticalMy) - VERTICAL_MAPPING.indexOf(verticalAt)) === 2 ? (flippedV ? verticalAt : verticalMy) :\n Math.abs(HORIZONTAL_MAPPING.indexOf(horizontalMy) - HORIZONTAL_MAPPING.indexOf(horizontalAt)) === 2 ? (flippedH ? horizontalAt : horizontalMy) : ''\n const arrowElement = arrowRef.current\n const arrowOnVerticalSide = arrowSide === 'left' || arrowSide === 'right'\n const arrowSize = arrowElement ? arrowElement.getBoundingClientRect()[arrowOnVerticalSide ? 'height' : 'width'] : (ARROW_DEFAULT_SIZE * Math.sqrt(2))\n const [arrowOffset, popupArrowOffset] = arrowOnVerticalSide ?\n processArrow(ARROW_KEY_POSITIONS[arrow] || arrow, arrowSize, arrowOnVerticalSide, parentOffsetHeight, popupOffsetHeight, processedTop - top, flippedV) :\n processArrow(ARROW_KEY_POSITIONS[arrow] || arrow, arrowSize, arrowOnVerticalSide, parentOffsetWidth, popupOffsetWidth, processedLeft - left, flippedV)\n\n\n const maxHeight = window.innerHeight - (POSITIONING_BOUNDS.top + POSITIONING_BOUNDS.bottom) - (respectBounds ? boundMargin*2 : 0)\n const maxWidth = window.innerWidth - (POSITIONING_BOUNDS.left + POSITIONING_BOUNDS.right) - (respectBounds ? boundMargin*2 : 0)\n\n element.current.style.maxHeight = ''\n if (parseInt(window.getComputedStyle(element.current).maxHeight) > maxHeight) {\n element.current.style.maxHeight = maxHeight+'px'\n }\n if (keepWidth) {\n element.current.style.width = Math.ceil(popupCurrentWidth)+\"px\"\n } else {\n element.current.style.maxWidth = maxWidth+'px'\n }\n // console.log({processedTop,top,offsetY,scrollY})\n\n\n element.current.style.top = (processedTop + (arrowOnVerticalSide ? popupArrowOffset : 0) + (fixed ? 0 : scrollY)) + 'px'\n element.current.style.left = (processedLeft + (arrowOnVerticalSide ? 0 : popupArrowOffset) + (fixed ? 0 : scrollX)) + 'px'\n\n const arrowStyle = {\n transform: `translate(${translate(arrowSide, arrowOffset[0] === 'top' || arrowOffset[0] === 'left' ? '-50%' : '50%')}) rotate(45deg)`,\n bottom:\"auto\",\n left:\"auto\",\n [arrowSide]: '0',\n boxShadow: arrowShadow[arrowSide],\n [arrowOffset[0]]: arrowOffset[1]+'px'\n }\n if (arrowRef.current) {\n Object.assign(arrowRef.current.style,arrowStyle)\n }\n\n setPositionInfo({\n atTop: (verticalAt === 'top' && !flippedV) || (verticalAt === 'bottom' && flippedV),\n atBottom: (verticalAt === 'bottom' && !flippedV) || (verticalAt === 'top' && flippedV),\n atLeft: (horizontalAt === 'left' && !flippedH) || (verticalAt === 'right' && flippedH),\n atRight: (horizontalAt === 'right' && !flippedH) || (verticalAt === 'left' && flippedH),\n fullHeight: popupOffsetHeight > maxHeight,\n fullWidth: popupOffsetWidth > maxWidth,\n arrowSide,\n arrowOffset,\n arrowStyle\n })\n\n if (fill) {\n element.current.style.width = parentOffsetWidth + 'px'\n }\n if (fixed) {\n element.current.style.position = 'fixed'\n }\n }\n\n useLayoutEffect(setPosition, [on])\n\n\n useEffect(() => {\n window.addEventListener('portalReposition', setPosition)\n window.addEventListener('stepResize', setPosition)\n window.addEventListener('scroll', setPosition, {passive:true})\n return () => {\n window.removeEventListener('portalReposition', setPosition)\n window.removeEventListener('stepResize', setPosition)\n window.removeEventListener('scroll', setPosition)\n }\n }, []\n )\n\n\n const processArrow = (arrow, arrowSize, onVerticalSide, arrowContainerWidth, popupSize, deltaPopupPosition, flipped) => {\n if (!arrow) {\n return ['', 0]\n }\n const margin = arrowPadding + (arrowSize / 2)\n const [invertDirection, percent, px] = (arrow === true ? '50%' : arrow).replace(/(-)?(\\d+%)?\\s?(-?\\d+)?/, '$1:$2:$3').split(':')\n const invertAndFlipDirection = flipped ? !invertDirection : invertDirection\n const arrowPosition = onVerticalSide ? (invertAndFlipDirection ? 'bottom' : 'top') : (invertAndFlipDirection ? 'right' : 'left')\n const fromOriginCorner = arrowPosition === 'left' || arrowPosition === 'top'\n\n const popupOffset = fromOriginCorner ? deltaPopupPosition : (arrowContainerWidth - deltaPopupPosition - popupSize)\n\n /* ____________________________\n | arrow container |\n |___________________________|\n ..../\\_______\n | popup |\n |____________|\n\n |-------| = delta popup position (popupOffset)\n\n .... = arrowPadding prop, applies to both sides, moves popup or does nothing\n\n arrow prop = invert percent px // relative to arrow container\n invert = -?\n percent = (\\d+%)?\n px = (-?\\d+)?\n\n procedure:\n 1- position arrow according to container - arrowInitialPos\n 2- constrain position inside container - constrainedArrowPosition\n 3- move popup according to arrowPadding (margin) - popupDelta\n 4- final arrow position, relative to final popup position - finalArrowPosition\n */\n\n const arrowInitialPos = (parseInt(percent || 0, 10) * arrowContainerWidth / 100) + parseInt(px || 0, 10)\n const constrainedArrowPosition = (Math.min(Math.max(arrowInitialPos, 0), arrowContainerWidth))\n const arrowPositionRelativeToPopup = fromOriginCorner ? constrainedArrowPosition - popupOffset : (arrowContainerWidth - popupOffset - constrainedArrowPosition)\n const popupDelta = arrowPositionRelativeToPopup < margin ?\n (arrowPositionRelativeToPopup - margin) :\n arrowPositionRelativeToPopup > (popupSize - margin) ?\n (margin + arrowPositionRelativeToPopup - popupSize) :\n 0\n const finalPopupPosition = fromOriginCorner ? popupOffset + popupDelta : (arrowContainerWidth - popupOffset - popupDelta - popupSize)\n return [[arrowPosition,(constrainedArrowPosition - finalPopupPosition)], popupDelta]\n }\n\n const arrowElement = arrow && <DefaultArrow ref={arrowRef} />\n\n const placeholderElement = <Placeholder as={placeholderAs} ref={placeholder}/>\n return [positionInfo,placeholderElement,arrowElement]\n}"],"names":["Placeholder","styled","span","withConfig","displayName","componentId","HORIZONTAL_MAPPING","VERTICAL_MAPPING","ARROW_KEY_POSITIONS","left","right","top","bottom","POSITIONING_BOUNDS","addPositioningBound","key","value","getPosition","origin","offset","max","originSize","selfSize","originalAlignment","selfAlignment","onCollision","mapping","boundMargin","originDiff","indexOf","selfDiff","respectingBounds","upperBound","Number","MIN_SAFE_INTEGER","lowerBound","newPosition","Math","collision","flippedPosition","slice","reverse","flippedCollision","minBound","fittedPosition","min","arrowShadow","translate","position","ARROW_DEFAULT_SIZE","DefaultArrow","div","usePositioning","element","_ref","arrowRefOpt","my","at","arrow","arrowPadding","fill","useLayers","fixed","onBottom","onLeft","onRight","onTop","keepWidth","respectBounds","respectOffsetScroll","on","placeholderAs","placeholder","useRef","arrowRef","useEnsureRef","positionInfo","setPositionInfo","useState","setPosition","_element$current","_placeholder$current","_placeholder$current2","_placeholder$current3","_placeholder$current4","retry","arguments","length","undefined","current","style","offsetParent","parentNode","setTimeout","width","maxWidth","placeholderOffsetParent","usingLayer","getDialogLayersSize","scrollOwner","_isFunction","getClosestOffsetScroll","scrollTop","window","pageYOffset","scrollLeft","pageXOffset","scrollY","isNaN","scrollX","getRespectOffsetScrollTopLeft","getBoundingClientRect","scrollOwnerTop","scrollOwnerLeft","leftPlusBorder","topPlusBorder","borderLeftWidth","borderTopWidth","getComputedStyle","parseInt","offsetWidth","parentOffsetWidth","offsetHeight","parentOffsetHeight","popupOffsetWidth","popupOffsetHeight","popupCurrentWidth","offsetX","offsetY","concat","join","split","map","_","simplePositioning","simplePositioningIndex","findIndex","bodyWidth","document","body","paddingRight","windowHeight","innerHeight","verticalCollision","horizontalCollision","verticalMy","horizontalMy","replace","verticalAt","horizontalAt","processedLeft","collisionH","processedTop","collisionV","flippedV","flippedH","arrowSide","abs","arrowElement","arrowOnVerticalSide","arrowSize","sqrt","arrowOffset","popupArrowOffset","processArrow","maxHeight","innerWidth","ceil","arrowStyle","transform","boxShadow","Object","assign","atTop","atBottom","atLeft","atRight","fullHeight","fullWidth","useLayoutEffect","useEffect","addEventListener","passive","removeEventListener","onVerticalSide","arrowContainerWidth","popupSize","deltaPopupPosition","flipped","margin","invertDirection","percent","px","invertAndFlipDirection","arrowPosition","fromOriginCorner","popupOffset","arrowInitialPos","constrainedArrowPosition","arrowPositionRelativeToPopup","popupDelta","finalPopupPosition","React","createElement","ref","placeholderElement","as"],"mappings":"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"}
1
+ {"version":3,"file":"usePositioning.mjs","sources":["../../src/containers/usePositioning.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\nimport _ from 'lodash/fp'\nimport styled from 'styled-components'\nimport {getClosestOffsetScroll} from '@startlibs/utils'\nimport {useEnsureRef} from '@startlibs/core'\nimport {getDialogLayersSize} from './DialogContainer'\n\nconst Placeholder = styled.span`\n top:0;\n left:0;\n padding: 0 !important;\n position: absolute;\n`\n/*\ntype Alignment = 'top left' | 'top center' | 'top right' |\n 'center left' | 'center center' | 'center right' |\n 'bottom left' | 'bottom center' | 'bottom right'\n\ntype Collision = 'fit fit' | 'fit flip' | 'fit fitflip' | 'fit none' |\n 'flip fit' | 'flip flip' | 'flip fitflip' | 'flip none' |\n 'flipfit fit' | 'flipfit flip' | 'flipfit fitflip' | 'flipfit none' |\n 'none fit' | 'none flip' | 'none fitflip' | 'none none'\n*/\n\nconst HORIZONTAL_MAPPING = ['left', 'center', 'right']\nconst VERTICAL_MAPPING = ['top', 'center', 'bottom']\nconst ARROW_KEY_POSITIONS = {left: '0', right: '-0', top: '0', bottom: '-0'}\n\nconst POSITIONING_BOUNDS = {left:0,top:0,right:0,bottom:0}\nexport const addPositioningBound = (key,value) => {\n POSITIONING_BOUNDS[key] += value\n return () => POSITIONING_BOUNDS[key] -= value\n}\n\nfunction getPosition(origin, offset, max, originSize, selfSize, originalAlignment, selfAlignment, onCollision, mapping, boundMargin) {\n\n // 0 pra left ou top, 1/2 pra center, 1 pra right ou bottom\n const originDiff = originSize * (mapping.indexOf(originalAlignment) / 2)\n // 0 pra left ou top, -1/2 pra center, -1 pra right ou bottom\n const selfDiff = -(selfSize * (mapping.indexOf(selfAlignment) / 2))\n\n const respectingBounds = boundMargin !== false\n const upperBound = respectingBounds ? (POSITIONING_BOUNDS[mapping[0]] + boundMargin) : Number.MIN_SAFE_INTEGER\n const lowerBound = respectingBounds ? (POSITIONING_BOUNDS[mapping[2]] + boundMargin) : 0\n const newPosition = Math.max(upperBound, origin + selfDiff + originDiff + offset)\n\n const collision = Math.max(-newPosition, newPosition + selfSize - max + lowerBound)\n if (collision > 0 && onCollision !== 'none') {\n if (onCollision.indexOf('flip') >= 0) {\n const flippedPosition = getPosition(origin, -offset, max, originSize, selfSize, originalAlignment, selfAlignment, onCollision.indexOf('fit') >= 0 ? 'fit' : 'none', mapping.slice().reverse(), boundMargin)\n const flippedCollision = Math.max(-flippedPosition[0], flippedPosition[0] + selfSize - max)\n if ((collision > 0 && flippedCollision > 0) || flippedPosition[0] < upperBound) {\n return getPosition(origin, offset, max, originSize, selfSize, originalAlignment, selfAlignment, 'fit', mapping, boundMargin)\n }\n return collision < flippedCollision ? [newPosition, 'none'] : [flippedPosition[0], flippedPosition[1] === 'fit' ? 'flipfit' : 'flip']\n } else {\n const minBound = respectingBounds ? upperBound : 0\n const fittedPosition = Math.max(minBound, Math.min(newPosition, max - selfSize - lowerBound))\n return [fittedPosition, fittedPosition !== newPosition ? 'fit' : 'none']\n }\n } else {\n return [newPosition, 'none']\n }\n}\n\nconst arrowShadow = {\n top: '-1px -1px 2px -1px rgba(0,0,0,.25)',\n right: '1px -1px 2px -1px rgba(0,0,0,.25)',\n bottom: '1px 1px 2px -1px rgba(0,0,0,.25)',\n left: '-1px 1px 2px -1px rgba(0,0,0,.25)'\n}\n\nconst translate = (position, offset) => (position === 'left' ? '-50%' : position === 'right' ? '50%' : offset) + ',' +\n (position === 'top' ? '-50%' : position === 'bottom' ? '50%' : offset)\n\nconst ARROW_DEFAULT_SIZE = 14\n\nexport const DefaultArrow = styled.div`\n background-color: #fff;\n position: absolute;\n width: ${ARROW_DEFAULT_SIZE}px;\n height: ${ARROW_DEFAULT_SIZE}px;\n transform: translate(-50%,50%) rotate(45deg);\n bottom: 0;\n left: 50%;\n box-shadow: ${arrowShadow.bottom};\n`\n\nexport const usePositioning = (\n element,\n {\n my = 'top right',\n offset = '0 0', // x y\n at = 'bottom right',\n onCollision = 'flip flip',\n arrow,\n arrowPadding = 10,\n fill,\n useLayers = true,\n fixed,\n bottom: onBottom,\n left: onLeft,\n right: onRight,\n top: onTop,\n keepWidth = true,\n boundMargin = 6,\n respectBounds,\n respectOffsetScroll,\n on,\n placeholderAs\n },\n arrowRefOpt\n) => {\n const placeholder = useRef()\n const arrowRef = useEnsureRef(arrowRefOpt)\n const [positionInfo, setPositionInfo] = useState()\n\n const setPosition = (retry=0) => {\n if (retry>10) { return }\n if (!element.current?.style || !(placeholder.current?.offsetParent || placeholder.current?.parentNode?.offsetParent)) {\n setTimeout(()=>setPosition(retry+1),100)\n return\n }\n // Limpar a largura para medir pode encurtar o conteúdo (itens deixam de quebrar linha)\n // e o browser corta o scrollTop; guarda para restaurar depois de reaplicar a largura.\n const previousScrollTop = element.current.scrollTop\n if (keepWidth) {\n element.current.style.width = ''\n } else {\n element.current.style.maxWidth = ''\n }\n const placeholderOffsetParent = (placeholder.current?.offsetParent || placeholder.current?.parentNode?.offsetParent)\n const usingLayer = respectOffsetScroll || useLayers && getDialogLayersSize() > 0\n const scrollOwner =\n usingLayer\n ? (_.isFunction(respectOffsetScroll) ? respectOffsetScroll(element.current.offsetParent) : getClosestOffsetScroll(element.current.offsetParent))\n : {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset}\n\n // console.log({scrollOwner,scrollTop:scrollOwner.scrollTop,pageYOffset:window.pageYOffset})\n\n const scrollY = !isNaN(scrollOwner.scrollTop) ? scrollOwner.scrollTop : window.pageYOffset\n const scrollX = !isNaN(scrollOwner.scrollLeft) ? scrollOwner.scrollLeft : window.pageXOffset\n const getRespectOffsetScrollTopLeft = () => {\n const {top,left} = placeholder.current.getBoundingClientRect()\n const {top:scrollOwnerTop, left: scrollOwnerLeft} = scrollOwner.getBoundingClientRect()\n return {top: top-scrollOwnerTop,left: left-scrollOwnerLeft}\n }\n const {left: leftPlusBorder, top: topPlusBorder} =\n respectOffsetScroll\n ? getRespectOffsetScrollTopLeft()\n :placeholder.current.getBoundingClientRect()\n\n const {borderLeftWidth, borderTopWidth} = window.getComputedStyle(placeholderOffsetParent)\n const left = leftPlusBorder - parseInt(borderLeftWidth, 10)\n const top = topPlusBorder - parseInt(borderTopWidth, 10)\n const {offsetWidth: parentOffsetWidth, offsetHeight: parentOffsetHeight} = (placeholderOffsetParent)\n const {offsetWidth: popupOffsetWidth, offsetHeight: popupOffsetHeight} = element.current\n const {width:popupCurrentWidth} = element.current.getBoundingClientRect()\n const [offsetX, offsetY] = [].concat(offset).join(' ').split(' ').map(_ => Number(_ || 0))\n const simplePositioning = [onTop, onRight, onBottom, onLeft].map(_ => _ === true ? 'center' : _)\n const simplePositioningIndex = simplePositioning.findIndex(_ => _)\n const bodyWidth = document.body.offsetWidth - (usingLayer ? parseInt(getComputedStyle(document.body).paddingRight, 10) : 0)\n // Barra fixa inferior (footer mobile) registrada em POSITIONING_BOUNDS conta como\n // borda da tela: sem isso o popup se posiciona atrás dela. Com respectBounds o\n // desconto já vem do lowerBound em getPosition, não descontar duas vezes.\n const windowHeight = window.innerHeight - (respectBounds ? 0 : POSITIONING_BOUNDS.bottom)\n\n const [verticalCollision, horizontalCollision] = onCollision.split(' ')\n const [verticalMy, horizontalMy] = [my, 'bottom $', '$ left', 'top $', '$ right'][simplePositioningIndex + 1].replace('$', simplePositioning[simplePositioningIndex]).split(' ')\n const [verticalAt, horizontalAt] = [at, 'top $', '$ right', 'bottom $', '$ left'][simplePositioningIndex + 1].replace('$', simplePositioning[simplePositioningIndex]).split(' ')\n\n const [processedLeft, collisionH] = getPosition(left, offsetX, bodyWidth, parentOffsetWidth, fill ? parentOffsetWidth : popupOffsetWidth, horizontalAt, horizontalMy, horizontalCollision, HORIZONTAL_MAPPING,!!respectBounds && boundMargin)\n const [processedTop, collisionV] = getPosition(top, offsetY, windowHeight, parentOffsetHeight, popupOffsetHeight, verticalAt, verticalMy, verticalCollision, VERTICAL_MAPPING,!!respectBounds && boundMargin)\n\n\n const flippedV = collisionV.indexOf('flip') >= 0\n const flippedH = collisionH.indexOf('flip') >= 0\n\n\n //arrow\n const arrowSide = Math.abs(VERTICAL_MAPPING.indexOf(verticalMy) - VERTICAL_MAPPING.indexOf(verticalAt)) === 2 ? (flippedV ? verticalAt : verticalMy) :\n Math.abs(HORIZONTAL_MAPPING.indexOf(horizontalMy) - HORIZONTAL_MAPPING.indexOf(horizontalAt)) === 2 ? (flippedH ? horizontalAt : horizontalMy) : ''\n const arrowElement = arrowRef.current\n const arrowOnVerticalSide = arrowSide === 'left' || arrowSide === 'right'\n const arrowSize = arrowElement ? arrowElement.getBoundingClientRect()[arrowOnVerticalSide ? 'height' : 'width'] : (ARROW_DEFAULT_SIZE * Math.sqrt(2))\n const [arrowOffset, popupArrowOffset] = arrowOnVerticalSide ?\n processArrow(ARROW_KEY_POSITIONS[arrow] || arrow, arrowSize, arrowOnVerticalSide, parentOffsetHeight, popupOffsetHeight, processedTop - top, flippedV) :\n processArrow(ARROW_KEY_POSITIONS[arrow] || arrow, arrowSize, arrowOnVerticalSide, parentOffsetWidth, popupOffsetWidth, processedLeft - left, flippedV)\n\n\n const maxHeight = window.innerHeight - (POSITIONING_BOUNDS.top + POSITIONING_BOUNDS.bottom) - (respectBounds ? boundMargin*2 : 0)\n const maxWidth = window.innerWidth - (POSITIONING_BOUNDS.left + POSITIONING_BOUNDS.right) - (respectBounds ? boundMargin*2 : 0)\n\n element.current.style.maxHeight = ''\n if (parseInt(window.getComputedStyle(element.current).maxHeight) > maxHeight) {\n element.current.style.maxHeight = maxHeight+'px'\n }\n if (keepWidth) {\n element.current.style.width = Math.ceil(popupCurrentWidth)+\"px\"\n } else {\n element.current.style.maxWidth = maxWidth+'px'\n }\n // console.log({processedTop,top,offsetY,scrollY})\n\n\n element.current.style.top = (processedTop + (arrowOnVerticalSide ? popupArrowOffset : 0) + (fixed ? 0 : scrollY)) + 'px'\n element.current.style.left = (processedLeft + (arrowOnVerticalSide ? 0 : popupArrowOffset) + (fixed ? 0 : scrollX)) + 'px'\n\n const arrowStyle = {\n transform: `translate(${translate(arrowSide, arrowOffset[0] === 'top' || arrowOffset[0] === 'left' ? '-50%' : '50%')}) rotate(45deg)`,\n bottom:\"auto\",\n left:\"auto\",\n [arrowSide]: '0',\n boxShadow: arrowShadow[arrowSide],\n [arrowOffset[0]]: arrowOffset[1]+'px'\n }\n if (arrowRef.current) {\n Object.assign(arrowRef.current.style,arrowStyle)\n }\n\n setPositionInfo({\n atTop: (verticalAt === 'top' && !flippedV) || (verticalAt === 'bottom' && flippedV),\n atBottom: (verticalAt === 'bottom' && !flippedV) || (verticalAt === 'top' && flippedV),\n atLeft: (horizontalAt === 'left' && !flippedH) || (verticalAt === 'right' && flippedH),\n atRight: (horizontalAt === 'right' && !flippedH) || (verticalAt === 'left' && flippedH),\n fullHeight: popupOffsetHeight > maxHeight,\n fullWidth: popupOffsetWidth > maxWidth,\n arrowSide,\n arrowOffset,\n arrowStyle\n })\n\n if (fill) {\n element.current.style.width = parentOffsetWidth + 'px'\n }\n if (fixed) {\n element.current.style.position = 'fixed'\n }\n if (element.current.scrollTop !== previousScrollTop) {\n element.current.scrollTop = previousScrollTop\n }\n }\n\n useLayoutEffect(setPosition, [on])\n\n\n useEffect(() => {\n window.addEventListener('portalReposition', setPosition)\n window.addEventListener('stepResize', setPosition)\n window.addEventListener('scroll', setPosition, {passive:true})\n return () => {\n window.removeEventListener('portalReposition', setPosition)\n window.removeEventListener('stepResize', setPosition)\n window.removeEventListener('scroll', setPosition)\n }\n }, []\n )\n\n\n const processArrow = (arrow, arrowSize, onVerticalSide, arrowContainerWidth, popupSize, deltaPopupPosition, flipped) => {\n if (!arrow) {\n return ['', 0]\n }\n const margin = arrowPadding + (arrowSize / 2)\n const [invertDirection, percent, px] = (arrow === true ? '50%' : arrow).replace(/(-)?(\\d+%)?\\s?(-?\\d+)?/, '$1:$2:$3').split(':')\n const invertAndFlipDirection = flipped ? !invertDirection : invertDirection\n const arrowPosition = onVerticalSide ? (invertAndFlipDirection ? 'bottom' : 'top') : (invertAndFlipDirection ? 'right' : 'left')\n const fromOriginCorner = arrowPosition === 'left' || arrowPosition === 'top'\n\n const popupOffset = fromOriginCorner ? deltaPopupPosition : (arrowContainerWidth - deltaPopupPosition - popupSize)\n\n /* ____________________________\n | arrow container |\n |___________________________|\n ..../\\_______\n | popup |\n |____________|\n\n |-------| = delta popup position (popupOffset)\n\n .... = arrowPadding prop, applies to both sides, moves popup or does nothing\n\n arrow prop = invert percent px // relative to arrow container\n invert = -?\n percent = (\\d+%)?\n px = (-?\\d+)?\n\n procedure:\n 1- position arrow according to container - arrowInitialPos\n 2- constrain position inside container - constrainedArrowPosition\n 3- move popup according to arrowPadding (margin) - popupDelta\n 4- final arrow position, relative to final popup position - finalArrowPosition\n */\n\n const arrowInitialPos = (parseInt(percent || 0, 10) * arrowContainerWidth / 100) + parseInt(px || 0, 10)\n const constrainedArrowPosition = (Math.min(Math.max(arrowInitialPos, 0), arrowContainerWidth))\n const arrowPositionRelativeToPopup = fromOriginCorner ? constrainedArrowPosition - popupOffset : (arrowContainerWidth - popupOffset - constrainedArrowPosition)\n const popupDelta = arrowPositionRelativeToPopup < margin ?\n (arrowPositionRelativeToPopup - margin) :\n arrowPositionRelativeToPopup > (popupSize - margin) ?\n (margin + arrowPositionRelativeToPopup - popupSize) :\n 0\n const finalPopupPosition = fromOriginCorner ? popupOffset + popupDelta : (arrowContainerWidth - popupOffset - popupDelta - popupSize)\n return [[arrowPosition,(constrainedArrowPosition - finalPopupPosition)], popupDelta]\n }\n\n const arrowElement = arrow && <DefaultArrow ref={arrowRef} />\n\n const placeholderElement = <Placeholder as={placeholderAs} ref={placeholder}/>\n return [positionInfo,placeholderElement,arrowElement]\n}"],"names":["Placeholder","styled","span","withConfig","displayName","componentId","HORIZONTAL_MAPPING","VERTICAL_MAPPING","ARROW_KEY_POSITIONS","left","right","top","bottom","POSITIONING_BOUNDS","addPositioningBound","key","value","getPosition","origin","offset","max","originSize","selfSize","originalAlignment","selfAlignment","onCollision","mapping","boundMargin","originDiff","indexOf","selfDiff","respectingBounds","upperBound","Number","MIN_SAFE_INTEGER","lowerBound","newPosition","Math","collision","flippedPosition","slice","reverse","flippedCollision","minBound","fittedPosition","min","arrowShadow","translate","position","ARROW_DEFAULT_SIZE","DefaultArrow","div","usePositioning","element","_ref","arrowRefOpt","my","at","arrow","arrowPadding","fill","useLayers","fixed","onBottom","onLeft","onRight","onTop","keepWidth","respectBounds","respectOffsetScroll","on","placeholderAs","placeholder","useRef","arrowRef","useEnsureRef","positionInfo","setPositionInfo","useState","setPosition","_element$current","_placeholder$current","_placeholder$current2","_placeholder$current3","_placeholder$current4","retry","arguments","length","undefined","current","style","offsetParent","parentNode","setTimeout","previousScrollTop","scrollTop","width","maxWidth","placeholderOffsetParent","usingLayer","getDialogLayersSize","scrollOwner","_isFunction","getClosestOffsetScroll","window","pageYOffset","scrollLeft","pageXOffset","scrollY","isNaN","scrollX","getRespectOffsetScrollTopLeft","getBoundingClientRect","scrollOwnerTop","scrollOwnerLeft","leftPlusBorder","topPlusBorder","borderLeftWidth","borderTopWidth","getComputedStyle","parseInt","offsetWidth","parentOffsetWidth","offsetHeight","parentOffsetHeight","popupOffsetWidth","popupOffsetHeight","popupCurrentWidth","offsetX","offsetY","concat","join","split","map","_","simplePositioning","simplePositioningIndex","findIndex","bodyWidth","document","body","paddingRight","windowHeight","innerHeight","verticalCollision","horizontalCollision","verticalMy","horizontalMy","replace","verticalAt","horizontalAt","processedLeft","collisionH","processedTop","collisionV","flippedV","flippedH","arrowSide","abs","arrowElement","arrowOnVerticalSide","arrowSize","sqrt","arrowOffset","popupArrowOffset","processArrow","maxHeight","innerWidth","ceil","arrowStyle","transform","boxShadow","Object","assign","atTop","atBottom","atLeft","atRight","fullHeight","fullWidth","useLayoutEffect","useEffect","addEventListener","passive","removeEventListener","onVerticalSide","arrowContainerWidth","popupSize","deltaPopupPosition","flipped","margin","invertDirection","percent","px","invertAndFlipDirection","arrowPosition","fromOriginCorner","popupOffset","arrowInitialPos","constrainedArrowPosition","arrowPositionRelativeToPopup","popupDelta","finalPopupPosition","React","createElement","ref","placeholderElement","as"],"mappings":"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"}
package/lib/index.cjs CHANGED
@@ -2678,6 +2678,9 @@ const usePositioning = (element, _ref, arrowRefOpt) => {
2678
2678
  setTimeout(() => setPosition(retry + 1), 100);
2679
2679
  return;
2680
2680
  }
2681
+ // Limpar a largura para medir pode encurtar o conteúdo (itens deixam de quebrar linha)
2682
+ // e o browser corta o scrollTop; guarda para restaurar depois de reaplicar a largura.
2683
+ const previousScrollTop = element.current.scrollTop;
2681
2684
  if (keepWidth) {
2682
2685
  element.current.style.width = '';
2683
2686
  } else {
@@ -2794,6 +2797,9 @@ const usePositioning = (element, _ref, arrowRefOpt) => {
2794
2797
  if (fixed) {
2795
2798
  element.current.style.position = 'fixed';
2796
2799
  }
2800
+ if (element.current.scrollTop !== previousScrollTop) {
2801
+ element.current.scrollTop = previousScrollTop;
2802
+ }
2797
2803
  };
2798
2804
  React.useLayoutEffect(setPosition, [on]);
2799
2805
  React.useEffect(() => {
@@ -3931,8 +3937,8 @@ const Tooltip = _ref => {
3931
3937
  }, rest), content), children);
3932
3938
  };
3933
3939
 
3934
- const _excluded$5 = ["label", "layerIndex", "href", "linkTo", "prefixWith", "subMenu", "icon", "children"],
3935
- _excluded2 = ["emitter", "index", "menuSlot", "keepOpen", "hover", "layerIndex", "hoverCursor", "passTouchThrough", "children", "setCursorOnHover", "onClick", "prefixWith", "linkTo", "icon", "label", "descText", "helpText", "target", "href"],
3940
+ const _excluded$5 = ["label", "layerIndex", "href", "linkTo", "prefixWith", "subMenu", "icon", "children", "scrollOnHover"],
3941
+ _excluded2 = ["emitter", "index", "menuSlot", "keepOpen", "hover", "layerIndex", "hoverCursor", "scrollOnHover", "passTouchThrough", "children", "setCursorOnHover", "onClick", "prefixWith", "linkTo", "icon", "label", "descText", "helpText", "target", "href"],
3936
3942
  _excluded3 = ["children", "sub", "hoverIndex", "autoHover", "menuSlot", "withoutIcons", "onClose", "onHover", "fill", "onClick"],
3937
3943
  _excluded4 = ["slot", "sub", "withoutIcons", "children"];
3938
3944
  var _templateObject$2, _templateObject2$1, _templateObject3$1, _templateObject4;
@@ -4012,7 +4018,7 @@ class SimpleLi extends React__default["default"].Component {
4012
4018
  this.props.emitter.off('confirm', this.confirm);
4013
4019
  }
4014
4020
  componentDidUpdate() {
4015
- if (this.props.hover) {
4021
+ if (this.props.hover && this.props.scrollOnHover !== false) {
4016
4022
  this.scrollToVisibility();
4017
4023
  }
4018
4024
  }
@@ -4035,7 +4041,8 @@ class SimpleLi extends React__default["default"].Component {
4035
4041
  prefixWith,
4036
4042
  subMenu,
4037
4043
  icon,
4038
- children
4044
+ children,
4045
+ scrollOnHover
4039
4046
  } = _this$props,
4040
4047
  rest = _objectWithoutProperties__default["default"](_this$props, _excluded$5);
4041
4048
  const Tag = linkTo ? Link : 'a';
@@ -4065,6 +4072,7 @@ const Li = /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
4065
4072
  hover,
4066
4073
  layerIndex,
4067
4074
  hoverCursor,
4075
+ scrollOnHover,
4068
4076
  passTouchThrough,
4069
4077
  children,
4070
4078
  setCursorOnHover,
@@ -4099,7 +4107,7 @@ const Li = /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
4099
4107
  }
4100
4108
  };
4101
4109
  React.useEffect(() => {
4102
- if (hover) {
4110
+ if (hover && scrollOnHover !== false) {
4103
4111
  try {
4104
4112
  const el = nodeRef.current;
4105
4113
  const parent = el.parentElement;
@@ -4224,6 +4232,9 @@ const ContextMenuComponent = /*#__PURE__*/React.forwardRef((_ref2, unesuredRef)
4224
4232
  props = _objectWithoutProperties__default["default"](_ref2, _excluded3);
4225
4233
  const ref = core.useEnsureRef(unesuredRef);
4226
4234
  const [hoverCursor, setHoverCursor] = React.useState(autoHover || sub ? 0 : -1);
4235
+ // Hover vindo do mouse não deve rolar a lista: o Chrome dispara mousemove sintético
4236
+ // ao fim do scroll, e o item cortado sob o cursor puxaria a lista de volta.
4237
+ const hoverFromMouse = React.useRef(false);
4227
4238
  const [layerCursor, setLayerCursor] = useContextMenuSharedState(0);
4228
4239
  const [layerIndex, {
4229
4240
  getSize
@@ -4238,6 +4249,7 @@ const ContextMenuComponent = /*#__PURE__*/React.forwardRef((_ref2, unesuredRef)
4238
4249
  }, [layerIndex, layerCursor, hoverCursor]);
4239
4250
  React.useEffect(() => {
4240
4251
  if (hoverIndex !== undefined) {
4252
+ if (hoverIndex !== hoverCursor) hoverFromMouse.current = false;
4241
4253
  setHoverCursor(Math.min(Math.max(hoverIndex, -1), getTotalKeyboardItems(children) + 1));
4242
4254
  }
4243
4255
  }, [hoverIndex !== hoverCursor]);
@@ -4265,6 +4277,7 @@ const ContextMenuComponent = /*#__PURE__*/React.forwardRef((_ref2, unesuredRef)
4265
4277
  const direction = e.keyCode - 39;
4266
4278
  const max = getTotalKeyboardItems(children);
4267
4279
  const newIndex = (hoverCursor + direction + max) % max;
4280
+ hoverFromMouse.current = false;
4268
4281
  setHoverCursor(newIndex);
4269
4282
  onHover(newIndex);
4270
4283
  }
@@ -4284,6 +4297,7 @@ const ContextMenuComponent = /*#__PURE__*/React.forwardRef((_ref2, unesuredRef)
4284
4297
  return sum;
4285
4298
  };
4286
4299
  const setCursorOnHover = index => {
4300
+ hoverFromMouse.current = true;
4287
4301
  setLayerCursor(layerIndex);
4288
4302
  setHoverCursor(index);
4289
4303
  onHover(index);
@@ -4296,6 +4310,7 @@ const ContextMenuComponent = /*#__PURE__*/React.forwardRef((_ref2, unesuredRef)
4296
4310
  fixedPosition: props.fixed,
4297
4311
  hover: hoverCursor === indexRef.current && layerIndex === layerCursor,
4298
4312
  hoverCursor: hoverCursor,
4313
+ scrollOnHover: !hoverFromMouse.current,
4299
4314
  index: indexRef.current++,
4300
4315
  setCursorOnHover,
4301
4316
  emitter: itemsEmitter,