@salutejs/plasma-new-hope 0.346.0-canary.2448.21474757261.0 → 0.346.0-canary.2448.21482585849.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 (31) hide show
  1. package/dist/css/cjs/components/Popover/Popover.js +8 -1
  2. package/dist/css/cjs/components/Popover/Popover.js.map +1 -1
  3. package/dist/css/cjs/components/Popup/ui/Draggable/Draggable.js +5 -0
  4. package/dist/css/cjs/components/Popup/ui/Draggable/Draggable.js.map +1 -1
  5. package/dist/css/cjs/utils/react.js +3 -1
  6. package/dist/css/cjs/utils/react.js.map +1 -1
  7. package/dist/css/es/components/Popover/Popover.js +8 -1
  8. package/dist/css/es/components/Popover/Popover.js.map +1 -1
  9. package/dist/css/es/components/Popup/ui/Draggable/Draggable.js +5 -0
  10. package/dist/css/es/components/Popup/ui/Draggable/Draggable.js.map +1 -1
  11. package/dist/css/es/utils/react.js +3 -2
  12. package/dist/css/es/utils/react.js.map +1 -1
  13. package/dist/emotion/cjs/components/Popover/Popover.js +8 -1
  14. package/dist/emotion/cjs/components/Popup/ui/Draggable/Draggable.js +5 -0
  15. package/dist/emotion/cjs/utils/react.js +5 -1
  16. package/dist/emotion/es/components/Popover/Popover.js +8 -1
  17. package/dist/emotion/es/components/Popup/ui/Draggable/Draggable.js +5 -0
  18. package/dist/emotion/es/examples/components/Combobox/Combobox.js +7 -0
  19. package/dist/emotion/es/utils/react.js +2 -1
  20. package/dist/styled-components/cjs/components/Popover/Popover.js +8 -1
  21. package/dist/styled-components/cjs/components/Popup/ui/Draggable/Draggable.js +5 -0
  22. package/dist/styled-components/cjs/utils/react.js +5 -1
  23. package/dist/styled-components/es/components/Popover/Popover.js +8 -1
  24. package/dist/styled-components/es/components/Popup/ui/Draggable/Draggable.js +5 -0
  25. package/dist/styled-components/es/examples/components/Combobox/Combobox.js +7 -0
  26. package/dist/styled-components/es/utils/react.js +2 -1
  27. package/package.json +5 -5
  28. package/types/components/Popover/Popover.d.ts.map +1 -1
  29. package/types/components/Popup/ui/Draggable/Draggable.d.ts.map +1 -1
  30. package/types/utils/react.d.ts +1 -0
  31. package/types/utils/react.d.ts.map +1 -1
@@ -87,6 +87,7 @@ var popoverRoot = function popoverRoot(Root) {
87
87
  var isAuto = isAutoArray || placement.startsWith('auto');
88
88
  var openClass = innerIsOpen && shouldRender ? Popover_tokens.classes.open : undefined;
89
89
  var animatedClass = animated ? Popover_tokens.classes.animate : undefined;
90
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
90
91
  var offsetInner = usePopoverOffset.usePopoverOffset({
91
92
  handleRef: targetRef,
92
93
  placement: placement,
@@ -140,7 +141,7 @@ var popoverRoot = function popoverRoot(Root) {
140
141
  }, [closeOnOverlayClick, innerIsOpen, onToggle]);
141
142
  var onClick = React.useCallback(function (event) {
142
143
  event.persist();
143
- if (trigger === 'click') {
144
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
144
145
  var _popoverRef$current2;
145
146
  var targetIsPopover = event.target === popoverRef.current;
146
147
  var rootHasTarget = (_popoverRef$current2 = popoverRef.current) === null || _popoverRef$current2 === void 0 ? void 0 : _popoverRef$current2.contains(event.target);
@@ -160,11 +161,17 @@ var popoverRoot = function popoverRoot(Root) {
160
161
  }
161
162
  }, [trigger, onToggle]);
162
163
  var onFocus = React.useCallback(function (event) {
164
+ if (isMobileDevice) {
165
+ return;
166
+ }
163
167
  if (trigger === 'hover') {
164
168
  onToggle === null || onToggle === void 0 || onToggle(true, event);
165
169
  }
166
170
  }, [trigger, onToggle]);
167
171
  var onBlur = React.useCallback(function (event) {
172
+ if (isMobileDevice) {
173
+ return;
174
+ }
168
175
  if (trigger === 'hover') {
169
176
  onToggle === null || onToggle === void 0 || onToggle(false, event);
170
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React, { useRef, useCallback, useEffect, useState, forwardRef, isValidElement } from 'react';\nimport { usePopper } from 'react-popper';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../engines/types';\nimport { useFocusTrap } from '../../hooks';\nimport { cx, safeUseId } from '../../utils';\nimport { Portal } from '../Portal';\nimport { Resizable } from '../_Resizable';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport type { PopoverPlacement, PopoverProps } from './Popover.types';\nimport { StyledArrow, StyledPopover, StyledRoot, StyledWrapper } from './Popover.styles';\nimport { classes } from './Popover.tokens';\nimport { usePopoverOffset } from './hooks/usePopoverOffset';\n\nexport const ESCAPE_KEYCODE = 27;\nexport const POPOVER_PORTAL_ID = 'plasma-popover-root';\n\n/**\n * Всплывающее окно с возможностью позиционирования\n * и вызова по клику либо ховеру.\n */\nexport const popoverRoot = (Root: RootProps<HTMLDivElement, PopoverProps>) =>\n forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n target,\n children,\n animated,\n isOpen,\n opened,\n trigger = 'click',\n hasArrow,\n frame = 'document',\n className,\n placement = 'auto',\n offset = [0, 0],\n zIndex,\n isFocusTrapped = true,\n closeOnEsc = true,\n preventOverflow = true,\n usePortal = false,\n resizable,\n view,\n onToggle,\n onResizeStart,\n onResizeEnd,\n closeOnOverlayClick,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popoverRef = useRef<HTMLDivElement | null>(null);\n const handleRef = useForkRef<HTMLDivElement>(rootRef, outerRootRef);\n const portalRef = useRef<HTMLElement | null>(null);\n const targetRef = useRef<HTMLDivElement | null>(null);\n\n const trapRef = useFocusTrap(innerIsOpen && isFocusTrapped);\n const uuid = safeUseId();\n\n const popoverForkRef = useForkRef<HTMLDivElement>(popoverRef, trapRef);\n\n const [arrowElement, setArrowElement] = useState<HTMLSpanElement | null>(null);\n\n const [, forceRender] = useState(false);\n const [shouldRender, setShouldRender] = useState(innerIsOpen);\n\n const portalContainer =\n (typeof target === 'object' && target !== null && 'current' in target && target.current) || undefined;\n\n const isAutoArray = Array.isArray(placement);\n const isAuto = isAutoArray || (placement as PopoverPlacement).startsWith('auto');\n\n const openClass = innerIsOpen && shouldRender ? classes.open : undefined;\n const animatedClass = animated ? classes.animate : undefined;\n\n const offsetInner = usePopoverOffset({\n handleRef: targetRef,\n placement: placement as string,\n offsetOuter: offset,\n });\n\n const { styles, attributes, forceUpdate } = usePopper(rootRef.current, popoverRef.current, {\n // TODO: #1121\n // eslint-disable-next-line no-nested-ternary\n placement: isAutoArray\n ? placement[0]?.endsWith('start')\n ? 'auto-start'\n : 'auto'\n : (placement as PopoverPlacement),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n mainAxis: preventOverflow,\n },\n },\n { name: 'offset', options: { offset: [offsetInner[0], offsetInner[1]] } },\n {\n name: 'flip',\n enabled: isAuto,\n options: {\n allowedAutoPlacements: isAutoArray ? (placement as PopoverPlacement[]) : [],\n },\n },\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n },\n },\n ],\n });\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (innerIsOpen && closeOnEsc && event.keyCode === ESCAPE_KEYCODE) {\n onToggle?.(false, event);\n }\n },\n [closeOnEsc, innerIsOpen, onToggle],\n );\n\n const onDocumentClick = useCallback(\n (event: MouseEvent) => {\n if (innerIsOpen && closeOnOverlayClick && onToggle) {\n const targetIsRoot = event.target === rootRef.current;\n const rootHasTarget = rootRef.current?.contains(event.target as Element);\n const popoverRootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsRoot && !rootHasTarget && !popoverRootHasTarget) {\n onToggle(false, event);\n }\n }\n },\n [closeOnOverlayClick, innerIsOpen, onToggle],\n );\n\n const onClick = useCallback<React.MouseEventHandler>(\n (event) => {\n event.persist();\n if (trigger === 'click') {\n const targetIsPopover = event.target === popoverRef.current;\n const rootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n onToggle?.(!innerIsOpen, event);\n }\n }\n },\n [trigger, innerIsOpen, onToggle],\n );\n\n const onMouseEnter = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onMouseLeave = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onBlur = useCallback<React.FocusEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n useEffect(() => {\n document.addEventListener('click', onDocumentClick);\n return () => document.removeEventListener('click', onDocumentClick);\n }, [innerIsOpen, onToggle]);\n\n useEffect(() => {\n window.addEventListener('keydown', onEscape);\n return () => window.removeEventListener('keydown', onEscape);\n }, [closeOnEsc, innerIsOpen, onToggle]);\n\n useEffect(() => {\n let portal = document.getElementById(POPOVER_PORTAL_ID);\n\n if (typeof frame !== 'string' && frame && frame.current) {\n portal = frame.current;\n }\n\n if (typeof frame === 'string' && frame) {\n portal = document.getElementById(frame);\n }\n\n if (!usePortal && isValidElement(target)) {\n portal = rootRef.current;\n }\n\n if (!portal) {\n const portalId = `${POPOVER_PORTAL_ID}-${uuid}`;\n\n portal = document.createElement('div');\n portal.setAttribute('id', portalId);\n\n if (typeof frame === 'string' && frame !== 'document') {\n document.getElementById(frame)?.appendChild(portal);\n } else {\n document.body.appendChild(portal);\n }\n }\n\n portalRef.current = portal;\n\n /**\n * Изменение стейта нужно для того, чтобы Popup\n * отобразился после записи DOM элемента в portalRef.current\n */\n forceRender(true);\n }, []);\n\n useEffect(() => {\n if (!innerIsOpen || !forceUpdate) {\n return;\n }\n\n /*\n * INFO: Метод forceUpdate содержит в себе flushSync и приводит\n * к повторному рендеру компонента, который уже находится в процессе рендера.\n * Данный хак, нужен для того, чтобы это поведение избежать и перенаправить\n * вызов метода в очередь микрозадач.\n */\n Promise.resolve().then(forceUpdate);\n }, [innerIsOpen, children, forceUpdate]);\n\n const handleTransitionEnd = () => {\n if (!innerIsOpen) {\n setShouldRender(false);\n }\n };\n\n useEffect(() => {\n if (innerIsOpen) {\n setShouldRender(true);\n }\n }, [innerIsOpen]);\n\n return (\n <Portal container={portalContainer} disabled={isValidElement(target)}>\n <StyledWrapper\n className={cx(classes.wrapper, !isValidElement(target) && classes.targetAsRef)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={targetRef}\n >\n <StyledRoot\n ref={handleRef}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n className={cx(className, classes.target)}\n >\n {isValidElement(target) && target}\n </StyledRoot>\n {children && portalRef.current && (\n <Portal container={portalRef.current}>\n <Root view={view} className={className} {...rest}>\n <StyledPopover\n {...attributes.popper}\n onTransitionEnd={handleTransitionEnd}\n className={cx(classes.root, openClass, animatedClass)}\n ref={popoverForkRef}\n style={{\n ...styles.popper,\n display: shouldRender || innerIsOpen ? 'block' : 'none',\n }}\n zIndex={zIndex}\n >\n {hasArrow && (\n <StyledArrow\n className={classes.arrow}\n ref={setArrowElement}\n style={styles.arrow}\n {...attributes.arrow}\n />\n )}\n <Resizable\n resizable={resizable}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n >\n {children}\n </Resizable>\n </StyledPopover>\n </Root>\n </Portal>\n )}\n </StyledWrapper>\n </Portal>\n );\n },\n );\n\nexport const popoverConfig = {\n name: 'Popover',\n tag: 'div',\n layout: popoverRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["ESCAPE_KEYCODE","POPOVER_PORTAL_ID","popoverRoot","Root","forwardRef","_ref","outerRootRef","_placement$","target","children","animated","isOpen","opened","_ref$trigger","trigger","hasArrow","_ref$frame","frame","className","_ref$placement","placement","_ref$offset","offset","zIndex","_ref$isFocusTrapped","isFocusTrapped","_ref$closeOnEsc","closeOnEsc","_ref$preventOverflow","preventOverflow","_ref$usePortal","usePortal","resizable","view","onToggle","onResizeStart","onResizeEnd","closeOnOverlayClick","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","rootRef","useRef","popoverRef","handleRef","useForkRef","portalRef","targetRef","trapRef","useFocusTrap","uuid","safeUseId","popoverForkRef","_useState","useState","_useState2","_slicedToArray","arrowElement","setArrowElement","_useState3","_useState4","forceRender","_useState5","_useState6","shouldRender","setShouldRender","portalContainer","_typeof","current","undefined","isAutoArray","Array","isArray","isAuto","startsWith","openClass","classes","open","animatedClass","animate","offsetInner","usePopoverOffset","offsetOuter","_usePopper","usePopper","endsWith","modifiers","name","options","mainAxis","enabled","allowedAutoPlacements","element","styles","attributes","forceUpdate","onEscape","useCallback","event","keyCode","onDocumentClick","_rootRef$current","_popoverRef$current","targetIsRoot","rootHasTarget","contains","popoverRootHasTarget","onClick","persist","_popoverRef$current2","targetIsPopover","onMouseEnter","onMouseLeave","onFocus","onBlur","useEffect","document","addEventListener","removeEventListener","window","portal","getElementById","isValidElement","portalId","concat","createElement","setAttribute","_document$getElementB","appendChild","body","Promise","resolve","then","handleTransitionEnd","React","Portal","container","disabled","StyledWrapper","cx","wrapper","targetAsRef","ref","StyledRoot","_extends","StyledPopover","popper","onTransitionEnd","root","style","_objectSpread","display","StyledArrow","arrow","Resizable","popoverConfig","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React, { useRef, useCallback, useEffect, useState, forwardRef, isValidElement } from 'react';\nimport { usePopper } from 'react-popper';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../engines/types';\nimport { useFocusTrap } from '../../hooks';\nimport { cx, safeUseId } from '../../utils';\nimport { Portal } from '../Portal';\nimport { Resizable } from '../_Resizable';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport type { PopoverPlacement, PopoverProps } from './Popover.types';\nimport { StyledArrow, StyledPopover, StyledRoot, StyledWrapper } from './Popover.styles';\nimport { classes } from './Popover.tokens';\nimport { usePopoverOffset } from './hooks/usePopoverOffset';\n\nexport const ESCAPE_KEYCODE = 27;\nexport const POPOVER_PORTAL_ID = 'plasma-popover-root';\n\n/**\n * Всплывающее окно с возможностью позиционирования\n * и вызова по клику либо ховеру.\n */\nexport const popoverRoot = (Root: RootProps<HTMLDivElement, PopoverProps>) =>\n forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n target,\n children,\n animated,\n isOpen,\n opened,\n trigger = 'click',\n hasArrow,\n frame = 'document',\n className,\n placement = 'auto',\n offset = [0, 0],\n zIndex,\n isFocusTrapped = true,\n closeOnEsc = true,\n preventOverflow = true,\n usePortal = false,\n resizable,\n view,\n onToggle,\n onResizeStart,\n onResizeEnd,\n closeOnOverlayClick,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popoverRef = useRef<HTMLDivElement | null>(null);\n const handleRef = useForkRef<HTMLDivElement>(rootRef, outerRootRef);\n const portalRef = useRef<HTMLElement | null>(null);\n const targetRef = useRef<HTMLDivElement | null>(null);\n\n const trapRef = useFocusTrap(innerIsOpen && isFocusTrapped);\n const uuid = safeUseId();\n\n const popoverForkRef = useForkRef<HTMLDivElement>(popoverRef, trapRef);\n\n const [arrowElement, setArrowElement] = useState<HTMLSpanElement | null>(null);\n\n const [, forceRender] = useState(false);\n const [shouldRender, setShouldRender] = useState(innerIsOpen);\n\n const portalContainer =\n (typeof target === 'object' && target !== null && 'current' in target && target.current) || undefined;\n\n const isAutoArray = Array.isArray(placement);\n const isAuto = isAutoArray || (placement as PopoverPlacement).startsWith('auto');\n\n const openClass = innerIsOpen && shouldRender ? classes.open : undefined;\n const animatedClass = animated ? classes.animate : undefined;\n\n const isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;\n\n const offsetInner = usePopoverOffset({\n handleRef: targetRef,\n placement: placement as string,\n offsetOuter: offset,\n });\n\n const { styles, attributes, forceUpdate } = usePopper(rootRef.current, popoverRef.current, {\n // TODO: #1121\n // eslint-disable-next-line no-nested-ternary\n placement: isAutoArray\n ? placement[0]?.endsWith('start')\n ? 'auto-start'\n : 'auto'\n : (placement as PopoverPlacement),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n mainAxis: preventOverflow,\n },\n },\n { name: 'offset', options: { offset: [offsetInner[0], offsetInner[1]] } },\n {\n name: 'flip',\n enabled: isAuto,\n options: {\n allowedAutoPlacements: isAutoArray ? (placement as PopoverPlacement[]) : [],\n },\n },\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n },\n },\n ],\n });\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (innerIsOpen && closeOnEsc && event.keyCode === ESCAPE_KEYCODE) {\n onToggle?.(false, event);\n }\n },\n [closeOnEsc, innerIsOpen, onToggle],\n );\n\n const onDocumentClick = useCallback(\n (event: MouseEvent) => {\n if (innerIsOpen && closeOnOverlayClick && onToggle) {\n const targetIsRoot = event.target === rootRef.current;\n const rootHasTarget = rootRef.current?.contains(event.target as Element);\n const popoverRootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsRoot && !rootHasTarget && !popoverRootHasTarget) {\n onToggle(false, event);\n }\n }\n },\n [closeOnOverlayClick, innerIsOpen, onToggle],\n );\n\n const onClick = useCallback<React.MouseEventHandler>(\n (event) => {\n event.persist();\n if (trigger === 'click' || (trigger === 'hover' && isMobileDevice)) {\n const targetIsPopover = event.target === popoverRef.current;\n const rootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n onToggle?.(!innerIsOpen, event);\n }\n }\n },\n [trigger, innerIsOpen, onToggle],\n );\n\n const onMouseEnter = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onMouseLeave = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (isMobileDevice) {\n return;\n }\n\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onBlur = useCallback<React.FocusEventHandler>(\n (event) => {\n if (isMobileDevice) {\n return;\n }\n\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n useEffect(() => {\n document.addEventListener('click', onDocumentClick);\n return () => document.removeEventListener('click', onDocumentClick);\n }, [innerIsOpen, onToggle]);\n\n useEffect(() => {\n window.addEventListener('keydown', onEscape);\n return () => window.removeEventListener('keydown', onEscape);\n }, [closeOnEsc, innerIsOpen, onToggle]);\n\n useEffect(() => {\n let portal = document.getElementById(POPOVER_PORTAL_ID);\n\n if (typeof frame !== 'string' && frame && frame.current) {\n portal = frame.current;\n }\n\n if (typeof frame === 'string' && frame) {\n portal = document.getElementById(frame);\n }\n\n if (!usePortal && isValidElement(target)) {\n portal = rootRef.current;\n }\n\n if (!portal) {\n const portalId = `${POPOVER_PORTAL_ID}-${uuid}`;\n\n portal = document.createElement('div');\n portal.setAttribute('id', portalId);\n\n if (typeof frame === 'string' && frame !== 'document') {\n document.getElementById(frame)?.appendChild(portal);\n } else {\n document.body.appendChild(portal);\n }\n }\n\n portalRef.current = portal;\n\n /**\n * Изменение стейта нужно для того, чтобы Popup\n * отобразился после записи DOM элемента в portalRef.current\n */\n forceRender(true);\n }, []);\n\n useEffect(() => {\n if (!innerIsOpen || !forceUpdate) {\n return;\n }\n\n /*\n * INFO: Метод forceUpdate содержит в себе flushSync и приводит\n * к повторному рендеру компонента, который уже находится в процессе рендера.\n * Данный хак, нужен для того, чтобы это поведение избежать и перенаправить\n * вызов метода в очередь микрозадач.\n */\n Promise.resolve().then(forceUpdate);\n }, [innerIsOpen, children, forceUpdate]);\n\n const handleTransitionEnd = () => {\n if (!innerIsOpen) {\n setShouldRender(false);\n }\n };\n\n useEffect(() => {\n if (innerIsOpen) {\n setShouldRender(true);\n }\n }, [innerIsOpen]);\n\n return (\n <Portal container={portalContainer} disabled={isValidElement(target)}>\n <StyledWrapper\n className={cx(classes.wrapper, !isValidElement(target) && classes.targetAsRef)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={targetRef}\n >\n <StyledRoot\n ref={handleRef}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n className={cx(className, classes.target)}\n >\n {isValidElement(target) && target}\n </StyledRoot>\n {children && portalRef.current && (\n <Portal container={portalRef.current}>\n <Root view={view} className={className} {...rest}>\n <StyledPopover\n {...attributes.popper}\n onTransitionEnd={handleTransitionEnd}\n className={cx(classes.root, openClass, animatedClass)}\n ref={popoverForkRef}\n style={{\n ...styles.popper,\n display: shouldRender || innerIsOpen ? 'block' : 'none',\n }}\n zIndex={zIndex}\n >\n {hasArrow && (\n <StyledArrow\n className={classes.arrow}\n ref={setArrowElement}\n style={styles.arrow}\n {...attributes.arrow}\n />\n )}\n <Resizable\n resizable={resizable}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n >\n {children}\n </Resizable>\n </StyledPopover>\n </Root>\n </Portal>\n )}\n </StyledWrapper>\n </Portal>\n );\n },\n );\n\nexport const popoverConfig = {\n name: 'Popover',\n tag: 'div',\n layout: popoverRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["ESCAPE_KEYCODE","POPOVER_PORTAL_ID","popoverRoot","Root","forwardRef","_ref","outerRootRef","_placement$","target","children","animated","isOpen","opened","_ref$trigger","trigger","hasArrow","_ref$frame","frame","className","_ref$placement","placement","_ref$offset","offset","zIndex","_ref$isFocusTrapped","isFocusTrapped","_ref$closeOnEsc","closeOnEsc","_ref$preventOverflow","preventOverflow","_ref$usePortal","usePortal","resizable","view","onToggle","onResizeStart","onResizeEnd","closeOnOverlayClick","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","rootRef","useRef","popoverRef","handleRef","useForkRef","portalRef","targetRef","trapRef","useFocusTrap","uuid","safeUseId","popoverForkRef","_useState","useState","_useState2","_slicedToArray","arrowElement","setArrowElement","_useState3","_useState4","forceRender","_useState5","_useState6","shouldRender","setShouldRender","portalContainer","_typeof","current","undefined","isAutoArray","Array","isArray","isAuto","startsWith","openClass","classes","open","animatedClass","animate","isMobileDevice","window","matchMedia","matches","offsetInner","usePopoverOffset","offsetOuter","_usePopper","usePopper","endsWith","modifiers","name","options","mainAxis","enabled","allowedAutoPlacements","element","styles","attributes","forceUpdate","onEscape","useCallback","event","keyCode","onDocumentClick","_rootRef$current","_popoverRef$current","targetIsRoot","rootHasTarget","contains","popoverRootHasTarget","onClick","persist","_popoverRef$current2","targetIsPopover","onMouseEnter","onMouseLeave","onFocus","onBlur","useEffect","document","addEventListener","removeEventListener","portal","getElementById","isValidElement","portalId","concat","createElement","setAttribute","_document$getElementB","appendChild","body","Promise","resolve","then","handleTransitionEnd","React","Portal","container","disabled","StyledWrapper","cx","wrapper","targetAsRef","ref","StyledRoot","_extends","StyledPopover","popper","onTransitionEnd","root","style","_objectSpread","display","StyledArrow","arrow","Resizable","popoverConfig","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var ReactDraggable = require('react-draggable');
7
7
  var Popup_tokens = require('../../Popup.tokens.js');
8
+ var react = require('../../../../utils/react.js');
8
9
 
9
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
11
 
@@ -15,16 +16,20 @@ var Draggable = function Draggable(_ref) {
15
16
  var children = _ref.children,
16
17
  draggable = _ref.draggable;
17
18
  var nodeRef = React.useRef(null);
19
+ var id = react.safeUseId();
20
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
18
21
  if (!draggable) {
19
22
  return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, children);
20
23
  }
21
24
  return /*#__PURE__*/React__default.default.createElement(ReactDraggable__default.default, {
22
25
  nodeRef: nodeRef,
26
+ handle: ".".concat(handleClass),
23
27
  defaultClassName: draggable ? Popup_tokens.classes.draggablePopupWrapper : undefined,
24
28
  defaultClassNameDragging: draggable ? Popup_tokens.classes.draggingPopupWrapper : undefined,
25
29
  disabled: !draggable,
26
30
  cancel: ".".concat(Popup_tokens.classes.resizableHandleWrapper)
27
31
  }, /*#__PURE__*/React__default.default.createElement("div", {
32
+ className: handleClass,
28
33
  ref: nodeRef
29
34
  }, children));
30
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Draggable.js","sources":["../../../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"sourcesContent":["import React, { useRef, FC, PropsWithChildren } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { classes } from 'src/components/Popup/Popup.tokens';\n\nimport { PopupProps } from '../../Popup.types';\n\nexport const Draggable: FC<PropsWithChildren<{ draggable: PopupProps['draggable'] }>> = ({ children, draggable }) => {\n const nodeRef = useRef(null);\n\n if (!draggable) {\n return <>{children}</>;\n }\n\n return (\n <ReactDraggable\n nodeRef={nodeRef}\n defaultClassName={draggable ? classes.draggablePopupWrapper : undefined}\n defaultClassNameDragging={draggable ? classes.draggingPopupWrapper : undefined}\n disabled={!draggable}\n cancel={`.${classes.resizableHandleWrapper}`}\n >\n <div ref={nodeRef}>{children}</div>\n </ReactDraggable>\n );\n};\n"],"names":["Draggable","_ref","children","draggable","nodeRef","useRef","React","createElement","Fragment","ReactDraggable","defaultClassName","classes","draggablePopupWrapper","undefined","defaultClassNameDragging","draggingPopupWrapper","disabled","cancel","concat","resizableHandleWrapper","ref"],"mappings":";;;;;;;;;;;;;IAMaA,SAAwE,GAAG,SAA3EA,SAAwEA,CAAAC,IAAA,EAAgC;AAAA,EAAA,IAA1BC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAA;AAC1G,EAAA,IAAMC,OAAO,GAAGC,YAAM,CAAC,IAAI,CAAC,CAAA;EAE5B,IAAI,CAACF,SAAS,EAAE;IACZ,oBAAOG,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAE,QAAA,EAAGN,IAAAA,EAAAA,QAAW,CAAC,CAAA;AAC1B,GAAA;AAEA,EAAA,oBACII,sBAAA,CAAAC,aAAA,CAACE,+BAAc,EAAA;AACXL,IAAAA,OAAO,EAAEA,OAAQ;AACjBM,IAAAA,gBAAgB,EAAEP,SAAS,GAAGQ,oBAAO,CAACC,qBAAqB,GAAGC,SAAU;AACxEC,IAAAA,wBAAwB,EAAEX,SAAS,GAAGQ,oBAAO,CAACI,oBAAoB,GAAGF,SAAU;IAC/EG,QAAQ,EAAE,CAACb,SAAU;AACrBc,IAAAA,MAAM,EAAAC,GAAAA,CAAAA,MAAA,CAAMP,oBAAO,CAACQ,sBAAsB,CAAA;GAE1Cb,eAAAA,sBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKa,IAAAA,GAAG,EAAEhB,OAAAA;GAAUF,EAAAA,QAAc,CACtB,CAAC,CAAA;AAEzB;;;;"}
1
+ {"version":3,"file":"Draggable.js","sources":["../../../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"sourcesContent":["import React, { useRef, FC, PropsWithChildren } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { classes } from 'src/components/Popup/Popup.tokens';\nimport { safeUseId } from 'src/utils';\n\nimport { PopupProps } from '../../Popup.types';\n\nexport const Draggable: FC<PropsWithChildren<{ draggable: PopupProps['draggable'] }>> = ({ children, draggable }) => {\n const nodeRef = useRef(null);\n\n const id = safeUseId();\n const handleClass = `draggable-handle-${id.replace(/:/g, '-')}`;\n\n if (!draggable) {\n return <>{children}</>;\n }\n\n return (\n <ReactDraggable\n nodeRef={nodeRef}\n handle={`.${handleClass}`}\n defaultClassName={draggable ? classes.draggablePopupWrapper : undefined}\n defaultClassNameDragging={draggable ? classes.draggingPopupWrapper : undefined}\n disabled={!draggable}\n cancel={`.${classes.resizableHandleWrapper}`}\n >\n <div className={handleClass} ref={nodeRef}>\n {children}\n </div>\n </ReactDraggable>\n );\n};\n"],"names":["Draggable","_ref","children","draggable","nodeRef","useRef","id","safeUseId","handleClass","concat","replace","React","createElement","Fragment","ReactDraggable","handle","defaultClassName","classes","draggablePopupWrapper","undefined","defaultClassNameDragging","draggingPopupWrapper","disabled","cancel","resizableHandleWrapper","className","ref"],"mappings":";;;;;;;;;;;;;;IAOaA,SAAwE,GAAG,SAA3EA,SAAwEA,CAAAC,IAAA,EAAgC;AAAA,EAAA,IAA1BC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAA;AAC1G,EAAA,IAAMC,OAAO,GAAGC,YAAM,CAAC,IAAI,CAAC,CAAA;AAE5B,EAAA,IAAMC,EAAE,GAAGC,eAAS,EAAE,CAAA;AACtB,EAAA,IAAMC,WAAW,GAAA,mBAAA,CAAAC,MAAA,CAAuBH,EAAE,CAACI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAE,CAAA;EAE/D,IAAI,CAACP,SAAS,EAAE;IACZ,oBAAOQ,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAE,QAAA,EAAGX,IAAAA,EAAAA,QAAW,CAAC,CAAA;AAC1B,GAAA;AAEA,EAAA,oBACIS,sBAAA,CAAAC,aAAA,CAACE,+BAAc,EAAA;AACXV,IAAAA,OAAO,EAAEA,OAAQ;AACjBW,IAAAA,MAAM,EAAAN,GAAAA,CAAAA,MAAA,CAAMD,WAAW,CAAG;AAC1BQ,IAAAA,gBAAgB,EAAEb,SAAS,GAAGc,oBAAO,CAACC,qBAAqB,GAAGC,SAAU;AACxEC,IAAAA,wBAAwB,EAAEjB,SAAS,GAAGc,oBAAO,CAACI,oBAAoB,GAAGF,SAAU;IAC/EG,QAAQ,EAAE,CAACnB,SAAU;AACrBoB,IAAAA,MAAM,EAAAd,GAAAA,CAAAA,MAAA,CAAMQ,oBAAO,CAACO,sBAAsB,CAAA;GAE1Cb,eAAAA,sBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKa,IAAAA,SAAS,EAAEjB,WAAY;AAACkB,IAAAA,GAAG,EAAEtB,OAAAA;GAC7BF,EAAAA,QACA,CACO,CAAC,CAAA;AAEzB;;;;"}
@@ -15,8 +15,10 @@ var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
15
15
  var _ref = React__default.default,
16
16
  useId = _ref.useId;
17
17
  var IS_REACT_18 = ReactDOM__default.default.version.split('.')[0] === '18';
18
- var safeUseId = !IS_REACT_18 ? useUniqId.useUniqId : useId;
18
+ var IS_REACT_BELOW_18 = /*#__PURE__*/Number(ReactDOM__default.default.version.split('.')[0]) < 18;
19
+ var safeUseId = IS_REACT_BELOW_18 ? useUniqId.useUniqId : useId;
19
20
 
20
21
  exports.IS_REACT_18 = IS_REACT_18;
22
+ exports.IS_REACT_BELOW_18 = IS_REACT_BELOW_18;
21
23
  exports.safeUseId = safeUseId;
22
24
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../../../../src/utils/react.ts"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\n// NOTE: для next.js важно, чтобы путь до хука был полный, т.к. есть проблемы с ре-экспортом\nimport { useUniqId } from '../hooks/useUniqId';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst { useId } = React as any;\n\nexport const IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';\n\nexport const safeUseId: () => string = !IS_REACT_18 ? useUniqId : useId;\n"],"names":["_ref","React","useId","IS_REACT_18","ReactDOM","version","split","safeUseId","useUniqId"],"mappings":";;;;;;;;;;;;;AAMA;AACA,IAAAA,IAAA,GAAkBC,sBAAK;EAAfC,KAAK,GAAAF,IAAA,CAALE,KAAK,CAAA;IAEAC,WAAW,GAAGC,yBAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAI;AAE3D,IAAMC,SAAuB,GAAG,CAACJ,WAAW,GAAGK,mBAAS,GAAGN;;;;;"}
1
+ {"version":3,"file":"react.js","sources":["../../../../src/utils/react.ts"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\n// NOTE: для next.js важно, чтобы путь до хука был полный, т.к. есть проблемы с ре-экспортом\nimport { useUniqId } from '../hooks/useUniqId';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst { useId } = React as any;\n\nexport const IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';\nexport const IS_REACT_BELOW_18 = Number(ReactDOM.version.split('.')[0]) < 18;\n\nexport const safeUseId: () => string = IS_REACT_BELOW_18 ? useUniqId : useId;\n"],"names":["_ref","React","useId","IS_REACT_18","ReactDOM","version","split","IS_REACT_BELOW_18","Number","safeUseId","useUniqId"],"mappings":";;;;;;;;;;;;;AAMA;AACA,IAAAA,IAAA,GAAkBC,sBAAK;EAAfC,KAAK,GAAAF,IAAA,CAALE,KAAK,CAAA;IAEAC,WAAW,GAAGC,yBAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAI;AAC3D,IAAMC,iBAAiB,gBAAGC,MAAM,CAACJ,yBAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAE;IAE/DG,SAAuB,GAAGF,iBAAiB,GAAGG,mBAAS,GAAGR;;;;;;"}
@@ -79,6 +79,7 @@ var popoverRoot = function popoverRoot(Root) {
79
79
  var isAuto = isAutoArray || placement.startsWith('auto');
80
80
  var openClass = innerIsOpen && shouldRender ? classes.open : undefined;
81
81
  var animatedClass = animated ? classes.animate : undefined;
82
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
82
83
  var offsetInner = usePopoverOffset({
83
84
  handleRef: targetRef,
84
85
  placement: placement,
@@ -132,7 +133,7 @@ var popoverRoot = function popoverRoot(Root) {
132
133
  }, [closeOnOverlayClick, innerIsOpen, onToggle]);
133
134
  var onClick = useCallback(function (event) {
134
135
  event.persist();
135
- if (trigger === 'click') {
136
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
136
137
  var _popoverRef$current2;
137
138
  var targetIsPopover = event.target === popoverRef.current;
138
139
  var rootHasTarget = (_popoverRef$current2 = popoverRef.current) === null || _popoverRef$current2 === void 0 ? void 0 : _popoverRef$current2.contains(event.target);
@@ -152,11 +153,17 @@ var popoverRoot = function popoverRoot(Root) {
152
153
  }
153
154
  }, [trigger, onToggle]);
154
155
  var onFocus = useCallback(function (event) {
156
+ if (isMobileDevice) {
157
+ return;
158
+ }
155
159
  if (trigger === 'hover') {
156
160
  onToggle === null || onToggle === void 0 || onToggle(true, event);
157
161
  }
158
162
  }, [trigger, onToggle]);
159
163
  var onBlur = useCallback(function (event) {
164
+ if (isMobileDevice) {
165
+ return;
166
+ }
160
167
  if (trigger === 'hover') {
161
168
  onToggle === null || onToggle === void 0 || onToggle(false, event);
162
169
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React, { useRef, useCallback, useEffect, useState, forwardRef, isValidElement } from 'react';\nimport { usePopper } from 'react-popper';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../engines/types';\nimport { useFocusTrap } from '../../hooks';\nimport { cx, safeUseId } from '../../utils';\nimport { Portal } from '../Portal';\nimport { Resizable } from '../_Resizable';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport type { PopoverPlacement, PopoverProps } from './Popover.types';\nimport { StyledArrow, StyledPopover, StyledRoot, StyledWrapper } from './Popover.styles';\nimport { classes } from './Popover.tokens';\nimport { usePopoverOffset } from './hooks/usePopoverOffset';\n\nexport const ESCAPE_KEYCODE = 27;\nexport const POPOVER_PORTAL_ID = 'plasma-popover-root';\n\n/**\n * Всплывающее окно с возможностью позиционирования\n * и вызова по клику либо ховеру.\n */\nexport const popoverRoot = (Root: RootProps<HTMLDivElement, PopoverProps>) =>\n forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n target,\n children,\n animated,\n isOpen,\n opened,\n trigger = 'click',\n hasArrow,\n frame = 'document',\n className,\n placement = 'auto',\n offset = [0, 0],\n zIndex,\n isFocusTrapped = true,\n closeOnEsc = true,\n preventOverflow = true,\n usePortal = false,\n resizable,\n view,\n onToggle,\n onResizeStart,\n onResizeEnd,\n closeOnOverlayClick,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popoverRef = useRef<HTMLDivElement | null>(null);\n const handleRef = useForkRef<HTMLDivElement>(rootRef, outerRootRef);\n const portalRef = useRef<HTMLElement | null>(null);\n const targetRef = useRef<HTMLDivElement | null>(null);\n\n const trapRef = useFocusTrap(innerIsOpen && isFocusTrapped);\n const uuid = safeUseId();\n\n const popoverForkRef = useForkRef<HTMLDivElement>(popoverRef, trapRef);\n\n const [arrowElement, setArrowElement] = useState<HTMLSpanElement | null>(null);\n\n const [, forceRender] = useState(false);\n const [shouldRender, setShouldRender] = useState(innerIsOpen);\n\n const portalContainer =\n (typeof target === 'object' && target !== null && 'current' in target && target.current) || undefined;\n\n const isAutoArray = Array.isArray(placement);\n const isAuto = isAutoArray || (placement as PopoverPlacement).startsWith('auto');\n\n const openClass = innerIsOpen && shouldRender ? classes.open : undefined;\n const animatedClass = animated ? classes.animate : undefined;\n\n const offsetInner = usePopoverOffset({\n handleRef: targetRef,\n placement: placement as string,\n offsetOuter: offset,\n });\n\n const { styles, attributes, forceUpdate } = usePopper(rootRef.current, popoverRef.current, {\n // TODO: #1121\n // eslint-disable-next-line no-nested-ternary\n placement: isAutoArray\n ? placement[0]?.endsWith('start')\n ? 'auto-start'\n : 'auto'\n : (placement as PopoverPlacement),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n mainAxis: preventOverflow,\n },\n },\n { name: 'offset', options: { offset: [offsetInner[0], offsetInner[1]] } },\n {\n name: 'flip',\n enabled: isAuto,\n options: {\n allowedAutoPlacements: isAutoArray ? (placement as PopoverPlacement[]) : [],\n },\n },\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n },\n },\n ],\n });\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (innerIsOpen && closeOnEsc && event.keyCode === ESCAPE_KEYCODE) {\n onToggle?.(false, event);\n }\n },\n [closeOnEsc, innerIsOpen, onToggle],\n );\n\n const onDocumentClick = useCallback(\n (event: MouseEvent) => {\n if (innerIsOpen && closeOnOverlayClick && onToggle) {\n const targetIsRoot = event.target === rootRef.current;\n const rootHasTarget = rootRef.current?.contains(event.target as Element);\n const popoverRootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsRoot && !rootHasTarget && !popoverRootHasTarget) {\n onToggle(false, event);\n }\n }\n },\n [closeOnOverlayClick, innerIsOpen, onToggle],\n );\n\n const onClick = useCallback<React.MouseEventHandler>(\n (event) => {\n event.persist();\n if (trigger === 'click') {\n const targetIsPopover = event.target === popoverRef.current;\n const rootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n onToggle?.(!innerIsOpen, event);\n }\n }\n },\n [trigger, innerIsOpen, onToggle],\n );\n\n const onMouseEnter = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onMouseLeave = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onBlur = useCallback<React.FocusEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n useEffect(() => {\n document.addEventListener('click', onDocumentClick);\n return () => document.removeEventListener('click', onDocumentClick);\n }, [innerIsOpen, onToggle]);\n\n useEffect(() => {\n window.addEventListener('keydown', onEscape);\n return () => window.removeEventListener('keydown', onEscape);\n }, [closeOnEsc, innerIsOpen, onToggle]);\n\n useEffect(() => {\n let portal = document.getElementById(POPOVER_PORTAL_ID);\n\n if (typeof frame !== 'string' && frame && frame.current) {\n portal = frame.current;\n }\n\n if (typeof frame === 'string' && frame) {\n portal = document.getElementById(frame);\n }\n\n if (!usePortal && isValidElement(target)) {\n portal = rootRef.current;\n }\n\n if (!portal) {\n const portalId = `${POPOVER_PORTAL_ID}-${uuid}`;\n\n portal = document.createElement('div');\n portal.setAttribute('id', portalId);\n\n if (typeof frame === 'string' && frame !== 'document') {\n document.getElementById(frame)?.appendChild(portal);\n } else {\n document.body.appendChild(portal);\n }\n }\n\n portalRef.current = portal;\n\n /**\n * Изменение стейта нужно для того, чтобы Popup\n * отобразился после записи DOM элемента в portalRef.current\n */\n forceRender(true);\n }, []);\n\n useEffect(() => {\n if (!innerIsOpen || !forceUpdate) {\n return;\n }\n\n /*\n * INFO: Метод forceUpdate содержит в себе flushSync и приводит\n * к повторному рендеру компонента, который уже находится в процессе рендера.\n * Данный хак, нужен для того, чтобы это поведение избежать и перенаправить\n * вызов метода в очередь микрозадач.\n */\n Promise.resolve().then(forceUpdate);\n }, [innerIsOpen, children, forceUpdate]);\n\n const handleTransitionEnd = () => {\n if (!innerIsOpen) {\n setShouldRender(false);\n }\n };\n\n useEffect(() => {\n if (innerIsOpen) {\n setShouldRender(true);\n }\n }, [innerIsOpen]);\n\n return (\n <Portal container={portalContainer} disabled={isValidElement(target)}>\n <StyledWrapper\n className={cx(classes.wrapper, !isValidElement(target) && classes.targetAsRef)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={targetRef}\n >\n <StyledRoot\n ref={handleRef}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n className={cx(className, classes.target)}\n >\n {isValidElement(target) && target}\n </StyledRoot>\n {children && portalRef.current && (\n <Portal container={portalRef.current}>\n <Root view={view} className={className} {...rest}>\n <StyledPopover\n {...attributes.popper}\n onTransitionEnd={handleTransitionEnd}\n className={cx(classes.root, openClass, animatedClass)}\n ref={popoverForkRef}\n style={{\n ...styles.popper,\n display: shouldRender || innerIsOpen ? 'block' : 'none',\n }}\n zIndex={zIndex}\n >\n {hasArrow && (\n <StyledArrow\n className={classes.arrow}\n ref={setArrowElement}\n style={styles.arrow}\n {...attributes.arrow}\n />\n )}\n <Resizable\n resizable={resizable}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n >\n {children}\n </Resizable>\n </StyledPopover>\n </Root>\n </Portal>\n )}\n </StyledWrapper>\n </Portal>\n );\n },\n );\n\nexport const popoverConfig = {\n name: 'Popover',\n tag: 'div',\n layout: popoverRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["ESCAPE_KEYCODE","POPOVER_PORTAL_ID","popoverRoot","Root","forwardRef","_ref","outerRootRef","_placement$","target","children","animated","isOpen","opened","_ref$trigger","trigger","hasArrow","_ref$frame","frame","className","_ref$placement","placement","_ref$offset","offset","zIndex","_ref$isFocusTrapped","isFocusTrapped","_ref$closeOnEsc","closeOnEsc","_ref$preventOverflow","preventOverflow","_ref$usePortal","usePortal","resizable","view","onToggle","onResizeStart","onResizeEnd","closeOnOverlayClick","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","rootRef","useRef","popoverRef","handleRef","useForkRef","portalRef","targetRef","trapRef","useFocusTrap","uuid","safeUseId","popoverForkRef","_useState","useState","_useState2","_slicedToArray","arrowElement","setArrowElement","_useState3","_useState4","forceRender","_useState5","_useState6","shouldRender","setShouldRender","portalContainer","_typeof","current","undefined","isAutoArray","Array","isArray","isAuto","startsWith","openClass","classes","open","animatedClass","animate","offsetInner","usePopoverOffset","offsetOuter","_usePopper","usePopper","endsWith","modifiers","name","options","mainAxis","enabled","allowedAutoPlacements","element","styles","attributes","forceUpdate","onEscape","useCallback","event","keyCode","onDocumentClick","_rootRef$current","_popoverRef$current","targetIsRoot","rootHasTarget","contains","popoverRootHasTarget","onClick","persist","_popoverRef$current2","targetIsPopover","onMouseEnter","onMouseLeave","onFocus","onBlur","useEffect","document","addEventListener","removeEventListener","window","portal","getElementById","isValidElement","portalId","concat","createElement","setAttribute","_document$getElementB","appendChild","body","Promise","resolve","then","handleTransitionEnd","React","Portal","container","disabled","StyledWrapper","cx","wrapper","targetAsRef","ref","StyledRoot","_extends","StyledPopover","popper","onTransitionEnd","root","style","_objectSpread","display","StyledArrow","arrow","Resizable","popoverConfig","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import React, { useRef, useCallback, useEffect, useState, forwardRef, isValidElement } from 'react';\nimport { usePopper } from 'react-popper';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../engines/types';\nimport { useFocusTrap } from '../../hooks';\nimport { cx, safeUseId } from '../../utils';\nimport { Portal } from '../Portal';\nimport { Resizable } from '../_Resizable';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport type { PopoverPlacement, PopoverProps } from './Popover.types';\nimport { StyledArrow, StyledPopover, StyledRoot, StyledWrapper } from './Popover.styles';\nimport { classes } from './Popover.tokens';\nimport { usePopoverOffset } from './hooks/usePopoverOffset';\n\nexport const ESCAPE_KEYCODE = 27;\nexport const POPOVER_PORTAL_ID = 'plasma-popover-root';\n\n/**\n * Всплывающее окно с возможностью позиционирования\n * и вызова по клику либо ховеру.\n */\nexport const popoverRoot = (Root: RootProps<HTMLDivElement, PopoverProps>) =>\n forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n target,\n children,\n animated,\n isOpen,\n opened,\n trigger = 'click',\n hasArrow,\n frame = 'document',\n className,\n placement = 'auto',\n offset = [0, 0],\n zIndex,\n isFocusTrapped = true,\n closeOnEsc = true,\n preventOverflow = true,\n usePortal = false,\n resizable,\n view,\n onToggle,\n onResizeStart,\n onResizeEnd,\n closeOnOverlayClick,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popoverRef = useRef<HTMLDivElement | null>(null);\n const handleRef = useForkRef<HTMLDivElement>(rootRef, outerRootRef);\n const portalRef = useRef<HTMLElement | null>(null);\n const targetRef = useRef<HTMLDivElement | null>(null);\n\n const trapRef = useFocusTrap(innerIsOpen && isFocusTrapped);\n const uuid = safeUseId();\n\n const popoverForkRef = useForkRef<HTMLDivElement>(popoverRef, trapRef);\n\n const [arrowElement, setArrowElement] = useState<HTMLSpanElement | null>(null);\n\n const [, forceRender] = useState(false);\n const [shouldRender, setShouldRender] = useState(innerIsOpen);\n\n const portalContainer =\n (typeof target === 'object' && target !== null && 'current' in target && target.current) || undefined;\n\n const isAutoArray = Array.isArray(placement);\n const isAuto = isAutoArray || (placement as PopoverPlacement).startsWith('auto');\n\n const openClass = innerIsOpen && shouldRender ? classes.open : undefined;\n const animatedClass = animated ? classes.animate : undefined;\n\n const isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;\n\n const offsetInner = usePopoverOffset({\n handleRef: targetRef,\n placement: placement as string,\n offsetOuter: offset,\n });\n\n const { styles, attributes, forceUpdate } = usePopper(rootRef.current, popoverRef.current, {\n // TODO: #1121\n // eslint-disable-next-line no-nested-ternary\n placement: isAutoArray\n ? placement[0]?.endsWith('start')\n ? 'auto-start'\n : 'auto'\n : (placement as PopoverPlacement),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n mainAxis: preventOverflow,\n },\n },\n { name: 'offset', options: { offset: [offsetInner[0], offsetInner[1]] } },\n {\n name: 'flip',\n enabled: isAuto,\n options: {\n allowedAutoPlacements: isAutoArray ? (placement as PopoverPlacement[]) : [],\n },\n },\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n },\n },\n ],\n });\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (innerIsOpen && closeOnEsc && event.keyCode === ESCAPE_KEYCODE) {\n onToggle?.(false, event);\n }\n },\n [closeOnEsc, innerIsOpen, onToggle],\n );\n\n const onDocumentClick = useCallback(\n (event: MouseEvent) => {\n if (innerIsOpen && closeOnOverlayClick && onToggle) {\n const targetIsRoot = event.target === rootRef.current;\n const rootHasTarget = rootRef.current?.contains(event.target as Element);\n const popoverRootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsRoot && !rootHasTarget && !popoverRootHasTarget) {\n onToggle(false, event);\n }\n }\n },\n [closeOnOverlayClick, innerIsOpen, onToggle],\n );\n\n const onClick = useCallback<React.MouseEventHandler>(\n (event) => {\n event.persist();\n if (trigger === 'click' || (trigger === 'hover' && isMobileDevice)) {\n const targetIsPopover = event.target === popoverRef.current;\n const rootHasTarget = popoverRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n onToggle?.(!innerIsOpen, event);\n }\n }\n },\n [trigger, innerIsOpen, onToggle],\n );\n\n const onMouseEnter = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onMouseLeave = useCallback<React.MouseEventHandler>(\n (event) => {\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (isMobileDevice) {\n return;\n }\n\n if (trigger === 'hover') {\n onToggle?.(true, event);\n }\n },\n [trigger, onToggle],\n );\n\n const onBlur = useCallback<React.FocusEventHandler>(\n (event) => {\n if (isMobileDevice) {\n return;\n }\n\n if (trigger === 'hover') {\n onToggle?.(false, event);\n }\n },\n [trigger, onToggle],\n );\n\n useEffect(() => {\n document.addEventListener('click', onDocumentClick);\n return () => document.removeEventListener('click', onDocumentClick);\n }, [innerIsOpen, onToggle]);\n\n useEffect(() => {\n window.addEventListener('keydown', onEscape);\n return () => window.removeEventListener('keydown', onEscape);\n }, [closeOnEsc, innerIsOpen, onToggle]);\n\n useEffect(() => {\n let portal = document.getElementById(POPOVER_PORTAL_ID);\n\n if (typeof frame !== 'string' && frame && frame.current) {\n portal = frame.current;\n }\n\n if (typeof frame === 'string' && frame) {\n portal = document.getElementById(frame);\n }\n\n if (!usePortal && isValidElement(target)) {\n portal = rootRef.current;\n }\n\n if (!portal) {\n const portalId = `${POPOVER_PORTAL_ID}-${uuid}`;\n\n portal = document.createElement('div');\n portal.setAttribute('id', portalId);\n\n if (typeof frame === 'string' && frame !== 'document') {\n document.getElementById(frame)?.appendChild(portal);\n } else {\n document.body.appendChild(portal);\n }\n }\n\n portalRef.current = portal;\n\n /**\n * Изменение стейта нужно для того, чтобы Popup\n * отобразился после записи DOM элемента в portalRef.current\n */\n forceRender(true);\n }, []);\n\n useEffect(() => {\n if (!innerIsOpen || !forceUpdate) {\n return;\n }\n\n /*\n * INFO: Метод forceUpdate содержит в себе flushSync и приводит\n * к повторному рендеру компонента, который уже находится в процессе рендера.\n * Данный хак, нужен для того, чтобы это поведение избежать и перенаправить\n * вызов метода в очередь микрозадач.\n */\n Promise.resolve().then(forceUpdate);\n }, [innerIsOpen, children, forceUpdate]);\n\n const handleTransitionEnd = () => {\n if (!innerIsOpen) {\n setShouldRender(false);\n }\n };\n\n useEffect(() => {\n if (innerIsOpen) {\n setShouldRender(true);\n }\n }, [innerIsOpen]);\n\n return (\n <Portal container={portalContainer} disabled={isValidElement(target)}>\n <StyledWrapper\n className={cx(classes.wrapper, !isValidElement(target) && classes.targetAsRef)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={targetRef}\n >\n <StyledRoot\n ref={handleRef}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n className={cx(className, classes.target)}\n >\n {isValidElement(target) && target}\n </StyledRoot>\n {children && portalRef.current && (\n <Portal container={portalRef.current}>\n <Root view={view} className={className} {...rest}>\n <StyledPopover\n {...attributes.popper}\n onTransitionEnd={handleTransitionEnd}\n className={cx(classes.root, openClass, animatedClass)}\n ref={popoverForkRef}\n style={{\n ...styles.popper,\n display: shouldRender || innerIsOpen ? 'block' : 'none',\n }}\n zIndex={zIndex}\n >\n {hasArrow && (\n <StyledArrow\n className={classes.arrow}\n ref={setArrowElement}\n style={styles.arrow}\n {...attributes.arrow}\n />\n )}\n <Resizable\n resizable={resizable}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n >\n {children}\n </Resizable>\n </StyledPopover>\n </Root>\n </Portal>\n )}\n </StyledWrapper>\n </Portal>\n );\n },\n );\n\nexport const popoverConfig = {\n name: 'Popover',\n tag: 'div',\n layout: popoverRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["ESCAPE_KEYCODE","POPOVER_PORTAL_ID","popoverRoot","Root","forwardRef","_ref","outerRootRef","_placement$","target","children","animated","isOpen","opened","_ref$trigger","trigger","hasArrow","_ref$frame","frame","className","_ref$placement","placement","_ref$offset","offset","zIndex","_ref$isFocusTrapped","isFocusTrapped","_ref$closeOnEsc","closeOnEsc","_ref$preventOverflow","preventOverflow","_ref$usePortal","usePortal","resizable","view","onToggle","onResizeStart","onResizeEnd","closeOnOverlayClick","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","rootRef","useRef","popoverRef","handleRef","useForkRef","portalRef","targetRef","trapRef","useFocusTrap","uuid","safeUseId","popoverForkRef","_useState","useState","_useState2","_slicedToArray","arrowElement","setArrowElement","_useState3","_useState4","forceRender","_useState5","_useState6","shouldRender","setShouldRender","portalContainer","_typeof","current","undefined","isAutoArray","Array","isArray","isAuto","startsWith","openClass","classes","open","animatedClass","animate","isMobileDevice","window","matchMedia","matches","offsetInner","usePopoverOffset","offsetOuter","_usePopper","usePopper","endsWith","modifiers","name","options","mainAxis","enabled","allowedAutoPlacements","element","styles","attributes","forceUpdate","onEscape","useCallback","event","keyCode","onDocumentClick","_rootRef$current","_popoverRef$current","targetIsRoot","rootHasTarget","contains","popoverRootHasTarget","onClick","persist","_popoverRef$current2","targetIsPopover","onMouseEnter","onMouseLeave","onFocus","onBlur","useEffect","document","addEventListener","removeEventListener","portal","getElementById","isValidElement","portalId","concat","createElement","setAttribute","_document$getElementB","appendChild","body","Promise","resolve","then","handleTransitionEnd","React","Portal","container","disabled","StyledWrapper","cx","wrapper","targetAsRef","ref","StyledRoot","_extends","StyledPopover","popper","onTransitionEnd","root","style","_objectSpread","display","StyledArrow","arrow","Resizable","popoverConfig","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
@@ -1,21 +1,26 @@
1
1
  import React__default, { useRef } from 'react';
2
2
  import ReactDraggable from 'react-draggable';
3
3
  import { classes } from '../../Popup.tokens.js';
4
+ import { safeUseId } from '../../../../utils/react.js';
4
5
 
5
6
  var Draggable = function Draggable(_ref) {
6
7
  var children = _ref.children,
7
8
  draggable = _ref.draggable;
8
9
  var nodeRef = useRef(null);
10
+ var id = safeUseId();
11
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
9
12
  if (!draggable) {
10
13
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, children);
11
14
  }
12
15
  return /*#__PURE__*/React__default.createElement(ReactDraggable, {
13
16
  nodeRef: nodeRef,
17
+ handle: ".".concat(handleClass),
14
18
  defaultClassName: draggable ? classes.draggablePopupWrapper : undefined,
15
19
  defaultClassNameDragging: draggable ? classes.draggingPopupWrapper : undefined,
16
20
  disabled: !draggable,
17
21
  cancel: ".".concat(classes.resizableHandleWrapper)
18
22
  }, /*#__PURE__*/React__default.createElement("div", {
23
+ className: handleClass,
19
24
  ref: nodeRef
20
25
  }, children));
21
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Draggable.js","sources":["../../../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"sourcesContent":["import React, { useRef, FC, PropsWithChildren } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { classes } from 'src/components/Popup/Popup.tokens';\n\nimport { PopupProps } from '../../Popup.types';\n\nexport const Draggable: FC<PropsWithChildren<{ draggable: PopupProps['draggable'] }>> = ({ children, draggable }) => {\n const nodeRef = useRef(null);\n\n if (!draggable) {\n return <>{children}</>;\n }\n\n return (\n <ReactDraggable\n nodeRef={nodeRef}\n defaultClassName={draggable ? classes.draggablePopupWrapper : undefined}\n defaultClassNameDragging={draggable ? classes.draggingPopupWrapper : undefined}\n disabled={!draggable}\n cancel={`.${classes.resizableHandleWrapper}`}\n >\n <div ref={nodeRef}>{children}</div>\n </ReactDraggable>\n );\n};\n"],"names":["Draggable","_ref","children","draggable","nodeRef","useRef","React","createElement","Fragment","ReactDraggable","defaultClassName","classes","draggablePopupWrapper","undefined","defaultClassNameDragging","draggingPopupWrapper","disabled","cancel","concat","resizableHandleWrapper","ref"],"mappings":";;;;IAMaA,SAAwE,GAAG,SAA3EA,SAAwEA,CAAAC,IAAA,EAAgC;AAAA,EAAA,IAA1BC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAA;AAC1G,EAAA,IAAMC,OAAO,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;EAE5B,IAAI,CAACF,SAAS,EAAE;IACZ,oBAAOG,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAGN,IAAAA,EAAAA,QAAW,CAAC,CAAA;AAC1B,GAAA;AAEA,EAAA,oBACII,cAAA,CAAAC,aAAA,CAACE,cAAc,EAAA;AACXL,IAAAA,OAAO,EAAEA,OAAQ;AACjBM,IAAAA,gBAAgB,EAAEP,SAAS,GAAGQ,OAAO,CAACC,qBAAqB,GAAGC,SAAU;AACxEC,IAAAA,wBAAwB,EAAEX,SAAS,GAAGQ,OAAO,CAACI,oBAAoB,GAAGF,SAAU;IAC/EG,QAAQ,EAAE,CAACb,SAAU;AACrBc,IAAAA,MAAM,EAAAC,GAAAA,CAAAA,MAAA,CAAMP,OAAO,CAACQ,sBAAsB,CAAA;GAE1Cb,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKa,IAAAA,GAAG,EAAEhB,OAAAA;GAAUF,EAAAA,QAAc,CACtB,CAAC,CAAA;AAEzB;;;;"}
1
+ {"version":3,"file":"Draggable.js","sources":["../../../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"sourcesContent":["import React, { useRef, FC, PropsWithChildren } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { classes } from 'src/components/Popup/Popup.tokens';\nimport { safeUseId } from 'src/utils';\n\nimport { PopupProps } from '../../Popup.types';\n\nexport const Draggable: FC<PropsWithChildren<{ draggable: PopupProps['draggable'] }>> = ({ children, draggable }) => {\n const nodeRef = useRef(null);\n\n const id = safeUseId();\n const handleClass = `draggable-handle-${id.replace(/:/g, '-')}`;\n\n if (!draggable) {\n return <>{children}</>;\n }\n\n return (\n <ReactDraggable\n nodeRef={nodeRef}\n handle={`.${handleClass}`}\n defaultClassName={draggable ? classes.draggablePopupWrapper : undefined}\n defaultClassNameDragging={draggable ? classes.draggingPopupWrapper : undefined}\n disabled={!draggable}\n cancel={`.${classes.resizableHandleWrapper}`}\n >\n <div className={handleClass} ref={nodeRef}>\n {children}\n </div>\n </ReactDraggable>\n );\n};\n"],"names":["Draggable","_ref","children","draggable","nodeRef","useRef","id","safeUseId","handleClass","concat","replace","React","createElement","Fragment","ReactDraggable","handle","defaultClassName","classes","draggablePopupWrapper","undefined","defaultClassNameDragging","draggingPopupWrapper","disabled","cancel","resizableHandleWrapper","className","ref"],"mappings":";;;;;IAOaA,SAAwE,GAAG,SAA3EA,SAAwEA,CAAAC,IAAA,EAAgC;AAAA,EAAA,IAA1BC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAA;AAC1G,EAAA,IAAMC,OAAO,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAE5B,EAAA,IAAMC,EAAE,GAAGC,SAAS,EAAE,CAAA;AACtB,EAAA,IAAMC,WAAW,GAAA,mBAAA,CAAAC,MAAA,CAAuBH,EAAE,CAACI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAE,CAAA;EAE/D,IAAI,CAACP,SAAS,EAAE;IACZ,oBAAOQ,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAGX,IAAAA,EAAAA,QAAW,CAAC,CAAA;AAC1B,GAAA;AAEA,EAAA,oBACIS,cAAA,CAAAC,aAAA,CAACE,cAAc,EAAA;AACXV,IAAAA,OAAO,EAAEA,OAAQ;AACjBW,IAAAA,MAAM,EAAAN,GAAAA,CAAAA,MAAA,CAAMD,WAAW,CAAG;AAC1BQ,IAAAA,gBAAgB,EAAEb,SAAS,GAAGc,OAAO,CAACC,qBAAqB,GAAGC,SAAU;AACxEC,IAAAA,wBAAwB,EAAEjB,SAAS,GAAGc,OAAO,CAACI,oBAAoB,GAAGF,SAAU;IAC/EG,QAAQ,EAAE,CAACnB,SAAU;AACrBoB,IAAAA,MAAM,EAAAd,GAAAA,CAAAA,MAAA,CAAMQ,OAAO,CAACO,sBAAsB,CAAA;GAE1Cb,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKa,IAAAA,SAAS,EAAEjB,WAAY;AAACkB,IAAAA,GAAG,EAAEtB,OAAAA;GAC7BF,EAAAA,QACA,CACO,CAAC,CAAA;AAEzB;;;;"}
@@ -6,7 +6,8 @@ import { useUniqId } from '../hooks/useUniqId.js';
6
6
  var _ref = React__default,
7
7
  useId = _ref.useId;
8
8
  var IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';
9
- var safeUseId = !IS_REACT_18 ? useUniqId : useId;
9
+ var IS_REACT_BELOW_18 = /*#__PURE__*/Number(ReactDOM.version.split('.')[0]) < 18;
10
+ var safeUseId = IS_REACT_BELOW_18 ? useUniqId : useId;
10
11
 
11
- export { IS_REACT_18, safeUseId };
12
+ export { IS_REACT_18, IS_REACT_BELOW_18, safeUseId };
12
13
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../../../../src/utils/react.ts"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\n// NOTE: для next.js важно, чтобы путь до хука был полный, т.к. есть проблемы с ре-экспортом\nimport { useUniqId } from '../hooks/useUniqId';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst { useId } = React as any;\n\nexport const IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';\n\nexport const safeUseId: () => string = !IS_REACT_18 ? useUniqId : useId;\n"],"names":["_ref","React","useId","IS_REACT_18","ReactDOM","version","split","safeUseId","useUniqId"],"mappings":";;;;AAMA;AACA,IAAAA,IAAA,GAAkBC,cAAK;EAAfC,KAAK,GAAAF,IAAA,CAALE,KAAK,CAAA;IAEAC,WAAW,GAAGC,QAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAI;AAE3D,IAAMC,SAAuB,GAAG,CAACJ,WAAW,GAAGK,SAAS,GAAGN;;;;"}
1
+ {"version":3,"file":"react.js","sources":["../../../../src/utils/react.ts"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\n// NOTE: для next.js важно, чтобы путь до хука был полный, т.к. есть проблемы с ре-экспортом\nimport { useUniqId } from '../hooks/useUniqId';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst { useId } = React as any;\n\nexport const IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';\nexport const IS_REACT_BELOW_18 = Number(ReactDOM.version.split('.')[0]) < 18;\n\nexport const safeUseId: () => string = IS_REACT_BELOW_18 ? useUniqId : useId;\n"],"names":["_ref","React","useId","IS_REACT_18","ReactDOM","version","split","IS_REACT_BELOW_18","Number","safeUseId","useUniqId"],"mappings":";;;;AAMA;AACA,IAAAA,IAAA,GAAkBC,cAAK;EAAfC,KAAK,GAAAF,IAAA,CAALE,KAAK,CAAA;IAEAC,WAAW,GAAGC,QAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAI;AAC3D,IAAMC,iBAAiB,gBAAGC,MAAM,CAACJ,QAAQ,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAE;IAE/DG,SAAuB,GAAGF,iBAAiB,GAAGG,SAAS,GAAGR;;;;"}
@@ -252,6 +252,7 @@ var popoverRoot = function(Root) {
252
252
  var isAuto = isAutoArray || placement.startsWith('auto');
253
253
  var openClass = innerIsOpen && shouldRender ? _Popovertokens.classes.open : undefined;
254
254
  var animatedClass = animated ? _Popovertokens.classes.animate : undefined;
255
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
255
256
  var offsetInner = (0, _usePopoverOffset.usePopoverOffset)({
256
257
  handleRef: targetRef,
257
258
  placement: placement,
@@ -318,7 +319,7 @@ var popoverRoot = function(Root) {
318
319
  ]);
319
320
  var onClick = (0, _react.useCallback)(function(event) {
320
321
  event.persist();
321
- if (trigger === 'click') {
322
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
322
323
  var _popoverRef_current;
323
324
  var targetIsPopover = event.target === popoverRef.current;
324
325
  var rootHasTarget = (_popoverRef_current = popoverRef.current) === null || _popoverRef_current === void 0 ? void 0 : _popoverRef_current.contains(event.target);
@@ -348,6 +349,9 @@ var popoverRoot = function(Root) {
348
349
  onToggle
349
350
  ]);
350
351
  var onFocus = (0, _react.useCallback)(function(event) {
352
+ if (isMobileDevice) {
353
+ return;
354
+ }
351
355
  if (trigger === 'hover') {
352
356
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
353
357
  }
@@ -356,6 +360,9 @@ var popoverRoot = function(Root) {
356
360
  onToggle
357
361
  ]);
358
362
  var onBlur = (0, _react.useCallback)(function(event) {
363
+ if (isMobileDevice) {
364
+ return;
365
+ }
359
366
  if (trigger === 'hover') {
360
367
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
361
368
  }
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "Draggable", {
11
11
  var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  var _reactdraggable = /*#__PURE__*/ _interop_require_default(require("react-draggable"));
13
13
  var _Popuptokens = require("../../Popup.tokens");
14
+ var _utils = require("../../../../utils");
14
15
  function _interop_require_default(obj) {
15
16
  return obj && obj.__esModule ? obj : {
16
17
  default: obj
@@ -60,16 +61,20 @@ function _interop_require_wildcard(obj, nodeInterop) {
60
61
  var Draggable = function(param) {
61
62
  var children = param.children, draggable = param.draggable;
62
63
  var nodeRef = (0, _react.useRef)(null);
64
+ var id = (0, _utils.safeUseId)();
65
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
63
66
  if (!draggable) {
64
67
  return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children);
65
68
  }
66
69
  return /*#__PURE__*/ _react.default.createElement(_reactdraggable.default, {
67
70
  nodeRef: nodeRef,
71
+ handle: ".".concat(handleClass),
68
72
  defaultClassName: draggable ? _Popuptokens.classes.draggablePopupWrapper : undefined,
69
73
  defaultClassNameDragging: draggable ? _Popuptokens.classes.draggingPopupWrapper : undefined,
70
74
  disabled: !draggable,
71
75
  cancel: ".".concat(_Popuptokens.classes.resizableHandleWrapper)
72
76
  }, /*#__PURE__*/ _react.default.createElement("div", {
77
+ className: handleClass,
73
78
  ref: nodeRef
74
79
  }, children));
75
80
  };
@@ -12,6 +12,9 @@ _export(exports, {
12
12
  get IS_REACT_18 () {
13
13
  return IS_REACT_18;
14
14
  },
15
+ get IS_REACT_BELOW_18 () {
16
+ return IS_REACT_BELOW_18;
17
+ },
15
18
  get safeUseId () {
16
19
  return safeUseId;
17
20
  }
@@ -27,4 +30,5 @@ function _interop_require_default(obj) {
27
30
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
31
  var useId = _react.default.useId;
29
32
  var IS_REACT_18 = _reactdom.default.version.split('.')[0] === '18';
30
- var safeUseId = !IS_REACT_18 ? _useUniqId.useUniqId : useId;
33
+ var IS_REACT_BELOW_18 = Number(_reactdom.default.version.split('.')[0]) < 18;
34
+ var safeUseId = IS_REACT_BELOW_18 ? _useUniqId.useUniqId : useId;
@@ -190,6 +190,7 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
190
190
  var isAuto = isAutoArray || placement.startsWith('auto');
191
191
  var openClass = innerIsOpen && shouldRender ? classes.open : undefined;
192
192
  var animatedClass = animated ? classes.animate : undefined;
193
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
193
194
  var offsetInner = usePopoverOffset({
194
195
  handleRef: targetRef,
195
196
  placement: placement,
@@ -256,7 +257,7 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
256
257
  ]);
257
258
  var onClick = useCallback(function(event) {
258
259
  event.persist();
259
- if (trigger === 'click') {
260
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
260
261
  var _popoverRef_current;
261
262
  var targetIsPopover = event.target === popoverRef.current;
262
263
  var rootHasTarget = (_popoverRef_current = popoverRef.current) === null || _popoverRef_current === void 0 ? void 0 : _popoverRef_current.contains(event.target);
@@ -286,6 +287,9 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
286
287
  onToggle
287
288
  ]);
288
289
  var onFocus = useCallback(function(event) {
290
+ if (isMobileDevice) {
291
+ return;
292
+ }
289
293
  if (trigger === 'hover') {
290
294
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
291
295
  }
@@ -294,6 +298,9 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
294
298
  onToggle
295
299
  ]);
296
300
  var onBlur = useCallback(function(event) {
301
+ if (isMobileDevice) {
302
+ return;
303
+ }
297
304
  if (trigger === 'hover') {
298
305
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
299
306
  }
@@ -1,19 +1,24 @@
1
1
  import React, { useRef } from "react";
2
2
  import ReactDraggable from "react-draggable";
3
3
  import { classes } from "../../Popup.tokens";
4
+ import { safeUseId } from "../../../../utils";
4
5
  export var Draggable = function(param) {
5
6
  var children = param.children, draggable = param.draggable;
6
7
  var nodeRef = useRef(null);
8
+ var id = safeUseId();
9
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
7
10
  if (!draggable) {
8
11
  return /*#__PURE__*/ React.createElement(React.Fragment, null, children);
9
12
  }
10
13
  return /*#__PURE__*/ React.createElement(ReactDraggable, {
11
14
  nodeRef: nodeRef,
15
+ handle: ".".concat(handleClass),
12
16
  defaultClassName: draggable ? classes.draggablePopupWrapper : undefined,
13
17
  defaultClassNameDragging: draggable ? classes.draggingPopupWrapper : undefined,
14
18
  disabled: !draggable,
15
19
  cancel: ".".concat(classes.resizableHandleWrapper)
16
20
  }, /*#__PURE__*/ React.createElement("div", {
21
+ className: handleClass,
17
22
  ref: nodeRef
18
23
  }, children));
19
24
  };
@@ -0,0 +1,7 @@
1
+ import { component, mergeConfig } from "../../../engines";
2
+ import { comboboxNewConfig } from "../../..";
3
+ import { config } from "./Combobox.config";
4
+ var mergedConfig = mergeConfig(comboboxNewConfig, config);
5
+ var ComboboxComponent = component(mergedConfig);
6
+ var Combobox = ComboboxComponent;
7
+ export { Combobox };
@@ -5,4 +5,5 @@ import { useUniqId } from "../hooks/useUniqId";
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
6
  var useId = React.useId;
7
7
  export var IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';
8
- export var safeUseId = !IS_REACT_18 ? useUniqId : useId;
8
+ export var IS_REACT_BELOW_18 = Number(ReactDOM.version.split('.')[0]) < 18;
9
+ export var safeUseId = IS_REACT_BELOW_18 ? useUniqId : useId;
@@ -252,6 +252,7 @@ var popoverRoot = function(Root) {
252
252
  var isAuto = isAutoArray || placement.startsWith('auto');
253
253
  var openClass = innerIsOpen && shouldRender ? _Popovertokens.classes.open : undefined;
254
254
  var animatedClass = animated ? _Popovertokens.classes.animate : undefined;
255
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
255
256
  var offsetInner = (0, _usePopoverOffset.usePopoverOffset)({
256
257
  handleRef: targetRef,
257
258
  placement: placement,
@@ -318,7 +319,7 @@ var popoverRoot = function(Root) {
318
319
  ]);
319
320
  var onClick = (0, _react.useCallback)(function(event) {
320
321
  event.persist();
321
- if (trigger === 'click') {
322
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
322
323
  var _popoverRef_current;
323
324
  var targetIsPopover = event.target === popoverRef.current;
324
325
  var rootHasTarget = (_popoverRef_current = popoverRef.current) === null || _popoverRef_current === void 0 ? void 0 : _popoverRef_current.contains(event.target);
@@ -348,6 +349,9 @@ var popoverRoot = function(Root) {
348
349
  onToggle
349
350
  ]);
350
351
  var onFocus = (0, _react.useCallback)(function(event) {
352
+ if (isMobileDevice) {
353
+ return;
354
+ }
351
355
  if (trigger === 'hover') {
352
356
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
353
357
  }
@@ -356,6 +360,9 @@ var popoverRoot = function(Root) {
356
360
  onToggle
357
361
  ]);
358
362
  var onBlur = (0, _react.useCallback)(function(event) {
363
+ if (isMobileDevice) {
364
+ return;
365
+ }
359
366
  if (trigger === 'hover') {
360
367
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
361
368
  }
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "Draggable", {
11
11
  var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  var _reactdraggable = /*#__PURE__*/ _interop_require_default(require("react-draggable"));
13
13
  var _Popuptokens = require("../../Popup.tokens");
14
+ var _utils = require("../../../../utils");
14
15
  function _interop_require_default(obj) {
15
16
  return obj && obj.__esModule ? obj : {
16
17
  default: obj
@@ -60,16 +61,20 @@ function _interop_require_wildcard(obj, nodeInterop) {
60
61
  var Draggable = function(param) {
61
62
  var children = param.children, draggable = param.draggable;
62
63
  var nodeRef = (0, _react.useRef)(null);
64
+ var id = (0, _utils.safeUseId)();
65
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
63
66
  if (!draggable) {
64
67
  return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children);
65
68
  }
66
69
  return /*#__PURE__*/ _react.default.createElement(_reactdraggable.default, {
67
70
  nodeRef: nodeRef,
71
+ handle: ".".concat(handleClass),
68
72
  defaultClassName: draggable ? _Popuptokens.classes.draggablePopupWrapper : undefined,
69
73
  defaultClassNameDragging: draggable ? _Popuptokens.classes.draggingPopupWrapper : undefined,
70
74
  disabled: !draggable,
71
75
  cancel: ".".concat(_Popuptokens.classes.resizableHandleWrapper)
72
76
  }, /*#__PURE__*/ _react.default.createElement("div", {
77
+ className: handleClass,
73
78
  ref: nodeRef
74
79
  }, children));
75
80
  };
@@ -12,6 +12,9 @@ _export(exports, {
12
12
  get IS_REACT_18 () {
13
13
  return IS_REACT_18;
14
14
  },
15
+ get IS_REACT_BELOW_18 () {
16
+ return IS_REACT_BELOW_18;
17
+ },
15
18
  get safeUseId () {
16
19
  return safeUseId;
17
20
  }
@@ -27,4 +30,5 @@ function _interop_require_default(obj) {
27
30
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
31
  var useId = _react.default.useId;
29
32
  var IS_REACT_18 = _reactdom.default.version.split('.')[0] === '18';
30
- var safeUseId = !IS_REACT_18 ? _useUniqId.useUniqId : useId;
33
+ var IS_REACT_BELOW_18 = Number(_reactdom.default.version.split('.')[0]) < 18;
34
+ var safeUseId = IS_REACT_BELOW_18 ? _useUniqId.useUniqId : useId;
@@ -190,6 +190,7 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
190
190
  var isAuto = isAutoArray || placement.startsWith('auto');
191
191
  var openClass = innerIsOpen && shouldRender ? classes.open : undefined;
192
192
  var animatedClass = animated ? classes.animate : undefined;
193
+ var isMobileDevice = typeof window !== 'undefined' ? window.matchMedia('(hover: none)').matches : false;
193
194
  var offsetInner = usePopoverOffset({
194
195
  handleRef: targetRef,
195
196
  placement: placement,
@@ -256,7 +257,7 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
256
257
  ]);
257
258
  var onClick = useCallback(function(event) {
258
259
  event.persist();
259
- if (trigger === 'click') {
260
+ if (trigger === 'click' || trigger === 'hover' && isMobileDevice) {
260
261
  var _popoverRef_current;
261
262
  var targetIsPopover = event.target === popoverRef.current;
262
263
  var rootHasTarget = (_popoverRef_current = popoverRef.current) === null || _popoverRef_current === void 0 ? void 0 : _popoverRef_current.contains(event.target);
@@ -286,6 +287,9 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
286
287
  onToggle
287
288
  ]);
288
289
  var onFocus = useCallback(function(event) {
290
+ if (isMobileDevice) {
291
+ return;
292
+ }
289
293
  if (trigger === 'hover') {
290
294
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
291
295
  }
@@ -294,6 +298,9 @@ export var POPOVER_PORTAL_ID = 'plasma-popover-root';
294
298
  onToggle
295
299
  ]);
296
300
  var onBlur = useCallback(function(event) {
301
+ if (isMobileDevice) {
302
+ return;
303
+ }
297
304
  if (trigger === 'hover') {
298
305
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
299
306
  }
@@ -1,19 +1,24 @@
1
1
  import React, { useRef } from "react";
2
2
  import ReactDraggable from "react-draggable";
3
3
  import { classes } from "../../Popup.tokens";
4
+ import { safeUseId } from "../../../../utils";
4
5
  export var Draggable = function(param) {
5
6
  var children = param.children, draggable = param.draggable;
6
7
  var nodeRef = useRef(null);
8
+ var id = safeUseId();
9
+ var handleClass = "draggable-handle-".concat(id.replace(/:/g, '-'));
7
10
  if (!draggable) {
8
11
  return /*#__PURE__*/ React.createElement(React.Fragment, null, children);
9
12
  }
10
13
  return /*#__PURE__*/ React.createElement(ReactDraggable, {
11
14
  nodeRef: nodeRef,
15
+ handle: ".".concat(handleClass),
12
16
  defaultClassName: draggable ? classes.draggablePopupWrapper : undefined,
13
17
  defaultClassNameDragging: draggable ? classes.draggingPopupWrapper : undefined,
14
18
  disabled: !draggable,
15
19
  cancel: ".".concat(classes.resizableHandleWrapper)
16
20
  }, /*#__PURE__*/ React.createElement("div", {
21
+ className: handleClass,
17
22
  ref: nodeRef
18
23
  }, children));
19
24
  };
@@ -0,0 +1,7 @@
1
+ import { component, mergeConfig } from "../../../engines";
2
+ import { comboboxNewConfig } from "../../..";
3
+ import { config } from "./Combobox.config";
4
+ var mergedConfig = mergeConfig(comboboxNewConfig, config);
5
+ var ComboboxComponent = component(mergedConfig);
6
+ var Combobox = ComboboxComponent;
7
+ export { Combobox };
@@ -5,4 +5,5 @@ import { useUniqId } from "../hooks/useUniqId";
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
6
  var useId = React.useId;
7
7
  export var IS_REACT_18 = ReactDOM.version.split('.')[0] === '18';
8
- export var safeUseId = !IS_REACT_18 ? useUniqId : useId;
8
+ export var IS_REACT_BELOW_18 = Number(ReactDOM.version.split('.')[0]) < 18;
9
+ export var safeUseId = IS_REACT_BELOW_18 ? useUniqId : useId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salutejs/plasma-new-hope",
3
- "version": "0.346.0-canary.2448.21474757261.0",
3
+ "version": "0.346.0-canary.2448.21482585849.0",
4
4
  "description": "Salute Design System blueprint",
5
5
  "exports": {
6
6
  ".": {
@@ -92,8 +92,8 @@
92
92
  "@rollup/plugin-babel": "^6.0.4",
93
93
  "@rollup/plugin-commonjs": "^25.0.4",
94
94
  "@rollup/plugin-node-resolve": "^15.1.0",
95
- "@salutejs/plasma-cy-utils": "0.144.0-canary.2448.21474757261.0",
96
- "@salutejs/plasma-sb-utils": "0.214.0-canary.2448.21474757261.0",
95
+ "@salutejs/plasma-cy-utils": "0.144.0-canary.2448.21482585849.0",
96
+ "@salutejs/plasma-sb-utils": "0.214.0-canary.2448.21482585849.0",
97
97
  "@salutejs/plasma-themes": "0.39.0",
98
98
  "@types/lodash": "^4.14.191",
99
99
  "@types/lodash.chunk": "4.2.9",
@@ -122,7 +122,7 @@
122
122
  "@linaria/react": "5.0.3",
123
123
  "@popperjs/core": "2.11.8",
124
124
  "@salutejs/input-core": "2.1.2",
125
- "@salutejs/plasma-core": "1.214.0-canary.2448.21474757261.0",
125
+ "@salutejs/plasma-core": "1.214.0-canary.2448.21482585849.0",
126
126
  "@salutejs/react-maskinput": "3.3.2",
127
127
  "@tanstack/react-table": "8.21.2",
128
128
  "@tanstack/react-virtual": "3.13.2",
@@ -142,5 +142,5 @@
142
142
  "sideEffects": [
143
143
  "*.css"
144
144
  ],
145
- "gitHead": "94ed7603afd861b701c03b9734ccede3e4f786b9"
145
+ "gitHead": "491fbd27bc06c6c5d4e4ae91c9197fd397858989"
146
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+E,MAAM,OAAO,CAAC;AAIpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKtE,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAU,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,+JAySpE,CAAC;AAEN,eAAO,MAAM,aAAa;;;mBA3SQ,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC;;;;;;;;;;CAwTxE,CAAC"}
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+E,MAAM,OAAO,CAAC;AAIpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKtE,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAU,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,+JAmTpE,CAAC;AAEN,eAAO,MAAM,aAAa;;;mBArTQ,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC;;;;;;;;;;CAkUxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Draggable.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAAE,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CAkBnF,CAAC"}
1
+ {"version":3,"file":"Draggable.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popup/ui/Draggable/Draggable.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAAE,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CAwBnF,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export declare const IS_REACT_18: boolean;
2
+ export declare const IS_REACT_BELOW_18: boolean;
2
3
  export declare const safeUseId: () => string;
3
4
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/utils/react.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,SAA0C,CAAC;AAEnE,eAAO,MAAM,SAAS,EAAE,MAAM,MAAyC,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/utils/react.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,SAA0C,CAAC;AACnE,eAAO,MAAM,iBAAiB,SAA8C,CAAC;AAE7E,eAAO,MAAM,SAAS,EAAE,MAAM,MAA8C,CAAC"}