@gravity-ui/dashkit 10.5.0 → 10.5.2

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.
@@ -63,7 +63,7 @@
63
63
  max-width: 200px;
64
64
  flex: 0 0 auto;
65
65
  display: flex;
66
- gap: 4px;
66
+ gap: 8px;
67
67
  justify-content: center;
68
68
  align-items: center;
69
69
  border-radius: var(--g-border-radius-xl);
@@ -73,6 +73,7 @@
73
73
  background-color: var(--_--dashkit-action-panel-item-color);
74
74
  color: var(--_--dashkit-action-panel-item-text-color);
75
75
  cursor: pointer;
76
+ transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
76
77
  }
77
78
  .dashkit-action-panel__item:hover, .dashkit-action-panel__item:focus-visible {
78
79
  background-color: var(--_--dashkit-action-panel-item-color-hover);
@@ -105,10 +106,11 @@
105
106
  justify-content: center;
106
107
  }
107
108
  .dashkit-action-panel__title {
109
+ font-family: var(--g-text-subheader-font-family);
110
+ font-weight: var(--g-text-subheader-font-weight);
111
+ font-size: var(--g-text-subheader-1-font-size);
112
+ line-height: var(--g-text-subheader-1-line-height);
108
113
  min-width: 0;
109
- font-size: 12px;
110
- font-weight: 400;
111
- line-height: 16px;
112
114
  overflow: hidden;
113
115
  text-overflow: ellipsis;
114
116
  }
@@ -40,7 +40,7 @@ export default class GridLayout extends React.PureComponent<GridLayoutProps, Gri
40
40
  mergeGroupsLayout(group: string, newLayout: ConfigLayout[], temporaryItem?: ConfigLayout): ConfigLayout[];
41
41
  reloadItems(options?: ReloadItemsOptions): void;
42
42
  prepareDefaultArguments(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): ManipulationCallbackArgs;
43
- updateDraggingElementState(group: string, layoutItem: ConfigLayout, e: MouseEvent): void;
43
+ updateDraggingElementState(group: string, layoutItem: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
44
44
  _initDragCoordinatesWatcher(element: HTMLElement): void;
45
45
  _forceCursorCapture(parentElement: HTMLElement, position: {
46
46
  top: number;
@@ -7,6 +7,7 @@ const context_1 = require("../../context/index.js");
7
7
  const utils_1 = require("../../utils/index.js");
8
8
  const GridItem_1 = tslib_1.__importDefault(require("../GridItem/GridItem.js"));
9
9
  const GroupLayout_1 = require("./GroupLayout.js");
10
+ const utils_2 = require("./utils.js");
10
11
  const hasPluginId = (value) => {
11
12
  return (value !== null &&
12
13
  'props' in value &&
@@ -326,7 +327,7 @@ class GridLayout extends react_1.default.PureComponent {
326
327
  element,
327
328
  };
328
329
  }
329
- updateDraggingElementState(group, layoutItem, e) {
330
+ updateDraggingElementState(group, layoutItem, e, element) {
330
331
  let currentDraggingElement = this.state.currentDraggingElement;
331
332
  if (!currentDraggingElement) {
332
333
  const { temporaryLayout } = this.context;
@@ -339,10 +340,14 @@ class GridLayout extends react_1.default.PureComponent {
339
340
  }
340
341
  let { offsetX, offsetY } = e.nativeEvent || {};
341
342
  if (offsetX === undefined || offsetY === undefined) {
342
- const target = e.currentTarget;
343
- const gridRect = target === null || target === void 0 ? void 0 : target.getBoundingClientRect();
344
- offsetX = e.clientX - ((gridRect === null || gridRect === void 0 ? void 0 : gridRect.left) || 0);
345
- offsetY = e.clientY - ((gridRect === null || gridRect === void 0 ? void 0 : gridRect.top) || 0);
343
+ const gridRect = element.getBoundingClientRect();
344
+ const position = (0, utils_2.getEventPosition)(e, this._sharedDragRef.current.touchIdentifier);
345
+ if (!position) {
346
+ return;
347
+ }
348
+ const { clientX, clientY } = position;
349
+ offsetX = clientX - gridRect.left;
350
+ offsetY = clientY - gridRect.top;
346
351
  }
347
352
  currentDraggingElement = {
348
353
  group,
@@ -386,7 +391,11 @@ class GridLayout extends react_1.default.PureComponent {
386
391
  return;
387
392
  }
388
393
  const parentRect = parent.getBoundingClientRect();
389
- const { clientX, clientY } = e;
394
+ const position = (0, utils_2.getEventPosition)(e, this._sharedDragRef.current.touchIdentifier);
395
+ if (!position) {
396
+ return;
397
+ }
398
+ const { clientX, clientY } = position;
390
399
  let isDraggedOut = this.state.isDraggedOut;
391
400
  if (clientX < parentRect.left ||
392
401
  clientX > parentRect.right ||
@@ -419,10 +428,18 @@ class GridLayout extends react_1.default.PureComponent {
419
428
  }
420
429
  else {
421
430
  if (!this._sharedDragRef.current.isDragging) {
422
- this._sharedDragRef.current = { isDragging: true, sourceGroup: group };
431
+ const position = (0, utils_2.getEventPosition)(e);
432
+ if (!position) {
433
+ return;
434
+ }
435
+ this._sharedDragRef.current = {
436
+ isDragging: true,
437
+ sourceGroup: group,
438
+ touchIdentifier: 'identifier' in position ? position.identifier : undefined,
439
+ };
423
440
  }
424
441
  this._initDragCoordinatesWatcher(element);
425
- this.updateDraggingElementState(group, layoutItem, e);
442
+ this.updateDraggingElementState(group, layoutItem, e, element);
426
443
  this.setState({ isDragging: true });
427
444
  }
428
445
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GridLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/GridLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DragOverEvent} from 'react-grid-layout';\n\nimport type {PluginRef, PluginWidgetProps, ReactGridLayoutProps} from 'src/typings';\n\nimport {COMPACT_TYPE_HORIZONTAL_NOWRAP, DEFAULT_GROUP, TEMPORARY_ITEM_ID} from '../../constants';\nimport type {DashKitCtxShape} from '../../context';\nimport {DashKitContext} from '../../context';\nimport type {ConfigItem, ConfigLayout, DraggedOverItem} from '../../shared';\nimport {resolveLayoutGroup} from '../../utils';\nimport GridItem from '../GridItem/GridItem';\n\nimport {GroupLayout} from './GroupLayout';\nimport type {\n CurrentDraggingElement,\n GridLayoutProps,\n GridLayoutState,\n GroupCallbacks,\n LayoutAndPropsByGroup,\n ManipulationCallbackArgs,\n MemoGroupLayout,\n ReloadItemsOptions,\n} from './types';\n\nconst hasPluginId = (value: PluginRef): value is {props: {id: string}} => {\n return (\n value !== null &&\n 'props' in value &&\n typeof value.props === 'object' &&\n value.props !== null &&\n 'id' in value.props &&\n typeof value.props.id === 'string'\n );\n};\n\nexport default class GridLayout extends React.PureComponent<GridLayoutProps, GridLayoutState> {\n static contextType = DashKitContext;\n context!: DashKitCtxShape;\n\n pluginsRefs: Array<PluginRef>;\n\n private _memoForwardedPluginRef: Array<(pluginRef: PluginRef) => void> = [];\n private _memoGroupsProps: Record<string, Partial<ReactGridLayoutProps>> = {};\n private _memoGroupsLayouts: Record<string, MemoGroupLayout> = {};\n private _memoCallbacksForGroups: Record<string, GroupCallbacks> = {};\n private _memoGroupsItems: Record<string, ConfigItem[]> = {};\n\n private _sharedDragRef: React.MutableRefObject<{\n isDragging: boolean;\n sourceGroup: string | null;\n }> = {current: {isDragging: false, sourceGroup: null}};\n private _sharedDragPositionRef: React.MutableRefObject<{\n offsetX: number;\n offsetY: number;\n } | null> = {current: null};\n private _groupResetRegistryRef: React.MutableRefObject<Map<string, () => void>> = {\n current: new Map(),\n };\n\n private _timeout?: NodeJS.Timeout;\n private _lastReloadAt?: number;\n private _parendDragNode: HTMLElement | null = null;\n\n constructor(props: GridLayoutProps, context: DashKitCtxShape) {\n super(props, context);\n this.pluginsRefs = [];\n this.state = {\n isDragging: false,\n isDraggedOut: false,\n isPageHidden: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n };\n }\n\n componentDidMount() {\n this.reloadItems();\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n }\n\n componentDidUpdate() {\n clearTimeout(this._timeout);\n this.reloadItems();\n }\n\n componentWillUnmount() {\n clearTimeout(this._timeout);\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n\n this._memoCallbacksForGroups = {};\n this._memoGroupsProps = {};\n this._memoGroupsLayouts = {};\n this._memoGroupsItems = {};\n this._memoForwardedPluginRef = [];\n }\n\n onVisibilityChange = () => {\n this.setState({\n isPageHidden: document.hidden,\n });\n };\n\n adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'] = ({\n widgetId,\n needSetDefault,\n adjustedWidgetLayout,\n }) => {\n const {layout, memorizeOriginalLayout, revertToOriginalLayout} = this.context;\n\n if (needSetDefault) {\n revertToOriginalLayout(widgetId);\n return;\n }\n\n if (!adjustedWidgetLayout) {\n return;\n }\n\n const correspondedLayoutItemIndex = layout.findIndex(\n (layoutItem) => layoutItem.i === widgetId,\n );\n\n memorizeOriginalLayout(\n widgetId,\n {...layout[correspondedLayoutItemIndex]},\n adjustedWidgetLayout,\n );\n };\n\n getItemsMeta = () => {\n const {getItemsMeta} = this.context;\n return getItemsMeta(this.pluginsRefs);\n };\n\n getActiveLayout(): ConfigLayout[] {\n const {layout, temporaryLayout} = this.context;\n\n return temporaryLayout?.data || layout;\n }\n\n getMemoGroupLayout(group: string, layout: ConfigLayout[]): MemoGroupLayout {\n // fastest possible way to match json\n const key = JSON.stringify(layout);\n\n if (this._memoGroupsLayouts[group]) {\n if (this._memoGroupsLayouts[group].key === key) {\n return this._memoGroupsLayouts[group];\n } else {\n this._memoGroupsLayouts[group].key = key;\n this._memoGroupsLayouts[group].layout = layout;\n }\n } else {\n this._memoGroupsLayouts[group] = {\n key,\n layout,\n };\n }\n\n return this._memoGroupsLayouts[group];\n }\n\n getMemoGroupCallbacks(group: string): GroupCallbacks {\n if (!this._memoCallbacksForGroups[group]) {\n const onDragStart = this._onDragStart.bind(this, group);\n const onDrag = this._onDrag.bind(this, group);\n const onDragStop = this._onDragStop.bind(this, group);\n\n const onResizeStart = this._onResizeStart.bind(this, group);\n const onResize = this._onResize.bind(this, group);\n const onResizeStop = this._onResizeStop.bind(this, group);\n\n const onDrop = this._onDrop.bind(this, group);\n const onDropDragOver = this._onDropDragOver.bind(this, group);\n const onDragTargetRestore = this._onTargetRestore.bind(this);\n\n this._memoCallbacksForGroups[group] = {\n onDragStart,\n onDrag,\n onDragStop,\n onResizeStart,\n onResize,\n onResizeStop,\n onDrop,\n onDropDragOver,\n onDragTargetRestore,\n };\n }\n\n return this._memoCallbacksForGroups[group];\n }\n\n getMemoGroupItems(group: string, nextItems: ConfigItem[]): ConfigItem[] {\n const prev = this._memoGroupsItems[group];\n if (\n prev &&\n prev.length === nextItems.length &&\n prev.every((item, i) => item === nextItems[i])\n ) {\n return prev;\n }\n this._memoGroupsItems[group] = nextItems;\n return nextItems;\n }\n\n getMemoGroupProps = (\n group: string,\n renderLayout: ConfigLayout[],\n nextProperties: Partial<ReactGridLayoutProps>,\n ) => {\n // Return stable ref to prevent useMemo invalidation when properties are shallowly equal.\n const prevProperties = this._memoGroupsProps[group];\n const keysNext = Object.keys(nextProperties) as Array<keyof ReactGridLayoutProps>;\n const stableProperties =\n prevProperties &&\n Object.keys(prevProperties).length === keysNext.length &&\n keysNext.every((k) => prevProperties[k] === nextProperties[k])\n ? prevProperties\n : nextProperties;\n\n // Needed for _onDropDragOver\n this._memoGroupsProps[group] = stableProperties;\n\n return {\n layout: this.getMemoGroupLayout(group, renderLayout).layout,\n callbacks: this.getMemoGroupCallbacks(group),\n stableProperties,\n };\n };\n\n getLayoutAndPropsByGroup = (group: string): LayoutAndPropsByGroup => {\n return {\n properties: this._memoGroupsProps[group],\n layout: this._memoGroupsLayouts[group].layout,\n };\n };\n\n getMemoForwardRefCallback = (refIndex: number) => {\n if (!this._memoForwardedPluginRef[refIndex]) {\n this._memoForwardedPluginRef[refIndex] = (pluginRef: PluginRef) => {\n this.pluginsRefs[refIndex] = pluginRef;\n };\n }\n\n return this._memoForwardedPluginRef[refIndex];\n };\n\n mergeGroupsLayout(\n group: string,\n newLayout: ConfigLayout[],\n temporaryItem?: ConfigLayout,\n ): ConfigLayout[] {\n const renderLayout = this.getActiveLayout();\n const itemsByGroup = renderLayout.reduce<Record<string, ConfigLayout>>(\n (memo, item) => {\n memo[item.i] = item;\n return memo;\n },\n temporaryItem ? {[temporaryItem.i]: temporaryItem} : {},\n );\n\n const newItemsLayoutById = newLayout.reduce<Record<string, ConfigLayout>>((memo, item) => {\n const parent = itemsByGroup[item.i]?.parent;\n memo[item.i] = {...item};\n\n if (parent) {\n memo[item.i].parent = parent;\n }\n return memo;\n }, {});\n\n return renderLayout.map((currentItem) => {\n const itemParent = resolveLayoutGroup(itemsByGroup[currentItem.i]);\n\n if (itemParent === group) {\n return newItemsLayoutById[currentItem.i];\n }\n\n return currentItem;\n });\n }\n\n reloadItems(options?: ReloadItemsOptions) {\n const {targetIds, force} = options || {};\n\n const {\n editMode,\n settings: {autoupdateInterval, silentLoading} = {},\n reloadItems,\n } = this.context;\n\n const {isPageHidden} = this.state;\n\n const autoupdateIntervalMs = Number(autoupdateInterval) * 1000;\n\n const targetPlugins = targetIds\n ? this.pluginsRefs.filter(\n (plugin) => hasPluginId(plugin) && targetIds.includes(plugin.props.id),\n )\n : this.pluginsRefs;\n\n if (autoupdateIntervalMs) {\n const timeSinceLastReload = new Date().getTime() - (this._lastReloadAt || 0);\n const reloadIntervalRemains = autoupdateIntervalMs - timeSinceLastReload;\n\n if (force || (!isPageHidden && !editMode && reloadIntervalRemains <= 0)) {\n this._lastReloadAt = new Date().getTime();\n reloadItems(targetPlugins, {silentLoading: Boolean(silentLoading), noVeil: true});\n }\n\n this._timeout = setTimeout(\n () => this.reloadItems(),\n reloadIntervalRemains <= 0 ? autoupdateIntervalMs : reloadIntervalRemains,\n );\n } else if (force) {\n reloadItems(targetPlugins, {silentLoading: Boolean(silentLoading), noVeil: true});\n }\n }\n\n prepareDefaultArguments(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ): ManipulationCallbackArgs {\n return {\n group,\n layout,\n oldItem,\n newItem,\n placeholder,\n e,\n element,\n };\n }\n\n updateDraggingElementState(group: string, layoutItem: ConfigLayout, e: MouseEvent) {\n let currentDraggingElement: CurrentDraggingElement | null =\n this.state.currentDraggingElement;\n\n if (!currentDraggingElement) {\n const {temporaryLayout} = this.context;\n const layoutId = layoutItem.i;\n\n const item = temporaryLayout\n ? temporaryLayout.dragProps\n : this.context.configItems.find(({id}) => id === layoutId);\n\n if (!item) {\n return;\n }\n\n let {offsetX, offsetY} =\n (e as MouseEvent & {nativeEvent?: MouseEvent}).nativeEvent || {};\n if (offsetX === undefined || offsetY === undefined) {\n const target = e.currentTarget as HTMLElement;\n const gridRect = target?.getBoundingClientRect();\n\n offsetX = e.clientX - (gridRect?.left || 0);\n offsetY = e.clientY - (gridRect?.top || 0);\n }\n\n currentDraggingElement = {\n group,\n layoutItem,\n item,\n cursorPosition: {offsetX, offsetY},\n };\n\n // Update imperatively so DragOverLayout reads fresh cursor offset without re-render.\n this._sharedDragPositionRef.current = {offsetX, offsetY};\n }\n\n this.setState({currentDraggingElement, draggedOverGroup: group});\n }\n\n _initDragCoordinatesWatcher(element: HTMLElement) {\n if (!this._parendDragNode) {\n this._parendDragNode = element.parentElement;\n this.setState({isDraggedOut: false});\n }\n }\n\n // When element is going back and prointer-event: none is removed mouse enter event is not fired\n // So to trigger it we are forcing this event by adding transparent block under the mouse\n _forceCursorCapture(\n parentElement: HTMLElement,\n position: {top: number; left: number},\n parentRect: DOMRect,\n ) {\n const block = document.createElement('div');\n block.classList.add('react-grid-focus-capture');\n\n const blockSize = 44;\n const offset = blockSize / 2;\n\n // Keeping elemnt inside current grid\n const top = Math.min(Math.max(position.top - offset, 0), parentRect.height - blockSize);\n const left = Math.min(Math.max(position.left - offset, 0), parentRect.width - blockSize);\n\n block.style.width = `${blockSize}px`;\n block.style.height = `${blockSize}px`;\n block.style.top = `${top}px`;\n block.style.left = `${left}px`;\n\n parentElement.appendChild(block);\n\n setTimeout(() => {\n block.remove();\n }, 100);\n }\n\n _updateDragCoordinates(e: MouseEvent) {\n const parent = this._parendDragNode;\n\n if (!parent) {\n return;\n }\n\n const parentRect = parent.getBoundingClientRect();\n const {clientX, clientY} = e;\n\n let isDraggedOut = this.state.isDraggedOut;\n if (\n clientX < parentRect.left ||\n clientX > parentRect.right ||\n clientY < parentRect.top ||\n clientY > parentRect.bottom\n ) {\n isDraggedOut = true;\n } else {\n isDraggedOut = false;\n }\n\n if (isDraggedOut !== this.state.isDraggedOut) {\n this.setState({isDraggedOut});\n\n if (!isDraggedOut) {\n this._forceCursorCapture(\n parent,\n {\n top: clientY - parentRect.top,\n left: clientX - parentRect.left,\n },\n parentRect,\n );\n }\n }\n }\n\n _resetDragWatcher() {\n this._parendDragNode = null;\n this.setState({isDraggedOut: false});\n }\n\n _onDragStart(\n group: string,\n _newLayout: ConfigLayout[],\n layoutItem: ConfigLayout,\n _newItem: ConfigLayout,\n _placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.context.onDragStart?.call(\n this,\n this.prepareDefaultArguments(\n group,\n _newLayout,\n layoutItem,\n _newItem,\n _placeholder,\n e,\n element,\n ),\n );\n\n if (this.context.dragOverPlugin) {\n this.setState({isDragging: true});\n } else {\n if (!this._sharedDragRef.current.isDragging) {\n this._sharedDragRef.current = {isDragging: true, sourceGroup: group};\n }\n this._initDragCoordinatesWatcher(element);\n this.updateDraggingElementState(group, layoutItem, e);\n this.setState({isDragging: true});\n }\n }\n\n _onDrag(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n if (!this.context.dragOverPlugin) {\n this._updateDragCoordinates(e);\n }\n\n this.context.onDrag?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onDragStop(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this._resetDragWatcher();\n\n this._onStop(group, layout);\n\n this.context.onDragStop?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResizeStart(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.setState({\n isDragging: true,\n });\n\n this.context.onResizeStart?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResize(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.context.onResize?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResizeStop(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this._onStop(group, layout);\n\n this.context.onResizeStop?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onTargetRestore() {\n if (this.context.temporaryLayout) {\n return;\n }\n\n const {currentDraggingElement} = this.state;\n\n if (currentDraggingElement) {\n this.setState({\n draggedOverGroup: currentDraggingElement.group,\n });\n }\n }\n\n _onStop = (group: string, newLayout: ConfigLayout[]) => {\n const {layoutChange, onDrop, temporaryLayout} = this.context;\n const {draggedOverGroup, currentDraggingElement} = this.state;\n\n if (\n currentDraggingElement &&\n draggedOverGroup !== null &&\n draggedOverGroup !== currentDraggingElement.group\n ) {\n // Skipping layout update when change event called for source grid\n // and waiting _onDrop\n return;\n }\n\n const groupedLayout = this.mergeGroupsLayout(group, newLayout);\n\n this._clearSharedDragState();\n this.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n if (temporaryLayout) {\n const temporaryItem = groupedLayout.find(({i}) => i === TEMPORARY_ITEM_ID);\n if (onDrop && temporaryItem) {\n onDrop(groupedLayout, temporaryItem);\n }\n } else {\n layoutChange(groupedLayout);\n }\n };\n\n _onSharedDrop = (targetGroup: string, newLayout: ConfigLayout[], tempItem: ConfigLayout) => {\n const {currentDraggingElement} = this.state;\n const {layoutChange} = this.context;\n\n if (!currentDraggingElement) {\n return;\n }\n\n const sourceLayoutItem = currentDraggingElement.layoutItem;\n\n const groupedLayout = this.mergeGroupsLayout(targetGroup, newLayout, tempItem).map(\n (item) => {\n if (item.i === sourceLayoutItem.i) {\n const copy = {...tempItem};\n\n delete copy.parent;\n if (targetGroup !== DEFAULT_GROUP) {\n copy.parent = targetGroup;\n }\n copy.i = sourceLayoutItem.i;\n\n return copy;\n }\n\n return item;\n },\n );\n\n this._clearSharedDragState();\n this.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n // TODO temporaryLayout\n layoutChange(groupedLayout);\n };\n\n _onExternalDrop = (\n group: string,\n newLayout: ConfigLayout[],\n item: ConfigLayout,\n e: MouseEvent,\n ) => {\n const {onDrop} = this.context;\n\n if (group !== DEFAULT_GROUP) {\n item.parent = group;\n }\n\n const groupedLayout = this.mergeGroupsLayout(group, newLayout, item);\n this._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this.setState({isDragging: false});\n\n onDrop?.(groupedLayout, item, e);\n };\n\n _onDrop = (\n group: string,\n newLayout: ConfigLayout[],\n item: ConfigLayout | undefined,\n e: MouseEvent,\n ): void | false => {\n if (!item || !this.context.editMode) {\n return false;\n }\n\n const {draggedOverGroup, currentDraggingElement} = this.state;\n if (currentDraggingElement && draggedOverGroup === group) {\n this._onSharedDrop(group, newLayout, item);\n } else {\n this._onExternalDrop(group, newLayout, item, e);\n }\n };\n\n _onDropDragOver = (\n group: string,\n e: DragOverEvent,\n ): {w?: number; h?: number} | false | undefined => {\n const {editMode, dragOverPlugin, onDropDragOver, temporaryLayout} = this.context;\n const {currentDraggingElement} = this.state;\n\n // TODO If temporary item is trying to change group\n if (temporaryLayout && currentDraggingElement) {\n return false;\n }\n\n if (!editMode || (!dragOverPlugin && !currentDraggingElement)) {\n return false;\n }\n\n const {properties, layout} = this.getLayoutAndPropsByGroup(group);\n\n if (currentDraggingElement) {\n const {h, w, i} = currentDraggingElement.layoutItem;\n const {type} = currentDraggingElement.item;\n const sharedItem: DraggedOverItem = {\n h,\n w,\n i,\n type,\n parent: currentDraggingElement.group,\n };\n\n return onDropDragOver(e, group, properties, layout, sharedItem);\n }\n\n if (dragOverPlugin) {\n return onDropDragOver(e, group, properties, layout);\n }\n\n return false;\n };\n\n _clearSharedDragState() {\n this._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this._sharedDragPositionRef.current = null;\n\n // Reset all group placeholders — covers the case where mouseup happens\n // in a gap between groups and no individual group's mouseUpHandler fires.\n this._groupResetRegistryRef.current.forEach((reset) => reset());\n }\n\n renderTemporaryPlaceholder(gridLayout: Partial<ReactGridLayoutProps>) {\n const {temporaryLayout, noOverlay, draggableHandleClassName} = this.context;\n\n if (!temporaryLayout || !temporaryLayout.dragProps) {\n return null;\n }\n\n const id = TEMPORARY_ITEM_ID;\n const {type} = temporaryLayout.dragProps;\n\n return (\n <GridItem\n key={id}\n id={id}\n item={{id, type, data: {}} as ConfigItem}\n layout={temporaryLayout.data}\n adjustWidgetLayout={this.adjustWidgetLayout}\n isDragging={this.state.isDragging}\n isPlaceholder={true}\n noOverlay={noOverlay}\n withCustomHandle={Boolean(draggableHandleClassName)}\n gridLayout={gridLayout}\n />\n );\n }\n\n renderGroup(\n group: string,\n renderLayout: ConfigLayout[],\n renderItems: ConfigItem[],\n offset = 0,\n groupGridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps,\n ) {\n const {registerManager} = this.context;\n const {currentDraggingElement, draggedOverGroup, isDragging, isDraggedOut} = this.state;\n\n const hasOwnGroupProperties = typeof groupGridProperties === 'function';\n const properties = hasOwnGroupProperties\n ? groupGridProperties({...registerManager.gridLayout})\n : registerManager.gridLayout;\n\n const {callbacks, layout, stableProperties} = this.getMemoGroupProps(\n group,\n renderLayout,\n properties,\n );\n\n const compactType: 'vertical' | 'horizontal' | null | undefined =\n stableProperties.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP\n ? 'horizontal'\n : stableProperties.compactType;\n\n const isDragCaptured = Boolean(\n currentDraggingElement &&\n group === currentDraggingElement.group &&\n draggedOverGroup !== null &&\n draggedOverGroup !== group,\n );\n const currentDraggingItemId =\n currentDraggingElement && 'id' in currentDraggingElement.item\n ? currentDraggingElement.item.id\n : null;\n\n // Non-source groups get stable false/null — memo skips re-render on drag move.\n const isSourceGroup = Boolean(currentDraggingElement?.group === group);\n const groupIsAnyDragging = isDragging && isSourceGroup;\n const groupCurrentDraggingItemId = isSourceGroup ? currentDraggingItemId : null;\n const groupIsAnyDraggedOut = isSourceGroup ? isDraggedOut : false;\n\n return (\n <GroupLayout\n key={`group_${group}`}\n group={group}\n renderItems={renderItems}\n offset={offset}\n properties={stableProperties}\n compactType={compactType}\n callbacks={callbacks}\n layout={layout}\n temporaryPlaceholder={this.renderTemporaryPlaceholder(stableProperties)}\n dragStateRef={this._sharedDragRef}\n sharedDragPositionRef={this._sharedDragPositionRef}\n groupResetRegistryRef={this._groupResetRegistryRef}\n isDragCaptured={isDragCaptured}\n isAnyDragging={groupIsAnyDragging}\n currentDraggingItemId={groupCurrentDraggingItemId}\n isAnyDraggedOut={groupIsAnyDraggedOut}\n adjustWidgetLayout={this.adjustWidgetLayout}\n getMemoForwardRefCallback={this.getMemoForwardRefCallback}\n />\n );\n }\n\n render() {\n const {config, groups, editMode, context} = this.context;\n\n this.pluginsRefs.length = this.context.configItems.length;\n\n const defaultRenderLayout: ConfigLayout[] = [];\n const defaultRenderItems: ConfigItem[] = [];\n const layoutMap: Record<string, string> = {};\n\n const groupedLayout = this.getActiveLayout().reduce<Record<string, ConfigLayout[]>>(\n (memo, item) => {\n if (item.parent) {\n if (!memo[item.parent]) {\n memo[item.parent] = [];\n }\n\n memo[item.parent].push(item);\n layoutMap[item.i] = item.parent;\n } else {\n defaultRenderLayout.push(item);\n }\n\n return memo;\n },\n {},\n );\n\n const itemsByGroup = this.context.configItems.reduce<Record<string, ConfigItem[]>>(\n (memo, item) => {\n const group = layoutMap[item.id];\n if (group) {\n if (!memo[group]) {\n memo[group] = [];\n }\n memo[group].push(item);\n } else {\n defaultRenderItems.push(item);\n }\n\n return memo;\n },\n {},\n );\n\n let offset = 0;\n\n if (groups) {\n return groups.map((group) => {\n const id = group.id || DEFAULT_GROUP;\n\n let layout, items;\n\n if (id === DEFAULT_GROUP) {\n layout = defaultRenderLayout;\n items = defaultRenderItems;\n } else {\n layout = groupedLayout[id] || [];\n items = itemsByGroup[id] || [];\n }\n\n const stableItems = this.getMemoGroupItems(id, items);\n const element = this.renderGroup(\n id,\n layout,\n stableItems,\n offset,\n group.gridProperties,\n );\n offset += stableItems.length;\n\n if (group.render) {\n const groupContext = {\n isMobile: false,\n config,\n editMode,\n items,\n layout,\n context,\n };\n return group.render(id, element, groupContext);\n }\n\n return element;\n });\n } else {\n const stableDefaultItems = this.getMemoGroupItems(DEFAULT_GROUP, defaultRenderItems);\n return this.renderGroup(DEFAULT_GROUP, defaultRenderLayout, stableDefaultItems, offset);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"GridLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/GridLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DragOverEvent} from 'react-grid-layout';\n\nimport type {PluginRef, PluginWidgetProps, ReactGridLayoutProps} from 'src/typings';\n\nimport {COMPACT_TYPE_HORIZONTAL_NOWRAP, DEFAULT_GROUP, TEMPORARY_ITEM_ID} from '../../constants';\nimport type {DashKitCtxShape} from '../../context';\nimport {DashKitContext} from '../../context';\nimport type {ConfigItem, ConfigLayout, DraggedOverItem} from '../../shared';\nimport {resolveLayoutGroup} from '../../utils';\nimport GridItem from '../GridItem/GridItem';\n\nimport {GroupLayout} from './GroupLayout';\nimport type {\n CurrentDraggingElement,\n GridLayoutProps,\n GridLayoutState,\n GroupCallbacks,\n LayoutAndPropsByGroup,\n ManipulationCallbackArgs,\n MemoGroupLayout,\n ReloadItemsOptions,\n} from './types';\nimport {getEventPosition} from './utils';\n\nconst hasPluginId = (value: PluginRef): value is {props: {id: string}} => {\n return (\n value !== null &&\n 'props' in value &&\n typeof value.props === 'object' &&\n value.props !== null &&\n 'id' in value.props &&\n typeof value.props.id === 'string'\n );\n};\n\nexport default class GridLayout extends React.PureComponent<GridLayoutProps, GridLayoutState> {\n static contextType = DashKitContext;\n context!: DashKitCtxShape;\n\n pluginsRefs: Array<PluginRef>;\n\n private _memoForwardedPluginRef: Array<(pluginRef: PluginRef) => void> = [];\n private _memoGroupsProps: Record<string, Partial<ReactGridLayoutProps>> = {};\n private _memoGroupsLayouts: Record<string, MemoGroupLayout> = {};\n private _memoCallbacksForGroups: Record<string, GroupCallbacks> = {};\n private _memoGroupsItems: Record<string, ConfigItem[]> = {};\n\n private _sharedDragRef: React.MutableRefObject<{\n isDragging: boolean;\n sourceGroup: string | null;\n touchIdentifier?: number;\n }> = {current: {isDragging: false, sourceGroup: null}};\n private _sharedDragPositionRef: React.MutableRefObject<{\n offsetX: number;\n offsetY: number;\n } | null> = {current: null};\n private _groupResetRegistryRef: React.MutableRefObject<Map<string, () => void>> = {\n current: new Map(),\n };\n\n private _timeout?: NodeJS.Timeout;\n private _lastReloadAt?: number;\n private _parendDragNode: HTMLElement | null = null;\n\n constructor(props: GridLayoutProps, context: DashKitCtxShape) {\n super(props, context);\n this.pluginsRefs = [];\n this.state = {\n isDragging: false,\n isDraggedOut: false,\n isPageHidden: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n };\n }\n\n componentDidMount() {\n this.reloadItems();\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n }\n\n componentDidUpdate() {\n clearTimeout(this._timeout);\n this.reloadItems();\n }\n\n componentWillUnmount() {\n clearTimeout(this._timeout);\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n\n this._memoCallbacksForGroups = {};\n this._memoGroupsProps = {};\n this._memoGroupsLayouts = {};\n this._memoGroupsItems = {};\n this._memoForwardedPluginRef = [];\n }\n\n onVisibilityChange = () => {\n this.setState({\n isPageHidden: document.hidden,\n });\n };\n\n adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'] = ({\n widgetId,\n needSetDefault,\n adjustedWidgetLayout,\n }) => {\n const {layout, memorizeOriginalLayout, revertToOriginalLayout} = this.context;\n\n if (needSetDefault) {\n revertToOriginalLayout(widgetId);\n return;\n }\n\n if (!adjustedWidgetLayout) {\n return;\n }\n\n const correspondedLayoutItemIndex = layout.findIndex(\n (layoutItem) => layoutItem.i === widgetId,\n );\n\n memorizeOriginalLayout(\n widgetId,\n {...layout[correspondedLayoutItemIndex]},\n adjustedWidgetLayout,\n );\n };\n\n getItemsMeta = () => {\n const {getItemsMeta} = this.context;\n return getItemsMeta(this.pluginsRefs);\n };\n\n getActiveLayout(): ConfigLayout[] {\n const {layout, temporaryLayout} = this.context;\n\n return temporaryLayout?.data || layout;\n }\n\n getMemoGroupLayout(group: string, layout: ConfigLayout[]): MemoGroupLayout {\n // fastest possible way to match json\n const key = JSON.stringify(layout);\n\n if (this._memoGroupsLayouts[group]) {\n if (this._memoGroupsLayouts[group].key === key) {\n return this._memoGroupsLayouts[group];\n } else {\n this._memoGroupsLayouts[group].key = key;\n this._memoGroupsLayouts[group].layout = layout;\n }\n } else {\n this._memoGroupsLayouts[group] = {\n key,\n layout,\n };\n }\n\n return this._memoGroupsLayouts[group];\n }\n\n getMemoGroupCallbacks(group: string): GroupCallbacks {\n if (!this._memoCallbacksForGroups[group]) {\n const onDragStart = this._onDragStart.bind(this, group);\n const onDrag = this._onDrag.bind(this, group);\n const onDragStop = this._onDragStop.bind(this, group);\n\n const onResizeStart = this._onResizeStart.bind(this, group);\n const onResize = this._onResize.bind(this, group);\n const onResizeStop = this._onResizeStop.bind(this, group);\n\n const onDrop = this._onDrop.bind(this, group);\n const onDropDragOver = this._onDropDragOver.bind(this, group);\n const onDragTargetRestore = this._onTargetRestore.bind(this);\n\n this._memoCallbacksForGroups[group] = {\n onDragStart,\n onDrag,\n onDragStop,\n onResizeStart,\n onResize,\n onResizeStop,\n onDrop,\n onDropDragOver,\n onDragTargetRestore,\n };\n }\n\n return this._memoCallbacksForGroups[group];\n }\n\n getMemoGroupItems(group: string, nextItems: ConfigItem[]): ConfigItem[] {\n const prev = this._memoGroupsItems[group];\n if (\n prev &&\n prev.length === nextItems.length &&\n prev.every((item, i) => item === nextItems[i])\n ) {\n return prev;\n }\n this._memoGroupsItems[group] = nextItems;\n return nextItems;\n }\n\n getMemoGroupProps = (\n group: string,\n renderLayout: ConfigLayout[],\n nextProperties: Partial<ReactGridLayoutProps>,\n ) => {\n // Return stable ref to prevent useMemo invalidation when properties are shallowly equal.\n const prevProperties = this._memoGroupsProps[group];\n const keysNext = Object.keys(nextProperties) as Array<keyof ReactGridLayoutProps>;\n const stableProperties =\n prevProperties &&\n Object.keys(prevProperties).length === keysNext.length &&\n keysNext.every((k) => prevProperties[k] === nextProperties[k])\n ? prevProperties\n : nextProperties;\n\n // Needed for _onDropDragOver\n this._memoGroupsProps[group] = stableProperties;\n\n return {\n layout: this.getMemoGroupLayout(group, renderLayout).layout,\n callbacks: this.getMemoGroupCallbacks(group),\n stableProperties,\n };\n };\n\n getLayoutAndPropsByGroup = (group: string): LayoutAndPropsByGroup => {\n return {\n properties: this._memoGroupsProps[group],\n layout: this._memoGroupsLayouts[group].layout,\n };\n };\n\n getMemoForwardRefCallback = (refIndex: number) => {\n if (!this._memoForwardedPluginRef[refIndex]) {\n this._memoForwardedPluginRef[refIndex] = (pluginRef: PluginRef) => {\n this.pluginsRefs[refIndex] = pluginRef;\n };\n }\n\n return this._memoForwardedPluginRef[refIndex];\n };\n\n mergeGroupsLayout(\n group: string,\n newLayout: ConfigLayout[],\n temporaryItem?: ConfigLayout,\n ): ConfigLayout[] {\n const renderLayout = this.getActiveLayout();\n const itemsByGroup = renderLayout.reduce<Record<string, ConfigLayout>>(\n (memo, item) => {\n memo[item.i] = item;\n return memo;\n },\n temporaryItem ? {[temporaryItem.i]: temporaryItem} : {},\n );\n\n const newItemsLayoutById = newLayout.reduce<Record<string, ConfigLayout>>((memo, item) => {\n const parent = itemsByGroup[item.i]?.parent;\n memo[item.i] = {...item};\n\n if (parent) {\n memo[item.i].parent = parent;\n }\n return memo;\n }, {});\n\n return renderLayout.map((currentItem) => {\n const itemParent = resolveLayoutGroup(itemsByGroup[currentItem.i]);\n\n if (itemParent === group) {\n return newItemsLayoutById[currentItem.i];\n }\n\n return currentItem;\n });\n }\n\n reloadItems(options?: ReloadItemsOptions) {\n const {targetIds, force} = options || {};\n\n const {\n editMode,\n settings: {autoupdateInterval, silentLoading} = {},\n reloadItems,\n } = this.context;\n\n const {isPageHidden} = this.state;\n\n const autoupdateIntervalMs = Number(autoupdateInterval) * 1000;\n\n const targetPlugins = targetIds\n ? this.pluginsRefs.filter(\n (plugin) => hasPluginId(plugin) && targetIds.includes(plugin.props.id),\n )\n : this.pluginsRefs;\n\n if (autoupdateIntervalMs) {\n const timeSinceLastReload = new Date().getTime() - (this._lastReloadAt || 0);\n const reloadIntervalRemains = autoupdateIntervalMs - timeSinceLastReload;\n\n if (force || (!isPageHidden && !editMode && reloadIntervalRemains <= 0)) {\n this._lastReloadAt = new Date().getTime();\n reloadItems(targetPlugins, {silentLoading: Boolean(silentLoading), noVeil: true});\n }\n\n this._timeout = setTimeout(\n () => this.reloadItems(),\n reloadIntervalRemains <= 0 ? autoupdateIntervalMs : reloadIntervalRemains,\n );\n } else if (force) {\n reloadItems(targetPlugins, {silentLoading: Boolean(silentLoading), noVeil: true});\n }\n }\n\n prepareDefaultArguments(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ): ManipulationCallbackArgs {\n return {\n group,\n layout,\n oldItem,\n newItem,\n placeholder,\n e,\n element,\n };\n }\n\n updateDraggingElementState(\n group: string,\n layoutItem: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n let currentDraggingElement: CurrentDraggingElement | null =\n this.state.currentDraggingElement;\n\n if (!currentDraggingElement) {\n const {temporaryLayout} = this.context;\n const layoutId = layoutItem.i;\n\n const item = temporaryLayout\n ? temporaryLayout.dragProps\n : this.context.configItems.find(({id}) => id === layoutId);\n\n if (!item) {\n return;\n }\n\n let {offsetX, offsetY} =\n (e as MouseEvent & {nativeEvent?: MouseEvent}).nativeEvent || {};\n if (offsetX === undefined || offsetY === undefined) {\n const gridRect = element.getBoundingClientRect();\n const position = getEventPosition(e, this._sharedDragRef.current.touchIdentifier);\n if (!position) {\n return;\n }\n const {clientX, clientY} = position;\n\n offsetX = clientX - gridRect.left;\n offsetY = clientY - gridRect.top;\n }\n\n currentDraggingElement = {\n group,\n layoutItem,\n item,\n cursorPosition: {offsetX, offsetY},\n };\n\n // Update imperatively so DragOverLayout reads fresh cursor offset without re-render.\n this._sharedDragPositionRef.current = {offsetX, offsetY};\n }\n\n this.setState({currentDraggingElement, draggedOverGroup: group});\n }\n\n _initDragCoordinatesWatcher(element: HTMLElement) {\n if (!this._parendDragNode) {\n this._parendDragNode = element.parentElement;\n this.setState({isDraggedOut: false});\n }\n }\n\n // When element is going back and prointer-event: none is removed mouse enter event is not fired\n // So to trigger it we are forcing this event by adding transparent block under the mouse\n _forceCursorCapture(\n parentElement: HTMLElement,\n position: {top: number; left: number},\n parentRect: DOMRect,\n ) {\n const block = document.createElement('div');\n block.classList.add('react-grid-focus-capture');\n\n const blockSize = 44;\n const offset = blockSize / 2;\n\n // Keeping elemnt inside current grid\n const top = Math.min(Math.max(position.top - offset, 0), parentRect.height - blockSize);\n const left = Math.min(Math.max(position.left - offset, 0), parentRect.width - blockSize);\n\n block.style.width = `${blockSize}px`;\n block.style.height = `${blockSize}px`;\n block.style.top = `${top}px`;\n block.style.left = `${left}px`;\n\n parentElement.appendChild(block);\n\n setTimeout(() => {\n block.remove();\n }, 100);\n }\n\n _updateDragCoordinates(e: MouseEvent) {\n const parent = this._parendDragNode;\n\n if (!parent) {\n return;\n }\n\n const parentRect = parent.getBoundingClientRect();\n const position = getEventPosition(e, this._sharedDragRef.current.touchIdentifier);\n if (!position) {\n return;\n }\n const {clientX, clientY} = position;\n\n let isDraggedOut = this.state.isDraggedOut;\n if (\n clientX < parentRect.left ||\n clientX > parentRect.right ||\n clientY < parentRect.top ||\n clientY > parentRect.bottom\n ) {\n isDraggedOut = true;\n } else {\n isDraggedOut = false;\n }\n\n if (isDraggedOut !== this.state.isDraggedOut) {\n this.setState({isDraggedOut});\n\n if (!isDraggedOut) {\n this._forceCursorCapture(\n parent,\n {\n top: clientY - parentRect.top,\n left: clientX - parentRect.left,\n },\n parentRect,\n );\n }\n }\n }\n\n _resetDragWatcher() {\n this._parendDragNode = null;\n this.setState({isDraggedOut: false});\n }\n\n _onDragStart(\n group: string,\n _newLayout: ConfigLayout[],\n layoutItem: ConfigLayout,\n _newItem: ConfigLayout,\n _placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.context.onDragStart?.call(\n this,\n this.prepareDefaultArguments(\n group,\n _newLayout,\n layoutItem,\n _newItem,\n _placeholder,\n e,\n element,\n ),\n );\n\n if (this.context.dragOverPlugin) {\n this.setState({isDragging: true});\n } else {\n if (!this._sharedDragRef.current.isDragging) {\n const position = getEventPosition(e);\n if (!position) {\n return;\n }\n this._sharedDragRef.current = {\n isDragging: true,\n sourceGroup: group,\n touchIdentifier: 'identifier' in position ? position.identifier : undefined,\n };\n }\n this._initDragCoordinatesWatcher(element);\n this.updateDraggingElementState(group, layoutItem, e, element);\n this.setState({isDragging: true});\n }\n }\n\n _onDrag(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n if (!this.context.dragOverPlugin) {\n this._updateDragCoordinates(e);\n }\n\n this.context.onDrag?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onDragStop(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this._resetDragWatcher();\n\n this._onStop(group, layout);\n\n this.context.onDragStop?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResizeStart(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.setState({\n isDragging: true,\n });\n\n this.context.onResizeStart?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResize(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this.context.onResize?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResizeStop(\n group: string,\n layout: ConfigLayout[],\n oldItem: ConfigLayout,\n newItem: ConfigLayout,\n placeholder: ConfigLayout,\n e: MouseEvent,\n element: HTMLElement,\n ) {\n this._onStop(group, layout);\n\n this.context.onResizeStop?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onTargetRestore() {\n if (this.context.temporaryLayout) {\n return;\n }\n\n const {currentDraggingElement} = this.state;\n\n if (currentDraggingElement) {\n this.setState({\n draggedOverGroup: currentDraggingElement.group,\n });\n }\n }\n\n _onStop = (group: string, newLayout: ConfigLayout[]) => {\n const {layoutChange, onDrop, temporaryLayout} = this.context;\n const {draggedOverGroup, currentDraggingElement} = this.state;\n\n if (\n currentDraggingElement &&\n draggedOverGroup !== null &&\n draggedOverGroup !== currentDraggingElement.group\n ) {\n // Skipping layout update when change event called for source grid\n // and waiting _onDrop\n return;\n }\n\n const groupedLayout = this.mergeGroupsLayout(group, newLayout);\n\n this._clearSharedDragState();\n this.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n if (temporaryLayout) {\n const temporaryItem = groupedLayout.find(({i}) => i === TEMPORARY_ITEM_ID);\n if (onDrop && temporaryItem) {\n onDrop(groupedLayout, temporaryItem);\n }\n } else {\n layoutChange(groupedLayout);\n }\n };\n\n _onSharedDrop = (targetGroup: string, newLayout: ConfigLayout[], tempItem: ConfigLayout) => {\n const {currentDraggingElement} = this.state;\n const {layoutChange} = this.context;\n\n if (!currentDraggingElement) {\n return;\n }\n\n const sourceLayoutItem = currentDraggingElement.layoutItem;\n\n const groupedLayout = this.mergeGroupsLayout(targetGroup, newLayout, tempItem).map(\n (item) => {\n if (item.i === sourceLayoutItem.i) {\n const copy = {...tempItem};\n\n delete copy.parent;\n if (targetGroup !== DEFAULT_GROUP) {\n copy.parent = targetGroup;\n }\n copy.i = sourceLayoutItem.i;\n\n return copy;\n }\n\n return item;\n },\n );\n\n this._clearSharedDragState();\n this.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n // TODO temporaryLayout\n layoutChange(groupedLayout);\n };\n\n _onExternalDrop = (\n group: string,\n newLayout: ConfigLayout[],\n item: ConfigLayout,\n e: MouseEvent,\n ) => {\n const {onDrop} = this.context;\n\n if (group !== DEFAULT_GROUP) {\n item.parent = group;\n }\n\n const groupedLayout = this.mergeGroupsLayout(group, newLayout, item);\n this._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this.setState({isDragging: false});\n\n onDrop?.(groupedLayout, item, e);\n };\n\n _onDrop = (\n group: string,\n newLayout: ConfigLayout[],\n item: ConfigLayout | undefined,\n e: MouseEvent,\n ): void | false => {\n if (!item || !this.context.editMode) {\n return false;\n }\n\n const {draggedOverGroup, currentDraggingElement} = this.state;\n if (currentDraggingElement && draggedOverGroup === group) {\n this._onSharedDrop(group, newLayout, item);\n } else {\n this._onExternalDrop(group, newLayout, item, e);\n }\n };\n\n _onDropDragOver = (\n group: string,\n e: DragOverEvent,\n ): {w?: number; h?: number} | false | undefined => {\n const {editMode, dragOverPlugin, onDropDragOver, temporaryLayout} = this.context;\n const {currentDraggingElement} = this.state;\n\n // TODO If temporary item is trying to change group\n if (temporaryLayout && currentDraggingElement) {\n return false;\n }\n\n if (!editMode || (!dragOverPlugin && !currentDraggingElement)) {\n return false;\n }\n\n const {properties, layout} = this.getLayoutAndPropsByGroup(group);\n\n if (currentDraggingElement) {\n const {h, w, i} = currentDraggingElement.layoutItem;\n const {type} = currentDraggingElement.item;\n const sharedItem: DraggedOverItem = {\n h,\n w,\n i,\n type,\n parent: currentDraggingElement.group,\n };\n\n return onDropDragOver(e, group, properties, layout, sharedItem);\n }\n\n if (dragOverPlugin) {\n return onDropDragOver(e, group, properties, layout);\n }\n\n return false;\n };\n\n _clearSharedDragState() {\n this._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this._sharedDragPositionRef.current = null;\n\n // Reset all group placeholders — covers the case where mouseup happens\n // in a gap between groups and no individual group's mouseUpHandler fires.\n this._groupResetRegistryRef.current.forEach((reset) => reset());\n }\n\n renderTemporaryPlaceholder(gridLayout: Partial<ReactGridLayoutProps>) {\n const {temporaryLayout, noOverlay, draggableHandleClassName} = this.context;\n\n if (!temporaryLayout || !temporaryLayout.dragProps) {\n return null;\n }\n\n const id = TEMPORARY_ITEM_ID;\n const {type} = temporaryLayout.dragProps;\n\n return (\n <GridItem\n key={id}\n id={id}\n item={{id, type, data: {}} as ConfigItem}\n layout={temporaryLayout.data}\n adjustWidgetLayout={this.adjustWidgetLayout}\n isDragging={this.state.isDragging}\n isPlaceholder={true}\n noOverlay={noOverlay}\n withCustomHandle={Boolean(draggableHandleClassName)}\n gridLayout={gridLayout}\n />\n );\n }\n\n renderGroup(\n group: string,\n renderLayout: ConfigLayout[],\n renderItems: ConfigItem[],\n offset = 0,\n groupGridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps,\n ) {\n const {registerManager} = this.context;\n const {currentDraggingElement, draggedOverGroup, isDragging, isDraggedOut} = this.state;\n\n const hasOwnGroupProperties = typeof groupGridProperties === 'function';\n const properties = hasOwnGroupProperties\n ? groupGridProperties({...registerManager.gridLayout})\n : registerManager.gridLayout;\n\n const {callbacks, layout, stableProperties} = this.getMemoGroupProps(\n group,\n renderLayout,\n properties,\n );\n\n const compactType: 'vertical' | 'horizontal' | null | undefined =\n stableProperties.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP\n ? 'horizontal'\n : stableProperties.compactType;\n\n const isDragCaptured = Boolean(\n currentDraggingElement &&\n group === currentDraggingElement.group &&\n draggedOverGroup !== null &&\n draggedOverGroup !== group,\n );\n const currentDraggingItemId =\n currentDraggingElement && 'id' in currentDraggingElement.item\n ? currentDraggingElement.item.id\n : null;\n\n // Non-source groups get stable false/null — memo skips re-render on drag move.\n const isSourceGroup = Boolean(currentDraggingElement?.group === group);\n const groupIsAnyDragging = isDragging && isSourceGroup;\n const groupCurrentDraggingItemId = isSourceGroup ? currentDraggingItemId : null;\n const groupIsAnyDraggedOut = isSourceGroup ? isDraggedOut : false;\n\n return (\n <GroupLayout\n key={`group_${group}`}\n group={group}\n renderItems={renderItems}\n offset={offset}\n properties={stableProperties}\n compactType={compactType}\n callbacks={callbacks}\n layout={layout}\n temporaryPlaceholder={this.renderTemporaryPlaceholder(stableProperties)}\n dragStateRef={this._sharedDragRef}\n sharedDragPositionRef={this._sharedDragPositionRef}\n groupResetRegistryRef={this._groupResetRegistryRef}\n isDragCaptured={isDragCaptured}\n isAnyDragging={groupIsAnyDragging}\n currentDraggingItemId={groupCurrentDraggingItemId}\n isAnyDraggedOut={groupIsAnyDraggedOut}\n adjustWidgetLayout={this.adjustWidgetLayout}\n getMemoForwardRefCallback={this.getMemoForwardRefCallback}\n />\n );\n }\n\n render() {\n const {config, groups, editMode, context} = this.context;\n\n this.pluginsRefs.length = this.context.configItems.length;\n\n const defaultRenderLayout: ConfigLayout[] = [];\n const defaultRenderItems: ConfigItem[] = [];\n const layoutMap: Record<string, string> = {};\n\n const groupedLayout = this.getActiveLayout().reduce<Record<string, ConfigLayout[]>>(\n (memo, item) => {\n if (item.parent) {\n if (!memo[item.parent]) {\n memo[item.parent] = [];\n }\n\n memo[item.parent].push(item);\n layoutMap[item.i] = item.parent;\n } else {\n defaultRenderLayout.push(item);\n }\n\n return memo;\n },\n {},\n );\n\n const itemsByGroup = this.context.configItems.reduce<Record<string, ConfigItem[]>>(\n (memo, item) => {\n const group = layoutMap[item.id];\n if (group) {\n if (!memo[group]) {\n memo[group] = [];\n }\n memo[group].push(item);\n } else {\n defaultRenderItems.push(item);\n }\n\n return memo;\n },\n {},\n );\n\n let offset = 0;\n\n if (groups) {\n return groups.map((group) => {\n const id = group.id || DEFAULT_GROUP;\n\n let layout, items;\n\n if (id === DEFAULT_GROUP) {\n layout = defaultRenderLayout;\n items = defaultRenderItems;\n } else {\n layout = groupedLayout[id] || [];\n items = itemsByGroup[id] || [];\n }\n\n const stableItems = this.getMemoGroupItems(id, items);\n const element = this.renderGroup(\n id,\n layout,\n stableItems,\n offset,\n group.gridProperties,\n );\n offset += stableItems.length;\n\n if (group.render) {\n const groupContext = {\n isMobile: false,\n config,\n editMode,\n items,\n layout,\n context,\n };\n return group.render(id, element, groupContext);\n }\n\n return element;\n });\n } else {\n const stableDefaultItems = this.getMemoGroupItems(DEFAULT_GROUP, defaultRenderItems);\n return this.renderGroup(DEFAULT_GROUP, defaultRenderLayout, stableDefaultItems, offset);\n }\n }\n}\n"]}
@@ -10,6 +10,7 @@ type DragOverLayoutProps = ReactGridLayout.ReactGridLayoutProps & {
10
10
  dragStateRef?: React.MutableRefObject<{
11
11
  isDragging: boolean;
12
12
  sourceGroup: string | null;
13
+ touchIdentifier?: number;
13
14
  }>;
14
15
  sharedDragPositionRef?: React.MutableRefObject<SharedDragPosition | null>;
15
16
  group?: string;
@@ -8,6 +8,7 @@ const react_dom_1 = require("react-dom");
8
8
  const react_grid_layout_1 = tslib_1.__importStar(require("react-grid-layout"));
9
9
  const resize_observer_polyfill_1 = tslib_1.__importDefault(require("resize-observer-polyfill"));
10
10
  const constants_1 = require("../../constants/index.js");
11
+ const utils_1 = require("./utils.js");
11
12
  const GRID_LAYOUT_CLASS_NAME = 'react-grid-layout';
12
13
  const SETTLED_WIDTH_COMMIT_DELAY = 150;
13
14
  const isRefObject = (value) => {
@@ -37,6 +38,7 @@ class DragOverLayout extends react_grid_layout_1.default {
37
38
  // Without this flag, our setState would trigger onLayoutChange back to the consumer
38
39
  // that just initiated the action, causing a spurious 'change' event.
39
40
  this._isRestoringExternalLayout = false;
41
+ this.touchTarget = null;
40
42
  this.gridItemChildren = new WeakMap();
41
43
  // Reset placeholder when item dragged from outside
42
44
  this.resetExternalPlaceholder = () => {
@@ -71,6 +73,9 @@ class DragOverLayout extends react_grid_layout_1.default {
71
73
  return savedLayout;
72
74
  };
73
75
  this.extendedOnDrag = (i, x, y, sintEv) => {
76
+ if ('touches' in sintEv.e) {
77
+ this.updateTouchTarget(sintEv.e);
78
+ }
74
79
  if (this.props.isDragCaptured) {
75
80
  if (!this._savedDraggedOutLayout) {
76
81
  this._savedDraggedOutLayout = this.hideLocalPlaceholder(i);
@@ -82,6 +87,14 @@ class DragOverLayout extends react_grid_layout_1.default {
82
87
  this.parentOnDrag(i, x, y, sintEv);
83
88
  };
84
89
  this.extendedOnDragStop = (i, x, y, sintEv) => {
90
+ var _a, _b;
91
+ if ('changedTouches' in sintEv.e) {
92
+ const position = (0, utils_1.getEventPosition)(sintEv.e, (_a = this.props.dragStateRef) === null || _a === void 0 ? void 0 : _a.current.touchIdentifier);
93
+ if (position) {
94
+ (_b = this.touchTarget) === null || _b === void 0 ? void 0 : _b.dispatchEvent(new MouseEvent('mouseup', position));
95
+ }
96
+ this.touchTarget = null;
97
+ }
85
98
  // Restoring layout if item was dropped outside of the grid
86
99
  if (this._savedDraggedOutLayout) {
87
100
  const savedLayout = this._savedDraggedOutLayout;
@@ -338,6 +351,23 @@ class DragOverLayout extends react_grid_layout_1.default {
338
351
  }
339
352
  return react_1.default.cloneElement(gridItem, { children: gridItemChild });
340
353
  }
354
+ updateTouchTarget(event) {
355
+ var _a, _b;
356
+ const position = (0, utils_1.getEventPosition)(event, (_a = this.props.dragStateRef) === null || _a === void 0 ? void 0 : _a.current.touchIdentifier);
357
+ if (!position) {
358
+ return;
359
+ }
360
+ const target = document
361
+ .elementsFromPoint(position.clientX, position.clientY)
362
+ .find((element) => element.classList.contains(GRID_LAYOUT_CLASS_NAME)) || null;
363
+ // Touch events keep their original target, so route group transitions explicitly.
364
+ if (target !== this.touchTarget) {
365
+ (_b = this.touchTarget) === null || _b === void 0 ? void 0 : _b.dispatchEvent(new MouseEvent('mouseleave', position));
366
+ target === null || target === void 0 ? void 0 : target.dispatchEvent(new MouseEvent('mouseenter', position));
367
+ this.touchTarget = target;
368
+ }
369
+ target === null || target === void 0 ? void 0 : target.dispatchEvent(new MouseEvent('mousemove', position));
370
+ }
341
371
  }
342
372
  class PassiveWidthProvider extends react_1.default.Component {
343
373
  constructor() {