@gravity-ui/dashkit 9.2.1-beta → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/build/cjs/components/DashKit/DashKit.d.ts +1 -1
  3. package/build/cjs/components/GridLayout/GridLayout.d.ts +65 -51
  4. package/build/cjs/components/GridLayout/GridLayout.js +17 -60
  5. package/build/cjs/components/GridLayout/GridLayout.js.map +1 -1
  6. package/build/cjs/components/MobileLayout/MobileLayout.d.ts +4 -4
  7. package/build/cjs/components/MobileLayout/MobileLayout.js.map +1 -1
  8. package/build/cjs/components/OverlayControls/OverlayControls.d.ts +2 -0
  9. package/build/cjs/components/OverlayControls/OverlayControls.js +4 -3
  10. package/build/cjs/components/OverlayControls/OverlayControls.js.map +1 -1
  11. package/build/cjs/context/DashKitContext.d.ts +6 -14
  12. package/build/cjs/context/DashKitContext.js.map +1 -1
  13. package/build/cjs/typings/config.d.ts +2 -2
  14. package/build/cjs/typings/config.js.map +1 -1
  15. package/build/cjs/typings/plugin.d.ts +0 -1
  16. package/build/cjs/typings/plugin.js.map +1 -1
  17. package/build/esm/components/DashKit/DashKit.d.ts +1 -1
  18. package/build/esm/components/GridLayout/GridLayout.d.ts +65 -51
  19. package/build/esm/components/GridLayout/GridLayout.js +17 -60
  20. package/build/esm/components/GridLayout/GridLayout.js.map +1 -1
  21. package/build/esm/components/MobileLayout/MobileLayout.d.ts +4 -4
  22. package/build/esm/components/MobileLayout/MobileLayout.js.map +1 -1
  23. package/build/esm/components/OverlayControls/OverlayControls.d.ts +2 -0
  24. package/build/esm/components/OverlayControls/OverlayControls.js +4 -3
  25. package/build/esm/components/OverlayControls/OverlayControls.js.map +1 -1
  26. package/build/esm/context/DashKitContext.d.ts +6 -14
  27. package/build/esm/context/DashKitContext.js.map +1 -1
  28. package/build/esm/typings/config.d.ts +2 -2
  29. package/build/esm/typings/config.js.map +1 -1
  30. package/build/esm/typings/plugin.d.ts +0 -1
  31. package/build/esm/typings/plugin.js.map +1 -1
  32. package/package.json +1 -1
  33. package/build/cjs/components/GridLayout/types.d.ts +0 -60
  34. package/build/cjs/components/GridLayout/types.js +0 -3
  35. package/build/cjs/components/GridLayout/types.js.map +0 -1
  36. package/build/esm/components/GridLayout/types.d.ts +0 -60
  37. package/build/esm/components/GridLayout/types.js +0 -2
  38. package/build/esm/components/GridLayout/types.js.map +0 -1
@@ -4,13 +4,6 @@ import { DashKitContext } from "../../context/index.js";
4
4
  import { resolveLayoutGroup } from "../../utils/index.js";
5
5
  import GridItem from "../GridItem/GridItem.js";
6
6
  import { Layout } from "./ReactGridLayout.js";
7
- const hasPluginId = (value) => {
8
- return ('props' in value &&
9
- typeof value.props === 'object' &&
10
- value.props !== null &&
11
- 'id' in value.props &&
12
- typeof value.props.id === 'string');
13
- };
14
7
  class GridLayout extends React.PureComponent {
15
8
  constructor(props, context) {
16
9
  super(props, context);
@@ -18,13 +11,12 @@ class GridLayout extends React.PureComponent {
18
11
  this._memoGroupsProps = {};
19
12
  this._memoGroupsLayouts = {};
20
13
  this._memoCallbacksForGroups = {};
21
- this._parendDragNode = null;
22
14
  this.onVisibilityChange = () => {
23
15
  this.setState({
24
16
  isPageHidden: document.hidden,
25
17
  });
26
18
  };
27
- this.adjustWidgetLayout = ({ widgetId, needSetDefault, adjustedWidgetLayout, }) => {
19
+ this.adjustWidgetLayout = ({ widgetId, needSetDefault, adjustedWidgetLayout }) => {
28
20
  const { layout, memorizeOriginalLayout, revertToOriginalLayout } = this.context;
29
21
  if (needSetDefault) {
30
22
  revertToOriginalLayout(widgetId);
@@ -79,10 +71,7 @@ class GridLayout extends React.PureComponent {
79
71
  draggedOverGroup: null,
80
72
  });
81
73
  if (temporaryLayout) {
82
- const temporaryItem = groupedLayout.find(({ i }) => i === TEMPORARY_ITEM_ID);
83
- if (onDrop && temporaryItem) {
84
- onDrop(groupedLayout, temporaryItem);
85
- }
74
+ onDrop === null || onDrop === void 0 ? void 0 : onDrop(groupedLayout, groupedLayout.find(({ i }) => i === TEMPORARY_ITEM_ID));
86
75
  }
87
76
  else {
88
77
  layoutChange(groupedLayout);
@@ -223,7 +212,7 @@ class GridLayout extends React.PureComponent {
223
212
  const onResizeStop = this._onResizeStop.bind(this, group);
224
213
  const onDrop = this._onDrop.bind(this, group);
225
214
  const onDropDragOver = this._onDropDragOver.bind(this, group);
226
- const onDragTargetRestore = this._onTargetRestore.bind(this);
215
+ const onDragTargetRestore = this._onTargetRestore.bind(this, group);
227
216
  this._memoCallbacksForGroups[group] = {
228
217
  onDragStart,
229
218
  onDrag,
@@ -245,8 +234,7 @@ class GridLayout extends React.PureComponent {
245
234
  return memo;
246
235
  }, temporaryItem ? { [temporaryItem.i]: temporaryItem } : {});
247
236
  const newItemsLayoutById = newLayout.reduce((memo, item) => {
248
- var _a;
249
- const parent = (_a = itemsByGroup[item.i]) === null || _a === void 0 ? void 0 : _a.parent;
237
+ const parent = itemsByGroup[item.i].parent;
250
238
  memo[item.i] = Object.assign({}, item);
251
239
  if (parent) {
252
240
  memo[item.i].parent = parent;
@@ -267,19 +255,19 @@ class GridLayout extends React.PureComponent {
267
255
  const { isPageHidden } = this.state;
268
256
  const autoupdateIntervalMs = Number(autoupdateInterval) * 1000;
269
257
  const targetPlugins = targetIds
270
- ? this.pluginsRefs.filter((plugin) => hasPluginId(plugin) && targetIds.includes(plugin.props.id))
258
+ ? this.pluginsRefs.filter((plugin) => targetIds.includes(plugin.props.id))
271
259
  : this.pluginsRefs;
272
260
  if (autoupdateIntervalMs) {
273
261
  const timeSinceLastReload = new Date().getTime() - (this._lastReloadAt || 0);
274
262
  const reloadIntervalRemains = autoupdateIntervalMs - timeSinceLastReload;
275
263
  if (force || (!isPageHidden && !editMode && reloadIntervalRemains <= 0)) {
276
264
  this._lastReloadAt = new Date().getTime();
277
- reloadItems(targetPlugins, { silentLoading: Boolean(silentLoading), noVeil: true });
265
+ reloadItems(targetPlugins, { silentLoading, noVeil: true });
278
266
  }
279
267
  this._timeout = setTimeout(() => this.reloadItems(), reloadIntervalRemains <= 0 ? autoupdateIntervalMs : reloadIntervalRemains);
280
268
  }
281
269
  else if (force) {
282
- reloadItems(targetPlugins, { silentLoading: Boolean(silentLoading), noVeil: true });
270
+ reloadItems(targetPlugins, { silentLoading, noVeil: true });
283
271
  }
284
272
  }
285
273
  prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element) {
@@ -301,15 +289,11 @@ class GridLayout extends React.PureComponent {
301
289
  const item = temporaryLayout
302
290
  ? temporaryLayout.dragProps
303
291
  : this.context.configItems.find(({ id }) => id === layoutId);
304
- if (!item) {
305
- return;
306
- }
307
292
  let { offsetX, offsetY } = e.nativeEvent || {};
308
293
  if (offsetX === undefined || offsetY === undefined) {
309
- const target = e.currentTarget;
310
- const gridRect = target === null || target === void 0 ? void 0 : target.getBoundingClientRect();
311
- offsetX = e.clientX - ((gridRect === null || gridRect === void 0 ? void 0 : gridRect.left) || 0);
312
- offsetY = e.clientY - ((gridRect === null || gridRect === void 0 ? void 0 : gridRect.top) || 0);
294
+ const gridRect = e.currentTarget.getBoundingClientRect();
295
+ offsetX = e.clientX - gridRect.left;
296
+ offsetY = e.clientY - gridRect.top;
313
297
  }
314
298
  currentDraggingElement = {
315
299
  group,
@@ -347,9 +331,6 @@ class GridLayout extends React.PureComponent {
347
331
  }
348
332
  _updateDragCoordinates(e) {
349
333
  const parent = this._parendDragNode;
350
- if (!parent) {
351
- return;
352
- }
353
334
  const parentRect = parent.getBoundingClientRect();
354
335
  const { clientX, clientY } = e;
355
336
  let isDraggedOut = this.state.isDraggedOut;
@@ -435,10 +416,7 @@ class GridLayout extends React.PureComponent {
435
416
  }
436
417
  const id = TEMPORARY_ITEM_ID;
437
418
  const { type } = temporaryLayout.dragProps;
438
- return (React.createElement(GridItem, { key: id,
439
- // TODO remove the expected error after translating GridItem to TS
440
- // @ts-expect-error
441
- id: id, item: { id, type, data: {} }, layout: temporaryLayout.data, adjustWidgetLayout: this.adjustWidgetLayout, isDragging: this.state.isDragging, isPlaceholder: true, noOverlay: noOverlay, withCustomHandle: Boolean(draggableHandleClassName), gridLayout: gridLayout }));
419
+ return (React.createElement(GridItem, { key: id, id: id, item: { id, type, data: {} }, layout: temporaryLayout.data, adjustWidgetLayout: this.adjustWidgetLayout, isDragging: this.state.isDragging, isPlaceholder: true, noOverlay: noOverlay, withCustomHandle: Boolean(draggableHandleClassName), gridLayout: gridLayout }));
442
420
  }
443
421
  renderGroup(group, renderLayout, renderItems, offset = 0, groupGridProperties) {
444
422
  const { registerManager, editMode, noOverlay, focusable, draggableHandleClassName, outerDnDEnable, onItemMountChange, onItemRender, onItemFocus, onItemBlur, } = this.context;
@@ -457,43 +435,22 @@ class GridLayout extends React.PureComponent {
457
435
  group === currentDraggingElement.group &&
458
436
  draggedOverGroup !== null &&
459
437
  draggedOverGroup !== group;
460
- return (React.createElement(Layout, Object.assign({ key: `group_${group}` }, Object.assign(Object.assign({ isDraggable: editMode, isResizable: editMode }, properties), {
438
+ return (React.createElement(Layout, Object.assign({ isDraggable: editMode, isResizable: editMode }, properties, { key: `group_${group}`,
461
439
  // Layout props
462
- compactType,
463
- layout, draggableCancel: `.${DRAGGABLE_CANCEL_CLASS_NAME}`, draggableHandle: draggableHandleClassName
464
- ? `.${draggableHandleClassName}`
465
- : null,
440
+ compactType: compactType, layout: layout, draggableCancel: `.${DRAGGABLE_CANCEL_CLASS_NAME}`, draggableHandle: draggableHandleClassName ? `.${draggableHandleClassName}` : null,
466
441
  // Default callbacks
467
442
  onDragStart: callbacks.onDragStart, onDrag: callbacks.onDrag, onDragStop: callbacks.onDragStop, onResizeStart: callbacks.onResizeStart, onResize: callbacks.onResize, onResizeStop: callbacks.onResizeStop,
468
443
  // External Drag N Drop options
469
- onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem, sharedDragPosition: currentDraggingElement === null || currentDraggingElement === void 0 ? void 0 : currentDraggingElement.cursorPosition, isDragCaptured, isDroppable: Boolean(outerDnDEnable) && editMode })),
444
+ onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem: hasSharedDragItem, sharedDragPosition: currentDraggingElement === null || currentDraggingElement === void 0 ? void 0 : currentDraggingElement.cursorPosition, isDragCaptured: isDragCaptured, isDroppable: Boolean(outerDnDEnable) && editMode }),
470
445
  renderItems.map((item, i) => {
471
446
  const keyId = item.id;
472
447
  const isDragging = this.state.isDragging;
473
- const isCurrentDraggedItem = currentDraggingElement &&
474
- 'id' in currentDraggingElement.item &&
475
- currentDraggingElement.item.id === keyId;
448
+ const isCurrentDraggedItem = (currentDraggingElement === null || currentDraggingElement === void 0 ? void 0 : currentDraggingElement.item.id) === keyId;
476
449
  const isDraggedOut = isCurrentDraggedItem && this.state.isDraggedOut;
477
450
  const itemNoOverlay = hasOwnGroupProperties && 'noOverlay' in properties
478
451
  ? properties.noOverlay
479
452
  : noOverlay;
480
- return (React.createElement(GridItem, Object.assign({ key: keyId }, {
481
- forwardedPluginRef: this.getMemoForwardRefCallback(offset + i),
482
- id: keyId,
483
- item,
484
- layout,
485
- adjustWidgetLayout: this.adjustWidgetLayout,
486
- isDragging,
487
- isDraggedOut,
488
- noOverlay: itemNoOverlay,
489
- focusable,
490
- withCustomHandle: Boolean(draggableHandleClassName),
491
- onItemMountChange,
492
- onItemRender,
493
- gridLayout: properties,
494
- onItemFocus,
495
- onItemBlur,
496
- })));
453
+ return (React.createElement(GridItem, { forwardedPluginRef: this.getMemoForwardRefCallback(offset + i), key: keyId, id: keyId, item: item, layout: layout, adjustWidgetLayout: this.adjustWidgetLayout, isDragging: isDragging, isDraggedOut: isDraggedOut, noOverlay: itemNoOverlay, focusable: focusable, withCustomHandle: Boolean(draggableHandleClassName), onItemMountChange: onItemMountChange, onItemRender: onItemRender, gridLayout: properties, onItemFocus: onItemFocus, onItemBlur: onItemBlur }));
497
454
  }),
498
455
  this.renderTemporaryPlaceholder(properties)));
499
456
  }
@@ -515,7 +472,7 @@ class GridLayout extends React.PureComponent {
515
472
  defaultRenderLayout.push(item);
516
473
  }
517
474
  return memo;
518
- }, {});
475
+ }, []);
519
476
  const itemsByGroup = this.context.configItems.reduce((memo, item) => {
520
477
  const group = layoutMap[item.id];
521
478
  if (group) {
@@ -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 {PluginRef, ReactGridLayoutProps} from 'src/typings';\n\nimport {\n COMPACT_TYPE_HORIZONTAL_NOWRAP,\n DEFAULT_GROUP,\n DRAGGABLE_CANCEL_CLASS_NAME,\n TEMPORARY_ITEM_ID,\n} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport type {DashKitCtxShape} from '../../context';\nimport type {ConfigItem, ConfigLayout} from '../../shared';\nimport {resolveLayoutGroup} from '../../utils';\nimport GridItem from '../GridItem/GridItem';\n\nimport {Layout} from './ReactGridLayout';\nimport type {\n AdjustWidgetLayoutParams,\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 '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\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._memoForwardedPluginRef = [];\n }\n\n onVisibilityChange = () => {\n this.setState({\n isPageHidden: document.hidden,\n });\n };\n\n adjustWidgetLayout = ({\n widgetId,\n needSetDefault,\n adjustedWidgetLayout,\n }: AdjustWidgetLayoutParams) => {\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 getMemoGroupProps = (\n group: string,\n renderLayout: ConfigLayout[],\n properties: Partial<ReactGridLayoutProps>,\n ) => {\n // Needed for _onDropDragOver\n this._memoGroupsProps[group] = properties;\n\n return {\n layout: this.getMemoGroupLayout(group, renderLayout).layout,\n callbacks: this.getMemoGroupCallbacks(group),\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\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._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.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.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.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 = (group: string, e: DragEvent | MouseEvent): void | boolean => {\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 = {\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 // TODO remove the expected error after translating GridItem to TS\n // @ts-expect-error\n id={id}\n item={{id, type, data: {}}}\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 {\n registerManager,\n editMode,\n noOverlay,\n focusable,\n draggableHandleClassName,\n outerDnDEnable,\n onItemMountChange,\n onItemRender,\n onItemFocus,\n onItemBlur,\n } = this.context;\n\n const {currentDraggingElement, draggedOverGroup} = this.state;\n const hasOwnGroupProperties = typeof groupGridProperties === 'function';\n const properties = hasOwnGroupProperties\n ? groupGridProperties({...registerManager.gridLayout})\n : registerManager.gridLayout;\n let {compactType} = properties;\n\n if (compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP) {\n compactType = 'horizontal';\n }\n\n const {callbacks, layout} = this.getMemoGroupProps(group, renderLayout, properties);\n const hasSharedDragItem = Boolean(\n currentDraggingElement && currentDraggingElement.group !== group,\n );\n const isDragCaptured =\n currentDraggingElement &&\n group === currentDraggingElement.group &&\n draggedOverGroup !== null &&\n draggedOverGroup !== group;\n\n return (\n <Layout\n key={`group_${group}`}\n {...({\n isDraggable: editMode,\n isResizable: editMode,\n // Group properties\n ...properties,\n // Layout props\n compactType,\n layout,\n draggableCancel: `.${DRAGGABLE_CANCEL_CLASS_NAME}`,\n draggableHandle: draggableHandleClassName\n ? `.${draggableHandleClassName}`\n : null,\n // Default callbacks\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 // External Drag N Drop options\n onDragTargetRestore: callbacks.onDragTargetRestore,\n onDropDragOver: callbacks.onDropDragOver,\n onDrop: callbacks.onDrop,\n hasSharedDragItem,\n sharedDragPosition: currentDraggingElement?.cursorPosition,\n isDragCaptured,\n isDroppable: Boolean(outerDnDEnable) && editMode,\n } as any)} // TODO remove any after translating Layout to TS\n >\n {renderItems.map((item, i) => {\n const keyId = item.id;\n const isDragging = this.state.isDragging;\n const isCurrentDraggedItem =\n currentDraggingElement &&\n 'id' in currentDraggingElement.item &&\n currentDraggingElement.item.id === keyId;\n const isDraggedOut = isCurrentDraggedItem && this.state.isDraggedOut;\n const itemNoOverlay =\n hasOwnGroupProperties && 'noOverlay' in properties\n ? properties.noOverlay\n : noOverlay;\n\n return (\n <GridItem\n key={keyId}\n {...({\n forwardedPluginRef: this.getMemoForwardRefCallback(offset + i),\n id: keyId,\n item,\n layout,\n adjustWidgetLayout: this.adjustWidgetLayout,\n isDragging,\n isDraggedOut,\n noOverlay: itemNoOverlay,\n focusable,\n withCustomHandle: Boolean(draggableHandleClassName),\n onItemMountChange,\n onItemRender,\n gridLayout: properties,\n onItemFocus,\n onItemBlur,\n } as any)} // TODO remove any after translating GridItem to TS\n />\n );\n })}\n {this.renderTemporaryPlaceholder(properties)}\n </Layout>\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 element = this.renderGroup(id, layout, items, offset, group.gridProperties);\n offset += items.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 return this.renderGroup(DEFAULT_GROUP, defaultRenderLayout, defaultRenderItems, offset);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"GridLayout.js","sourceRoot":"../../../../src","sources":["components/GridLayout/GridLayout.js"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n COMPACT_TYPE_HORIZONTAL_NOWRAP,\n DEFAULT_GROUP,\n DRAGGABLE_CANCEL_CLASS_NAME,\n TEMPORARY_ITEM_ID,\n} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport {resolveLayoutGroup} from '../../utils';\nimport GridItem from '../GridItem/GridItem';\n\nimport {Layout} from './ReactGridLayout';\n\nexport default class GridLayout extends React.PureComponent {\n constructor(props, context) {\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._memoForwardedPluginRef = [];\n }\n\n static contextType = DashKitContext;\n\n _memoForwardedPluginRef = [];\n _memoGroupsProps = {};\n _memoGroupsLayouts = {};\n _memoCallbacksForGroups = {};\n\n _timeout;\n _lastReloadAt;\n\n onVisibilityChange = () => {\n this.setState({\n isPageHidden: document.hidden,\n });\n };\n\n adjustWidgetLayout = ({widgetId, needSetDefault, adjustedWidgetLayout}) => {\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() {\n const {layout, temporaryLayout} = this.context;\n\n return temporaryLayout?.data || layout;\n }\n\n getMemoGroupLayout(group, layout) {\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) {\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, group);\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 getMemoGroupProps = (group, renderLayout, properties) => {\n // Needed for _onDropDragOver\n this._memoGroupsProps[group] = properties;\n\n return {\n layout: this.getMemoGroupLayout(group, renderLayout).layout,\n callbacks: this.getMemoGroupCallbacks(group),\n };\n };\n\n getLayoutAndPropsByGroup = (group) => {\n return {\n properties: this._memoGroupsProps[group],\n layout: this._memoGroupsLayouts[group].layout,\n };\n };\n\n getMemoForwardRefCallback = (refIndex) => {\n if (!this._memoForwardedPluginRef[refIndex]) {\n this._memoForwardedPluginRef[refIndex] = (pluginRef) => {\n this.pluginsRefs[refIndex] = pluginRef;\n };\n }\n\n return this._memoForwardedPluginRef[refIndex];\n };\n\n mergeGroupsLayout(group, newLayout, temporaryItem) {\n const renderLayout = this.getActiveLayout();\n const itemsByGroup = renderLayout.reduce(\n (memo, item) => {\n memo[item.i] = item;\n return memo;\n },\n temporaryItem ? {[temporaryItem.i]: temporaryItem} : {},\n );\n\n const newItemsLayoutById = newLayout.reduce((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) {\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((plugin) => targetIds.includes(plugin.props.id))\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, 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, noVeil: true});\n }\n }\n\n prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element) {\n return {\n group,\n layout,\n oldItem,\n newItem,\n placeholder,\n e,\n element,\n };\n }\n\n updateDraggingElementState(group, layoutItem, e) {\n let currentDraggingElement = 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 let {offsetX, offsetY} = e.nativeEvent || {};\n if (offsetX === undefined || offsetY === undefined) {\n const gridRect = e.currentTarget.getBoundingClientRect();\n\n offsetX = e.clientX - gridRect.left;\n offsetY = e.clientY - gridRect.top;\n }\n\n currentDraggingElement = {\n group,\n layoutItem,\n item,\n cursorPosition: {offsetX, offsetY},\n };\n }\n\n this.setState({currentDraggingElement, draggedOverGroup: group});\n }\n\n _initDragCoordinatesWatcher(element) {\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(parentElement, position, parentRect) {\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) {\n const parent = this._parendDragNode;\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(group, _newLayout, layoutItem, _newItem, _placeholder, e, element) {\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._initDragCoordinatesWatcher(element);\n this.updateDraggingElementState(group, layoutItem, e);\n this.setState({isDragging: true});\n }\n }\n\n _onDrag(group, layout, oldItem, newItem, placeholder, e, element) {\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(group, layout, oldItem, newItem, placeholder, e, element) {\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(group, layout, oldItem, newItem, placeholder, e, element) {\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(group, layout, oldItem, newItem, placeholder, e, element) {\n this.context.onResize?.call(\n this,\n this.prepareDefaultArguments(group, layout, oldItem, newItem, placeholder, e, element),\n );\n }\n\n _onResizeStop(group, layout, oldItem, newItem, placeholder, e, element) {\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, newLayout) => {\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.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n if (temporaryLayout) {\n onDrop?.(\n groupedLayout,\n groupedLayout.find(({i}) => i === TEMPORARY_ITEM_ID),\n );\n } else {\n layoutChange(groupedLayout);\n }\n };\n\n _onSharedDrop = (targetGroup, newLayout, tempItem) => {\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.setState({\n isDragging: false,\n currentDraggingElement: null,\n draggedOverGroup: null,\n });\n\n // TODO temporaryLayout\n layoutChange(groupedLayout);\n };\n\n _onExternalDrop = (group, newLayout, item, e) => {\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.setState({isDragging: false});\n\n onDrop?.(groupedLayout, item, e);\n };\n\n _onDrop = (group, newLayout, item, e) => {\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 = (group, e) => {\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 = {\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) {\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: {}}}\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(group, renderLayout, renderItems, offset = 0, groupGridProperties) {\n const {\n registerManager,\n editMode,\n noOverlay,\n focusable,\n draggableHandleClassName,\n outerDnDEnable,\n onItemMountChange,\n onItemRender,\n onItemFocus,\n onItemBlur,\n } = this.context;\n\n const {currentDraggingElement, draggedOverGroup} = this.state;\n const hasOwnGroupProperties = typeof groupGridProperties === 'function';\n const properties = hasOwnGroupProperties\n ? groupGridProperties({...registerManager.gridLayout})\n : registerManager.gridLayout;\n let {compactType} = properties;\n\n if (compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP) {\n compactType = 'horizontal';\n }\n\n const {callbacks, layout} = this.getMemoGroupProps(group, renderLayout, properties);\n const hasSharedDragItem = Boolean(\n currentDraggingElement && currentDraggingElement.group !== group,\n );\n const isDragCaptured =\n currentDraggingElement &&\n group === currentDraggingElement.group &&\n draggedOverGroup !== null &&\n draggedOverGroup !== group;\n\n return (\n <Layout\n isDraggable={editMode}\n isResizable={editMode}\n // Group properties\n {...properties}\n key={`group_${group}`}\n // Layout props\n compactType={compactType}\n layout={layout}\n draggableCancel={`.${DRAGGABLE_CANCEL_CLASS_NAME}`}\n draggableHandle={draggableHandleClassName ? `.${draggableHandleClassName}` : null}\n // Default callbacks\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 // External Drag N Drop options\n onDragTargetRestore={callbacks.onDragTargetRestore}\n onDropDragOver={callbacks.onDropDragOver}\n onDrop={callbacks.onDrop}\n hasSharedDragItem={hasSharedDragItem}\n sharedDragPosition={currentDraggingElement?.cursorPosition}\n isDragCaptured={isDragCaptured}\n isDroppable={Boolean(outerDnDEnable) && editMode}\n >\n {renderItems.map((item, i) => {\n const keyId = item.id;\n const isDragging = this.state.isDragging;\n const isCurrentDraggedItem = currentDraggingElement?.item.id === keyId;\n const isDraggedOut = isCurrentDraggedItem && this.state.isDraggedOut;\n const itemNoOverlay =\n hasOwnGroupProperties && 'noOverlay' in properties\n ? properties.noOverlay\n : noOverlay;\n\n return (\n <GridItem\n forwardedPluginRef={this.getMemoForwardRefCallback(offset + i)} // forwarded ref to plugin\n key={keyId}\n id={keyId}\n item={item}\n layout={layout}\n adjustWidgetLayout={this.adjustWidgetLayout}\n isDragging={isDragging}\n isDraggedOut={isDraggedOut}\n noOverlay={itemNoOverlay}\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 {this.renderTemporaryPlaceholder(properties)}\n </Layout>\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 = [];\n const defaultRenderItems = [];\n const layoutMap = {};\n\n const groupedLayout = this.getActiveLayout().reduce((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 const itemsByGroup = this.context.configItems.reduce((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 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 element = this.renderGroup(id, layout, items, offset, group.gridProperties);\n offset += items.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 return this.renderGroup(DEFAULT_GROUP, defaultRenderLayout, defaultRenderItems, offset);\n }\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import type { PluginRef } from 'src/typings';
3
2
  import { DashKitContext } from "../../context/index.js";
4
3
  import { getSortedConfigItems } from "./helpers.js";
5
4
  import "./MobileLayout.css";
@@ -7,20 +6,21 @@ type MobileLayoutProps = {};
7
6
  type MobileLayoutState = {
8
7
  itemsWithActiveAutoheight: Record<string, boolean>;
9
8
  };
9
+ type PlugibRefObject = React.RefObject<any>;
10
10
  export default class MobileLayout extends React.PureComponent<MobileLayoutProps, MobileLayoutState> {
11
11
  static contextType: React.Context<import("../../context/index.js").DashKitCtxShape>;
12
12
  context: React.ContextType<typeof DashKitContext>;
13
- pluginsRefs: PluginRef[];
13
+ pluginsRefs: PlugibRefObject[];
14
14
  sortedLayoutItems: Record<string, ReturnType<typeof getSortedConfigItems>> | null;
15
15
  _memoLayout: import("../../index.js").ConfigLayout[];
16
- _memoForwardedPluginRef: Array<(refObject: PluginRef) => void>;
16
+ _memoForwardedPluginRef: Array<(refObject: PlugibRefObject) => void>;
17
17
  _memoAdjustWidgetLayout: Record<string, (props: {
18
18
  needSetDefault: boolean;
19
19
  }) => void>;
20
20
  state: MobileLayoutState;
21
21
  render(): JSX.Element;
22
22
  getSortedLayoutItems(): Record<string, (import("../../index.js").ConfigItem & import("../../index.js").ConfigLayout)[]>;
23
- getMemoForwardRefCallback(refIndex: number): (refObject: PluginRef) => void;
23
+ getMemoForwardRefCallback(refIndex: number): (refObject: PlugibRefObject) => void;
24
24
  adjustWidgetLayout(id: string, { needSetDefault }: {
25
25
  needSetDefault: boolean;
26
26
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"MobileLayout.js","sourceRoot":"../../../../src","sources":["components/MobileLayout/MobileLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport groupBy from 'lodash/groupBy';\n\nimport type {PluginRef} from 'src/typings';\n\nimport {DEFAULT_GROUP} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport {cn} from '../../utils/cn';\nimport Item from '../Item/Item';\n\nimport {getSortedConfigItems} from './helpers';\n\nimport './MobileLayout.scss';\n\nconst b = cn('dashkit-mobile-layout');\n\ntype MobileLayoutProps = {};\n\ntype MobileLayoutState = {\n itemsWithActiveAutoheight: Record<string, boolean>;\n};\n\nexport default class MobileLayout extends React.PureComponent<\n MobileLayoutProps,\n MobileLayoutState\n> {\n static contextType = DashKitContext;\n context!: React.ContextType<typeof DashKitContext>;\n\n pluginsRefs: PluginRef[] = [];\n sortedLayoutItems: Record<string, ReturnType<typeof getSortedConfigItems>> | null = null;\n\n _memoLayout = this.context.layout;\n _memoForwardedPluginRef: Array<(refObject: PluginRef) => void> = [];\n _memoAdjustWidgetLayout: Record<string, (props: {needSetDefault: boolean}) => void> = {};\n\n state: MobileLayoutState = {\n itemsWithActiveAutoheight: {},\n };\n\n render() {\n const {\n config,\n layout,\n groups = [{id: DEFAULT_GROUP}],\n context,\n editMode,\n configItems,\n } = this.context;\n\n this.pluginsRefs.length = configItems.length;\n\n const sortedItems = this.getSortedLayoutItems();\n let indexOffset = 0;\n\n return (\n <div className={b()}>\n {groups.map((group) => {\n const groupId = group.id || DEFAULT_GROUP;\n const items = sortedItems[groupId] || [];\n\n const children = items.map((item, index) => {\n const isItemWithActiveAutoheight =\n item.id in this.state.itemsWithActiveAutoheight;\n\n return (\n <div\n className={b('item', {autoheight: isItemWithActiveAutoheight})}\n key={item.id}\n >\n <Item\n id={item.id}\n item={item}\n layout={layout}\n shouldItemUpdate={false}\n adjustWidgetLayout={this.getMemoAdjustWidgetLayout(item.id)}\n forwardedPluginRef={this.getMemoForwardRefCallback(\n indexOffset + index,\n )}\n onItemMountChange={this.context.onItemMountChange}\n onItemRender={this.context.onItemRender}\n />\n </div>\n );\n });\n\n indexOffset += items.length;\n\n if (group.render) {\n return group.render(groupId, children, {\n isMobile: true,\n config,\n context,\n editMode,\n items,\n layout,\n });\n }\n\n return children;\n })}\n </div>\n );\n }\n\n getSortedLayoutItems() {\n if (this.sortedLayoutItems && this.context.layout === this._memoLayout) {\n return this.sortedLayoutItems;\n }\n\n this._memoLayout = this.context.layout;\n\n const hasOrderId = Boolean(this.context.configItems.find((item) => item.orderId));\n\n this.sortedLayoutItems = groupBy(\n getSortedConfigItems(this.context.config, this.context.configItems, hasOrderId),\n (item) => item.parent || DEFAULT_GROUP,\n );\n\n return this.sortedLayoutItems;\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 adjustWidgetLayout(id: string, {needSetDefault}: {needSetDefault: boolean}) {\n if (needSetDefault) {\n const indexesOfItemsWithActiveAutoheight = {\n ...this.state.itemsWithActiveAutoheight,\n };\n\n delete indexesOfItemsWithActiveAutoheight[id];\n\n this.setState({itemsWithActiveAutoheight: indexesOfItemsWithActiveAutoheight});\n } else {\n this.setState({\n itemsWithActiveAutoheight: Object.assign({}, this.state.itemsWithActiveAutoheight, {\n [id]: true,\n }),\n });\n }\n }\n\n getMemoAdjustWidgetLayout(id: string) {\n if (!this._memoAdjustWidgetLayout[id]) {\n this._memoAdjustWidgetLayout[id] = this.adjustWidgetLayout.bind(this, id);\n }\n\n return this._memoAdjustWidgetLayout[id];\n }\n}\n"]}
1
+ {"version":3,"file":"MobileLayout.js","sourceRoot":"../../../../src","sources":["components/MobileLayout/MobileLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport groupBy from 'lodash/groupBy';\n\nimport {DEFAULT_GROUP} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport {cn} from '../../utils/cn';\nimport Item from '../Item/Item';\n\nimport {getSortedConfigItems} from './helpers';\n\nimport './MobileLayout.scss';\n\nconst b = cn('dashkit-mobile-layout');\n\ntype MobileLayoutProps = {};\n\ntype MobileLayoutState = {\n itemsWithActiveAutoheight: Record<string, boolean>;\n};\n\ntype PlugibRefObject = React.RefObject<any>;\n\nexport default class MobileLayout extends React.PureComponent<\n MobileLayoutProps,\n MobileLayoutState\n> {\n static contextType = DashKitContext;\n context!: React.ContextType<typeof DashKitContext>;\n\n pluginsRefs: PlugibRefObject[] = [];\n sortedLayoutItems: Record<string, ReturnType<typeof getSortedConfigItems>> | null = null;\n\n _memoLayout = this.context.layout;\n _memoForwardedPluginRef: Array<(refObject: PlugibRefObject) => void> = [];\n _memoAdjustWidgetLayout: Record<string, (props: {needSetDefault: boolean}) => void> = {};\n\n state: MobileLayoutState = {\n itemsWithActiveAutoheight: {},\n };\n\n render() {\n const {\n config,\n layout,\n groups = [{id: DEFAULT_GROUP}],\n context,\n editMode,\n configItems,\n } = this.context;\n\n this.pluginsRefs.length = configItems.length;\n\n const sortedItems = this.getSortedLayoutItems();\n let indexOffset = 0;\n\n return (\n <div className={b()}>\n {groups.map((group) => {\n const groupId = group.id || DEFAULT_GROUP;\n const items = sortedItems[groupId] || [];\n\n const children = items.map((item, index) => {\n const isItemWithActiveAutoheight =\n item.id in this.state.itemsWithActiveAutoheight;\n\n return (\n <div\n className={b('item', {autoheight: isItemWithActiveAutoheight})}\n key={item.id}\n >\n <Item\n id={item.id}\n item={item}\n layout={layout}\n shouldItemUpdate={false}\n adjustWidgetLayout={this.getMemoAdjustWidgetLayout(item.id)}\n forwardedPluginRef={this.getMemoForwardRefCallback(\n indexOffset + index,\n )}\n onItemMountChange={this.context.onItemMountChange}\n onItemRender={this.context.onItemRender}\n />\n </div>\n );\n });\n\n indexOffset += items.length;\n\n if (group.render) {\n return group.render(groupId, children, {\n isMobile: true,\n config,\n context,\n editMode,\n items,\n layout,\n });\n }\n\n return children;\n })}\n </div>\n );\n }\n\n getSortedLayoutItems() {\n if (this.sortedLayoutItems && this.context.layout === this._memoLayout) {\n return this.sortedLayoutItems;\n }\n\n this._memoLayout = this.context.layout;\n\n const hasOrderId = Boolean(this.context.configItems.find((item) => item.orderId));\n\n this.sortedLayoutItems = groupBy(\n getSortedConfigItems(this.context.config, this.context.configItems, hasOrderId),\n (item) => item.parent || DEFAULT_GROUP,\n );\n\n return this.sortedLayoutItems;\n }\n\n getMemoForwardRefCallback(refIndex: number) {\n if (!this._memoForwardedPluginRef[refIndex]) {\n this._memoForwardedPluginRef[refIndex] = (pluginRef: PlugibRefObject) => {\n this.pluginsRefs[refIndex] = pluginRef;\n };\n }\n\n return this._memoForwardedPluginRef[refIndex];\n }\n\n adjustWidgetLayout(id: string, {needSetDefault}: {needSetDefault: boolean}) {\n if (needSetDefault) {\n const indexesOfItemsWithActiveAutoheight = {\n ...this.state.itemsWithActiveAutoheight,\n };\n\n delete indexesOfItemsWithActiveAutoheight[id];\n\n this.setState({itemsWithActiveAutoheight: indexesOfItemsWithActiveAutoheight});\n } else {\n this.setState({\n itemsWithActiveAutoheight: Object.assign({}, this.state.itemsWithActiveAutoheight, {\n [id]: true,\n }),\n });\n }\n }\n\n getMemoAdjustWidgetLayout(id: string) {\n if (!this._memoAdjustWidgetLayout[id]) {\n this._memoAdjustWidgetLayout[id] = this.adjustWidgetLayout.bind(this, id);\n }\n\n return this._memoAdjustWidgetLayout[id];\n }\n}\n"]}
@@ -12,6 +12,7 @@ export declare enum OverlayControlsPosition {
12
12
  export interface OverlayControlItem {
13
13
  title?: string;
14
14
  icon?: IconProps['data'];
15
+ renderIcon?: (item: ConfigItem) => IconProps['data'];
15
16
  iconSize?: number | string;
16
17
  handler?: (item: ConfigItem) => void;
17
18
  visible?: (item: ConfigItem) => boolean;
@@ -19,6 +20,7 @@ export interface OverlayControlItem {
19
20
  excludeWidgetsTypes?: Array<PluginBase['type']>;
20
21
  id?: string;
21
22
  qa?: string;
23
+ className?: string;
22
24
  }
23
25
  export interface OverlayCustomControlItem {
24
26
  id: string;
@@ -36,13 +36,14 @@ class OverlayControls extends React.Component {
36
36
  };
37
37
  this.renderControlsItem = (item, index, length) => {
38
38
  const { view, size, onItemClick } = this.props;
39
- const { title, handler, icon, iconSize, qa } = item;
39
+ const { title, handler, icon, renderIcon, iconSize, qa, className } = item;
40
+ const iconData = renderIcon ? renderIcon(this.props.configItem) : icon;
40
41
  const onItemClickHandler = typeof handler === 'function' ? handler : noop;
41
42
  return (React.createElement(Button, { key: `control_${index}`, view: view, size: size, title: title, pin: this.getControlItemPinStyle(index, length), onClick: () => {
42
43
  onItemClickHandler(this.props.configItem);
43
44
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick();
44
- }, qa: qa },
45
- React.createElement(Icon, { data: icon || Gear, size: icon ? iconSize : OVERLAY_ICON_SIZE })));
45
+ }, className: className, qa: qa },
46
+ React.createElement(Icon, { data: iconData || Gear, size: icon ? iconSize : OVERLAY_ICON_SIZE })));
46
47
  };
47
48
  this.getDefaultControls = () => {
48
49
  const { view, size } = this.props;