@gravity-ui/dashkit 10.1.1 → 10.1.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.
- package/build/cjs/components/GridLayout/GridLayout.d.ts +2 -0
- package/build/cjs/components/GridLayout/GridLayout.js +16 -6
- package/build/cjs/components/GridLayout/GridLayout.js.map +1 -1
- package/build/cjs/components/GridLayout/GroupLayout.d.ts +1 -0
- package/build/cjs/components/GridLayout/GroupLayout.js +2 -2
- package/build/cjs/components/GridLayout/GroupLayout.js.map +1 -1
- package/build/cjs/components/GridLayout/ReactGridLayout.d.ts +1 -0
- package/build/cjs/components/GridLayout/ReactGridLayout.js +16 -9
- package/build/cjs/components/GridLayout/ReactGridLayout.js.map +1 -1
- package/build/cjs/package.json +1 -1
- package/build/esm/components/GridLayout/GridLayout.d.ts +2 -0
- package/build/esm/components/GridLayout/GridLayout.js +16 -6
- package/build/esm/components/GridLayout/GridLayout.js.map +1 -1
- package/build/esm/components/GridLayout/GroupLayout.d.ts +1 -0
- package/build/esm/components/GridLayout/GroupLayout.js +2 -2
- package/build/esm/components/GridLayout/GroupLayout.js.map +1 -1
- package/build/esm/components/GridLayout/ReactGridLayout.d.ts +1 -0
- package/build/esm/components/GridLayout/ReactGridLayout.js +16 -9
- package/build/esm/components/GridLayout/ReactGridLayout.js.map +1 -1
- package/build/esm/package.json +1 -1
- package/package.json +2 -1
|
@@ -15,6 +15,7 @@ export default class GridLayout extends React.PureComponent<GridLayoutProps, Gri
|
|
|
15
15
|
private _memoGroupsItems;
|
|
16
16
|
private _sharedDragRef;
|
|
17
17
|
private _sharedDragPositionRef;
|
|
18
|
+
private _groupResetRegistryRef;
|
|
18
19
|
private _timeout?;
|
|
19
20
|
private _lastReloadAt?;
|
|
20
21
|
private _parendDragNode;
|
|
@@ -62,6 +63,7 @@ export default class GridLayout extends React.PureComponent<GridLayoutProps, Gri
|
|
|
62
63
|
w?: number;
|
|
63
64
|
h?: number;
|
|
64
65
|
} | false | undefined;
|
|
66
|
+
_clearSharedDragState(): void;
|
|
65
67
|
renderTemporaryPlaceholder(gridLayout: Partial<ReactGridLayoutProps>): JSX.Element | null;
|
|
66
68
|
renderGroup(group: string, renderLayout: ConfigLayout[], renderItems: ConfigItem[], offset?: number, groupGridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps): JSX.Element;
|
|
67
69
|
render(): JSX.Element | (string | number | boolean | JSX.Element | React.ReactFragment | null | undefined)[];
|
|
@@ -22,6 +22,9 @@ class GridLayout extends React.PureComponent {
|
|
|
22
22
|
this._memoGroupsItems = {};
|
|
23
23
|
this._sharedDragRef = { current: { isDragging: false, sourceGroup: null } };
|
|
24
24
|
this._sharedDragPositionRef = { current: null };
|
|
25
|
+
this._groupResetRegistryRef = {
|
|
26
|
+
current: new Map(),
|
|
27
|
+
};
|
|
25
28
|
this._parendDragNode = null;
|
|
26
29
|
this.onVisibilityChange = () => {
|
|
27
30
|
this.setState({
|
|
@@ -86,8 +89,7 @@ class GridLayout extends React.PureComponent {
|
|
|
86
89
|
return;
|
|
87
90
|
}
|
|
88
91
|
const groupedLayout = this.mergeGroupsLayout(group, newLayout);
|
|
89
|
-
this.
|
|
90
|
-
this._sharedDragPositionRef.current = null;
|
|
92
|
+
this._clearSharedDragState();
|
|
91
93
|
this.setState({
|
|
92
94
|
isDragging: false,
|
|
93
95
|
currentDraggingElement: null,
|
|
@@ -122,8 +124,7 @@ class GridLayout extends React.PureComponent {
|
|
|
122
124
|
}
|
|
123
125
|
return item;
|
|
124
126
|
});
|
|
125
|
-
this.
|
|
126
|
-
this._sharedDragPositionRef.current = null;
|
|
127
|
+
this._clearSharedDragState();
|
|
127
128
|
this.setState({
|
|
128
129
|
isDragging: false,
|
|
129
130
|
currentDraggingElement: null,
|
|
@@ -414,7 +415,9 @@ class GridLayout extends React.PureComponent {
|
|
|
414
415
|
this.setState({ isDragging: true });
|
|
415
416
|
}
|
|
416
417
|
else {
|
|
417
|
-
this._sharedDragRef.current
|
|
418
|
+
if (!this._sharedDragRef.current.isDragging) {
|
|
419
|
+
this._sharedDragRef.current = { isDragging: true, sourceGroup: group };
|
|
420
|
+
}
|
|
418
421
|
this._initDragCoordinatesWatcher(element);
|
|
419
422
|
this.updateDraggingElementState(group, layoutItem, e);
|
|
420
423
|
this.setState({ isDragging: true });
|
|
@@ -460,6 +463,13 @@ class GridLayout extends React.PureComponent {
|
|
|
460
463
|
});
|
|
461
464
|
}
|
|
462
465
|
}
|
|
466
|
+
_clearSharedDragState() {
|
|
467
|
+
this._sharedDragRef.current = { isDragging: false, sourceGroup: null };
|
|
468
|
+
this._sharedDragPositionRef.current = null;
|
|
469
|
+
// Reset all group placeholders — covers the case where mouseup happens
|
|
470
|
+
// in a gap between groups and no individual group's mouseUpHandler fires.
|
|
471
|
+
this._groupResetRegistryRef.current.forEach((reset) => reset());
|
|
472
|
+
}
|
|
463
473
|
renderTemporaryPlaceholder(gridLayout) {
|
|
464
474
|
const { temporaryLayout, noOverlay, draggableHandleClassName } = this.context;
|
|
465
475
|
if (!temporaryLayout || !temporaryLayout.dragProps) {
|
|
@@ -492,7 +502,7 @@ class GridLayout extends React.PureComponent {
|
|
|
492
502
|
const groupIsAnyDragging = isDragging && isSourceGroup;
|
|
493
503
|
const groupCurrentDraggingItemId = isSourceGroup ? currentDraggingItemId : null;
|
|
494
504
|
const groupIsAnyDraggedOut = isSourceGroup ? isDraggedOut : false;
|
|
495
|
-
return (React.createElement(GroupLayout, { key: `group_${group}`, group: group, renderItems: renderItems, offset: offset, properties: stableProperties, compactType: compactType, callbacks: callbacks, layout: layout, temporaryPlaceholder: this.renderTemporaryPlaceholder(stableProperties), dragStateRef: this._sharedDragRef, sharedDragPositionRef: this._sharedDragPositionRef, isDragCaptured: isDragCaptured, isAnyDragging: groupIsAnyDragging, currentDraggingItemId: groupCurrentDraggingItemId, isAnyDraggedOut: groupIsAnyDraggedOut, adjustWidgetLayout: this.adjustWidgetLayout, getMemoForwardRefCallback: this.getMemoForwardRefCallback }));
|
|
505
|
+
return (React.createElement(GroupLayout, { key: `group_${group}`, group: group, renderItems: renderItems, offset: offset, properties: stableProperties, compactType: compactType, callbacks: callbacks, layout: layout, temporaryPlaceholder: this.renderTemporaryPlaceholder(stableProperties), dragStateRef: this._sharedDragRef, sharedDragPositionRef: this._sharedDragPositionRef, groupResetRegistryRef: this._groupResetRegistryRef, isDragCaptured: isDragCaptured, isAnyDragging: groupIsAnyDragging, currentDraggingItemId: groupCurrentDraggingItemId, isAnyDraggedOut: groupIsAnyDraggedOut, adjustWidgetLayout: this.adjustWidgetLayout, getMemoForwardRefCallback: this.getMemoForwardRefCallback }));
|
|
496
506
|
}
|
|
497
507
|
render() {
|
|
498
508
|
const { config, groups, editMode, context } = this.context;
|
|
@@ -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\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 this._sharedDragRef.current = {isDragging: true, sourceGroup: group};\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._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this._sharedDragPositionRef.current = null;\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._sharedDragRef.current = {isDragging: false, sourceGroup: null};\n this._sharedDragPositionRef.current = null;\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 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 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';\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"]}
|
|
@@ -18,7 +18,7 @@ function groupLayoutPropsAreEqual(prev, next) {
|
|
|
18
18
|
const hasTmpPlaceholderChanged = prev.temporaryPlaceholder !== next.temporaryPlaceholder;
|
|
19
19
|
return !needRerenderIfChanged && !needRerenderGroupScoped && !hasTmpPlaceholderChanged;
|
|
20
20
|
}
|
|
21
|
-
export const GroupLayout = React.memo(function GroupLayout({ group, renderItems, offset, properties, compactType, callbacks, layout, temporaryPlaceholder, dragStateRef, sharedDragPositionRef, isDragCaptured, isAnyDragging, currentDraggingItemId, isAnyDraggedOut, adjustWidgetLayout, getMemoForwardRefCallback, }) {
|
|
21
|
+
export const GroupLayout = React.memo(function GroupLayout({ group, renderItems, offset, properties, compactType, callbacks, layout, temporaryPlaceholder, dragStateRef, sharedDragPositionRef, groupResetRegistryRef, isDragCaptured, isAnyDragging, currentDraggingItemId, isAnyDraggedOut, adjustWidgetLayout, getMemoForwardRefCallback, }) {
|
|
22
22
|
const { editMode, noOverlay, focusable, draggableHandleClassName, outerDnDEnable, onItemMountChange, onItemRender, onItemFocus, onItemBlur, } = React.useContext(DashKitContext);
|
|
23
23
|
// Use group-specific noOverlay if it was explicitly set via groupGridProperties,
|
|
24
24
|
// otherwise fallback to the dashboard-level noOverlay from context.
|
|
@@ -50,7 +50,7 @@ export const GroupLayout = React.memo(function GroupLayout({ group, renderItems,
|
|
|
50
50
|
getMemoForwardRefCallback,
|
|
51
51
|
editMode,
|
|
52
52
|
]);
|
|
53
|
-
return (React.createElement(Layout, Object.assign({ key: `group_${group}`, isDraggable: editMode, isResizable: editMode }, properties, { compactType: compactType, layout: layout, draggableCancel: `.${DRAGGABLE_CANCEL_CLASS_NAME}`, draggableHandle: draggableHandleClassName ? `.${draggableHandleClassName}` : undefined, onDragStart: callbacks.onDragStart, onDrag: callbacks.onDrag, onDragStop: callbacks.onDragStop, onResizeStart: callbacks.onResizeStart, onResize: callbacks.onResize, onResizeStop: callbacks.onResizeStop, onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, dragStateRef: dragStateRef, sharedDragPositionRef: sharedDragPositionRef, group: group, isDragCaptured: isDragCaptured, isDroppable: Boolean(outerDnDEnable) && editMode }),
|
|
53
|
+
return (React.createElement(Layout, Object.assign({ key: `group_${group}`, isDraggable: editMode, isResizable: editMode }, properties, { compactType: compactType, layout: layout, draggableCancel: `.${DRAGGABLE_CANCEL_CLASS_NAME}`, draggableHandle: draggableHandleClassName ? `.${draggableHandleClassName}` : undefined, onDragStart: callbacks.onDragStart, onDrag: callbacks.onDrag, onDragStop: callbacks.onDragStop, onResizeStart: callbacks.onResizeStart, onResize: callbacks.onResize, onResizeStop: callbacks.onResizeStop, onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, dragStateRef: dragStateRef, sharedDragPositionRef: sharedDragPositionRef, groupResetRegistryRef: groupResetRegistryRef, group: group, isDragCaptured: isDragCaptured, isDroppable: Boolean(outerDnDEnable) && editMode }),
|
|
54
54
|
itemElements,
|
|
55
55
|
temporaryPlaceholder));
|
|
56
56
|
}, groupLayoutPropsAreEqual);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/GroupLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,2BAA2B,EAAC,iCAAwB;AAC5D,OAAO,EAAC,cAAc,EAAC,+BAAsB;AAG7C,OAAO,QAAQ,gCAA6B;AAE5C,OAAO,EAAC,MAAM,EAAC,6BAA0B;AAEzC,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,mBAAgB;
|
|
1
|
+
{"version":3,"file":"GroupLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/GroupLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {DRAGGABLE_CANCEL_CLASS_NAME} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport type {ConfigItem, ConfigLayout} from '../../shared';\nimport type {PluginRef, PluginWidgetProps, ReactGridLayoutProps} from '../../typings';\nimport GridItem from '../GridItem/GridItem';\n\nimport {Layout} from './ReactGridLayout';\nimport type {GroupCallbacks} from './types';\nimport {shallowArrayEqual, shallowObjectEqual} from './utils';\n\nexport interface GroupLayoutProps {\n group: string;\n renderItems: ConfigItem[];\n offset: number;\n\n // Pre-computed by GridLayout.renderGroup (stable refs via getMemoGroupProps)\n properties: Partial<ReactGridLayoutProps>;\n compactType: 'vertical' | 'horizontal' | null | undefined;\n callbacks: GroupCallbacks;\n layout: ConfigLayout[];\n temporaryPlaceholder: React.ReactNode;\n\n // Refs read imperatively by DragOverLayout — no re-render on drag start.\n isDragCaptured: boolean;\n dragStateRef: React.MutableRefObject<{isDragging: boolean; sourceGroup: string | null}>;\n sharedDragPositionRef: React.MutableRefObject<{offsetX: number; offsetY: number} | null>;\n groupResetRegistryRef: React.MutableRefObject<Map<string, () => void>>;\n\n // Drag state scoped to this group only (always false/null for non-source groups)\n isAnyDragging: boolean;\n currentDraggingItemId: string | null;\n isAnyDraggedOut: boolean;\n\n // Stable instance method refs from GridLayout (arrow function class properties)\n adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'];\n getMemoForwardRefCallback: (index: number) => (ref: PluginRef) => void;\n}\n\nfunction groupLayoutPropsAreEqual(prev: GroupLayoutProps, next: GroupLayoutProps): boolean {\n const needRerenderIfChanged =\n prev.group !== next.group ||\n prev.layout !== next.layout ||\n prev.offset !== next.offset ||\n !shallowArrayEqual(prev.renderItems, next.renderItems) ||\n !shallowObjectEqual(prev.properties, next.properties);\n\n // Drag refs are stable and never trigger re-renders; only group-scoped state matters.\n const needRerenderGroupScoped =\n prev.isDragCaptured !== next.isDragCaptured ||\n prev.isAnyDragging !== next.isAnyDragging ||\n prev.currentDraggingItemId !== next.currentDraggingItemId ||\n prev.isAnyDraggedOut !== next.isAnyDraggedOut;\n\n const hasTmpPlaceholderChanged = prev.temporaryPlaceholder !== next.temporaryPlaceholder;\n\n return !needRerenderIfChanged && !needRerenderGroupScoped && !hasTmpPlaceholderChanged;\n}\n\nexport const GroupLayout = React.memo(function GroupLayout({\n group,\n renderItems,\n offset,\n properties,\n compactType,\n callbacks,\n layout,\n temporaryPlaceholder,\n dragStateRef,\n sharedDragPositionRef,\n groupResetRegistryRef,\n isDragCaptured,\n isAnyDragging,\n currentDraggingItemId,\n isAnyDraggedOut,\n adjustWidgetLayout,\n getMemoForwardRefCallback,\n}: GroupLayoutProps) {\n const {\n editMode,\n noOverlay,\n focusable,\n draggableHandleClassName,\n outerDnDEnable,\n onItemMountChange,\n onItemRender,\n onItemFocus,\n onItemBlur,\n } = React.useContext(DashKitContext);\n\n // Use group-specific noOverlay if it was explicitly set via groupGridProperties,\n // otherwise fallback to the dashboard-level noOverlay from context.\n const resolvedNoOverlay = 'noOverlay' in properties ? properties.noOverlay : noOverlay;\n\n // Memoize items array; non-source groups have stable false/null drag props so React skips their subtrees.\n const itemElements = React.useMemo(() => {\n return renderItems.map((item, i) => {\n const keyId = item.id;\n\n const isDragging = editMode && isAnyDragging && keyId === currentDraggingItemId;\n const isDraggedOut = isDragging && isAnyDraggedOut;\n\n return (\n <GridItem\n key={keyId}\n forwardedPluginRef={getMemoForwardRefCallback(offset + i)}\n id={keyId}\n item={item}\n layout={layout}\n adjustWidgetLayout={adjustWidgetLayout}\n isDragging={isDragging}\n isDraggedOut={isDraggedOut || undefined}\n noOverlay={resolvedNoOverlay}\n focusable={focusable}\n withCustomHandle={Boolean(draggableHandleClassName)}\n onItemMountChange={onItemMountChange}\n onItemRender={onItemRender}\n gridLayout={properties}\n onItemFocus={onItemFocus}\n onItemBlur={onItemBlur}\n />\n );\n });\n }, [\n renderItems,\n isAnyDragging,\n currentDraggingItemId,\n isAnyDraggedOut,\n offset,\n layout,\n adjustWidgetLayout,\n resolvedNoOverlay,\n focusable,\n draggableHandleClassName,\n onItemMountChange,\n onItemRender,\n properties,\n onItemFocus,\n onItemBlur,\n getMemoForwardRefCallback,\n editMode,\n ]);\n\n return (\n <Layout\n key={`group_${group}`}\n isDraggable={editMode}\n isResizable={editMode}\n {...properties}\n compactType={compactType}\n layout={layout}\n draggableCancel={`.${DRAGGABLE_CANCEL_CLASS_NAME}`}\n draggableHandle={draggableHandleClassName ? `.${draggableHandleClassName}` : undefined}\n onDragStart={callbacks.onDragStart}\n onDrag={callbacks.onDrag}\n onDragStop={callbacks.onDragStop}\n onResizeStart={callbacks.onResizeStart}\n onResize={callbacks.onResize}\n onResizeStop={callbacks.onResizeStop}\n onDragTargetRestore={callbacks.onDragTargetRestore}\n onDropDragOver={callbacks.onDropDragOver}\n onDrop={callbacks.onDrop}\n dragStateRef={dragStateRef}\n sharedDragPositionRef={sharedDragPositionRef}\n groupResetRegistryRef={groupResetRegistryRef}\n group={group}\n isDragCaptured={isDragCaptured}\n isDroppable={Boolean(outerDnDEnable) && editMode}\n >\n {itemElements}\n {temporaryPlaceholder}\n </Layout>\n );\n}, groupLayoutPropsAreEqual);\n"]}
|
|
@@ -15,5 +15,6 @@ export declare const Layout: React.ComponentClass<ReactGridLayout.ReactGridLayou
|
|
|
15
15
|
group?: string;
|
|
16
16
|
onDragTargetRestore?: () => void;
|
|
17
17
|
transformScaleRef?: React.MutableRefObject<number>;
|
|
18
|
+
groupResetRegistryRef?: React.MutableRefObject<Map<string, () => void>>;
|
|
18
19
|
} & ReactGridLayout.WidthProviderProps, any>;
|
|
19
20
|
export {};
|
|
@@ -81,12 +81,10 @@ class DragOverLayout extends ReactGridLayout {
|
|
|
81
81
|
this.parentOnDragStop(i, x, y, sintEv);
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
|
-
// Returns true when another group's item is being dragged over this grid.
|
|
85
|
-
// Reads from the ref directly — no re-render required to stay current.
|
|
86
84
|
this.isSharedDragTarget = () => {
|
|
87
85
|
var _a;
|
|
88
86
|
const drag = (_a = this.props.dragStateRef) === null || _a === void 0 ? void 0 : _a.current;
|
|
89
|
-
return Boolean(
|
|
87
|
+
return Boolean(drag === null || drag === void 0 ? void 0 : drag.isDragging);
|
|
90
88
|
};
|
|
91
89
|
// Proxy mouse events -> drag methods for dnd between groups
|
|
92
90
|
this.mouseEnterHandler = (e) => {
|
|
@@ -108,7 +106,9 @@ class DragOverLayout extends ReactGridLayout {
|
|
|
108
106
|
}
|
|
109
107
|
};
|
|
110
108
|
this.mouseMoveHandler = (e) => {
|
|
111
|
-
|
|
109
|
+
var _a;
|
|
110
|
+
if (this.isSharedDragTarget() &&
|
|
111
|
+
this.props.group !== ((_a = this.props.dragStateRef) === null || _a === void 0 ? void 0 : _a.current.sourceGroup)) {
|
|
112
112
|
if (!e.nativeEvent) {
|
|
113
113
|
// Emulate nativeEvent for firefox
|
|
114
114
|
const target = this.getInnerElement() || e.target;
|
|
@@ -123,16 +123,16 @@ class DragOverLayout extends ReactGridLayout {
|
|
|
123
123
|
}
|
|
124
124
|
};
|
|
125
125
|
this.mouseUpHandler = (e) => {
|
|
126
|
-
var _a, _b;
|
|
126
|
+
var _a, _b, _c;
|
|
127
127
|
if (this.isSharedDragTarget()) {
|
|
128
128
|
e.preventDefault();
|
|
129
129
|
const { droppingItem } = this.props;
|
|
130
130
|
const { layout } = this.state;
|
|
131
131
|
const item = layout.find((l) => l.i === (droppingItem === null || droppingItem === void 0 ? void 0 : droppingItem.i));
|
|
132
|
-
// reset dragEnter counter on drop
|
|
133
|
-
this.
|
|
132
|
+
// reset dragEnter counter on drop for all registered groups
|
|
133
|
+
(_a = this.props.groupResetRegistryRef) === null || _a === void 0 ? void 0 : _a.current.forEach((reset) => reset());
|
|
134
134
|
if (item) {
|
|
135
|
-
(
|
|
135
|
+
(_c = (_b = this.props).onDrop) === null || _c === void 0 ? void 0 : _c.call(_b, layout, item, e);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
};
|
|
@@ -146,8 +146,11 @@ class DragOverLayout extends ReactGridLayout {
|
|
|
146
146
|
this.onDragStop = this.extendedOnDragStop;
|
|
147
147
|
}
|
|
148
148
|
componentDidMount() {
|
|
149
|
-
var _a;
|
|
149
|
+
var _a, _b;
|
|
150
150
|
(_a = super.componentDidMount) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
151
|
+
if (this.props.group !== undefined) {
|
|
152
|
+
(_b = this.props.groupResetRegistryRef) === null || _b === void 0 ? void 0 : _b.current.set(this.props.group, this.resetExternalPlaceholder);
|
|
153
|
+
}
|
|
151
154
|
// If cursor is moved out of the window there is a bug
|
|
152
155
|
// which leaves placeholder element in grid, this action needed to reset this state
|
|
153
156
|
window.addEventListener('dragend', this.resetExternalPlaceholder);
|
|
@@ -160,6 +163,10 @@ class DragOverLayout extends ReactGridLayout {
|
|
|
160
163
|
}
|
|
161
164
|
}
|
|
162
165
|
componentWillUnmount() {
|
|
166
|
+
var _a;
|
|
167
|
+
if (this.props.group !== undefined) {
|
|
168
|
+
(_a = this.props.groupResetRegistryRef) === null || _a === void 0 ? void 0 : _a.current.delete(this.props.group);
|
|
169
|
+
}
|
|
163
170
|
window.removeEventListener('dragend', this.resetExternalPlaceholder);
|
|
164
171
|
const innerElement = this.getInnerElement();
|
|
165
172
|
if (innerElement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactGridLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/ReactGridLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {Layout as RGLLayout} from 'react-grid-layout';\n// @ts-expect-error - utils is not exported in type definitions\nimport ReactGridLayout, {WidthProvider, utils} from 'react-grid-layout';\n\nimport {DROPPING_ELEMENT_CLASS_NAME, OVERLAY_CLASS_NAME} from '../../constants';\n\nconst isRefObject = (\n value: React.Ref<HTMLDivElement>,\n): value is React.RefObject<HTMLDivElement> => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'current' in value &&\n typeof value.current === 'object'\n );\n};\n\ntype SharedDragPosition = {\n offsetX: number;\n offsetY: number;\n};\n\ntype DragOverLayoutProps = ReactGridLayout.ReactGridLayoutProps & {\n innerRef?: React.Ref<HTMLDivElement>;\n isDragCaptured?: boolean;\n dragStateRef?: React.MutableRefObject<{isDragging: boolean; sourceGroup: string | null}>;\n sharedDragPositionRef?: React.MutableRefObject<SharedDragPosition | null>;\n group?: string;\n onDragTargetRestore?: () => void;\n transformScaleRef?: React.MutableRefObject<number>;\n};\n\ntype DragOverLayoutState = {\n layout: RGLLayout[];\n activeDrag: RGLLayout | null;\n};\n\ntype RGLLayoutWithPlaceholder = RGLLayout & {placeholder?: boolean};\n\ntype OnDragMethod = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n) => void;\n\nclass DragOverLayout extends ReactGridLayout {\n // @ts-expect-error - TypeScript doesn't allow direct property redeclaration in extending classes. We need to narrow the props type from ReactGridLayoutProps to DragOverLayoutProps for type safety in our custom methods\n props: DragOverLayoutProps;\n // @ts-expect-error - TypeScript doesn't allow direct property redeclaration in extending classes. State is initialized by parent constructor\n state: DragOverLayoutState;\n\n parentOnDrag: OnDragMethod;\n parentOnDragStop: OnDragMethod;\n _savedDraggedOutLayout: RGLLayout[] | null = null;\n\n constructor(props: DragOverLayoutProps, context?: unknown) {\n super(props, context);\n\n // @ts-expect-error - onDrag is a protected method in parent class\n this.parentOnDrag = this.onDrag;\n // @ts-expect-error - assigning custom method to parent's onDrag\n this.onDrag = this.extendedOnDrag;\n\n // @ts-expect-error - onDragStop is a protected method in parent class\n this.parentOnDragStop = this.onDragStop;\n // @ts-expect-error - assigning custom method to parent's onDragStop\n this.onDragStop = this.extendedOnDragStop;\n }\n\n componentDidMount(): void {\n super.componentDidMount?.();\n\n // If cursor is moved out of the window there is a bug\n // which leaves placeholder element in grid, this action needed to reset this state\n window.addEventListener('dragend', this.resetExternalPlaceholder);\n const innerElement = this.getInnerElement();\n\n if (innerElement) {\n innerElement.addEventListener('mouseup', this.mouseUpHandler);\n innerElement.addEventListener('mouseenter', this.mouseEnterHandler);\n innerElement.addEventListener('mouseleave', this.mouseLeaveHandler);\n innerElement.addEventListener('mousemove', this.mouseMoveHandler);\n }\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('dragend', this.resetExternalPlaceholder);\n const innerElement = this.getInnerElement();\n\n if (innerElement) {\n innerElement.removeEventListener('mouseup', this.mouseUpHandler);\n innerElement.removeEventListener('mouseenter', this.mouseEnterHandler);\n innerElement.removeEventListener('mouseleave', this.mouseLeaveHandler);\n innerElement.removeEventListener('mousemove', this.mouseMoveHandler);\n }\n }\n\n // react-grid-layout doens't calculate it's height when last element is removed\n // and just keeps the previous value\n // so for autosize to work in that case we are resetting it's height value\n containerHeight(): string | undefined {\n if (this.props.autoSize && this.state.layout.length === 0) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n // @ts-expect-error - containerHeight is a protected method in parent class\n return super.containerHeight();\n }\n\n // innerRef is passed by WithProvider without this wrapper there are only\n // * findDOMNode - deprecated\n // * rewrite whole ReactGridLayout.render method\n // so in that case don't try to use this class on it's own\n // or pass innerRef: React.MutableRef as it's not optional prop\n getInnerElement(): HTMLDivElement | null {\n const {innerRef} = this.props;\n\n return innerRef && isRefObject(innerRef) && innerRef.current ? innerRef.current : null;\n }\n\n // Reset placeholder when item dragged from outside\n resetExternalPlaceholder = (): void => {\n // @ts-expect-error - dragEnterCounter is an internal property of parent class\n if (this.dragEnterCounter) {\n // @ts-expect-error - dragEnterCounter is an internal property of parent class\n this.dragEnterCounter = 0;\n // @ts-expect-error - removeDroppingPlaceholder is a protected method in parent class\n this.removeDroppingPlaceholder();\n }\n };\n\n // Hide placeholder when element is dragged out\n hideLocalPlaceholder = (i: string): RGLLayout[] => {\n const {layout} = this.state;\n const {cols} = this.props;\n const savedLayout = layout.map((item) => ({...item}));\n\n let hiddenElement: RGLLayout | undefined;\n const newLayout = utils.compact(\n layout.filter((item) => {\n if (item.i === i) {\n hiddenElement = item;\n return false;\n }\n\n return true;\n }),\n utils.compactType(this.props),\n cols,\n );\n\n if (hiddenElement) {\n newLayout.push(hiddenElement);\n }\n\n this.setState({\n activeDrag: null,\n layout: newLayout,\n });\n\n return savedLayout;\n };\n\n extendedOnDrag = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n ): void => {\n if (this.props.isDragCaptured) {\n if (!this._savedDraggedOutLayout) {\n this._savedDraggedOutLayout = this.hideLocalPlaceholder(i);\n }\n\n return;\n }\n\n this._savedDraggedOutLayout = null;\n // parent onDrag will show new placeholder again\n this.parentOnDrag(i, x, y, sintEv);\n };\n\n extendedOnDragStop = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n ): void => {\n // Restoring layout if item was dropped outside of the grid\n if (this._savedDraggedOutLayout) {\n const savedLayout = this._savedDraggedOutLayout;\n const l = utils.getLayoutItem(savedLayout, i);\n\n // Create placeholder (display only)\n const placeholder: RGLLayoutWithPlaceholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i,\n };\n\n this.setState(\n {\n layout: savedLayout,\n activeDrag: placeholder,\n },\n () => {\n this.parentOnDragStop(i, x, y, sintEv);\n },\n );\n\n this._savedDraggedOutLayout = null;\n } else {\n this.parentOnDragStop(i, x, y, sintEv);\n }\n };\n\n // Returns true when another group's item is being dragged over this grid.\n // Reads from the ref directly — no re-render required to stay current.\n isSharedDragTarget = (): boolean => {\n const drag = this.props.dragStateRef?.current;\n return Boolean(drag?.isDragging && drag?.sourceGroup !== this.props.group);\n };\n\n // Proxy mouse events -> drag methods for dnd between groups\n mouseEnterHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n // @ts-expect-error - onDragEnter is a protected method in parent class\n this.onDragEnter(e);\n } else if (this.props.isDragCaptured) {\n this.props.onDragTargetRestore?.();\n }\n };\n\n mouseLeaveHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n // @ts-expect-error - onDragLeave is a protected method in parent class\n this.onDragLeave(e);\n this.props.onDragTargetRestore?.();\n }\n };\n\n mouseMoveHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n if (!(e as MouseEvent & {nativeEvent?: MouseEvent}).nativeEvent) {\n // Emulate nativeEvent for firefox\n const target = this.getInnerElement() || (e.target as HTMLElement);\n\n (e as MouseEvent & {nativeEvent: Partial<MouseEvent>}).nativeEvent = {\n clientX: e.clientX,\n clientY: e.clientY,\n target,\n };\n }\n\n // @ts-expect-error - onDragOver is a protected method in parent class\n this.onDragOver(e);\n }\n };\n\n mouseUpHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n e.preventDefault();\n const {droppingItem} = this.props;\n const {layout} = this.state;\n const item = layout.find((l) => l.i === droppingItem?.i);\n\n // reset dragEnter counter on drop\n this.resetExternalPlaceholder();\n\n if (item) {\n this.props.onDrop?.(layout, item, e);\n }\n }\n };\n\n calculateDroppingPosition(itemProps: {\n containerWidth: number;\n cols: number;\n w: number;\n h: number;\n rowHeight: number;\n margin: [number, number];\n transformScale: number;\n droppingPosition: {left: number; top: number};\n }): {left: number; top: number} {\n const {containerWidth, cols, w, h, rowHeight, margin, transformScale, droppingPosition} =\n itemProps;\n const sharedDragPosition = this.props.sharedDragPositionRef?.current;\n\n let offsetX: number, offsetY: number;\n\n if (sharedDragPosition) {\n offsetX = sharedDragPosition.offsetX;\n offsetY = sharedDragPosition.offsetY;\n } else {\n offsetX = (((containerWidth / cols) * w) / 2 || 0) * transformScale;\n offsetY = ((h * rowHeight + (h - 1) * margin[1]) / 2 || 0) * transformScale;\n }\n\n return {\n ...droppingPosition,\n left: droppingPosition.left - offsetX,\n top: droppingPosition.top - offsetY,\n };\n }\n\n // Drop item from outside gets 0,0 droppingPosition\n // centering cursor on newly creted grid item\n // And cause grid-layout using it's own GridItem to make it look\n // like overlay adding className\n processGridItem(\n child: React.ReactElement,\n isDroppingItem?: boolean,\n ): React.ReactElement | undefined {\n // @ts-expect-error - processGridItem is a protected method in parent class\n const gridItem = super.processGridItem?.(child, isDroppingItem);\n\n if (!gridItem) {\n return gridItem;\n }\n\n // Lazy proxy for transformScaleRef so react-draggable reads fresh scale without re-render.\n const {transformScaleRef} = this.props;\n const lazyScale = transformScaleRef\n ? ({valueOf: () => transformScaleRef.current} as unknown as number)\n : undefined;\n\n if (isDroppingItem) {\n // React.cloneElement is just cleaner then copy-paste whole processGridItem method\n return React.cloneElement(gridItem, {\n ...(lazyScale !== undefined && {transformScale: lazyScale}),\n // hiding preview if dragging shared item\n style: this.isSharedDragTarget()\n ? {...gridItem.props.style, opacity: 0}\n : gridItem.props.style,\n className: `${OVERLAY_CLASS_NAME} ${DROPPING_ELEMENT_CLASS_NAME}`,\n droppingPosition: this.calculateDroppingPosition(gridItem.props),\n });\n }\n\n if (lazyScale !== undefined) {\n return React.cloneElement(gridItem, {transformScale: lazyScale});\n }\n\n return gridItem;\n }\n}\n\n// eslint-disable-next-line new-cap\nexport const Layout = WidthProvider<DragOverLayoutProps>(DragOverLayout);\n"]}
|
|
1
|
+
{"version":3,"file":"ReactGridLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/ReactGridLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {Layout as RGLLayout} from 'react-grid-layout';\n// @ts-expect-error - utils is not exported in type definitions\nimport ReactGridLayout, {WidthProvider, utils} from 'react-grid-layout';\n\nimport {DROPPING_ELEMENT_CLASS_NAME, OVERLAY_CLASS_NAME} from '../../constants';\n\nconst isRefObject = (\n value: React.Ref<HTMLDivElement>,\n): value is React.RefObject<HTMLDivElement> => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'current' in value &&\n typeof value.current === 'object'\n );\n};\n\ntype SharedDragPosition = {\n offsetX: number;\n offsetY: number;\n};\n\ntype DragOverLayoutProps = ReactGridLayout.ReactGridLayoutProps & {\n innerRef?: React.Ref<HTMLDivElement>;\n isDragCaptured?: boolean;\n dragStateRef?: React.MutableRefObject<{isDragging: boolean; sourceGroup: string | null}>;\n sharedDragPositionRef?: React.MutableRefObject<SharedDragPosition | null>;\n group?: string;\n onDragTargetRestore?: () => void;\n transformScaleRef?: React.MutableRefObject<number>;\n groupResetRegistryRef?: React.MutableRefObject<Map<string, () => void>>;\n};\n\ntype DragOverLayoutState = {\n layout: RGLLayout[];\n activeDrag: RGLLayout | null;\n};\n\ntype RGLLayoutWithPlaceholder = RGLLayout & {placeholder?: boolean};\n\ntype OnDragMethod = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n) => void;\n\nclass DragOverLayout extends ReactGridLayout {\n // @ts-expect-error - TypeScript doesn't allow direct property redeclaration in extending classes. We need to narrow the props type from ReactGridLayoutProps to DragOverLayoutProps for type safety in our custom methods\n props: DragOverLayoutProps;\n // @ts-expect-error - TypeScript doesn't allow direct property redeclaration in extending classes. State is initialized by parent constructor\n state: DragOverLayoutState;\n\n parentOnDrag: OnDragMethod;\n parentOnDragStop: OnDragMethod;\n _savedDraggedOutLayout: RGLLayout[] | null = null;\n\n constructor(props: DragOverLayoutProps, context?: unknown) {\n super(props, context);\n\n // @ts-expect-error - onDrag is a protected method in parent class\n this.parentOnDrag = this.onDrag;\n // @ts-expect-error - assigning custom method to parent's onDrag\n this.onDrag = this.extendedOnDrag;\n\n // @ts-expect-error - onDragStop is a protected method in parent class\n this.parentOnDragStop = this.onDragStop;\n // @ts-expect-error - assigning custom method to parent's onDragStop\n this.onDragStop = this.extendedOnDragStop;\n }\n\n componentDidMount(): void {\n super.componentDidMount?.();\n\n if (this.props.group !== undefined) {\n this.props.groupResetRegistryRef?.current.set(\n this.props.group,\n this.resetExternalPlaceholder,\n );\n }\n\n // If cursor is moved out of the window there is a bug\n // which leaves placeholder element in grid, this action needed to reset this state\n window.addEventListener('dragend', this.resetExternalPlaceholder);\n const innerElement = this.getInnerElement();\n\n if (innerElement) {\n innerElement.addEventListener('mouseup', this.mouseUpHandler);\n innerElement.addEventListener('mouseenter', this.mouseEnterHandler);\n innerElement.addEventListener('mouseleave', this.mouseLeaveHandler);\n innerElement.addEventListener('mousemove', this.mouseMoveHandler);\n }\n }\n\n componentWillUnmount(): void {\n if (this.props.group !== undefined) {\n this.props.groupResetRegistryRef?.current.delete(this.props.group);\n }\n\n window.removeEventListener('dragend', this.resetExternalPlaceholder);\n const innerElement = this.getInnerElement();\n\n if (innerElement) {\n innerElement.removeEventListener('mouseup', this.mouseUpHandler);\n innerElement.removeEventListener('mouseenter', this.mouseEnterHandler);\n innerElement.removeEventListener('mouseleave', this.mouseLeaveHandler);\n innerElement.removeEventListener('mousemove', this.mouseMoveHandler);\n }\n }\n\n // react-grid-layout doens't calculate it's height when last element is removed\n // and just keeps the previous value\n // so for autosize to work in that case we are resetting it's height value\n containerHeight(): string | undefined {\n if (this.props.autoSize && this.state.layout.length === 0) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n // @ts-expect-error - containerHeight is a protected method in parent class\n return super.containerHeight();\n }\n\n // innerRef is passed by WithProvider without this wrapper there are only\n // * findDOMNode - deprecated\n // * rewrite whole ReactGridLayout.render method\n // so in that case don't try to use this class on it's own\n // or pass innerRef: React.MutableRef as it's not optional prop\n getInnerElement(): HTMLDivElement | null {\n const {innerRef} = this.props;\n\n return innerRef && isRefObject(innerRef) && innerRef.current ? innerRef.current : null;\n }\n\n // Reset placeholder when item dragged from outside\n resetExternalPlaceholder = (): void => {\n // @ts-expect-error - dragEnterCounter is an internal property of parent class\n if (this.dragEnterCounter) {\n // @ts-expect-error - dragEnterCounter is an internal property of parent class\n this.dragEnterCounter = 0;\n // @ts-expect-error - removeDroppingPlaceholder is a protected method in parent class\n this.removeDroppingPlaceholder();\n }\n };\n\n // Hide placeholder when element is dragged out\n hideLocalPlaceholder = (i: string): RGLLayout[] => {\n const {layout} = this.state;\n const {cols} = this.props;\n const savedLayout = layout.map((item) => ({...item}));\n\n let hiddenElement: RGLLayout | undefined;\n const newLayout = utils.compact(\n layout.filter((item) => {\n if (item.i === i) {\n hiddenElement = item;\n return false;\n }\n\n return true;\n }),\n utils.compactType(this.props),\n cols,\n );\n\n if (hiddenElement) {\n newLayout.push(hiddenElement);\n }\n\n this.setState({\n activeDrag: null,\n layout: newLayout,\n });\n\n return savedLayout;\n };\n\n extendedOnDrag = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n ): void => {\n if (this.props.isDragCaptured) {\n if (!this._savedDraggedOutLayout) {\n this._savedDraggedOutLayout = this.hideLocalPlaceholder(i);\n }\n\n return;\n }\n\n this._savedDraggedOutLayout = null;\n // parent onDrag will show new placeholder again\n this.parentOnDrag(i, x, y, sintEv);\n };\n\n extendedOnDragStop = (\n i: string,\n x: number,\n y: number,\n sintEv: {e: Event; node: HTMLElement},\n ): void => {\n // Restoring layout if item was dropped outside of the grid\n if (this._savedDraggedOutLayout) {\n const savedLayout = this._savedDraggedOutLayout;\n const l = utils.getLayoutItem(savedLayout, i);\n\n // Create placeholder (display only)\n const placeholder: RGLLayoutWithPlaceholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i,\n };\n\n this.setState(\n {\n layout: savedLayout,\n activeDrag: placeholder,\n },\n () => {\n this.parentOnDragStop(i, x, y, sintEv);\n },\n );\n\n this._savedDraggedOutLayout = null;\n } else {\n this.parentOnDragStop(i, x, y, sintEv);\n }\n };\n\n isSharedDragTarget = (): boolean => {\n const drag = this.props.dragStateRef?.current;\n return Boolean(drag?.isDragging);\n };\n\n // Proxy mouse events -> drag methods for dnd between groups\n mouseEnterHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n // @ts-expect-error - onDragEnter is a protected method in parent class\n this.onDragEnter(e);\n } else if (this.props.isDragCaptured) {\n this.props.onDragTargetRestore?.();\n }\n };\n\n mouseLeaveHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n // @ts-expect-error - onDragLeave is a protected method in parent class\n this.onDragLeave(e);\n this.props.onDragTargetRestore?.();\n }\n };\n\n mouseMoveHandler = (e: MouseEvent): void => {\n if (\n this.isSharedDragTarget() &&\n this.props.group !== this.props.dragStateRef?.current.sourceGroup\n ) {\n if (!(e as MouseEvent & {nativeEvent?: MouseEvent}).nativeEvent) {\n // Emulate nativeEvent for firefox\n const target = this.getInnerElement() || (e.target as HTMLElement);\n\n (e as MouseEvent & {nativeEvent: Partial<MouseEvent>}).nativeEvent = {\n clientX: e.clientX,\n clientY: e.clientY,\n target,\n };\n }\n\n // @ts-expect-error - onDragOver is a protected method in parent class\n this.onDragOver(e);\n }\n };\n\n mouseUpHandler = (e: MouseEvent): void => {\n if (this.isSharedDragTarget()) {\n e.preventDefault();\n const {droppingItem} = this.props;\n const {layout} = this.state;\n const item = layout.find((l) => l.i === droppingItem?.i);\n\n // reset dragEnter counter on drop for all registered groups\n this.props.groupResetRegistryRef?.current.forEach((reset) => reset());\n\n if (item) {\n this.props.onDrop?.(layout, item, e);\n }\n }\n };\n\n calculateDroppingPosition(itemProps: {\n containerWidth: number;\n cols: number;\n w: number;\n h: number;\n rowHeight: number;\n margin: [number, number];\n transformScale: number;\n droppingPosition: {left: number; top: number};\n }): {left: number; top: number} {\n const {containerWidth, cols, w, h, rowHeight, margin, transformScale, droppingPosition} =\n itemProps;\n const sharedDragPosition = this.props.sharedDragPositionRef?.current;\n\n let offsetX: number, offsetY: number;\n\n if (sharedDragPosition) {\n offsetX = sharedDragPosition.offsetX;\n offsetY = sharedDragPosition.offsetY;\n } else {\n offsetX = (((containerWidth / cols) * w) / 2 || 0) * transformScale;\n offsetY = ((h * rowHeight + (h - 1) * margin[1]) / 2 || 0) * transformScale;\n }\n\n return {\n ...droppingPosition,\n left: droppingPosition.left - offsetX,\n top: droppingPosition.top - offsetY,\n };\n }\n\n // Drop item from outside gets 0,0 droppingPosition\n // centering cursor on newly creted grid item\n // And cause grid-layout using it's own GridItem to make it look\n // like overlay adding className\n processGridItem(\n child: React.ReactElement,\n isDroppingItem?: boolean,\n ): React.ReactElement | undefined {\n // @ts-expect-error - processGridItem is a protected method in parent class\n const gridItem = super.processGridItem?.(child, isDroppingItem);\n\n if (!gridItem) {\n return gridItem;\n }\n\n // Lazy proxy for transformScaleRef so react-draggable reads fresh scale without re-render.\n const {transformScaleRef} = this.props;\n const lazyScale = transformScaleRef\n ? ({valueOf: () => transformScaleRef.current} as unknown as number)\n : undefined;\n\n if (isDroppingItem) {\n // React.cloneElement is just cleaner then copy-paste whole processGridItem method\n return React.cloneElement(gridItem, {\n ...(lazyScale !== undefined && {transformScale: lazyScale}),\n // hiding preview if dragging shared item\n style: this.isSharedDragTarget()\n ? {...gridItem.props.style, opacity: 0}\n : gridItem.props.style,\n className: `${OVERLAY_CLASS_NAME} ${DROPPING_ELEMENT_CLASS_NAME}`,\n droppingPosition: this.calculateDroppingPosition(gridItem.props),\n });\n }\n\n if (lazyScale !== undefined) {\n return React.cloneElement(gridItem, {transformScale: lazyScale});\n }\n\n return gridItem;\n }\n}\n\n// eslint-disable-next-line new-cap\nexport const Layout = WidthProvider<DragOverLayoutProps>(DragOverLayout);\n"]}
|
package/build/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"10.1.
|
|
1
|
+
{"version":"10.1.2","type":"module","sideEffects":["*.scss","*.css"]}
|